From c35b4b17c2a065e7a6332137fb4d8e7823180a15 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 8 Dec 2021 02:38:20 -0600 Subject: [PATCH 0001/1371] chore: add CLI CI (#1026) --- .github/workflows/test-cli.yml | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/test-cli.yml diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml new file mode 100644 index 00000000000..7ea7e755fde --- /dev/null +++ b/.github/workflows/test-cli.yml @@ -0,0 +1,39 @@ +name: CFT CLI Tests + +on: + push: + branches: + - 'master' + paths: + - 'cli' + - '.github/workflows/**' + pull_request: + branches: + - 'master' + paths: + - 'cli' + - '.github/workflows/**' + +concurrency: + group: '${{github.workflow}}-${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + unit: + name: CLI unit tests + runs-on: ${{ matrix.operating-system }} + defaults: + run: + shell: bash + working-directory: 'cli' + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '~1.16' + - run: |- + go test ./... -v From d7a57d7bed40153db3d204be23142110c6b565c2 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 8 Dec 2021 19:51:37 -0600 Subject: [PATCH 0002/1371] feat: setup WIF for devtools image push (#1008) * feat: setup WIF for devtools image push * Update sa.tf * use latest gh-oidc module Co-authored-by: Morgante Pell --- infra/terraform/test-org/ci-project/github.tf | 12 +++++++++--- infra/terraform/test-org/ci-project/sa.tf | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/infra/terraform/test-org/ci-project/github.tf b/infra/terraform/test-org/ci-project/github.tf index 271262eb9ec..463cce8eef0 100644 --- a/infra/terraform/test-org/ci-project/github.tf +++ b/infra/terraform/test-org/ci-project/github.tf @@ -20,8 +20,14 @@ resource "github_actions_secret" "infra_secret_gcr_project" { plaintext_value = local.project_id } -resource "github_actions_secret" "infra_secret_gcr_key" { +resource "github_actions_secret" "wif_provider" { repository = local.gh_repos.infra - secret_name = "GCP_SA_KEY" - plaintext_value = module.service_accounts.key + secret_name = "GCP_WIF_PROVIDER" + plaintext_value = module.oidc.provider_name +} + +resource "github_actions_secret" "wif_sa" { + repository = local.gh_repos.infra + secret_name = "GCP_WIF_SA_EMAIL" + plaintext_value = module.service_accounts.service_account.email } diff --git a/infra/terraform/test-org/ci-project/sa.tf b/infra/terraform/test-org/ci-project/sa.tf index fd53e82e417..acaff80d7f3 100644 --- a/infra/terraform/test-org/ci-project/sa.tf +++ b/infra/terraform/test-org/ci-project/sa.tf @@ -25,3 +25,18 @@ module "service_accounts" { "${local.project_id}=>roles/storage.admin" ] } + +module "oidc" { + source = "terraform-google-modules/github-actions-runners/google//modules/gh-oidc" + version = "~> 2.0" + + project_id = local.project_id + pool_id = "cft-pool" + provider_id = "cft-gh-provider" + sa_mapping = { + cft-github-actions = { + sa_name = module.service_accounts.service_account.name + attribute = "attribute.repository/GoogleCloudPlatform/cloud-foundation-toolkit" + } + } +} From baf5d4a20a42836b7d007b94db54d3fb8b2f252b Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 8 Dec 2021 21:01:20 -0600 Subject: [PATCH 0003/1371] chore: update GHA workflows for WIF (#1028) * chore: update GHA workflows for WIF * install alpha * missing perm --- .github/workflows/build-push-cft-devtools.yml | 16 ++++++++++++--- .github/workflows/release-cli.yml | 20 ++++++++++++++++--- cli/Makefile | 4 ++-- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index fdf35b9d805..0f35cd595c5 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -14,13 +14,23 @@ jobs: name: Build and push new CFT dev tools image runs-on: ubuntu-latest + permissions: + contents: 'read' + id-token: 'write' + steps: - uses: actions/checkout@v2 - - uses: google-github-actions/setup-gcloud@master + - id: 'auth' + name: 'Authenticate to Google Cloud' + uses: 'google-github-actions/auth@v0.4.2' + with: + workload_identity_provider: '${{ env.GCP_WIF_PROVIDER }}' + service_account: '${{ env.GCP_WIF_SA_EMAIL }}' + + - uses: google-github-actions/setup-gcloud@v0.3.0 with: - version: "286.0.0" - service_account_key: ${{ secrets.GCP_SA_KEY }} + version: "366.0.0" project_id: ${{ env.PROJECT_ID }} - name: Build diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index ed51368de3e..4fa65b366e8 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -14,13 +14,27 @@ jobs: name: Build and push new CFT dev tools image runs-on: ubuntu-latest + permissions: + contents: 'read' + id-token: 'write' + steps: - uses: actions/checkout@v2 - - uses: google-github-actions/setup-gcloud@master + - id: 'auth' + name: 'Authenticate to Google Cloud' + uses: 'google-github-actions/auth@v0.4.2' + with: + workload_identity_provider: '${{ env.GCP_WIF_PROVIDER }}' + service_account: '${{ env.GCP_WIF_SA_EMAIL }}' + + - uses: google-github-actions/setup-gcloud@v0.3.0 with: - version: "286.0.0" - service_account_key: ${{ secrets.GCP_SA_KEY }} + version: "366.0.0" + + # used by make release which runs gcloud alpha storage + - name: Install gcloud alpha commands + run: gcloud components install alpha - name: Retrieve last released version run: |- diff --git a/cli/Makefile b/cli/Makefile index 549d96f5a3b..d319e2f2cd5 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -18,8 +18,8 @@ build: .PHONY: publish publish: - gsutil cp "${BUILD_DIR}/*" "${BUCKET}/${VERSION}" - gsutil cp "${BUILD_DIR}/*" "${BUCKET}/latest" + gcloud alpha storage cp "${BUILD_DIR}/*" "${BUCKET}/${VERSION}" + gcloud alpha storage cp "${BUILD_DIR}/*" "${BUCKET}/latest" .PHONY: release release: $(PLATFORMS) From d745ae6d1d2df4603b92ecc687bf549c660e7d10 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 8 Dec 2021 21:07:01 -0600 Subject: [PATCH 0004/1371] chore: swap env to secret in workflow (#1029) --- .github/workflows/build-push-cft-devtools.yml | 4 ++-- .github/workflows/release-cli.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 0f35cd595c5..05190ac1048 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -25,8 +25,8 @@ jobs: name: 'Authenticate to Google Cloud' uses: 'google-github-actions/auth@v0.4.2' with: - workload_identity_provider: '${{ env.GCP_WIF_PROVIDER }}' - service_account: '${{ env.GCP_WIF_SA_EMAIL }}' + workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' + service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - uses: google-github-actions/setup-gcloud@v0.3.0 with: diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 4fa65b366e8..d6d338bdb49 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -25,8 +25,8 @@ jobs: name: 'Authenticate to Google Cloud' uses: 'google-github-actions/auth@v0.4.2' with: - workload_identity_provider: '${{ env.GCP_WIF_PROVIDER }}' - service_account: '${{ env.GCP_WIF_SA_EMAIL }}' + workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' + service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - uses: google-github-actions/setup-gcloud@v0.3.0 with: From becb047f532ead95fa4cb6b8335e9e2c40c71a68 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 8 Dec 2021 22:53:01 -0600 Subject: [PATCH 0005/1371] chore: trigger CLI release job on workflow changes (#1030) --- .github/workflows/release-cli.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index d6d338bdb49..142c7761833 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -5,6 +5,7 @@ on: - "master" paths: - "cli/Makefile" + - ".github/workflows/release-cli.yml" env: CLI_BUCKET: gs://cft-cli RELEASE_URL: https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases/latest From 952ad4a46e7ab1a828c1845e541d06c3257fee4a Mon Sep 17 00:00:00 2001 From: Amanda Karina Lopes de Oliveira <55760933+amandakarina@users.noreply.github.com> Date: Thu, 9 Dec 2021 21:09:58 -0300 Subject: [PATCH 0006/1371] fix: Adds ignoring .md in sub-dirs for integration build (#1033) * Adds ignoring .md in sub-dirs * update tfv CI trigger to current Co-authored-by: bharathkkb --- infra/terraform/test-org/ci-triggers/triggers.tf | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 5bc42202b5d..3c2a544f624 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -50,13 +50,13 @@ resource "google_cloudbuild_trigger" "int_trigger" { } filename = "build/int.cloudbuild.yaml" - ignored_files = ["*.md", ".gitignore"] + ignored_files = ["**/*.md", ".gitignore"] } resource "google_cloudbuild_trigger" "tf_validator" { provider = google-beta project = local.project_id - description = "Pull request build for tf-validator" + description = "Pull request build for tf-validator with terrafom 12" github { owner = "GoogleCloudPlatform" name = "terraform-validator" @@ -65,10 +65,11 @@ resource "google_cloudbuild_trigger" "tf_validator" { } } substitutions = { - _TEST_PROJECT = local.tf_validator_project_id + _TERRAFORM_VERSION = "0.12.31" + _TEST_PROJECT = local.tf_validator_project_id } - filename = "build/int.cloudbuild.yaml" + filename = ".ci/cloudbuild-tests-integration.yaml" } resource "google_cloudbuild_trigger" "forseti_lint" { @@ -161,5 +162,5 @@ resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { } filename = "build/int.cloudbuild.yaml" - ignored_files = ["*.md", ".gitignore"] + ignored_files = ["**/*.md", ".gitignore"] } From c65e9f897cae1b18aece87ce92d1370913871db7 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 9 Dec 2021 20:21:37 -0600 Subject: [PATCH 0007/1371] Update tools to 1.2.4 - Terraform 1.1.0 & gCloud 366.0.0 (#994) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index aac408a0fe8..73ce7901f8e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.0.6 +TERRAFORM_VERSION := 1.1.0 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 356.0.0 +CLOUD_SDK_VERSION := 366.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.3 @@ -29,7 +29,7 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From e5ce509a00b4e80e6a3113e20fb5684b74125a6c Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 15 Dec 2021 20:15:34 -0600 Subject: [PATCH 0008/1371] Update tools to 1.2.5 - Terraform 1.1.1 & gCloud 367.0.0 (#1035) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 73ce7901f8e..3a862e473e9 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.0 +TERRAFORM_VERSION := 1.1.1 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 366.0.0 +CLOUD_SDK_VERSION := 367.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.3 @@ -29,7 +29,7 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 58a47b5b22b9aa831cd81bd27e450fbd3b4029ec Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 20 Dec 2021 12:02:09 -0600 Subject: [PATCH 0009/1371] Update tools to 1.2.6 - Terraform 1.1.2 & gCloud is latest (#1036) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 3a862e473e9..b6674b7a3c8 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,7 +13,7 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.1 +TERRAFORM_VERSION := 1.1.2 TERRAFORM_VALIDATOR_VERSION := 0.9.1 CLOUD_SDK_VERSION := 367.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -29,7 +29,7 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From bbe71403649a0dce589dd93cbd38c8f744b839ff Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 28 Dec 2021 11:54:26 -0600 Subject: [PATCH 0010/1371] fix: fix CLI release (#1038) --- .github/workflows/release-cli.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 142c7761833..7089a617a00 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest permissions: - contents: 'read' + contents: 'write' id-token: 'write' steps: From dedaccbec3a39afc9eb1facb367f0a7c9a93b6f8 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 29 Dec 2021 14:33:09 -0600 Subject: [PATCH 0011/1371] feat: test cli list cmd (#1027) * deps * feat: test list cmd * add tests * use upstream discovery * swap incompat version of gatekeeper * fix cli path trigger * Update cli/bptest/utils.go Co-authored-by: Morgante Pell * use go-pretty * use glob * discover test directory Co-authored-by: Morgante Pell --- .github/workflows/test-cli.yml | 4 +- cli/bptest/ast.go | 29 ++ cli/bptest/ast_test.go | 81 ++++ cli/bptest/cmd.go | 53 +++ cli/bptest/list.go | 169 ++++++++ cli/bptest/list_test.go | 247 ++++++++++++ cli/bptest/main.go | 8 + cli/bptest/table.go | 21 + .../with-discovery/examples/bar/.gitkeep | 0 .../with-discovery/examples/baz/.gitkeep | 0 .../with-discovery/examples/foo/.gitkeep | 0 .../with-discovery/test/fixtures/.gitkeep | 0 .../with-discovery/test/fixtures/foo/.gitkeep | 0 .../with-discovery/test/fixtures/qux/.gitkeep | 0 .../with-discovery/test/intergration/.gitkeep | 0 .../test/intergration/bar/.gitkeep | 0 .../test/intergration/bar/bar_test.go | 7 + .../test/intergration/discover_test.go | 9 + .../test/intergration/foo/.gitkeep | 0 .../test/intergration/foo/foo_test.go | 7 + cli/cmd/root.go | 3 + cli/go.mod | 5 + cli/go.sum | 377 ++++++++++++++++-- 23 files changed, 987 insertions(+), 33 deletions(-) create mode 100644 cli/bptest/ast.go create mode 100644 cli/bptest/ast_test.go create mode 100644 cli/bptest/cmd.go create mode 100644 cli/bptest/list.go create mode 100644 cli/bptest/list_test.go create mode 100644 cli/bptest/main.go create mode 100644 cli/bptest/table.go create mode 100644 cli/bptest/testdata/with-discovery/examples/bar/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/examples/baz/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/examples/foo/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/test/fixtures/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/test/fixtures/foo/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/test/fixtures/qux/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/test/intergration/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/test/intergration/bar/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/test/intergration/bar/bar_test.go create mode 100644 cli/bptest/testdata/with-discovery/test/intergration/discover_test.go create mode 100644 cli/bptest/testdata/with-discovery/test/intergration/foo/.gitkeep create mode 100644 cli/bptest/testdata/with-discovery/test/intergration/foo/foo_test.go diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 7ea7e755fde..3a224793a48 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -5,13 +5,13 @@ on: branches: - 'master' paths: - - 'cli' + - 'cli/**' - '.github/workflows/**' pull_request: branches: - 'master' paths: - - 'cli' + - 'cli/**' - '.github/workflows/**' concurrency: diff --git a/cli/bptest/ast.go b/cli/bptest/ast.go new file mode 100644 index 00000000000..7f2ec1cdccf --- /dev/null +++ b/cli/bptest/ast.go @@ -0,0 +1,29 @@ +package bptest + +import ( + "go/ast" + "go/parser" + "go/token" + "strings" +) + +// getTestFuncsFromFile parses a go source file and returns slice of test function names +func getTestFuncsFromFile(filePath string) ([]string, error) { + fileSet := token.NewFileSet() + f, err := parser.ParseFile(fileSet, filePath, nil, parser.AllErrors) + if err != nil { + return nil, err + } + testFuncs := make([]string, 0) + for _, decl := range f.Decls { + funcDecl, ok := decl.(*ast.FuncDecl) + // not a function declaration + if !ok { + continue + } + if strings.HasPrefix(funcDecl.Name.Name, "Test") { + testFuncs = append(testFuncs, funcDecl.Name.Name) + } + } + return testFuncs, nil +} diff --git a/cli/bptest/ast_test.go b/cli/bptest/ast_test.go new file mode 100644 index 00000000000..1c0ef627cbb --- /dev/null +++ b/cli/bptest/ast_test.go @@ -0,0 +1,81 @@ +package bptest + +import ( + "io/ioutil" + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGetTestFuncsFromFile(t *testing.T) { + tests := []struct { + name string + data string + want []string + errMsg string + }{ + { + name: "simple", + data: `package test + +import "testing" + +func TestA(t *testing.T) { +} +`, + want: []string{"TestA"}, + }, + { + name: "multiple", + data: `package test + +import "testing" + +const ShouldNotErr = "foo" + +func TestA(t *testing.T) { +} + +func TestB(t *testing.T) { +} + +func OtherHelper(t *testing.T) { +} +`, + want: []string{"TestA", "TestB"}, + }, + { + name: "empty", + data: `package test +`, + want: []string{}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + filePath, cleanup := writeTmpFile(t, tt.data) + defer cleanup() + got, err := getTestFuncsFromFile(filePath) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.ElementsMatch(tt.want, got) + } + }) + } +} + +func writeTmpFile(t *testing.T, data string) (string, func()) { + assert := assert.New(t) + f, err := ioutil.TempFile("", "*.go") + assert.NoError(err) + cleanup := func() { os.Remove(f.Name()) } + _, err = f.Write([]byte(data)) + assert.NoError(err) + f.Close() + return f.Name(), cleanup +} diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go new file mode 100644 index 00000000000..81f5317bdcc --- /dev/null +++ b/cli/bptest/cmd.go @@ -0,0 +1,53 @@ +package bptest + +import ( + "github.com/jedib0t/go-pretty/v6/table" + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var flags struct { + testDir string +} + +func init() { + viper.AutomaticEnv() + Cmd.AddCommand(listCmd) + + listCmd.Flags().StringVar(&flags.testDir, "test-dir", "", "Path to directory containing integration tests (default is computed by scanning current working directory)") +} + +var Cmd = &cobra.Command{ + Use: "test", + Aliases: []string{"bptest"}, + Short: "Blueprint test CLI", + Long: `Blueprint test CLI is used to actuate the Blueprint test framework used for testing KRM and Terraform Blueprints`, + Args: cobra.NoArgs, +} + +var listCmd = &cobra.Command{ + Use: "list", + Short: "list tests", + Long: "Lists both auto discovered and explicit intergration tests", + + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + intTestDir := flags.testDir + tests, err := getTests(intTestDir) + if err != nil { + return err + } + // Warn if no tests found + if len(tests) < 1 { + Log.Warn("no tests discovered") + return nil + } + tbl := newTable() + tbl.AppendHeader(table.Row{"Name", "Config", "Location"}) + for _, t := range tests { + tbl.AppendRow(table.Row{t.name, t.config, t.location}) + } + tbl.Render() + return nil + }, +} diff --git a/cli/bptest/list.go b/cli/bptest/list.go new file mode 100644 index 00000000000..ee51d552d0f --- /dev/null +++ b/cli/bptest/list.go @@ -0,0 +1,169 @@ +package bptest + +import ( + "errors" + "fmt" + "io/fs" + "os" + "path" + "path/filepath" + "sort" + "strings" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/discovery" + testing "github.com/mitchellh/go-testing-interface" +) + +const ( + discoverTestFilename = "discover_test.go" +) + +type bpTest struct { + name string + config string + location string +} + +// getTests returns slice of all blueprint tests +func getTests(intTestDir string) ([]bpTest, error) { + // discover intTestDir if not provided + if intTestDir == "" { + cwd, err := os.Getwd() + if err != nil { + return nil, err + } + discoveredIntTestDir, err := discoverIntTestDir(cwd) + if err != nil { + return nil, err + } + intTestDir = discoveredIntTestDir + } + Log.Info(fmt.Sprintf("using test-dir: %s", intTestDir)) + + tests := []bpTest{} + discoveredTests, err := getDiscoveredTests(intTestDir) + if err != nil { + return nil, err + } + tests = append(tests, discoveredTests...) + + explicitTests, err := getExplicitTests(intTestDir) + if err != nil { + return nil, err + } + tests = append(tests, explicitTests...) + + return tests, nil +} + +// getDiscoveredTests returns slice of discovered blueprint tests +func getDiscoveredTests(intTestDir string) ([]bpTest, error) { + discoverTestFile := path.Join(intTestDir, discoverTestFilename) + // skip discovering tests if no discoverTestFile + _, err := os.Stat(discoverTestFile) + if err != nil { + if !errors.Is(err, os.ErrNotExist) { + return nil, err + } + Log.Warn(fmt.Sprintf("Skipping discovered test. %s not found.", discoverTestFilename)) + return nil, nil + } + + // if discoverTestFile is present, find auto discovered tests + tests := []bpTest{} + if discoverTestFile != "" { + discoverTestName, err := getDiscoverTestName(discoverTestFile) + if err != nil { + return nil, err + } + discoveredSubTests := discovery.FindTestConfigs(&testing.RuntimeT{}, intTestDir) + for testName, fileName := range discoveredSubTests { + tests = append(tests, bpTest{name: fmt.Sprintf("%s/%s", discoverTestName, testName), config: fileName, location: discoverTestFile}) + } + } + sort.SliceStable(tests, func(i, j int) bool { return tests[i].name < tests[j].name }) + return tests, nil +} + +func getExplicitTests(intTestDir string) ([]bpTest, error) { + // find all explicit test files ending with *_test.go excluding discover_test.go within intTestDir + testFiles := findFiles(intTestDir, + func(d fs.DirEntry) bool { + return strings.HasSuffix(d.Name(), "_test.go") && d.Name() != discoverTestFilename + }, + ) + + eTests := []bpTest{} + for _, testFile := range testFiles { + // testDir name maps to a matching example/fixture + testDir := path.Dir(testFile) + testCfg, err := discovery.GetConfigDirFromTestDir(testDir) + if err != nil { + Log.Warn(fmt.Sprintf("unable to discover configs for %s: %v", testDir, err)) + } + + testFns, err := getTestFuncsFromFile(testFile) + if err != nil { + return nil, err + } + for _, fnName := range testFns { + eTests = append(eTests, bpTest{name: fnName, location: testFile, config: testCfg}) + } + + } + sort.SliceStable(eTests, func(i, j int) bool { return eTests[i].name < eTests[j].name }) + return eTests, nil +} + +// getDiscoverTestName returns test name used for auto discovered tests +func getDiscoverTestName(dFileName string) (string, error) { + fn, err := getTestFuncsFromFile(dFileName) + if err != nil { + return "", err + } + // enforce only one main test func decl for discovered tests + if len(fn) != 1 { + return "", fmt.Errorf("only one function should be defined in %s. Found %+q", dFileName, fn) + } + return fn[0], nil +} + +// discoverIntTestDir attempts to discover the integration test directory +// by searching for discover_test.go in the current working directory. +// If not found, it returns current working directory. +func discoverIntTestDir(cwd string) (string, error) { + // search for discover_test.go + discoverTestFiles := findFiles(cwd, + func(d fs.DirEntry) bool { + return d.Name() == discoverTestFilename + }, + ) + if len(discoverTestFiles) > 1 { + return "", fmt.Errorf("found multiple %s files: %+q. Exactly one file was expected", discoverTestFilename, discoverTestFiles) + } + if len(discoverTestFiles) == 1 { + relIntTestDir, err := filepath.Rel(cwd, path.Dir(discoverTestFiles[0])) + if err != nil { + return "", err + } + return relIntTestDir, nil + } + // no discover_test.go file discovered + return ".", nil +} + +// findFiles returns a slice of file paths matching matchFn +func findFiles(dir string, matchFn func(d fs.DirEntry) bool) []string { + files := []string{} + filepath.WalkDir(dir, func(fpath string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if !d.IsDir() && matchFn(d) { + files = append(files, fpath) + return nil + } + return nil + }) + return files +} diff --git a/cli/bptest/list_test.go b/cli/bptest/list_test.go new file mode 100644 index 00000000000..67f3ed89e3e --- /dev/null +++ b/cli/bptest/list_test.go @@ -0,0 +1,247 @@ +package bptest + +import ( + "io/ioutil" + "os" + "path" + "testing" + + "github.com/stretchr/testify/assert" +) + +const ( + testDirWithDiscovery = "testdata/with-discovery" + intTestDir = "test/intergration" +) + +func TestGetDiscoveredTests(t *testing.T) { + tests := []struct { + name string + testDir string + want []bpTest + errMsg string + }{ + { + name: "simple", + testDir: path.Join(testDirWithDiscovery, intTestDir), + want: []bpTest{ + getBPTest("TestAll/examples/baz", path.Join(testDirWithDiscovery, "examples/baz"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename)), + getBPTest("TestAll/fixtures/qux", path.Join(testDirWithDiscovery, "test/fixtures/qux"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename)), + }, + }, + { + name: "no discovery", + testDir: path.Join(testDirWithDiscovery, "doesnotexist"), + want: []bpTest{}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + got, err := getDiscoveredTests(tt.testDir) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.ElementsMatch(tt.want, got) + } + }) + } +} + +func TestGetExplicitTests(t *testing.T) { + tests := []struct { + name string + testDir string + want []bpTest + errMsg string + }{ + { + name: "simple", + testDir: path.Join(testDirWithDiscovery, intTestDir), + want: []bpTest{ + getBPTest("TestBar", path.Join(testDirWithDiscovery, "examples/bar"), path.Join(testDirWithDiscovery, intTestDir, "bar/bar_test.go")), + getBPTest("TestFoo", path.Join(testDirWithDiscovery, "test/fixtures/foo"), path.Join(testDirWithDiscovery, intTestDir, "foo/foo_test.go")), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + got, err := getExplicitTests(tt.testDir) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.ElementsMatch(tt.want, got) + } + }) + } +} + +func TestGetTests(t *testing.T) { + tests := []struct { + name string + testDir string + want []bpTest + errMsg string + }{ + { + name: "simple", + testDir: path.Join(testDirWithDiscovery, intTestDir), + want: []bpTest{ + getBPTest("TestAll/examples/baz", path.Join(testDirWithDiscovery, "examples/baz"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename)), + getBPTest("TestAll/fixtures/qux", path.Join(testDirWithDiscovery, "test/fixtures/qux"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename)), + getBPTest("TestBar", path.Join(testDirWithDiscovery, "examples/bar"), path.Join(testDirWithDiscovery, intTestDir, "bar/bar_test.go")), + getBPTest("TestFoo", path.Join(testDirWithDiscovery, "test/fixtures/foo"), path.Join(testDirWithDiscovery, intTestDir, "foo/foo_test.go")), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + got, err := getTests(tt.testDir) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.ElementsMatch(tt.want, got) + } + }) + } +} + +func getBPTest(n string, c string, l string) bpTest { + return bpTest{name: n, config: c, location: l} +} + +func TestGetDiscoverTestName(t *testing.T) { + tests := []struct { + name string + data string + want string + errMsg string + }{ + { + name: "simple", + data: `package test + +import "testing" + +func TestAll(t *testing.T) { +} +`, + want: "TestAll", + }, + { + name: "multiple", + data: `package test + +import "testing" + +const ShouldNotErr = "foo" + +func TestA(t *testing.T) { +} + +func TestB(t *testing.T) { +} + +func OtherHelper(t *testing.T) { +} +`, + errMsg: "only one function should be defined", + }, + { + name: "empty", + data: `package test +`, + errMsg: "only one function should be defined", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + filePath, cleanup := writeTmpFile(t, tt.data) + defer cleanup() + got, err := getDiscoverTestName(filePath) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.Equal(tt.want, got) + } + }) + } +} + +func Test_discoverIntTestDir(t *testing.T) { + tests := []struct { + name string + files []string + want string + errMsg string + }{ + { + name: "with single discover_test.go", + files: []string{discoverTestFilename}, + want: ".", + }, + { + name: "with single discover_test.go in a dir", + files: []string{path.Join("test/integration", discoverTestFilename)}, + want: "test/integration", + }, + { + name: "with single discover_test.go in a dir and other files", + files: []string{path.Join("foo/bar/baz", discoverTestFilename), "foo.go", "test.tf", "other/test/bar_test.go"}, + want: "foo/bar/baz", + }, + { + name: "with multiple discover_test.go", + files: []string{path.Join("mod1/test/integration", discoverTestFilename), path.Join("mod2/test/integration", discoverTestFilename)}, + errMsg: "found multiple discover_test.go files:", + }, + { + name: "no discover_test.go files", + files: []string{}, + want: ".", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + dir, cleanup := createFilesInTmpDir(t, tt.files) + defer cleanup() + got, err := discoverIntTestDir(dir) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.Equal(tt.want, got) + } + }) + } +} + +func createFilesInTmpDir(t *testing.T, files []string) (string, func()) { + assert := assert.New(t) + tempDir, err := ioutil.TempDir("", "bpt-") + assert.NoError(err) + cleanup := func() { os.RemoveAll(tempDir) } + + //create files in tmpdir + for _, f := range files { + p := path.Join(tempDir, path.Dir(f)) + err = os.MkdirAll(p, 0755) + assert.NoError(err) + _, err = os.Create(path.Join(p, path.Base(f))) + assert.NoError(err) + } + return tempDir, cleanup +} diff --git a/cli/bptest/main.go b/cli/bptest/main.go new file mode 100644 index 00000000000..711949b5f21 --- /dev/null +++ b/cli/bptest/main.go @@ -0,0 +1,8 @@ +package bptest + +import ( + log "github.com/inconshreveable/log15" +) + +// bptest log15 handler +var Log = log.New() diff --git a/cli/bptest/table.go b/cli/bptest/table.go new file mode 100644 index 00000000000..91c68204357 --- /dev/null +++ b/cli/bptest/table.go @@ -0,0 +1,21 @@ +package bptest + +import ( + "os" + + "github.com/jedib0t/go-pretty/v6/table" + "github.com/jedib0t/go-pretty/v6/text" +) + +func newTable() table.Writer { + tw := table.NewWriter() + tw.Style().Color.Header = text.Colors{text.FgGreen} + tw.SetColumnConfigs( + []table.ColumnConfig{ + {Number: 1, Colors: text.Colors{text.FgYellow}}, + }, + ) + tw.Style().Options.DrawBorder = false + tw.SetOutputMirror(os.Stdout) + return tw +} diff --git a/cli/bptest/testdata/with-discovery/examples/bar/.gitkeep b/cli/bptest/testdata/with-discovery/examples/bar/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/examples/baz/.gitkeep b/cli/bptest/testdata/with-discovery/examples/baz/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/examples/foo/.gitkeep b/cli/bptest/testdata/with-discovery/examples/foo/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/test/fixtures/.gitkeep b/cli/bptest/testdata/with-discovery/test/fixtures/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/test/fixtures/foo/.gitkeep b/cli/bptest/testdata/with-discovery/test/fixtures/foo/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/test/fixtures/qux/.gitkeep b/cli/bptest/testdata/with-discovery/test/fixtures/qux/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/test/intergration/.gitkeep b/cli/bptest/testdata/with-discovery/test/intergration/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/test/intergration/bar/.gitkeep b/cli/bptest/testdata/with-discovery/test/intergration/bar/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/test/intergration/bar/bar_test.go b/cli/bptest/testdata/with-discovery/test/intergration/bar/bar_test.go new file mode 100644 index 00000000000..1252f0eb52e --- /dev/null +++ b/cli/bptest/testdata/with-discovery/test/intergration/bar/bar_test.go @@ -0,0 +1,7 @@ +package bar + +import "testing" + +func TestBar(t *testing.T) { + t.Log("Ran test") +} diff --git a/cli/bptest/testdata/with-discovery/test/intergration/discover_test.go b/cli/bptest/testdata/with-discovery/test/intergration/discover_test.go new file mode 100644 index 00000000000..4c94a12eb16 --- /dev/null +++ b/cli/bptest/testdata/with-discovery/test/intergration/discover_test.go @@ -0,0 +1,9 @@ +package test + +import ( + "testing" +) + +func TestAll(t *testing.T) { + +} diff --git a/cli/bptest/testdata/with-discovery/test/intergration/foo/.gitkeep b/cli/bptest/testdata/with-discovery/test/intergration/foo/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bptest/testdata/with-discovery/test/intergration/foo/foo_test.go b/cli/bptest/testdata/with-discovery/test/intergration/foo/foo_test.go new file mode 100644 index 00000000000..2f9cfd81986 --- /dev/null +++ b/cli/bptest/testdata/with-discovery/test/intergration/foo/foo_test.go @@ -0,0 +1,7 @@ +package foo + +import "testing" + +func TestFoo(t *testing.T) { + t.Log("Ran test") +} diff --git a/cli/cmd/root.go b/cli/cmd/root.go index b394398eca5..f6ca8c1c575 100644 --- a/cli/cmd/root.go +++ b/cli/cmd/root.go @@ -3,6 +3,7 @@ package cmd import ( "os" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bptest" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/report" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/scorecard" log "github.com/inconshreveable/log15" @@ -25,6 +26,7 @@ var rootCmd = &cobra.Command{ if !flags.verbose { // discard logs scorecard.Log.SetHandler(log.DiscardHandler()) + bptest.Log.SetHandler(log.DiscardHandler()) } // We want to dump to stdout by default cmd.SetOut(cmd.OutOrStdout()) @@ -69,6 +71,7 @@ Use "{{.CommandPath}} [command] --help" for more information about a command.{{e rootCmd.AddCommand(scorecard.Cmd) rootCmd.AddCommand(report.Cmd) + rootCmd.AddCommand(bptest.Cmd) } func Execute() { diff --git a/cli/go.mod b/cli/go.mod index f166f411273..3762b3ba095 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -5,12 +5,15 @@ go 1.16 require ( cloud.google.com/go/asset v1.0.1 cloud.google.com/go/storage v1.18.2 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52 github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355 github.com/briandowns/spinner v1.16.0 github.com/gammazero/workerpool v1.1.2 github.com/golang/protobuf v1.5.2 github.com/google/go-cmp v0.5.6 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac + github.com/jedib0t/go-pretty/v6 v6.2.4 + github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/open-policy-agent/opa v0.34.2 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.2.1 @@ -19,3 +22,5 @@ require ( google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 gopkg.in/yaml.v2 v2.4.0 ) + +replace github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible => github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e diff --git a/cli/go.sum b/cli/go.sum index 996b73916f6..dc53e6ab03d 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -8,6 +8,7 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -57,19 +58,50 @@ cloud.google.com/go/storage v1.18.2/go.mod h1:AiIj7BWXyhO5gGVmYJ+S8tbkCx3yb0IMju contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v46.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest v0.11.0/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.5/go.mod h1:foo3aIXRQ90zFve3r0QiDsrjGDUwWhKl0ZOQy1CT14k= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.1/go.mod h1:ea90/jvmnAwDrSooLH4sRIehEPtG/EPUXavDh31MnA4= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.0/go.mod h1:JljT387FplPzBA31vUcvsetLKF3pec5bdAxjVU4kI2s= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= +github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= +github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= +github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52 h1:3Aqk1vqEi62EWkEj+wzPeJBaHzy0R+PXmZs5gE1flbQ= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52/go.mod h1:tWoaVHXM9sZyzxgX2+UHtzdJkav+uTnTJiz42N8FONc= github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355 h1:UQQJmJl5aZNwLISiq/YqEEFXxv042cYY6wD49TOzrco= github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355/go.mod h1:MHzWJNkQiBhSRuWAOxdMBBR+acz6g+jXGDtZp5S7vzU= +github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= +github.com/GoogleContainerTools/kpt-functions-catalog/functions/go/list-setters v0.1.0/go.mod h1:ju1d4EAij/igLgN+0er7tPc1nTKn/PTjY00buPEsx0Q= +github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20210810181223-632b30549de6/go.mod h1:k86q33ABlA9TnUqRmHH9dnKY2Edh8YbxjRyPfjlM8jE= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= @@ -77,6 +109,7 @@ github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF0 github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.3/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -96,6 +129,7 @@ github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMx github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -110,6 +144,9 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= +github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -117,25 +154,35 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= +github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef h1:46PFijGLmAjMPwCCCo7Jf0W6f9slllCkkv7vyc1yOSg= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/ashanbrown/forbidigo v1.1.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI= github.com/ashanbrown/makezero v0.0.0-20210308000810-4155955488a0/go.mod h1:oG9Dnez7/ESBqc4EdrdNlryeo7d0KcW1ftXHm7nU/UU= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.38.28/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= +github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/briandowns/spinner v1.16.0 h1:DFmp6hEaIx2QXXuqSJmtfSBSAjRmpGiKG6ip2Wm/yOs= github.com/briandowns/spinner v1.16.0/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= github.com/bytecodealliance/wasmtime-go v0.27.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= @@ -163,6 +210,7 @@ github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnht github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -202,11 +250,19 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v0.0.0-20200109221225-a4f60165b7a3/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= @@ -216,6 +272,9 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= @@ -231,8 +290,9 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/esimonov/ifshort v1.0.2/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -261,6 +321,9 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-critic/go-critic v0.5.6/go.mod h1:cVjj0DfqewQVIlIAGexPCaGaZDAqGE29PYDDADIVNEo= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= +github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -271,73 +334,118 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb 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-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= +github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= github.com/go-openapi/analysis v0.19.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5 h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI= github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/analysis v0.19.10/go.mod h1:qmhS3VNFxBlquFJ0RGoDtylO9y4pgTAUNE9AEEMdlJQ= +github.com/go-openapi/analysis v0.19.16/go.mod h1:GLInF007N83Ad3m8a/CbQ5TPzdnGT7workfHwuVjNVk= +github.com/go-openapi/analysis v0.20.0 h1:UN09o0kNhleunxW7LR+KnltD0YrJ8FF03pSqvAN3Vro= +github.com/go-openapi/analysis v0.20.0/go.mod h1:BMchjvaHDykmRMsK40iPtvyOfFdMMxlOmQr9FBZk+Og= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.9 h1:9SnKdGhiPZHF3ttwFMiCBEb8jQ4IDdrK+5+a0oTygA4= +github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4 h1:5I4CCSqoWzT+82bBkNIvmLc0UOsoKKQ4Fz+3VxOB7SY= +github.com/go-openapi/loads v0.19.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI= github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= +github.com/go-openapi/loads v0.19.5/go.mod h1:dswLCAdonkRufe/gSUC3gN8nTSaB9uaS2es0x5/IbjY= +github.com/go-openapi/loads v0.19.6/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc= +github.com/go-openapi/loads v0.19.7/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc= +github.com/go-openapi/loads v0.20.0/go.mod h1:2LhKquiE513rN5xC6Aan6lYOSddlL8Mp20AW9kpviM4= +github.com/go-openapi/loads v0.20.2 h1:z5p5Xf5wujMxS1y8aP+vxwW5qYT2zdJBbXKmQUG3lcc= +github.com/go-openapi/loads v0.20.2/go.mod h1:hTVUotJ+UonAMMZsvakEgmWKgtulweO9vYP2bQYKA/o= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4 h1:csnOgcgAiuGoM/Po7PEpKDoNulCcF3FGbSnbHfxgjMI= github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= +github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= +github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= +github.com/go-openapi/runtime v0.19.24 h1:TqagMVlRAOTwllE/7hNKx6rQ10O6T8ZzeJdMjSTKaD4= +github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.19.4 h1:ixzUSnHTd6hCemgtAJgluaTSGYpLNpJY4mA2DIkdOAo= github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/spec v0.19.8/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/spec v0.19.15/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= +github.com/go-openapi/spec v0.20.0/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= +github.com/go-openapi/spec v0.20.1/go.mod h1:93x7oh+d+FQsmsieroS4cmR3u0p/ywH649a3qwC9OsQ= +github.com/go-openapi/spec v0.20.3 h1:uH9RQ6vdyPSs2pSy9fL8QPspDF2AMIMPtmK5coSSjtQ= +github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/strfmt v0.19.3 h1:eRfyY5SkaNJCAwmmMcADjY31ow9+N7MCLW7oRkbsINA= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= +github.com/go-openapi/strfmt v0.19.11/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= +github.com/go-openapi/strfmt v0.20.0 h1:l2omNtmNbMc39IGptl9BuXBEKcZfS8zjrTsPKTiJiDM= +github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= +github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= +github.com/go-openapi/swag v0.19.12/go.mod h1:eFdyEBkTdoAf/9RXBvj4cr1nH7GD8Kzo5HTt47gr72M= +github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo= github.com/go-openapi/validate v0.19.4/go.mod h1:BkJ0ZmXui7yB0bJXWSXgLPNTmbLVeX/3D1xn/N9mMUM= -github.com/go-openapi/validate v0.19.5 h1:QhCBKRYqZR+SKo4gl1lPhPahope8/RLt6EVgY8X80w0= github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8= +github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= +github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9GA7monOmWBbeCI= +github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= +github.com/go-openapi/validate v0.20.2 h1:AhqDegYV3J3iQkMPJSXkvzymHKMTw0BST3RK3hTT4ts= +github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= @@ -349,7 +457,31 @@ github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslW github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= +github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= github.com/gobuffalo/flect v0.1.5/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= +github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= +github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= +github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= +github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= +github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= +github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= +github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= +github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= +github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= +github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= +github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -405,6 +537,7 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -440,9 +573,11 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-containerregistry v0.0.0-20200110202235-f4fb41bf00a3/go.mod h1:2wIuQute9+hhWqvL3vEI7YB0EKluF4WcPzI1eAliazk= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -477,8 +612,11 @@ github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pf github.com/googleapis/gax-go/v2 v2.1.1 h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= +github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1 h1:A8Yhf6EtqTv9RMsU6MQTyrtV1TjWlR6xU9BsZIwuTCM= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/gookit/color v1.3.8/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -515,6 +653,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gruntwork-io/go-commons v0.8.0/go.mod h1:gtp0yTtIBExIZp7vyIV9I0XQkVwiQZze678hvDXof78= +github.com/gruntwork-io/terratest v0.35.6/go.mod h1:GIVJGBV1WIv1vxIG31Ycy0CuHYfXuvvkilNQuC9Wi+o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= @@ -541,10 +681,12 @@ github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= @@ -552,6 +694,7 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/terraform-json v0.9.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= @@ -561,23 +704,32 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1: github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= +github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jedib0t/go-pretty/v6 v6.2.4 h1:wdaj2KHD2W+mz8JgJ/Q6L/T5dB7kyqEFI16eLq7GEmk= +github.com/jedib0t/go-pretty/v6 v6.2.4/go.mod h1:+nE9fyyHGil+PuISTCrp7avEdo6bqoMwqZnuiK2r2a0= github.com/jgautheron/goconst v1.4.0/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= github.com/jingyugao/rowserrcheck v0.0.0-20210315055705-d907ca737bb1/go.mod h1:TOQpc2SLx6huPfoFGK3UOnEG+u02D3C1GeosjupAKCA= +github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +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= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -594,11 +746,14 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julz/importas v0.0.0-20210419104244-841f0c0fe66d/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= +github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= +github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/errcheck v1.6.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= @@ -618,6 +773,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kulti/thelper v0.4.0/go.mod h1:vMu2Cizjy/grP+jmsvOFDx1kYP6+PD1lqg4Yu5exl2U= github.com/kunwardeep/paralleltest v1.0.2/go.mod h1:ZPqNm1fVHPllh5LPVujzbVz1JN2GhLxSfY+oqUsvG30= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= github.com/ldez/gomoddirectives v0.2.1/go.mod h1:sGicqkRgBOg//JfpXwkB9Hj0X5RyJ7mlACM5B9f6Me4= @@ -641,9 +797,13 @@ github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -662,15 +822,22 @@ github.com/mattn/go-runewidth v0.0.0-20181025052659-b20a3daf6a39/go.mod h1:LwmH8 github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= github.com/mgechev/revive v1.0.6/go.mod h1:Lj5gIVxjBlH8REa3icEOkdfchwYc291nShzZ4QYWyMo= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= @@ -681,17 +848,24 @@ github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= +github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mna/pigeon v0.0.0-20180808201053-bb0192cfc2ae/go.mod h1:Iym28+kJVnC1hfQvv5MUtI6AiFFzvQjHcvI4RFTG/04= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -700,7 +874,10 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= github.com/mozilla/tls-observatory v0.0.0-20210209181001-cf43108d6880/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -741,7 +918,9 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.15.0 h1:1V1NfVQR87RtWAgp1lv9JZJ5Jap+XFGKPi00andXGi4= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= @@ -751,20 +930,27 @@ github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.5 h1:7n6FEkpFmfCoo2t+YYqXH0evK+a9ICQz0xcAy9dYcaQ= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/open-policy-agent/cert-controller v0.1.1-0.20210129015139-6ff9721a1c47/go.mod h1:vZFB1b92JmUOIDEWHGO/lCnrKqrCQA5jCZkwPlF2nmc= github.com/open-policy-agent/frameworks/constraint v0.0.0-20200127222620-69dff9b895a2/go.mod h1:RYtG2t6a5nly9IWFMNgq/K29YzYMV9ftA7XlGOM75bs= +github.com/open-policy-agent/frameworks/constraint v0.0.0-20200420221412-5bae2037a343/go.mod h1:Dr3QxvH+NTQcPPZWSt1ueNOsxW4VwgUltaLL7Ttnrac= +github.com/open-policy-agent/frameworks/constraint v0.0.0-20210121003109-e55b2bb4cf1c/go.mod h1:vvhkBONv7Uah2fvS/bQ/N1u0rSLvxZOs2ErR6m+4QtQ= github.com/open-policy-agent/frameworks/constraint v0.0.0-20210422220901-804ff2ee8b4f h1:oEq3M/aUJbcx9LVuL+UQXhOl3xDwhbNB7WFQtWZdh4o= github.com/open-policy-agent/frameworks/constraint v0.0.0-20210422220901-804ff2ee8b4f/go.mod h1:vvhkBONv7Uah2fvS/bQ/N1u0rSLvxZOs2ErR6m+4QtQ= -github.com/open-policy-agent/gatekeeper v0.0.0-20200130050101-a7990e5bc83a h1:VG+QBBJIURLRWFitdRxAMrxo0saatgWC9wZ7C7O2rPI= github.com/open-policy-agent/gatekeeper v0.0.0-20200130050101-a7990e5bc83a/go.mod h1:KUnD20sANxG0aZ58e0juTnkdGsVUzWclPiIcprso5gk= +github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e h1:7AjJcXJi5RGYZBwZBB9XwuERztGzKMTH1OBfW3OqnD4= +github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e/go.mod h1:nNKQEtZ5dn3aqxeNWYQV9ZO89zwLJfANPfgm3XE7NNk= github.com/open-policy-agent/opa v0.16.2/go.mod h1:P0xUE/GQAAgnvV537GzA0Ikw4+icPELRT327QJPkaKY= +github.com/open-policy-agent/opa v0.19.1/go.mod h1:rrwxoT/b011T0cyj+gg2VvxqTtn6N3gp/jzmr3fjW44= github.com/open-policy-agent/opa v0.24.0/go.mod h1:qEyD/i8j+RQettHGp4f86yjrjvv+ZYia+JHCMv2G7wA= github.com/open-policy-agent/opa v0.29.3/go.mod h1:ZCOTD3yyFR8JvF8ETdWdiSPn9WcF1dXeQWOv7VoPorU= github.com/open-policy-agent/opa v0.34.2 h1:asRmfDRUSd8gwPNRrpUsDxwOUkxLgc1x1FYkwjcnag4= github.com/open-policy-agent/opa v0.34.2/go.mod h1:buysXn+6zB/b+6JgLkP4WgKZ9+UgUtFAgtemYGrL9Ik= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -773,10 +959,18 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= @@ -800,6 +994,7 @@ github.com/polyfloyd/go-errorlint v0.0.0-20210418123303-74da32850375/go.mod h1:w github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.0.0-20181025174421-f30f42803563/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= @@ -808,12 +1003,14 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-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.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= @@ -825,6 +1022,7 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.29.0 h1:3jqPBvKT4OHAbje2Ql7KeaaSicDBCxMYwEJU1zRJceE= github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -834,6 +1032,7 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= @@ -852,9 +1051,13 @@ github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqn github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ= @@ -863,6 +1066,8 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sanposhiho/wastedassign v1.0.0/go.mod h1:LGpq5Hsv74QaqM47WtIsRSF/ik9kqk07kchgv66tLVE= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/securego/gosec/v2 v2.7.0/go.mod h1:xNbGArrGUspJLuz3LS5XCY1EBW/0vABAl/LWfSklmiM= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= @@ -873,6 +1078,7 @@ github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxr github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -900,6 +1106,7 @@ github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cobra v0.0.0-20181021141114-fe5e611709b0/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= @@ -910,16 +1117,19 @@ github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0 github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v0.0.0-20181024212040-082b515c9490/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/ssgreg/nlreturn/v2 v2.1.0/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -940,8 +1150,11 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= github.com/tetafro/godot v1.4.6/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= -github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= +github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tklauser/go-sysconf v0.3.4/go.mod h1:Cl2c8ZRWfHD5IrfHo9VN+FX9kCFjIOyVklgXycLB6ek= github.com/tklauser/numcpus v0.2.1/go.mod h1:9aU+wOc6WjUIZEwWMP62PL/41d65P+iks1gBkr4QyP8= @@ -951,18 +1164,25 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1 github.com/tomarrell/wrapcheck/v2 v2.1.0/go.mod h1:crK5eI4RGSUrb9duDTQ5GqcukbKZvi85vX6nbhsBAeI= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/tommy-muehle/go-mnd/v2 v2.3.2/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.16.0/go.mod h1:YOKImeEosDdBPnxc0gy7INqi3m1zK6A+xl6TwOBhHCA= github.com/valyala/quicktemplate v1.6.3/go.mod h1:fwPzK2fHuYEODzJ9pkw0ipCPNHZ2tD5KW4lOuSdPKzY= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= +github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= @@ -970,6 +1190,7 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b h1:vVRagRXf67ESqAb72hG2C/ZwI8NtJF2u2V76EsuOHGY= github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b/go.mod h1:HptNXiXVDcJjXe9SqMd0v2FsL9f8dz4GnXgltU6q/co= @@ -982,18 +1203,27 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= +github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2 h1:jxcFYjlkl8xaERsgLo+RNquI0epW6zuy/ZRQs6jnrFA= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= +go.mongodb.org/mongo-driver v1.3.4/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= +go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.4.6 h1:rh7GdYmDrb8AQSkF8yteAus8qYOgOASWDOv1BWqBXkU= +go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1006,22 +1236,28 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.8.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1030,7 +1266,10 @@ golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/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-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1038,6 +1277,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= @@ -1085,6 +1326,7 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1100,6 +1342,7 @@ golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1135,6 +1378,7 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= @@ -1175,6 +1419,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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= @@ -1189,21 +1434,28 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1224,9 +1476,11 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1260,8 +1514,9 @@ golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210917161153-d61c044b1678 h1:J27LZFQBFoihqXoegpscI10HpjZ7B5WQLLKL2FZXQKw= golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -1278,6 +1533,7 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb 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= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1299,14 +1555,20 @@ golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1324,6 +1586,7 @@ golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191205215504-7b8c8591a921/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1348,6 +1611,7 @@ golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -1371,6 +1635,7 @@ golang.org/x/tools v0.0.0-20201017001424-6003fad69a88/go.mod h1:z6u4i615ZeAfBE4X golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201028025901-8cd080b735b3/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110201400-7099162a900a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201118003311-bd56c0adb394/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1394,11 +1659,13 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= 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= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1568,6 +1835,7 @@ gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= @@ -1581,6 +1849,7 @@ gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -1596,9 +1865,12 @@ 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-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/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.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1610,47 +1882,80 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.1.4/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= k8s.io/api v0.0.0-20190918155943-95b840bb6a1f/go.mod h1:uWuOHnjmNrtQomJrvEBg0c0HRNyQ+8KTEERVsK0PW48= k8s.io/api v0.16.4/go.mod h1:AtzMnsR45tccQss5q8RnF+W8L81DH6XwXwo/joEx9u0= -k8s.io/api v0.17.2 h1:NF1UFXcKN7/OOv1uxdRz3qfra8AHsPav5M93hlV9+Dc= +k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= +k8s.io/api v0.17.4/go.mod h1:5qxx6vjmwUVG2nHQTKGlLts8Tbok8PzHl4vHtVFuZCA= +k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= +k8s.io/api v0.19.3 h1:GN6ntFnv44Vptj/b+OnMW7FmzkpDoIDLZRvKX3XH9aU= +k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783/go.mod h1:xvae1SZB3E17UpV59AWc271W/Ph25N+bjPyR63X6tPY= k8s.io/apiextensions-apiserver v0.16.4/go.mod h1:HYQwjujEkXmQNhap2C9YDdIVOSskGZ3et0Mvjcyjbto= -k8s.io/apiextensions-apiserver v0.17.2 h1:cP579D2hSZNuO/rZj9XFRzwJNYb41DbNANJb6Kolpss= k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs= +k8s.io/apiextensions-apiserver v0.19.2 h1:oG84UwiDsVDu7dlsGQs5GySmQHCzMhknfhFExJMz9tA= +k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg= k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT68DBI8uEePRt89cSvoXUVqbkWHq4= k8s.io/apimachinery v0.16.4/go.mod h1:llRdnznGEAqC3DcNm6yEj472xaFVfLM7hnYofMb12tQ= -k8s.io/apimachinery v0.17.2 h1:hwDQQFbdRlpnnsR64Asdi55GyCaIP/3WQpMmbNBeWr4= +k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/apimachinery v0.17.4/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g= +k8s.io/apimachinery v0.19.2/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= +k8s.io/apimachinery v0.19.3 h1:bpIQXlKjB4cB/oNpnNnV+BybGPR7iP5oYpsOTEJ4hgc= +k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg= k8s.io/apiserver v0.16.4/go.mod h1:kbLJOak655g6W7C+muqu1F76u9wnEycfKMqbVaXIdAc= -k8s.io/apiserver v0.17.2 h1:NssVvPALll6SSeNgo1Wk1h2myU1UHNwmhxV0Oxbcl8Y= +k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo= +k8s.io/apiserver v0.19.2 h1:xq2dXAzsAoHv7S4Xc/p7PKhiowdHV/PgdePWo3MxIYM= +k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA= k8s.io/cli-runtime v0.17.2/go.mod h1:aa8t9ziyQdbkuizkNLAw3qe3srSyWh9zlSB7zTqRNPI= k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90/go.mod h1:J69/JveO6XESwVgG53q3Uz5OSfgsv4uxpScmmyYOOlk= k8s.io/client-go v0.16.4/go.mod h1:ZgxhFDxSnoKY0J0U2/Y1C8obKDdlhGPZwA7oHH863Ok= -k8s.io/client-go v0.17.2 h1:ndIfkfXEGrNhLIgkr0+qhRguSD3u6DCmonepn1O6NYc= +k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= +k8s.io/client-go v0.17.4/go.mod h1:ouF6o5pz3is8qU0/qYL2RnoxOPqgfuidYLowytyLJmc= +k8s.io/client-go v0.19.2/go.mod h1:S5wPhCqyDNAlzM9CnEdgTGV4OqhsW3jGO1UM1epwfJA= +k8s.io/client-go v0.19.3 h1:ctqR1nQ52NUs6LpI0w+a5U+xjYwflFwA13OJKcicMxg= +k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= +k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE= k8s.io/code-generator v0.0.0-20190912054826-cd179ad6a269/go.mod h1:V5BD6M4CyaN5m+VthcclXWsVcT1Hu+glwa1bi3MIsyE= +k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= k8s.io/code-generator v0.16.4/go.mod h1:mJUgkl06XV4kstAnLHAIzJPVCOzVR+ZcfPIv4fUsFCY= k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= +k8s.io/code-generator v0.19.2/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= k8s.io/component-base v0.0.0-20190918160511-547f6c5d7090/go.mod h1:933PBGtQFJky3TEwYx4aEPZ4IxqhWh3R6DCmzqIn1hA= k8s.io/component-base v0.16.4/go.mod h1:GYQ+4hlkEwdlpAp59Ztc4gYuFhdoZqiAJD1unYDJ3FM= -k8s.io/component-base v0.17.2 h1:0XHf+cerTvL9I5Xwn9v+0jmqzGAZI7zNydv4tL6Cw6A= +k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs= +k8s.io/component-base v0.19.2 h1:jW5Y9RcZTb79liEhW3XDVTW7MuvEGP0tQZnfSX6/+gs= +k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= +k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kubectl v0.17.2 h1:QZR8Q6lWiVRjwKslekdbN5WPMp53dS/17j5e+oi5XVU= k8s.io/kubectl v0.17.2/go.mod h1:y4rfLV0n6aPmvbRCqZQjvOp3ezxsFgpqL+zF5jH/lxk= +k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= k8s.io/metrics v0.17.2/go.mod h1:3TkNHET4ROd+NfzNxkjoVfQ0Ob4iZnaHmSEA4vYpwLw= k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f h1:GiPwtSzdP43eI1hpPCbROQCCIgCuiMMNF8YUVLF3vJo= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20200912215256-4140de9c8800 h1:9ZNvfPvVIEsp/T1ez4GQuzCcCTEQWhovSofhqR73A6g= +k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= @@ -1663,17 +1968,27 @@ mvdan.cc/unparam v0.0.0-20210104141923-aac4ce9116a7/go.mod h1:hBpJkZE8H/sb+VRFvw 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.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9NPsg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9 h1:rusRLrDhjBp6aYtl9sGEvQJr6faoHoDLd0YcUBTZguI= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= +sigs.k8s.io/controller-runtime v0.7.0 h1:bU20IBBEPccWz5+zXpLnpVsgBYxqclaHu1pVDl/gEt8= +sigs.k8s.io/controller-runtime v0.7.0/go.mod h1:pJ3YBrJiAqMAZKi6UVGuE98ZrroV1p+pIhoHsMm9wdU= sigs.k8s.io/controller-tools v0.2.2/go.mod h1:8SNGuj163x/sMwydREj7ld5mIMJu1cDanIfnx6xsU70= +sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= +sigs.k8s.io/kustomize/kyaml v0.11.0 h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA= +sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= +sigs.k8s.io/structured-merge-diff v1.0.1 h1:LOs1LZWMsz1xs77Phr/pkB4LFaavH7IVq/3+WTN9XTA= sigs.k8s.io/structured-merge-diff v1.0.1/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= -sigs.k8s.io/testing_frameworks v0.1.2 h1:vK0+tvjF0BZ/RYFeZ1E6BYBwHJJXhjuZ3TdsEKH+UQM= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2 h1:YHQV7Dajm86OuqnIR6zAelnDWBRjo+YhYV9PmGrh1s8= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= From 34ea0afc6f65161479af36a101937567c6012ef3 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 29 Dec 2021 14:36:57 -0600 Subject: [PATCH 0012/1371] chore: fix CLI workflow jobname (#1039) --- .github/workflows/release-cli.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 7089a617a00..ed6bd647a6a 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -12,7 +12,7 @@ env: jobs: release-new-cli: - name: Build and push new CFT dev tools image + name: Release new CLI versions runs-on: ubuntu-latest permissions: From bf36e620a9e440c443de51491c8e1a55d1ba40b1 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 12 Jan 2022 15:59:47 -0600 Subject: [PATCH 0013/1371] feat: test cli run cmd (#1042) * feat: test cli run cmd * add tests * dedupe discovery from cwd, inline testArgsFromName --- cli/bptest/cmd.go | 35 +++++++++++- cli/bptest/list.go | 28 ++++++---- cli/bptest/run.go | 113 ++++++++++++++++++++++++++++++++++++++ cli/bptest/run_test.go | 103 ++++++++++++++++++++++++++++++++++ cli/bptest/stages.go | 31 +++++++++++ cli/bptest/stages_test.go | 56 +++++++++++++++++++ cli/cmd/root.go | 2 + cli/go.sum | 3 + 8 files changed, 358 insertions(+), 13 deletions(-) create mode 100644 cli/bptest/run.go create mode 100644 cli/bptest/run_test.go create mode 100644 cli/bptest/stages.go create mode 100644 cli/bptest/stages_test.go diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index 81f5317bdcc..e653a0a9362 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -7,14 +7,17 @@ import ( ) var flags struct { - testDir string + testDir string + testStage string } func init() { viper.AutomaticEnv() Cmd.AddCommand(listCmd) + Cmd.AddCommand(runCmd) - listCmd.Flags().StringVar(&flags.testDir, "test-dir", "", "Path to directory containing integration tests (default is computed by scanning current working directory)") + Cmd.PersistentFlags().StringVar(&flags.testDir, "test-dir", "", "Path to directory containing integration tests (default is computed by scanning current working directory)") + runCmd.Flags().StringVar(&flags.testStage, "stage", "", "Test stage to execute (default is running all stages in order - init, apply, verify, teardown)") } var Cmd = &cobra.Command{ @@ -51,3 +54,31 @@ var listCmd = &cobra.Command{ return nil }, } + +var runCmd = &cobra.Command{ + Use: "run", + Short: "run tests", + Long: "Runs auto discovered and explicit integration tests", + + Args: func(cmd *cobra.Command, args []string) error { + if err := cobra.ExactArgs(1)(cmd, args); err != nil { + return err + } + if err := isValidTestName(flags.testDir, args[0]); err != nil { + return err + } + return nil + }, + RunE: func(cmd *cobra.Command, args []string) error { + intTestDir := flags.testDir + testStage, err := validateAndGetStage(flags.testStage) + if err != nil { + return err + } + testCmd, err := getTestCmd(intTestDir, testStage, args[0]) + if err != nil { + return err + } + return streamExec(testCmd) + }, +} diff --git a/cli/bptest/list.go b/cli/bptest/list.go index ee51d552d0f..eee8a0fd667 100644 --- a/cli/bptest/list.go +++ b/cli/bptest/list.go @@ -26,17 +26,9 @@ type bpTest struct { // getTests returns slice of all blueprint tests func getTests(intTestDir string) ([]bpTest, error) { - // discover intTestDir if not provided - if intTestDir == "" { - cwd, err := os.Getwd() - if err != nil { - return nil, err - } - discoveredIntTestDir, err := discoverIntTestDir(cwd) - if err != nil { - return nil, err - } - intTestDir = discoveredIntTestDir + intTestDir, err := getIntTestDir(intTestDir) + if err != nil { + return nil, err } Log.Info(fmt.Sprintf("using test-dir: %s", intTestDir)) @@ -152,6 +144,20 @@ func discoverIntTestDir(cwd string) (string, error) { return ".", nil } +// getIntTestDir discovers the integration test directory +// from current working directory if an empty intTestDir is provided +func getIntTestDir(intTestDir string) (string, error) { + if intTestDir != "" { + return intTestDir, nil + } + // discover from current working directory + cwd, err := os.Getwd() + if err != nil { + return "", err + } + return discoverIntTestDir(cwd) +} + // findFiles returns a slice of file paths matching matchFn func findFiles(dir string, matchFn func(d fs.DirEntry) bool) []string { files := []string{} diff --git a/cli/bptest/run.go b/cli/bptest/run.go new file mode 100644 index 00000000000..9bda62e57d8 --- /dev/null +++ b/cli/bptest/run.go @@ -0,0 +1,113 @@ +package bptest + +import ( + "bufio" + "fmt" + "os" + "os/exec" + "regexp" + "sync" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" + "github.com/spf13/viper" +) + +const ( + allTests = "all" + testStageEnvVarKey = "RUN_STAGE" + gotestBin = "gotest" + goBin = "go" +) + +var allTestArgs = []string{"-p", "1", "-count", "1", "-timeout", "0"} + +// isValidTestName validates a given test or test regex is part of the blueprint test set +func isValidTestName(intTestDir string, name string) error { + // user wants to run all tests + if name == allTests { + return nil + } + + tests, err := getTests(intTestDir) + if err != nil { + return err + } + testNames := []string{} + for _, test := range tests { + matched, _ := regexp.Match(name, []byte(test.name)) + if test.name == name || matched { + return nil + } + testNames = append(testNames, test.name) + } + return fmt.Errorf("unable to find %s- one of %+q expected", name, append(testNames, allTests)) +} + +// streamExec runs a given cmd while streaming logs +func streamExec(cmd *exec.Cmd) error { + op, err := cmd.StdoutPipe() + if err != nil { + return err + } + cmd.Stderr = cmd.Stdout + Log.Debug(fmt.Sprintf("running %s with args %v in %s", cmd.Path, cmd.Args, cmd.Dir)) + + // waitgroup to block while processing exec op + var wg sync.WaitGroup + wg.Add(1) + defer wg.Wait() + go func() { + defer wg.Done() + scanner := bufio.NewScanner(op) + for scanner.Scan() { + fmt.Println(scanner.Text()) + } + if err := scanner.Err(); err != nil { + Log.Error(fmt.Sprintf("error reading output: %v", err)) + } + }() + + // run command + if err := cmd.Run(); err != nil { + return fmt.Errorf("error running command: %v", err) + } + return nil +} + +// getTestCmd returns a prepared cmd for running the specified tests(s) +func getTestCmd(intTestDir string, testStage string, testName string) (*exec.Cmd, error) { + intTestDir, err := getIntTestDir(intTestDir) + if err != nil { + return nil, err + } + + // pass all current env vars to test command + env := os.Environ() + // set test stage env var if specified + if testStage != "" { + env = append(env, fmt.Sprintf("%s=%s", testStageEnvVarKey, testStage)) + } + + // determine binary and args used for test execution + testArgs := append([]string{"./..."}, allTestArgs...) + if testName != allTests { + testArgs = append([]string{"./...", "-run", testName}, allTestArgs...) + } + cmdBin := goBin + if utils.BinaryInPath(gotestBin) != nil { + testArgs = append([]string{"test"}, testArgs...) + } else { + cmdBin = gotestBin + // CI=true enables color op for non tty exec output + env = append(env, "CI=true") + } + // verbose test output if global verbose flag is passed + if viper.GetBool("verbose") { + testArgs = append(testArgs, "-v") + } + // prepare cmd + cmd := exec.Command(cmdBin, testArgs...) + cmd.Env = env + cmd.Dir = intTestDir + return cmd, nil +} diff --git a/cli/bptest/run_test.go b/cli/bptest/run_test.go new file mode 100644 index 00000000000..d2c99b9f734 --- /dev/null +++ b/cli/bptest/run_test.go @@ -0,0 +1,103 @@ +package bptest + +import ( + "fmt" + "path" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIsValidTestName(t *testing.T) { + tests := []struct { + name string + intTestDir string + testName string + errMsg string + }{ + { + name: "valid explicit", + testName: "TestBar", + }, + { + name: "valid discovered", + testName: "TestAll/examples/baz", + }, + { + name: "valid all regex", + testName: "Test.*", + }, + { + name: "all", + testName: "all", + }, + { + name: "invalid", + testName: "TestBaz", + errMsg: "unable to find TestBaz- one of [\"TestAll/examples/baz\" \"TestAll/fixtures/qux\" \"TestBar\" \"TestFoo\" \"all\"]", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + if tt.intTestDir == "" { + tt.intTestDir = path.Join(testDirWithDiscovery, intTestDir) + } + err := isValidTestName(tt.intTestDir, tt.testName) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + } + }) + } +} + +func TestGetTestCmd(t *testing.T) { + + tests := []struct { + name string + intTestDir string + testStage string + testName string + wantArgs []string + errMsg string + }{ + { + name: "single test", + testName: "TestFoo", + wantArgs: []string{"./...", "-run", "TestFoo", "-p", "1", "-count", "1", "-timeout", "0"}, + }, + { + name: "all tests", + testName: "all", + wantArgs: []string{"./...", "-p", "1", "-count", "1", "-timeout", "0"}, + }, + { + name: "custom stage", + testName: "TestFoo", + testStage: "init", + wantArgs: []string{"./...", "-run", "TestFoo", "-p", "1", "-count", "1", "-timeout", "0"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + if tt.intTestDir == "" { + tt.intTestDir = path.Join(testDirWithDiscovery, intTestDir) + } + gotCmd, err := getTestCmd(tt.intTestDir, tt.testStage, tt.testName) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.Subset(gotCmd.Args, tt.wantArgs) + if tt.testStage != "" { + assert.Contains(gotCmd.Env, fmt.Sprintf("RUN_STAGE=%s", tt.testStage)) + } + } + }) + } +} diff --git a/cli/bptest/stages.go b/cli/bptest/stages.go new file mode 100644 index 00000000000..7301f5c02f3 --- /dev/null +++ b/cli/bptest/stages.go @@ -0,0 +1,31 @@ +package bptest + +import "fmt" + +var stages = []string{"init", "apply", "verify", "teardown"} + +var stagesWithAlias = map[string][]string{ + stages[0]: {"create"}, + stages[1]: {"converge"}, + stages[2]: {}, + stages[3]: {"destroy"}, +} + +// validateAndGetStage validates given stage and resolves to stage name if an alias is provided +func validateAndGetStage(s string) (string, error) { + // empty stage is a special case for running all stages + if s == "" { + return "", nil + } + for stageName, aliases := range stagesWithAlias { + if stageName == s { + return stageName, nil + } + for _, alias := range aliases { + if alias == s { + return stageName, nil + } + } + } + return "", fmt.Errorf("invalid stage name %s - one of %+q expected", s, stages) +} diff --git a/cli/bptest/stages_test.go b/cli/bptest/stages_test.go new file mode 100644 index 00000000000..ab55b8871c1 --- /dev/null +++ b/cli/bptest/stages_test.go @@ -0,0 +1,56 @@ +package bptest + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestValidateAndGetStage(t *testing.T) { + + tests := []struct { + name string + stage string + want string + errMsg string + }{ + { + name: "valid name", + stage: "init", + want: "init", + }, + { + name: "alias name", + stage: "create", + want: "init", + }, + { + name: "valid name no alias", + stage: "verify", + want: "verify", + }, + { + name: "invalid name", + stage: "foo", + errMsg: "invalid stage name foo - one of [\"init\" \"apply\" \"verify\" \"teardown\"] expected", + }, + { + name: "empty (all stages)", + stage: "", + want: "", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + got, err := validateAndGetStage(tt.stage) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.Equal(tt.want, got) + } + }) + } +} diff --git a/cli/cmd/root.go b/cli/cmd/root.go index f6ca8c1c575..6e3c1611c33 100644 --- a/cli/cmd/root.go +++ b/cli/cmd/root.go @@ -8,6 +8,7 @@ import ( "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/scorecard" log "github.com/inconshreveable/log15" "github.com/spf13/cobra" + "github.com/spf13/viper" ) // rootCmd represents the base command when called without any subcommands @@ -68,6 +69,7 @@ Use "{{.CommandPath}} [command] --help" for more information about a command.{{e } rootCmd.PersistentFlags().BoolVar(&flags.verbose, "verbose", false, "Log output to stdout") + viper.BindPFlag("verbose", rootCmd.PersistentFlags().Lookup("verbose")) rootCmd.AddCommand(scorecard.Cmd) rootCmd.AddCommand(report.Cmd) diff --git a/cli/go.sum b/cli/go.sum index dc53e6ab03d..4d86a492348 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -654,6 +654,7 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.8.0/go.mod h1:gtp0yTtIBExIZp7vyIV9I0XQkVwiQZze678hvDXof78= +github.com/gruntwork-io/terratest v0.35.6 h1:Q7pUd3JI4i5mmR/KgYkZJJ4q9ZbV8ru9KydwjA/ohaA= github.com/gruntwork-io/terratest v0.35.6/go.mod h1:GIVJGBV1WIv1vxIG31Ycy0CuHYfXuvvkilNQuC9Wi+o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= @@ -1150,7 +1151,9 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= github.com/tetafro/godot v1.4.6/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= +github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= From 6006315b652f6849ff96bd18235df20b0dd1f5a5 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 12 Jan 2022 16:01:41 -0600 Subject: [PATCH 0014/1371] Update tools to 1.2.7 - Terraform 1.1.3 & gCloud is latest (#1041) Co-authored-by: Bharath KKB --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index b6674b7a3c8..21c36a6c2ec 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,7 +13,7 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.2 +TERRAFORM_VERSION := 1.1.3 TERRAFORM_VALIDATOR_VERSION := 0.9.1 CLOUD_SDK_VERSION := 367.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -29,7 +29,7 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 2419882765dc5d6ec0f700882be4fa3e9bc5c0fd Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 13 Jan 2022 13:00:41 -0600 Subject: [PATCH 0015/1371] feat: bump kpt, docker client in devtools (#1044) --- infra/build/Makefile | 6 +++--- infra/build/developer-tools-krm/Dockerfile | 2 +- infra/build/developer-tools/Dockerfile | 2 +- infra/build/developer-tools/build/install_dependencies.sh | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 21c36a6c2ec..f41d69166e0 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -18,7 +18,7 @@ TERRAFORM_VALIDATOR_VERSION := 0.9.1 CLOUD_SDK_VERSION := 367.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 -RUBY_VERSION := 2.6.3 +RUBY_VERSION := 2.6.9 BATS_VERSION := 0.4.0 GOLANG_VERSION := 1.16 BATS_SUPPORT_VERSION := 0.3.0 @@ -27,9 +27,9 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.4 +KPT_VERSION := 1.0.0-beta.10 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.2.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index 194071202d4..f6a9b466cbf 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -15,7 +15,7 @@ ARG BASE_IMAGE_VERSION FROM cft/developer-tools:$BASE_IMAGE_VERSION -RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current nodejs-npm +RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm # Additional go tooling RUN GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.40.1 diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index be78af2ed14..697cef93c25 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -29,7 +29,7 @@ RUN go build -v -o /usr/local/bin/module-swapper FROM golang:$GOLANG_VERSION-alpine AS go -FROM ruby:$RUBY_VERSION-alpine +FROM ruby:$RUBY_VERSION-alpine3.15 # Required to download and install terraform-docs ARG TERRAFORM_DOCS_VERSION diff --git a/infra/build/developer-tools/build/install_dependencies.sh b/infra/build/developer-tools/build/install_dependencies.sh index e04b387b6c2..a0813e080fe 100755 --- a/infra/build/developer-tools/build/install_dependencies.sh +++ b/infra/build/developer-tools/build/install_dependencies.sh @@ -50,7 +50,7 @@ apk add --no-cache openssh apk add --no-cache perl # python 2 is needed for compatibility and linting -apk add --no-cache python +apk add --no-cache python2 # python 3 is needed for python linting apk add --no-cache python3 From f308477690ac32d0d1ed28dd04aafd9c94c77e14 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 13 Jan 2022 13:13:38 -0600 Subject: [PATCH 0016/1371] feat: comment bot delete recreate and mention authors (#1040) * feat: comment bot delete recreate and mention authors * bump img version --- infra/build/Makefile | 2 +- .../build/scripts/gh_lint_comment.py | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f41d69166e0..89c6ca53740 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -29,7 +29,7 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.10 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/gh_lint_comment.py b/infra/build/developer-tools/build/scripts/gh_lint_comment.py index f743414c6b9..70cec228df9 100644 --- a/infra/build/developer-tools/build/scripts/gh_lint_comment.py +++ b/infra/build/developer-tools/build/scripts/gh_lint_comment.py @@ -27,14 +27,17 @@ def create_update_comment(token, org, repo_name, pr_number, comment_body): pr_comment for pr_comment in pr_comments if pr_comment.user.id == current_bot_user ] - if not existing_comments: - # add a comment - comment = pr.create_issue_comment(comment_body) - logging.info(f'Added new comment: {comment}') - else: - # edit existing comment - existing_comments[0].edit(comment_body) - logging.info(f'Edited existing comment: {existing_comments[0]}') + # delete comments created previously by bot + for existing_comment in existing_comments: + existing_comment.delete() + logging.info(f'Deleted existing comment: {existing_comment}') + + # prefix comment body with PR author handle + comment_body = f"@{pr.user.login}\n{comment_body}" + + # create new comment + comment = pr.create_issue_comment(comment_body) + logging.info(f'Added new comment: {comment}') def parse_args(): parser = argparse.ArgumentParser(description='Add/edit comments to PRs') From d14cbadbf653361707b324555778dac43e9ca54d Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 14 Jan 2022 09:32:32 -0600 Subject: [PATCH 0017/1371] Update tools to 1.3.2 - Terraform is latest & gCloud 368.0.0 (#1046) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 89c6ca53740..eb3742221f8 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.3 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 367.0.0 +CLOUD_SDK_VERSION := 368.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -29,7 +29,7 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.10 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 474df7b5b7c32e1b9feb8fc64661027a5081ba29 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 14 Jan 2022 13:38:00 -0600 Subject: [PATCH 0018/1371] feat: bundle CFT CLI with devtools (#1047) * feat: bundle CFT CLI with devtools * bump img version --- infra/build/Makefile | 4 +++- infra/build/developer-tools/Dockerfile | 10 +++++++- .../developer-tools/build/install_cft_cli.sh | 24 +++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100755 infra/build/developer-tools/build/install_cft_cli.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index eb3742221f8..737501e64e4 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -28,8 +28,9 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.10 +CFT_CLI_VERSION := 0.4.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -57,6 +58,7 @@ build-image-developer-tools: --build-arg TERRAGRUNT_VERSION=${TERRAGRUNT_VERSION} \ --build-arg KUSTOMIZE_VERSION=${KUSTOMIZE_VERSION} \ --build-arg KPT_VERSION=${KPT_VERSION} \ + --build-arg CFT_CLI_VERSION=${CFT_CLI_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools" docker build \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 697cef93c25..8119ba34f2e 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -75,6 +75,10 @@ ENV KUSTOMIZE_VERSION ${KUSTOMIZE_VERSION} ARG KPT_VERSION ENV KPT_VERSION ${KPT_VERSION} +# Required to download and install CFT CLI +ARG CFT_CLI_VERSION +ENV CFT_CLI_VERSION ${CFT_CLI_VERSION} + # $WORKSPACE is intended for assets that persist across multiple build steps in a pipeline. # It's also where the project git repository is located. # https://cloud.google.com/cloud-build/docs/build-config @@ -140,6 +144,9 @@ RUN ./build/install_kpt.sh ${KPT_VERSION} ADD ./build/install_addlicense.sh /build/ RUN /build/install_addlicense.sh +ADD ./build/install_cft_cli.sh /build/ +RUN /build/install_cft_cli.sh ${CFT_CLI_VERSION} + WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . @@ -191,7 +198,8 @@ RUN terraform --version && \ kubectl version --client=true && \ terragrunt -version && \ kustomize version && \ - addlicense -help + addlicense -help && \ + cft version # Cleanup intermediate build artifacts RUN rm -rf /build diff --git a/infra/build/developer-tools/build/install_cft_cli.sh b/infra/build/developer-tools/build/install_cft_cli.sh new file mode 100755 index 00000000000..4f0e605652e --- /dev/null +++ b/infra/build/developer-tools/build/install_cft_cli.sh @@ -0,0 +1,24 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +CFT_CLI_VERSION=$1 + +cd /build + +wget "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/v${CFT_CLI_VERSION}/cft-linux-amd64" +install -o 0 -g 0 -m 0755 cft-linux-amd64 /usr/local/bin/cft From aad485be69c0b71031e34781aec665b8adc0b1e2 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 19 Jan 2022 20:26:44 -0600 Subject: [PATCH 0019/1371] Update tools to 1.3.4 - Terraform 1.1.4 & gCloud 369.0.0 (#1050) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 737501e64e4..e9bb697b80b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.3 +TERRAFORM_VERSION := 1.1.4 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 368.0.0 +CLOUD_SDK_VERSION := 369.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -30,7 +30,7 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.10 CFT_CLI_VERSION := 0.4.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 0573029a7c8d7aaad072e2feccfef7645579ce64 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 20 Jan 2022 12:57:50 -0600 Subject: [PATCH 0020/1371] chore: release CFT CLI version v0.4.2 (#1049) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index d319e2f2cd5..156a93278b7 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.4.1 +VERSION=v0.4.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From 829a1910a2f2407f4989593ac5cff07f963fe7cc Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 20 Jan 2022 15:30:58 -0600 Subject: [PATCH 0021/1371] chore: use correct version of go for CLI release (#1051) --- .github/workflows/release-cli.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index ed6bd647a6a..cc9fbbc3adf 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,6 +21,9 @@ jobs: steps: - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '~1.16' - id: 'auth' name: 'Authenticate to Google Cloud' From 335725556f08fbcba67454635126b5fa1fc36f15 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 21 Jan 2022 15:46:45 -0600 Subject: [PATCH 0022/1371] chore: refactor tooling update workflow (#1048) * chore: refactor tooling update workflow * fix GHA multiline envvar * Update .github/workflows/update-tooling.yml Co-authored-by: Morgante Pell * switch to using env Co-authored-by: Morgante Pell --- .github/workflows/update-tooling.yml | 81 ++++++++++++++++------------ 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index bd41cfe492c..6ab9eee6b51 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -2,65 +2,80 @@ name: Update Tooling on: schedule: - cron: "0 2 * * *" + env: - TF_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" - GCLOUD_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" + TERRAFORM_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" + CLOUD_SDK_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" + KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases/latest" + CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases/latest" jobs: update-tools: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Update Terraform Version + - name: Update Tools run: | - CURRENT_TERRAFORM=$(cat infra/build/Makefile | grep 'TERRAFORM_VERSION :=' | awk -F" " '{print $3}') - LATEST_TERRAFORM=$(curl -s ${{env.TF_URL}} | jq --raw-output .tag_name | tr -d "v") + PR_UPDATE_BODY="" + newline=$'\n' + tools=("TERRAFORM" "CLOUD_SDK" "KPT" "CFT_CLI") - if [ "$CURRENT_TERRAFORM" == "$LATEST_TERRAFORM" ]; then - echo "Terraform is latest" - echo "LATEST_TERRAFORM=is latest" >> $GITHUB_ENV - else - echo "Terraform needs to be updated to ${LATEST_TERRAFORM}" - sed -i "s/TERRAFORM_VERSION := ${CURRENT_TERRAFORM}/TERRAFORM_VERSION := ${LATEST_TERRAFORM}/g" infra/build/Makefile - echo "LATEST_TERRAFORM=${LATEST_TERRAFORM}" >> $GITHUB_ENV - fi - - name: Update gCloud SDK Version - run: | - CURRENT_GCLOUD=$(cat infra/build/Makefile | grep 'CLOUD_SDK_VERSION :=' | awk -F" " '{print $3}') - LATEST_GCLOUD=$(curl -s ${{env.GCLOUD_URL}} | tar --to-stdout -xzf - google-cloud-sdk/VERSION) + for tool in ${tools[@]} + do + # get current tool version from Makefile + CURRENT_TOOL_VERSION=$(cat infra/build/Makefile | grep "${tool}_VERSION :=" | awk -F" " '{print $3}') + TOOL_URL=$tool\_URL + + # get latest tool version from URL + if [ "$tool" == "CLOUD_SDK" ]; then + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | tar --to-stdout -xzf - google-cloud-sdk/VERSION) + else + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .tag_name | tr -d "v") + fi + echo "Current ${tool} version: ${CURRENT_TOOL_VERSION}" + echo "Latest ${tool} version: ${LATEST_TOOL_VERSION} via ${!TOOL_URL}" + + # update tool version in Makefile if not latest + if [ "$CURRENT_TOOL_VERSION" == "$LATEST_TOOL_VERSION" ]; then + echo "${tool} is latest" + else + echo "${tool} needs to be updated to ${LATEST_TOOL_VERSION}" + sed -i "s/${tool}_VERSION := ${CURRENT_TOOL_VERSION}/${tool}_VERSION := ${LATEST_TOOL_VERSION}/g" infra/build/Makefile + echo "LATEST_${tool}=${LATEST_TOOL_VERSION}" >> $GITHUB_ENV + echo "BUMP_IMG=true" >> $GITHUB_ENV + PR_UPDATE_BODY="$PR_UPDATE_BODY Updating ${tool} from ${CURRENT_TOOL_VERSION} to ${LATEST_TOOL_VERSION} ${newline}" + fi + done - if [ "$CURRENT_GCLOUD" == "$LATEST_GCLOUD" ]; then - echo "gcloud sdk is latest" - echo "LATEST_GCLOUD=is latest" >> $GITHUB_ENV - else - echo "gcloud sdk needs to be updated to ${LATEST_GCLOUD}" - sed -i "s/CLOUD_SDK_VERSION := ${CURRENT_GCLOUD}/CLOUD_SDK_VERSION := ${LATEST_GCLOUD}/g" infra/build/Makefile - echo "LATEST_GCLOUD=${LATEST_GCLOUD}" >> $GITHUB_ENV - fi + # Create multiline PR body text + echo "PR_UPDATE_BODY<> $GITHUB_ENV + echo "$PR_UPDATE_BODY" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV - name: Bump image patch version - if: env.LATEST_TERRAFORM != 'is latest' || env.LATEST_GCLOUD != 'is latest' + if: env.BUMP_IMG == 'true' run: | CURRENT_IMG_VERSION=$(cat infra/build/Makefile | grep 'DOCKER_TAG_VERSION_DEVELOPER_TOOLS :=' | awk -F" " '{print $3}') NEW_IMG_VERSION=$(echo $CURRENT_IMG_VERSION | awk -F. '{$NF+=1; print $0}' OFS=".") sed -i "s/DOCKER_TAG_VERSION_DEVELOPER_TOOLS := ${CURRENT_IMG_VERSION}/DOCKER_TAG_VERSION_DEVELOPER_TOOLS := ${NEW_IMG_VERSION}/g" infra/build/Makefile echo "NEW_IMG_VERSION=${NEW_IMG_VERSION}" >> $GITHUB_ENV - name: Commit Makefile - if: env.LATEST_TERRAFORM != 'is latest' || env.LATEST_GCLOUD != 'is latest' + if: env.BUMP_IMG == 'true' run: | git config user.name 'Cloud Foundation Bot' git config user.email 'cloud-foundation-bot@google.com' git add infra/build/Makefile - git diff-index --quiet HEAD || git commit -m "Update tools to ${{env.NEW_IMG_VERSION}} - Terraform ${{env.LATEST_TERRAFORM}} & gCloud ${{env.LATEST_GCLOUD}}" + git diff-index --quiet HEAD || git commit -m "Update tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request - if: env.LATEST_TERRAFORM != 'is latest' || env.LATEST_GCLOUD != 'is latest' - uses: peter-evans/create-pull-request@v2 + if: env.BUMP_IMG == 'true' + uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a with: token: ${{ secrets.CFT_ROBOT_PAT }} - commit-message: Update tools to ${{env.NEW_IMG_VERSION}} - Terraform ${{env.LATEST_TERRAFORM}} & gCloud ${{env.LATEST_GCLOUD}} + commit-message: Update tools to ${{env.NEW_IMG_VERSION}} committer: "Update Tooling Action " - title: "Update Tools to ${{env.NEW_IMG_VERSION}} - Terraform ${{env.LATEST_TERRAFORM}} & gCloud ${{env.LATEST_GCLOUD}}" + title: "Update Tools to ${{env.NEW_IMG_VERSION}}" body: | - Updated tools to ${{env.NEW_IMG_VERSION}} Terraform ${{env.LATEST_TERRAFORM}} & gCloud ${{env.LATEST_GCLOUD}} + Updated tools to ${{env.NEW_IMG_VERSION}} + ${{env.PR_UPDATE_BODY}} labels: automated pr assignees: bharathkkb,morgante reviewers: morgante From 0f51f3392a834068e752ac4ff90608304eee40d5 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 21 Jan 2022 21:05:21 -0600 Subject: [PATCH 0023/1371] Update tools to 1.3.5 (#1054) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index e9bb697b80b..03dd0ef4d7e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -27,10 +27,10 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.10 -CFT_CLI_VERSION := 0.4.1 +KPT_VERSION := 1.0.0-beta.12 +CFT_CLI_VERSION := 0.4.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 72d093fcc379d5801577bff81936a0901d511996 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 25 Jan 2022 23:50:54 -0600 Subject: [PATCH 0024/1371] Update tools to 1.3.6 (#1056) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 03dd0ef4d7e..b527e315c3f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.4 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 369.0.0 +CLOUD_SDK_VERSION := 370.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -30,7 +30,7 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.12 CFT_CLI_VERSION := 0.4.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 81bcf1acbf8d74684e2670476ef1dedee1ceedf6 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 31 Jan 2022 19:36:54 -0600 Subject: [PATCH 0025/1371] chore: support kpt pre releases in devtools (#1057) --- .github/workflows/update-tooling.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 6ab9eee6b51..b70625c7bc6 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -6,7 +6,7 @@ on: env: TERRAFORM_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" CLOUD_SDK_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" - KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases/latest" + KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases" CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases/latest" jobs: @@ -29,6 +29,9 @@ jobs: # get latest tool version from URL if [ "$tool" == "CLOUD_SDK" ]; then LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | tar --to-stdout -xzf - google-cloud-sdk/VERSION) + elif [ "$tool" == "KPT" ]; then + # get latest release including pre-releases for kpt + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .[0].tag_name | tr -d "v") else LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .tag_name | tr -d "v") fi From d603d59da1a60151fabb5ffde9d7f24857012c2f Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 31 Jan 2022 19:53:26 -0600 Subject: [PATCH 0026/1371] chore: allow running workflow through UI (#1058) --- .github/workflows/update-tooling.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index b70625c7bc6..d5115172e35 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -2,6 +2,7 @@ name: Update Tooling on: schedule: - cron: "0 2 * * *" + workflow_dispatch: env: TERRAFORM_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" From 6653d25e85abc1f1ead71c2111c7f4257608d5dc Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 31 Jan 2022 19:55:49 -0600 Subject: [PATCH 0027/1371] Update tools to 1.3.7 (#1059) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index b527e315c3f..ee021842f14 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -27,10 +27,10 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.12 +KPT_VERSION := 1.0.0-beta.13 CFT_CLI_VERSION := 0.4.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From c4eb7aecf469aeb3800bab2f344596f7825e9795 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 2 Feb 2022 02:37:33 -0600 Subject: [PATCH 0028/1371] fix: skip printing help text for test failures (#1053) --- cli/bptest/cmd.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index e653a0a9362..7eee6a66914 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -1,6 +1,8 @@ package bptest import ( + "os" + "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -79,6 +81,12 @@ var runCmd = &cobra.Command{ if err != nil { return err } - return streamExec(testCmd) + // if err during exec, exit instead of returning an error + // this prevents printing usage as the args were validated above + if err := streamExec(testCmd); err != nil { + Log.Error(err.Error()) + os.Exit(1) + } + return nil }, } From 08c972c3768cae717df3f33a43785bf21b183a13 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 3 Feb 2022 12:37:01 -0600 Subject: [PATCH 0029/1371] feat(tft): activate creds from setup (#1062) * feat(tft): activate creds from setup * add test * int test * typo --- infra/blueprint-test/pkg/gcloud/gcloud.go | 26 +++++++++ .../blueprint-test/pkg/gcloud/gcloud_test.go | 58 +++++++++++++++++++ infra/blueprint-test/pkg/tft/terraform.go | 16 ++++- infra/blueprint-test/pkg/utils/files.go | 19 ++++++ .../test/setup/simple_tf_module/main.tf | 28 +++++++++ .../test/setup/simple_tf_module/outputs.tf | 5 ++ 6 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 infra/blueprint-test/pkg/gcloud/gcloud_test.go create mode 100644 infra/blueprint-test/pkg/utils/files.go diff --git a/infra/blueprint-test/pkg/gcloud/gcloud.go b/infra/blueprint-test/pkg/gcloud/gcloud.go index 8d5803b8208..4d0eefc6b1f 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud.go @@ -18,6 +18,7 @@ package gcloud import ( + "os" "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" @@ -105,3 +106,28 @@ func Run(t testing.TB, cmd string, opts ...cmdOption) gjson.Result { } return gjson.Parse(op) } + +// ActivateCredsAndEnvVars activates credentials and exports auth related envvars. +func ActivateCredsAndEnvVars(t testing.TB, creds string) { + credsPath, err := utils.WriteTmpFile(creds) + if err != nil { + t.Fatal(err) + } + RunCmd(t, "auth activate-service-account", WithCommonArgs([]string{"--key-file", credsPath})) + // set auth related env vars + // TF provider auth + err = os.Setenv("GOOGLE_CREDENTIALS", creds) + if err != nil { + t.Fatal(err) + } + // gcloud SDK override + err = os.Setenv("CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE", credsPath) + if err != nil { + t.Fatal(err) + } + // ADC + err = os.Setenv("GOOGLE_APPLICATION_CREDENTIALS", credsPath) + if err != nil { + t.Fatal(err) + } +} diff --git a/infra/blueprint-test/pkg/gcloud/gcloud_test.go b/infra/blueprint-test/pkg/gcloud/gcloud_test.go new file mode 100644 index 00000000000..0c8d2a39d9d --- /dev/null +++ b/infra/blueprint-test/pkg/gcloud/gcloud_test.go @@ -0,0 +1,58 @@ +/** + * Copyright 2022 Google LLC + * + * 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 gcloud provides a set of helpers to interact with gcloud(Cloud SDK) binary +package gcloud + +import ( + "io/ioutil" + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestActivateCredsAndEnvVars(t *testing.T) { + tests := []struct { + name string + keyEnvVar string + user string + }{ + { + name: "with sa key", + keyEnvVar: "TEST_KEY", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + creds, present := os.LookupEnv(tt.keyEnvVar) + if !present { + t.Logf("Skipping test, %s envvar not set", tt.keyEnvVar) + t.Skip() + } + ActivateCredsAndEnvVars(t, creds) + assert := assert.New(t) + assert.Equal(os.Getenv("GOOGLE_CREDENTIALS"), creds) + pathEnvVars := []string{"CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE", "GOOGLE_APPLICATION_CREDENTIALS"} + for _, v := range pathEnvVars { + c, err := ioutil.ReadFile(os.Getenv(v)) + assert.NoError(err) + assert.Equal(string(c), creds) + } + + }) + } +} diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 147753fdaca..25329e592d1 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -18,14 +18,15 @@ package tft import ( + b64 "encoding/base64" "fmt" "os" "path" "strings" - gotest "testing" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/discovery" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" "github.com/gruntwork-io/terratest/modules/logger" "github.com/gruntwork-io/terratest/modules/terraform" @@ -33,6 +34,8 @@ import ( "github.com/stretchr/testify/assert" ) +const setupKeyOutputName = "sa_key" + // TFBlueprintTest implements bpt.Blueprint and stores information associated with a Terraform blueprint test. type TFBlueprintTest struct { discovery.BlueprintTestConfig // additional blueprint test configs @@ -154,6 +157,17 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { if tft.setupDir != "" { tft.logger.Logf(tft.t, "Loading env vars from setup %s", tft.setupDir) loadTFEnvVar(tft.tfEnvVars, tft.getTFOutputsAsInputs(terraform.OutputAll(tft.t, &terraform.Options{TerraformDir: tft.setupDir, Logger: tft.logger}))) + // setup credentials if explicit sa_key output from setup + credsEnc, exists := tft.tfEnvVars[fmt.Sprintf("TF_VAR_%s", setupKeyOutputName)] + if !exists { + tft.logger.Logf(tft.t, "Unable to find %s output from setup, skipping credential activation", setupKeyOutputName) + } else { + credDec, err := b64.StdEncoding.DecodeString(credsEnc) + if err != nil { + t.Fatalf("Unable to decode %s output from setup: %v", setupKeyOutputName, err) + } + gcloud.ActivateCredsAndEnvVars(tft.t, string(credDec)) + } } tft.logger.Logf(tft.t, "Running tests TF configs in %s", tft.tfDir) diff --git a/infra/blueprint-test/pkg/utils/files.go b/infra/blueprint-test/pkg/utils/files.go new file mode 100644 index 00000000000..8a05c8706d1 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/files.go @@ -0,0 +1,19 @@ +package utils + +import ( + "io/ioutil" +) + +// WriteTmpFile writes data to a temp file and returns the path. +func WriteTmpFile(data string) (string, error) { + f, err := ioutil.TempFile("", "*") + if err != nil { + return "", err + } + _, err = f.Write([]byte(data)) + if err != nil { + return "", err + } + f.Close() + return f.Name(), nil +} diff --git a/infra/blueprint-test/test/setup/simple_tf_module/main.tf b/infra/blueprint-test/test/setup/simple_tf_module/main.tf index 1acbc32327a..950021134fa 100644 --- a/infra/blueprint-test/test/setup/simple_tf_module/main.tf +++ b/infra/blueprint-test/test/setup/simple_tf_module/main.tf @@ -14,6 +14,16 @@ * limitations under the License. */ +locals { + int_required_roles = [ + "roles/compute.networkAdmin", + "roles/compute.securityAdmin", + "roles/iam.serviceAccountUser", + "roles/vpcaccess.admin", + "roles/serviceusage.serviceUsageAdmin" + ] +} + module "project" { source = "terraform-google-modules/project-factory/google" version = "~> 11.0" @@ -31,3 +41,21 @@ module "project" { "vpcaccess.googleapis.com" ] } + +resource "google_service_account" "sa" { + project = module.project.project_id + account_id = "ci-account" + display_name = "ci-account" +} + +resource "google_project_iam_member" "roles" { + for_each = toset(local.int_required_roles) + + project = module.project.project_id + role = each.value + member = "serviceAccount:${google_service_account.sa.email}" +} + +resource "google_service_account_key" "key" { + service_account_id = google_service_account.sa.id +} diff --git a/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf b/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf index e6bc3968cc1..718ce253e3e 100644 --- a/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf +++ b/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf @@ -17,3 +17,8 @@ output "project_id" { value = module.project.project_id } + +output "sa_key" { + value = google_service_account_key.key.private_key + sensitive = true +} From fa02a5b281da19e9f9d5bf39c82e4a0a3f4fc0fa Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 3 Feb 2022 21:11:51 -0600 Subject: [PATCH 0030/1371] Update tools to 1.3.8 (#1061) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index ee021842f14..790078f8fa8 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.4 +TERRAFORM_VERSION := 1.1.5 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 370.0.0 +CLOUD_SDK_VERSION := 371.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -30,7 +30,7 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.13 CFT_CLI_VERSION := 0.4.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 068713996f3641114bf1fed1937d4cec09ddc3f5 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 4 Feb 2022 00:20:18 -0600 Subject: [PATCH 0031/1371] fix: mark tests as skipped due to test config (#1063) --- infra/blueprint-test/pkg/krmt/krm.go | 1 + infra/blueprint-test/pkg/tft/terraform.go | 1 + 2 files changed, 2 insertions(+) diff --git a/infra/blueprint-test/pkg/krmt/krm.go b/infra/blueprint-test/pkg/krmt/krm.go index 84ae36d39de..5535754e85b 100644 --- a/infra/blueprint-test/pkg/krmt/krm.go +++ b/infra/blueprint-test/pkg/krmt/krm.go @@ -342,6 +342,7 @@ func (b *KRMBlueprintTest) Teardown(assert *assert.Assertions) { func (b *KRMBlueprintTest) Test() { if b.ShouldSkip() { b.logger.Logf(b.t, "Skipping test due to config %s", b.Path) + b.t.SkipNow() return } a := assert.New(b.t) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 25329e592d1..1d29f11f654 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -327,6 +327,7 @@ func (b *TFBlueprintTest) Teardown(assert *assert.Assertions) { func (b *TFBlueprintTest) Test() { if b.ShouldSkip() { b.logger.Logf(b.t, "Skipping test due to config %s", b.Path) + b.t.SkipNow() return } a := assert.New(b.t) From 7c9f83caf2fe77b69dd4af8bef6c3496b14d3af2 Mon Sep 17 00:00:00 2001 From: Diego Lima Date: Mon, 7 Feb 2022 16:43:54 -0300 Subject: [PATCH 0032/1371] feat(cli): Allow customization of setup sa key (#1065) * feat: customize setup sa key * refactor: minor improvements * refactor: default sa key decoded * refactor: delete func loadsetupsa --- .../blueprint-test/pkg/discovery/discover.go | 2 +- infra/blueprint-test/pkg/gcloud/gcloud.go | 16 ++-------- infra/blueprint-test/pkg/tft/terraform.go | 29 ++++++++++++------- infra/blueprint-test/pkg/utils/env.go | 8 +++++ infra/blueprint-test/pkg/utils/files.go | 2 +- 5 files changed, 32 insertions(+), 25 deletions(-) diff --git a/infra/blueprint-test/pkg/discovery/discover.go b/infra/blueprint-test/pkg/discovery/discover.go index 3989f301912..a414eb3fba9 100644 --- a/infra/blueprint-test/pkg/discovery/discover.go +++ b/infra/blueprint-test/pkg/discovery/discover.go @@ -105,7 +105,7 @@ func GetKnownDirInParents(dir string, max int) (string, error) { if !os.IsNotExist(err) { return dirInParent, err } - return GetKnownDirInParents(path.Join("..", dir), max-1) + return GetKnownDirInParents(dirInParent, max-1) } // findDirs returns a map of directories in path diff --git a/infra/blueprint-test/pkg/gcloud/gcloud.go b/infra/blueprint-test/pkg/gcloud/gcloud.go index 4d0eefc6b1f..d580ab46c6a 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud.go @@ -18,7 +18,6 @@ package gcloud import ( - "os" "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" @@ -116,18 +115,9 @@ func ActivateCredsAndEnvVars(t testing.TB, creds string) { RunCmd(t, "auth activate-service-account", WithCommonArgs([]string{"--key-file", credsPath})) // set auth related env vars // TF provider auth - err = os.Setenv("GOOGLE_CREDENTIALS", creds) - if err != nil { - t.Fatal(err) - } + utils.SetEnv(t, "GOOGLE_CREDENTIALS", creds) // gcloud SDK override - err = os.Setenv("CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE", credsPath) - if err != nil { - t.Fatal(err) - } + utils.SetEnv(t, "CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE", credsPath) // ADC - err = os.Setenv("GOOGLE_APPLICATION_CREDENTIALS", credsPath) - if err != nil { - t.Fatal(err) - } + utils.SetEnv(t, "GOOGLE_APPLICATION_CREDENTIALS", credsPath) } diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 1d29f11f654..6c4359de1c8 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -40,6 +40,7 @@ const setupKeyOutputName = "sa_key" type TFBlueprintTest struct { discovery.BlueprintTestConfig // additional blueprint test configs name string // descriptive name for the test + saKey string // optional setup sa key tfDir string // directory containing Terraform configs tfEnvVars map[string]string // variables to pass to Terraform as environment variables prefixed with TF_VAR_ setupDir string // optional directory containing applied TF configs to import outputs as variables for the test @@ -60,6 +61,12 @@ func WithName(name string) tftOption { } } +func WithSetupSaKey(saKey string) tftOption { + return func(f *TFBlueprintTest) { + f.saKey = saKey + } +} + func WithFixtureName(fixtureName string) tftOption { return func(f *TFBlueprintTest) { // when a test is invoked for an explicit blueprint fixture @@ -153,20 +160,22 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { tft.setupDir = setupDir } } - //load TFEnvVars from setup outputs + // load setup sa Key + if tft.saKey != "" { + gcloud.ActivateCredsAndEnvVars(tft.t, tft.saKey) + } + // load TFEnvVars from setup outputs if tft.setupDir != "" { tft.logger.Logf(tft.t, "Loading env vars from setup %s", tft.setupDir) loadTFEnvVar(tft.tfEnvVars, tft.getTFOutputsAsInputs(terraform.OutputAll(tft.t, &terraform.Options{TerraformDir: tft.setupDir, Logger: tft.logger}))) - // setup credentials if explicit sa_key output from setup - credsEnc, exists := tft.tfEnvVars[fmt.Sprintf("TF_VAR_%s", setupKeyOutputName)] - if !exists { - tft.logger.Logf(tft.t, "Unable to find %s output from setup, skipping credential activation", setupKeyOutputName) - } else { - credDec, err := b64.StdEncoding.DecodeString(credsEnc) - if err != nil { - t.Fatalf("Unable to decode %s output from setup: %v", setupKeyOutputName, err) + if credsEnc, exists := tft.tfEnvVars[fmt.Sprintf("TF_VAR_%s", setupKeyOutputName)]; tft.saKey == "" && exists { + if credDec, err := b64.StdEncoding.DecodeString(credsEnc); err == nil { + gcloud.ActivateCredsAndEnvVars(tft.t, string(credDec)) + } else { + tft.t.Fatalf("Unable to decode setup sa key: %v", err) } - gcloud.ActivateCredsAndEnvVars(tft.t, string(credDec)) + } else { + tft.logger.Logf(tft.t, "Skipping credential activation %s output from setup", setupKeyOutputName) } } diff --git a/infra/blueprint-test/pkg/utils/env.go b/infra/blueprint-test/pkg/utils/env.go index ff2358b9fdc..89d3fb1b8f3 100644 --- a/infra/blueprint-test/pkg/utils/env.go +++ b/infra/blueprint-test/pkg/utils/env.go @@ -31,3 +31,11 @@ func ValFromEnv(t testing.TB, k string) string { } return v } + +// SetEnv set a environment variable. +func SetEnv(t testing.TB, key string, value string) { + err := os.Setenv(key, value) + if err != nil { + t.Fatal("Unable to put environment variable %s: %v", key, err) + } +} diff --git a/infra/blueprint-test/pkg/utils/files.go b/infra/blueprint-test/pkg/utils/files.go index 8a05c8706d1..e7ee6d5ab02 100644 --- a/infra/blueprint-test/pkg/utils/files.go +++ b/infra/blueprint-test/pkg/utils/files.go @@ -10,10 +10,10 @@ func WriteTmpFile(data string) (string, error) { if err != nil { return "", err } + defer f.Close() _, err = f.Write([]byte(data)) if err != nil { return "", err } - f.Close() return f.Name(), nil } From 1bf53970d457786fa2b3dc79a42b77887d1c7bb5 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 8 Feb 2022 13:41:43 -0600 Subject: [PATCH 0033/1371] feat: add helper for goldenfiles (#1067) --- infra/blueprint-test/pkg/golden/golden.go | 103 ++++++++++++++++++ .../blueprint-test/pkg/golden/golden_test.go | 93 ++++++++++++++++ .../testdata/TestUpdate-with-prev-data.json | 1 + 3 files changed, 197 insertions(+) create mode 100644 infra/blueprint-test/pkg/golden/golden.go create mode 100644 infra/blueprint-test/pkg/golden/golden_test.go create mode 100755 infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json diff --git a/infra/blueprint-test/pkg/golden/golden.go b/infra/blueprint-test/pkg/golden/golden.go new file mode 100644 index 00000000000..3771fd748c4 --- /dev/null +++ b/infra/blueprint-test/pkg/golden/golden.go @@ -0,0 +1,103 @@ +/** + * Copyright 2022 Google LLC + * + * 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 assertd 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 golden helps manage goldenfiles. +package golden + +import ( + "fmt" + "io/ioutil" + "os" + "path" + "strings" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" + "github.com/mitchellh/go-testing-interface" + "github.com/stretchr/testify/assert" + "github.com/tidwall/gjson" +) + +const ( + gfDir = "testdata" + gfPerms = 0755 + gfUpdateEnvVar = "UPDATE_GOLDEN" +) + +type GoldenFile struct { + dir string + fileName string + t testing.TB +} + +type goldenFileOption func(*GoldenFile) + +func WithDir(dir string) goldenFileOption { + return func(g *GoldenFile) { + g.dir = dir + } +} + +func WithFileName(fn string) goldenFileOption { + return func(g *GoldenFile) { + g.fileName = fn + } +} + +func NewOrUpdate(t testing.TB, data string, opts ...goldenFileOption) *GoldenFile { + g := &GoldenFile{ + dir: gfDir, + fileName: fmt.Sprintf("%s.json", strings.ReplaceAll(t.Name(), "/", "-")), + t: t, + } + for _, opt := range opts { + opt(g) + } + g.update(data) + return g +} + +// update updates goldenfile data iff gfUpdateEnvVar is true +func (g *GoldenFile) update(data string) { + // exit early if gfUpdateEnvVar is not set or true + if strings.ToLower(os.Getenv(gfUpdateEnvVar)) != "true" { + return + } + fp := g.GetName() + err := os.MkdirAll(path.Dir(fp), gfPerms) + if err != nil { + g.t.Fatalf("error updating result: %v", err) + } + err = ioutil.WriteFile(fp, []byte(data), gfPerms) + if err != nil { + g.t.Fatalf("error updating result: %v", err) + } +} + +// GetName return path of the goldenfile +func (g *GoldenFile) GetName() string { + return path.Join(g.dir, g.fileName) +} + +// GetJSON returns goldenfile as parsed json +func (g *GoldenFile) GetJSON() gjson.Result { + return utils.LoadJSON(g.t, g.GetName()) +} + +// JSONEq asserts that json content in jsonPath for got and goldenfile is the same +func (g *GoldenFile) JSONEq(a *assert.Assertions, got gjson.Result, jsonPath string) { + gf := g.GetJSON() + a.Equal(gf.Get(jsonPath).String(), got.Get(jsonPath).String(), fmt.Sprintf("expected %s to match fixture", jsonPath)) +} diff --git a/infra/blueprint-test/pkg/golden/golden_test.go b/infra/blueprint-test/pkg/golden/golden_test.go new file mode 100644 index 00000000000..9bfeff02f3d --- /dev/null +++ b/infra/blueprint-test/pkg/golden/golden_test.go @@ -0,0 +1,93 @@ +/** + * Copyright 2022 Google LLC + * + * 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 assertd 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 golden + +import ( + "io/ioutil" + "os" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" + "github.com/stretchr/testify/assert" +) + +func TestUpdate(t *testing.T) { + tests := []struct { + name string + data string + skipUpdate bool + want string + }{ + { + name: "simple", + data: "foo", + want: "foo", + }, + { + name: "with-prev-data", + data: "{\"baz\":\"qux\"}", + skipUpdate: true, + want: "{\"foo\":\"bar\"}", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + if !tt.skipUpdate { + os.Setenv(gfUpdateEnvVar, "true") + defer os.Unsetenv(gfUpdateEnvVar) + } + + got := NewOrUpdate(t, tt.data) + + if !tt.skipUpdate { + defer os.Remove(got.GetName()) + } + j, err := ioutil.ReadFile(got.GetName()) + assert.NoError(err) + assert.Equal(tt.want, string(j)) + + }) + } +} + +func TestJSONEq(t *testing.T) { + tests := []struct { + name string + data string + eqPath string + want string + }{ + { + name: "nested", + data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"}}", + eqPath: "baz", + want: "{\"qux\":\"quz\"}", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + os.Setenv(gfUpdateEnvVar, "true") + defer os.Unsetenv(gfUpdateEnvVar) + + got := NewOrUpdate(t, tt.data) + defer os.Remove(got.GetName()) + got.JSONEq(assert, utils.ParseJSONResult(t, tt.data), tt.eqPath) + }) + } +} diff --git a/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json b/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json new file mode 100755 index 00000000000..9f5dd4e3d9f --- /dev/null +++ b/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json @@ -0,0 +1 @@ +{"foo":"bar"} \ No newline at end of file From f3d60ff938cbfdde9fb7bd0984f165744c1f481e Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 9 Feb 2022 22:51:34 -0600 Subject: [PATCH 0034/1371] Update tools to 1.3.9 (#1068) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 790078f8fa8..0076defbbdf 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.5 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 371.0.0 +CLOUD_SDK_VERSION := 372.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -30,7 +30,7 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.13 CFT_CLI_VERSION := 0.4.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 3842083683a3218d7864efa5e545dc4958cc3ecb Mon Sep 17 00:00:00 2001 From: Diego Lima Date: Fri, 11 Feb 2022 20:50:14 -0300 Subject: [PATCH 0035/1371] feat: add support for runf in gcloud blueprint test (#1070) * feat: add support to runf * refactor: unexported stringFromTextAndArgs Co-authored-by: Bharath KKB --- infra/blueprint-test/pkg/gcloud/gcloud.go | 37 +++++++++++++++++++ .../blueprint-test/pkg/gcloud/gcloud_test.go | 26 +++++++++++++ 2 files changed, 63 insertions(+) diff --git a/infra/blueprint-test/pkg/gcloud/gcloud.go b/infra/blueprint-test/pkg/gcloud/gcloud.go index d580ab46c6a..788a2663f0c 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud.go @@ -18,6 +18,7 @@ package gcloud import ( + "fmt" "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" @@ -106,6 +107,42 @@ func Run(t testing.TB, cmd string, opts ...cmdOption) gjson.Result { return gjson.Parse(op) } +// RunWithCmdOptsf executes a gcloud command and returns value as gjson.Result. +// +// RunWithCmdOptsf(t, ops.., "projects list --filter=%s", "projectId") +// +// It fails the test if there are any errors executing the gcloud command or parsing the output value. +func RunWithCmdOptsf(t testing.TB, opts []cmdOption, cmd string, args ...interface{}) gjson.Result { + return Run(t, stringFromTextAndArgs(append([]interface{}{cmd}, args...)...), opts...) +} + +// Runf executes a gcloud command and returns value as gjson.Result. +// +// Runf(t, "projects list --filter=%s", "projectId") +// +// It fails the test if there are any errors executing the gcloud command or parsing the output value. +func Runf(t testing.TB, cmd string, args ...interface{}) gjson.Result { + return Run(t, stringFromTextAndArgs(append([]interface{}{cmd}, args...)...)) +} + +// stringFromTextAndArgs convert msg and args to formatted text +func stringFromTextAndArgs(msgAndArgs ...interface{}) string { + if len(msgAndArgs) == 0 || msgAndArgs == nil { + return "" + } + if len(msgAndArgs) == 1 { + msg := msgAndArgs[0] + if msgAsStr, ok := msg.(string); ok { + return msgAsStr + } + return fmt.Sprintf("%+v", msg) + } + if len(msgAndArgs) > 1 { + return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...) + } + return "" +} + // ActivateCredsAndEnvVars activates credentials and exports auth related envvars. func ActivateCredsAndEnvVars(t testing.TB, creds string) { credsPath, err := utils.WriteTmpFile(creds) diff --git a/infra/blueprint-test/pkg/gcloud/gcloud_test.go b/infra/blueprint-test/pkg/gcloud/gcloud_test.go index 0c8d2a39d9d..ac61dd2d6f7 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud_test.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud_test.go @@ -56,3 +56,29 @@ func TestActivateCredsAndEnvVars(t *testing.T) { }) } } + +func TestRunf(t *testing.T) { + tests := []struct { + name string + cmd string + projectIdEnvVar string + }{ + { + name: "Runf", + cmd: "projects list --filter=%s", + projectIdEnvVar: "TEST_PROJECT_ID", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if projectName, present := os.LookupEnv(tt.projectIdEnvVar); present { + op := Runf(t, tt.cmd, projectName) + assert := assert.New(t) + assert.Equal(projectName, op.Array()[0].Get("projectId").String()) + } else { + t.Logf("Skipping test, %s envvar not set", tt.projectIdEnvVar) + t.Skip() + } + }) + } +} From 9b392a45d688db5a22095a81e364d4e4c36cc31f Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 15 Feb 2022 18:43:31 -0600 Subject: [PATCH 0036/1371] feat: discover blueprint test configs in CLI (#1066) * feat: discover test configs in CLI * add tests * fmt * fmt Co-authored-by: Morgante Pell --- cli/bptest/cmd.go | 5 +++ cli/bptest/list.go | 23 +++++++++---- cli/bptest/list_test.go | 33 +++++++++++++------ cli/bptest/run.go | 4 +++ .../with-discovery/examples/quux/test.yaml | 20 +++++++++++ .../test/fixtures/quuz/test.yaml | 20 +++++++++++ .../test/intergration/quuz/quuz_test.go | 7 ++++ 7 files changed, 96 insertions(+), 16 deletions(-) create mode 100644 cli/bptest/testdata/with-discovery/examples/quux/test.yaml create mode 100644 cli/bptest/testdata/with-discovery/test/fixtures/quuz/test.yaml create mode 100644 cli/bptest/testdata/with-discovery/test/intergration/quuz/quuz_test.go diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index 7eee6a66914..140cbca3f1d 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -1,6 +1,7 @@ package bptest import ( + "fmt" "os" "github.com/jedib0t/go-pretty/v6/table" @@ -50,6 +51,10 @@ var listCmd = &cobra.Command{ tbl := newTable() tbl.AppendHeader(table.Row{"Name", "Config", "Location"}) for _, t := range tests { + if t.bptestCfg.Spec.Skip { + Log.Info(fmt.Sprintf("skipping %s due to BlueprintTest config %s", t.name, t.bptestCfg.Name)) + continue + } tbl.AppendRow(table.Row{t.name, t.config, t.location}) } tbl.Render() diff --git a/cli/bptest/list.go b/cli/bptest/list.go index eee8a0fd667..7b19ae45aa2 100644 --- a/cli/bptest/list.go +++ b/cli/bptest/list.go @@ -19,9 +19,10 @@ const ( ) type bpTest struct { - name string - config string - location string + name string + config string + location string + bptestCfg discovery.BlueprintTestConfig } // getTests returns slice of all blueprint tests @@ -69,8 +70,12 @@ func getDiscoveredTests(intTestDir string) ([]bpTest, error) { return nil, err } discoveredSubTests := discovery.FindTestConfigs(&testing.RuntimeT{}, intTestDir) - for testName, fileName := range discoveredSubTests { - tests = append(tests, bpTest{name: fmt.Sprintf("%s/%s", discoverTestName, testName), config: fileName, location: discoverTestFile}) + for testName, testCfg := range discoveredSubTests { + bptestCfg, err := discovery.GetTestConfig(path.Join(testCfg, discovery.DefaultTestConfigFilename)) + if err != nil { + Log.Warn(fmt.Sprintf("error discovering BlueprintTest config: %v", err)) + } + tests = append(tests, bpTest{name: fmt.Sprintf("%s/%s", discoverTestName, testName), config: testCfg, location: discoverTestFile, bptestCfg: bptestCfg}) } } sort.SliceStable(tests, func(i, j int) bool { return tests[i].name < tests[j].name }) @@ -94,12 +99,18 @@ func getExplicitTests(intTestDir string) ([]bpTest, error) { Log.Warn(fmt.Sprintf("unable to discover configs for %s: %v", testDir, err)) } + // discover BlueprintTest config if any + bptestCfg, err := discovery.GetTestConfig(path.Join(testCfg, discovery.DefaultTestConfigFilename)) + if err != nil { + Log.Warn(fmt.Sprintf("error discovering BlueprintTest config: %v", err)) + } + testFns, err := getTestFuncsFromFile(testFile) if err != nil { return nil, err } for _, fnName := range testFns { - eTests = append(eTests, bpTest{name: fnName, location: testFile, config: testCfg}) + eTests = append(eTests, bpTest{name: fnName, location: testFile, config: testCfg, bptestCfg: bptestCfg}) } } diff --git a/cli/bptest/list_test.go b/cli/bptest/list_test.go index 67f3ed89e3e..d1f20da55b1 100644 --- a/cli/bptest/list_test.go +++ b/cli/bptest/list_test.go @@ -6,6 +6,7 @@ import ( "path" "testing" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/discovery" "github.com/stretchr/testify/assert" ) @@ -25,8 +26,9 @@ func TestGetDiscoveredTests(t *testing.T) { name: "simple", testDir: path.Join(testDirWithDiscovery, intTestDir), want: []bpTest{ - getBPTest("TestAll/examples/baz", path.Join(testDirWithDiscovery, "examples/baz"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename)), - getBPTest("TestAll/fixtures/qux", path.Join(testDirWithDiscovery, "test/fixtures/qux"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename)), + getBPTest("TestAll/examples/baz", path.Join(testDirWithDiscovery, "examples/baz"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename), false), + getBPTest("TestAll/fixtures/qux", path.Join(testDirWithDiscovery, "test/fixtures/qux"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename), false), + getBPTest("TestAll/examples/quux", path.Join(testDirWithDiscovery, "examples/quux"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename), true), }, }, { @@ -61,8 +63,9 @@ func TestGetExplicitTests(t *testing.T) { name: "simple", testDir: path.Join(testDirWithDiscovery, intTestDir), want: []bpTest{ - getBPTest("TestBar", path.Join(testDirWithDiscovery, "examples/bar"), path.Join(testDirWithDiscovery, intTestDir, "bar/bar_test.go")), - getBPTest("TestFoo", path.Join(testDirWithDiscovery, "test/fixtures/foo"), path.Join(testDirWithDiscovery, intTestDir, "foo/foo_test.go")), + getBPTest("TestBar", path.Join(testDirWithDiscovery, "examples/bar"), path.Join(testDirWithDiscovery, intTestDir, "bar/bar_test.go"), false), + getBPTest("TestFoo", path.Join(testDirWithDiscovery, "test/fixtures/foo"), path.Join(testDirWithDiscovery, intTestDir, "foo/foo_test.go"), false), + getBPTest("TestQuuz", path.Join(testDirWithDiscovery, "test/fixtures/quuz"), path.Join(testDirWithDiscovery, intTestDir, "quuz/quuz_test.go"), true), }, }, } @@ -92,10 +95,12 @@ func TestGetTests(t *testing.T) { name: "simple", testDir: path.Join(testDirWithDiscovery, intTestDir), want: []bpTest{ - getBPTest("TestAll/examples/baz", path.Join(testDirWithDiscovery, "examples/baz"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename)), - getBPTest("TestAll/fixtures/qux", path.Join(testDirWithDiscovery, "test/fixtures/qux"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename)), - getBPTest("TestBar", path.Join(testDirWithDiscovery, "examples/bar"), path.Join(testDirWithDiscovery, intTestDir, "bar/bar_test.go")), - getBPTest("TestFoo", path.Join(testDirWithDiscovery, "test/fixtures/foo"), path.Join(testDirWithDiscovery, intTestDir, "foo/foo_test.go")), + getBPTest("TestAll/examples/baz", path.Join(testDirWithDiscovery, "examples/baz"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename), false), + getBPTest("TestAll/fixtures/qux", path.Join(testDirWithDiscovery, "test/fixtures/qux"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename), false), + getBPTest("TestAll/examples/quux", path.Join(testDirWithDiscovery, "examples/quux"), path.Join(testDirWithDiscovery, intTestDir, discoverTestFilename), true), + getBPTest("TestBar", path.Join(testDirWithDiscovery, "examples/bar"), path.Join(testDirWithDiscovery, intTestDir, "bar/bar_test.go"), false), + getBPTest("TestFoo", path.Join(testDirWithDiscovery, "test/fixtures/foo"), path.Join(testDirWithDiscovery, intTestDir, "foo/foo_test.go"), false), + getBPTest("TestQuuz", path.Join(testDirWithDiscovery, "test/fixtures/quuz"), path.Join(testDirWithDiscovery, intTestDir, "quuz/quuz_test.go"), true), }, }, } @@ -114,8 +119,16 @@ func TestGetTests(t *testing.T) { } } -func getBPTest(n string, c string, l string) bpTest { - return bpTest{name: n, config: c, location: l} +func getBPTest(n string, c string, l string, s bool) bpTest { + b := discovery.BlueprintTestConfig{} + b.Spec.Skip = s + if s { + b.APIVersion = "blueprints.cloud.google.com/v1alpha1" + b.Kind = "BlueprintTest" + b.Name = path.Base(c) + b.Path = path.Join(c, discovery.DefaultTestConfigFilename) + } + return bpTest{name: n, config: c, location: l, bptestCfg: b} } func TestGetDiscoverTestName(t *testing.T) { diff --git a/cli/bptest/run.go b/cli/bptest/run.go index 9bda62e57d8..87a2f48d8e5 100644 --- a/cli/bptest/run.go +++ b/cli/bptest/run.go @@ -34,6 +34,10 @@ func isValidTestName(intTestDir string, name string) error { } testNames := []string{} for _, test := range tests { + if test.bptestCfg.Spec.Skip { + Log.Info(fmt.Sprintf("skipping %s due to BlueprintTest config %s", test.name, test.bptestCfg.Name)) + continue + } matched, _ := regexp.Match(name, []byte(test.name)) if test.name == name || matched { return nil diff --git a/cli/bptest/testdata/with-discovery/examples/quux/test.yaml b/cli/bptest/testdata/with-discovery/examples/quux/test.yaml new file mode 100644 index 00000000000..3345e7e20df --- /dev/null +++ b/cli/bptest/testdata/with-discovery/examples/quux/test.yaml @@ -0,0 +1,20 @@ +# Copyright 2022 Google LLC +# +# 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. + +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintTest +metadata: + name: quux +spec: + skip: true diff --git a/cli/bptest/testdata/with-discovery/test/fixtures/quuz/test.yaml b/cli/bptest/testdata/with-discovery/test/fixtures/quuz/test.yaml new file mode 100644 index 00000000000..1d3e17b7010 --- /dev/null +++ b/cli/bptest/testdata/with-discovery/test/fixtures/quuz/test.yaml @@ -0,0 +1,20 @@ +# Copyright 2022 Google LLC +# +# 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. + +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintTest +metadata: + name: quuz +spec: + skip: true diff --git a/cli/bptest/testdata/with-discovery/test/intergration/quuz/quuz_test.go b/cli/bptest/testdata/with-discovery/test/intergration/quuz/quuz_test.go new file mode 100644 index 00000000000..cc5085568ba --- /dev/null +++ b/cli/bptest/testdata/with-discovery/test/intergration/quuz/quuz_test.go @@ -0,0 +1,7 @@ +package quuz + +import "testing" + +func TestQuuz(t *testing.T) { + t.Log("Ran test") +} From c98be3561409b0051a1a5b2502eb603766d2c4a5 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 17 Feb 2022 12:32:45 -0600 Subject: [PATCH 0037/1371] feat: add goldenfile sanitizers (#1074) * feat: goldenfile sanitizers * helper for json * docs * fix fn name * add default project id sanitizer --- infra/blueprint-test/pkg/golden/golden.go | 64 +++++++++++++++++-- .../blueprint-test/pkg/golden/golden_test.go | 55 ++++++++++++++-- 2 files changed, 106 insertions(+), 13 deletions(-) diff --git a/infra/blueprint-test/pkg/golden/golden.go b/infra/blueprint-test/pkg/golden/golden.go index 3771fd748c4..286d6324ca5 100644 --- a/infra/blueprint-test/pkg/golden/golden.go +++ b/infra/blueprint-test/pkg/golden/golden.go @@ -24,6 +24,7 @@ import ( "path" "strings" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" "github.com/mitchellh/go-testing-interface" "github.com/stretchr/testify/assert" @@ -37,9 +38,31 @@ const ( ) type GoldenFile struct { - dir string - fileName string - t testing.TB + dir string + fileName string + sanitizers []Sanitizer + t testing.TB +} + +type Sanitizer func(string) string + +// StringSanitizer replaces all occurrences of old string with new string +func StringSanitizer(old, new string) Sanitizer { + return func(s string) string { + return strings.ReplaceAll(s, old, new) + } +} + +// ProjectIDSanitizer replaces all occurrences of current gcloud project ID with PROJECT_ID string +func ProjectIDSanitizer(t testing.TB) Sanitizer { + return func(s string) string { + projectID := gcloud.Run(t, "config get-value project") + if projectID.String() == "[]" { + t.Logf("no project ID currently set, skipping ProjectIDSanitizer: %s", projectID.String()) + return s + } + return strings.ReplaceAll(s, projectID.String(), "PROJECT_ID") + } } type goldenFileOption func(*GoldenFile) @@ -56,11 +79,18 @@ func WithFileName(fn string) goldenFileOption { } } +func WithSanitizer(s Sanitizer) goldenFileOption { + return func(g *GoldenFile) { + g.sanitizers = append(g.sanitizers, s) + } +} + func NewOrUpdate(t testing.TB, data string, opts ...goldenFileOption) *GoldenFile { g := &GoldenFile{ - dir: gfDir, - fileName: fmt.Sprintf("%s.json", strings.ReplaceAll(t.Name(), "/", "-")), - t: t, + dir: gfDir, + fileName: fmt.Sprintf("%s.json", strings.ReplaceAll(t.Name(), "/", "-")), + sanitizers: []Sanitizer{ProjectIDSanitizer(t)}, + t: t, } for _, opt := range opts { opt(g) @@ -80,6 +110,9 @@ func (g *GoldenFile) update(data string) { if err != nil { g.t.Fatalf("error updating result: %v", err) } + // apply sanitizers on data + data = g.ApplySanitizers(data) + err = ioutil.WriteFile(fp, []byte(data), gfPerms) if err != nil { g.t.Fatalf("error updating result: %v", err) @@ -91,6 +124,21 @@ func (g *GoldenFile) GetName() string { return path.Join(g.dir, g.fileName) } +// ApplySanitizers returns sanitized string +func (g *GoldenFile) ApplySanitizers(s string) string { + for _, sanitizer := range g.sanitizers { + s = sanitizer(s) + } + return s +} + +// GetSanitizedJSON returns sanitizes and returns JSON result +func (g *GoldenFile) GetSanitizedJSON(s gjson.Result) gjson.Result { + resultStr := s.String() + resultStr = g.ApplySanitizers(resultStr) + return utils.ParseJSONResult(g.t, resultStr) +} + // GetJSON returns goldenfile as parsed json func (g *GoldenFile) GetJSON() gjson.Result { return utils.LoadJSON(g.t, g.GetName()) @@ -99,5 +147,7 @@ func (g *GoldenFile) GetJSON() gjson.Result { // JSONEq asserts that json content in jsonPath for got and goldenfile is the same func (g *GoldenFile) JSONEq(a *assert.Assertions, got gjson.Result, jsonPath string) { gf := g.GetJSON() - a.Equal(gf.Get(jsonPath).String(), got.Get(jsonPath).String(), fmt.Sprintf("expected %s to match fixture", jsonPath)) + gotData := g.ApplySanitizers(got.Get(jsonPath).String()) + gfData := gf.Get(jsonPath).String() + a.Equal(gfData, gotData, fmt.Sprintf("expected %s to match fixture %s", jsonPath, gfData)) } diff --git a/infra/blueprint-test/pkg/golden/golden_test.go b/infra/blueprint-test/pkg/golden/golden_test.go index 9bfeff02f3d..17fe8064ccb 100644 --- a/infra/blueprint-test/pkg/golden/golden_test.go +++ b/infra/blueprint-test/pkg/golden/golden_test.go @@ -17,14 +17,19 @@ package golden import ( + "fmt" "io/ioutil" "os" + "strings" "testing" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" "github.com/stretchr/testify/assert" ) +const testProjectIDEnvVar = "TEST_GCLOUD_PROJECT" + func TestUpdate(t *testing.T) { tests := []struct { name string @@ -67,10 +72,12 @@ func TestUpdate(t *testing.T) { func TestJSONEq(t *testing.T) { tests := []struct { - name string - data string - eqPath string - want string + name string + data string + eqPath string + opts []goldenFileOption + want string + setProjectID bool }{ { name: "nested", @@ -78,16 +85,52 @@ func TestJSONEq(t *testing.T) { eqPath: "baz", want: "{\"qux\":\"quz\"}", }, + { + name: "sanitize quz", + data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"}}", + opts: []goldenFileOption{WithSanitizer(StringSanitizer("quz", "REPLACED"))}, + eqPath: "baz", + want: "{\"qux\":\"REPLACED\"}", + }, + { + name: "sanitize projectID", + data: fmt.Sprintf("{\"foo\":\"bar\",\"baz\":{\"qux\":\"%s\"}}", os.Getenv(testProjectIDEnvVar)), + opts: []goldenFileOption{WithSanitizer(ProjectIDSanitizer(t))}, + setProjectID: true, + eqPath: "baz", + want: "{\"qux\":\"PROJECT_ID\"}", + }, + { + name: "no gcloud projectID set", + data: fmt.Sprintf("{\"foo\":\"bar\",\"baz\":{\"qux\":\"%s\"}}", os.Getenv(testProjectIDEnvVar)), + opts: []goldenFileOption{WithSanitizer(ProjectIDSanitizer(t))}, + eqPath: "baz", + want: fmt.Sprintf("{\"qux\":\"%s\"}", os.Getenv(testProjectIDEnvVar)), + }, + { + name: "multiple sanitizers quz", + data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\",\"quux\":\"quuz\"}}", + opts: []goldenFileOption{ + WithSanitizer(StringSanitizer("quz", "REPLACED")), + WithSanitizer(func(s string) string { return strings.ReplaceAll(s, "quuz", "NEW") }), + }, + eqPath: "baz", + want: "{\"qux\":\"REPLACED\",\"quux\":\"NEW\"}", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { assert := assert.New(t) + if tt.setProjectID { + gcloud.Runf(t, "config set project %s", os.Getenv(testProjectIDEnvVar)) + defer gcloud.Run(t, "config unset project") + } os.Setenv(gfUpdateEnvVar, "true") defer os.Unsetenv(gfUpdateEnvVar) - - got := NewOrUpdate(t, tt.data) + got := NewOrUpdate(t, tt.data, tt.opts...) defer os.Remove(got.GetName()) got.JSONEq(assert, utils.ParseJSONResult(t, tt.data), tt.eqPath) + assert.JSONEq(tt.want, got.GetJSON().Get(tt.eqPath).String()) }) } } From e943ab8384c0dc5d2a6108befada849def6fff9d Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 18 Feb 2022 13:52:51 -0600 Subject: [PATCH 0038/1371] Update tools to 1.3.10 (#1073) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 0076defbbdf..6bf7cc8de79 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.5 +TERRAFORM_VERSION := 1.1.6 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 372.0.0 +CLOUD_SDK_VERSION := 373.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -30,7 +30,7 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.13 CFT_CLI_VERSION := 0.4.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.10 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From b00eddae26ba617d61333ce63a94ee9fe5b548d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 14:53:05 -0500 Subject: [PATCH 0039/1371] chore(deps): bump nokogiri in /infra/build/developer-tools/build/data (#996) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.4 to 1.12.5. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.11.4...v1.12.5) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/build/developer-tools/build/data/Gemfile | 2 +- infra/build/developer-tools/build/data/Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/developer-tools/build/data/Gemfile b/infra/build/developer-tools/build/data/Gemfile index 22250f46b7d..8e75337f7f9 100644 --- a/infra/build/developer-tools/build/data/Gemfile +++ b/infra/build/developer-tools/build/data/Gemfile @@ -16,5 +16,5 @@ source 'https://rubygems.org/' do gem "kitchen-terraform", "~> 5.8" gem "kubeclient", "~> 4.0" gem "rest-client", "~> 2.0" - gem 'nokogiri', '~> 1.11' + gem 'nokogiri', '~> 1.12' end diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 44ca18a5bcc..6622825829c 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -347,7 +347,7 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2019.0331) mini_mime (1.0.2) - mini_portile2 (2.5.1) + mini_portile2 (2.6.1) minitest (5.14.2) mixlib-config (3.0.9) tomlrb @@ -376,8 +376,8 @@ GEM net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.11.4) - mini_portile2 (~> 2.5.0) + nokogiri (1.12.5) + mini_portile2 (~> 2.6.1) racc (~> 1.4) nori (2.6.0) os (1.1.1) @@ -579,7 +579,7 @@ PLATFORMS DEPENDENCIES kitchen-terraform (~> 5.8)! kubeclient (~> 4.0)! - nokogiri (~> 1.11)! + nokogiri (~> 1.12)! rest-client (~> 2.0)! BUNDLED WITH From af8cf0c0dcfe9077d2b7e0ec12757505b905deaa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 14:53:14 -0500 Subject: [PATCH 0040/1371] chore(deps): bump addressable in /infra/concourse/build/data (#957) Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.6.0 to 2.8.0. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.6.0...addressable-2.8.0) --- updated-dependencies: - dependency-name: addressable dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Morgante Pell --- infra/concourse/build/data/Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/concourse/build/data/Gemfile.lock b/infra/concourse/build/data/Gemfile.lock index 0d858217da2..1a91511e50b 100644 --- a/infra/concourse/build/data/Gemfile.lock +++ b/infra/concourse/build/data/Gemfile.lock @@ -1,8 +1,8 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.6.0) - public_suffix (>= 2.0.2, < 4.0) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) aws-eventstream (1.0.3) aws-sdk (2.11.283) aws-sdk-resources (= 2.11.283) @@ -187,7 +187,7 @@ GEM pry (0.12.2) coderay (~> 1.1.0) method_source (~> 0.9.0) - public_suffix (3.1.0) + public_suffix (4.0.6) recursive-open-struct (1.1.0) representable (3.0.4) declarative (< 0.1.0) From 59b322d2510acad3c75cd7554f4ccf4a8ce05ee9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 14:53:56 -0500 Subject: [PATCH 0041/1371] chore(deps): bump github.com/open-policy-agent/opa in /cli (#1072) Bumps [github.com/open-policy-agent/opa](https://github.com/open-policy-agent/opa) from 0.34.2 to 0.37.0. - [Release notes](https://github.com/open-policy-agent/opa/releases) - [Changelog](https://github.com/open-policy-agent/opa/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-policy-agent/opa/compare/v0.34.2...v0.37.0) --- updated-dependencies: - dependency-name: github.com/open-policy-agent/opa dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli/go.mod | 8 +-- cli/go.sum | 180 +++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 139 insertions(+), 49 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 3762b3ba095..755b314e5c3 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -14,12 +14,12 @@ require ( github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/jedib0t/go-pretty/v6 v6.2.4 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/open-policy-agent/opa v0.34.2 + github.com/open-policy-agent/opa v0.37.0 github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.2.1 - github.com/spf13/viper v1.9.0 + github.com/spf13/cobra v1.3.0 + github.com/spf13/viper v1.10.0 github.com/stretchr/testify v1.7.0 - google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 + google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa gopkg.in/yaml.v2 v2.4.0 ) diff --git a/cli/go.sum b/cli/go.sum index 4d86a492348..944dab9ec03 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -28,8 +28,10 @@ cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWc cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0 h1:3DXvAyifywvq64LfkKaMOmkWPS1CikIQdMe2lY9vxU8= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= +cloud.google.com/go v0.99.0 h1:y/cM2iqGgGi5D5DQZl6D9STN/3dR/Vx5Mp8s752oJTY= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go/asset v1.0.1 h1:itBmxPI2oR9RLN3ADFLyYkdMa/ro1RZ4ySEQkFO5H7Q= cloud.google.com/go/asset v1.0.1/go.mod h1:666udTyY1NrBD3w0yWiLViXFQ/w3kPQ43lrjY3RbeNI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -41,7 +43,7 @@ cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM7 cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -94,6 +96,7 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52 h1:3Aqk1vqEi62EWkEj+wzPeJBaHzy0R+PXmZs5gE1flbQ= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52/go.mod h1:tWoaVHXM9sZyzxgX2+UHtzdJkav+uTnTJiz42N8FONc= @@ -150,6 +153,7 @@ github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJE github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= @@ -177,7 +181,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= @@ -186,11 +189,14 @@ github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBW github.com/briandowns/spinner v1.16.0 h1:DFmp6hEaIx2QXXuqSJmtfSBSAjRmpGiKG6ip2Wm/yOs= github.com/briandowns/spinner v1.16.0/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= github.com/bytecodealliance/wasmtime-go v0.27.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= -github.com/bytecodealliance/wasmtime-go v0.30.0 h1:WfYpr4WdqInt8m5/HvYinf+HrSEAIhItKIcth+qb1h4= -github.com/bytecodealliance/wasmtime-go v0.30.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= +github.com/bytecodealliance/wasmtime-go v0.33.1 h1:TFep11LiqCy1B6QUIAtqH3KZTbZcKasm89/AF9sqLnA= +github.com/bytecodealliance/wasmtime-go v0.33.1/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -202,12 +208,22 @@ github.com/chavacava/garif v0.0.0-20210405163807-87a70f3d418b/go.mod h1:Qjyv4H3/ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490 h1:KwaoQzs/WeUxxJqiJsZ4euOly1Az/IgZXXSxlD/UBNk= +github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -232,6 +248,7 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc= @@ -285,8 +302,13 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.1 h1:cgDRLG7bs59Zd+apAWuzLQL95obVYAymNJek76W3mgw= +github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.6.2 h1:JiO+kJTpmYGjEodY7O1Zk8oZcNz1+f30UtwtXoFUPzE= +github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/esimonov/ifshort v1.0.2/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -297,11 +319,15 @@ github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZM github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897 h1:E52jfcE64UG42SwLmrW0QByONfGynWuzBvm86BoB9z8= +github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -327,6 +353,7 @@ github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRH github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.66.3/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -336,8 +363,12 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= @@ -503,8 +534,9 @@ github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -658,20 +690,25 @@ github.com/gruntwork-io/terratest v0.35.6 h1:Q7pUd3JI4i5mmR/KgYkZJJ4q9ZbV8ru9Kyd github.com/gruntwork-io/terratest v0.35.6/go.mod h1:GIVJGBV1WIv1vxIG31Ycy0CuHYfXuvvkilNQuC9Wi+o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -691,15 +728,19 @@ github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yI github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/terraform-json v0.9.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -736,9 +777,11 @@ github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBv github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -788,6 +831,7 @@ github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-b github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -810,15 +854,18 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.0-20181025052659-b20a3daf6a39/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -837,9 +884,13 @@ github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aks github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= github.com/mgechev/revive v1.0.6/go.mod h1:Lj5gIVxjBlH8REa3icEOkdfchwYc291nShzZ4QYWyMo= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -861,8 +912,8 @@ github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mna/pigeon v0.0.0-20180808201053-bb0192cfc2ae/go.mod h1:Iym28+kJVnC1hfQvv5MUtI6AiFFzvQjHcvI4RFTG/04= @@ -872,8 +923,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= @@ -948,8 +1000,8 @@ github.com/open-policy-agent/opa v0.16.2/go.mod h1:P0xUE/GQAAgnvV537GzA0Ikw4+icP github.com/open-policy-agent/opa v0.19.1/go.mod h1:rrwxoT/b011T0cyj+gg2VvxqTtn6N3gp/jzmr3fjW44= github.com/open-policy-agent/opa v0.24.0/go.mod h1:qEyD/i8j+RQettHGp4f86yjrjvv+ZYia+JHCMv2G7wA= github.com/open-policy-agent/opa v0.29.3/go.mod h1:ZCOTD3yyFR8JvF8ETdWdiSPn9WcF1dXeQWOv7VoPorU= -github.com/open-policy-agent/opa v0.34.2 h1:asRmfDRUSd8gwPNRrpUsDxwOUkxLgc1x1FYkwjcnag4= -github.com/open-policy-agent/opa v0.34.2/go.mod h1:buysXn+6zB/b+6JgLkP4WgKZ9+UgUtFAgtemYGrL9Ik= +github.com/open-policy-agent/opa v0.37.0 h1:OUXB+RAcxQpmXeNW2BN1wYzQQvVCPF1T9zv+QXGr9Wg= +github.com/open-policy-agent/opa v0.37.0/go.mod h1:xX3NUCZuXK8f0CNhFQvhm4495mZLptf94pIkWRLaFqo= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= @@ -968,11 +1020,11 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -1003,9 +1055,11 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1020,11 +1074,12 @@ github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.29.0 h1:3jqPBvKT4OHAbje2Ql7KeaaSicDBCxMYwEJU1zRJceE= -github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1033,8 +1088,9 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= @@ -1061,10 +1117,11 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ= github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= +github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sanposhiho/wastedassign v1.0.0/go.mod h1:LGpq5Hsv74QaqM47WtIsRSF/ik9kqk07kchgv66tLVE= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= @@ -1098,10 +1155,10 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.0-20181021141114-fe5e611709b0/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -1110,8 +1167,8 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cobra v1.3.0 h1:R7cSvGu+Vv+qX0gW5R/85dx2kmmJT5z5NM8ifdYjdn0= +github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1126,9 +1183,8 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= -github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= +github.com/spf13/viper v1.10.0 h1:mXH0UwHS4D2HwWZa75im4xIQynLfblmWV7qcWpfv0yk= +github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= github.com/ssgreg/nlreturn/v2 v2.1.0/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1167,6 +1223,7 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1 github.com/tomarrell/wrapcheck/v2 v2.1.0/go.mod h1:crK5eI4RGSUrb9duDTQ5GqcukbKZvi85vX6nbhsBAeI= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/tommy-muehle/go-mnd/v2 v2.3.2/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= @@ -1215,9 +1272,9 @@ go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -1238,7 +1295,17 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.28.0/go.mod h1:Ihno+mNBfZlT0Qot3XyRTdZ/9U/Cg2Pfgj75DTdIfq4= +go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= +go.opentelemetry.io/otel/internal/metric v0.26.0/go.mod h1:CbBP6AxKynRs3QCbhklyLUtpfzbqCLiafV9oY2Zj1Jk= +go.opentelemetry.io/otel/metric v0.26.0/go.mod h1:c6YL0fhRo4YVoNs6GoByzUgBp36hBL523rECoZA5UWg= +go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= +go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1248,6 +1315,7 @@ go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= @@ -1326,6 +1394,7 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1386,10 +1455,12 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211111083644-e5c967477495 h1:cjxxlQm6d4kYbhpZ2ghvmI8xnq0AG+jXmzrhzfkyu5A= +golang.org/x/net v0.0.0-20211111083644-e5c967477495/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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= @@ -1401,13 +1472,13 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 h1:B333XXssMuKQeBwiNODx4TupZy7bf4sxFZnN2ZOcvUE= golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= 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= @@ -1498,12 +1569,14 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210217105451-b926d437f341/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1512,10 +1585,16 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678 h1:J27LZFQBFoihqXoegpscI10HpjZ7B5WQLLKL2FZXQKw= golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= @@ -1529,8 +1608,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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= @@ -1690,7 +1770,6 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= @@ -1699,8 +1778,11 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.58.0 h1:MDkAbYIB1JpSgCTOCYYoIec/coMlKK4oVbpnBLLcyT0= google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.62.0 h1:PhGymJMXfGBzc4lBRmrx9+1w4w2wEzURHNGF/sD/xGc= +google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1776,9 +1858,15 @@ google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211016002631-37fc39342514/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 h1:DN5b3HU13J4sMd/QjDx34U6afpaexKTDdop+26pdjdk= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa h1:I0YcKz0I7OAhddo7ya8kMnvprhcWM045PmkBdMO9zN0= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1811,8 +1899,11 @@ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0 h1:weqSxi/TMs1SqFRMHCtBgXRs8k3X39QIDEZ0pRcttUg= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -1844,9 +1935,8 @@ gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= -gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= +gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= From 2cf595c43cb70ec87a1dfbdda1435d5bef236b1a Mon Sep 17 00:00:00 2001 From: Morgante Pell Date: Fri, 18 Feb 2022 14:59:10 -0500 Subject: [PATCH 0042/1371] Revert "chore(deps): bump github.com/open-policy-agent/opa in /cli (#1072)" (#1079) This reverts commit 59b322d2510acad3c75cd7554f4ccf4a8ce05ee9. --- cli/go.mod | 8 +-- cli/go.sum | 180 ++++++++++++++--------------------------------------- 2 files changed, 49 insertions(+), 139 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 755b314e5c3..3762b3ba095 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -14,12 +14,12 @@ require ( github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/jedib0t/go-pretty/v6 v6.2.4 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/open-policy-agent/opa v0.37.0 + github.com/open-policy-agent/opa v0.34.2 github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.3.0 - github.com/spf13/viper v1.10.0 + github.com/spf13/cobra v1.2.1 + github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.7.0 - google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa + google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/cli/go.sum b/cli/go.sum index 944dab9ec03..4d86a492348 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -28,10 +28,8 @@ cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWc cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0 h1:3DXvAyifywvq64LfkKaMOmkWPS1CikIQdMe2lY9vxU8= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= -cloud.google.com/go v0.99.0 h1:y/cM2iqGgGi5D5DQZl6D9STN/3dR/Vx5Mp8s752oJTY= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go/asset v1.0.1 h1:itBmxPI2oR9RLN3ADFLyYkdMa/ro1RZ4ySEQkFO5H7Q= cloud.google.com/go/asset v1.0.1/go.mod h1:666udTyY1NrBD3w0yWiLViXFQ/w3kPQ43lrjY3RbeNI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -43,7 +41,7 @@ cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM7 cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= +cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -96,7 +94,6 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52 h1:3Aqk1vqEi62EWkEj+wzPeJBaHzy0R+PXmZs5gE1flbQ= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52/go.mod h1:tWoaVHXM9sZyzxgX2+UHtzdJkav+uTnTJiz42N8FONc= @@ -153,7 +150,6 @@ github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJE github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= @@ -181,6 +177,7 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= @@ -189,14 +186,11 @@ github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBW github.com/briandowns/spinner v1.16.0 h1:DFmp6hEaIx2QXXuqSJmtfSBSAjRmpGiKG6ip2Wm/yOs= github.com/briandowns/spinner v1.16.0/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= github.com/bytecodealliance/wasmtime-go v0.27.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= -github.com/bytecodealliance/wasmtime-go v0.33.1 h1:TFep11LiqCy1B6QUIAtqH3KZTbZcKasm89/AF9sqLnA= -github.com/bytecodealliance/wasmtime-go v0.33.1/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= +github.com/bytecodealliance/wasmtime-go v0.30.0 h1:WfYpr4WdqInt8m5/HvYinf+HrSEAIhItKIcth+qb1h4= +github.com/bytecodealliance/wasmtime-go v0.30.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -208,22 +202,12 @@ github.com/chavacava/garif v0.0.0-20210405163807-87a70f3d418b/go.mod h1:Qjyv4H3/ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490 h1:KwaoQzs/WeUxxJqiJsZ4euOly1Az/IgZXXSxlD/UBNk= -github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -248,7 +232,6 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc= @@ -302,13 +285,8 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.1 h1:cgDRLG7bs59Zd+apAWuzLQL95obVYAymNJek76W3mgw= -github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.2 h1:JiO+kJTpmYGjEodY7O1Zk8oZcNz1+f30UtwtXoFUPzE= -github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/esimonov/ifshort v1.0.2/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -319,15 +297,11 @@ github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZM github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897 h1:E52jfcE64UG42SwLmrW0QByONfGynWuzBvm86BoB9z8= -github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -353,7 +327,6 @@ github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRH github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.66.3/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -363,12 +336,8 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= @@ -534,9 +503,8 @@ github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -690,25 +658,20 @@ github.com/gruntwork-io/terratest v0.35.6 h1:Q7pUd3JI4i5mmR/KgYkZJJ4q9ZbV8ru9Kyd github.com/gruntwork-io/terratest v0.35.6/go.mod h1:GIVJGBV1WIv1vxIG31Ycy0CuHYfXuvvkilNQuC9Wi+o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -728,19 +691,15 @@ github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yI github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/terraform-json v0.9.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -777,11 +736,9 @@ github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBv github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -831,7 +788,6 @@ github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-b github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -854,18 +810,15 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.0-20181025052659-b20a3daf6a39/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -884,13 +837,9 @@ github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aks github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= github.com/mgechev/revive v1.0.6/go.mod h1:Lj5gIVxjBlH8REa3icEOkdfchwYc291nShzZ4QYWyMo= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= -github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -912,8 +861,8 @@ github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= +github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mna/pigeon v0.0.0-20180808201053-bb0192cfc2ae/go.mod h1:Iym28+kJVnC1hfQvv5MUtI6AiFFzvQjHcvI4RFTG/04= @@ -923,9 +872,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= @@ -1000,8 +948,8 @@ github.com/open-policy-agent/opa v0.16.2/go.mod h1:P0xUE/GQAAgnvV537GzA0Ikw4+icP github.com/open-policy-agent/opa v0.19.1/go.mod h1:rrwxoT/b011T0cyj+gg2VvxqTtn6N3gp/jzmr3fjW44= github.com/open-policy-agent/opa v0.24.0/go.mod h1:qEyD/i8j+RQettHGp4f86yjrjvv+ZYia+JHCMv2G7wA= github.com/open-policy-agent/opa v0.29.3/go.mod h1:ZCOTD3yyFR8JvF8ETdWdiSPn9WcF1dXeQWOv7VoPorU= -github.com/open-policy-agent/opa v0.37.0 h1:OUXB+RAcxQpmXeNW2BN1wYzQQvVCPF1T9zv+QXGr9Wg= -github.com/open-policy-agent/opa v0.37.0/go.mod h1:xX3NUCZuXK8f0CNhFQvhm4495mZLptf94pIkWRLaFqo= +github.com/open-policy-agent/opa v0.34.2 h1:asRmfDRUSd8gwPNRrpUsDxwOUkxLgc1x1FYkwjcnag4= +github.com/open-policy-agent/opa v0.34.2/go.mod h1:buysXn+6zB/b+6JgLkP4WgKZ9+UgUtFAgtemYGrL9Ik= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= @@ -1020,11 +968,11 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -1055,11 +1003,9 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1074,12 +1020,11 @@ github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.29.0 h1:3jqPBvKT4OHAbje2Ql7KeaaSicDBCxMYwEJU1zRJceE= +github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1088,9 +1033,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= @@ -1117,11 +1061,10 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ= github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= +github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sanposhiho/wastedassign v1.0.0/go.mod h1:LGpq5Hsv74QaqM47WtIsRSF/ik9kqk07kchgv66tLVE= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= @@ -1155,10 +1098,10 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.0-20181021141114-fe5e611709b0/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -1167,8 +1110,8 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.3.0 h1:R7cSvGu+Vv+qX0gW5R/85dx2kmmJT5z5NM8ifdYjdn0= -github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= +github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1183,8 +1126,9 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.10.0 h1:mXH0UwHS4D2HwWZa75im4xIQynLfblmWV7qcWpfv0yk= -github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= +github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/ssgreg/nlreturn/v2 v2.1.0/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1223,7 +1167,6 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1 github.com/tomarrell/wrapcheck/v2 v2.1.0/go.mod h1:crK5eI4RGSUrb9duDTQ5GqcukbKZvi85vX6nbhsBAeI= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/tommy-muehle/go-mnd/v2 v2.3.2/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= @@ -1272,9 +1215,9 @@ go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -1295,17 +1238,7 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.28.0/go.mod h1:Ihno+mNBfZlT0Qot3XyRTdZ/9U/Cg2Pfgj75DTdIfq4= -go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= -go.opentelemetry.io/otel/internal/metric v0.26.0/go.mod h1:CbBP6AxKynRs3QCbhklyLUtpfzbqCLiafV9oY2Zj1Jk= -go.opentelemetry.io/otel/metric v0.26.0/go.mod h1:c6YL0fhRo4YVoNs6GoByzUgBp36hBL523rECoZA5UWg= -go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= -go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1315,7 +1248,6 @@ go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= @@ -1394,7 +1326,6 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1455,12 +1386,10 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211111083644-e5c967477495 h1:cjxxlQm6d4kYbhpZ2ghvmI8xnq0AG+jXmzrhzfkyu5A= -golang.org/x/net v0.0.0-20211111083644-e5c967477495/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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= @@ -1472,13 +1401,13 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 h1:B333XXssMuKQeBwiNODx4TupZy7bf4sxFZnN2ZOcvUE= golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= 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= @@ -1569,14 +1498,12 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210217105451-b926d437f341/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1585,16 +1512,10 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678 h1:J27LZFQBFoihqXoegpscI10HpjZ7B5WQLLKL2FZXQKw= golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= @@ -1608,9 +1529,8 @@ 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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= @@ -1770,6 +1690,7 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= @@ -1778,11 +1699,8 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.58.0 h1:MDkAbYIB1JpSgCTOCYYoIec/coMlKK4oVbpnBLLcyT0= google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.62.0 h1:PhGymJMXfGBzc4lBRmrx9+1w4w2wEzURHNGF/sD/xGc= -google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1858,15 +1776,9 @@ google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211016002631-37fc39342514/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 h1:DN5b3HU13J4sMd/QjDx34U6afpaexKTDdop+26pdjdk= google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa h1:I0YcKz0I7OAhddo7ya8kMnvprhcWM045PmkBdMO9zN0= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1899,11 +1811,8 @@ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0 h1:weqSxi/TMs1SqFRMHCtBgXRs8k3X39QIDEZ0pRcttUg= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -1935,8 +1844,9 @@ gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= -gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= +gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= From 2af8ae8e63c98b2c4b90eb37d7792400d451f370 Mon Sep 17 00:00:00 2001 From: Morgante Pell Date: Fri, 18 Feb 2022 15:39:18 -0500 Subject: [PATCH 0043/1371] chore(docs): add link to c.g.c. (#1078) Co-authored-by: Bharath KKB --- docs/terraform.md | 205 +--------------------------------------------- 1 file changed, 2 insertions(+), 203 deletions(-) diff --git a/docs/terraform.md b/docs/terraform.md index 78af164ca9e..8349b304605 100644 --- a/docs/terraform.md +++ b/docs/terraform.md @@ -1,205 +1,4 @@ - - # Terraform -The Cloud Foundation Toolkit includes over **51** Terraform modules. -There are also two end-to-end [examples](#examples) available. - -## Examples -These end-to-end examples are designed to be forked as a starting point: - -- [Example Foundation](https://github.com/terraform-google-modules/terraform-example-foundation) - Example repo showing how the CFT modules can be composed to build a secure cloud foundation. -- [CFT Fabric](https://github.com/terraform-google-modules/cloud-foundation-fabric) - This repo includes an advanced examples designed for prototyping. -## Modules -* [address](https://github.com/terraform-google-modules/terraform-google-address) - A Terraform module for managing Google Cloud IP addresses. -* [bastion-host](https://github.com/terraform-google-modules/terraform-google-bastion-host) - This module will generate a bastion host vm compatible with OS Login and IAP Tunneling that can be used to access internal VMs. - * [bastion-group](https://github.com/terraform-google-modules/terraform-google-bastion-host/tree/master/modules/bastion-group) - * [iap-tunneling](https://github.com/terraform-google-modules/terraform-google-bastion-host/tree/master/modules/iap-tunneling) -* [bigquery](https://github.com/terraform-google-modules/terraform-google-bigquery) - This module allows you to create opinionated Google Cloud Platform BigQuery datasets and tables. - * [authorization](https://github.com/terraform-google-modules/terraform-google-bigquery/tree/master/modules/authorization) - * [udf](https://github.com/terraform-google-modules/terraform-google-bigquery/tree/master/modules/udf) -* [bootstrap](https://github.com/terraform-google-modules/terraform-google-bootstrap) - A module for bootstrapping Terraform usage in a new GCP organization. - * [cloudbuild](https://github.com/terraform-google-modules/terraform-google-bootstrap/tree/master/modules/cloudbuild) -* [cloud-datastore](https://github.com/terraform-google-modules/terraform-google-cloud-datastore) - A Terraform module to help you to manage Google Cloud Datastore. -* [cloud-dns](https://github.com/terraform-google-modules/terraform-google-cloud-dns) - This module makes it easy to create and manage Google Cloud DNS public or private zones, and their records. -* [cloud-nat](https://github.com/terraform-google-modules/terraform-google-cloud-nat) - This module handles opinionated Google Cloud Platform Cloud NAT creation and configuration. -* [cloud-operations](https://github.com/terraform-google-modules/terraform-google-cloud-operations) - This module is a collection of submodules related to Google Cloud Operations (Logging and Monitoring). - * [agent-policy](https://github.com/terraform-google-modules/terraform-google-cloud-operations/tree/master/modules/agent-policy) -* [cloud-router](https://github.com/terraform-google-modules/terraform-google-cloud-router) - Manage a Cloud Router on GCP - * [interconnect_attachment](https://github.com/terraform-google-modules/terraform-google-cloud-router/tree/master/modules/interconnect_attachment) - * [interface](https://github.com/terraform-google-modules/terraform-google-cloud-router/tree/master/modules/interface) -* [cloud-run](https://github.com/GoogleCloudPlatform/terraform-google-cloud-run) - Terraform Module for deploying apps to Cloud Run, along with option to map custom domain -* [cloud-storage](https://github.com/terraform-google-modules/terraform-google-cloud-storage) - This module makes it easy to create one or more GCS buckets, and assign basic permissions on them to arbitrary users. - * [simple_bucket](https://github.com/terraform-google-modules/terraform-google-cloud-storage/tree/master/modules/simple_bucket) -* [composer](https://github.com/terraform-google-modules/terraform-google-composer) - Terraform Module for managing Cloud Composer - * [create_environment](https://github.com/terraform-google-modules/terraform-google-composer/tree/master/modules/create_environment) -* [container-vm](https://github.com/terraform-google-modules/terraform-google-container-vm) - This module simplifies deploying containers on GCE instances. - * [cos-coredns](https://github.com/terraform-google-modules/terraform-google-container-vm/tree/master/modules/cos-coredns) - * [cos-generic](https://github.com/terraform-google-modules/terraform-google-container-vm/tree/master/modules/cos-generic) - * [cos-mysql](https://github.com/terraform-google-modules/terraform-google-container-vm/tree/master/modules/cos-mysql) -* [data-fusion](https://github.com/terraform-google-modules/terraform-google-data-fusion) - [ALPHA] Terraform module for managing Cloud Data Fusion - * [dataproc_profile](https://github.com/terraform-google-modules/terraform-google-data-fusion/tree/master/modules/dataproc_profile) - * [hub_artifact](https://github.com/terraform-google-modules/terraform-google-data-fusion/tree/master/modules/hub_artifact) - * [instance](https://github.com/terraform-google-modules/terraform-google-data-fusion/tree/master/modules/instance) - * [namespace](https://github.com/terraform-google-modules/terraform-google-data-fusion/tree/master/modules/namespace) - * [private_network](https://github.com/terraform-google-modules/terraform-google-data-fusion/tree/master/modules/private_network) - * [wait_healthy](https://github.com/terraform-google-modules/terraform-google-data-fusion/tree/master/modules/wait_healthy) -* [dataflow](https://github.com/terraform-google-modules/terraform-google-dataflow) - This module handles opiniated Dataflow job configuration and deployments. - * [dataflow_bucket](https://github.com/terraform-google-modules/terraform-google-dataflow/tree/master/modules/dataflow_bucket) -* [datalab](https://github.com/terraform-google-modules/terraform-google-datalab) - This module will create DataLab instances with support for GPU instances. - * [iap_firewall](https://github.com/terraform-google-modules/terraform-google-datalab/tree/master/modules/iap_firewall) - * [instance](https://github.com/terraform-google-modules/terraform-google-datalab/tree/master/modules/instance) - * [template_files](https://github.com/terraform-google-modules/terraform-google-datalab/tree/master/modules/template_files) -* [endpoints-dns](https://github.com/terraform-google-modules/terraform-google-endpoints-dns) - -* [event-function](https://github.com/terraform-google-modules/terraform-google-event-function) - Terraform module for responding to logging events with a function - * [event-folder-log-entry](https://github.com/terraform-google-modules/terraform-google-event-function/tree/master/modules/event-folder-log-entry) - * [event-project-log-entry](https://github.com/terraform-google-modules/terraform-google-event-function/tree/master/modules/event-project-log-entry) - * [repository-function](https://github.com/terraform-google-modules/terraform-google-event-function/tree/master/modules/repository-function) -* [folders](https://github.com/terraform-google-modules/terraform-google-folders) - This module helps create several folders under the same parent -* [forseti](https://github.com/terraform-google-modules/terraform-google-forseti) - A Terraform module for installing Forseti on GCP - * [client](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/client) - * [client_config](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/client_config) - * [client_gcs](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/client_gcs) - * [client_iam](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/client_iam) - * [cloudsql](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/cloudsql) - * [on_gke](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/on_gke) - * [real_time_enforcer](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/real_time_enforcer) - * [real_time_enforcer_organization_sink](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/real_time_enforcer_organization_sink) - * [real_time_enforcer_project_sink](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/real_time_enforcer_project_sink) - * [real_time_enforcer_roles](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/real_time_enforcer_roles) - * [rules](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/rules) - * [server](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/server) - * [server_config](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/server_config) - * [server_gcs](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/server_gcs) - * [server_iam](https://github.com/terraform-google-modules/terraform-google-forseti/tree/master/modules/server_iam) -* [gcloud](https://github.com/terraform-google-modules/terraform-google-gcloud) - A module for executing gcloud commands within Terraform. - * [kubectl-wrapper](https://github.com/terraform-google-modules/terraform-google-gcloud/tree/master/modules/kubectl-wrapper) -* [github-actions-runners](https://github.com/terraform-google-modules/terraform-google-github-actions-runners) - [ALPHA] Module to create self-hosted GitHub Actions Runners on GCP - * [gh-runner-gke](https://github.com/terraform-google-modules/terraform-google-github-actions-runners/tree/master/modules/gh-runner-gke) - * [gh-runner-mig-container-vm](https://github.com/terraform-google-modules/terraform-google-github-actions-runners/tree/master/modules/gh-runner-mig-container-vm) - * [gh-runner-mig-vm](https://github.com/terraform-google-modules/terraform-google-github-actions-runners/tree/master/modules/gh-runner-mig-vm) -* [gke-gitlab](https://github.com/terraform-google-modules/terraform-google-gke-gitlab) - Installs GitLab on Kubernetes Engine -* [group](https://github.com/terraform-google-modules/terraform-google-group) - A Terraform module for managing Google Groups -* [gsuite-export](https://github.com/terraform-google-modules/terraform-google-gsuite-export) - -* [healthcare](https://github.com/terraform-google-modules/terraform-google-healthcare) - This module handles opinionated Google Cloud Platform Healthcare datasets and stores. -* [iam](https://github.com/terraform-google-modules/terraform-google-iam) - This Terraform module makes it easier to non-destructively manage multiple IAM roles for resources on Google Cloud Platform. - * [artifact_registry_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/artifact_registry_iam) - * [audit_config](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/audit_config) - * [billing_accounts_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/billing_accounts_iam) - * [custom_role_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/custom_role_iam) - * [folders_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/folders_iam) - * [helper](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/helper) - * [kms_crypto_keys_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/kms_crypto_keys_iam) - * [kms_key_rings_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/kms_key_rings_iam) - * [member_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/member_iam) - * [organizations_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/organizations_iam) - * [projects_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/projects_iam) - * [pubsub_subscriptions_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/pubsub_subscriptions_iam) - * [pubsub_topics_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/pubsub_topics_iam) - * [secret_manager_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/secret_manager_iam) - * [service_accounts_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/service_accounts_iam) - * [storage_buckets_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/storage_buckets_iam) - * [subnets_iam](https://github.com/terraform-google-modules/terraform-google-iam/tree/master/modules/subnets_iam) -* [jenkins](https://github.com/terraform-google-modules/terraform-google-jenkins) - - * [artifact_storage](https://github.com/terraform-google-modules/terraform-google-jenkins/tree/master/modules/artifact_storage) -* [kms](https://github.com/terraform-google-modules/terraform-google-kms) - Simple Cloud KMS module that allows managing a keyring, zero or more keys in the keyring, and IAM role bindings on individual keys. -* [kubernetes-engine](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine) - A Terraform module for configuring GKE clusters. - * [acm](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/acm) - * [asm](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/asm) - * [auth](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/auth) - * [beta-private-cluster](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/beta-private-cluster) - * [beta-private-cluster-update-variant](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/beta-private-cluster-update-variant) - * [beta-public-cluster](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/beta-public-cluster) - * [beta-public-cluster-update-variant](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/beta-public-cluster-update-variant) - * [binary-authorization](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/binary-authorization) - * [config-sync](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/config-sync) - * [hub](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/hub) - * [k8s-operator-crd-support](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/k8s-operator-crd-support) - * [private-cluster](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/private-cluster) - * [private-cluster-update-variant](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/private-cluster-update-variant) - * [safer-cluster](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/safer-cluster) - * [safer-cluster-update-variant](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/safer-cluster-update-variant) - * [services](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/services) - * [workload-identity](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/workload-identity) -* [lb](https://github.com/GoogleCloudPlatform/terraform-google-lb) - Modular Regional TCP Load Balancer for GCE using target pool and forwarding rule. -* [lb-http](https://github.com/GoogleCloudPlatform/terraform-google-lb-http) - Modular Global HTTP Load Balancer for GCE using forwarding rules. - * [dynamic_backends](https://github.com/GoogleCloudPlatform/terraform-google-lb-http/tree/master/modules/dynamic_backends) - * [serverless_negs](https://github.com/GoogleCloudPlatform/terraform-google-lb-http/tree/master/modules/serverless_negs) -* [lb-internal](https://github.com/GoogleCloudPlatform/terraform-google-lb-internal) - Modular Internal Load Balancer for GCE using forwarding rules. -* [log-export](https://github.com/terraform-google-modules/terraform-google-log-export) - This module allows you to create log exports at the project, folder, or organization level. - * [bigquery](https://github.com/terraform-google-modules/terraform-google-log-export/tree/master/modules/bigquery) - * [bq-log-alerting](https://github.com/terraform-google-modules/terraform-google-log-export/tree/master/modules/bq-log-alerting) - * [pubsub](https://github.com/terraform-google-modules/terraform-google-log-export/tree/master/modules/pubsub) - * [storage](https://github.com/terraform-google-modules/terraform-google-log-export/tree/master/modules/storage) -* [memorystore](https://github.com/terraform-google-modules/terraform-google-memorystore) - A Terraform module for creating a fully functional Google Memorystore (redis) instance. - * [memcache](https://github.com/terraform-google-modules/terraform-google-memorystore/tree/master/modules/memcache) -* [network](https://github.com/terraform-google-modules/terraform-google-network) - A Terraform module that makes it easy to set up a new VPC Network in GCP. - * [fabric-net-firewall](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/fabric-net-firewall) - * [fabric-net-svpc-access](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/fabric-net-svpc-access) - * [firewall-rules](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/firewall-rules) - * [network-peering](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/network-peering) - * [routes](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/routes) - * [routes-beta](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/routes-beta) - * [subnets](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/subnets) - * [subnets-beta](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/subnets-beta) - * [vpc](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/vpc) - * [vpc-serverless-connector-beta](https://github.com/terraform-google-modules/terraform-google-network/tree/master/modules/vpc-serverless-connector-beta) -* [org-policy](https://github.com/terraform-google-modules/terraform-google-org-policy) - A Terraform module for managing GCP org policies. - * [bucket_policy_only](https://github.com/terraform-google-modules/terraform-google-org-policy/tree/master/modules/bucket_policy_only) - * [domain_restricted_sharing](https://github.com/terraform-google-modules/terraform-google-org-policy/tree/master/modules/domain_restricted_sharing) - * [restrict_vm_external_ips](https://github.com/terraform-google-modules/terraform-google-org-policy/tree/master/modules/restrict_vm_external_ips) - * [skip_default_network](https://github.com/terraform-google-modules/terraform-google-org-policy/tree/master/modules/skip_default_network) -* [project-factory](https://github.com/terraform-google-modules/terraform-google-project-factory) - Opinionated Google Cloud Platform project creation and configuration with Shared VPC, IAM, APIs, etc. - * [app_engine](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/app_engine) - * [budget](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/budget) - * [core_project_factory](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/core_project_factory) - * [fabric-project](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/fabric-project) - * [gsuite_enabled](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/gsuite_enabled) - * [gsuite_group](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/gsuite_group) - * [project_services](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/project_services) - * [quota_manager](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/quota_manager) - * [shared_vpc](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/shared_vpc) - * [shared_vpc_access](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/shared_vpc_access) - * [svpc_service_project](https://github.com/terraform-google-modules/terraform-google-project-factory/tree/master/modules/svpc_service_project) -* [pubsub](https://github.com/terraform-google-modules/terraform-google-pubsub) - This module makes it easy to create Google Cloud Pub/Sub topic and subscriptions associated with the topic. - * [cloudiot](https://github.com/terraform-google-modules/terraform-google-pubsub/tree/master/modules/cloudiot) -* [sap](https://github.com/terraform-google-modules/terraform-google-sap) - This module is a collection of multiple opinionated submodules to deploy SAP Products. - * [netweaver](https://github.com/terraform-google-modules/terraform-google-sap/tree/master/modules/netweaver) - * [sap_hana](https://github.com/terraform-google-modules/terraform-google-sap/tree/master/modules/sap_hana) - * [sap_hana_ha](https://github.com/terraform-google-modules/terraform-google-sap/tree/master/modules/sap_hana_ha) - * [sap_hana_python](https://github.com/terraform-google-modules/terraform-google-sap/tree/master/modules/sap_hana/sap_hana_python) -* [scheduled-function](https://github.com/terraform-google-modules/terraform-google-scheduled-function) - This modules makes it easy to set up a scheduled job to trigger events/run functions. - * [project_cleanup](https://github.com/terraform-google-modules/terraform-google-scheduled-function/tree/master/modules/project_cleanup) -* [secret](https://github.com/terraform-google-modules/terraform-google-secret) - - * [gcs-object](https://github.com/terraform-google-modules/terraform-google-secret/tree/master/modules/gcs-object) - * [secret-infrastructure](https://github.com/terraform-google-modules/terraform-google-secret/tree/master/modules/secret-infrastructure) -* [service-accounts](https://github.com/terraform-google-modules/terraform-google-service-accounts) - This module allows easy creation of one or more service accounts, and granting them basic roles. - * [key-distributor](https://github.com/terraform-google-modules/terraform-google-service-accounts/tree/master/modules/key-distributor) -* [slo](https://github.com/terraform-google-modules/terraform-google-slo) - Create SLOs on GCP from custom Stackdriver metrics. Capability to export SLOs to GCP services and other systems. - * [slo](https://github.com/terraform-google-modules/terraform-google-slo/tree/master/modules/slo) - * [slo-native](https://github.com/terraform-google-modules/terraform-google-slo/tree/master/modules/slo-native) - * [slo-pipeline](https://github.com/terraform-google-modules/terraform-google-slo/tree/master/modules/slo-pipeline) -* [sql-db](https://github.com/GoogleCloudPlatform/terraform-google-sql-db) - Modular Cloud SQL database instance for Terraform. - * [mssql](https://github.com/GoogleCloudPlatform/terraform-google-sql-db/tree/master/modules/mssql) - * [mysql](https://github.com/GoogleCloudPlatform/terraform-google-sql-db/tree/master/modules/mysql) - * [postgresql](https://github.com/GoogleCloudPlatform/terraform-google-sql-db/tree/master/modules/postgresql) - * [private_service_access](https://github.com/GoogleCloudPlatform/terraform-google-sql-db/tree/master/modules/private_service_access) - * [safer_mysql](https://github.com/GoogleCloudPlatform/terraform-google-sql-db/tree/master/modules/safer_mysql) -* [startup-scripts](https://github.com/terraform-google-modules/terraform-google-startup-scripts) - A library of useful startup scripts to embed in VMs created by Terraform -* [utils](https://github.com/terraform-google-modules/terraform-google-utils) - This module provides a way to get the shortnames for a given GCP region. -* [vault](https://github.com/terraform-google-modules/terraform-google-vault) - Modular deployment of Vault on Google Compute Engine with Terraform - * [cluster](https://github.com/terraform-google-modules/terraform-google-vault/tree/master/modules/cluster) -* [vm](https://github.com/terraform-google-modules/terraform-google-vm) - This is a collection of opinionated submodules that can be used to provision VMs in GCP. - * [compute_disk_snapshot](https://github.com/terraform-google-modules/terraform-google-vm/tree/master/modules/compute_disk_snapshot) - * [compute_instance](https://github.com/terraform-google-modules/terraform-google-vm/tree/master/modules/compute_instance) - * [instance_template](https://github.com/terraform-google-modules/terraform-google-vm/tree/master/modules/instance_template) - * [mig](https://github.com/terraform-google-modules/terraform-google-vm/tree/master/modules/mig) - * [mig_with_percent](https://github.com/terraform-google-modules/terraform-google-vm/tree/master/modules/mig_with_percent) - * [preemptible_and_regular_instance_templates](https://github.com/terraform-google-modules/terraform-google-vm/tree/master/modules/preemptible_and_regular_instance_templates) - * [umig](https://github.com/terraform-google-modules/terraform-google-vm/tree/master/modules/umig) -* [vpc-service-controls](https://github.com/terraform-google-modules/terraform-google-vpc-service-controls) - This module handles opinionated VPC Service Controls and Access Context Manager configuration and deployments. - * [access_level](https://github.com/terraform-google-modules/terraform-google-vpc-service-controls/tree/master/modules/access_level) - * [bridge_service_perimeter](https://github.com/terraform-google-modules/terraform-google-vpc-service-controls/tree/master/modules/bridge_service_perimeter) - * [regular_service_perimeter](https://github.com/terraform-google-modules/terraform-google-vpc-service-controls/tree/master/modules/regular_service_perimeter) -* [vpn](https://github.com/terraform-google-modules/terraform-google-vpn) - A Terraform Module for setting up Google Cloud VPN - * [vpn_ha](https://github.com/terraform-google-modules/terraform-google-vpn/tree/master/modules/vpn_ha) +The complete list of Google Cloud Platform Terraform blueprints +can now be found on the [Google Cloud website](https://g.co/dev/terraformfoundation). From db52889d3656586658f34e19885f4fe1de719020 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 22 Feb 2022 12:33:28 -0600 Subject: [PATCH 0044/1371] chore: bump go version to 1.17 (#1080) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 6bf7cc8de79..dff6e24df08 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -20,7 +20,7 @@ GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 BATS_VERSION := 0.4.0 -GOLANG_VERSION := 1.16 +GOLANG_VERSION := 1.17 BATS_SUPPORT_VERSION := 0.3.0 BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 @@ -30,7 +30,7 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.13 CFT_CLI_VERSION := 0.4.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.3.10 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 4b2a2573b11f03322199cb80a06e68d3a091fc54 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 23 Feb 2022 22:33:46 -0600 Subject: [PATCH 0045/1371] Update tools to 1.4.1 (#1081) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index dff6e24df08..e6a5c007c40 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.6 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 373.0.0 +CLOUD_SDK_VERSION := 374.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -30,7 +30,7 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.13 CFT_CLI_VERSION := 0.4.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 209d4db1173f3a13515331c72af42b23322e8046 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Wed, 2 Mar 2022 19:35:11 -0800 Subject: [PATCH 0046/1371] feat: add asmcli to the krm dev tools image (#1083) * feat:adds asmcli to the krm dev tools image for installing asm during policy controller int testing * Update infra/build/Makefile Co-authored-by: Bharath KKB * adds the latest version of kubectl * adds the env variable for kubectl * removing build folder from krm image Co-authored-by: Awais Malik Co-authored-by: Bharath KKB --- infra/build/Makefile | 6 ++++- infra/build/developer-tools-krm/Dockerfile | 8 +++++++ .../build/install_asmcli.sh | 24 +++++++++++++++++++ infra/build/developer-tools/Dockerfile | 5 +++- .../developer-tools/build/install_kubectl.sh | 4 +++- 5 files changed, 44 insertions(+), 3 deletions(-) create mode 100755 infra/build/developer-tools-krm/build/install_asmcli.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index e6a5c007c40..e731b96ed1d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -29,8 +29,10 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.13 CFT_CLI_VERSION := 0.4.2 +ASMCLI_VERSION := 1.12 +KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -59,6 +61,7 @@ build-image-developer-tools: --build-arg KUSTOMIZE_VERSION=${KUSTOMIZE_VERSION} \ --build-arg KPT_VERSION=${KPT_VERSION} \ --build-arg CFT_CLI_VERSION=${CFT_CLI_VERSION} \ + --build-arg KUBECTL_VERSION=${KUBECTL_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools" docker build \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ @@ -69,6 +72,7 @@ build-image-developer-tools: --build-arg CLOUD_SDK_VERSION=${CLOUD_SDK_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} -f "./developer-tools-light/Dockerfile" docker build \ + --build-arg ASMCLI_VERSION=${ASMCLI_VERSION} \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ -t ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools-krm" diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index f6a9b466cbf..0766babc0c5 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -20,6 +20,14 @@ RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-curr # Additional go tooling RUN GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.40.1 +# Required to download and install asmcli +ARG ASMCLI_VERSION +ENV ASMCLI_VERSION ${ASMCLI_VERSION} + +ADD ./build/install_asmcli.sh /build/ +RUN /build/install_asmcli.sh ${ASMCLI_VERSION} +RUN rm -rf /build + # Add dind helper for prow ADD ./build/scripts/runner.sh /usr/local/bin/ ADD ./build/scripts/prow_entrypoint.sh /usr/local/bin/ diff --git a/infra/build/developer-tools-krm/build/install_asmcli.sh b/infra/build/developer-tools-krm/build/install_asmcli.sh new file mode 100755 index 00000000000..837cd8d1f0e --- /dev/null +++ b/infra/build/developer-tools-krm/build/install_asmcli.sh @@ -0,0 +1,24 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +cd /build + +ASMCLI_VERSION=$1 + +curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_${ASMCLI_VERSION} > asmcli +install -o 0 -g 0 -m 0755 asmcli /usr/local/bin/asmcli diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 8119ba34f2e..c46ba2a11ce 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -79,6 +79,9 @@ ENV KPT_VERSION ${KPT_VERSION} ARG CFT_CLI_VERSION ENV CFT_CLI_VERSION ${CFT_CLI_VERSION} +ARG KUBECTL_VERSION +ENV KUBECTL_VERSION ${KUBECTL_VERSION} + # $WORKSPACE is intended for assets that persist across multiple build steps in a pipeline. # It's also where the project git repository is located. # https://cloud.google.com/cloud-build/docs/build-config @@ -130,7 +133,7 @@ ADD ./build/install_bats.sh /build/ RUN /build/install_bats.sh ${BATS_VERSION} ${BATS_SUPPORT_VERSION} ${BATS_ASSERT_VERSION} ${BATS_MOCK_VERSION} ADD ./build/install_kubectl.sh /build/ -RUN /build/install_kubectl.sh +RUN /build/install_kubectl.sh ${KUBECTL_VERSION} ADD ./build/install_terragrunt.sh /build/ RUN ./build/install_terragrunt.sh ${TERRAGRUNT_VERSION} diff --git a/infra/build/developer-tools/build/install_kubectl.sh b/infra/build/developer-tools/build/install_kubectl.sh index cb1af3bae4a..3fee9bc7aee 100755 --- a/infra/build/developer-tools/build/install_kubectl.sh +++ b/infra/build/developer-tools/build/install_kubectl.sh @@ -18,5 +18,7 @@ set -u cd /build -wget https://storage.googleapis.com/kubernetes-release/release/v1.15.12/bin/linux/amd64/kubectl +KUBECTL_VERSION=$1 + +wget https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl install -o 0 -g 0 -m 0755 kubectl /usr/local/bin/kubectl From 85883fcb2df68bb4709f8b917b9d87a5db216f70 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 3 Mar 2022 00:07:18 -0600 Subject: [PATCH 0047/1371] Update tools to 1.4.2 (#1085) Co-authored-by: Morgante Pell --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index e731b96ed1d..0684cec558a 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.6 +TERRAFORM_VERSION := 1.1.7 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 374.0.0 +CLOUD_SDK_VERSION := 375.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -27,7 +27,7 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.13 +KPT_VERSION := 1.0.0-beta.14 CFT_CLI_VERSION := 0.4.2 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 From 3219f76c430d177db8bb1b90c4c6e46eafa3a723 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Mar 2022 01:07:47 -0500 Subject: [PATCH 0048/1371] chore(deps): bump nokogiri in /infra/build/developer-tools/build/data (#1084) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.12.5 to 1.13.2. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.12.5...v1.13.2) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/build/developer-tools/build/data/Gemfile | 2 +- infra/build/developer-tools/build/data/Gemfile.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/developer-tools/build/data/Gemfile b/infra/build/developer-tools/build/data/Gemfile index 8e75337f7f9..ee92ff23104 100644 --- a/infra/build/developer-tools/build/data/Gemfile +++ b/infra/build/developer-tools/build/data/Gemfile @@ -16,5 +16,5 @@ source 'https://rubygems.org/' do gem "kitchen-terraform", "~> 5.8" gem "kubeclient", "~> 4.0" gem "rest-client", "~> 2.0" - gem 'nokogiri', '~> 1.12' + gem 'nokogiri', '~> 1.13' end diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 6622825829c..eb2762cdddc 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -347,7 +347,7 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2019.0331) mini_mime (1.0.2) - mini_portile2 (2.6.1) + mini_portile2 (2.8.0) minitest (5.14.2) mixlib-config (3.0.9) tomlrb @@ -376,8 +376,8 @@ GEM net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.12.5) - mini_portile2 (~> 2.6.1) + nokogiri (1.13.2) + mini_portile2 (~> 2.8.0) racc (~> 1.4) nori (2.6.0) os (1.1.1) @@ -389,7 +389,7 @@ GEM coderay (~> 1.1) method_source (~> 1.0) public_suffix (4.0.6) - racc (1.5.2) + racc (1.6.0) rake (13.0.0) recursive-open-struct (1.1.0) regexp_parser (1.8.2) @@ -579,7 +579,7 @@ PLATFORMS DEPENDENCIES kitchen-terraform (~> 5.8)! kubeclient (~> 4.0)! - nokogiri (~> 1.12)! + nokogiri (~> 1.13)! rest-client (~> 2.0)! BUNDLED WITH From bad09af2b45598ca08990d3bcb722560b661b3e0 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 4 Mar 2022 17:01:41 -0600 Subject: [PATCH 0049/1371] feat: remove list-setter dep for kpt (#1088) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 2 -- infra/blueprint-test/pkg/kpt/kpt.go | 21 +++++++++++++++++++++ infra/blueprint-test/pkg/kpt/setters.go | 3 +-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index bc90691a356..38ebab2d65e 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.16 require ( - github.com/GoogleContainerTools/kpt-functions-catalog/functions/go/list-setters v0.1.0 + github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20210810181223-632b30549de6 github.com/google/go-cmp v0.5.6 // indirect github.com/gruntwork-io/terratest v0.35.6 github.com/kr/text v0.2.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 74b910ddc4b..2c75d33881f 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -48,8 +48,6 @@ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBp 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= github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= -github.com/GoogleContainerTools/kpt-functions-catalog/functions/go/list-setters v0.1.0 h1:t+0ngfeqinOqizrKkYfXlqTHbUP4meGsuaZ1rnhlFlY= -github.com/GoogleContainerTools/kpt-functions-catalog/functions/go/list-setters v0.1.0/go.mod h1:ju1d4EAij/igLgN+0er7tPc1nTKn/PTjY00buPEsx0Q= github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20210810181223-632b30549de6 h1:oo4q344mHs4eg8puEsXdyikhwORcu2cLsKGsNFDqxqM= github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20210810181223-632b30549de6/go.mod h1:k86q33ABlA9TnUqRmHH9dnKY2Edh8YbxjRyPfjlM8jE= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= diff --git a/infra/blueprint-test/pkg/kpt/kpt.go b/infra/blueprint-test/pkg/kpt/kpt.go index efa2eaa1b73..cd68ad7cb87 100644 --- a/infra/blueprint-test/pkg/kpt/kpt.go +++ b/infra/blueprint-test/pkg/kpt/kpt.go @@ -1,10 +1,16 @@ package kpt import ( + "fmt" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" + kptfilev1 "github.com/GoogleContainerTools/kpt-functions-sdk/go/pkg/api/kptfile/v1" + kptutil "github.com/GoogleContainerTools/kpt-functions-sdk/go/pkg/api/util" "github.com/gruntwork-io/terratest/modules/logger" "github.com/gruntwork-io/terratest/modules/shell" "github.com/mitchellh/go-testing-interface" + "sigs.k8s.io/kustomize/kyaml/kio/kioutil" + "sigs.k8s.io/kustomize/kyaml/yaml" ) type CmdCfg struct { @@ -67,3 +73,18 @@ func (k *CmdCfg) RunCmd(args ...string) string { } return op } + +// findKptfile discovers Kptfile of the root package from slice of nodes +func findKptfile(nodes []*yaml.RNode) (*kptfilev1.KptFile, error) { + for _, node := range nodes { + if node.GetAnnotations()[kioutil.PathAnnotation] == kptfilev1.KptFileName { + s, err := node.String() + if err != nil { + return nil, fmt.Errorf("unable to read Kptfile: %v", err) + } + kf, err := kptutil.DecodeKptfile(s) + return kf, fmt.Errorf("unable to read Kptfile: %v", err) + } + } + return nil, fmt.Errorf("unable to find Kptfile, please include --include-meta-resources flag if a Kptfile is present") +} diff --git a/infra/blueprint-test/pkg/kpt/setters.go b/infra/blueprint-test/pkg/kpt/setters.go index ebc90d2e177..316ffa9e751 100644 --- a/infra/blueprint-test/pkg/kpt/setters.go +++ b/infra/blueprint-test/pkg/kpt/setters.go @@ -5,7 +5,6 @@ import ( "os" "strings" - "github.com/GoogleContainerTools/kpt-functions-catalog/functions/go/list-setters/listsetters" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/kio/kioutil" "sigs.k8s.io/kustomize/kyaml/yaml" @@ -13,7 +12,7 @@ import ( // UpsertSetters inserts or updates setters if apply-setters fn config is discovered. func UpsertSetters(nodes []*yaml.RNode, setters map[string]string) error { - kf, err := listsetters.FindKptfile(nodes) + kf, err := findKptfile(nodes) if err != nil { return err } From 520c9c6d221904fa2078875e91ef4f7d45e2182b Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 4 Mar 2022 23:19:50 -0600 Subject: [PATCH 0050/1371] chore: better log message for recoverable error info (#1089) --- infra/blueprint-test/pkg/discovery/discover.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/pkg/discovery/discover.go b/infra/blueprint-test/pkg/discovery/discover.go index a414eb3fba9..769ef7c42ee 100644 --- a/infra/blueprint-test/pkg/discovery/discover.go +++ b/infra/blueprint-test/pkg/discovery/discover.go @@ -59,15 +59,15 @@ func FindTestConfigs(t testing.TB, intTestDir string) map[string]string { fixturesBase := path.Join(testBase, "../", FixtureDir) explicitTests, err := findDirs(testBase) if err != nil { - t.Logf("Error discovering explicit tests: %v", err) + t.Logf("Skipping explicit tests discovery: %v", err) } fixtures, err := findDirs(fixturesBase) if err != nil { - t.Logf("Error discovering fixtures: %v", err) + t.Logf("Skipping fixtures discovery: %v", err) } examples, err := findDirs(examplesBase) if err != nil { - t.Logf("Error discovering examples: %v", err) + t.Logf("Skipping examples discovery: %v", err) } testCases := make(map[string]string) From 727d5c1b1fafbd45ddfaea7cad99da379891fc6e Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 7 Mar 2022 09:45:45 -0800 Subject: [PATCH 0051/1371] fix: upgrades kpt-sdk dependency to remove the gakekeeper lib reference (#1090) Co-authored-by: Awais Malik --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 134 +--------------------------- infra/blueprint-test/pkg/kpt/kpt.go | 4 +- 3 files changed, 5 insertions(+), 135 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 38ebab2d65e..b975e7c91e2 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.16 require ( - github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20210810181223-632b30549de6 + github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2 github.com/google/go-cmp v0.5.6 // indirect github.com/gruntwork-io/terratest v0.35.6 github.com/kr/text v0.2.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 2c75d33881f..e797f57c84c 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -48,14 +48,12 @@ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBp 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= github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= -github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20210810181223-632b30549de6 h1:oo4q344mHs4eg8puEsXdyikhwORcu2cLsKGsNFDqxqM= -github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20210810181223-632b30549de6/go.mod h1:k86q33ABlA9TnUqRmHH9dnKY2Edh8YbxjRyPfjlM8jE= +github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2 h1:xAvEbj/KELmHntrHXkQVtYitM604wMGHXvI5+zQw22k= +github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2/go.mod h1:lJYiqfBOl6AOiefK9kmkhinbffIysu+nnclOBwKEPlQ= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.7/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= @@ -63,17 +61,14 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v12 v12.0.0 h1:bNEQyAGak9tojivJNkoqWErVCQbjdL7GzRt3F8NvfJ0= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= @@ -92,10 +87,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -125,7 +118,6 @@ github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= @@ -141,17 +133,13 @@ github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -161,66 +149,30 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= -github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -228,8 +180,6 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v0.0.0-20181025225059-d3de96c4c28e/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -265,21 +215,16 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gorilla/mux v0.0.0-20181024020800-521ea7b17d02/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/gruntwork-io/go-commons v0.8.0/go.mod h1:gtp0yTtIBExIZp7vyIV9I0XQkVwiQZze678hvDXof78= @@ -301,7 +246,6 @@ github.com/hashicorp/terraform-json v0.9.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o= @@ -337,8 +281,6 @@ github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3v github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= @@ -348,7 +290,6 @@ github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-runewidth v0.0.0-20181025052659-b20a3daf6a39/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= @@ -378,20 +319,14 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWb github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20200420221412-5bae2037a343/go.mod h1:Dr3QxvH+NTQcPPZWSt1ueNOsxW4VwgUltaLL7Ttnrac= -github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible/go.mod h1:gWd63apzboCsahWE6btvIzIcXcNxT+lJvUAaluqVu/E= -github.com/open-policy-agent/opa v0.19.1/go.mod h1:rrwxoT/b011T0cyj+gg2VvxqTtn6N3gp/jzmr3fjW44= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= @@ -402,11 +337,8 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/peterh/liner v0.0.0-20170211195444-bf27d3ba8e1d/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/pkg/errors v0.0.0-20181023235946-059132a15dd0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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= @@ -416,25 +348,19 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= -github.com/prometheus/client_golang v0.0.0-20181025174421-f30f42803563/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_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/common v0.0.0-20181020173914-7e9e6cabbd39/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= @@ -450,19 +376,16 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.0-20181021141114-fe5e611709b0/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v0.0.0-20181024212040-082b515c9490/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -485,7 +408,6 @@ github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -496,15 +418,12 @@ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijb github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= -github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b/go.mod h1:HptNXiXVDcJjXe9SqMd0v2FsL9f8dz4GnXgltU6q/co= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1 h1:vGMsygfmeCl4Xb6OA5U5XVAaQZ69FvoG7X2jUtQujb8= @@ -512,35 +431,25 @@ github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= -go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/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-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= @@ -553,7 +462,6 @@ golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm0 golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= 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-20181023182221-1baf3a9d7d67/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -568,19 +476,15 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -589,7 +493,6 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -614,7 +517,6 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -625,7 +527,6 @@ golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -656,7 +557,6 @@ golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+ golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/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.20171227012246-e19ae1496984/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -671,7 +571,6 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -682,7 +581,6 @@ golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= @@ -700,7 +598,6 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= @@ -716,7 +613,6 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -754,7 +650,6 @@ gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -762,7 +657,6 @@ gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -779,52 +673,31 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -k8s.io/api v0.0.0-20190918155943-95b840bb6a1f/go.mod h1:uWuOHnjmNrtQomJrvEBg0c0HRNyQ+8KTEERVsK0PW48= k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= -k8s.io/api v0.17.4/go.mod h1:5qxx6vjmwUVG2nHQTKGlLts8Tbok8PzHl4vHtVFuZCA= k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= -k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783/go.mod h1:xvae1SZB3E17UpV59AWc271W/Ph25N+bjPyR63X6tPY= -k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs= -k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT68DBI8uEePRt89cSvoXUVqbkWHq4= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.4/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g= k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= -k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg= k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= -k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo= -k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90/go.mod h1:J69/JveO6XESwVgG53q3Uz5OSfgsv4uxpScmmyYOOlk= k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= -k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= -k8s.io/client-go v0.17.4/go.mod h1:ouF6o5pz3is8qU0/qYL2RnoxOPqgfuidYLowytyLJmc= k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE= -k8s.io/code-generator v0.0.0-20190912054826-cd179ad6a269/go.mod h1:V5BD6M4CyaN5m+VthcclXWsVcT1Hu+glwa1bi3MIsyE= k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/component-base v0.0.0-20190918160511-547f6c5d7090/go.mod h1:933PBGtQFJky3TEwYx4aEPZ4IxqhWh3R6DCmzqIn1hA= k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= -k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs= k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= -k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= @@ -832,14 +705,11 @@ modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03 modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= sigs.k8s.io/kustomize/kyaml v0.11.0 h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA= sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/infra/blueprint-test/pkg/kpt/kpt.go b/infra/blueprint-test/pkg/kpt/kpt.go index cd68ad7cb87..e21f649b2ba 100644 --- a/infra/blueprint-test/pkg/kpt/kpt.go +++ b/infra/blueprint-test/pkg/kpt/kpt.go @@ -4,8 +4,8 @@ import ( "fmt" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" - kptfilev1 "github.com/GoogleContainerTools/kpt-functions-sdk/go/pkg/api/kptfile/v1" - kptutil "github.com/GoogleContainerTools/kpt-functions-sdk/go/pkg/api/util" + kptfilev1 "github.com/GoogleContainerTools/kpt-functions-sdk/go/api/kptfile/v1" + kptutil "github.com/GoogleContainerTools/kpt-functions-sdk/go/api/util" "github.com/gruntwork-io/terratest/modules/logger" "github.com/gruntwork-io/terratest/modules/shell" "github.com/mitchellh/go-testing-interface" From 21d0dee0c8ea2546d23fbe113619bc588d07c8ba Mon Sep 17 00:00:00 2001 From: Alejandro Leal Date: Mon, 7 Mar 2022 12:46:51 -0500 Subject: [PATCH 0052/1371] fix: mostly wording and spelling (#1086) * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update template_dev_guide.md * Update backend_service.py.schema * Update bigquery_table.py.schema * Update cloud_sql.py.schema * Update dns_managed_zone.py.schema * Update folder.py.schema * Update README.md * Update internal_load_balancer.py.schema * Update ip_reservation.py.schema * Update kms.py.schema * Update README.md * Update logsink.py.schema * Update project.py.schema * Update resource_policy.py.schema * Update vpn.py.schema * Update dm/templates/backend_service/backend_service.py.schema * Update dm/templates/internal_load_balancer/internal_load_balancer.py.schema * Update dm/templates/cloud_sql/cloud_sql.py.schema * Update dm/templates/project/project.py.schema Co-authored-by: Morgante Pell --- config-connector/solutions/iam/helm/folder-iam/README.md | 2 +- config-connector/solutions/iam/helm/kms-key-ring/README.md | 4 ++-- config-connector/solutions/iam/helm/member-iam/README.md | 4 ++-- config-connector/solutions/iam/helm/project-iam/README.md | 4 ++-- .../solutions/iam/helm/pubsub-subscription/README.md | 4 ++-- config-connector/solutions/iam/helm/pubsub-topic/README.md | 4 ++-- .../solutions/iam/helm/service-account/README.md | 2 +- .../solutions/iam/helm/storage-bucket-iam/README.md | 2 +- config-connector/solutions/iam/helm/subnet/README.md | 2 +- .../solutions/networking/helm/autoneg/README.md | 2 +- dm/docs/template_dev_guide.md | 2 +- dm/templates/backend_service/backend_service.py.schema | 2 +- dm/templates/bigquery/bigquery_table.py.schema | 2 +- dm/templates/cloud_sql/cloud_sql.py.schema | 2 +- dm/templates/dns_managed_zone/dns_managed_zone.py.schema | 6 +++--- dm/templates/folder/folder.py.schema | 4 ++-- dm/templates/iam_member/README.md | 2 +- .../internal_load_balancer/internal_load_balancer.py.schema | 2 +- dm/templates/ip_reservation/ip_reservation.py.schema | 2 +- dm/templates/kms/README.md | 2 +- dm/templates/kms/kms.py.schema | 2 +- dm/templates/logsink/logsink.py.schema | 2 +- dm/templates/project/project.py.schema | 4 ++-- dm/templates/resource_policy/resource_policy.py.schema | 2 +- dm/templates/vpn/vpn.py.schema | 2 +- 25 files changed, 34 insertions(+), 34 deletions(-) diff --git a/config-connector/solutions/iam/helm/folder-iam/README.md b/config-connector/solutions/iam/helm/folder-iam/README.md index 71a0c2d65d6..3bfd6667b29 100644 --- a/config-connector/solutions/iam/helm/folder-iam/README.md +++ b/config-connector/solutions/iam/helm/folder-iam/README.md @@ -55,7 +55,7 @@ All steps are running from the current directory ([config-connector/solutions/ia helm install . --set iamPolicyMember.iamMember=user:name@example.com,folderID=VALUE --generate-name ``` -1. _Optionaly_, you can also change the role granted to the member. (you can find all of the folder related IAM roles +1. _Optionally_, you can also change the role granted to the member. (you can find all of the folder related IAM roles [here](https://cloud.google.com/iam/docs/understanding-roles#resource-manager-roles)): ```bash # install your chart with a new IAM role. diff --git a/config-connector/solutions/iam/helm/kms-key-ring/README.md b/config-connector/solutions/iam/helm/kms-key-ring/README.md index d9f4df7e50d..7d4a2fe1c1d 100644 --- a/config-connector/solutions/iam/helm/kms-key-ring/README.md +++ b/config-connector/solutions/iam/helm/kms-key-ring/README.md @@ -54,10 +54,10 @@ All steps are run from the current directory ([config-connector/solutions/iam/he helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name ``` -1. _Optionaly_, you can set the name of the KMS keyring (defaults to `allowed-ring`), set the location of the ring (defaults to `us-central1`) and the role to grant (defaults to `roles/pubsub.editor`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#cloud-kms-roles)) by explictly setting them when installing the solution: +1. _Optionally_, you can set the name of the KMS keyring (defaults to `allowed-ring`), set the location of the ring (defaults to `us-central1`) and the role to grant (defaults to `roles/pubsub.editor`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#cloud-kms-roles)) by explicitly setting them when installing the solution: ```bash - # install your chart with a difirent name of the KMS keyring and location + # install your chart with a different name of the KMS keyring and location helm install . --set KMSKeyRing.name=your-ring-name,KMSKeyRing.location=us-west1,iamPolicyMember.iamMember=user:name@example.com --generate-name ``` Or, diff --git a/config-connector/solutions/iam/helm/member-iam/README.md b/config-connector/solutions/iam/helm/member-iam/README.md index a4415845645..9b13d0552a9 100644 --- a/config-connector/solutions/iam/helm/member-iam/README.md +++ b/config-connector/solutions/iam/helm/member-iam/README.md @@ -64,12 +64,12 @@ All steps are run from the current directory ([config-connector/solutions/iam/he (you can find all the predefined GCP IAM roles [here](https://cloud.google.com/iam/docs/understanding-roles#predefined_roles)): ```bash - # install your chart with a diffirent service account name + # install your chart with a different service account name helm install . --set projectID=PROJECT_ID,iamPolicyMember.iamMember=service-account-name --namespace member-iam-solution --generate-name ``` Or, ```bash - # install your chart with a diffirent role + # install your chart with a different role helm install . --set projectID=PROJECT_ID,iamPolicyMember.role=roles/compute.networkUser --namespace member-iam-solution --generate-name ``` Or set both in one command. diff --git a/config-connector/solutions/iam/helm/project-iam/README.md b/config-connector/solutions/iam/helm/project-iam/README.md index 934ab0680fd..b86758325b7 100644 --- a/config-connector/solutions/iam/helm/project-iam/README.md +++ b/config-connector/solutions/iam/helm/project-iam/README.md @@ -54,10 +54,10 @@ All steps are run from the current directory ([config-connector/solutions/iam/he helm install . --set iamPolicyMember.iamMember=user:name@example.com,projectID=PROJECT_ID --generate-name ``` -1. _Optionaly_, you can also change the role (defaults to `roles/logging.viewer`): +1. _Optionally_, you can also change the role (defaults to `roles/logging.viewer`): ```bash - # install your chart with a diffirent role + # install your chart with a different role helm install . --set iamPolicyMember.iamMember=user:name@example.com,iamPolicyMember.role=roles/logging.admin,projectID=PROJECT_ID --generate-name ``` diff --git a/config-connector/solutions/iam/helm/pubsub-subscription/README.md b/config-connector/solutions/iam/helm/pubsub-subscription/README.md index 84289448963..9d36ba480ba 100644 --- a/config-connector/solutions/iam/helm/pubsub-subscription/README.md +++ b/config-connector/solutions/iam/helm/pubsub-subscription/README.md @@ -54,10 +54,10 @@ All steps are run from the current directory ([config-connector/solutions/iam/he helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name ``` -1. _Optionaly_, you can set the name of the pubsub subscription (defaults to `allowed-subscription`), set the name of the PubSub topic (defaults to `allowed-topic`) and the role to grant (defaults to `roles/pubsub.viewer`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#pub-sub-roles)) by explictly setting them when installing the solution: +1. _Optionally_, you can set the name of the pubsub subscription (defaults to `allowed-subscription`), set the name of the PubSub topic (defaults to `allowed-topic`) and the role to grant (defaults to `roles/pubsub.viewer`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#pub-sub-roles)) by explicitly setting them when installing the solution: ```bash - # install your chart with a difirent pubsub subscription and pubsub topic + # install your chart with a different pubsub subscription and pubsub topic helm install . --set PubSubTopic.name=your-topic-name,PubSubSubscription.name=your-subscription-name,iamPolicyMember.iamMember=user:name@example.com --generate-name ``` Or, diff --git a/config-connector/solutions/iam/helm/pubsub-topic/README.md b/config-connector/solutions/iam/helm/pubsub-topic/README.md index 75ad9457272..acab1184699 100644 --- a/config-connector/solutions/iam/helm/pubsub-topic/README.md +++ b/config-connector/solutions/iam/helm/pubsub-topic/README.md @@ -58,10 +58,10 @@ All steps are run from the current directory ([config-connector/solutions/iam/he helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name ``` -1. _Optionaly_, you can set the name of the PubSub topic (defaults to `allowed-topic`) and the role to grant (defaults to `roles/pubsub.editor`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#pub-sub-roles)) by explictly setting them when installing the solution: +1. _Optionally_, you can set the name of the PubSub topic (defaults to `allowed-topic`) and the role to grant (defaults to `roles/pubsub.editor`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#pub-sub-roles)) by explicitly setting them when installing the solution: ```bash - # install your chart with a difirent name of the PubSub topic + # install your chart with a different name of the PubSub topic helm install . --set PubSubTopic.name=your-topic,iamPolicyMember.iamMember=user:name@example.com --generate-name ``` Or, diff --git a/config-connector/solutions/iam/helm/service-account/README.md b/config-connector/solutions/iam/helm/service-account/README.md index 3aea394cc67..8adb96f86a1 100644 --- a/config-connector/solutions/iam/helm/service-account/README.md +++ b/config-connector/solutions/iam/helm/service-account/README.md @@ -51,7 +51,7 @@ All steps are run from the current directory ([config-connector/solutions/iam/he helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name ``` -1. _Optionaly_, you can customize optional values by explictly setting them when installing the solution: +1. _Optionally_, you can customize optional values by explicitly setting them when installing the solution: ```bash # install your chart with a new service account name helm install . --set serviceAccount.name=new-service-account,iamPolicyMember.iamMember=user:name@example.com --generate-name diff --git a/config-connector/solutions/iam/helm/storage-bucket-iam/README.md b/config-connector/solutions/iam/helm/storage-bucket-iam/README.md index ea701ece323..eeeae7522bf 100644 --- a/config-connector/solutions/iam/helm/storage-bucket-iam/README.md +++ b/config-connector/solutions/iam/helm/storage-bucket-iam/README.md @@ -55,7 +55,7 @@ All steps are run from the current directory ([config-connector/solutions/iam/he helm install . --set iamPolicyMember.iamMember=user:name@example.com,StorageBucket.name=your-bucket --generate-name ``` -1. _Optionaly_, you can customize optional value role of iam policy member (defaults to `roles/storage.objectViewer`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#storage-roles)): +1. _Optionally_, you can customize optional value role of iam policy member (defaults to `roles/storage.objectViewer`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#storage-roles)): ```bash # install your chart with a new role helm install . --set iamPolicyMember.iamMember=user:name@example.com,StorageBucket.name=your-bucket,iamPolicyMember.role=roles/storage.admin --generate-name diff --git a/config-connector/solutions/iam/helm/subnet/README.md b/config-connector/solutions/iam/helm/subnet/README.md index 4730b32d586..7c7744b0d4e 100644 --- a/config-connector/solutions/iam/helm/subnet/README.md +++ b/config-connector/solutions/iam/helm/subnet/README.md @@ -51,7 +51,7 @@ All steps are run from the current directory ([config-connector/solutions/iam/he helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name ``` -1. _Optionaly_, you can customize optional values by explictly setting them when installing the solution: +1. _Optionally_, you can customize optional values by explicitly setting them when installing the solution: ```bash # install your chart with a new subnet name helm install . --set subnet.name=new-subnet,iamPolicyMember.iamMember=user:name@example.com --generate-name diff --git a/config-connector/solutions/networking/helm/autoneg/README.md b/config-connector/solutions/networking/helm/autoneg/README.md index 71719b80943..04fe7a9f1eb 100644 --- a/config-connector/solutions/networking/helm/autoneg/README.md +++ b/config-connector/solutions/networking/helm/autoneg/README.md @@ -70,7 +70,7 @@ All steps are run from this directory. 1. Wait for clusters to be created ```bash - # The command uses cluster names based on the values passed in the ealier step + # The command uses cluster names based on the values passed in the earlier step kubectl wait --for=condition=Ready containercluster/cluster-na containercluster/cluster-eu ``` diff --git a/dm/docs/template_dev_guide.md b/dm/docs/template_dev_guide.md index 05ae3ba3333..d8302c312ef 100644 --- a/dm/docs/template_dev_guide.md +++ b/dm/docs/template_dev_guide.md @@ -112,7 +112,7 @@ using service account json https://cloud.google.com/sdk/gcloud/reference/auth/ac Create test config file by following [Using the Cloud Foundation Config File](#using-the-cloud-foundation-config-file) -Build test dcocker image: +Build test docker image: cd cloud-foundation-toolkit/dm make cft-build-base-image diff --git a/dm/templates/backend_service/backend_service.py.schema b/dm/templates/backend_service/backend_service.py.schema index 3a9897e6974..c1ef6ee2be9 100644 --- a/dm/templates/backend_service/backend_service.py.schema +++ b/dm/templates/backend_service/backend_service.py.schema @@ -316,7 +316,7 @@ properties: type: integer description: | The time period during which the instance is drained (not accepting - new connections but still procedding the ones accepted earlier). + new connections but still processing the ones accepted earlier). customRequestHeaders: type: array uniqueItems: true diff --git a/dm/templates/bigquery/bigquery_table.py.schema b/dm/templates/bigquery/bigquery_table.py.schema index 610436ed67a..bb02e93ef61 100644 --- a/dm/templates/bigquery/bigquery_table.py.schema +++ b/dm/templates/bigquery/bigquery_table.py.schema @@ -412,7 +412,7 @@ properties: view: type: object additionalProperties: false - description: The view definintion. + description: The view definition. properties: query: type: string diff --git a/dm/templates/cloud_sql/cloud_sql.py.schema b/dm/templates/cloud_sql/cloud_sql.py.schema index 19bb7319602..5acfa62a8a3 100644 --- a/dm/templates/cloud_sql/cloud_sql.py.schema +++ b/dm/templates/cloud_sql/cloud_sql.py.schema @@ -517,7 +517,7 @@ properties: dependsOn: - resource-name-1 - resource-name-2 - or if it't neccessary to wait for another instance of cloud_sql template + or if it's necessary to wait for another instance of cloud_sql template to finish when, e.g. building a read replica: dependsOn: $(ref.master-instance-of-cloud-sql.resources) items: diff --git a/dm/templates/dns_managed_zone/dns_managed_zone.py.schema b/dm/templates/dns_managed_zone/dns_managed_zone.py.schema index c54cab3c4c2..ba376adb98a 100644 --- a/dm/templates/dns_managed_zone/dns_managed_zone.py.schema +++ b/dm/templates/dns_managed_zone/dns_managed_zone.py.schema @@ -46,8 +46,8 @@ properties: type: string pattern: ^[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?$ description: | - Old resource name to support backward compatablility. - Value is rescricted by API pattern for `resource.name` + Old resource name to support backward compatibility. + Value is restricted by API pattern for `resource.name` The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes. description: @@ -71,7 +71,7 @@ properties: - kind - state - defaultKeySpecs - proeprties: + properties: defaultKeySpecs: type: array uniqueItems: true diff --git a/dm/templates/folder/folder.py.schema b/dm/templates/folder/folder.py.schema index f148ad5c682..ff82a080992 100644 --- a/dm/templates/folder/folder.py.schema +++ b/dm/templates/folder/folder.py.schema @@ -83,7 +83,7 @@ properties: properties: type: type: string - decription: The parent type (organization or folder). + description: The parent type (organization or folder). enum: - organization - folder @@ -133,7 +133,7 @@ outputs: lifecycleState: type: string description: The Folder's current lifecycle state. - + documentation: - templates/folder/README.md diff --git a/dm/templates/iam_member/README.md b/dm/templates/iam_member/README.md index 9a3997a6566..429f94bb57c 100644 --- a/dm/templates/iam_member/README.md +++ b/dm/templates/iam_member/README.md @@ -23,7 +23,7 @@ For more restrictive permissions grant the appropriate resource level admin perm Resources are created based on the input properties: - [cloudresourcemanager-v1:virtual.projects.iamMemberBinding](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/google/resource-snippets/cloudresourcemanager-v1/policies.jinja) - - This virtual endpoint implements projects.getIamPolicy and projects.setIamPolicy internally with proper concurancy handling. + - This virtual endpoint implements projects.getIamPolicy and projects.setIamPolicy internally with proper concurrency handling. - [cloudresourcemanager-v2:virtual.folders.iamMemberBinding](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/google/resource-snippets/cloudresourcemanager-v2/policies.jinja) - [cloudresourcemanager-v1:virtual.organizations.iamMemberBinding](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/google/resource-snippets/cloudresourcemanager-v1/policies.jinja) - storage-v1:virtual.buckets.iamMemberBinding diff --git a/dm/templates/internal_load_balancer/internal_load_balancer.py.schema b/dm/templates/internal_load_balancer/internal_load_balancer.py.schema index 2906c223050..528d5b9be26 100644 --- a/dm/templates/internal_load_balancer/internal_load_balancer.py.schema +++ b/dm/templates/internal_load_balancer/internal_load_balancer.py.schema @@ -168,7 +168,7 @@ properties: type: integer description: | The time period during which the instance is drained (is not - accepting new connections but still procedding the ones accepted + accepting new connections but still processing the ones accepted earlier). outputs: diff --git a/dm/templates/ip_reservation/ip_reservation.py.schema b/dm/templates/ip_reservation/ip_reservation.py.schema index 97206d03e77..e2151bb7bdc 100644 --- a/dm/templates/ip_reservation/ip_reservation.py.schema +++ b/dm/templates/ip_reservation/ip_reservation.py.schema @@ -65,7 +65,7 @@ properties: prefixLength: type: number description: | - The prefix length if the resource reprensents an IP range. + The prefix length if the resource represents an IP range. networkTier: type: string description: | diff --git a/dm/templates/kms/README.md b/dm/templates/kms/README.md index 50fc8da57df..192be51cace 100644 --- a/dm/templates/kms/README.md +++ b/dm/templates/kms/README.md @@ -14,7 +14,7 @@ This template creates a Google Cloud KMS KeyRing and Keys. ### Resources - [gcp-types/cloudkms-v1](https://cloud.google.com/kms/docs/reference/rest/) -- [KMS Object heirarchy](https://cloud.google.com/kms/docs/object-hierarchy) +- [KMS Object hierarchy](https://cloud.google.com/kms/docs/object-hierarchy) - [KMS Key Version States](https://cloud.google.com/kms/docs/key-states) - [KMS Object Lifetime](https://cloud.google.com/kms/docs/object-hierarchy#lifetime) diff --git a/dm/templates/kms/kms.py.schema b/dm/templates/kms/kms.py.schema index ff7e4bae89f..c7185ea3a99 100644 --- a/dm/templates/kms/kms.py.schema +++ b/dm/templates/kms/kms.py.schema @@ -61,7 +61,7 @@ properties: type: string pattern: ^[a-zA-Z0-9_-]{1,63} description: | - The name for the CrytoKey. Must be unique within a KeyRing. + The name for the CryptoKey. Must be unique within a KeyRing. cryptoKeyPurpose: type: string default: ENCRYPT_DECRYPT diff --git a/dm/templates/logsink/logsink.py.schema b/dm/templates/logsink/logsink.py.schema index 1b161c4f1be..7f49ffb5c3e 100644 --- a/dm/templates/logsink/logsink.py.schema +++ b/dm/templates/logsink/logsink.py.schema @@ -90,7 +90,7 @@ properties: Determines the kind of the IAM identity returned as writerIdentity for the new sink. If "true", the sink is owned by a non-project resource such as an organization. In this case, the writerIdentity value is a unique - serivce account used only for exports from the new sink. + service account used only for exports from the new sink. default: true filter: type: string diff --git a/dm/templates/project/project.py.schema b/dm/templates/project/project.py.schema index a246fd13c53..281c1ea7797 100644 --- a/dm/templates/project/project.py.schema +++ b/dm/templates/project/project.py.schema @@ -332,10 +332,10 @@ outputs: description: The number uniquely identifying the project. containerSA: type: string - description: The built-in ServieAccount name for container services. (With 'śerviceAccount:' prefix.) ( Only exists if container.googleapis.com is enabled.) + description: The built-in ServiceAccount name for container services. (With 'serviceAccount:' prefix.) ( Only exists if container.googleapis.com is enabled.) containerSADisplayName: type: string - description: The built-in ServieAccount name for container services. ( Only exists if container.googleapis.com is enabled.) + description: The built-in ServiceAccount name for container services. ( Only exists if container.googleapis.com is enabled.) serviceAccountDisplayName: type: string description: Name of the default service account for the project. diff --git a/dm/templates/resource_policy/resource_policy.py.schema b/dm/templates/resource_policy/resource_policy.py.schema index cc1c5dfb51f..7cce6233f3a 100644 --- a/dm/templates/resource_policy/resource_policy.py.schema +++ b/dm/templates/resource_policy/resource_policy.py.schema @@ -143,7 +143,7 @@ schemas: type: object ResourcePolicySnapshotSchedulePolicySchedule: description: | - A schedule for disks where the schedueled operations are performed. + A schedule for disks where the scheduled operations are performed. id: '#ResourcePolicySnapshotSchedulePolicySchedule' properties: dailySchedule: diff --git a/dm/templates/vpn/vpn.py.schema b/dm/templates/vpn/vpn.py.schema index 32b5c6f3a21..6efd082ee8f 100644 --- a/dm/templates/vpn/vpn.py.schema +++ b/dm/templates/vpn/vpn.py.schema @@ -17,7 +17,7 @@ info: author: Sourced Group version: 1.1.0 description: | - Creates a VPN tunnel, gateway, and fowarding rules. + Creates a VPN tunnel, gateway, and forwarding rules. For more information on this resource: https://cloud.google.com/vpn/docs/concepts/overview From 06bd12e1d576130c8743792657b8e58cc56d5698 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 9 Mar 2022 00:32:10 -0600 Subject: [PATCH 0053/1371] Update tools to 1.4.3 (#1094) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 0684cec558a..367e310d51e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.7 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 375.0.0 +CLOUD_SDK_VERSION := 376.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.2 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 7acacb0a381f197f8543a49680bce3a7591218de Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 9 Mar 2022 10:59:59 -0600 Subject: [PATCH 0054/1371] feat(cli): improve test targeting (#1092) * feat(cli): improve test targeting * update deps * improve error message --- cli/bptest/cmd.go | 14 +++++++++----- cli/bptest/run.go | 34 ++++++++++++++++++-------------- cli/bptest/run_test.go | 44 +++++++++++++++++++++++++++--------------- cli/go.mod | 3 ++- cli/go.sum | 14 +++----------- 5 files changed, 62 insertions(+), 47 deletions(-) diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index 140cbca3f1d..714caa95d51 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -71,18 +71,22 @@ var runCmd = &cobra.Command{ if err := cobra.ExactArgs(1)(cmd, args); err != nil { return err } - if err := isValidTestName(flags.testDir, args[0]); err != nil { - return err - } return nil }, RunE: func(cmd *cobra.Command, args []string) error { - intTestDir := flags.testDir + intTestDir, err := getIntTestDir(flags.testDir) + if err != nil { + return fmt.Errorf("error discovering test dir: %v", err) + } testStage, err := validateAndGetStage(flags.testStage) if err != nil { return err } - testCmd, err := getTestCmd(intTestDir, testStage, args[0]) + relTestPkg, err := validateAndGetRelativeTestPkg(intTestDir, args[0]) + if err != nil { + return err + } + testCmd, err := getTestCmd(intTestDir, testStage, args[0], relTestPkg) if err != nil { return err } diff --git a/cli/bptest/run.go b/cli/bptest/run.go index 87a2f48d8e5..0334db9692f 100644 --- a/cli/bptest/run.go +++ b/cli/bptest/run.go @@ -5,6 +5,8 @@ import ( "fmt" "os" "os/exec" + "path" + "path/filepath" "regexp" "sync" @@ -21,16 +23,16 @@ const ( var allTestArgs = []string{"-p", "1", "-count", "1", "-timeout", "0"} -// isValidTestName validates a given test or test regex is part of the blueprint test set -func isValidTestName(intTestDir string, name string) error { +// validateAndGetRelativeTestPkg validates a given test or test regex is part of the blueprint test set and returns location of test relative to intTestDir +func validateAndGetRelativeTestPkg(intTestDir string, name string) (string, error) { // user wants to run all tests if name == allTests { - return nil + return "./...", nil } tests, err := getTests(intTestDir) if err != nil { - return err + return "", err } testNames := []string{} for _, test := range tests { @@ -39,12 +41,20 @@ func isValidTestName(intTestDir string, name string) error { continue } matched, _ := regexp.Match(name, []byte(test.name)) - if test.name == name || matched { - return nil + if test.name == name { + //exact match, return test relative test pkg + relPkg, err := filepath.Rel(intTestDir, path.Dir(test.location)) + if err != nil { + return "", err + } + return fmt.Sprintf("./%s", relPkg), nil + } else if matched { + // loose match, more than one test could be specified + return "./...", nil } testNames = append(testNames, test.name) } - return fmt.Errorf("unable to find %s- one of %+q expected", name, append(testNames, allTests)) + return "", fmt.Errorf("unable to find %s- one of %+q expected", name, append(testNames, allTests)) } // streamExec runs a given cmd while streaming logs @@ -79,11 +89,7 @@ func streamExec(cmd *exec.Cmd) error { } // getTestCmd returns a prepared cmd for running the specified tests(s) -func getTestCmd(intTestDir string, testStage string, testName string) (*exec.Cmd, error) { - intTestDir, err := getIntTestDir(intTestDir) - if err != nil { - return nil, err - } +func getTestCmd(intTestDir string, testStage string, testName string, relTestPkg string) (*exec.Cmd, error) { // pass all current env vars to test command env := os.Environ() @@ -93,9 +99,9 @@ func getTestCmd(intTestDir string, testStage string, testName string) (*exec.Cmd } // determine binary and args used for test execution - testArgs := append([]string{"./..."}, allTestArgs...) + testArgs := append([]string{relTestPkg}, allTestArgs...) if testName != allTests { - testArgs = append([]string{"./...", "-run", testName}, allTestArgs...) + testArgs = append([]string{relTestPkg, "-run", testName}, allTestArgs...) } cmdBin := goBin if utils.BinaryInPath(gotestBin) != nil { diff --git a/cli/bptest/run_test.go b/cli/bptest/run_test.go index d2c99b9f734..e74a8e16810 100644 --- a/cli/bptest/run_test.go +++ b/cli/bptest/run_test.go @@ -13,28 +13,34 @@ func TestIsValidTestName(t *testing.T) { name string intTestDir string testName string + relTestPkg string errMsg string }{ { - name: "valid explicit", - testName: "TestBar", + name: "valid explicit", + testName: "TestBar", + relTestPkg: "./bar", }, { - name: "valid discovered", - testName: "TestAll/examples/baz", + name: "valid discovered", + testName: "TestAll/examples/baz", + relTestPkg: "./.", }, { - name: "valid all regex", - testName: "Test.*", + name: "valid all regex", + testName: "Test.*", + relTestPkg: "./...", }, { - name: "all", - testName: "all", + name: "all", + testName: "all", + relTestPkg: "./...", }, { - name: "invalid", - testName: "TestBaz", - errMsg: "unable to find TestBaz- one of [\"TestAll/examples/baz\" \"TestAll/fixtures/qux\" \"TestBar\" \"TestFoo\" \"all\"]", + name: "invalid", + testName: "TestBaz", + relTestPkg: "", + errMsg: "unable to find TestBaz- one of [\"TestAll/examples/baz\" \"TestAll/fixtures/qux\" \"TestBar\" \"TestFoo\" \"all\"]", }, } for _, tt := range tests { @@ -43,11 +49,12 @@ func TestIsValidTestName(t *testing.T) { if tt.intTestDir == "" { tt.intTestDir = path.Join(testDirWithDiscovery, intTestDir) } - err := isValidTestName(tt.intTestDir, tt.testName) + relTestPkg, err := validateAndGetRelativeTestPkg(tt.intTestDir, tt.testName) if tt.errMsg != "" { assert.NotNil(err) assert.Contains(err.Error(), tt.errMsg) } else { + assert.Equal(tt.relTestPkg, relTestPkg) assert.NoError(err) } }) @@ -61,13 +68,15 @@ func TestGetTestCmd(t *testing.T) { intTestDir string testStage string testName string + relTestPkg string wantArgs []string errMsg string }{ { - name: "single test", - testName: "TestFoo", - wantArgs: []string{"./...", "-run", "TestFoo", "-p", "1", "-count", "1", "-timeout", "0"}, + name: "single test", + testName: "TestFoo", + relTestPkg: "foo", + wantArgs: []string{"foo", "-run", "TestFoo", "-p", "1", "-count", "1", "-timeout", "0"}, }, { name: "all tests", @@ -87,7 +96,10 @@ func TestGetTestCmd(t *testing.T) { if tt.intTestDir == "" { tt.intTestDir = path.Join(testDirWithDiscovery, intTestDir) } - gotCmd, err := getTestCmd(tt.intTestDir, tt.testStage, tt.testName) + if tt.relTestPkg == "" { + tt.relTestPkg = "./..." + } + gotCmd, err := getTestCmd(tt.intTestDir, tt.testStage, tt.testName, tt.relTestPkg) if tt.errMsg != "" { assert.NotNil(err) assert.Contains(err.Error(), tt.errMsg) diff --git a/cli/go.mod b/cli/go.mod index 3762b3ba095..f31f55c9846 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -5,7 +5,7 @@ go 1.16 require ( cloud.google.com/go/asset v1.0.1 cloud.google.com/go/storage v1.18.2 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355 github.com/briandowns/spinner v1.16.0 github.com/gammazero/workerpool v1.1.2 @@ -14,6 +14,7 @@ require ( github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/jedib0t/go-pretty/v6 v6.2.4 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 + github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible // indirect github.com/open-policy-agent/opa v0.34.2 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.2.1 diff --git a/cli/go.sum b/cli/go.sum index 4d86a492348..06f99353d0f 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -95,13 +95,12 @@ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBp 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= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52 h1:3Aqk1vqEi62EWkEj+wzPeJBaHzy0R+PXmZs5gE1flbQ= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20211207170406-bea525b1cf52/go.mod h1:tWoaVHXM9sZyzxgX2+UHtzdJkav+uTnTJiz42N8FONc= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea h1:Pbtaoh7g+3FNtyUoEeLEhFuw/Nfa35zFU4Bc+WgnC3Q= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea/go.mod h1:cdqqfBObgqdv4oyKGBS8Lwan5XVisYV9RvZ7JuXTx44= github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355 h1:UQQJmJl5aZNwLISiq/YqEEFXxv042cYY6wD49TOzrco= github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355/go.mod h1:MHzWJNkQiBhSRuWAOxdMBBR+acz6g+jXGDtZp5S7vzU= github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= -github.com/GoogleContainerTools/kpt-functions-catalog/functions/go/list-setters v0.1.0/go.mod h1:ju1d4EAij/igLgN+0er7tPc1nTKn/PTjY00buPEsx0Q= -github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20210810181223-632b30549de6/go.mod h1:k86q33ABlA9TnUqRmHH9dnKY2Edh8YbxjRyPfjlM8jE= +github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2/go.mod h1:lJYiqfBOl6AOiefK9kmkhinbffIysu+nnclOBwKEPlQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= @@ -937,7 +936,6 @@ github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7 github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/open-policy-agent/cert-controller v0.1.1-0.20210129015139-6ff9721a1c47/go.mod h1:vZFB1b92JmUOIDEWHGO/lCnrKqrCQA5jCZkwPlF2nmc= github.com/open-policy-agent/frameworks/constraint v0.0.0-20200127222620-69dff9b895a2/go.mod h1:RYtG2t6a5nly9IWFMNgq/K29YzYMV9ftA7XlGOM75bs= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20200420221412-5bae2037a343/go.mod h1:Dr3QxvH+NTQcPPZWSt1ueNOsxW4VwgUltaLL7Ttnrac= github.com/open-policy-agent/frameworks/constraint v0.0.0-20210121003109-e55b2bb4cf1c/go.mod h1:vvhkBONv7Uah2fvS/bQ/N1u0rSLvxZOs2ErR6m+4QtQ= github.com/open-policy-agent/frameworks/constraint v0.0.0-20210422220901-804ff2ee8b4f h1:oEq3M/aUJbcx9LVuL+UQXhOl3xDwhbNB7WFQtWZdh4o= github.com/open-policy-agent/frameworks/constraint v0.0.0-20210422220901-804ff2ee8b4f/go.mod h1:vvhkBONv7Uah2fvS/bQ/N1u0rSLvxZOs2ErR6m+4QtQ= @@ -945,7 +943,6 @@ github.com/open-policy-agent/gatekeeper v0.0.0-20200130050101-a7990e5bc83a/go.mo github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e h1:7AjJcXJi5RGYZBwZBB9XwuERztGzKMTH1OBfW3OqnD4= github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e/go.mod h1:nNKQEtZ5dn3aqxeNWYQV9ZO89zwLJfANPfgm3XE7NNk= github.com/open-policy-agent/opa v0.16.2/go.mod h1:P0xUE/GQAAgnvV537GzA0Ikw4+icPELRT327QJPkaKY= -github.com/open-policy-agent/opa v0.19.1/go.mod h1:rrwxoT/b011T0cyj+gg2VvxqTtn6N3gp/jzmr3fjW44= github.com/open-policy-agent/opa v0.24.0/go.mod h1:qEyD/i8j+RQettHGp4f86yjrjvv+ZYia+JHCMv2G7wA= github.com/open-policy-agent/opa v0.29.3/go.mod h1:ZCOTD3yyFR8JvF8ETdWdiSPn9WcF1dXeQWOv7VoPorU= github.com/open-policy-agent/opa v0.34.2 h1:asRmfDRUSd8gwPNRrpUsDxwOUkxLgc1x1FYkwjcnag4= @@ -1281,7 +1278,6 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= @@ -1887,7 +1883,6 @@ k8s.io/api v0.0.0-20190918155943-95b840bb6a1f/go.mod h1:uWuOHnjmNrtQomJrvEBg0c0H k8s.io/api v0.16.4/go.mod h1:AtzMnsR45tccQss5q8RnF+W8L81DH6XwXwo/joEx9u0= k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= -k8s.io/api v0.17.4/go.mod h1:5qxx6vjmwUVG2nHQTKGlLts8Tbok8PzHl4vHtVFuZCA= k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= k8s.io/api v0.19.3 h1:GN6ntFnv44Vptj/b+OnMW7FmzkpDoIDLZRvKX3XH9aU= k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= @@ -1900,7 +1895,6 @@ k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT k8s.io/apimachinery v0.16.4/go.mod h1:llRdnznGEAqC3DcNm6yEj472xaFVfLM7hnYofMb12tQ= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.4/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g= k8s.io/apimachinery v0.19.2/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apimachinery v0.19.3 h1:bpIQXlKjB4cB/oNpnNnV+BybGPR7iP5oYpsOTEJ4hgc= k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= @@ -1915,7 +1909,6 @@ k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90/go.mod h1:J69/JveO6XESwVgG53 k8s.io/client-go v0.16.4/go.mod h1:ZgxhFDxSnoKY0J0U2/Y1C8obKDdlhGPZwA7oHH863Ok= k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= -k8s.io/client-go v0.17.4/go.mod h1:ouF6o5pz3is8qU0/qYL2RnoxOPqgfuidYLowytyLJmc= k8s.io/client-go v0.19.2/go.mod h1:S5wPhCqyDNAlzM9CnEdgTGV4OqhsW3jGO1UM1epwfJA= k8s.io/client-go v0.19.3 h1:ctqR1nQ52NUs6LpI0w+a5U+xjYwflFwA13OJKcicMxg= k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= @@ -1955,7 +1948,6 @@ k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5 k8s.io/metrics v0.17.2/go.mod h1:3TkNHET4ROd+NfzNxkjoVfQ0Ob4iZnaHmSEA4vYpwLw= k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20200912215256-4140de9c8800 h1:9ZNvfPvVIEsp/T1ez4GQuzCcCTEQWhovSofhqR73A6g= k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= From 768ecce22bc3439d35e557afffe2b0dab172f329 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 15 Mar 2022 13:35:12 -0500 Subject: [PATCH 0055/1371] chore: release CFT CLI version v0.4.3 (#1100) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 156a93278b7..d85df9524b6 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.4.2 +VERSION=v0.4.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From cf34721db0f3226b3eb2af94ccbedd51440cab3e Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 16 Mar 2022 17:33:35 -0500 Subject: [PATCH 0056/1371] fix: pin gcloud to 375.0.0 to fix devtools build (#1102) * fix: devtools image build * open an issue if build push fails on main * add comment to unpin --- .github/workflows/build-push-cft-devtools.yml | 13 ++++++++++ .github/workflows/test-cft-devtools.yml | 24 +++++++++++++++++++ infra/build/Makefile | 3 ++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/test-cft-devtools.yml diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 05190ac1048..e7848b1aa36 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -41,3 +41,16 @@ jobs: - name: Push run: |- cd infra/build && make release-image-developer-tools + + - name: Open issue if failed + if: ${{ failure() }} + uses: actions/github-script@9ac08808f993958e9de277fe43a64532a609130e + with: + script: |- + github.rest.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: 'build-push-dev-tools job failed', + body: 'Logs: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}', + assignee: 'bharathkkb' + }) diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml new file mode 100644 index 00000000000..a7c2000ef9f --- /dev/null +++ b/.github/workflows/test-cft-devtools.yml @@ -0,0 +1,24 @@ +name: Test devtools image build +on: + pull_request: + branches: + - "master" + paths: + - "infra/build/**" + - ".github/workflows/test-cft-devtools.yml" + +concurrency: + group: '${{ github.workflow }}-${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + build-dev-tools: + name: Build CFT dev tools image + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Build + run: |- + cd infra/build && make build-image-developer-tools diff --git a/infra/build/Makefile b/infra/build/Makefile index 367e310d51e..ffe538de45a 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -45,8 +45,9 @@ REGISTRY_URL := gcr.io/cloud-foundation-cicd .PHONY: build-image-developer-tools build-image-developer-tools: + # TODO(bharathkkb): unpin gcloud version after https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1095 is resolved docker build \ - --build-arg CLOUD_SDK_VERSION=${CLOUD_SDK_VERSION} \ + --build-arg CLOUD_SDK_VERSION=375.0.0 \ --build-arg GSUITE_PROVIDER_VERSION=${GSUITE_PROVIDER_VERSION} \ --build-arg TERRAFORM_VERSION=${TERRAFORM_VERSION} \ --build-arg TERRAFORM_VALIDATOR_VERSION=${TERRAFORM_VALIDATOR_VERSION} \ From 1c8897fbd42ceba2a24c6f3178488c568e83baeb Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 17 Mar 2022 00:01:37 -0500 Subject: [PATCH 0057/1371] Update tools to 1.4.4 (#1101) Co-authored-by: Bharath KKB --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index ffe538de45a..801a1f5ca53 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.7 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 376.0.0 +CLOUD_SDK_VERSION := 377.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -28,11 +28,11 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.14 -CFT_CLI_VERSION := 0.4.2 +CFT_CLI_VERSION := 0.4.3 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From a8ff68f725978cb70d813940f2798a03bad86465 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Wed, 23 Mar 2022 11:11:40 -0700 Subject: [PATCH 0058/1371] chore: add policy-blueprints folder for pccl integration testing (#1104) * feat:adds policy-blueprints folder for pccl integration testing * excluding the folder for cb ci * Update infra/terraform/test-org/org/locals.tf Co-authored-by: Awais Malik Co-authored-by: Bharath KKB --- infra/terraform/test-org/ci-triggers/locals.tf | 3 ++- infra/terraform/test-org/org/locals.tf | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index cb3db532b24..5e43351deeb 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -22,7 +22,8 @@ locals { "ci-shared", "ci-anthos-platform", "ci-example-foundation", - "ci-blueprints" + "ci-blueprints", + "ci-policy-blueprints", ] # custom mapping of the form name => repo_name used for overriding `terraform-google` prefix custom_repo_mapping = { diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index fef61322840..64b5e7f21b9 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -96,5 +96,6 @@ locals { "cloud-run", "network-forensics", "blueprints", # Not module + "policy-blueprints", ] } From e27e4d5f15b76d75860a5a57e45db7a2d0d953e3 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 23 Mar 2022 13:48:51 -0500 Subject: [PATCH 0059/1371] chore: skip comment bot on cloud-foundation-training repo (#1091) --- .../ci-comment-build-trigger-function/function_source/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py index 81cf99b4615..1200c573e30 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py @@ -25,7 +25,7 @@ CFT_TOOLS_DEFAULT_IMAGE = 'gcr.io/cloud-foundation-cicd/cft/developer-tools' CFT_TOOLS_DEFAULT_IMAGE_VERSION = '0.12' -DISABLED_MODULES = ["terraform-example-foundation"] +DISABLED_MODULES = ["terraform-example-foundation", "cloud-foundation-training"] def main(event, context): From fd68a6bdc9a90d0f340fdad80bfcfc8119137a0f Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Thu, 24 Mar 2022 08:07:44 -0700 Subject: [PATCH 0060/1371] feat: add getter for krmt build directory (#1106) * feat:adds a getter for build directory for the blueprint test * Update infra/blueprint-test/pkg/krmt/krm.go Co-authored-by: Bharath KKB * moving GetBuildDir with other methods * Update infra/blueprint-test/pkg/krmt/krm.go Co-authored-by: Awais Malik Co-authored-by: Bharath KKB --- infra/blueprint-test/pkg/krmt/krm.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/infra/blueprint-test/pkg/krmt/krm.go b/infra/blueprint-test/pkg/krmt/krm.go index 5535754e85b..6b5f8607296 100644 --- a/infra/blueprint-test/pkg/krmt/krm.go +++ b/infra/blueprint-test/pkg/krmt/krm.go @@ -352,3 +352,12 @@ func (b *KRMBlueprintTest) Test() { utils.RunStage("apply", func() { b.Apply(a) }) utils.RunStage("verify", func() { b.Verify(a) }) } + +// GetBuildDir returns the temporary build dir created for hydrating config. Defaults to .build/test-name. +func (b *KRMBlueprintTest) GetBuildDir() string { + if b.buildDir == "" { + b.t.Fatalf("unable to get a valid build directory") + } + + return b.buildDir +} From b790f6b09f41d65f83100da0e950b4f49dcbaad9 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 29 Mar 2022 18:40:15 -0500 Subject: [PATCH 0061/1371] feat: add experimental convert command for cli test (#1105) * feat: bpt test converter * transform build file, add tests * fix comment * switch to using external templates --- cli/bptest/cmd.go | 12 + cli/bptest/convert.go | 261 +++++++++++++ cli/bptest/convert_test.go | 161 ++++++++ cli/bptest/templates/blueprint_test.go.tmpl | 25 ++ cli/bptest/templates/discover_test.go.tmpl | 11 + cli/bptest/templates/go.mod.tmpl | 8 + cli/bptest/testdata/cb/newAll.yaml | 41 ++ cli/bptest/testdata/cb/newTarget.yaml | 369 ++++++++++++++++++ cli/bptest/testdata/cb/oldAll.yaml | 41 ++ cli/bptest/testdata/cb/oldTarget.yaml | 369 ++++++++++++++++++ .../simple-example/controls/gcloud.rb | 1 + .../kitchen-tests/simple-example/inspec.yml | 50 +++ cli/go.mod | 4 + cli/go.sum | 4 + 14 files changed, 1357 insertions(+) create mode 100644 cli/bptest/convert.go create mode 100644 cli/bptest/convert_test.go create mode 100644 cli/bptest/templates/blueprint_test.go.tmpl create mode 100644 cli/bptest/templates/discover_test.go.tmpl create mode 100644 cli/bptest/templates/go.mod.tmpl create mode 100644 cli/bptest/testdata/cb/newAll.yaml create mode 100644 cli/bptest/testdata/cb/newTarget.yaml create mode 100644 cli/bptest/testdata/cb/oldAll.yaml create mode 100644 cli/bptest/testdata/cb/oldTarget.yaml create mode 100644 cli/bptest/testdata/kitchen-tests/simple-example/controls/gcloud.rb create mode 100644 cli/bptest/testdata/kitchen-tests/simple-example/inspec.yml diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index 714caa95d51..67d4e389a90 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -18,6 +18,7 @@ func init() { viper.AutomaticEnv() Cmd.AddCommand(listCmd) Cmd.AddCommand(runCmd) + Cmd.AddCommand(convertCmd) Cmd.PersistentFlags().StringVar(&flags.testDir, "test-dir", "", "Path to directory containing integration tests (default is computed by scanning current working directory)") runCmd.Flags().StringVar(&flags.testStage, "stage", "", "Test stage to execute (default is running all stages in order - init, apply, verify, teardown)") @@ -99,3 +100,14 @@ var runCmd = &cobra.Command{ return nil }, } + +var convertCmd = &cobra.Command{ + Use: "convert", + Short: "convert kitchen tests (experimental)", + Long: "Convert all kitchen tests to blueprint tests (experimental)", + + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + return convertKitchenTests() + }, +} diff --git a/cli/bptest/convert.go b/cli/bptest/convert.go new file mode 100644 index 00000000000..2cfa3a47dc6 --- /dev/null +++ b/cli/bptest/convert.go @@ -0,0 +1,261 @@ +package bptest + +import ( + "bytes" + "embed" + "encoding/json" + "fmt" + "html/template" + "io/ioutil" + "os" + "path" + "strings" + + "github.com/iancoleman/strcase" + cb "google.golang.org/api/cloudbuild/v1" + "sigs.k8s.io/yaml" +) + +const ( + intTestPath = "test/integration" + intTestBuildFilePath = "build/int.cloudbuild.yaml" + inspecInputsFile = "inspec.yml" + tmplSuffix = ".tmpl" + goModFilename = "go.mod" + bptTestFilename = "blueprint_test.go" +) + +var ( + //go:embed templates + templateFiles embed.FS + kitchenCFTStageMapping = map[string]string{ + "create": stages[0], + "converge": stages[1], + "verify": stages[2], + "destroy": stages[3], + } +) + +type inspecInputs struct { + Name string `yaml:"name"` + Attributes []struct { + Name string `yaml:"name"` + } `yaml:"attributes"` +} + +// convertKitchenTests converts all kitchen tests to blueprint tests and updates build files +func convertKitchenTests() error { + cwd, err := os.Getwd() + if err != nil { + return err + } + // write go mod + goMod, err := getTmplFileContents(goModFilename) + if err != nil { + return err + } + err = writeFile(path.Join(intTestPath, goModFilename), fmt.Sprintf(goMod, path.Base(cwd))) + if err != nil { + return fmt.Errorf("error writing go mod file: %v", err) + } + // write discover test + discoverTest, err := getTmplFileContents(discoverTestFilename) + if err != nil { + return err + } + err = writeFile(path.Join(intTestPath, discoverTestFilename), string(discoverTest)) + if err != nil { + return fmt.Errorf("error writing discover_test.go: %v", err) + } + testDirs, err := getCurrentTestDirs() + if err != nil { + return fmt.Errorf("error getting current test dirs: %v", err) + } + for _, dir := range testDirs { + err = convertTest(path.Join(intTestPath, dir)) + if err != nil { + return fmt.Errorf("error converting %s: %v", dir, err) + } + } + // remove kitchen + err = os.Remove(".kitchen.yml") + if err != nil { + return fmt.Errorf("error removing .kitchen.yml: %v", err) + } + // convert build file + // We use build to identify commands to update and update the commands in the buildFile. + // This minimizes unnecessary diffs in build yaml due to round tripping. + build, buildFile, err := getBuildFromFile(intTestBuildFilePath) + if err != nil { + return fmt.Errorf("error unmarshalling %s: %v", intTestBuildFilePath, err) + } + newBuildFile, err := transformBuild(build, buildFile) + if err != nil { + return fmt.Errorf("error transforming buildfile: %v", err) + } + return writeFile(intTestBuildFilePath, newBuildFile) +} + +// getCurrentTestDirs returns current test dirs in intTestPath +func getCurrentTestDirs() ([]string, error) { + files, err := ioutil.ReadDir(intTestPath) + if err != nil { + return nil, err + } + var dirs []string + for _, f := range files { + if f.IsDir() { + dirs = append(dirs, f.Name()) + } + } + return dirs, nil +} + +// convertTest converts a kitchen test in dir to blueprint test +func convertTest(dir string) error { + // read inspec.yaml + f, err := ioutil.ReadFile(path.Join(dir, inspecInputsFile)) + if err != nil { + return fmt.Errorf("error reading inspec file: %s", err) + } + var inspec inspecInputs + err = yaml.Unmarshal(f, &inspec) + if err != nil { + return fmt.Errorf("error unmarshalling inspec file: %s", err) + } + // get inspec input attributes + var inputs []string + for _, i := range inspec.Attributes { + inputs = append(inputs, i.Name) + } + // get bpt skeleton + testName := path.Base(dir) + bpTest, err := getBPTestFromTmpl(testName, inputs) + if err != nil { + return fmt.Errorf("error creating blueprint test: %s", err) + } + // remove old test + err = os.RemoveAll(dir) + if err != nil { + return fmt.Errorf("error removing old test dir: %s", err) + } + // write bpt + err = os.MkdirAll(dir, os.ModePerm) + if err != nil { + return fmt.Errorf("error creating test dir: %s", err) + } + return writeFile(path.Join(dir, fmt.Sprintf("%s_test.go", strcase.ToSnake(testName))), bpTest) +} + +// getTmplFileContents returns contents of embedded file f +func getTmplFileContents(f string) (string, error) { + tmplF := path.Join("templates", fmt.Sprintf("%s%s", f, tmplSuffix)) + contents, err := templateFiles.ReadFile(tmplF) + if err != nil { + return "", fmt.Errorf("error reading %s : %v", tmplF, err) + } + return string(contents), nil +} + +// getTestFnName returns the go test function name +func getTestFnName(name string) string { + return fmt.Sprintf("Test%s", strcase.ToCamel(name)) +} + +// getBPTestFromTmpl returns a skeleton blueprint test +func getBPTestFromTmpl(testName string, inputs []string) (string, error) { + pkgName := strcase.ToSnake(testName) + fnName := getTestFnName(testName) + tmpl, err := getTmplFileContents(bptTestFilename) + if err != nil { + return "", err + } + t, err := template.New("test").Funcs(template.FuncMap{"toLowerCamel": strcase.ToLowerCamel}).Parse(tmpl) + if err != nil { + return "", err + } + var tpl bytes.Buffer + err = t.Execute(&tpl, struct { + PkgName string + FnName string + Inputs []string + }{ + PkgName: pkgName, + FnName: fnName, + Inputs: inputs, + }, + ) + if err != nil { + return "", err + } + return tpl.String(), nil +} + +// writeFile writes content to file path +func writeFile(p string, content string) error { + return ioutil.WriteFile(p, []byte(content), os.ModePerm) +} + +// transformBuild transforms cloudbuild file contents with kitchen commands to CFT cli commands +func transformBuild(b *cb.Build, f string) (string, error) { + for _, step := range b.Steps { + // test commands have at least two args + if len(step.Args) < 2 { + continue + } + cmd := step.Args[len(step.Args)-1] + // skip if not a kitchen command + kitchenCmdIndex := strings.Index(cmd, "kitchen_do") + if kitchenCmdIndex == -1 { + continue + } + kitchenCmd := cmd[kitchenCmdIndex:] + newCmd, err := getCFTCmd(kitchenCmd) + if err != nil { + return "", err + } + f = strings.ReplaceAll(f, cmd, newCmd) + } + return f, nil +} + +// getCFTCmd returns an equivalent CFT command for a kitchen command +func getCFTCmd(kitchenCmd string) (string, error) { + if !strings.Contains(kitchenCmd, "kitchen_do") { + return "", fmt.Errorf("invalid kitchen command: %s", kitchenCmd) + } + cmdArr := strings.Split(kitchenCmd, " ") + cftCmd := []string{"cft", "test", "run"} + // cmd of form kitchen_do verb + if len(cmdArr) == 2 { + kitchenStage := cmdArr[len(cmdArr)-1] + cftCmd = append(cftCmd, []string{"all", "--stage", kitchenCFTStageMapping[kitchenStage]}...) + } else if len(cmdArr) == 3 { + // cmd of form kitchen_do verb test-name + kitchenTestName := cmdArr[len(cmdArr)-1] + kitchenStage := cmdArr[len(cmdArr)-2] + cftTestName := getTestFnName(strings.TrimSuffix(kitchenTestName, "-local")) + cftCmd = append(cftCmd, []string{cftTestName, "--stage", kitchenCFTStageMapping[kitchenStage]}...) + } else { + return "", fmt.Errorf("unknown kitchen command: %s", kitchenCmd) + } + cftCmd = append(cftCmd, "--verbose") + return strings.Join(cftCmd, " "), nil +} + +// getBuildFromFile unmarshalls a cloudbuild file +func getBuildFromFile(fp string) (*cb.Build, string, error) { + f, err := ioutil.ReadFile(fp) + if err != nil { + return nil, "", err + } + j, err := yaml.YAMLToJSON(f) + if err != nil { + return nil, "", err + } + var b cb.Build + if err = json.Unmarshal(j, &b); err != nil { + fmt.Println(err.Error()) + } + return &b, string(f), nil +} diff --git a/cli/bptest/convert_test.go b/cli/bptest/convert_test.go new file mode 100644 index 00000000000..de6069a2cdb --- /dev/null +++ b/cli/bptest/convert_test.go @@ -0,0 +1,161 @@ +package bptest + +import ( + "io/ioutil" + "path" + "testing" + + "github.com/otiai10/copy" + "github.com/stretchr/testify/assert" +) + +const ( + cbTestDataDir = "testdata/cb" + kitchenTestData = "testdata/kitchen-tests" +) + +func TestGetCFTCmd(t *testing.T) { + tests := []struct { + name string + kitchenCmd string + want string + errMsg string + }{ + { + name: "simple", + kitchenCmd: "kitchen_do create", + want: "cft test run all --stage init --verbose", + }, + { + name: "explicit test", + kitchenCmd: "kitchen_do converge foo", + want: "cft test run TestFoo --stage apply --verbose", + }, + { + name: "not kitchen", + kitchenCmd: "foo verify bar", + errMsg: "invalid kitchen command: foo verify bar", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + got, err := getCFTCmd(tt.kitchenCmd) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + assert.Equal(tt.want, got) + } + }) + } +} + +func TestTransformBuild(t *testing.T) { + tests := []struct { + name string + fp string + wantFp string + errMsg string + }{ + { + name: "simple", + fp: path.Join(cbTestDataDir, "oldAll.yaml"), + wantFp: path.Join(cbTestDataDir, "newAll.yaml"), + }, + { + name: "targeted", + fp: path.Join(cbTestDataDir, "oldTarget.yaml"), + wantFp: path.Join(cbTestDataDir, "newTarget.yaml"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + b, bf, err := getBuildFromFile(tt.fp) + assert.NoError(err) + gotBf, err := transformBuild(b, bf) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + _, wbf, err := getBuildFromFile(tt.wantFp) + assert.NoError(err) + assert.Equal(wbf, gotBf) + } + }) + } +} + +func TestConvertTest(t *testing.T) { + tests := []struct { + name string + dir string + expectedFilesContents map[string]string + errMsg string + }{ + { + name: "simple", + dir: "simple-example", + expectedFilesContents: map[string]string{"simple_example_test.go": `package simple_example + +import ( + "fmt" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/stretchr/testify/assert" +) + +func TestSimpleExample(t *testing.T) { + bpt := tft.NewTFBlueprintTest(t) + + bpt.DefineVerify(func(assert *assert.Assertions) { + bpt.DefaultVerify(assert) + + projectId := bpt.GetStringOutput("project_id") + location := bpt.GetStringOutput("location") + clusterName := bpt.GetStringOutput("cluster_name") + masterKubernetesVersion := bpt.GetStringOutput("master_kubernetes_version") + kubernetesEndpoint := bpt.GetStringOutput("kubernetes_endpoint") + clientToken := bpt.GetStringOutput("client_token") + serviceAccount := bpt.GetStringOutput("service_account") + serviceAccount := bpt.GetStringOutput("service_account") + databaseEncryptionKeyName := bpt.GetStringOutput("database_encryption_key_name") + identityNamespace := bpt.GetStringOutput("identity_namespace") + + op := gcloud.Run(t,"") + assert.Contains(op.Get("result").String(), "foo", "contains foo") + }) + + bpt.Test() +} +`}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + tmpDir := path.Join(t.TempDir(), tt.dir) + err := copy.Copy(path.Join(kitchenTestData, tt.dir), tmpDir) + assert.NoError(err) + err = convertTest(tmpDir) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + for name, expectedContent := range tt.expectedFilesContents { + pth := path.Join(tmpDir, name) + assert.FileExists(pth) + gotContents, err := ioutil.ReadFile(pth) + assert.NoError(err) + assert.Equal(expectedContent, string(gotContents)) + } + } + }) + } +} diff --git a/cli/bptest/templates/blueprint_test.go.tmpl b/cli/bptest/templates/blueprint_test.go.tmpl new file mode 100644 index 00000000000..157c681813b --- /dev/null +++ b/cli/bptest/templates/blueprint_test.go.tmpl @@ -0,0 +1,25 @@ +package {{.PkgName}} + +import ( + "fmt" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/stretchr/testify/assert" +) + +func {{.FnName}}(t *testing.T) { + bpt := tft.NewTFBlueprintTest(t) + + bpt.DefineVerify(func(assert *assert.Assertions) { + bpt.DefaultVerify(assert) + {{range .Inputs}} + {{toLowerCamel .}} := bpt.GetStringOutput("{{.}}"){{end}} + + op := gcloud.Run(t,"") + assert.Contains(op.Get("result").String(), "foo", "contains foo") + }) + + bpt.Test() +} diff --git a/cli/bptest/templates/discover_test.go.tmpl b/cli/bptest/templates/discover_test.go.tmpl new file mode 100644 index 00000000000..042bb992e75 --- /dev/null +++ b/cli/bptest/templates/discover_test.go.tmpl @@ -0,0 +1,11 @@ +package test + +import ( + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" +) + +func TestAll(t *testing.T) { + tft.AutoDiscoverAndTest(t) +} diff --git a/cli/bptest/templates/go.mod.tmpl b/cli/bptest/templates/go.mod.tmpl new file mode 100644 index 00000000000..0ba814e4af0 --- /dev/null +++ b/cli/bptest/templates/go.mod.tmpl @@ -0,0 +1,8 @@ +module github.com/terraform-google-modules/%s/test/integration + +go 1.16 + +require ( + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220317050137-1c8897fbd42c + github.com/stretchr/testify v1.7.0 +) diff --git a/cli/bptest/testdata/cb/newAll.yaml b/cli/bptest/testdata/cb/newAll.yaml new file mode 100644 index 00000000000..95280219ebc --- /dev/null +++ b/cli/bptest/testdata/cb/newAll.yaml @@ -0,0 +1,41 @@ +# Copyright 2019 Google LLC +# +# 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 +# +# https://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. + +timeout: 3600s +steps: +- id: prepare + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && prepare_environment'] + env: + - 'TF_VAR_org_id=$_ORG_ID' + - 'TF_VAR_folder_id=$_FOLDER_ID' + - 'TF_VAR_billing_account=$_BILLING_ACCOUNT' +- id: create + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run all --stage init --verbose'] +- id: converge + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run all --stage apply --verbose'] +- id: verify + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run all --stage verify --verbose'] +- id: destroy + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run all --stage teardown --verbose'] +tags: +- 'ci' +- 'integration' +substitutions: + _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0' \ No newline at end of file diff --git a/cli/bptest/testdata/cb/newTarget.yaml b/cli/bptest/testdata/cb/newTarget.yaml new file mode 100644 index 00000000000..245115fd9ec --- /dev/null +++ b/cli/bptest/testdata/cb/newTarget.yaml @@ -0,0 +1,369 @@ +# Copyright 2019 Google LLC +# +# 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 +# +# https://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. + +timeout: 12600s +steps: +- id: download acm + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && download_acm'] +- id: prepare + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && prepare_environment && chmod 600 /builder/home/.netrc && sleep 120'] + env: + - 'TF_VAR_org_id=$_ORG_ID' + - 'TF_VAR_folder_id=$_FOLDER_ID' + - 'TF_VAR_billing_account=$_BILLING_ACCOUNT' +- id: create all + waitFor: + - prepare + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run all --stage init --verbose'] +- id: converge disable-client-cert-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestDisableClientCert --stage apply --verbose'] +- id: verify disable-client-cert-local + waitFor: + - converge disable-client-cert-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestDisableClientCert --stage verify --verbose'] +- id: destroy disable-client-cert-local + waitFor: + - verify disable-client-cert-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestDisableClientCert --stage teardown --verbose'] +- id: converge shared-vpc-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSharedVpc --stage apply --verbose'] +- id: verify shared-vpc-local + waitFor: + - converge shared-vpc-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSharedVpc --stage verify --verbose'] +- id: destroy shared-vpc-local + waitFor: + - verify shared-vpc-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSharedVpc --stage teardown --verbose'] +- id: converge safer-cluster-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSaferCluster --stage apply --verbose'] +- id: verify safer-cluster-local + waitFor: + - converge safer-cluster-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSaferCluster --stage verify --verbose'] +- id: destroy safer-cluster-local + waitFor: + - verify safer-cluster-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSaferCluster --stage teardown --verbose'] +- id: converge simple-regional-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegional --stage apply --verbose'] +- id: verify simple-regional-local + waitFor: + - converge simple-regional-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegional --stage verify --verbose'] +- id: destroy simple-regional-local + waitFor: + - verify simple-regional-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegional --stage teardown --verbose'] +- id: converge simple-regional-private-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalPrivate --stage apply --verbose'] +- id: verify simple-regional-private-local + waitFor: + - converge simple-regional-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalPrivate --stage verify --verbose'] +- id: destroy simple-regional-private-local + waitFor: + - verify simple-regional-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalPrivate --stage teardown --verbose'] +- id: converge simple-regional-with-kubeconfig-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalWithKubeconfig --stage apply --verbose'] +- id: verify simple-regional-with-kubeconfig-local + waitFor: + - converge simple-regional-with-kubeconfig-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalWithKubeconfig --stage verify --verbose'] +- id: destroy simple-regional-with-kubeconfig-local + waitFor: + - verify simple-regional-with-kubeconfig-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalWithKubeconfig --stage teardown --verbose'] +- id: converge simple-regional-with-networking-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalWithNetworking --stage apply --verbose'] +- id: verify simple-regional-with-networking-local + waitFor: + - converge simple-regional-with-networking-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalWithNetworking --stage verify --verbose'] +- id: destroy simple-regional-with-networking-local + waitFor: + - verify simple-regional-with-networking-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleRegionalWithNetworking --stage teardown --verbose'] +- id: converge simple-zonal-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonal --stage apply --verbose'] +- id: verify simple-zonal-local + waitFor: + - converge simple-zonal-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonal --stage verify --verbose'] +- id: destroy simple-zonal-local + waitFor: + - verify simple-zonal-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonal --stage teardown --verbose'] +- id: converge simple-zonal-private-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonalPrivate --stage apply --verbose'] +- id: verify simple-zonal-private-local + waitFor: + - converge simple-zonal-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonalPrivate --stage verify --verbose'] +- id: destroy simple-zonal-private-local + waitFor: + - verify simple-zonal-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonalPrivate --stage teardown --verbose'] +- id: converge stub-domains-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestStubDomains --stage apply --verbose'] +- id: verify stub-domains-local + waitFor: + - converge stub-domains-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestStubDomains --stage verify --verbose'] +- id: destroy stub-domains-local + waitFor: + - verify stub-domains-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestStubDomains --stage teardown --verbose'] +- id: converge upstream-nameservers-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestUpstreamNameservers --stage apply --verbose'] +- id: verify upstream-nameservers-local + waitFor: + - converge upstream-nameservers-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestUpstreamNameservers --stage verify --verbose'] +- id: destroy upstream-nameservers-local + waitFor: + - verify upstream-nameservers-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestUpstreamNameservers --stage teardown --verbose'] +- id: converge stub-domains-upstream-nameservers-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestStubDomainsUpstreamNameservers --stage apply --verbose'] +- id: verify stub-domains-upstream-nameservers-local + waitFor: + - converge stub-domains-upstream-nameservers-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestStubDomainsUpstreamNameservers --stage verify --verbose'] +- id: destroy stub-domains-upstream-nameservers-local + waitFor: + - verify stub-domains-upstream-nameservers-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestStubDomainsUpstreamNameservers --stage teardown --verbose'] +- id: converge workload-metadata-config-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestWorkloadMetadataConfig --stage apply --verbose'] +- id: verify workload-metadata-config-local + waitFor: + - converge workload-metadata-config-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestWorkloadMetadataConfig --stage verify --verbose'] +- id: destroy workload-metadata-config-local + waitFor: + - verify workload-metadata-config-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestWorkloadMetadataConfig --stage teardown --verbose'] +- id: converge beta-cluster-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestBetaCluster --stage apply --verbose'] +- id: verify beta-cluster-local + waitFor: + - converge beta-cluster-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestBetaCluster --stage verify --verbose'] +- id: destroy beta-cluster-local + waitFor: + - verify beta-cluster-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestBetaCluster --stage teardown --verbose'] +- id: converge deploy-service-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestDeployService --stage apply --verbose'] +- id: verify deploy-service-local + waitFor: + - converge deploy-service-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestDeployService --stage verify --verbose'] +- id: destroy deploy-service-local + waitFor: + - verify deploy-service-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestDeployService --stage teardown --verbose'] +- id: converge node-pool-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestNodePool --stage apply --verbose'] +- id: verify node-pool-local + waitFor: + - converge node-pool-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestNodePool --stage verify --verbose'] +- id: destroy node-pool-local + waitFor: + - verify node-pool-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestNodePool --stage teardown --verbose'] +- id: converge sandbox-enabled-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSandboxEnabled --stage apply --verbose'] +- id: verify sandbox-enabled-local + waitFor: + - converge sandbox-enabled-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSandboxEnabled --stage verify --verbose'] +- id: destroy sandbox-enabled-local + waitFor: + - verify sandbox-enabled-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSandboxEnabled --stage teardown --verbose'] +- id: converge workload-identity-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestWorkloadIdentity --stage apply --verbose'] +- id: verify workload-identity-local + waitFor: + - converge workload-identity-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestWorkloadIdentity --stage verify --verbose'] +- id: destroy workload-identity-local + waitFor: + - verify workload-identity-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestWorkloadIdentity --stage teardown --verbose'] +- id: converge safer-cluster-iap-bastion-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSaferClusterIapBastion --stage apply --verbose'] +- id: verify safer-cluster-iap-bastion-local + waitFor: + - converge safer-cluster-iap-bastion-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSaferClusterIapBastion --stage verify --verbose'] +- id: destroy safer-cluster-iap-bastion-local + waitFor: + - verify safer-cluster-iap-bastion-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSaferClusterIapBastion --stage teardown --verbose'] +- id: converge simple-zonal-with-asm-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonalWithAsm --stage apply --verbose'] +- id: verify simple-zonal-with-asm-local + waitFor: + - converge simple-zonal-with-asm-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonalWithAsm --stage verify --verbose'] +- id: destroy simple-zonal-with-asm-local + waitFor: + - verify simple-zonal-with-asm-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleZonalWithAsm --stage teardown --verbose'] +- id: converge simple-autopilot-private-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleAutopilotPrivate --stage apply --verbose'] +- id: verify simple-autopilot-private-local + waitFor: + - converge simple-autopilot-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleAutopilotPrivate --stage verify --verbose'] +- id: destroy simple-autopilot-private-local + waitFor: + - verify simple-autopilot-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleAutopilotPrivate --stage teardown --verbose'] +- id: converge simple-autopilot-public-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleAutopilotPublic --stage apply --verbose'] +- id: verify simple-autopilot-public-local + waitFor: + - converge simple-autopilot-public-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleAutopilotPublic --stage verify --verbose'] +- id: destroy simple-autopilot-public-local + waitFor: + - verify simple-autopilot-public-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'cft test run TestSimpleAutopilotPublic --stage teardown --verbose'] +tags: +- 'ci' +- 'integration' +substitutions: + _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.0' +options: + machineType: 'N1_HIGHCPU_8' \ No newline at end of file diff --git a/cli/bptest/testdata/cb/oldAll.yaml b/cli/bptest/testdata/cb/oldAll.yaml new file mode 100644 index 00000000000..b69ff93d8c4 --- /dev/null +++ b/cli/bptest/testdata/cb/oldAll.yaml @@ -0,0 +1,41 @@ +# Copyright 2019 Google LLC +# +# 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 +# +# https://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. + +timeout: 3600s +steps: +- id: prepare + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && prepare_environment'] + env: + - 'TF_VAR_org_id=$_ORG_ID' + - 'TF_VAR_folder_id=$_FOLDER_ID' + - 'TF_VAR_billing_account=$_BILLING_ACCOUNT' +- id: create + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do create'] +- id: converge + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge'] +- id: verify + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify'] +- id: destroy + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy'] +tags: +- 'ci' +- 'integration' +substitutions: + _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0' \ No newline at end of file diff --git a/cli/bptest/testdata/cb/oldTarget.yaml b/cli/bptest/testdata/cb/oldTarget.yaml new file mode 100644 index 00000000000..7bbe4bba1ab --- /dev/null +++ b/cli/bptest/testdata/cb/oldTarget.yaml @@ -0,0 +1,369 @@ +# Copyright 2019 Google LLC +# +# 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 +# +# https://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. + +timeout: 12600s +steps: +- id: download acm + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && download_acm'] +- id: prepare + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && prepare_environment && chmod 600 /builder/home/.netrc && sleep 120'] + env: + - 'TF_VAR_org_id=$_ORG_ID' + - 'TF_VAR_folder_id=$_FOLDER_ID' + - 'TF_VAR_billing_account=$_BILLING_ACCOUNT' +- id: create all + waitFor: + - prepare + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do create'] +- id: converge disable-client-cert-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge disable-client-cert-local'] +- id: verify disable-client-cert-local + waitFor: + - converge disable-client-cert-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify disable-client-cert-local'] +- id: destroy disable-client-cert-local + waitFor: + - verify disable-client-cert-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy disable-client-cert-local'] +- id: converge shared-vpc-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge shared-vpc-local'] +- id: verify shared-vpc-local + waitFor: + - converge shared-vpc-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify shared-vpc-local'] +- id: destroy shared-vpc-local + waitFor: + - verify shared-vpc-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy shared-vpc-local'] +- id: converge safer-cluster-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge safer-cluster-local'] +- id: verify safer-cluster-local + waitFor: + - converge safer-cluster-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify safer-cluster-local'] +- id: destroy safer-cluster-local + waitFor: + - verify safer-cluster-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy safer-cluster-local'] +- id: converge simple-regional-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-regional-local'] +- id: verify simple-regional-local + waitFor: + - converge simple-regional-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-regional-local'] +- id: destroy simple-regional-local + waitFor: + - verify simple-regional-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-regional-local'] +- id: converge simple-regional-private-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-regional-private-local'] +- id: verify simple-regional-private-local + waitFor: + - converge simple-regional-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-regional-private-local'] +- id: destroy simple-regional-private-local + waitFor: + - verify simple-regional-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-regional-private-local'] +- id: converge simple-regional-with-kubeconfig-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-regional-with-kubeconfig-local'] +- id: verify simple-regional-with-kubeconfig-local + waitFor: + - converge simple-regional-with-kubeconfig-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-regional-with-kubeconfig-local'] +- id: destroy simple-regional-with-kubeconfig-local + waitFor: + - verify simple-regional-with-kubeconfig-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-regional-with-kubeconfig-local'] +- id: converge simple-regional-with-networking-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-regional-with-networking-local'] +- id: verify simple-regional-with-networking-local + waitFor: + - converge simple-regional-with-networking-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-regional-with-networking-local'] +- id: destroy simple-regional-with-networking-local + waitFor: + - verify simple-regional-with-networking-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-regional-with-networking-local'] +- id: converge simple-zonal-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-zonal-local'] +- id: verify simple-zonal-local + waitFor: + - converge simple-zonal-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-zonal-local'] +- id: destroy simple-zonal-local + waitFor: + - verify simple-zonal-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-zonal-local'] +- id: converge simple-zonal-private-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-zonal-private-local'] +- id: verify simple-zonal-private-local + waitFor: + - converge simple-zonal-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-zonal-private-local'] +- id: destroy simple-zonal-private-local + waitFor: + - verify simple-zonal-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-zonal-private-local'] +- id: converge stub-domains-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge stub-domains-local'] +- id: verify stub-domains-local + waitFor: + - converge stub-domains-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify stub-domains-local'] +- id: destroy stub-domains-local + waitFor: + - verify stub-domains-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy stub-domains-local'] +- id: converge upstream-nameservers-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge upstream-nameservers-local'] +- id: verify upstream-nameservers-local + waitFor: + - converge upstream-nameservers-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify upstream-nameservers-local'] +- id: destroy upstream-nameservers-local + waitFor: + - verify upstream-nameservers-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy upstream-nameservers-local'] +- id: converge stub-domains-upstream-nameservers-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge stub-domains-upstream-nameservers-local'] +- id: verify stub-domains-upstream-nameservers-local + waitFor: + - converge stub-domains-upstream-nameservers-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify stub-domains-upstream-nameservers-local'] +- id: destroy stub-domains-upstream-nameservers-local + waitFor: + - verify stub-domains-upstream-nameservers-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy stub-domains-upstream-nameservers-local'] +- id: converge workload-metadata-config-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge workload-metadata-config-local'] +- id: verify workload-metadata-config-local + waitFor: + - converge workload-metadata-config-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify workload-metadata-config-local'] +- id: destroy workload-metadata-config-local + waitFor: + - verify workload-metadata-config-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy workload-metadata-config-local'] +- id: converge beta-cluster-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge beta-cluster-local'] +- id: verify beta-cluster-local + waitFor: + - converge beta-cluster-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify beta-cluster-local'] +- id: destroy beta-cluster-local + waitFor: + - verify beta-cluster-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy beta-cluster-local'] +- id: converge deploy-service-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge deploy-service-local'] +- id: verify deploy-service-local + waitFor: + - converge deploy-service-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify deploy-service-local'] +- id: destroy deploy-service-local + waitFor: + - verify deploy-service-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy deploy-service-local'] +- id: converge node-pool-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge node-pool-local'] +- id: verify node-pool-local + waitFor: + - converge node-pool-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify node-pool-local'] +- id: destroy node-pool-local + waitFor: + - verify node-pool-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy node-pool-local'] +- id: converge sandbox-enabled-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge sandbox-enabled-local'] +- id: verify sandbox-enabled-local + waitFor: + - converge sandbox-enabled-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify sandbox-enabled-local'] +- id: destroy sandbox-enabled-local + waitFor: + - verify sandbox-enabled-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy sandbox-enabled-local'] +- id: converge workload-identity-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge workload-identity-local'] +- id: verify workload-identity-local + waitFor: + - converge workload-identity-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify workload-identity-local'] +- id: destroy workload-identity-local + waitFor: + - verify workload-identity-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy workload-identity-local'] +- id: converge safer-cluster-iap-bastion-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge safer-cluster-iap-bastion-local'] +- id: verify safer-cluster-iap-bastion-local + waitFor: + - converge safer-cluster-iap-bastion-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify safer-cluster-iap-bastion-local'] +- id: destroy safer-cluster-iap-bastion-local + waitFor: + - verify safer-cluster-iap-bastion-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy safer-cluster-iap-bastion-local'] +- id: converge simple-zonal-with-asm-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-zonal-with-asm-local'] +- id: verify simple-zonal-with-asm-local + waitFor: + - converge simple-zonal-with-asm-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-zonal-with-asm-local'] +- id: destroy simple-zonal-with-asm-local + waitFor: + - verify simple-zonal-with-asm-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-zonal-with-asm-local'] +- id: converge simple-autopilot-private-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-autopilot-private-local'] +- id: verify simple-autopilot-private-local + waitFor: + - converge simple-autopilot-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-autopilot-private-local'] +- id: destroy simple-autopilot-private-local + waitFor: + - verify simple-autopilot-private-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-autopilot-private-local'] +- id: converge simple-autopilot-public-local + waitFor: + - create all + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do converge simple-autopilot-public-local'] +- id: verify simple-autopilot-public-local + waitFor: + - converge simple-autopilot-public-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do verify simple-autopilot-public-local'] +- id: destroy simple-autopilot-public-local + waitFor: + - verify simple-autopilot-public-local + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && kitchen_do destroy simple-autopilot-public-local'] +tags: +- 'ci' +- 'integration' +substitutions: + _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.0' +options: + machineType: 'N1_HIGHCPU_8' \ No newline at end of file diff --git a/cli/bptest/testdata/kitchen-tests/simple-example/controls/gcloud.rb b/cli/bptest/testdata/kitchen-tests/simple-example/controls/gcloud.rb new file mode 100644 index 00000000000..8998e4fbd0b --- /dev/null +++ b/cli/bptest/testdata/kitchen-tests/simple-example/controls/gcloud.rb @@ -0,0 +1 @@ +# ruby test \ No newline at end of file diff --git a/cli/bptest/testdata/kitchen-tests/simple-example/inspec.yml b/cli/bptest/testdata/kitchen-tests/simple-example/inspec.yml new file mode 100644 index 00000000000..bde8d6cec66 --- /dev/null +++ b/cli/bptest/testdata/kitchen-tests/simple-example/inspec.yml @@ -0,0 +1,50 @@ +# Copyright 2021 Google LLC +# +# 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. + +name: simple-example +depends: + - name: inspec-gcp + git: https://github.com/inspec/inspec-gcp.git + tag: v1.8.0 +attributes: + - name: project_id + required: true + type: string + - name: location + required: true + type: string + - name: cluster_name + required: true + type: string + - name: master_kubernetes_version + required: true + type: string + - name: kubernetes_endpoint + required: true + type: string + - name: client_token + required: true + type: string + - name: service_account + required: true + type: string + - name: service_account + required: true + type: string + - name: database_encryption_key_name + required: true + type: string + - name: identity_namespace + required: true + type: string \ No newline at end of file diff --git a/cli/go.mod b/cli/go.mod index f31f55c9846..a62fec1093c 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -11,17 +11,21 @@ require ( github.com/gammazero/workerpool v1.1.2 github.com/golang/protobuf v1.5.2 github.com/google/go-cmp v0.5.6 + github.com/iancoleman/strcase v0.2.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/jedib0t/go-pretty/v6 v6.2.4 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible // indirect github.com/open-policy-agent/opa v0.34.2 + github.com/otiai10/copy v1.6.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.2.1 github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.7.0 + google.golang.org/api v0.58.0 google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 gopkg.in/yaml.v2 v2.4.0 + sigs.k8s.io/yaml v1.2.0 ) replace github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible => github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e diff --git a/cli/go.sum b/cli/go.sum index 06f99353d0f..58b744d5929 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -699,6 +699,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -958,10 +960,12 @@ github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= From b612c2858c8a68587b719eb00499e19d41622911 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 29 Mar 2022 18:49:41 -0500 Subject: [PATCH 0062/1371] feat: bpt skip hidden dirs during discovery (#1108) --- cli/bptest/list.go | 4 ++++ cli/bptest/list_test.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/cli/bptest/list.go b/cli/bptest/list.go index 7b19ae45aa2..cb3907f24e6 100644 --- a/cli/bptest/list.go +++ b/cli/bptest/list.go @@ -176,6 +176,10 @@ func findFiles(dir string, matchFn func(d fs.DirEntry) bool) []string { if err != nil { return err } + // ignore hidden dirs + if d.IsDir() && strings.HasPrefix(d.Name(), ".") { + return filepath.SkipDir + } if !d.IsDir() && matchFn(d) { files = append(files, fpath) return nil diff --git a/cli/bptest/list_test.go b/cli/bptest/list_test.go index d1f20da55b1..ade3e181f61 100644 --- a/cli/bptest/list_test.go +++ b/cli/bptest/list_test.go @@ -214,6 +214,11 @@ func Test_discoverIntTestDir(t *testing.T) { files: []string{path.Join("foo/bar/baz", discoverTestFilename), "foo.go", "test.tf", "other/test/bar_test.go"}, want: "foo/bar/baz", }, + { + name: "with single discover_test.go and multiple hidden discover_test.go", + files: []string{path.Join("foo/bar/baz", discoverTestFilename), path.Join("foo/bar/baz/.terraform", discoverTestFilename), "foo.go", "test.tf", "other/test/bar_test.go"}, + want: "foo/bar/baz", + }, { name: "with multiple discover_test.go", files: []string{path.Join("mod1/test/integration", discoverTestFilename), path.Join("mod2/test/integration", discoverTestFilename)}, From ada395c181636f966678edf4e3b17054d2534cf0 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 30 Mar 2022 15:23:51 -0500 Subject: [PATCH 0063/1371] chore: Update tools to 1.4.5 (#1103) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 801a1f5ca53..b4f5f6b5e37 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.7 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 377.0.0 +CLOUD_SDK_VERSION := 379.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.3 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 0e962c6ff0f5fa4f38cab62c31e78bd67d5923de Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 1 Apr 2022 15:47:19 -0500 Subject: [PATCH 0064/1371] feat: add golden string sanitizer option (#1109) --- infra/blueprint-test/pkg/golden/golden.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/infra/blueprint-test/pkg/golden/golden.go b/infra/blueprint-test/pkg/golden/golden.go index 286d6324ca5..2d7a93a8396 100644 --- a/infra/blueprint-test/pkg/golden/golden.go +++ b/infra/blueprint-test/pkg/golden/golden.go @@ -85,6 +85,12 @@ func WithSanitizer(s Sanitizer) goldenFileOption { } } +func WithStringSanitizer(old, new string) goldenFileOption { + return func(g *GoldenFile) { + g.sanitizers = append(g.sanitizers, StringSanitizer(old, new)) + } +} + func NewOrUpdate(t testing.TB, data string, opts ...goldenFileOption) *GoldenFile { g := &GoldenFile{ dir: gfDir, From 9f9a444009fd9a35d074efff5803d2a2fb8572e8 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 1 Apr 2022 15:52:56 -0500 Subject: [PATCH 0065/1371] feat: add transform func for removing a json value by path (#1110) --- infra/blueprint-test/go.mod | 3 ++- infra/blueprint-test/go.sum | 4 ++++ infra/blueprint-test/pkg/utils/transforms.go | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index b975e7c91e2..cc1b1bb1c88 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -12,7 +12,8 @@ require ( github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect github.com/otiai10/copy v1.6.0 github.com/stretchr/testify v1.7.0 - github.com/tidwall/gjson v1.10.2 + github.com/tidwall/gjson v1.12.1 + github.com/tidwall/sjson v1.2.4 // indirect golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420 // indirect golang.org/x/sys v0.0.0-20210603125802-9665404d3644 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index e797f57c84c..a4a55ffcd4d 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -406,10 +406,14 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.12.1 h1:ikuZsLdhr8Ws0IdROXUS1Gi4v9Z4pGqpX/CvJkxvfpo= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.4 h1:cuiLzLnaMeBhRmEv00Lpk3tkYrcxpmbU81tAY4Dw0tc= +github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= diff --git a/infra/blueprint-test/pkg/utils/transforms.go b/infra/blueprint-test/pkg/utils/transforms.go index 786909a429a..1adcc77f9df 100644 --- a/infra/blueprint-test/pkg/utils/transforms.go +++ b/infra/blueprint-test/pkg/utils/transforms.go @@ -19,6 +19,7 @@ package utils import ( "github.com/mitchellh/go-testing-interface" "github.com/tidwall/gjson" + "github.com/tidwall/sjson" ) // GetFirstMatchResult returns the first matching result with a given k/v @@ -40,3 +41,12 @@ func GetResultStrSlice(rs []gjson.Result) []string { } return s } + +// DeleteFromResult deletes given path from result and returns the modified result +func DeleteFromResult(t testing.TB, pth string, r gjson.Result) gjson.Result { + n, err := sjson.Delete(r.String(), pth) + if err != nil { + t.Fatalf("unable to delete path %s in %s", pth, r.String()) + } + return ParseJSONResult(t, n) +} From ac1dac0e8899652f877da63e64ead741be59fcc9 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 6 Apr 2022 21:50:10 -0500 Subject: [PATCH 0066/1371] chore: release CFT CLI version v0.4.4 (#1114) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index d85df9524b6..97deb693da9 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.4.3 +VERSION=v0.4.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From 1a711e4b60eb3cd78f063b5f9b961ac7936b1fe4 Mon Sep 17 00:00:00 2001 From: Morgante Pell Date: Thu, 7 Apr 2022 11:53:48 -0400 Subject: [PATCH 0067/1371] chore: Add Shahid as OWNER (#1115) Co-authored-by: Bharath KKB --- CODEOWNERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index a09fc9fb703..949414d34dd 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,11 +1,11 @@ # Main team administering overall repo -* @morgante @bharathkkb @ocsig +* @morgante @bharathkkb @ocsig @kaariger # Deployment Manager Reviewers /dm/ @morgante @ocsig @sjvanrossum # CLI owners -/cli/ @morgante @bharathkkb +/cli/ @morgante @bharathkkb @kaariger # Config Connector team /config-connector/ @morgante @ocsig @AlexBulankou @maqiuyujoyce From 30103f6571d2b69975e3871a8dd7dd4e78a9cba1 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 7 Apr 2022 10:59:12 -0700 Subject: [PATCH 0068/1371] fix: exclude porch when checking kpt releases (#1117) --- .github/workflows/update-tooling.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index d5115172e35..fabde8436d0 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -31,8 +31,8 @@ jobs: if [ "$tool" == "CLOUD_SDK" ]; then LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | tar --to-stdout -xzf - google-cloud-sdk/VERSION) elif [ "$tool" == "KPT" ]; then - # get latest release including pre-releases for kpt - LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .[0].tag_name | tr -d "v") + # get latest release including pre-releases for kpt, excluding releases of porch + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .tag_name | contains("porch/") | not )][0].tag_name' | tr -d "v") else LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .tag_name | tr -d "v") fi From 7acc10e98fa7693f0773ba636e0649314f003389 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 7 Apr 2022 13:53:49 -0500 Subject: [PATCH 0069/1371] Update tools to 1.4.6 (#1113) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index b4f5f6b5e37..cddb13137b4 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.7 +TERRAFORM_VERSION := 1.1.8 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 379.0.0 +CLOUD_SDK_VERSION := 380.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -28,11 +28,11 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.14 -CFT_CLI_VERSION := 0.4.3 +CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 8383c92c8a54322eebca8a058550b46396f043aa Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 11 Apr 2022 20:01:17 +0500 Subject: [PATCH 0070/1371] feat: adds logic for copying additional resources to the build directory (#1118) * feat:adds logic for copying additional resources to the build directory * added logic for multiple resource paths * minor readability fixes Co-authored-by: Awais Malik --- infra/blueprint-test/pkg/krmt/krm.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/infra/blueprint-test/pkg/krmt/krm.go b/infra/blueprint-test/pkg/krmt/krm.go index 6b5f8607296..2c21428b487 100644 --- a/infra/blueprint-test/pkg/krmt/krm.go +++ b/infra/blueprint-test/pkg/krmt/krm.go @@ -30,6 +30,7 @@ type KRMBlueprintTest struct { discovery.BlueprintTestConfig // additional blueprint test configs name string // descriptive name for the test exampleDir string // directory containing KRM blueprint example + additionalResources []string // paths to directories or files containing additional resources to be applied buildDir string // directory to hydrated blueprint configs pre apply kpt *kpt.CmdCfg // kpt cmd config timeout string // timeout for KRM resource status @@ -58,6 +59,14 @@ func WithDir(dir string) krmtOption { } } +func WithAdditionalResources(rscs ...string) krmtOption { + return func(f *KRMBlueprintTest) { + for _, dir := range rscs { + f.additionalResources = append(f.additionalResources, dir) + } + } +} + func WithBuildDir(buildDir string) krmtOption { return func(f *KRMBlueprintTest) { f.buildDir = buildDir @@ -133,6 +142,16 @@ func NewKRMBlueprintTest(t testing.TB, opts ...krmtOption) *KRMBlueprintTest { } krmt.exampleDir = exampleDir } + // if explicit resourcesDir is provided, validate it. + if len(krmt.additionalResources) != 0 { + for _, path := range krmt.additionalResources { + _, err := os.Stat(path) + if os.IsNotExist(err) { + t.Fatalf("Path for additional resources %s does not exist", path) + } + } + } + // discover test config var err error krmt.BlueprintTestConfig, err = discovery.GetTestConfig(path.Join(krmt.exampleDir, discovery.DefaultTestConfigFilename)) @@ -201,6 +220,15 @@ func (b *KRMBlueprintTest) setupBuildDir() { if err != nil { b.t.Fatalf("unable to copy %s to %s :%v", b.exampleDir, b.buildDir, err) } + // copy over additional resources into build dir, if present + if len(b.additionalResources) != 0 { + for _, path := range b.additionalResources { + err = copy.Copy(path, b.buildDir) + if err != nil { + b.t.Fatalf("unable to copy %s to %s :%v", path, b.buildDir, err) + } + } + } // subsequent kpt pkg update requires a clean git repo without uncommitted changes // init a new git repo in build dir and commit changes git := git.NewCmdConfig(b.t, git.WithDir(b.buildDir)) From 2b888ce74c4dec9755201969c0eb062459d926b6 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 19 Apr 2022 10:11:21 -0500 Subject: [PATCH 0071/1371] Update tools to 1.4.7 (#1121) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index cddb13137b4..a5eff5a89b6 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.8 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 380.0.0 +CLOUD_SDK_VERSION := 381.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 28bc5335bde717bd36c49b4834154a8315dd7ca9 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 26 Apr 2022 11:05:54 -0500 Subject: [PATCH 0072/1371] Update tools to 1.4.8 (#1123) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index a5eff5a89b6..f41a3979bfb 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.8 +TERRAFORM_VERSION := 1.1.9 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 381.0.0 +CLOUD_SDK_VERSION := 382.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From cc2b8e266671aa93cfaa27dc414fc58d1b6f99c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Apr 2022 13:42:46 -0400 Subject: [PATCH 0073/1371] chore(deps): bump nokogiri in /infra/build/developer-tools/build/data (#1120) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.2 to 1.13.4. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.13.4/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.2...v1.13.4) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/build/developer-tools/build/data/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index eb2762cdddc..950137d6e50 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -376,7 +376,7 @@ GEM net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.13.2) + nokogiri (1.13.4) mini_portile2 (~> 2.8.0) racc (~> 1.4) nori (2.6.0) From 4acf5f8efc24cb5bd9e87335ec7bf9eb31518f42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Apr 2022 13:43:36 -0400 Subject: [PATCH 0074/1371] chore(deps): bump kubeclient in /infra/build/developer-tools/build/data (#1111) Bumps [kubeclient](https://github.com/abonas/kubeclient) from 4.5.0 to 4.9.3. - [Release notes](https://github.com/abonas/kubeclient/releases) - [Changelog](https://github.com/ManageIQ/kubeclient/blob/master/CHANGELOG.md) - [Commits](https://github.com/abonas/kubeclient/compare/v4.5.0...v4.9.3) --- updated-dependencies: - dependency-name: kubeclient dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../build/developer-tools/build/data/Gemfile | 2 +- .../developer-tools/build/data/Gemfile.lock | 33 ++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/infra/build/developer-tools/build/data/Gemfile b/infra/build/developer-tools/build/data/Gemfile index ee92ff23104..7461e0697fd 100644 --- a/infra/build/developer-tools/build/data/Gemfile +++ b/infra/build/developer-tools/build/data/Gemfile @@ -14,7 +14,7 @@ source 'https://rubygems.org/' do gem "kitchen-terraform", "~> 5.8" - gem "kubeclient", "~> 4.0" + gem "kubeclient", "~> 4.9" gem "rest-client", "~> 2.0" gem 'nokogiri', '~> 1.13' end diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 950137d6e50..3b65aea96f6 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -195,7 +195,7 @@ GEM docker-api (2.0.0) excon (>= 0.47.0) multi_json - domain_name (0.5.20180417) + domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) dry-configurable (0.11.6) concurrent-ruby (~> 1.0) @@ -238,7 +238,7 @@ GEM http-cookie (~> 1.0.0) faraday_middleware (1.0.0) faraday (~> 1.0) - ffi (1.11.1) + ffi (1.15.5) ffi-compiler (1.0.1) ffi (>= 1.0.0) rake @@ -266,16 +266,16 @@ GEM builder (>= 2.1.2) hana (1.3.6) hashie (3.6.0) - http (4.2.0) + http (4.4.1) addressable (~> 2.3) http-cookie (~> 1.0) - http-form_data (~> 2.0) + http-form_data (~> 2.2) http-parser (~> 1.2.0) http-accept (1.7.0) - http-cookie (1.0.3) + http-cookie (1.0.4) domain_name (~> 0.5) - http-form_data (2.1.1) - http-parser (1.2.1) + http-form_data (2.3.0) + http-parser (1.2.3) ffi-compiler (>= 1.0, < 2.0) httpclient (2.8.3) i18n (1.8.5) @@ -318,6 +318,8 @@ GEM hana (~> 1.3) regexp_parser (~> 1.5) uri_template (~> 0.7) + jsonpath (1.1.0) + multi_json jwt (2.2.2) kitchen-terraform (5.8.0) delegate (~> 0.1.0) @@ -327,9 +329,10 @@ GEM mixlib-shellout (~> 3.0) test-kitchen (~> 2.1) tty-which (~> 0.4.0) - kubeclient (4.5.0) + kubeclient (4.9.3) http (>= 3.0, < 5.0) - recursive-open-struct (~> 1.0, >= 1.0.4) + jsonpath (~> 1.0) + recursive-open-struct (~> 1.1, >= 1.1.1) rest-client (~> 2.0) libyajl2 (1.2.0) license-acceptance (2.1.2) @@ -343,9 +346,9 @@ GEM multi_json (~> 1.14) memoist (0.16.2) method_source (1.0.0) - mime-types (3.2.2) + mime-types (3.4.1) mime-types-data (~> 3.2015) - mime-types-data (3.2019.0331) + mime-types-data (3.2022.0105) mini_mime (1.0.2) mini_portile2 (2.8.0) minitest (5.14.2) @@ -390,8 +393,8 @@ GEM method_source (~> 1.0) public_suffix (4.0.6) racc (1.6.0) - rake (13.0.0) - recursive-open-struct (1.1.0) + rake (13.0.6) + recursive-open-struct (1.1.3) regexp_parser (1.8.2) representable (3.0.4) declarative (< 0.1.0) @@ -549,7 +552,7 @@ GEM uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.2) + unf_ext (0.0.8.1) unicode-display_width (1.7.0) unicode_utils (1.4.0) uri_template (0.7.0) @@ -578,7 +581,7 @@ PLATFORMS DEPENDENCIES kitchen-terraform (~> 5.8)! - kubeclient (~> 4.0)! + kubeclient (~> 4.9)! nokogiri (~> 1.13)! rest-client (~> 2.0)! From 6fc52c9fe56cce31a0e60ed416525b3a732abee2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Apr 2022 13:43:45 -0400 Subject: [PATCH 0075/1371] chore(deps): bump kubeclient in /infra/concourse/build/data (#1112) Bumps [kubeclient](https://github.com/abonas/kubeclient) from 4.5.0 to 4.9.3. - [Release notes](https://github.com/abonas/kubeclient/releases) - [Changelog](https://github.com/ManageIQ/kubeclient/blob/master/CHANGELOG.md) - [Commits](https://github.com/abonas/kubeclient/compare/v4.5.0...v4.9.3) --- updated-dependencies: - dependency-name: kubeclient dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/concourse/build/data/Gemfile | 2 +- infra/concourse/build/data/Gemfile.lock | 34 +++++++++++++++---------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/infra/concourse/build/data/Gemfile b/infra/concourse/build/data/Gemfile index 5cf8233a74b..36950f9c63a 100644 --- a/infra/concourse/build/data/Gemfile +++ b/infra/concourse/build/data/Gemfile @@ -14,6 +14,6 @@ source 'https://rubygems.org/' do gem "kitchen-terraform", "~> 4.9" - gem "kubeclient", "~> 4.0" + gem "kubeclient", "~> 4.9" gem "rest-client", "~> 2.0" end diff --git a/infra/concourse/build/data/Gemfile.lock b/infra/concourse/build/data/Gemfile.lock index 1a91511e50b..4e24929217b 100644 --- a/infra/concourse/build/data/Gemfile.lock +++ b/infra/concourse/build/data/Gemfile.lock @@ -28,7 +28,7 @@ GEM docker-api (1.34.2) excon (>= 0.47.0) multi_json - domain_name (0.5.20180417) + domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) dry-configurable (0.8.3) concurrent-ruby (~> 1.0) @@ -69,6 +69,9 @@ GEM faraday_middleware (0.12.2) faraday (>= 0.7.4, < 1.0) ffi (1.11.1) + ffi-compiler (1.0.1) + ffi (>= 1.0.0) + rake google-api-client (0.23.9) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.5, < 0.7.0) @@ -90,16 +93,17 @@ GEM builder (>= 2.1.2) hashie (3.6.0) htmlentities (4.3.4) - http (4.1.1) + http (4.4.1) addressable (~> 2.3) http-cookie (~> 1.0) - http-form_data (~> 2.0) - http_parser.rb (~> 0.6.0) + http-form_data (~> 2.2) + http-parser (~> 1.2.0) http-accept (1.7.0) - http-cookie (1.0.3) + http-cookie (1.0.4) domain_name (~> 0.5) - http-form_data (2.1.1) - http_parser.rb (0.6.0) + http-form_data (2.3.0) + http-parser (1.2.3) + ffi-compiler (>= 1.0, < 2.0) httpclient (2.8.3) inifile (3.0.0) inspec (3.9.3) @@ -129,6 +133,8 @@ GEM tty-table (~> 0.10) jmespath (1.4.0) json (2.1.0) + jsonpath (1.1.0) + multi_json jwt (2.2.1) kitchen-terraform (4.9.0) dry-types (~> 0.14.0) @@ -138,9 +144,10 @@ GEM mixlib-shellout (~> 2.2) test-kitchen (~> 1.23) tty-which (~> 0.4.0) - kubeclient (4.5.0) + kubeclient (4.9.3) http (>= 3.0, < 5.0) - recursive-open-struct (~> 1.0, >= 1.0.4) + jsonpath (~> 1.0) + recursive-open-struct (~> 1.1, >= 1.1.1) rest-client (~> 2.0) little-plugger (1.1.4) logging (2.2.2) @@ -148,9 +155,9 @@ GEM multi_json (~> 1.10) memoist (0.16.0) method_source (0.9.2) - mime-types (3.2.2) + mime-types (3.4.1) mime-types-data (~> 3.2015) - mime-types-data (3.2019.0331) + mime-types-data (3.2022.0105) mixlib-install (3.11.18) mixlib-shellout mixlib-versioning @@ -188,7 +195,8 @@ GEM coderay (~> 1.1.0) method_source (~> 0.9.0) public_suffix (4.0.6) - recursive-open-struct (1.1.0) + rake (13.0.6) + recursive-open-struct (1.1.3) representable (3.0.4) declarative (< 0.1.0) declarative-option (< 0.2.0) @@ -313,7 +321,7 @@ PLATFORMS DEPENDENCIES kitchen-terraform (~> 4.9)! - kubeclient (~> 4.0)! + kubeclient (~> 4.9)! rest-client (~> 2.0)! BUNDLED WITH From 416530528bc368a9041419793c57ac0a638173f2 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 28 Apr 2022 12:44:06 -0500 Subject: [PATCH 0076/1371] chore: Update tools to 1.4.9 (#1128) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f41a3979bfb..2fe1faee443 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.9 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 382.0.0 +CLOUD_SDK_VERSION := 383.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 32f3a8bd461b95ad50288f64e44578aab958388f Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 3 May 2022 17:35:40 -0500 Subject: [PATCH 0077/1371] feat: add flaky build finder util (#1125) * feat: flaky build finder * reorg * fix pkg * fix dir name --- .../{ => delete-projects}/delete-projects.py | 0 .../{ => delete-projects}/requirements.txt | 0 infra/utils/fbf/README.md | 19 + infra/utils/fbf/cmd/cb.go | 63 ++ infra/utils/fbf/cmd/flaky.go | 160 +++++ infra/utils/fbf/cmd/flaky_test.go | 81 +++ infra/utils/fbf/cmd/time.go | 13 + infra/utils/fbf/go.mod | 10 + infra/utils/fbf/go.sum | 633 ++++++++++++++++++ infra/utils/fbf/main.go | 26 + 10 files changed, 1005 insertions(+) rename infra/utils/{ => delete-projects}/delete-projects.py (100%) rename infra/utils/{ => delete-projects}/requirements.txt (100%) create mode 100644 infra/utils/fbf/README.md create mode 100644 infra/utils/fbf/cmd/cb.go create mode 100644 infra/utils/fbf/cmd/flaky.go create mode 100644 infra/utils/fbf/cmd/flaky_test.go create mode 100644 infra/utils/fbf/cmd/time.go create mode 100644 infra/utils/fbf/go.mod create mode 100644 infra/utils/fbf/go.sum create mode 100644 infra/utils/fbf/main.go diff --git a/infra/utils/delete-projects.py b/infra/utils/delete-projects/delete-projects.py similarity index 100% rename from infra/utils/delete-projects.py rename to infra/utils/delete-projects/delete-projects.py diff --git a/infra/utils/requirements.txt b/infra/utils/delete-projects/requirements.txt similarity index 100% rename from infra/utils/requirements.txt rename to infra/utils/delete-projects/requirements.txt diff --git a/infra/utils/fbf/README.md b/infra/utils/fbf/README.md new file mode 100644 index 00000000000..425af0fa787 --- /dev/null +++ b/infra/utils/fbf/README.md @@ -0,0 +1,19 @@ +# Flaky Build Finder + +## Usage + +``` +go install github.com/GoogleCloudPlatformcloud-foundation-toolkit/infra/utils/fbf +``` + +``` +Usage of fbf: + -end-time string + Time to stop computing flakes in form MM-DD-YYYY + -project-id string + Project ID + -start-time string + Time to start computing flakes in form MM-DD-YYYY + -verbose + Display detailed table with flaky build IDs +``` \ No newline at end of file diff --git a/infra/utils/fbf/cmd/cb.go b/infra/utils/fbf/cmd/cb.go new file mode 100644 index 00000000000..2a48b28af1f --- /dev/null +++ b/infra/utils/fbf/cmd/cb.go @@ -0,0 +1,63 @@ +package cmd + +import ( + "context" + "fmt" + "time" + + cloudbuild "google.golang.org/api/cloudbuild/v1" +) + +const ( + successStatus = "SUCCESS" + failedStatus = "FAILURE" +) + +// getCBBuildsWithFilter returns a list of cloudbuild builds in projectID within start and end time +func getCBBuildsWithFilter(start, end time.Time, projectID string) ([]*build, error) { + ctx := context.Background() + cloudbuildService, err := cloudbuild.NewService(ctx) + if err != nil { + return nil, fmt.Errorf("error creating cloudbuild service: %v", err) + } + + filter := fmt.Sprintf("create_time>=\"%s\" AND create_time<\"%s\"", formatTimeCB(start), formatTimeCB(end)) + c, err := cloudbuildService.Projects.Builds.List(projectID).Filter(filter).Do() + if err != nil { + return nil, fmt.Errorf("error listing builds with filter %s in project %s: %v", filter, projectID, err) + } + cbBuilds := c.Builds + if len(cbBuilds) < 1 { + return nil, fmt.Errorf("no builds found with filter %s in project %s", filter, projectID) + } + + for { + c, err = cloudbuildService.Projects.Builds.List(projectID).Filter(filter).PageToken(c.NextPageToken).Do() + if err != nil { + return nil, fmt.Errorf("error retriving next page with token %s: %v", c.NextPageToken, err) + } + cbBuilds = append(cbBuilds, c.Builds...) + if c.NextPageToken == "" { + break + } + } + + builds := []*build{} + for _, b := range cbBuilds { + // filter out builds not triggered from source repos + commit, commitExists := b.Substitutions["COMMIT_SHA"] + if !commitExists { + continue + } + repoName, repoNameExists := b.Substitutions["REPO_NAME"] + if !repoNameExists { + continue + } + triggerName, triggerNameExists := b.Substitutions["TRIGGER_NAME"] + if !triggerNameExists { + continue + } + builds = append(builds, &build{commitSHA: commit, repoName: repoName, jobName: triggerName, id: b.Id, status: b.Status}) + } + return builds, nil +} diff --git a/infra/utils/fbf/cmd/flaky.go b/infra/utils/fbf/cmd/flaky.go new file mode 100644 index 00000000000..7cb2cb8a886 --- /dev/null +++ b/infra/utils/fbf/cmd/flaky.go @@ -0,0 +1,160 @@ +package cmd + +import ( + "fmt" + "os" + "time" + + "github.com/briandowns/spinner" + "github.com/jedib0t/go-pretty/v6/table" +) + +// FlakyFinder finds flakes between start and end times +type FlakyFinder struct { + startTime time.Time + endTime time.Time + projectID string + verbose bool + flakes map[string]flake +} + +// flake represents a collection of flaky builds for a given commit +type flake struct { + repo string // repo name + commitSHA string // commit SHA + passes map[string]*build // builds passed for commit + fails map[string]*build // builds passed for commit +} + +// build represents a single instance of a job invoken at commitSHA on a source repo +type build struct { + repoName string + jobName string + commitSHA string + id string + status string +} + +// todo(bharathkkb): use config +func NewFlakyFinder(start, end, projectID string, verbose bool) (*FlakyFinder, error) { + startTime, err := getTimeFromStr(start) + if err != nil { + return nil, fmt.Errorf("error parsing startime: %v", err) + } + endTime, err := getTimeFromStr(end) + if err != nil { + return nil, fmt.Errorf("error parsing endTime: %v", err) + } + if projectID == "" { + return nil, fmt.Errorf("error got empty project ID") + } + return &FlakyFinder{ + startTime: startTime, + endTime: endTime, + projectID: projectID, + verbose: verbose, + }, nil +} + +func (f *FlakyFinder) ComputeFlakes() error { + // get builds + s := spinner.New(spinner.CharSets[35], 500*time.Millisecond) + s.Start() + // todo(bharathkkb): support other build systems + builds, err := getCBBuildsWithFilter(f.startTime, f.endTime, f.projectID) + if err != nil { + return fmt.Errorf("error getting builds: %v", err) + } + s.Stop() + // compute flakes + f.flakes = computeFlakesFromBuilds(builds) + return nil +} + +// computeFlakesFromBuilds computes flakes from a slice of builds +// a collection of builds are considered flakey iff at least two builds +// have passed and failed at the same commit in a repo when triggered by the same job +func computeFlakesFromBuilds(builds []*build) map[string]flake { + flakes := make(map[string]flake) + for _, b1 := range builds { + // commit may have multiple builds so the key for flake lookup is + // computed from commitSHA and job name + flakeKey := fmt.Sprintf("%s-%s", b1.commitSHA, b1.jobName) + // skip if flakes with same flakeKey were previously computed + //todo(bharathkkb): optimize, we can probably remove elems in a flake from build slice + _, exists := flakes[flakeKey] + if exists { + continue + } + // store individual build info + passedBuildsWithCommit := make(map[string]*build) + failedBuildsWithCommit := make(map[string]*build) + storeBuildInfo := func(b *build) { + switch b.status { + case successStatus: + passedBuildsWithCommit[b.id] = b + case failedStatus: + failedBuildsWithCommit[b.id] = b + } + } + storeBuildInfo(b1) + + for _, b2 := range builds { + // match other builds with same commit,repo and job + if b1.commitSHA == b2.commitSHA && + b1.repoName == b2.repoName && + b1.jobName == b2.jobName { + storeBuildInfo(b2) + } + } + + // At least one pass and one fail for a given commit is necessary to become a flake + if len(passedBuildsWithCommit) > 0 && len(failedBuildsWithCommit) > 0 { + flakes[flakeKey] = flake{repo: b1.repoName, commitSHA: b1.commitSHA, passes: passedBuildsWithCommit, fails: failedBuildsWithCommit} + } + } + return flakes +} + +// render displays results in a tabular format +func (f *FlakyFinder) Render() { + // verbose table with build ids + tableVerbose := table.NewWriter() + tableVerbose.SetOutputMirror(os.Stdout) + tableVerbose.AppendHeader(table.Row{"Repo", "Commit", "Pass Build IDs", "Fail Build IDs"}) + // flakes per repo + repoFlakeCount := make(map[string]int) + // flake failures per repo + repoFlakeFailCount := make(map[string]int) + for _, f := range f.flakes { + repoFlakeCount[f.repo]++ + repoFlakeFailCount[f.repo] += len(f.fails) + pass := "" + for id := range f.passes { + pass += id + "\n" + } + fail := "" + for id := range f.fails { + fail += id + "\n" + } + tableVerbose.AppendRow(table.Row{f.repo, f.commitSHA, pass, fail}) + tableVerbose.AppendSeparator() + } + if f.verbose { + tableVerbose.Render() + } + + // overview table with total number of flakes per repo + tableOverview := table.NewWriter() + tableOverview.SetOutputMirror(os.Stdout) + tableOverview.AppendHeader(table.Row{"Repo", "Flakes", "Flake Failures"}) + totalFlakeCount := 0 + totalFlakeFailCount := 0 + for repo, flakeCount := range repoFlakeCount { + tableOverview.AppendRow(table.Row{repo, flakeCount, repoFlakeFailCount[repo]}) + totalFlakeCount += flakeCount + totalFlakeFailCount += repoFlakeFailCount[repo] + } + tableOverview.AppendFooter(table.Row{"Total", totalFlakeCount, totalFlakeFailCount}) + tableOverview.Render() +} diff --git a/infra/utils/fbf/cmd/flaky_test.go b/infra/utils/fbf/cmd/flaky_test.go new file mode 100644 index 00000000000..c2c4b5a7f92 --- /dev/null +++ b/infra/utils/fbf/cmd/flaky_test.go @@ -0,0 +1,81 @@ +package cmd + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_computeFlakesFromBuilds(t *testing.T) { + tests := []struct { + name string + builds []*build + want map[string]flake + }{ + { + name: "single", + builds: []*build{ + getBuild("foo", "j1", "1", "id1", true), + getBuild("foo", "j1", "1", "id2", false), + }, + want: map[string]flake{"1-j1": { + repo: "foo", + commitSHA: "1", + passes: map[string]*build{"id1": getBuild("foo", "j1", "1", "id1", true)}, + fails: map[string]*build{"id2": getBuild("foo", "j1", "1", "id2", false)}, + }, + }, + }, + { + name: "multiple with no flakes", + builds: []*build{ + getBuild("foo", "j1", "1", "id1", true), + getBuild("foo", "j1", "2", "id2", false), + }, + want: map[string]flake{}, + }, + { + name: "multiple flakes", + builds: []*build{ + getBuild("foo", "j1", "1", "id1", true), + getBuild("foo", "j1", "1", "id2", false), + getBuild("foo", "j1", "1", "id3", false), + getBuild("foo", "j1", "2", "id4", true), + getBuild("foo", "j1", "2", "id5", false), + getBuild("bar", "j1", "2", "id6", false), + getBuild("bar", "j2", "2", "id7", false), + }, + want: map[string]flake{ + "1-j1": { + repo: "foo", + commitSHA: "1", + passes: map[string]*build{"id1": getBuild("foo", "j1", "1", "id1", true)}, + fails: map[string]*build{ + "id2": getBuild("foo", "j1", "1", "id2", false), + "id3": getBuild("foo", "j1", "1", "id3", false), + }, + }, + "2-j1": { + repo: "foo", + commitSHA: "2", + passes: map[string]*build{"id4": getBuild("foo", "j1", "2", "id4", true)}, + fails: map[string]*build{"id5": getBuild("foo", "j1", "2", "id5", false)}, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := computeFlakesFromBuilds(tt.builds) + require.EqualValues(t, tt.want, got) + }) + } +} + +func getBuild(repoName, jobName, commitSHA string, id string, pass bool) *build { + status := failedStatus + if pass { + status = successStatus + } + return &build{repoName: repoName, jobName: jobName, commitSHA: commitSHA, id: id, status: status} +} diff --git a/infra/utils/fbf/cmd/time.go b/infra/utils/fbf/cmd/time.go new file mode 100644 index 00000000000..faeb051b0c2 --- /dev/null +++ b/infra/utils/fbf/cmd/time.go @@ -0,0 +1,13 @@ +package cmd + +import ( + "time" +) + +func getTimeFromStr(t string) (time.Time, error) { + return time.Parse("01-02-2006", t) +} + +func formatTimeCB(t time.Time) string { + return t.Format(time.RFC3339) +} diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod new file mode 100644 index 00000000000..7219daee56f --- /dev/null +++ b/infra/utils/fbf/go.mod @@ -0,0 +1,10 @@ +module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/utils/fbf + +go 1.16 + +require ( + github.com/briandowns/spinner v1.18.1 // indirect + github.com/jedib0t/go-pretty/v6 v6.3.1 // indirect + github.com/stretchr/testify v1.7.1 // indirect + google.golang.org/api v0.75.0 +) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum new file mode 100644 index 00000000000..4162bac593b --- /dev/null +++ b/infra/utils/fbf/go.sum @@ -0,0 +1,633 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0 h1:XdQIN5mdPTSBVwSIVDuY5e8ZzVAccsHvD3qTEz4zIps= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +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= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/briandowns/spinner v1.18.1 h1:yhQmQtM1zsqFsouh09Bk/jCjd50pC3EOGsh28gLVvwY= +github.com/briandowns/spinner v1.18.1/go.mod h1:mQak9GHqbspjC/5iUx3qMlIho8xBS/ppAL/hX5SmPJU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +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/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +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/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +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/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= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +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/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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0 h1:nRJtk3y8Fm770D42QV6T90ZnvFZyk7agSo3Q+Z9p3WI= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +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/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jedib0t/go-pretty/v6 v6.3.1 h1:aOXiD9oqiuLH8btPQW6SfgtQN5zwhyfzZls8a6sPJ/I= +github.com/jedib0t/go-pretty/v6 v6.3.1/go.mod h1:FMkOpgGD3EZ91cW8g/96RfxoV7bdeJyzXPYgz1L1ln0= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +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/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +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 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +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= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +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= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +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= +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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +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-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/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/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= +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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +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= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +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= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +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= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0 h1:0AYh/ae6l9TDUvIQrDw5QRpM100P6oHgD+o3dYHMzJg= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +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/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= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4 h1:myaecH64R0bIEDjNORIel4iXubqzaHU1K2z8ajBwWcM= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +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= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +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= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +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= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +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= diff --git a/infra/utils/fbf/main.go b/infra/utils/fbf/main.go new file mode 100644 index 00000000000..cf277ae0083 --- /dev/null +++ b/infra/utils/fbf/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "flag" + "log" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/utils/fbf/cmd" +) + +func main() { + startTime := flag.String("start-time", "", "Time to start computing flakes in form MM-DD-YYYY") + endTime := flag.String("end-time", "", "Time to stop computing flakes in form MM-DD-YYYY") + projectID := flag.String("project-id", "", "Project ID") + verbose := flag.Bool("verbose", false, "Display detailed table with flaky build IDs") + flag.Parse() + + ftf, err := cmd.NewFlakyFinder(*startTime, *endTime, *projectID, *verbose) + if err != nil { + log.Fatalf("error initializing flaky finder: %v", err) + } + err = ftf.ComputeFlakes() + if err != nil { + log.Fatalf("error computing flakes: %v", err) + } + ftf.Render() +} From d0a72574cc0ba5f70b6e0609e6b2ef2149495dc2 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 4 May 2022 22:20:38 -0500 Subject: [PATCH 0078/1371] Update tools to 1.4.10 (#1129) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 2fe1faee443..ea1cd3da184 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.9 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 383.0.1 +CLOUD_SDK_VERSION := 384.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.10 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 07083fa9e265e65aa12a56be4a70848e99e0ac8e Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 10 May 2022 12:04:47 -0500 Subject: [PATCH 0079/1371] chore: update codeowners (#1131) --- CODEOWNERS | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 949414d34dd..b8f1f2205e5 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,11 +1,11 @@ # Main team administering overall repo -* @morgante @bharathkkb @ocsig @kaariger +* @bharathkkb @ocsig @kaariger @g-awmalik @apeabody # Deployment Manager Reviewers -/dm/ @morgante @ocsig @sjvanrossum +/dm/ @ocsig @sjvanrossum # CLI owners -/cli/ @morgante @bharathkkb @kaariger +/cli/ @bharathkkb @kaariger @g-awmalik @apeabody # Config Connector team -/config-connector/ @morgante @ocsig @AlexBulankou @maqiuyujoyce +/config-connector/ @ocsig @AlexBulankou @maqiuyujoyce From d4cee3eec80c20ed8d00be3f7c7014abf2bd68c5 Mon Sep 17 00:00:00 2001 From: Karim Elatov <44478375+elatovg@users.noreply.github.com> Date: Wed, 11 May 2022 19:04:17 -0400 Subject: [PATCH 0080/1371] chore: add secret-manager to test-infra (#1134) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 64b5e7f21b9..fb4bb06865b 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -97,5 +97,6 @@ locals { "network-forensics", "blueprints", # Not module "policy-blueprints", + "secret-manager", ] } From 2bf77fd8918e37a9184cc79be935770aa5afbdcd Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 11 May 2022 18:04:34 -0500 Subject: [PATCH 0081/1371] fix: revert pinned gcloud version (#1130) --- infra/build/Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index ea1cd3da184..c6d574ede93 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.10 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.11 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -45,9 +45,8 @@ REGISTRY_URL := gcr.io/cloud-foundation-cicd .PHONY: build-image-developer-tools build-image-developer-tools: - # TODO(bharathkkb): unpin gcloud version after https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1095 is resolved docker build \ - --build-arg CLOUD_SDK_VERSION=375.0.0 \ + --build-arg CLOUD_SDK_VERSION=${CLOUD_SDK_VERSION} \ --build-arg GSUITE_PROVIDER_VERSION=${GSUITE_PROVIDER_VERSION} \ --build-arg TERRAFORM_VERSION=${TERRAFORM_VERSION} \ --build-arg TERRAFORM_VALIDATOR_VERSION=${TERRAFORM_VALIDATOR_VERSION} \ From b55eacea842a6589f01ee478d2734cc27302b075 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 12 May 2022 21:48:05 -0700 Subject: [PATCH 0082/1371] feat: add merge dependabot PR util (#1133) --- infra/utils/merge_dependabot_prs/README.md | 12 ++ .../merge_dependabot_prs.sh | 117 ++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 infra/utils/merge_dependabot_prs/README.md create mode 100755 infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh diff --git a/infra/utils/merge_dependabot_prs/README.md b/infra/utils/merge_dependabot_prs/README.md new file mode 100644 index 00000000000..6dae47a86a5 --- /dev/null +++ b/infra/utils/merge_dependabot_prs/README.md @@ -0,0 +1,12 @@ +# Merge Dependabot Pull Reqeusts + +## Prerequisites: +Install and Authenticate Github CLI (https://github.com/cli/cli) + +## Usage +``` +merge_dependabot_prs.sh + -o [GitHub organization | Default: terraform-google-modules] + -f [Repository name(s) contains filter | Default: NONE] + -l [label to apply to failed checks | Default: dependabot-checks-failed] +``` diff --git a/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh b/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh new file mode 100755 index 00000000000..ffb2f3a5cae --- /dev/null +++ b/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh @@ -0,0 +1,117 @@ +#!/usr/bin/env bash + +# Copyright 2022 Google LLC +# +# 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 +# +# https://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. + +# Prerequisites: +# Install and Authenticate Github CLI (https://github.com/cli/cli) +# +# Usage of merge_dependabot_prs.sh +# -o [GitHub organization | Default: terraform-google-modules] +# -f [Repository name(s) contains filter | Default: NONE] +# -l [label to apply to failed checks | Default: dependabot-checks-failed] +# + +set -e + +# Default Variables +ORG="terraform-google-modules" +FILTER=".[].name" +LABEL="dependabot-checks-failed" + +# Process arguments +while getopts 'o:f:l:n' arg; do + case $arg in + o) ORG=${OPTARG} ;; + f) FILTER=".[]|select(.name|contains(\"$OPTARG\"))|.name" ;; + l) LABEL=${OPTARG} ;; + esac +done + +# Initialize Variables +FPRS=() +PPRS=() + +# Check gh is installed +if [ ! -x $(which gh) ]; then + echo "GitHub CLI (gh) not found - Install from https://github.com/cli/cli" + exit 1 +fi + +# Check gh is authenticated +gh auth status > /dev/null 2>&1 +if [ ! $? -eq 0 ]; then + echo "Please authenticate GitHub CLI with 'gh auth login' prior to running" + exit 1 +fi + +# Retrieve list of repos in the Org +REPOS=`gh repo list $ORG --no-archived --json name -q $FILTER -L 1000` + +# Confirm we retrieved repos +if [[ ! -n $REPOS ]]; then + echo "No repos found" + exit +fi + +# Process the repos +for REPO in $REPOS; do + REPO=$ORG/$REPO + echo "Processing $REPO" + + # Retrieve Pull Requests + PRS=`gh pr list -R $REPO -s open --json number -q '.[].number' --app dependabot` + if [ -n $PRS ]; then + echo " No open Dependabot Pull Requests found for $REPO" + continue + else + echo " Processing ${PRS[@]} Pull Requests" + fi + + # Process Pull Rquests + for PR in $PRS; do + echo " Processing $PR" + # Check status of Pull Request Checks + gh pr checks $PR -R $REPO > /dev/null 2>&1 + if [ $? -eq 0 ]; then + PPRS+=($PR) + # Approve the Pull Request + gh pr review $PR -R $REPO --approve -b "LGTM" + # Squash Merge the Pull Request and Delete the Branch + gh pr merge $PR -d -s -R $REPO + else + FPRS+=($PR) + # Create the Label, if not exist + gh label create $LABEL --color E99695 -R $REPO > /dev/null 2>&1 + # Add the Label to the Pull Request + gh pr edit $PR -R $REPO --add-label $LABEL + fi + done +done + +# List number of approved/merged PRs +if [ ! -n $PPRS ]; then + echo -e "\u2714 approved and merged ${PPRS[@]} Pull Requests" +fi + +# List Failed Checks PRs +if [ ! -n $FPRS ]; then + echo "These Pull Requests have failed checks and have been labled with $LABEL:" + for PR in ${FPRS[@]}; do + echo -e "\u274c $PR: https://github.com/$REPO/pull/$PR" + done + echo "" + echo "View all $ORG PRs in Github with $LABEL at: https://github.com/pulls?q=is%3Aopen+is%3Apr+author%3Aapp%2Fdependabot+archived%3Afalse+org%3A$ORG+label%3A$LABEL" +fi + From e1d915150aecf81287ab914e710395f367522125 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 12 May 2022 23:48:42 -0500 Subject: [PATCH 0083/1371] Update tools to 1.4.12 (#1132) Co-authored-by: Bharath KKB --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index c6d574ede93..b87ee671d8c 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.9 TERRAFORM_VALIDATOR_VERSION := 0.9.1 -CLOUD_SDK_VERSION := 384.0.1 +CLOUD_SDK_VERSION := 385.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -27,12 +27,12 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.14 +KPT_VERSION := 1.0.0-beta.15 CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.11 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.12 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 6ef2570b0d96a5777814679bd90c1a5750b02cb6 Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Fri, 20 May 2022 16:02:13 -0300 Subject: [PATCH 0084/1371] fix: bump terraform-validator to version 0.13.0 (#1136) * bump terraform-validator to version 0.13.0 * bump developer tools image version to 1.4.13 --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index b87ee671d8c..19e4e25bde4 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.1.9 -TERRAFORM_VALIDATOR_VERSION := 0.9.1 +TERRAFORM_VALIDATOR_VERSION := 0.13.0 CLOUD_SDK_VERSION := 385.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.12 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.13 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 4c7c1879d666583b2355bd1a3a3801fc7484be8b Mon Sep 17 00:00:00 2001 From: "Stephen Lewis (Burrows)" Date: Thu, 26 May 2022 14:25:06 -0700 Subject: [PATCH 0085/1371] chore: Added all tf validator CI/CD triggers and added additional test variables (#1143) * Added all tf validator CI/CD triggers and added additional test variables * Removed project from ancestry * Switched to for_each for tf versions --- .../terraform/test-org/ci-triggers/locals.tf | 2 + .../test-org/ci-triggers/triggers.tf | 123 +++++++++++++++++- 2 files changed, 122 insertions(+), 3 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 5e43351deeb..7d19d628393 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -39,6 +39,8 @@ locals { org_id = data.terraform_remote_state.org.outputs.org_id billing_account = data.terraform_remote_state.org.outputs.billing_account tf_validator_project_id = data.terraform_remote_state.tf-validator.outputs.project_id + tf_validator_folder_id = data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"] + tf_validator_ancestry = "organizations/${local.org_id}/folders/${data.terraform_remote_state.org.outputs.folders["ci-projects"]}/folders/${local.tf_validator_folder_id}" project_id = "cloud-foundation-cicd" forseti_ci_folder_id = "542927601143" billing_iam_test_account = "0151A3-65855E-5913CF" diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 3c2a544f624..359879b0585 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -53,10 +53,44 @@ resource "google_cloudbuild_trigger" "int_trigger" { ignored_files = ["**/*.md", ".gitignore"] } -resource "google_cloudbuild_trigger" "tf_validator" { +resource "google_cloudbuild_trigger" "tf_validator_main_integration_tests" { + for_each = { + tf12 = "0.12.31" + tf13 = "0.13.7" + } + name = "tf-validator-main-integration-tests-${each.key}" + description = "Main branch integration tests for terraform-validator with terraform ${each.value}. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-validator" + push { + branch = "^main$" + } + } + substitutions = { + _TERRAFORM_VERSION = each.value + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id + } + + filename = ".ci/cloudbuild-tests-integration.yaml" +} + +resource "google_cloudbuild_trigger" "tf_validator_pull_integration_tests" { + for_each = { + tf12 = "0.12.31" + tf13 = "0.13.7" + } + name = "tf-validator-pull-integration-tests-${each.key}" + description = "Pull request integration tests for terraform-validator with terraform ${each.value}. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + provider = google-beta project = local.project_id - description = "Pull request build for tf-validator with terrafom 12" github { owner = "GoogleCloudPlatform" name = "terraform-validator" @@ -65,13 +99,96 @@ resource "google_cloudbuild_trigger" "tf_validator" { } } substitutions = { - _TERRAFORM_VERSION = "0.12.31" + _TERRAFORM_VERSION = each.value _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id } filename = ".ci/cloudbuild-tests-integration.yaml" } +resource "google_cloudbuild_trigger" "tf_validator_pull_unit_tests" { + name = "tf-validator-pull-unit-tests" + description = "Pull request unit tests for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-validator" + pull_request { + branch = ".*" + } + } + substitutions = { + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id + } + + filename = ".ci/cloudbuild-tests-unit.yaml" +} + +resource "google_cloudbuild_trigger" "tf_validator_main_unit_tests" { + name = "tf-validator-main-unit-tests" + description = "Main branch unit tests for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-validator" + push { + branch = "^main$" + } + } + substitutions = { + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id + } + + filename = ".ci/cloudbuild-tests-unit.yaml" +} + +resource "google_cloudbuild_trigger" "tf_validator_pull_license_check" { + name = "tf-validator-pull-license-check" + description = "Pull request license check for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-validator" + pull_request { + branch = ".*" + } + } + + filename = ".ci/cloudbuild-tests-go-licenses.yaml" +} + +resource "google_cloudbuild_trigger" "tf_validator_main_license_check" { + name = "tf-validator-main-license-check" + description = "Main branch license check for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-validator" + push { + branch = "^main$" + } + } + + filename = ".ci/cloudbuild-tests-go-licenses.yaml" +} + resource "google_cloudbuild_trigger" "forseti_lint" { provider = google-beta project = local.project_id From 0f52d676fced76df247b73b5ef6f8b72fad1ba3b Mon Sep 17 00:00:00 2001 From: "Stephen Lewis (Burrows)" Date: Thu, 26 May 2022 14:58:02 -0700 Subject: [PATCH 0086/1371] chore: tfv fixed variable definitions in triggers (#1145) - Removed folders/ prefix from folder id var - needs to just be id - Removed duplicate folders/ prefix in ancestry variable Basically, org.outputs.folders["key"] is in the format "folders/12345" --- infra/terraform/test-org/ci-triggers/locals.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 7d19d628393..ade8831a4db 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -39,8 +39,8 @@ locals { org_id = data.terraform_remote_state.org.outputs.org_id billing_account = data.terraform_remote_state.org.outputs.billing_account tf_validator_project_id = data.terraform_remote_state.tf-validator.outputs.project_id - tf_validator_folder_id = data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"] - tf_validator_ancestry = "organizations/${local.org_id}/folders/${data.terraform_remote_state.org.outputs.folders["ci-projects"]}/folders/${local.tf_validator_folder_id}" + tf_validator_folder_id = trimprefix(data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"], "folders/") + tf_validator_ancestry = "organizations/${local.org_id}/${data.terraform_remote_state.org.outputs.folders["ci-projects"]}/folders/${local.tf_validator_folder_id}" project_id = "cloud-foundation-cicd" forseti_ci_folder_id = "542927601143" billing_iam_test_account = "0151A3-65855E-5913CF" From d609e8f62907e79c14c09001ff0e0f4bcdc7c223 Mon Sep 17 00:00:00 2001 From: "Stephen Lewis (Burrows)" Date: Thu, 26 May 2022 15:35:18 -0700 Subject: [PATCH 0087/1371] Made ancestry match legacy format (#1146) --- infra/terraform/test-org/ci-triggers/locals.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index ade8831a4db..2882d041f49 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -40,7 +40,8 @@ locals { billing_account = data.terraform_remote_state.org.outputs.billing_account tf_validator_project_id = data.terraform_remote_state.tf-validator.outputs.project_id tf_validator_folder_id = trimprefix(data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"], "folders/") - tf_validator_ancestry = "organizations/${local.org_id}/${data.terraform_remote_state.org.outputs.folders["ci-projects"]}/folders/${local.tf_validator_folder_id}" + # tf validator "ancestry path" expects non-plural type names for historical reasons + tf_validator_ancestry = "organization/${local.org_id}/folder/${trimprefix(data.terraform_remote_state.org.outputs.folders["ci-projects"], "folders/")}/folder/${local.tf_validator_folder_id}" project_id = "cloud-foundation-cicd" forseti_ci_folder_id = "542927601143" billing_iam_test_account = "0151A3-65855E-5913CF" From 3165f415d1a11076a15774895324a81dd3928d62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jun 2022 12:06:15 -0700 Subject: [PATCH 0088/1371] chore(deps): bump nokogiri in /infra/build/developer-tools/build/data (#1142) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.4 to 1.13.6. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.4...v1.13.6) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/build/developer-tools/build/data/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 3b65aea96f6..a6f8c55db68 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -379,7 +379,7 @@ GEM net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.13.4) + nokogiri (1.13.6) mini_portile2 (~> 2.8.0) racc (~> 1.4) nori (2.6.0) From 789c85cd3e639735fdb91124b60ac67a50578247 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 1 Jun 2022 23:51:01 -0500 Subject: [PATCH 0089/1371] Update Tools to 1.4.14 (#1139) * Update tools to 1.4.14 * Update Makefile Co-authored-by: Bharath KKB --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 19e4e25bde4..52919d0eab9 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.1.9 +TERRAFORM_VERSION := 1.2.2 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 385.0.0 +CLOUD_SDK_VERSION := 388.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -27,12 +27,12 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.15 +KPT_VERSION := 1.0.0-beta.16 CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.4.13 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 8332aa97b86ef890d3e6aae0d749d5827b37ccdc Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 2 Jun 2022 09:09:51 -0700 Subject: [PATCH 0090/1371] chore: setup release-please for blueprint-test (#1147) --- .github/release-please.yml | 16 ++++++++++++++++ .release-please-manifest.json | 3 +++ release-please-config.json | 12 ++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 .github/release-please.yml create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json diff --git a/.github/release-please.yml b/.github/release-please.yml new file mode 100644 index 00000000000..396921f1683 --- /dev/null +++ b/.github/release-please.yml @@ -0,0 +1,16 @@ +# Copyright 2022 Google LLC +# +# 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. + +handleGHRelease: true +manifest: true diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 00000000000..9671d1f694d --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + "infra/blueprint-test": "0.0.0" +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 00000000000..61a6e4f213c --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,12 @@ +{ + "separate-pull-requests": true, + "packages": { + "infra/blueprint-test": { + "release-type": "go", + "package-name": "blueprint-test", + "bump-minor-pre-major": true, + "release-as": "0.0.1" + } + }, + "bootstrap-sha": "f78304cebc31f2ca29d4303753a8c32ba238ab53" +} From 1a22464d828a17d22f41e6a930951d4ed889d8ac Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 2 Jun 2022 20:10:00 -0700 Subject: [PATCH 0091/1371] chore(master): release blueprint-test 0.0.1 (#1151) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 35 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 infra/blueprint-test/CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 9671d1f694d..29dcbc7f57e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.0.0" + "infra/blueprint-test": "0.0.1" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md new file mode 100644 index 00000000000..9a06eff83e2 --- /dev/null +++ b/infra/blueprint-test/CHANGELOG.md @@ -0,0 +1,35 @@ +# Changelog + +## 0.0.1 (2022-06-02) + + +### Features + +* add getter for krmt build directory ([#1106](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1106)) ([fd68a6b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fd68a6bdc9a90d0f340fdad80bfcfc8119137a0f)) +* add golden string sanitizer option ([#1109](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1109)) ([0e962c6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/0e962c6ff0f5fa4f38cab62c31e78bd67d5923de)) +* add goldenfile sanitizers ([#1074](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1074)) ([c98be35](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/c98be3561409b0051a1a5b2502eb603766d2c4a5)) +* add helper for goldenfiles ([#1067](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1067)) ([1bf5397](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1bf53970d457786fa2b3dc79a42b77887d1c7bb5)) +* add KRM benchmark example ([#982](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/982)) ([6854aa0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6854aa08ed6f5edeba8884aec1d89745d1f64a2b)) +* add support for runf in gcloud blueprint test ([#1070](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1070)) ([3842083](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3842083683a3218d7864efa5e545dc4958cc3ecb)) +* add test result utils ([#1005](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1005)) ([608c349](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/608c349bf8e4b68bb1f211094de5e8c91f881521)) +* add test yaml config ([#986](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/986)) ([fe03487](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fe034876e2e780bce0906252026115c851580f7a)) +* add the first draft of the user guide for the test framework ([#983](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/983)) ([5dcd154](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5dcd1546f9d5ec5ab39743e5181feffb8877a1ea)) +* add transform func for removing a json value by path ([#1110](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1110)) ([9f9a444](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/9f9a444009fd9a35d074efff5803d2a2fb8572e8)) +* adds logic for copying additional resources to the build directory ([#1118](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1118)) ([8383c92](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8383c92c8a54322eebca8a058550b46396f043aa)) +* **cli:** Allow customization of setup sa key ([#1065](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1065)) ([7c9f83c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/7c9f83caf2fe77b69dd4af8bef6c3496b14d3af2)) +* export GetTFOptions method for tft ([#1003](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1003)) ([5e783cf](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5e783cf7c716104ad113064d9e1b9aea4dc7a999)) +* initialize KRM blueprint testing ([#977](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/977)) ([2953e46](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2953e46e28f4085c733243e3a4914f52aa105f2e)) +* initialize terraform blueprint testing ([#945](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/945)) ([723b19c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/723b19ce02d0e04e1f12f117aa2fe9ba44cad5e5)) +* remove list-setter dep for kpt ([#1088](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1088)) ([bad09af](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bad09af2b45598ca08990d3bcb722560b661b3e0)) +* support complex type setup outputs ([#997](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/997)) ([39b4ef0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/39b4ef08bb23b352ea6ff7073f942ec0b5a50fc7)) +* **tft:** activate creds from setup ([#1062](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1062)) ([08c972c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/08c972c3768cae717df3f33a43785bf21b183a13)) + + +### Bug Fixes + +* **bptest:** compute config discovery from int test dir ([#1025](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1025)) ([bea525b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bea525b1cf5203f522bd0e9f42bce45605885c41)) +* bumb the gjson version to the latestg ([#1011](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1011)) ([2c665e7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2c665e7bd84a189f225fbbf42f4ea5d0b69fa42a)) +* **krm-test:** add option for custom setters ([#981](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/981)) ([78afb5d](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/78afb5d4cfd83922d82980a6493bd0a7dab78e12)) +* mark tests as skipped due to test config ([#1063](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1063)) ([0687139](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/068713996f3641114bf1fed1937d4cec09ddc3f5)) +* recognize prow PR commit ([#993](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/993)) ([e8c47de](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e8c47de6a66b1dde620da57ecd752f59de32b7f4)) +* upgrades kpt-sdk dependency to remove the gakekeeper lib reference ([#1090](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1090)) ([727d5c1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/727d5c1b1fafbd45ddfaea7cad99da379891fc6e)) From 360fca2c78ab6fd0f4ab001bc1b159e3d6ea0d96 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 3 Jun 2022 19:32:38 -0700 Subject: [PATCH 0092/1371] fix: update release-please for blueprint-test (#1152) --- release-please-config.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/release-please-config.json b/release-please-config.json index 61a6e4f213c..cd734136aa1 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,5 +1,7 @@ { "separate-pull-requests": true, + "tag-separator": "/", + "include-component-in-tag": true, "packages": { "infra/blueprint-test": { "release-type": "go", From 8a1b48504b8b4ecf69b29f07de8cc32272dc8692 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 6 Jun 2022 09:29:17 -0700 Subject: [PATCH 0093/1371] fix: retrieve only CFT_CLI releases (#1155) --- .github/workflows/update-tooling.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index fabde8436d0..a96c2040aef 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -8,7 +8,7 @@ env: TERRAFORM_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" CLOUD_SDK_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases" - CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases/latest" + CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" jobs: update-tools: @@ -33,6 +33,9 @@ jobs: elif [ "$tool" == "KPT" ]; then # get latest release including pre-releases for kpt, excluding releases of porch LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .tag_name | contains("porch/") | not )][0].tag_name' | tr -d "v") + elif [ "$tool" == "CFT_CLI" ]; then + # get latest CFT_CLI release + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("CLI Release"))][0].tag_name' | tr -d "v") else LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .tag_name | tr -d "v") fi From 95261b2d435471130e3e3be7b336d599717e4759 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 6 Jun 2022 09:39:48 -0700 Subject: [PATCH 0094/1371] chore(master): release blueprint-test 0.0.1 (#1156) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- infra/blueprint-test/CHANGELOG.md | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 9a06eff83e2..e8e6f017337 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,39 @@ # Changelog +## [0.0.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/blueprint-test-v0.0.1...blueprint-test/v0.0.1) (2022-06-06) + + +### Features + +* add getter for krmt build directory ([#1106](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1106)) ([fd68a6b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fd68a6bdc9a90d0f340fdad80bfcfc8119137a0f)) +* add golden string sanitizer option ([#1109](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1109)) ([0e962c6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/0e962c6ff0f5fa4f38cab62c31e78bd67d5923de)) +* add goldenfile sanitizers ([#1074](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1074)) ([c98be35](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/c98be3561409b0051a1a5b2502eb603766d2c4a5)) +* add helper for goldenfiles ([#1067](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1067)) ([1bf5397](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1bf53970d457786fa2b3dc79a42b77887d1c7bb5)) +* add KRM benchmark example ([#982](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/982)) ([6854aa0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6854aa08ed6f5edeba8884aec1d89745d1f64a2b)) +* add support for runf in gcloud blueprint test ([#1070](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1070)) ([3842083](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3842083683a3218d7864efa5e545dc4958cc3ecb)) +* add test result utils ([#1005](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1005)) ([608c349](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/608c349bf8e4b68bb1f211094de5e8c91f881521)) +* add test yaml config ([#986](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/986)) ([fe03487](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fe034876e2e780bce0906252026115c851580f7a)) +* add the first draft of the user guide for the test framework ([#983](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/983)) ([5dcd154](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5dcd1546f9d5ec5ab39743e5181feffb8877a1ea)) +* add transform func for removing a json value by path ([#1110](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1110)) ([9f9a444](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/9f9a444009fd9a35d074efff5803d2a2fb8572e8)) +* adds logic for copying additional resources to the build directory ([#1118](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1118)) ([8383c92](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8383c92c8a54322eebca8a058550b46396f043aa)) +* **cli:** Allow customization of setup sa key ([#1065](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1065)) ([7c9f83c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/7c9f83caf2fe77b69dd4af8bef6c3496b14d3af2)) +* export GetTFOptions method for tft ([#1003](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1003)) ([5e783cf](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5e783cf7c716104ad113064d9e1b9aea4dc7a999)) +* initialize KRM blueprint testing ([#977](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/977)) ([2953e46](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2953e46e28f4085c733243e3a4914f52aa105f2e)) +* initialize terraform blueprint testing ([#945](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/945)) ([723b19c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/723b19ce02d0e04e1f12f117aa2fe9ba44cad5e5)) +* remove list-setter dep for kpt ([#1088](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1088)) ([bad09af](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bad09af2b45598ca08990d3bcb722560b661b3e0)) +* support complex type setup outputs ([#997](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/997)) ([39b4ef0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/39b4ef08bb23b352ea6ff7073f942ec0b5a50fc7)) +* **tft:** activate creds from setup ([#1062](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1062)) ([08c972c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/08c972c3768cae717df3f33a43785bf21b183a13)) + + +### Bug Fixes + +* **bptest:** compute config discovery from int test dir ([#1025](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1025)) ([bea525b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bea525b1cf5203f522bd0e9f42bce45605885c41)) +* bumb the gjson version to the latestg ([#1011](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1011)) ([2c665e7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2c665e7bd84a189f225fbbf42f4ea5d0b69fa42a)) +* **krm-test:** add option for custom setters ([#981](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/981)) ([78afb5d](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/78afb5d4cfd83922d82980a6493bd0a7dab78e12)) +* mark tests as skipped due to test config ([#1063](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1063)) ([0687139](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/068713996f3641114bf1fed1937d4cec09ddc3f5)) +* recognize prow PR commit ([#993](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/993)) ([e8c47de](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e8c47de6a66b1dde620da57ecd752f59de32b7f4)) +* upgrades kpt-sdk dependency to remove the gakekeeper lib reference ([#1090](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1090)) ([727d5c1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/727d5c1b1fafbd45ddfaea7cad99da379891fc6e)) + ## 0.0.1 (2022-06-02) From c0f0f7014c40ebcfade70f5ea4bdabe73910029e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 6 Jun 2022 09:57:57 -0700 Subject: [PATCH 0095/1371] feat: update to TF v0.13+ format (#1153) --- .gitignore | 2 +- .../dev-project-cleanup/.terraform.lock.hcl | 119 +++++++++++++++ .../dev-org/dev-project-cleanup/cleanup.tf | 6 +- .../dev-org/dev-project-cleanup/project.tf | 16 +- .../dev-org/dev-project-cleanup/versions.tf | 39 +++-- infra/terraform/terraform_backend/phoogle.tf | 4 +- .../.terraform.lock.hcl | 95 ++++++++++++ .../function.tf | 4 +- .../versions.tf | 10 +- .../test-org/ci-foundation/cloudbuild.yaml | 2 +- .../test-org/ci-project/.terraform.lock.hcl | 81 ++++++++++ .../terraform/test-org/ci-project/cleaner.tf | 5 +- infra/terraform/test-org/ci-project/main.tf | 21 ++- infra/terraform/test-org/ci-project/sa.tf | 4 +- .../terraform/test-org/ci-project/versions.tf | 32 ++++ .../test-org/ci-triggers/.terraform.lock.hcl | 22 +++ .../terraform/test-org/ci-triggers/locals.tf | 10 +- .../test-org/ci-triggers/triggers.tf | 52 +++---- .../test-org/ci-triggers/versions.tf | 4 +- .../test-org/github/.terraform.lock.hcl | 23 +++ infra/terraform/test-org/github/main.tf | 45 +++--- infra/terraform/test-org/github/versions.tf | 8 +- .../org-iam-policy/.terraform.lock.hcl | 22 +++ .../test-org/org-iam-policy/cloudbuild.yaml | 2 +- .../test-org/org-iam-policy/versions.tf | 11 +- .../test-org/org/.terraform.lock.hcl | 139 ++++++++++++++++++ .../test-org/org/bigquery_external_data.tf | 7 +- infra/terraform/test-org/org/folders.tf | 4 +- infra/terraform/test-org/org/gsuite.tf | 3 +- infra/terraform/test-org/org/iam.tf | 12 +- infra/terraform/test-org/org/prow.tf | 2 +- infra/terraform/test-org/org/versions.tf | 40 +++-- .../test-org/test-cleanup/.terraform.lock.hcl | 119 +++++++++++++++ .../test-org/test-cleanup/cleanup.tf | 4 +- .../test-org/test-cleanup/project.tf | 2 +- .../test-org/test-cleanup/versions.tf | 39 +++-- .../test-org/tf-validator/.terraform.lock.hcl | 100 +++++++++++++ .../test-org/tf-validator/project.tf | 2 +- .../test-org/tf-validator/versions.tf | 2 +- 39 files changed, 940 insertions(+), 174 deletions(-) create mode 100644 infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl create mode 100644 infra/terraform/test-org/ci-comment-build-trigger-function/.terraform.lock.hcl create mode 100644 infra/terraform/test-org/ci-project/.terraform.lock.hcl create mode 100644 infra/terraform/test-org/ci-project/versions.tf create mode 100644 infra/terraform/test-org/ci-triggers/.terraform.lock.hcl create mode 100644 infra/terraform/test-org/github/.terraform.lock.hcl create mode 100644 infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl create mode 100644 infra/terraform/test-org/org/.terraform.lock.hcl create mode 100644 infra/terraform/test-org/test-cleanup/.terraform.lock.hcl create mode 100644 infra/terraform/test-org/tf-validator/.terraform.lock.hcl diff --git a/.gitignore b/.gitignore index 5dc34e78b8b..a14272c72b0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ credentials.json docs/meta/env config-connector/tests/testcases/environments.yaml .DS_Store -.vscode \ No newline at end of file +.vscode diff --git a/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl b/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl new file mode 100644 index 00000000000..4ce8886e682 --- /dev/null +++ b/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl @@ -0,0 +1,119 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/archive" { + version = "2.2.0" + constraints = ">= 1.3.0, < 3.0.0" + hashes = [ + "h1:CIWi5G6ob7p2wWoThRQbOB8AbmFlCzp7Ka81hR3cVp0=", + "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", + "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", + "zh:100fc5b3fc01ea463533d7bbfb01cb7113947a969a4ec12e27f5b2be49884d6c", + "zh:55c0d7ddddbd0a46d57c51fcfa9b91f14eed081a45101dbfc7fd9d2278aa1403", + "zh:73a5dd68379119167934c48afa1101b09abad2deb436cd5c446733e705869d6b", + "zh:841fc4ac6dc3479981330974d44ad2341deada8a5ff9e3b1b4510702dfbdbed9", + "zh:91be62c9b41edb137f7f835491183628d484e9d6efa82fcb75cfa538c92791c5", + "zh:acd5f442bd88d67eb948b18dc2ed421c6c3faee62d3a12200e442bfff0aa7d8b", + "zh:ad5720da5524641ad718a565694821be5f61f68f1c3c5d2cfa24426b8e774bef", + "zh:e63f12ea938520b3f83634fc29da28d92eed5cfbc5cc8ca08281a6a9c36cca65", + "zh:f6542918faa115df46474a36aabb4c3899650bea036b5f8a5e296be6f8f25767", + ] +} + +provider "registry.terraform.io/hashicorp/google" { + version = "4.23.0" + constraints = ">= 3.35.0, >= 3.38.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" + hashes = [ + "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", + "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", + "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", + "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", + "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", + "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", + "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", + "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", + "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", + "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", + "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + ] +} + +provider "registry.terraform.io/hashicorp/google-beta" { + version = "4.23.0" + constraints = ">= 3.1.0, >= 3.35.0, >= 3.43.0, >= 3.50.0, < 5.0.0" + hashes = [ + "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", + "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", + "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", + "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", + "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", + "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", + "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", + "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", + "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", + "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", + "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + ] +} + +provider "registry.terraform.io/hashicorp/null" { + version = "3.1.1" + constraints = ">= 2.1.0, < 4.0.0" + hashes = [ + "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", + "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", + "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", + "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", + "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", + "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", + "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", + "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", + "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", + "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", + "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", + ] +} + +provider "registry.terraform.io/hashicorp/random" { + version = "3.2.0" + constraints = ">= 2.2.0, < 4.0.0" + hashes = [ + "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", + "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", + "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", + "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", + "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", + "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", + "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", + "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", + "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", + "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", + "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + ] +} + +provider "registry.terraform.io/hashicorp/time" { + version = "0.7.2" + hashes = [ + "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", + "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", + "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", + "zh:35e4de0437f4fa9c1ad69aaf8136413be2369ea607d78e04bb68dc66a6a520b8", + "zh:369756417a6272e79cad31eb2c82c202f6a4b6e4204a893f656644ba9e149fa2", + "zh:390370f1179d89b33c3a0731691e772d5450a7d59fc66671ec625e201db74aa2", + "zh:3d12ac905259d225c685bc42e5507ed0fbdaa5a09c30dce7c1932d908df857f7", + "zh:75f63e5e1c68e6c5bccba4568c3564e2774eb3a7a19189eb8e2b6e0d58c8f8cc", + "zh:7c22a2078a608e3e0278c4cbc9c483909062ebd1843bddaf8f176346c6d378b1", + "zh:7cfb3c02f78f0060d59c757c4726ab45a962ce4a9cf4833beca704a1020785bd", + "zh:a0325917f47c28a2ed088dedcea0d9520d91b264e63cc667fe4336ac993c0c11", + "zh:c181551d4c0a40b52e236f1755cc340aeca0fb5dcfd08b3b1c393a7667d2f327", + ] +} diff --git a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf index 31a86fcaab1..d0ba7093d5e 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf @@ -16,14 +16,14 @@ module "app-engine" { source = "terraform-google-modules/project-factory/google//modules/app_engine" - version = "~> 9.0" + version = "~> 13.0" location_id = local.app_location project_id = module.project.project_id } module "projects_cleanup" { - source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 1.5.1" + source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" + version = "~> 2.4" job_schedule = "17 * * * *" max_project_age_in_hours = "24" diff --git a/infra/terraform/dev-org/dev-project-cleanup/project.tf b/infra/terraform/dev-org/dev-project-cleanup/project.tf index a448b5f39dd..0846adb4480 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/project.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/project.tf @@ -21,16 +21,14 @@ resource "google_folder" "cft-dev-management" { module "project" { source = "terraform-google-modules/project-factory/google" - version = "~> 9.0" - - name = "cft-project-manager" - random_project_id = true - org_id = local.org_id - folder_id = google_folder.cft-dev-management.id - billing_account = local.billing_account - labels = local.exclude_labels - skip_gcloud_download = true + version = "~> 13.0" + name = "cft-project-manager" + random_project_id = true + org_id = local.org_id + folder_id = google_folder.cft-dev-management.id + billing_account = local.billing_account + labels = local.exclude_labels activate_apis = [ "cloudresourcemanager.googleapis.com", diff --git a/infra/terraform/dev-org/dev-project-cleanup/versions.tf b/infra/terraform/dev-org/dev-project-cleanup/versions.tf index b2084533b11..0973484e675 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/versions.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/versions.tf @@ -15,25 +15,22 @@ */ terraform { - required_version = ">= 0.12" -} - -provider "archive" { - version = "~> 1.3" -} - -provider "google" { - version = "~> 3.35" -} - -provider "google-beta" { - version = "~> 3.35" -} - -provider "null" { - version = "~> 2.1" -} - -provider "random" { - version = "~> 2.2" + required_version = "~> 1.2.0" + required_providers { + archive = { + version = ">= 1.3, < 3.0" + } + google = { + version = ">= 3.35, < 5.0" + } + google-beta = { + version = ">= 3.35, < 5.0" + } + null = { + version = ">= 2.1, < 4.0" + } + random = { + version = ">= 2.2, < 4.0" + } + } } diff --git a/infra/terraform/terraform_backend/phoogle.tf b/infra/terraform/terraform_backend/phoogle.tf index c602bedbc92..09505803697 100644 --- a/infra/terraform/terraform_backend/phoogle.tf +++ b/infra/terraform/terraform_backend/phoogle.tf @@ -1,7 +1,7 @@ # Legacy Terraform state for deleted Phoogle projects module "phoogle-backend" { source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket" - version = "~> 1.3" + version = "~> 3.2" name = "cloud-foundation-cicd-tfstate" project_id = module.variables.project_id @@ -10,7 +10,7 @@ module "phoogle-backend" { module "phoogle-seed" { source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket" - version = "~> 1.3" + version = "~> 3.2" name = "cloud-foundation-cicd-seed-projects-tfstate" project_id = module.variables.project_id diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/.terraform.lock.hcl b/infra/terraform/test-org/ci-comment-build-trigger-function/.terraform.lock.hcl new file mode 100644 index 00000000000..06d98b0891e --- /dev/null +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/.terraform.lock.hcl @@ -0,0 +1,95 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/archive" { + version = "2.2.0" + hashes = [ + "h1:CIWi5G6ob7p2wWoThRQbOB8AbmFlCzp7Ka81hR3cVp0=", + "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", + "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", + "zh:100fc5b3fc01ea463533d7bbfb01cb7113947a969a4ec12e27f5b2be49884d6c", + "zh:55c0d7ddddbd0a46d57c51fcfa9b91f14eed081a45101dbfc7fd9d2278aa1403", + "zh:73a5dd68379119167934c48afa1101b09abad2deb436cd5c446733e705869d6b", + "zh:841fc4ac6dc3479981330974d44ad2341deada8a5ff9e3b1b4510702dfbdbed9", + "zh:91be62c9b41edb137f7f835491183628d484e9d6efa82fcb75cfa538c92791c5", + "zh:acd5f442bd88d67eb948b18dc2ed421c6c3faee62d3a12200e442bfff0aa7d8b", + "zh:ad5720da5524641ad718a565694821be5f61f68f1c3c5d2cfa24426b8e774bef", + "zh:e63f12ea938520b3f83634fc29da28d92eed5cfbc5cc8ca08281a6a9c36cca65", + "zh:f6542918faa115df46474a36aabb4c3899650bea036b5f8a5e296be6f8f25767", + ] +} + +provider "registry.terraform.io/hashicorp/google" { + version = "4.23.0" + constraints = ">= 3.38.0, < 5.0.0" + hashes = [ + "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", + "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", + "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", + "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", + "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", + "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", + "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", + "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", + "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", + "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", + "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + ] +} + +provider "registry.terraform.io/hashicorp/null" { + version = "3.1.1" + hashes = [ + "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", + "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", + "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", + "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", + "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", + "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", + "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", + "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", + "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", + "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", + "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", + ] +} + +provider "registry.terraform.io/hashicorp/random" { + version = "3.2.0" + hashes = [ + "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", + "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", + "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", + "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", + "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", + "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", + "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", + "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", + "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", + "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", + "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + ] +} + +provider "registry.terraform.io/hashicorp/template" { + version = "2.2.0" + hashes = [ + "h1:94qn780bi1qjrbC3uQtjJh3Wkfwd5+tTtJHOb7KTg9w=", + "zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386", + "zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53", + "zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603", + "zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16", + "zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776", + "zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451", + "zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae", + "zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde", + "zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d", + "zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2", + ] +} diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf b/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf index 88136fb1b01..b59ca2502ad 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf @@ -20,7 +20,7 @@ locals { module "gcf_service_account" { source = "terraform-google-modules/service-accounts/google" - version = "~> 3.0" + version = "~> 4.1" project_id = local.project_id names = ["pr-comment-cf-sa"] project_roles = [ @@ -34,7 +34,7 @@ resource "random_id" "suffix" { module "pr_comment_build_function" { source = "terraform-google-modules/event-function/google" - version = "~> 1.0" + version = "~> 2.3" name = "pr-comment-downstream-builder-${random_id.suffix.hex}" project_id = local.project_id region = "us-central1" diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf b/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf index 141c17896f5..42e3d393a23 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf @@ -14,7 +14,11 @@ * limitations under the License. */ - -provider "google" { - version = "~> 3.38.0" +terraform { + required_version = "~> 1.2.0" + required_providers { + google = { + version = ">= 3.38, < 5.0" + } + } } diff --git a/infra/terraform/test-org/ci-foundation/cloudbuild.yaml b/infra/terraform/test-org/ci-foundation/cloudbuild.yaml index badfdc19e3a..73b5a8dd967 100644 --- a/infra/terraform/test-org/ci-foundation/cloudbuild.yaml +++ b/infra/terraform/test-org/ci-foundation/cloudbuild.yaml @@ -20,7 +20,7 @@ steps: args: ['reconcile.sh'] substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.1' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.5' options: env: - 'FOUNDATION_CICD_PROJECT_ID=$_FOUNDATION_CICD_PROJECT_ID' diff --git a/infra/terraform/test-org/ci-project/.terraform.lock.hcl b/infra/terraform/test-org/ci-project/.terraform.lock.hcl new file mode 100644 index 00000000000..907ceea8037 --- /dev/null +++ b/infra/terraform/test-org/ci-project/.terraform.lock.hcl @@ -0,0 +1,81 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/google" { + version = "4.23.0" + constraints = ">= 3.39.0, >= 3.53.0, >= 3.64.0, < 5.0.0" + hashes = [ + "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", + "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", + "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", + "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", + "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", + "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", + "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", + "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", + "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", + "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", + "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + ] +} + +provider "registry.terraform.io/hashicorp/google-beta" { + version = "4.23.0" + constraints = ">= 3.39.0, < 5.0.0" + hashes = [ + "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", + "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", + "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", + "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", + "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", + "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", + "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", + "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", + "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", + "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", + "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + ] +} + +provider "registry.terraform.io/hashicorp/template" { + version = "2.2.0" + hashes = [ + "h1:94qn780bi1qjrbC3uQtjJh3Wkfwd5+tTtJHOb7KTg9w=", + "zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386", + "zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53", + "zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603", + "zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16", + "zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776", + "zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451", + "zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae", + "zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde", + "zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d", + "zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2", + ] +} + +provider "registry.terraform.io/integrations/github" { + version = "4.26.0" + constraints = "~> 4.0" + hashes = [ + "h1:eNvbfw3jxqfIq8dvUFSp4pUtKqCS3lrHV+oE9PQQDqc=", + "zh:054cd4788849352476e3f08a794a5ea7429d5c69b6946db1d0c09f879d622e5d", + "zh:0f0fbe979c79087e8265459b698ed78a067d4616947c3732eb4a64f219a2d8c6", + "zh:298eaa16bbddc0801c6ccb59cb381d102d89b9ff385c3f5b5bb8d1098ff63405", + "zh:330cde23d4265819f34fdb86657313114cee24d70e31c1d97e2e8e06c0145306", + "zh:3f28f3ac5a6c1058df5ca68818616dcc8a467912160e209a0cf67b3324030e75", + "zh:5021bd1c2eec7bf45c31e870ff3ff6ba41ae74322fd2368cb58d41e62c035c8a", + "zh:5d292c3f4e8fad1a2f56be918c2d06ececc2a0eaf086b062f1be752463127f17", + "zh:737e96810cf0d9bd50db7129e04e0d611231ad5cce0cf8da3126cda2fa9a0da0", + "zh:8bc6ffaf4ad9521fb1e629c5cef3f27cbcfea10405146ab2c8c89a4eeeb71a8f", + "zh:c62a553e3dff7a5bb68b5af427d296bffeb5e0cb0796351d5c61814ad044b8ef", + "zh:ce3fa79a68dad071de5e2fa63ede1ec74dd1ae4967149dd8f47cb0859c6bf2d5", + "zh:d7b37d992d6648082006850e9adf847db430a250281db7a28dbb2f3b73e0ae86", + "zh:efd545178375a6fe4c6026765f2ad6698b06474b2f493479ba5be0d653e60b8b", + "zh:f71c11d127b194cefacdba0949c93c8e8b9c2045e3a723bd47f8fc1b7ba262b6", + ] +} diff --git a/infra/terraform/test-org/ci-project/cleaner.tf b/infra/terraform/test-org/ci-project/cleaner.tf index 5e096c6e172..43c717ef49e 100644 --- a/infra/terraform/test-org/ci-project/cleaner.tf +++ b/infra/terraform/test-org/ci-project/cleaner.tf @@ -49,8 +49,9 @@ resource "google_project_iam_custom_role" "create_build_role" { } resource "google_project_iam_member" "project" { - role = google_project_iam_custom_role.create_build_role.id - member = "serviceAccount:${google_service_account.service_account.email}" + role = google_project_iam_custom_role.create_build_role.id + member = "serviceAccount:${google_service_account.service_account.email}" + project = local.project_id } resource "google_cloud_scheduler_job" "job" { diff --git a/infra/terraform/test-org/ci-project/main.tf b/infra/terraform/test-org/ci-project/main.tf index e8dd7dcf295..ba74f0ba317 100644 --- a/infra/terraform/test-org/ci-project/main.tf +++ b/infra/terraform/test-org/ci-project/main.tf @@ -1,14 +1,27 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + provider "github" { - version = "~> 2.2" - organization = local.gh_orgs.infra + owner = local.gh_orgs.infra } provider "google" { - version = "~> 3.39" project = local.project_id } provider "google-beta" { - version = "~> 3.39" project = local.project_id } diff --git a/infra/terraform/test-org/ci-project/sa.tf b/infra/terraform/test-org/ci-project/sa.tf index acaff80d7f3..7f30a2828c5 100644 --- a/infra/terraform/test-org/ci-project/sa.tf +++ b/infra/terraform/test-org/ci-project/sa.tf @@ -16,7 +16,7 @@ module "service_accounts" { source = "terraform-google-modules/service-accounts/google" - version = "~> 2.0" + version = "~> 4.1" project_id = local.project_id @@ -28,7 +28,7 @@ module "service_accounts" { module "oidc" { source = "terraform-google-modules/github-actions-runners/google//modules/gh-oidc" - version = "~> 2.0" + version = "~> 3.0" project_id = local.project_id pool_id = "cft-pool" diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf new file mode 100644 index 00000000000..12278a5107f --- /dev/null +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -0,0 +1,32 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +terraform { + required_version = "~> 1.2.0" + required_providers { + github = { + source = "integrations/github" + version = "~> 4.0" + } + google = { + version = ">= 3.39, < 5.0" + } + google-beta = { + version = ">= 3.39, < 5.0" + } + } +} + diff --git a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl new file mode 100644 index 00000000000..2ac626fb70e --- /dev/null +++ b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl @@ -0,0 +1,22 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/google-beta" { + version = "4.23.0" + constraints = ">= 2.18.0, < 5.0.0" + hashes = [ + "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", + "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", + "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", + "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", + "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", + "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", + "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", + "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", + "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", + "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", + "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + ] +} diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 2882d041f49..bc8223b2b81 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -35,11 +35,11 @@ locals { example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } example_foundation_int_test_modes = ["default", "HubAndSpoke"] - repo_folder = { for key, value in data.terraform_remote_state.org.outputs.ci_repos_folders : contains(keys(local.custom_repo_mapping), key) ? local.custom_repo_mapping[key] : "terraform-google-${key}" => value if !contains(local.exclude_folders, value.folder_name) } - org_id = data.terraform_remote_state.org.outputs.org_id - billing_account = data.terraform_remote_state.org.outputs.billing_account - tf_validator_project_id = data.terraform_remote_state.tf-validator.outputs.project_id - tf_validator_folder_id = trimprefix(data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"], "folders/") + repo_folder = { for key, value in data.terraform_remote_state.org.outputs.ci_repos_folders : contains(keys(local.custom_repo_mapping), key) ? local.custom_repo_mapping[key] : "terraform-google-${key}" => value if !contains(local.exclude_folders, value.folder_name) } + org_id = data.terraform_remote_state.org.outputs.org_id + billing_account = data.terraform_remote_state.org.outputs.billing_account + tf_validator_project_id = data.terraform_remote_state.tf-validator.outputs.project_id + tf_validator_folder_id = trimprefix(data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"], "folders/") # tf validator "ancestry path" expects non-plural type names for historical reasons tf_validator_ancestry = "organization/${local.org_id}/folder/${trimprefix(data.terraform_remote_state.org.outputs.folders["ci-projects"], "folders/")}/folder/${local.tf_validator_folder_id}" project_id = "cloud-foundation-cicd" diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 359879b0585..59daea57cda 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -58,11 +58,11 @@ resource "google_cloudbuild_trigger" "tf_validator_main_integration_tests" { tf12 = "0.12.31" tf13 = "0.13.7" } - name = "tf-validator-main-integration-tests-${each.key}" + name = "tf-validator-main-integration-tests-${each.key}" description = "Main branch integration tests for terraform-validator with terraform ${each.value}. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" - provider = google-beta - project = local.project_id + provider = google-beta + project = local.project_id github { owner = "GoogleCloudPlatform" name = "terraform-validator" @@ -86,11 +86,11 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_integration_tests" { tf12 = "0.12.31" tf13 = "0.13.7" } - name = "tf-validator-pull-integration-tests-${each.key}" + name = "tf-validator-pull-integration-tests-${each.key}" description = "Pull request integration tests for terraform-validator with terraform ${each.value}. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" - provider = google-beta - project = local.project_id + provider = google-beta + project = local.project_id github { owner = "GoogleCloudPlatform" name = "terraform-validator" @@ -110,11 +110,11 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_integration_tests" { } resource "google_cloudbuild_trigger" "tf_validator_pull_unit_tests" { - name = "tf-validator-pull-unit-tests" + name = "tf-validator-pull-unit-tests" description = "Pull request unit tests for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" - provider = google-beta - project = local.project_id + provider = google-beta + project = local.project_id github { owner = "GoogleCloudPlatform" name = "terraform-validator" @@ -123,21 +123,21 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_unit_tests" { } } substitutions = { - _TEST_PROJECT = local.tf_validator_project_id - _TEST_FOLDER = local.tf_validator_folder_id - _TEST_ANCESTRY = local.tf_validator_ancestry - _TEST_ORG = local.org_id + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id } filename = ".ci/cloudbuild-tests-unit.yaml" } resource "google_cloudbuild_trigger" "tf_validator_main_unit_tests" { - name = "tf-validator-main-unit-tests" + name = "tf-validator-main-unit-tests" description = "Main branch unit tests for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" - provider = google-beta - project = local.project_id + provider = google-beta + project = local.project_id github { owner = "GoogleCloudPlatform" name = "terraform-validator" @@ -146,21 +146,21 @@ resource "google_cloudbuild_trigger" "tf_validator_main_unit_tests" { } } substitutions = { - _TEST_PROJECT = local.tf_validator_project_id - _TEST_FOLDER = local.tf_validator_folder_id - _TEST_ANCESTRY = local.tf_validator_ancestry - _TEST_ORG = local.org_id + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id } filename = ".ci/cloudbuild-tests-unit.yaml" } resource "google_cloudbuild_trigger" "tf_validator_pull_license_check" { - name = "tf-validator-pull-license-check" + name = "tf-validator-pull-license-check" description = "Pull request license check for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" - provider = google-beta - project = local.project_id + provider = google-beta + project = local.project_id github { owner = "GoogleCloudPlatform" name = "terraform-validator" @@ -173,11 +173,11 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_license_check" { } resource "google_cloudbuild_trigger" "tf_validator_main_license_check" { - name = "tf-validator-main-license-check" + name = "tf-validator-main-license-check" description = "Main branch license check for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" - provider = google-beta - project = local.project_id + provider = google-beta + project = local.project_id github { owner = "GoogleCloudPlatform" name = "terraform-validator" diff --git a/infra/terraform/test-org/ci-triggers/versions.tf b/infra/terraform/test-org/ci-triggers/versions.tf index 6906c006f61..13a58aa139d 100644 --- a/infra/terraform/test-org/ci-triggers/versions.tf +++ b/infra/terraform/test-org/ci-triggers/versions.tf @@ -15,9 +15,9 @@ */ terraform { - required_version = ">= 0.12" + required_version = "~> 1.2.0" required_providers { - google-beta = "~> 2.18" + google-beta = ">= 2.18, < 5.0" } } diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl new file mode 100644 index 00000000000..4ae318f4b7a --- /dev/null +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -0,0 +1,23 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/integrations/github" { + version = "4.26.0" + hashes = [ + "h1:eNvbfw3jxqfIq8dvUFSp4pUtKqCS3lrHV+oE9PQQDqc=", + "zh:054cd4788849352476e3f08a794a5ea7429d5c69b6946db1d0c09f879d622e5d", + "zh:0f0fbe979c79087e8265459b698ed78a067d4616947c3732eb4a64f219a2d8c6", + "zh:298eaa16bbddc0801c6ccb59cb381d102d89b9ff385c3f5b5bb8d1098ff63405", + "zh:330cde23d4265819f34fdb86657313114cee24d70e31c1d97e2e8e06c0145306", + "zh:3f28f3ac5a6c1058df5ca68818616dcc8a467912160e209a0cf67b3324030e75", + "zh:5021bd1c2eec7bf45c31e870ff3ff6ba41ae74322fd2368cb58d41e62c035c8a", + "zh:5d292c3f4e8fad1a2f56be918c2d06ececc2a0eaf086b062f1be752463127f17", + "zh:737e96810cf0d9bd50db7129e04e0d611231ad5cce0cf8da3126cda2fa9a0da0", + "zh:8bc6ffaf4ad9521fb1e629c5cef3f27cbcfea10405146ab2c8c89a4eeeb71a8f", + "zh:c62a553e3dff7a5bb68b5af427d296bffeb5e0cb0796351d5c61814ad044b8ef", + "zh:ce3fa79a68dad071de5e2fa63ede1ec74dd1ae4967149dd8f47cb0859c6bf2d5", + "zh:d7b37d992d6648082006850e9adf847db430a250281db7a28dbb2f3b73e0ae86", + "zh:efd545178375a6fe4c6026765f2ad6698b06474b2f493479ba5be0d653e60b8b", + "zh:f71c11d127b194cefacdba0949c93c8e8b9c2045e3a723bd47f8fc1b7ba262b6", + ] +} diff --git a/infra/terraform/test-org/github/main.tf b/infra/terraform/test-org/github/main.tf index cbdc066fce6..2e535bf4854 100644 --- a/infra/terraform/test-org/github/main.tf +++ b/infra/terraform/test-org/github/main.tf @@ -84,44 +84,43 @@ locals { description : "Blocked by some other work" }, { - name: "P1", - color: "b01111", - description: "highest priority issues" + name : "P1", + color : "b01111", + description : "highest priority issues" }, { - name: "P2", - color: "b4451f", - description: "high priority issues" + name : "P2", + color : "b4451f", + description : "high priority issues" }, { - name: "P3", - color: "e7d87d", - description: "medium priority issues" + name : "P3", + color : "e7d87d", + description : "medium priority issues" }, { - name: "P4", - color: "62a1db", - description: "low priority issues" + name : "P4", + color : "62a1db", + description : "low priority issues" }, { - name: "release-please:force-run", - color: "e7d87d", - description: "Force release-please to check for changes." + name : "release-please:force-run", + color : "e7d87d", + description : "Force release-please to check for changes." }, { - name: "waiting-response", - color: "5319e7", - description: "Waiting for issue author to respond." + name : "waiting-response", + color : "5319e7", + description : "Waiting for issue author to respond." }, { - name: "v0.13", - color: "edb761", - description: "Terraform v0.13 issue." + name : "v0.13", + color : "edb761", + description : "Terraform v0.13 issue." }, ] } provider "github" { - version = "~> 2.2" - organization = local.gh_org + owner = local.gh_org } diff --git a/infra/terraform/test-org/github/versions.tf b/infra/terraform/test-org/github/versions.tf index 1fe4caaac61..b0accdc549e 100644 --- a/infra/terraform/test-org/github/versions.tf +++ b/infra/terraform/test-org/github/versions.tf @@ -15,5 +15,11 @@ */ terraform { - required_version = "~> 0.12.0" + required_version = "~> 1.2.0" + required_providers { + github = { + source = "integrations/github" + version = "~> 4.0" + } + } } diff --git a/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl b/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl new file mode 100644 index 00000000000..fc858c57bca --- /dev/null +++ b/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl @@ -0,0 +1,22 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/google" { + version = "4.23.0" + constraints = ">= 3.39.0, < 5.0.0" + hashes = [ + "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", + "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", + "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", + "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", + "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", + "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", + "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", + "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", + "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", + "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", + "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + ] +} diff --git a/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml b/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml index 32be04383a5..2dde13d9823 100644 --- a/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml +++ b/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml @@ -30,4 +30,4 @@ steps: args: ['apply', '--auto-approve'] substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.14' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.5' diff --git a/infra/terraform/test-org/org-iam-policy/versions.tf b/infra/terraform/test-org/org-iam-policy/versions.tf index 29ddd8870ad..9260b4bc9b5 100644 --- a/infra/terraform/test-org/org-iam-policy/versions.tf +++ b/infra/terraform/test-org/org-iam-policy/versions.tf @@ -15,9 +15,10 @@ */ terraform { - required_version = ">= 0.12" -} - -provider "google" { - version = "~> 3.39" + required_version = "~> 1.2.0" + required_providers { + google = { + version = ">= 3.39, < 5.0" + } + } } diff --git a/infra/terraform/test-org/org/.terraform.lock.hcl b/infra/terraform/test-org/org/.terraform.lock.hcl new file mode 100644 index 00000000000..47848cd6841 --- /dev/null +++ b/infra/terraform/test-org/org/.terraform.lock.hcl @@ -0,0 +1,139 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/external" { + version = "1.2.0" + constraints = "~> 1.2" + hashes = [ + "h1:wDfbBn+171g9/+aWqkicrN5l1S3kuqEX4J1zyPCDsoY=", + "zh:02048f972a31ac87231dd548323ee214cf04944b289c5d9edde82ffbde5b8386", + "zh:06fcf617521916883c5e3cbfa533dded6725246123f18355576a07f40f2ae4b0", + "zh:325dbc165665b3bd31164168bb65bf1f364c4a463cc8a2f8e3639b9738d9b16e", + "zh:5cf47495ec9ec1953f2a94875b23a4f44ff810422f1e63b5ef849fe1138e7aa1", + "zh:6cb3e94f4e795892005328e9a3aa12415b03ce99d6b7c92b3122f4204bb0ee73", + "zh:6d731e12c616434886f007cad68d9313a178ddfb0360de84236fc5593f443c10", + "zh:9a269a735d9e0c3b1390e6319df46ee2d0afc057c32a899ffc885df78d012123", + "zh:a91b5d526011f5ee56461b1d7a9fcb230aab6c38c01facb73ecd98c5e958204e", + "zh:aa5f19ba3040a4a10f4c5290d075544d7cdad4b90fb10a469a1d40cbaf4607e5", + "zh:c986125fda03444ac8c964e999c48db450b452e0b4edf4542e3bee97ca951cbd", + "zh:fddff8f179925c1c76e58302ddcbead9474ea52c6e8141f5ba73bb137ca2ebc5", + "zh:fe2ef9dcc45291d0582bbf1f5936522682cf2e03a3811a8e6968f1ba14d91f25", + ] +} + +provider "registry.terraform.io/hashicorp/google" { + version = "4.23.0" + constraints = ">= 3.19.0, < 5.0.0" + hashes = [ + "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", + "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", + "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", + "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", + "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", + "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", + "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", + "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", + "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", + "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", + "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + ] +} + +provider "registry.terraform.io/hashicorp/google-beta" { + version = "4.23.0" + constraints = ">= 3.19.0, < 5.0.0" + hashes = [ + "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", + "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", + "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", + "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", + "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", + "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", + "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", + "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", + "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", + "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", + "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + ] +} + +provider "registry.terraform.io/hashicorp/kubernetes" { + version = "2.11.0" + hashes = [ + "h1:pJiAJwZKUaoAJ4x+3ONJkwEVkjrwGROCGFgj7noPO58=", + "zh:143a19dd0ea3b07fc5e3d9231f3c2d01f92894385c98a67327de74c76c715843", + "zh:1fc757d209e09c3cf7848e4274daa32408c07743698fbed10ee52a4a479b62b6", + "zh:22dfebd0685749c51a8f765d51a1090a259778960ac1cd4f32021a325b2b9b72", + "zh:3039b3b76e870cd8fc404cf75a29c66b171c6ba9b6182e131b6ae2ca648ec7c0", + "zh:3af0a15562fcab4b5684b18802e0239371b2b8ff9197ed069ff4827f795a002b", + "zh:50aaf20336d1296a73315adb66f7687f75bd5c6b1f93a894b95c75cc142810ec", + "zh:682064fabff895ec351860b4fe0321290bbbb17c2a410b62c9bea0039400650e", + "zh:70ac914d5830b3371a2679d8f77cc20c419a6e12925145afae6c977c8eb90934", + "zh:710aa02cccf7b0f3fb50880d6d2a7a8b8c9435248666616844ba71f74648cddc", + "zh:88e418118cd5afbdec4984944c7ab36950bf48e8d3e09e090232e55eecfb470b", + "zh:9cef159377bf23fa331f8724fdc6ce27ad39a217a4bae6df3b1ca408fc643da6", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + ] +} + +provider "registry.terraform.io/hashicorp/null" { + version = "2.1.2" + constraints = "~> 2.1" + hashes = [ + "h1:CFnENdqQu4g3LJNevA32aDxcUz2qGkRGQpFfkI8TCdE=", + "zh:0cc7236c1fbf971b8bad1540a7d0c5ac4579248239fd1034c023b0b660a8d1d5", + "zh:16fc2d9b10cf9e5123bf956e7032c338cc93a03be1ca2e9f3d3b7014c0e866c7", + "zh:1e26465ff40ded59cef1a9e745752eef9744471e69094d12f8bc40a060e8cdb9", + "zh:3c7afd28076245f455d4348af6c124b73409722be4a73680d4e4709a4f25ea91", + "zh:4190a92567efaa444527f19b28d65fac1a01aeba907013b5dceacd9ba2a23709", + "zh:677963437316b088fc1aac70fe7d608d2917c46530c4a25ec86a43e9acaf2811", + "zh:69fe15f6b851ff82700bc749c50a9299770515617e677c18cba2cb697daaff36", + "zh:6b505cc60cc1494e1cab61590bca127b06dd894d0b2a7dcacd23862bce1f492b", + "zh:719aa11ad7be974085af595089478eb24d5a021bc7b08364fa6745d9eb473dac", + "zh:7375b02189e14efbfaab994cd05d81e3ff8e46041fae778598b3903114093a3e", + "zh:c406573b2084a08f8faa0451923fbeb1ca6c5a5598bf039589ec2db13aacc622", + "zh:fb11299a3b20711595713d126abbbe78c554eb5995b02db536e9253686798fb6", + ] +} + +provider "registry.terraform.io/hashicorp/random" { + version = "3.2.0" + constraints = ">= 2.3.1" + hashes = [ + "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", + "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", + "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", + "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", + "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", + "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", + "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", + "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", + "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", + "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", + "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + ] +} + +provider "registry.terraform.io/hashicorp/time" { + version = "0.7.2" + hashes = [ + "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", + "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", + "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", + "zh:35e4de0437f4fa9c1ad69aaf8136413be2369ea607d78e04bb68dc66a6a520b8", + "zh:369756417a6272e79cad31eb2c82c202f6a4b6e4204a893f656644ba9e149fa2", + "zh:390370f1179d89b33c3a0731691e772d5450a7d59fc66671ec625e201db74aa2", + "zh:3d12ac905259d225c685bc42e5507ed0fbdaa5a09c30dce7c1932d908df857f7", + "zh:75f63e5e1c68e6c5bccba4568c3564e2774eb3a7a19189eb8e2b6e0d58c8f8cc", + "zh:7c22a2078a608e3e0278c4cbc9c483909062ebd1843bddaf8f176346c6d378b1", + "zh:7cfb3c02f78f0060d59c757c4726ab45a962ce4a9cf4833beca704a1020785bd", + "zh:a0325917f47c28a2ed088dedcea0d9520d91b264e63cc667fe4336ac993c0c11", + "zh:c181551d4c0a40b52e236f1755cc340aeca0fb5dcfd08b3b1c393a7667d2f327", + ] +} diff --git a/infra/terraform/test-org/org/bigquery_external_data.tf b/infra/terraform/test-org/org/bigquery_external_data.tf index bc293638d59..747acbc66b2 100644 --- a/infra/terraform/test-org/org/bigquery_external_data.tf +++ b/infra/terraform/test-org/org/bigquery_external_data.tf @@ -21,7 +21,7 @@ resource "google_folder" "ci_bq_external_data_folder" { module "ci_bq_external_data_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 4.0" + version = "~> 13.0" name = "ci-bq-external-data-project" project_id = "ci-bq-external-data-project" @@ -39,8 +39,9 @@ module "ci_bq_external_data_project" { } resource "google_storage_bucket" "ci_bq_external_data_storage_bucket" { - name = "ci-bq-external-data" - project = module.ci_bq_external_data_project.project_id + name = "ci-bq-external-data" + project = module.ci_bq_external_data_project.project_id + location = "US" } resource "google_storage_bucket_iam_member" "ci_bq_external_data_storage_bucket_member" { diff --git a/infra/terraform/test-org/org/folders.tf b/infra/terraform/test-org/org/folders.tf index aff6964ecb7..0c03227c120 100644 --- a/infra/terraform/test-org/org/folders.tf +++ b/infra/terraform/test-org/org/folders.tf @@ -16,7 +16,7 @@ module "folders-root" { source = "terraform-google-modules/folders/google" - version = "~> 2.0" + version = "~> 3.1" parent = "organizations/${local.org_id}" @@ -30,7 +30,7 @@ module "folders-root" { module "folders-ci" { source = "terraform-google-modules/folders/google" - version = "~> 2.0" + version = "~> 3.1" parent = "folders/${replace(local.folders["ci-projects"], "folders/", "")}" diff --git a/infra/terraform/test-org/org/gsuite.tf b/infra/terraform/test-org/org/gsuite.tf index f8707c9bee3..7db66646d86 100644 --- a/infra/terraform/test-org/org/gsuite.tf +++ b/infra/terraform/test-org/org/gsuite.tf @@ -50,7 +50,7 @@ resource "google_folder" "ci_gsuite_sa_folder" { module "ci_gsuite_sa_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 4.0" + version = "~> 13.0" name = "ci-gsuite-sa-project" project_id = "ci-gsuite-sa-project" @@ -114,6 +114,7 @@ resource "google_storage_bucket" "ci_gsuite_sa" { name = local.ci_gsuite_sa_bucket storage_class = "MULTI_REGIONAL" project = module.ci_gsuite_sa_project.project_id + location = "US" versioning { enabled = true diff --git a/infra/terraform/test-org/org/iam.tf b/infra/terraform/test-org/org/iam.tf index c065039fefd..2e90ff4d334 100644 --- a/infra/terraform/test-org/org/iam.tf +++ b/infra/terraform/test-org/org/iam.tf @@ -16,8 +16,8 @@ */ module "admin_bindings" { - source = "terraform-google-modules/iam/google" - version = "~> 2.0" + source = "terraform-google-modules/iam/google//modules/folders_iam" + version = "~> 7.4" folders = [local.folders["ci-projects"]] @@ -37,8 +37,8 @@ module "admin_bindings" { } module "ci_bindings" { - source = "terraform-google-modules/iam/google" - version = "~> 2.0" + source = "terraform-google-modules/iam/google//modules/folders_iam" + version = "~> 7.4" folders = [local.folders["ci-projects"]] @@ -58,8 +58,8 @@ module "ci_bindings" { } module "ci_folders_folder_bindings" { - source = "terraform-google-modules/iam/google" - version = "~> 2.0" + source = "terraform-google-modules/iam/google//modules/folders_iam" + version = "~> 7.4" folders = [local.ci_folders["ci-folders"]] diff --git a/infra/terraform/test-org/org/prow.tf b/infra/terraform/test-org/org/prow.tf index bf419712219..873b59d0303 100644 --- a/infra/terraform/test-org/org/prow.tf +++ b/infra/terraform/test-org/org/prow.tf @@ -36,7 +36,7 @@ provider "kubernetes" { module "prow-int-sa-wi" { source = "terraform-google-modules/kubernetes-engine/google//modules/workload-identity" - version = "~> 16.0" + version = "~> 21.0" name = "int-test-sa" namespace = local.test_ns project_id = local.prow_project_id diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index c755d53d5b6..bfc1c8352a6 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -15,26 +15,22 @@ */ terraform { - required_version = ">= 0.12" + required_version = "~> 1.2.0" + required_providers { + external = { + version = "~> 1.2, < 3.0" + } + google = { + version = ">= 3.19, < 5.0" + } + google-beta = { + version = ">= 3.19, < 5.0" + } + null = { + version = "~> 2.1, < 4.0" + } + random = { + version = ">= 2.3.1, < 4.0" + } + } } - -provider "external" { - version = "~> 1.2" -} - -provider "google" { - version = "~> 3.19" -} - -provider "google-beta" { - version = "~> 3.19" -} - -provider "null" { - version = "~> 2.1" -} - -provider "random" { - version = "~> 2.2" -} - diff --git a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl new file mode 100644 index 00000000000..1d2a204aa90 --- /dev/null +++ b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl @@ -0,0 +1,119 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/archive" { + version = "2.2.0" + constraints = ">= 1.3.0, < 3.0.0" + hashes = [ + "h1:CIWi5G6ob7p2wWoThRQbOB8AbmFlCzp7Ka81hR3cVp0=", + "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", + "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", + "zh:100fc5b3fc01ea463533d7bbfb01cb7113947a969a4ec12e27f5b2be49884d6c", + "zh:55c0d7ddddbd0a46d57c51fcfa9b91f14eed081a45101dbfc7fd9d2278aa1403", + "zh:73a5dd68379119167934c48afa1101b09abad2deb436cd5c446733e705869d6b", + "zh:841fc4ac6dc3479981330974d44ad2341deada8a5ff9e3b1b4510702dfbdbed9", + "zh:91be62c9b41edb137f7f835491183628d484e9d6efa82fcb75cfa538c92791c5", + "zh:acd5f442bd88d67eb948b18dc2ed421c6c3faee62d3a12200e442bfff0aa7d8b", + "zh:ad5720da5524641ad718a565694821be5f61f68f1c3c5d2cfa24426b8e774bef", + "zh:e63f12ea938520b3f83634fc29da28d92eed5cfbc5cc8ca08281a6a9c36cca65", + "zh:f6542918faa115df46474a36aabb4c3899650bea036b5f8a5e296be6f8f25767", + ] +} + +provider "registry.terraform.io/hashicorp/google" { + version = "4.23.0" + constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" + hashes = [ + "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", + "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", + "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", + "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", + "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", + "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", + "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", + "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", + "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", + "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", + "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + ] +} + +provider "registry.terraform.io/hashicorp/google-beta" { + version = "4.23.0" + constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, ~> 4.11, < 5.0.0" + hashes = [ + "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", + "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", + "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", + "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", + "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", + "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", + "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", + "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", + "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", + "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", + "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + ] +} + +provider "registry.terraform.io/hashicorp/null" { + version = "3.1.1" + constraints = ">= 2.1.0, < 4.0.0" + hashes = [ + "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", + "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", + "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", + "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", + "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", + "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", + "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", + "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", + "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", + "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", + "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", + ] +} + +provider "registry.terraform.io/hashicorp/random" { + version = "3.2.0" + constraints = ">= 2.2.0, < 4.0.0" + hashes = [ + "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", + "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", + "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", + "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", + "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", + "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", + "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", + "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", + "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", + "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", + "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + ] +} + +provider "registry.terraform.io/hashicorp/time" { + version = "0.7.2" + hashes = [ + "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", + "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", + "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", + "zh:35e4de0437f4fa9c1ad69aaf8136413be2369ea607d78e04bb68dc66a6a520b8", + "zh:369756417a6272e79cad31eb2c82c202f6a4b6e4204a893f656644ba9e149fa2", + "zh:390370f1179d89b33c3a0731691e772d5450a7d59fc66671ec625e201db74aa2", + "zh:3d12ac905259d225c685bc42e5507ed0fbdaa5a09c30dce7c1932d908df857f7", + "zh:75f63e5e1c68e6c5bccba4568c3564e2774eb3a7a19189eb8e2b6e0d58c8f8cc", + "zh:7c22a2078a608e3e0278c4cbc9c483909062ebd1843bddaf8f176346c6d378b1", + "zh:7cfb3c02f78f0060d59c757c4726ab45a962ce4a9cf4833beca704a1020785bd", + "zh:a0325917f47c28a2ed088dedcea0d9520d91b264e63cc667fe4336ac993c0c11", + "zh:c181551d4c0a40b52e236f1755cc340aeca0fb5dcfd08b3b1c393a7667d2f327", + ] +} diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index 5996ae304ac..737c6e4dad8 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -16,14 +16,14 @@ module "scheduler-app-engine" { source = "terraform-google-modules/project-factory/google//modules/app_engine" - version = "~> 10.0" + version = "~> 13.0" location_id = local.app_location project_id = module.cft-manager-project.project_id } module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 2.0" + version = "~> 2.4" job_schedule = "17 * * * *" max_project_age_in_hours = "6" diff --git a/infra/terraform/test-org/test-cleanup/project.tf b/infra/terraform/test-org/test-cleanup/project.tf index ce4372682e4..31e63509a39 100644 --- a/infra/terraform/test-org/test-cleanup/project.tf +++ b/infra/terraform/test-org/test-cleanup/project.tf @@ -16,7 +16,7 @@ module "cft-manager-project" { source = "terraform-google-modules/project-factory/google" - version = "~> 10.0" + version = "~> 13.0" name = "cft-project-manager" random_project_id = true diff --git a/infra/terraform/test-org/test-cleanup/versions.tf b/infra/terraform/test-org/test-cleanup/versions.tf index 085d8abc747..bf68289a1f5 100644 --- a/infra/terraform/test-org/test-cleanup/versions.tf +++ b/infra/terraform/test-org/test-cleanup/versions.tf @@ -15,25 +15,22 @@ */ terraform { - required_version = ">= 0.12" -} - -provider "archive" { - version = "~> 1.3" -} - -provider "google" { - version = "~> 3.38" -} - -provider "google-beta" { - version = "~> 3.38" -} - -provider "null" { - version = "~> 2.1" -} - -provider "random" { - version = "~> 2.2" + required_version = "~> 1.2.0" + required_providers { + archive = { + version = ">= 1.3, < 3.0" + } + google = { + version = ">= 3.38, < 5.0" + } + google-beta = { + version = ">= 3.38, < 5.0" + } + null = { + version = ">= 2.1, < 4.0" + } + random = { + version = ">= 2.2, < 4.0" + } + } } diff --git a/infra/terraform/test-org/tf-validator/.terraform.lock.hcl b/infra/terraform/test-org/tf-validator/.terraform.lock.hcl new file mode 100644 index 00000000000..2f695c4800d --- /dev/null +++ b/infra/terraform/test-org/tf-validator/.terraform.lock.hcl @@ -0,0 +1,100 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/google" { + version = "4.23.0" + constraints = ">= 3.43.0, >= 3.50.0, < 5.0.0" + hashes = [ + "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", + "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", + "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", + "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", + "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", + "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", + "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", + "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", + "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", + "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", + "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + ] +} + +provider "registry.terraform.io/hashicorp/google-beta" { + version = "4.23.0" + constraints = ">= 3.1.0, >= 3.43.0, >= 3.50.0, < 5.0.0" + hashes = [ + "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", + "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", + "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", + "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", + "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", + "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", + "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", + "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", + "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", + "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", + "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + ] +} + +provider "registry.terraform.io/hashicorp/null" { + version = "3.1.1" + constraints = ">= 2.1.0" + hashes = [ + "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", + "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", + "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", + "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", + "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", + "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", + "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", + "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", + "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", + "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", + "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", + ] +} + +provider "registry.terraform.io/hashicorp/random" { + version = "3.2.0" + constraints = ">= 2.2.0" + hashes = [ + "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", + "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", + "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", + "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", + "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", + "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", + "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", + "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", + "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", + "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", + "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + ] +} + +provider "registry.terraform.io/hashicorp/time" { + version = "0.7.2" + hashes = [ + "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", + "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", + "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", + "zh:35e4de0437f4fa9c1ad69aaf8136413be2369ea607d78e04bb68dc66a6a520b8", + "zh:369756417a6272e79cad31eb2c82c202f6a4b6e4204a893f656644ba9e149fa2", + "zh:390370f1179d89b33c3a0731691e772d5450a7d59fc66671ec625e201db74aa2", + "zh:3d12ac905259d225c685bc42e5507ed0fbdaa5a09c30dce7c1932d908df857f7", + "zh:75f63e5e1c68e6c5bccba4568c3564e2774eb3a7a19189eb8e2b6e0d58c8f8cc", + "zh:7c22a2078a608e3e0278c4cbc9c483909062ebd1843bddaf8f176346c6d378b1", + "zh:7cfb3c02f78f0060d59c757c4726ab45a962ce4a9cf4833beca704a1020785bd", + "zh:a0325917f47c28a2ed088dedcea0d9520d91b264e63cc667fe4336ac993c0c11", + "zh:c181551d4c0a40b52e236f1755cc340aeca0fb5dcfd08b3b1c393a7667d2f327", + ] +} diff --git a/infra/terraform/test-org/tf-validator/project.tf b/infra/terraform/test-org/tf-validator/project.tf index 775c274f108..c36e8127ee0 100644 --- a/infra/terraform/test-org/tf-validator/project.tf +++ b/infra/terraform/test-org/tf-validator/project.tf @@ -19,7 +19,7 @@ // there are no reason to create an ephemeral test project + service account each build. module "terraform_validator_test_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 11.0" + version = "~> 13.0" name = local.terraform_validator_project_name random_project_id = true diff --git a/infra/terraform/test-org/tf-validator/versions.tf b/infra/terraform/test-org/tf-validator/versions.tf index 42dbd4f2a25..b0f6540afe8 100644 --- a/infra/terraform/test-org/tf-validator/versions.tf +++ b/infra/terraform/test-org/tf-validator/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = ">= 0.13" + required_version = "~> 1.2.0" required_providers { google = { source = "hashicorp/google" From decb580b09fa966545aed27004d288ac2e566030 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 7 Jun 2022 09:21:33 -0700 Subject: [PATCH 0096/1371] fix: update infra/blueprint-test release-please (#1157) --- release-please-config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/release-please-config.json b/release-please-config.json index cd734136aa1..87926401270 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -6,6 +6,7 @@ "infra/blueprint-test": { "release-type": "go", "package-name": "blueprint-test", + "component": "infra/blueprint-test", "bump-minor-pre-major": true, "release-as": "0.0.1" } From 7635b32b337419ddbb71f0e4de203c8c95d2fe08 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 7 Jun 2022 09:35:26 -0700 Subject: [PATCH 0097/1371] chore(master): release infra/blueprint-test 0.0.1 (#1158) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- infra/blueprint-test/CHANGELOG.md | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index e8e6f017337..bbb03679333 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,39 @@ # Changelog +## [0.0.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test-v0.0.1...infra/blueprint-test/v0.0.1) (2022-06-07) + + +### Features + +* add getter for krmt build directory ([#1106](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1106)) ([fd68a6b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fd68a6bdc9a90d0f340fdad80bfcfc8119137a0f)) +* add golden string sanitizer option ([#1109](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1109)) ([0e962c6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/0e962c6ff0f5fa4f38cab62c31e78bd67d5923de)) +* add goldenfile sanitizers ([#1074](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1074)) ([c98be35](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/c98be3561409b0051a1a5b2502eb603766d2c4a5)) +* add helper for goldenfiles ([#1067](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1067)) ([1bf5397](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1bf53970d457786fa2b3dc79a42b77887d1c7bb5)) +* add KRM benchmark example ([#982](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/982)) ([6854aa0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6854aa08ed6f5edeba8884aec1d89745d1f64a2b)) +* add support for runf in gcloud blueprint test ([#1070](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1070)) ([3842083](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3842083683a3218d7864efa5e545dc4958cc3ecb)) +* add test result utils ([#1005](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1005)) ([608c349](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/608c349bf8e4b68bb1f211094de5e8c91f881521)) +* add test yaml config ([#986](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/986)) ([fe03487](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fe034876e2e780bce0906252026115c851580f7a)) +* add the first draft of the user guide for the test framework ([#983](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/983)) ([5dcd154](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5dcd1546f9d5ec5ab39743e5181feffb8877a1ea)) +* add transform func for removing a json value by path ([#1110](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1110)) ([9f9a444](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/9f9a444009fd9a35d074efff5803d2a2fb8572e8)) +* adds logic for copying additional resources to the build directory ([#1118](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1118)) ([8383c92](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8383c92c8a54322eebca8a058550b46396f043aa)) +* **cli:** Allow customization of setup sa key ([#1065](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1065)) ([7c9f83c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/7c9f83caf2fe77b69dd4af8bef6c3496b14d3af2)) +* export GetTFOptions method for tft ([#1003](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1003)) ([5e783cf](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5e783cf7c716104ad113064d9e1b9aea4dc7a999)) +* initialize KRM blueprint testing ([#977](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/977)) ([2953e46](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2953e46e28f4085c733243e3a4914f52aa105f2e)) +* initialize terraform blueprint testing ([#945](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/945)) ([723b19c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/723b19ce02d0e04e1f12f117aa2fe9ba44cad5e5)) +* remove list-setter dep for kpt ([#1088](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1088)) ([bad09af](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bad09af2b45598ca08990d3bcb722560b661b3e0)) +* support complex type setup outputs ([#997](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/997)) ([39b4ef0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/39b4ef08bb23b352ea6ff7073f942ec0b5a50fc7)) +* **tft:** activate creds from setup ([#1062](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1062)) ([08c972c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/08c972c3768cae717df3f33a43785bf21b183a13)) + + +### Bug Fixes + +* **bptest:** compute config discovery from int test dir ([#1025](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1025)) ([bea525b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bea525b1cf5203f522bd0e9f42bce45605885c41)) +* bumb the gjson version to the latestg ([#1011](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1011)) ([2c665e7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2c665e7bd84a189f225fbbf42f4ea5d0b69fa42a)) +* **krm-test:** add option for custom setters ([#981](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/981)) ([78afb5d](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/78afb5d4cfd83922d82980a6493bd0a7dab78e12)) +* mark tests as skipped due to test config ([#1063](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1063)) ([0687139](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/068713996f3641114bf1fed1937d4cec09ddc3f5)) +* recognize prow PR commit ([#993](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/993)) ([e8c47de](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e8c47de6a66b1dde620da57ecd752f59de32b7f4)) +* upgrades kpt-sdk dependency to remove the gakekeeper lib reference ([#1090](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1090)) ([727d5c1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/727d5c1b1fafbd45ddfaea7cad99da379891fc6e)) + ## [0.0.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/blueprint-test-v0.0.1...blueprint-test/v0.0.1) (2022-06-06) From 049bed2d02c1ec3c6c7ec7f537059cd113064167 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 8 Jun 2022 09:29:26 -0500 Subject: [PATCH 0098/1371] Update tools to 1.5.1 (#1161) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 52919d0eab9..67b64bd148d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.2.2 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 388.0.0 +CLOUD_SDK_VERSION := 389.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 63a0288c33d9b22197fa249cdf8f4796635aa5dc Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 9 Jun 2022 17:12:59 -0500 Subject: [PATCH 0099/1371] fix: remove deleted SA (#1163) --- infra/terraform/test-org/org-iam-policy/iam.tf | 1 - 1 file changed, 1 deletion(-) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index 581c5eb7ecc..53eee0f015f 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -21,7 +21,6 @@ locals { gcp_admins_group_test = "gcp-admins@test.infra.cft.tips" project_cleaner = "project-cleaner-function@${data.terraform_remote_state.project_cleaner.outputs.project_id}.iam.gserviceaccount.com" policy = { - "roles/accesscontextmanager.policyAdmin" : ["serviceAccount:project-factory-manager@gcp-foundation-shared-devops.iam.gserviceaccount.com"], "roles/billing.admin" : ["group:${local.gcp_admins_group_test}"], "roles/compute.xpnAdmin" : ["group:${local.cft_ci_group}"], "roles/containeranalysis.admin" : ["group:${local.cft_ci_group}"], From 563f22d1d20ba2dda204c17734d53ba7fe02798d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Jun 2022 08:35:20 -0700 Subject: [PATCH 0100/1371] chore(deps): bump jmespath in /infra/concourse/build/data (#1159) Bumps [jmespath](https://github.com/trevorrowe/jmespath.rb) from 1.4.0 to 1.6.1. - [Release notes](https://github.com/trevorrowe/jmespath.rb/releases) - [Changelog](https://github.com/jmespath/jmespath.rb/blob/main/CHANGELOG.md) - [Commits](https://github.com/trevorrowe/jmespath.rb/compare/v1.4.0...v1.6.1) --- updated-dependencies: - dependency-name: jmespath dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/concourse/build/data/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/concourse/build/data/Gemfile.lock b/infra/concourse/build/data/Gemfile.lock index 4e24929217b..4fdf348a007 100644 --- a/infra/concourse/build/data/Gemfile.lock +++ b/infra/concourse/build/data/Gemfile.lock @@ -131,7 +131,7 @@ GEM train-habitat (~> 0.1) tty-prompt (~> 0.17) tty-table (~> 0.10) - jmespath (1.4.0) + jmespath (1.6.1) json (2.1.0) jsonpath (1.1.0) multi_json From c07c614c121ce16bbecfd6b9d1d89e3a3522ce5e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Jun 2022 09:59:37 -0700 Subject: [PATCH 0101/1371] chore(deps): bump jmespath in /infra/build/developer-tools/build/data (#1160) Bumps [jmespath](https://github.com/trevorrowe/jmespath.rb) from 1.4.0 to 1.6.1. - [Release notes](https://github.com/trevorrowe/jmespath.rb/releases) - [Changelog](https://github.com/jmespath/jmespath.rb/blob/main/CHANGELOG.md) - [Commits](https://github.com/trevorrowe/jmespath.rb/compare/v1.4.0...v1.6.1) --- updated-dependencies: - dependency-name: jmespath dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/build/developer-tools/build/data/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index a6f8c55db68..39f1717fd91 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -311,7 +311,7 @@ GEM train-core (~> 3.0) tty-prompt (~> 0.17) tty-table (~> 0.10) - jmespath (1.4.0) + jmespath (1.6.1) json (2.3.1) json_schemer (0.2.11) ecma-re-validator (~> 0.2) From 8adfb3f10ecf06c0752313995d20a90a63a90516 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 10 Jun 2022 17:55:38 -0500 Subject: [PATCH 0102/1371] chore: bump cleaner, reconcile iam (#1167) --- infra/terraform/test-org/org-iam-policy/iam.tf | 6 +++++- infra/terraform/test-org/test-cleanup/.terraform.lock.hcl | 6 ++++++ infra/terraform/test-org/test-cleanup/cleanup.tf | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index 53eee0f015f..34bdb6f87b7 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -33,7 +33,11 @@ locals { "roles/resourcemanager.projectDeleter" : ["serviceAccount:${local.project_cleaner}"], "roles/owner" : ["group:${local.gcp_admins_group_test}", "serviceAccount:${local.project_cleaner}"], "roles/browser" : ["group:${local.cft_dev_group}"], - "roles/viewer" : ["group:${local.cft_dev_group}"] + "roles/viewer" : ["group:${local.cft_dev_group}", "serviceAccount:${local.project_cleaner}"], + "roles/compute.orgSecurityPolicyAdmin" : ["serviceAccount:${local.project_cleaner}"], + "roles/compute.orgSecurityResourceAdmin" : ["serviceAccount:${local.project_cleaner}"], + "roles/resourcemanager.folderEditor" : ["serviceAccount:${local.project_cleaner}"], + "roles/serviceusage.serviceUsageAdmin" : ["serviceAccount:${local.project_cleaner}"], } } diff --git a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl index 1d2a204aa90..eb0ccceae8b 100644 --- a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl +++ b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl @@ -5,6 +5,7 @@ provider "registry.terraform.io/hashicorp/archive" { version = "2.2.0" constraints = ">= 1.3.0, < 3.0.0" hashes = [ + "h1:2K5LQkuWRS2YN1/YoNaHn9MAzjuTX8Gaqy6i8Mbfv8Y=", "h1:CIWi5G6ob7p2wWoThRQbOB8AbmFlCzp7Ka81hR3cVp0=", "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", @@ -24,6 +25,7 @@ provider "registry.terraform.io/hashicorp/google" { version = "4.23.0" constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" hashes = [ + "h1:JyHPoN18hxRGyPu4jVmTepuD7yr0vdHzo84mTOieNZY=", "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", @@ -44,6 +46,7 @@ provider "registry.terraform.io/hashicorp/google-beta" { version = "4.23.0" constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, ~> 4.11, < 5.0.0" hashes = [ + "h1:Bt0rpxFzvegGLqKu0TkkIHylaiW56a51RAPFPWzFjk0=", "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", @@ -65,6 +68,7 @@ provider "registry.terraform.io/hashicorp/null" { constraints = ">= 2.1.0, < 4.0.0" hashes = [ "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", + "h1:Pctug/s/2Hg5FJqjYcTM0kPyx3AoYK1MpRWO0T9V2ns=", "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", @@ -84,6 +88,7 @@ provider "registry.terraform.io/hashicorp/random" { version = "3.2.0" constraints = ">= 2.2.0, < 4.0.0" hashes = [ + "h1:YD109FT06s3sFdAnpsTL/cpcSDcI4NPiWvyF89ilACc=", "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", @@ -103,6 +108,7 @@ provider "registry.terraform.io/hashicorp/random" { provider "registry.terraform.io/hashicorp/time" { version = "0.7.2" hashes = [ + "h1:NKy1QrNLlP5mKy5Tea6lQSRsVoyydJQKh6WvNTdBF4I=", "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index 737c6e4dad8..633b8f84093 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -23,7 +23,7 @@ module "scheduler-app-engine" { module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 2.4" + version = "~> 2.5" job_schedule = "17 * * * *" max_project_age_in_hours = "6" From 5af4cd83af740af433a919753b723b998913b429 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 10 Jun 2022 17:56:17 -0500 Subject: [PATCH 0103/1371] Update tools to 1.5.2 (#1164) Co-authored-by: Bharath KKB --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 67b64bd148d..d9737e1a353 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -27,12 +27,12 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.16 +KPT_VERSION := 1.0.0-beta.17 CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 442b49ebe347d2415840967200d280bdf590cbe1 Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Fri, 10 Jun 2022 23:50:40 -0300 Subject: [PATCH 0104/1371] feat: add support for backend configuration tf blueprint test (#1165) * add support for backend configuration for terraform init * update test to use backend configuration * check if the local backend file was created * use absolute path for loca backend config in test * merge WithMigrateState into WithBackendConfig Co-authored-by: Bharath KKB --- .../examples/simple_tf_module/main.tf | 4 + infra/blueprint-test/go.mod | 12 +- infra/blueprint-test/go.sum | 926 +++++++++++++++--- infra/blueprint-test/pkg/tft/terraform.go | 19 +- .../terraform_simple_base_api_module_test.go | 7 + .../test/terraform_simple_bpt_test.go | 7 + 6 files changed, 808 insertions(+), 167 deletions(-) diff --git a/infra/blueprint-test/examples/simple_tf_module/main.tf b/infra/blueprint-test/examples/simple_tf_module/main.tf index 25ed15c5963..00d2de9f546 100644 --- a/infra/blueprint-test/examples/simple_tf_module/main.tf +++ b/infra/blueprint-test/examples/simple_tf_module/main.tf @@ -22,6 +22,10 @@ provider "null" { version = "~> 2.1" } +terraform { + backend "local" {} +} + module "test-vpc-module" { source = "terraform-google-modules/network/google" version = "~> 3.2.0" diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index cc1b1bb1c88..43b6d41b25b 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,20 +4,12 @@ go 1.16 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2 - github.com/google/go-cmp v0.5.6 // indirect - github.com/gruntwork-io/terratest v0.35.6 - github.com/kr/text v0.2.0 // indirect + github.com/gruntwork-io/terratest v0.40.7 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/mitchellh/go-wordwrap v1.0.0 // indirect - github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect github.com/otiai10/copy v1.6.0 github.com/stretchr/testify v1.7.0 github.com/tidwall/gjson v1.12.1 - github.com/tidwall/sjson v1.2.4 // indirect - golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect - golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420 // indirect - golang.org/x/sys v0.0.0-20210603125802-9665404d3644 // indirect + github.com/tidwall/sjson v1.2.4 golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect - gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect sigs.k8s.io/kustomize/kyaml v0.11.0 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index a4a55ffcd4d..80b79fe9cf6 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -1,3 +1,4 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -5,186 +6,371 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0 h1:bAMqZidYkmIsUqe6PtkEPT7Q+vfizScn+jfNA6jwK9c= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v46.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v50.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= -github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.11.0/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest v0.11.5/go.mod h1:foo3aIXRQ90zFve3r0QiDsrjGDUwWhKl0ZOQy1CT14k= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= +github.com/Azure/go-autorest/autorest v0.11.20/go.mod h1:o3tqFY+QR40VOlk+pV4d77mORO64jOXSgEnPQgLK6JY= github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= -github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.1/go.mod h1:ea90/jvmnAwDrSooLH4sRIehEPtG/EPUXavDh31MnA4= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.0/go.mod h1:JljT387FplPzBA31vUcvsetLKF3pec5bdAxjVU4kI2s= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/adal v0.9.11/go.mod h1:nBKAnTomx8gDtl+3ZCJv2v0KACFHWTB2drffI1B68Pk= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.8/go.mod h1:kxyKZTSfKh8OVFWPAgOgQ/frrJgeYQJPyR5fLFmXko4= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= -github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= -github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= -github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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= -github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2 h1:xAvEbj/KELmHntrHXkQVtYitM604wMGHXvI5+zQw22k= github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2/go.mod h1:lJYiqfBOl6AOiefK9kmkhinbffIysu+nnclOBwKEPlQ= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/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/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v12 v12.0.0 h1:bNEQyAGak9tojivJNkoqWErVCQbjdL7GzRt3F8NvfJ0= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.38.28/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= +github.com/aws/aws-sdk-go v1.40.56 h1:FM2yjR0UUYFzDTMx+mH9Vyw1k1EUUxsAFzk+BjkzANA= +github.com/aws/aws-sdk-go v1.40.56/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= +github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= +github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= +github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.2/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.7.0/go.mod h1:83VWDqHnurTKliEB0YvWMiCfLDwv4Cjj1X9Vk98GJZw= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= +github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= 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/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v0.0.0-20200109221225-a4f60165b7a3/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= 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-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-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= +github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -192,143 +378,267 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 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/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= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-containerregistry v0.0.0-20200110202235-f4fb41bf00a3/go.mod h1:2wIuQute9+hhWqvL3vEI7YB0EKluF4WcPzI1eAliazk= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/go-containerregistry v0.6.0/go.mod h1:euCCtNbZ6tKqi1E72vwDj2xZcN5ttKpZLfa/wSo5iLw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/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 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.8.0/go.mod h1:gtp0yTtIBExIZp7vyIV9I0XQkVwiQZze678hvDXof78= -github.com/gruntwork-io/terratest v0.35.6 h1:Q7pUd3JI4i5mmR/KgYkZJJ4q9ZbV8ru9KydwjA/ohaA= -github.com/gruntwork-io/terratest v0.35.6/go.mod h1:GIVJGBV1WIv1vxIG31Ycy0CuHYfXuvvkilNQuC9Wi+o= +github.com/gruntwork-io/terratest v0.40.7 h1:kp6Ymc3hPMdsCoV2Ij2C5QqooCCwELuIopKXhWho/jE= +github.com/gruntwork-io/terratest v0.40.7/go.mod h1:CjHsEgP1Pe987X5N8K5qEqCuLtu1bqERGIAF8bTj1s0= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.5.9 h1:b7ahZW50iQiUek/at3CvZhPK1/jiV6CtKcsJiR6E4R0= +github.com/hashicorp/go-getter v1.5.9/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= +github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.8.2 h1:wmFle3D1vu0okesm8BTLVDyJ6/OL9DCLUwn0b2OptiY= -github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= -github.com/hashicorp/terraform-json v0.9.0 h1:WE7+Wt93W93feOiCligElSyS0tlDzwZUtJuDGIBr8zg= -github.com/hashicorp/terraform-json v0.9.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= +github.com/hashicorp/hcl/v2 v2.9.1 h1:eOy4gREY0/ZQHNItlfuEZqtcQbXIxzojlP301hDpnac= +github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/terraform-json v0.13.0 h1:Li9L+lKD1FO5RVFRM1mMMIBDoUHslOniyEi5CM+FWGY= +github.com/hashicorp/terraform-json v0.13.0/go.mod h1:y5OdLBCT+rxbwnpxZs9kGL7R9ExU76+cpdY8zHwoazk= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o= github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.0 h1:2T7tUoQrQT+fQWdaY5rjWztFGAFwbGD04iPJg90ZiOs= +github.com/klauspost/compress v1.13.0/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326 h1:ofNAzWCcyTALn2Zv40+8XitdzCgXY6e9qvXwN9W0YXg= github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 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/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= @@ -337,75 +647,118 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/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 v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-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/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= +github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.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 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= -github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tidwall/gjson v1.12.1 h1:ikuZsLdhr8Ws0IdROXUS1Gi4v9Z4pGqpX/CvJkxvfpo= github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -416,54 +769,99 @@ github.com/tidwall/sjson v1.2.4 h1:cuiLzLnaMeBhRmEv00Lpk3tkYrcxpmbU81tAY4Dw0tc= github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmccombs/hcl2json v0.3.3 h1:+DLNYqpWE0CsOQiEZu+OZm5ZBImake3wtITYxQ8uLFQ= +github.com/tmccombs/hcl2json v0.3.3/go.mod h1:Y2chtz2x9bAeRTvSibVRVgbLJhLJXKlUeIvjeVdnm4w= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= +github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +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/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.2.1 h1:vGMsygfmeCl4Xb6OA5U5XVAaQZ69FvoG7X2jUtQujb8= -github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= +github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.8.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.9.1 h1:viqrgQwFl5UpSxc046qblj78wZXVDFnSOufaOTER+cc= +github.com/zclconf/go-cty v1.9.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 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/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/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-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -472,19 +870,33 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +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/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -495,39 +907,74 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20210503060351-7fd8e65b6420 h1:a8jGStKg0XqKDlKqjLrXn0ioF5MH36pT7Z0BRTqLhbk= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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= 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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +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/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/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-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -536,96 +983,237 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644 h1:CA1DEQ4NdKphKeL70tvsWNdT5oFh1lOjihRcEDROi0I= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +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= 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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191205215504-7b8c8591a921/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20201110201400-7099162a900a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= 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= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/api v0.47.0 h1:sQLWZQvP6jPGIP4JGPkJu4zHswrv81iobiyszr3b/0I= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= 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/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= 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= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= 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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -633,8 +1221,26 @@ google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -644,27 +1250,39 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +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 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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= @@ -672,48 +1290,50 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= 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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= -k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= -k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= -k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= -k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE= -k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= -k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +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.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= +k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= +k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= +k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= +k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= 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/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/kustomize/kyaml v0.11.0 h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA= sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 6c4359de1c8..af9c4fdbe11 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -43,6 +43,8 @@ type TFBlueprintTest struct { saKey string // optional setup sa key tfDir string // directory containing Terraform configs tfEnvVars map[string]string // variables to pass to Terraform as environment variables prefixed with TF_VAR_ + backendConfig map[string]interface{} // backend configuration for terraform init + migrateState bool // suppress user confirmation in a migration in terraform init setupDir string // optional directory containing applied TF configs to import outputs as variables for the test vars map[string]interface{} // variables to pass to Terraform as flags logger *logger.Logger // custom logger @@ -90,6 +92,13 @@ func WithEnvVars(envVars map[string]string) tftOption { } } +func WithBackendConfig(backendConfig map[string]interface{}) tftOption { + return func(f *TFBlueprintTest) { + f.backendConfig = backendConfig + f.migrateState = true + } +} + func WithSetupPath(setupPath string) tftOption { return func(f *TFBlueprintTest) { f.setupDir = setupPath @@ -186,10 +195,12 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { // GetTFOptions generates terraform.Options used by Terratest. func (b *TFBlueprintTest) GetTFOptions() *terraform.Options { return terraform.WithDefaultRetryableErrors(b.t, &terraform.Options{ - TerraformDir: b.tfDir, - EnvVars: b.tfEnvVars, - Vars: b.vars, - Logger: b.logger, + TerraformDir: b.tfDir, + EnvVars: b.tfEnvVars, + Vars: b.vars, + Logger: b.logger, + BackendConfig: b.backendConfig, + MigrateState: b.migrateState, }) } diff --git a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go index 85477c58882..35d49d71e1f 100644 --- a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go +++ b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go @@ -19,6 +19,7 @@ package test import ( "fmt" "testing" + "os" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" @@ -27,8 +28,13 @@ import ( ) func TestSimpleTFModule(t *testing.T) { + path, _ := os.Getwd() + statePath:= fmt.Sprintf("%s/../examples/simple_tf_module/local_backend.tfstate", path) nt := tft.NewTFBlueprintTest(t, tft.WithTFDir("../examples/simple_tf_module"), + tft.WithBackendConfig(map[string]interface{}{ + "path": statePath, + }), tft.WithSetupPath("setup/simple_tf_module"), tft.WithEnvVars(map[string]string{"network_name": fmt.Sprintf("foo-%s", utils.RandStr(5))}), ) @@ -44,5 +50,6 @@ func TestSimpleTFModule(t *testing.T) { op := gcloud.Run(t, fmt.Sprintf("compute networks subnets describe subnet-01 --project %s --region us-west1", nt.GetStringOutput("project_id"))) assert.Equal("10.10.10.0/24", op.Get("ipCidrRange").String(), "should have the right CIDR") assert.Equal("false", op.Get("logConfig.enable").String(), "logConfig should not be enabled") + assert.FileExists(statePath) }) } diff --git a/infra/blueprint-test/test/terraform_simple_bpt_test.go b/infra/blueprint-test/test/terraform_simple_bpt_test.go index eb959e77074..c4d771498b4 100644 --- a/infra/blueprint-test/test/terraform_simple_bpt_test.go +++ b/infra/blueprint-test/test/terraform_simple_bpt_test.go @@ -19,6 +19,7 @@ package test import ( "fmt" "testing" + "os" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" @@ -26,8 +27,13 @@ import ( ) func TestCFTSimpleModule(t *testing.T) { + path, _ := os.Getwd() + statePath:= fmt.Sprintf("%s/../examples/simple_tf_module/local_backend.tfstate", path) networkBlueprint := tft.NewTFBlueprintTest(t, tft.WithTFDir("../examples/simple_tf_module"), + tft.WithBackendConfig(map[string]interface{}{ + "path": statePath, + }), tft.WithSetupPath("setup/simple_tf_module"), ) networkBlueprint.DefineVerify( @@ -36,6 +42,7 @@ func TestCFTSimpleModule(t *testing.T) { op := gcloud.Run(t, fmt.Sprintf("compute networks subnets describe subnet-01 --project %s --region us-west1", networkBlueprint.GetStringOutput("project_id"))) assert.Equal("10.10.10.0/24", op.Get("ipCidrRange").String(), "should have the right CIDR") assert.Equal("false", op.Get("logConfig.enable").String(), "logConfig should not be enabled") + assert.FileExists(statePath) }) networkBlueprint.Test() } From 2da2581a94880096d789c330115ab43a559a436c Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 10 Jun 2022 22:30:53 -0500 Subject: [PATCH 0105/1371] chore: remove release as version (#1169) --- release-please-config.json | 1 - 1 file changed, 1 deletion(-) diff --git a/release-please-config.json b/release-please-config.json index 87926401270..08227f4519f 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -8,7 +8,6 @@ "package-name": "blueprint-test", "component": "infra/blueprint-test", "bump-minor-pre-major": true, - "release-as": "0.0.1" } }, "bootstrap-sha": "f78304cebc31f2ca29d4303753a8c32ba238ab53" From 049cbfa1b1bc20a111fb5c9fc136a41ed9b3773b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 13 Jun 2022 07:54:28 -0700 Subject: [PATCH 0106/1371] chore: update blueprint-test release info (#1171) --- infra/blueprint-test/CHANGELOG.md | 68 ------------------------------- release-please-config.json | 2 +- 2 files changed, 1 insertion(+), 69 deletions(-) diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index bbb03679333..30d378b9217 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -25,74 +25,6 @@ * **tft:** activate creds from setup ([#1062](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1062)) ([08c972c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/08c972c3768cae717df3f33a43785bf21b183a13)) -### Bug Fixes - -* **bptest:** compute config discovery from int test dir ([#1025](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1025)) ([bea525b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bea525b1cf5203f522bd0e9f42bce45605885c41)) -* bumb the gjson version to the latestg ([#1011](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1011)) ([2c665e7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2c665e7bd84a189f225fbbf42f4ea5d0b69fa42a)) -* **krm-test:** add option for custom setters ([#981](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/981)) ([78afb5d](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/78afb5d4cfd83922d82980a6493bd0a7dab78e12)) -* mark tests as skipped due to test config ([#1063](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1063)) ([0687139](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/068713996f3641114bf1fed1937d4cec09ddc3f5)) -* recognize prow PR commit ([#993](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/993)) ([e8c47de](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e8c47de6a66b1dde620da57ecd752f59de32b7f4)) -* upgrades kpt-sdk dependency to remove the gakekeeper lib reference ([#1090](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1090)) ([727d5c1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/727d5c1b1fafbd45ddfaea7cad99da379891fc6e)) - -## [0.0.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/blueprint-test-v0.0.1...blueprint-test/v0.0.1) (2022-06-06) - - -### Features - -* add getter for krmt build directory ([#1106](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1106)) ([fd68a6b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fd68a6bdc9a90d0f340fdad80bfcfc8119137a0f)) -* add golden string sanitizer option ([#1109](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1109)) ([0e962c6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/0e962c6ff0f5fa4f38cab62c31e78bd67d5923de)) -* add goldenfile sanitizers ([#1074](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1074)) ([c98be35](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/c98be3561409b0051a1a5b2502eb603766d2c4a5)) -* add helper for goldenfiles ([#1067](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1067)) ([1bf5397](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1bf53970d457786fa2b3dc79a42b77887d1c7bb5)) -* add KRM benchmark example ([#982](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/982)) ([6854aa0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6854aa08ed6f5edeba8884aec1d89745d1f64a2b)) -* add support for runf in gcloud blueprint test ([#1070](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1070)) ([3842083](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3842083683a3218d7864efa5e545dc4958cc3ecb)) -* add test result utils ([#1005](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1005)) ([608c349](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/608c349bf8e4b68bb1f211094de5e8c91f881521)) -* add test yaml config ([#986](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/986)) ([fe03487](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fe034876e2e780bce0906252026115c851580f7a)) -* add the first draft of the user guide for the test framework ([#983](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/983)) ([5dcd154](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5dcd1546f9d5ec5ab39743e5181feffb8877a1ea)) -* add transform func for removing a json value by path ([#1110](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1110)) ([9f9a444](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/9f9a444009fd9a35d074efff5803d2a2fb8572e8)) -* adds logic for copying additional resources to the build directory ([#1118](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1118)) ([8383c92](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8383c92c8a54322eebca8a058550b46396f043aa)) -* **cli:** Allow customization of setup sa key ([#1065](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1065)) ([7c9f83c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/7c9f83caf2fe77b69dd4af8bef6c3496b14d3af2)) -* export GetTFOptions method for tft ([#1003](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1003)) ([5e783cf](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5e783cf7c716104ad113064d9e1b9aea4dc7a999)) -* initialize KRM blueprint testing ([#977](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/977)) ([2953e46](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2953e46e28f4085c733243e3a4914f52aa105f2e)) -* initialize terraform blueprint testing ([#945](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/945)) ([723b19c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/723b19ce02d0e04e1f12f117aa2fe9ba44cad5e5)) -* remove list-setter dep for kpt ([#1088](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1088)) ([bad09af](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bad09af2b45598ca08990d3bcb722560b661b3e0)) -* support complex type setup outputs ([#997](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/997)) ([39b4ef0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/39b4ef08bb23b352ea6ff7073f942ec0b5a50fc7)) -* **tft:** activate creds from setup ([#1062](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1062)) ([08c972c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/08c972c3768cae717df3f33a43785bf21b183a13)) - - -### Bug Fixes - -* **bptest:** compute config discovery from int test dir ([#1025](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1025)) ([bea525b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bea525b1cf5203f522bd0e9f42bce45605885c41)) -* bumb the gjson version to the latestg ([#1011](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1011)) ([2c665e7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2c665e7bd84a189f225fbbf42f4ea5d0b69fa42a)) -* **krm-test:** add option for custom setters ([#981](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/981)) ([78afb5d](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/78afb5d4cfd83922d82980a6493bd0a7dab78e12)) -* mark tests as skipped due to test config ([#1063](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1063)) ([0687139](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/068713996f3641114bf1fed1937d4cec09ddc3f5)) -* recognize prow PR commit ([#993](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/993)) ([e8c47de](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e8c47de6a66b1dde620da57ecd752f59de32b7f4)) -* upgrades kpt-sdk dependency to remove the gakekeeper lib reference ([#1090](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1090)) ([727d5c1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/727d5c1b1fafbd45ddfaea7cad99da379891fc6e)) - -## 0.0.1 (2022-06-02) - - -### Features - -* add getter for krmt build directory ([#1106](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1106)) ([fd68a6b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fd68a6bdc9a90d0f340fdad80bfcfc8119137a0f)) -* add golden string sanitizer option ([#1109](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1109)) ([0e962c6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/0e962c6ff0f5fa4f38cab62c31e78bd67d5923de)) -* add goldenfile sanitizers ([#1074](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1074)) ([c98be35](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/c98be3561409b0051a1a5b2502eb603766d2c4a5)) -* add helper for goldenfiles ([#1067](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1067)) ([1bf5397](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1bf53970d457786fa2b3dc79a42b77887d1c7bb5)) -* add KRM benchmark example ([#982](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/982)) ([6854aa0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6854aa08ed6f5edeba8884aec1d89745d1f64a2b)) -* add support for runf in gcloud blueprint test ([#1070](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1070)) ([3842083](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3842083683a3218d7864efa5e545dc4958cc3ecb)) -* add test result utils ([#1005](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1005)) ([608c349](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/608c349bf8e4b68bb1f211094de5e8c91f881521)) -* add test yaml config ([#986](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/986)) ([fe03487](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fe034876e2e780bce0906252026115c851580f7a)) -* add the first draft of the user guide for the test framework ([#983](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/983)) ([5dcd154](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5dcd1546f9d5ec5ab39743e5181feffb8877a1ea)) -* add transform func for removing a json value by path ([#1110](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1110)) ([9f9a444](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/9f9a444009fd9a35d074efff5803d2a2fb8572e8)) -* adds logic for copying additional resources to the build directory ([#1118](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1118)) ([8383c92](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8383c92c8a54322eebca8a058550b46396f043aa)) -* **cli:** Allow customization of setup sa key ([#1065](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1065)) ([7c9f83c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/7c9f83caf2fe77b69dd4af8bef6c3496b14d3af2)) -* export GetTFOptions method for tft ([#1003](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1003)) ([5e783cf](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5e783cf7c716104ad113064d9e1b9aea4dc7a999)) -* initialize KRM blueprint testing ([#977](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/977)) ([2953e46](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2953e46e28f4085c733243e3a4914f52aa105f2e)) -* initialize terraform blueprint testing ([#945](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/945)) ([723b19c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/723b19ce02d0e04e1f12f117aa2fe9ba44cad5e5)) -* remove list-setter dep for kpt ([#1088](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1088)) ([bad09af](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bad09af2b45598ca08990d3bcb722560b661b3e0)) -* support complex type setup outputs ([#997](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/997)) ([39b4ef0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/39b4ef08bb23b352ea6ff7073f942ec0b5a50fc7)) -* **tft:** activate creds from setup ([#1062](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1062)) ([08c972c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/08c972c3768cae717df3f33a43785bf21b183a13)) - - ### Bug Fixes * **bptest:** compute config discovery from int test dir ([#1025](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1025)) ([bea525b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bea525b1cf5203f522bd0e9f42bce45605885c41)) diff --git a/release-please-config.json b/release-please-config.json index 08227f4519f..0a1bbae0134 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -7,7 +7,7 @@ "release-type": "go", "package-name": "blueprint-test", "component": "infra/blueprint-test", - "bump-minor-pre-major": true, + "bump-minor-pre-major": true } }, "bootstrap-sha": "f78304cebc31f2ca29d4303753a8c32ba238ab53" From fb048fe997e4083cc03ed388d7567c0ee4d7acf9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 13 Jun 2022 07:55:55 -0700 Subject: [PATCH 0107/1371] fix: minor fixes and updates for merge_dependabot_prs.sh (#1170) Co-authored-by: Bharath KKB --- .../merge_dependabot_prs/merge_dependabot_prs.sh | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh b/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh index ffb2f3a5cae..a21c96d070c 100755 --- a/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh +++ b/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh @@ -23,8 +23,6 @@ # -l [label to apply to failed checks | Default: dependabot-checks-failed] # -set -e - # Default Variables ORG="terraform-google-modules" FILTER=".[].name" @@ -72,20 +70,20 @@ for REPO in $REPOS; do # Retrieve Pull Requests PRS=`gh pr list -R $REPO -s open --json number -q '.[].number' --app dependabot` - if [ -n $PRS ]; then + if [[ -z $PRS ]]; then echo " No open Dependabot Pull Requests found for $REPO" continue - else - echo " Processing ${PRS[@]} Pull Requests" fi # Process Pull Rquests for PR in $PRS; do - echo " Processing $PR" + echo " Processing Dependabot Pull Request $PR" # Check status of Pull Request Checks - gh pr checks $PR -R $REPO > /dev/null 2>&1 + gh pr checks $PR -R $REPO if [ $? -eq 0 ]; then PPRS+=($PR) + # Remove the label, if exists + gh pr edit $PR -R $REPO --remove-label $LABEL # Approve the Pull Request gh pr review $PR -R $REPO --approve -b "LGTM" # Squash Merge the Pull Request and Delete the Branch @@ -101,12 +99,12 @@ for REPO in $REPOS; do done # List number of approved/merged PRs -if [ ! -n $PPRS ]; then +if [[ ! -z $PPRS ]]; then echo -e "\u2714 approved and merged ${PPRS[@]} Pull Requests" fi # List Failed Checks PRs -if [ ! -n $FPRS ]; then +if [[ ! -z $FPRS ]]; then echo "These Pull Requests have failed checks and have been labled with $LABEL:" for PR in ${FPRS[@]}; do echo -e "\u274c $PR: https://github.com/$REPO/pull/$PR" From 7e7e43171a1ab168f85d9882fc962380cab6cd84 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 09:57:58 -0500 Subject: [PATCH 0108/1371] chore(master): release infra/blueprint-test 0.1.0 (#1172) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 29dcbc7f57e..4132906101c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.0.1" + "infra/blueprint-test": "0.1.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 30d378b9217..f73e6eb5e19 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.0.1...infra/blueprint-test/v0.1.0) (2022-06-13) + + +### Features + +* add support for backend configuration tf blueprint test ([#1165](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1165)) ([442b49e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/442b49ebe347d2415840967200d280bdf590cbe1)) + ## [0.0.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test-v0.0.1...infra/blueprint-test/v0.0.1) (2022-06-07) From 97704a3a4a6ef883f4d045f959f30cc9a1349b85 Mon Sep 17 00:00:00 2001 From: "Stephen Lewis (Burrows)" Date: Fri, 17 Jun 2022 08:16:48 -0700 Subject: [PATCH 0109/1371] chore: gave folder viewer and security reviewer access to terraform-validator at the projects folder level (#1162) * gave folder viewer and security reviewer access to terraform-validator at the projects folder level Folder viewer is necessary because we now recursively fetch the ancestry instead of using project.getAncestry, in order to support non-project resources. Security reviewer is necessary because CAI conversion requires fetching the remote IAM state to compute the real end state. * Corrected parent type for google_folder_iam_member.magic_modules_cloudbuild_sa_security_reviewer Co-authored-by: Bharath KKB --- infra/terraform/test-org/tf-validator/iam.tf | 14 ++++++++++---- infra/terraform/test-org/tf-validator/locals.tf | 11 +++++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/infra/terraform/test-org/tf-validator/iam.tf b/infra/terraform/test-org/tf-validator/iam.tf index add323a17ba..e847df619b3 100644 --- a/infra/terraform/test-org/tf-validator/iam.tf +++ b/infra/terraform/test-org/tf-validator/iam.tf @@ -35,8 +35,14 @@ resource "google_project_iam_member" "kokoro_test_1" { member = "serviceAccount:kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com" } -resource "google_project_iam_member" "magic_modules_cloudbuild_sa" { - project = module.terraform_validator_test_project.project_id - role = "roles/editor" - member = "serviceAccount:673497134629@cloudbuild.gserviceaccount.com" +resource "google_folder_iam_member" "magic_modules_cloudbuild_sa_folder_viewer" { + folder = local.projects_folder_id + role = "roles/resourcemanager.folderViewer" + member = local.magic_modules_cloudbuild_sa +} + +resource "google_folder_iam_member" "magic_modules_cloudbuild_sa_security_reviewer" { + folder = local.projects_folder_id + role = "roles/iam.securityReviewer" + member = local.magic_modules_cloudbuild_sa } diff --git a/infra/terraform/test-org/tf-validator/locals.tf b/infra/terraform/test-org/tf-validator/locals.tf index 6b7fcd55a3d..327eabed150 100644 --- a/infra/terraform/test-org/tf-validator/locals.tf +++ b/infra/terraform/test-org/tf-validator/locals.tf @@ -20,8 +20,11 @@ locals { "roles/editor" ] - folder_id = data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"] - org_id = data.terraform_remote_state.org.outputs.org_id - billing_account = data.terraform_remote_state.org.outputs.billing_account - cft_ci_group = data.terraform_remote_state.org.outputs.cft_ci_group + magic_modules_cloudbuild_sa = "serviceAccount:673497134629@cloudbuild.gserviceaccount.com" + + projects_folder_id = data.terraform_remote_state.org.outputs.folders["ci-projects"] + folder_id = data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"] + org_id = data.terraform_remote_state.org.outputs.org_id + billing_account = data.terraform_remote_state.org.outputs.billing_account + cft_ci_group = data.terraform_remote_state.org.outputs.cft_ci_group } From 1c3c4f0fb7ce474e62a3b89287071a09a0721ed4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 17 Jun 2022 09:31:41 -0700 Subject: [PATCH 0110/1371] chore: Update release-please-config.json (#1173) --- release-please-config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release-please-config.json b/release-please-config.json index 0a1bbae0134..7aacf30e2bb 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -7,8 +7,8 @@ "release-type": "go", "package-name": "blueprint-test", "component": "infra/blueprint-test", + "pull-request-title-pattern": "chore${scope}: release blueprint-test ${version}", "bump-minor-pre-major": true } - }, - "bootstrap-sha": "f78304cebc31f2ca29d4303753a8c32ba238ab53" + } } From 6b6b34b04c28cb61686a238c382b4bc59e52ce8c Mon Sep 17 00:00:00 2001 From: "Stephen Lewis (Burrows)" Date: Wed, 22 Jun 2022 18:55:25 -0700 Subject: [PATCH 0111/1371] chore: Made tfv tests get run for release branches as well as the main branch (#1175) --- infra/terraform/test-org/ci-triggers/triggers.tf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 59daea57cda..82d3bba40bb 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -59,7 +59,7 @@ resource "google_cloudbuild_trigger" "tf_validator_main_integration_tests" { tf13 = "0.13.7" } name = "tf-validator-main-integration-tests-${each.key}" - description = "Main branch integration tests for terraform-validator with terraform ${each.value}. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + description = "Main/release branch integration tests for terraform-validator with terraform ${each.value}. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" provider = google-beta project = local.project_id @@ -67,7 +67,7 @@ resource "google_cloudbuild_trigger" "tf_validator_main_integration_tests" { owner = "GoogleCloudPlatform" name = "terraform-validator" push { - branch = "^main$" + branch = "^(main|release-.+)$" } } substitutions = { @@ -134,7 +134,7 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_unit_tests" { resource "google_cloudbuild_trigger" "tf_validator_main_unit_tests" { name = "tf-validator-main-unit-tests" - description = "Main branch unit tests for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + description = "Main/release branch unit tests for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" provider = google-beta project = local.project_id @@ -142,7 +142,7 @@ resource "google_cloudbuild_trigger" "tf_validator_main_unit_tests" { owner = "GoogleCloudPlatform" name = "terraform-validator" push { - branch = "^main$" + branch = "^(main|release-.+)$" } } substitutions = { @@ -174,7 +174,7 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_license_check" { resource "google_cloudbuild_trigger" "tf_validator_main_license_check" { name = "tf-validator-main-license-check" - description = "Main branch license check for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + description = "Main/release branch license check for terraform-validator. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" provider = google-beta project = local.project_id @@ -182,7 +182,7 @@ resource "google_cloudbuild_trigger" "tf_validator_main_license_check" { owner = "GoogleCloudPlatform" name = "terraform-validator" push { - branch = "^main$" + branch = "^(main|release-.+)$" } } From f7e75dc527a1ddc104d22ef71d42a2b2d1ee9dab Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 28 Jun 2022 11:03:04 -0500 Subject: [PATCH 0112/1371] Update tools to 1.5.3 (#1174) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d9737e1a353..4196615985b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.2.2 +TERRAFORM_VERSION := 1.2.3 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 389.0.0 +CLOUD_SDK_VERSION := 391.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 925c378bb3ae793f74f7bb9189c25978ff375f1d Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 30 Jun 2022 13:32:03 -0500 Subject: [PATCH 0113/1371] Update tools to 1.5.4 (#1177) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 4196615985b..20467eac9b4 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.2.3 +TERRAFORM_VERSION := 1.2.4 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 391.0.0 +CLOUD_SDK_VERSION := 392.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From fb47cbe28b8400488f3832ca5ed3d9a1518ac835 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 12 Jul 2022 15:45:35 -0700 Subject: [PATCH 0114/1371] chore: add branch protection support, misc fixes (#1178) --- .../test-org/ci-triggers/.terraform.lock.hcl | 26 +-- .../test-org/ci-triggers/triggers.tf | 3 + .../test-org/github/.terraform.lock.hcl | 33 ++-- infra/terraform/test-org/github/branch.tf | 99 ++++++++++ infra/terraform/test-org/github/labels.tf | 6 +- infra/terraform/test-org/github/outputs.tf | 8 +- .../test-org/org/.terraform.lock.hcl | 171 +++++++++--------- infra/terraform/test-org/org/locals.tf | 5 - infra/terraform/test-org/org/versions.tf | 4 +- 9 files changed, 231 insertions(+), 124 deletions(-) create mode 100644 infra/terraform/test-org/github/branch.tf diff --git a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl index 2ac626fb70e..34246f2b0ba 100644 --- a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl @@ -2,21 +2,21 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.23.0" + version = "4.28.0" constraints = ">= 2.18.0, < 5.0.0" hashes = [ - "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", - "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", - "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", - "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", - "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", - "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", - "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", - "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", - "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", - "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", - "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "h1:kf7kz+xRgenx1f3ROvKxV9SSqkUhXBjIvJ0rmlmOSaY=", + "zh:02049634b3dd7928628145c1993e9a6772b8229e94c0466943dd8a192c7dcf43", + "zh:113664260f56d0559c9f4c5b912dd80ee966d09ff3723fe6ae1a71fa4915fdc9", + "zh:28de139a2db9ccf280a92fa18ed41f36ea5ef4269fda4124288751eec45b6907", + "zh:303dec5be87bd935351bf991da4edff71bab9909ce410a819b3dd0849a27df8b", + "zh:579b6cf837488a0e6335c1ca0b81ce0936d2ea29c24b4fb8ba54018e81a0cabb", + "zh:77cdb315e9144739241f9ea3e55502104dece33ce0acd9694469a3a5df4e3906", + "zh:837c37d168dc557b474b5dac3b850e134779a27ee9df3f49a4427c569d0eae44", + "zh:9359bf058b95fa6b9337a3b55168517fd380e6752c383c964fb776513621aca4", + "zh:cf3cdef5ed5d4a321ffd2cac070a00ff0f8cee7bfd6a2697c494a1d06937bb67", + "zh:e4f647bd336260fc477f7ab77e48e825d49f3d4ed1391bf232b5039cfc411760", + "zh:ec3a02205594beeeedd090dd6c831a988fc0ff58fb353cc78dc6395eedf19979", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", ] } diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 82d3bba40bb..1c3af9ccacb 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -17,6 +17,7 @@ resource "google_cloudbuild_trigger" "lint_trigger" { provider = google-beta project = local.project_id + name = "${each.key}-lint-trigger" description = "Lint tests on pull request for ${each.key}" for_each = merge(local.repo_folder, local.example_foundation) github { @@ -33,6 +34,7 @@ resource "google_cloudbuild_trigger" "lint_trigger" { resource "google_cloudbuild_trigger" "int_trigger" { provider = google-beta project = local.project_id + name = "${each.key}-int-trigger" description = "Integration tests on pull request for ${each.key}" for_each = local.repo_folder github { @@ -262,6 +264,7 @@ resource "google_cloudbuild_trigger" "tf_py_test_helper_test" { resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { provider = google-beta project = local.project_id + name = "${each.key}-int-trigger-${each.value}" description = "Integration tests on pull request for example_foundations in ${each.value} mode" for_each = toset(local.example_foundation_int_test_modes) github { diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 4ae318f4b7a..3b4b8779863 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,22 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "4.26.0" + version = "4.26.1" + constraints = "~> 4.0" hashes = [ - "h1:eNvbfw3jxqfIq8dvUFSp4pUtKqCS3lrHV+oE9PQQDqc=", - "zh:054cd4788849352476e3f08a794a5ea7429d5c69b6946db1d0c09f879d622e5d", - "zh:0f0fbe979c79087e8265459b698ed78a067d4616947c3732eb4a64f219a2d8c6", - "zh:298eaa16bbddc0801c6ccb59cb381d102d89b9ff385c3f5b5bb8d1098ff63405", - "zh:330cde23d4265819f34fdb86657313114cee24d70e31c1d97e2e8e06c0145306", - "zh:3f28f3ac5a6c1058df5ca68818616dcc8a467912160e209a0cf67b3324030e75", - "zh:5021bd1c2eec7bf45c31e870ff3ff6ba41ae74322fd2368cb58d41e62c035c8a", - "zh:5d292c3f4e8fad1a2f56be918c2d06ececc2a0eaf086b062f1be752463127f17", - "zh:737e96810cf0d9bd50db7129e04e0d611231ad5cce0cf8da3126cda2fa9a0da0", - "zh:8bc6ffaf4ad9521fb1e629c5cef3f27cbcfea10405146ab2c8c89a4eeeb71a8f", - "zh:c62a553e3dff7a5bb68b5af427d296bffeb5e0cb0796351d5c61814ad044b8ef", - "zh:ce3fa79a68dad071de5e2fa63ede1ec74dd1ae4967149dd8f47cb0859c6bf2d5", - "zh:d7b37d992d6648082006850e9adf847db430a250281db7a28dbb2f3b73e0ae86", - "zh:efd545178375a6fe4c6026765f2ad6698b06474b2f493479ba5be0d653e60b8b", - "zh:f71c11d127b194cefacdba0949c93c8e8b9c2045e3a723bd47f8fc1b7ba262b6", + "h1:7in21iUvEJxqkMBojPKQcR8pIbL5I+adC+pMwYH3YDo=", + "zh:106aec70ccc00955282dbb07fc5daae9231db127bb6912c460ab7bbcc83e2497", + "zh:2b9c8ded414a7815ffe79774d428ea12c68ef1fb7b67aa95a9917c5f0e487738", + "zh:6494db79f68f1f220cffcfdf18ce1943c098a643eb610dc6cc8b27f0277069ad", + "zh:705a31d53d3417bdea1cb765fd84e9e958325de0ddd01b43a0c3175734d31098", + "zh:76389591b417d8035d7aa3b9f81883b87c8efa767fcd4968abfb30a2641df1cc", + "zh:7dcb526e515296080f724c3b2bdeb04739a46034ea382a0bd6210436d1904203", + "zh:9878bf61cca2439f32dc290245137b33cb9ca556e68e4bda36899f579e57b3f9", + "zh:9c1aabe76001fca0a16550720787b6635044846787152fb250304c369c415a8e", + "zh:bd22b65a74471589498298c5f3a5e4403b0d4be0812c257195eccc70df2dd561", + "zh:d9f36f76ce57c360bfd1d430712a4c7457fcd72aefc8914a49ba135cffd06615", + "zh:e7d2718706c904faaa935e8112fc1b4750109d070c49feaa2b4df03ebe866428", + "zh:f3eb43d54acd4c8dc0135a45621c74b58676295ac9c640ab9264f160ea0ba614", + "zh:f59490c68239bf1a3e3580be61378d605ed02b7023fb073da1ade7fa784dc674", + "zh:fdf6007b3180ccbdc9875c426f40d5ae7933f6a7b617aa2e0107226074946ea5", ] } diff --git a/infra/terraform/test-org/github/branch.tf b/infra/terraform/test-org/github/branch.tf new file mode 100644 index 00000000000..9047de9a692 --- /dev/null +++ b/infra/terraform/test-org/github/branch.tf @@ -0,0 +1,99 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +locals { + remove_branch_repos = [ + # TODO: add support for non terraform-google-modules org repos + "anthos-samples", + "terraform-example-foundation-app", + "terraform-google-network-forensics", + "terraform-google-secured-data-warehouse", + "terraform-google-secure-cicd", + "terraform-google-cloud-run", + "terraform-google-on-prem", + "terraform-google-secret-manager", + # Special CI case + "terraform-example-foundation" + ] + branch_repos = setsubtract(toset(local.repos), local.remove_branch_repos) +} + +data "github_repository" "repo" { + for_each = local.branch_repos + name = each.value +} + +data "github_team" "cft-admins" { + slug = "cft-admins" +} + +resource "github_branch_protection" "master" { + for_each = data.github_repository.repo + repository_id = each.value.node_id + pattern = "master" + + required_pull_request_reviews { + required_approving_review_count = 1 + require_code_owner_reviews = true + } + + required_status_checks { + strict = true + contexts = [ + "cla/google", + "${each.value.name}-int-trigger (cloud-foundation-cicd)", + "${each.value.name}-lint-trigger (cloud-foundation-cicd)" + ] + } + + enforce_admins = false + + push_restrictions = [ + data.github_team.cft-admins.node_id + ] + +} + +data "github_repository" "terraform-example-foundation" { + name = "terraform-example-foundation" +} + +resource "github_branch_protection" "terraform-example-foundation" { + repository_id = data.github_repository.terraform-example-foundation.node_id + pattern = "master" + + required_pull_request_reviews { + required_approving_review_count = 1 + require_code_owner_reviews = true + } + + required_status_checks { + strict = true + contexts = [ + "cla/google", + "terraform-example-foundation-master-int-trigger-default (cloud-foundation-cicd)", + "terraform-example-foundation-master-int-trigger-HubAndSpoke (cloud-foundation-cicd)", + "terraform-example-foundation-master-lint-trigger (cloud-foundation-cicd)" + ] + } + + enforce_admins = false + + push_restrictions = [ + data.github_team.cft-admins.node_id + ] + +} diff --git a/infra/terraform/test-org/github/labels.tf b/infra/terraform/test-org/github/labels.tf index ac691c1be83..a872ea3c34d 100644 --- a/infra/terraform/test-org/github/labels.tf +++ b/infra/terraform/test-org/github/labels.tf @@ -15,9 +15,13 @@ */ locals { + remove_repo_labels = [ + "anthos-samples" + ] + sub_repos_labels = setsubtract(toset(local.repos), local.remove_repo_labels) repo_labels = { for o in flatten([ - for repo in local.repos : + for repo in local.sub_repos_labels : [ for label in local.labels : { diff --git a/infra/terraform/test-org/github/outputs.tf b/infra/terraform/test-org/github/outputs.tf index e7f25a684f4..aaa16dc2485 100644 --- a/infra/terraform/test-org/github/outputs.tf +++ b/infra/terraform/test-org/github/outputs.tf @@ -14,8 +14,12 @@ * limitations under the License. */ -output "repos" { - value = local.repos +output "branch_repos" { + value = local.branch_repos +} + +output "label_repos" { + value = local.sub_repos_labels } output "labels" { diff --git a/infra/terraform/test-org/org/.terraform.lock.hcl b/infra/terraform/test-org/org/.terraform.lock.hcl index 47848cd6841..f28ee2bab74 100644 --- a/infra/terraform/test-org/org/.terraform.lock.hcl +++ b/infra/terraform/test-org/org/.terraform.lock.hcl @@ -2,121 +2,122 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/external" { - version = "1.2.0" - constraints = "~> 1.2" + version = "2.2.2" + constraints = ">= 1.2.0, < 3.0.0" hashes = [ - "h1:wDfbBn+171g9/+aWqkicrN5l1S3kuqEX4J1zyPCDsoY=", - "zh:02048f972a31ac87231dd548323ee214cf04944b289c5d9edde82ffbde5b8386", - "zh:06fcf617521916883c5e3cbfa533dded6725246123f18355576a07f40f2ae4b0", - "zh:325dbc165665b3bd31164168bb65bf1f364c4a463cc8a2f8e3639b9738d9b16e", - "zh:5cf47495ec9ec1953f2a94875b23a4f44ff810422f1e63b5ef849fe1138e7aa1", - "zh:6cb3e94f4e795892005328e9a3aa12415b03ce99d6b7c92b3122f4204bb0ee73", - "zh:6d731e12c616434886f007cad68d9313a178ddfb0360de84236fc5593f443c10", - "zh:9a269a735d9e0c3b1390e6319df46ee2d0afc057c32a899ffc885df78d012123", - "zh:a91b5d526011f5ee56461b1d7a9fcb230aab6c38c01facb73ecd98c5e958204e", - "zh:aa5f19ba3040a4a10f4c5290d075544d7cdad4b90fb10a469a1d40cbaf4607e5", - "zh:c986125fda03444ac8c964e999c48db450b452e0b4edf4542e3bee97ca951cbd", - "zh:fddff8f179925c1c76e58302ddcbead9474ea52c6e8141f5ba73bb137ca2ebc5", - "zh:fe2ef9dcc45291d0582bbf1f5936522682cf2e03a3811a8e6968f1ba14d91f25", + "h1:e7RpnZ2PbJEEPnfsg7V0FNwbfSk0/Z3FdrLsXINBmDY=", + "zh:0b84ab0af2e28606e9c0c1289343949339221c3ab126616b831ddb5aaef5f5ca", + "zh:10cf5c9b9524ca2e4302bf02368dc6aac29fb50aeaa6f7758cce9aa36ae87a28", + "zh:56a016ee871c8501acb3f2ee3b51592ad7c3871a1757b098838349b17762ba6b", + "zh:719d6ef39c50e4cffc67aa67d74d195adaf42afcf62beab132dafdb500347d39", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:7fbfc4d37435ac2f717b0316f872f558f608596b389b895fcb549f118462d327", + "zh:8ac71408204db606ce63fe8f9aeaf1ddc7751d57d586ec421e62d440c402e955", + "zh:a4cacdb06f114454b6ed0033add28006afa3f65a0ea7a43befe45fc82e6809fb", + "zh:bb5ce3132b52ae32b6cc005bc9f7627b95259b9ffe556de4dad60d47d47f21f0", + "zh:bb60d2976f125ffd232a7ccb4b3f81e7109578b23c9c6179f13a11d125dca82a", + "zh:f9540ecd2e056d6e71b9ea5f5a5cf8f63dd5c25394b9db831083a9d4ea99b372", + "zh:ffd998b55b8a64d4335a090b6956b4bf8855b290f7554dd38db3302de9c41809", ] } provider "registry.terraform.io/hashicorp/google" { - version = "4.23.0" - constraints = ">= 3.19.0, < 5.0.0" + version = "4.28.0" + constraints = ">= 3.19.0, >= 3.39.0, >= 3.43.0, >= 3.45.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" hashes = [ - "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", - "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", - "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", - "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", - "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", - "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", - "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", - "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", - "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", - "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", - "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "h1:jjNvhmeP9hf97J7C69ntwWEctx/1eJFK+fFZqzbosr0=", + "zh:17664192fbeb733d6d6cfa17fbd1c54e6f1614f635f48adfae17557e121b63eb", + "zh:2993a3ba417c576ca9c6adccb6a6e914b4dedd3f91a735fd14ab8910936d8c11", + "zh:452323359fd64dc0fbf96da8c1df1df57cacef72cf2615631662bdec1d73d94e", + "zh:492c1d1bfbd9bef2a30fab0096ae642ceeeee81499cf5aa9f4505a884b0855a3", + "zh:611875b0246bdbd8815f8e81e744e31466559fec3b4566c9d2f3d1fd54c20292", + "zh:63c5084e1ac50165da1feebf2f51af3c8a7b61f817861418850b2b59b010b604", + "zh:6efb784223405839aa22fc6e40e37e08dd7ba37310e327dea1731299e5c67104", + "zh:ac51b5555bfdee282885475831bdc336f42294687e887f91cd339f15a4f69bc1", + "zh:c98e971f99f43aea9e0363cdd478e3b19f79b4553357a089bb10ba7ab897a932", + "zh:e9c29205674657f7b31f352a680a17262a797150bcbe76b26939d5cb39d19199", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + "zh:f968998e7690cd508c1f7847d7fa3ba2ae448d70e94414ada85c1cee81b3bcd9", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.23.0" - constraints = ">= 3.19.0, < 5.0.0" + version = "4.28.0" + constraints = ">= 3.19.0, >= 3.43.0, >= 3.50.0, ~> 4.11, < 5.0.0" hashes = [ - "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", - "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", - "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", - "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", - "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", - "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", - "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", - "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", - "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", - "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", - "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "h1:kf7kz+xRgenx1f3ROvKxV9SSqkUhXBjIvJ0rmlmOSaY=", + "zh:02049634b3dd7928628145c1993e9a6772b8229e94c0466943dd8a192c7dcf43", + "zh:113664260f56d0559c9f4c5b912dd80ee966d09ff3723fe6ae1a71fa4915fdc9", + "zh:28de139a2db9ccf280a92fa18ed41f36ea5ef4269fda4124288751eec45b6907", + "zh:303dec5be87bd935351bf991da4edff71bab9909ce410a819b3dd0849a27df8b", + "zh:579b6cf837488a0e6335c1ca0b81ce0936d2ea29c24b4fb8ba54018e81a0cabb", + "zh:77cdb315e9144739241f9ea3e55502104dece33ce0acd9694469a3a5df4e3906", + "zh:837c37d168dc557b474b5dac3b850e134779a27ee9df3f49a4427c569d0eae44", + "zh:9359bf058b95fa6b9337a3b55168517fd380e6752c383c964fb776513621aca4", + "zh:cf3cdef5ed5d4a321ffd2cac070a00ff0f8cee7bfd6a2697c494a1d06937bb67", + "zh:e4f647bd336260fc477f7ab77e48e825d49f3d4ed1391bf232b5039cfc411760", + "zh:ec3a02205594beeeedd090dd6c831a988fc0ff58fb353cc78dc6395eedf19979", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", ] } provider "registry.terraform.io/hashicorp/kubernetes" { - version = "2.11.0" + version = "2.12.1" + constraints = "~> 2.0" hashes = [ - "h1:pJiAJwZKUaoAJ4x+3ONJkwEVkjrwGROCGFgj7noPO58=", - "zh:143a19dd0ea3b07fc5e3d9231f3c2d01f92894385c98a67327de74c76c715843", - "zh:1fc757d209e09c3cf7848e4274daa32408c07743698fbed10ee52a4a479b62b6", - "zh:22dfebd0685749c51a8f765d51a1090a259778960ac1cd4f32021a325b2b9b72", - "zh:3039b3b76e870cd8fc404cf75a29c66b171c6ba9b6182e131b6ae2ca648ec7c0", - "zh:3af0a15562fcab4b5684b18802e0239371b2b8ff9197ed069ff4827f795a002b", - "zh:50aaf20336d1296a73315adb66f7687f75bd5c6b1f93a894b95c75cc142810ec", - "zh:682064fabff895ec351860b4fe0321290bbbb17c2a410b62c9bea0039400650e", - "zh:70ac914d5830b3371a2679d8f77cc20c419a6e12925145afae6c977c8eb90934", - "zh:710aa02cccf7b0f3fb50880d6d2a7a8b8c9435248666616844ba71f74648cddc", - "zh:88e418118cd5afbdec4984944c7ab36950bf48e8d3e09e090232e55eecfb470b", - "zh:9cef159377bf23fa331f8724fdc6ce27ad39a217a4bae6df3b1ca408fc643da6", + "h1:6ZgqegUao9WcfVzYg7taxCQOQldTmMVw0HqjG5S46OY=", + "zh:1ecb2adff52754fb4680c7cfe6143d1d8c264b00bb0c44f07f5583b1c7f978b8", + "zh:1fbd155088cd5818ad5874e4d59ccf1801e4e1961ac0711442b963315f1967ab", + "zh:29e927c7c8f112ee0e8ab70e71b498f2f2ae6f47df1a14e6fd0fdb6f14b57c00", + "zh:42c2f421da6b5b7c997e42aa04ca1457fceb13dd66099a057057a0812b680836", + "zh:522a7bccd5cd7acbb4ec3ef077d47f4888df7e59ff9f3d598b717ad3ee4fe9c9", + "zh:b45d8dc5dcbc5e30ae570d0c2e198505f47d09098dfd5f004871be8262e6ec1e", + "zh:c3ea0943f2050001c7d6a7115b9b990f148b082ebfc4ff3c2ff3463a8affcc4a", + "zh:f111833a64e06659d2e21864de39b7b7dec462615294d02f04c777956742a930", + "zh:f182dba5707b90b0952d5984c23f7a2da3baa62b4d71e78df7759f16cc88d957", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:f76655a68680887daceabd947b2f68e2103f5bbec49a2bc29530f82ab8e3bca3", + "zh:fadb77352caa570bd3259dfb59c31db614d55bc96df0ff15a3c0cd2e685678b9", ] } provider "registry.terraform.io/hashicorp/null" { - version = "2.1.2" - constraints = "~> 2.1" + version = "3.1.1" + constraints = ">= 2.1.0, < 4.0.0" hashes = [ - "h1:CFnENdqQu4g3LJNevA32aDxcUz2qGkRGQpFfkI8TCdE=", - "zh:0cc7236c1fbf971b8bad1540a7d0c5ac4579248239fd1034c023b0b660a8d1d5", - "zh:16fc2d9b10cf9e5123bf956e7032c338cc93a03be1ca2e9f3d3b7014c0e866c7", - "zh:1e26465ff40ded59cef1a9e745752eef9744471e69094d12f8bc40a060e8cdb9", - "zh:3c7afd28076245f455d4348af6c124b73409722be4a73680d4e4709a4f25ea91", - "zh:4190a92567efaa444527f19b28d65fac1a01aeba907013b5dceacd9ba2a23709", - "zh:677963437316b088fc1aac70fe7d608d2917c46530c4a25ec86a43e9acaf2811", - "zh:69fe15f6b851ff82700bc749c50a9299770515617e677c18cba2cb697daaff36", - "zh:6b505cc60cc1494e1cab61590bca127b06dd894d0b2a7dcacd23862bce1f492b", - "zh:719aa11ad7be974085af595089478eb24d5a021bc7b08364fa6745d9eb473dac", - "zh:7375b02189e14efbfaab994cd05d81e3ff8e46041fae778598b3903114093a3e", - "zh:c406573b2084a08f8faa0451923fbeb1ca6c5a5598bf039589ec2db13aacc622", - "zh:fb11299a3b20711595713d126abbbe78c554eb5995b02db536e9253686798fb6", + "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", + "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", + "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", + "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", + "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", + "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", + "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", + "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", + "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", + "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", + "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.2.0" - constraints = ">= 2.3.1" + version = "3.3.2" + constraints = ">= 2.2.0, >= 2.3.1, < 4.0.0" hashes = [ - "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", - "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", - "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", - "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", - "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "h1:H5V+7iXol/EHB2+BUMzGlpIiCOdV74H8YjzCxnSAWcg=", + "zh:038293aebfede983e45ee55c328e3fde82ae2e5719c9bd233c324cfacc437f9c", + "zh:07eaeab03a723d83ac1cc218f3a59fceb7bbf301b38e89a26807d1c93c81cef8", + "zh:427611a4ce9d856b1c73bea986d841a969e4c2799c8ac7c18798d0cc42b78d32", + "zh:49718d2da653c06a70ba81fd055e2b99dfd52dcb86820a6aeea620df22cd3b30", + "zh:5574828d90b19ab762604c6306337e6cd430e65868e13ef6ddb4e25ddb9ad4c0", + "zh:7222e16f7833199dabf1bc5401c56d708ec052b2a5870988bc89ff85b68a5388", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", - "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", - "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", - "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", - "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", - "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", - "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + "zh:b1b2d7d934784d2aee98b0f8f07a8ccfc0410de63493ae2bf2222c165becf938", + "zh:b8f85b6a20bd264fcd0814866f415f0a368d1123cd7879c8ebbf905d370babc8", + "zh:c3813133acc02bbebddf046d9942e8ba5c35fc99191e3eb057957dafc2929912", + "zh:e7a41dbc919d1de800689a81c240c27eec6b9395564630764ebb323ea82ac8a9", + "zh:ee6d23208449a8eaa6c4f203e33f5176fa795b4b9ecf32903dffe6e2574732c2", ] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index fb4bb06865b..9ac93348d62 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -45,15 +45,12 @@ locals { "pubsub", "migrate", "bootstrap", - "redis", "datalab", - "mariadb", "jenkins", "container-vm", "lb", "vm", "memorystore", - "airflow", "service-accounts", "cloud-storage", "sql-db", @@ -68,10 +65,8 @@ locals { "bastion-host", "org-policy", "log-export", - "on-prem", "cloud-dns", "gsuite-export", - "secret", "terraform-validator", "lb-http", "gcloud", diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index bfc1c8352a6..eb2cdaab017 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -18,7 +18,7 @@ terraform { required_version = "~> 1.2.0" required_providers { external = { - version = "~> 1.2, < 3.0" + version = ">= 1.2, < 3.0" } google = { version = ">= 3.19, < 5.0" @@ -27,7 +27,7 @@ terraform { version = ">= 3.19, < 5.0" } null = { - version = "~> 2.1, < 4.0" + version = ">= 2.1, < 4.0" } random = { version = ">= 2.3.1, < 4.0" From 443b95589b98a57f97b535153d9a784146b6ac65 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 13 Jul 2022 14:52:22 -0500 Subject: [PATCH 0115/1371] Update tools to 1.5.5 (#1181) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 20467eac9b4..110bb2e6276 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.2.4 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 392.0.0 +CLOUD_SDK_VERSION := 393.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 7bc6d491454360c9cb42925ac040adfd1cd8d732 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 13 Jul 2022 12:59:58 -0700 Subject: [PATCH 0116/1371] chore: rename terraform-example-foundation checks (#1180) --- infra/terraform/test-org/ci-triggers/triggers.tf | 2 +- infra/terraform/test-org/github/branch.tf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 1c3af9ccacb..525c6c7b08e 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -264,7 +264,7 @@ resource "google_cloudbuild_trigger" "tf_py_test_helper_test" { resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { provider = google-beta project = local.project_id - name = "${each.key}-int-trigger-${each.value}" + name = "terraform-example-foundation-int-trigger-${each.value}" description = "Integration tests on pull request for example_foundations in ${each.value} mode" for_each = toset(local.example_foundation_int_test_modes) github { diff --git a/infra/terraform/test-org/github/branch.tf b/infra/terraform/test-org/github/branch.tf index 9047de9a692..189e1bcc8b7 100644 --- a/infra/terraform/test-org/github/branch.tf +++ b/infra/terraform/test-org/github/branch.tf @@ -84,9 +84,9 @@ resource "github_branch_protection" "terraform-example-foundation" { strict = true contexts = [ "cla/google", - "terraform-example-foundation-master-int-trigger-default (cloud-foundation-cicd)", - "terraform-example-foundation-master-int-trigger-HubAndSpoke (cloud-foundation-cicd)", - "terraform-example-foundation-master-lint-trigger (cloud-foundation-cicd)" + "terraform-example-foundation-int-trigger-default (cloud-foundation-cicd)", + "terraform-example-foundation-int-trigger-HubAndSpoke (cloud-foundation-cicd)", + "terraform-example-foundation-lint-trigger (cloud-foundation-cicd)" ] } From 29e0c0137472bb1e027dac839b4da5c1388d82a7 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 13 Jul 2022 15:03:42 -0500 Subject: [PATCH 0117/1371] chore: Remove tf pytest helper triggers (#1182) Co-authored-by: Andrew Peabody --- .../test-org/ci-triggers/triggers.tf | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 525c6c7b08e..6b5788ff558 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -226,40 +226,6 @@ resource "google_cloudbuild_trigger" "forseti_int" { filename = "build/int.cloudbuild.yaml" } -resource "google_cloudbuild_trigger" "tf_py_test_helper_lint" { - provider = google-beta - project = local.project_id - description = "Lint tests on pull request for terraform-python-testing-helper" - github { - owner = "GoogleCloudPlatform" - name = "terraform-python-testing-helper" - pull_request { - branch = ".*" - } - } - - filename = ".ci/cloudbuild.lint.yaml" -} - -resource "google_cloudbuild_trigger" "tf_py_test_helper_test" { - provider = google-beta - project = local.project_id - description = "Test on pull request for terraform-python-testing-helper" - github { - owner = "GoogleCloudPlatform" - name = "terraform-python-testing-helper" - pull_request { - branch = ".*" - } - } - - filename = ".ci/cloudbuild.test.yaml" - included_files = [ - "**/*.tf", - "**/*.py" - ] -} - # example-foundation-int tests resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { provider = google-beta From bb403a240d20086e4a3f552b68664ebdc67f541f Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 14 Jul 2022 08:33:10 -0500 Subject: [PATCH 0118/1371] Update Tools to 1.5.6 (#1184) Update tools to 1.5.6 --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 110bb2e6276..d286ea4a9bb 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,7 +13,7 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.2.4 +TERRAFORM_VERSION := 1.2.5 TERRAFORM_VALIDATOR_VERSION := 0.13.0 CLOUD_SDK_VERSION := 393.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -32,7 +32,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From f5c2433232d7966085b238416a3a13438b6a0ce0 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 14 Jul 2022 08:50:24 -0700 Subject: [PATCH 0119/1371] chore: exclude .github and docs from CI-trigger (#1183) --- infra/terraform/test-org/ci-triggers/triggers.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 6b5788ff558..757d3981b64 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -52,7 +52,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { } filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", ".gitignore"] + ignored_files = ["**/*.md", ".gitignore", "/.github/", "/docs/"] } resource "google_cloudbuild_trigger" "tf_validator_main_integration_tests" { @@ -248,5 +248,5 @@ resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { } filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", ".gitignore"] + ignored_files = ["**/*.md", ".gitignore", "/.github/", "/docs/"] } From 58090b55c0b20a5d2211e78845b27e912f33b652 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 21 Jul 2022 01:00:35 -0500 Subject: [PATCH 0120/1371] Update Tools to 1.5.7 (#1188) Update tools to 1.5.7 --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d286ea4a9bb..5a5f4b98d4f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.2.5 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 393.0.0 +CLOUD_SDK_VERSION := 394.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -27,12 +27,12 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.17 +KPT_VERSION := 1.0.0-beta.18 CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From d9b14d2613bf2515a125a3070d2eff7902a4a1e3 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 20 Jul 2022 23:01:30 -0700 Subject: [PATCH 0121/1371] feat: add gke-gcloud-auth-plugin to images (#1189) * feat: add gke-gcloud-auth-plugin * feat: add yamllint to krm image Co-authored-by: Bharath KKB --- infra/build/developer-tools-krm/Dockerfile | 2 +- infra/build/developer-tools/build/install_cloud_sdk.sh | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index 0766babc0c5..9a7da6e2080 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -15,7 +15,7 @@ ARG BASE_IMAGE_VERSION FROM cft/developer-tools:$BASE_IMAGE_VERSION -RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm +RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint # Additional go tooling RUN GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.40.1 diff --git a/infra/build/developer-tools/build/install_cloud_sdk.sh b/infra/build/developer-tools/build/install_cloud_sdk.sh index d8382ee0f7b..876ebc75dbe 100755 --- a/infra/build/developer-tools/build/install_cloud_sdk.sh +++ b/infra/build/developer-tools/build/install_cloud_sdk.sh @@ -34,5 +34,8 @@ gcloud config set survey/disable_prompts true gcloud components install beta --quiet gcloud components install alpha --quiet +# https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke +gcloud components install gke-gcloud-auth-plugin --quiet + gcloud --version gsutil version -l From 5d1b6b9afe29233362630e7bae88c1ff56fe243a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 25 Jul 2022 09:05:33 -0700 Subject: [PATCH 0122/1371] chore: update CI-trigger ignore filter (#1185) --- infra/terraform/test-org/ci-triggers/triggers.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 757d3981b64..ce8dabaef8f 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -52,7 +52,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { } filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", ".gitignore", "/.github/", "/docs/"] + ignored_files = ["**/*.md", ".gitignore", ".github/**"] } resource "google_cloudbuild_trigger" "tf_validator_main_integration_tests" { @@ -248,5 +248,5 @@ resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { } filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", ".gitignore", "/.github/", "/docs/"] + ignored_files = ["**/*.md", ".gitignore", ".github/**"] } From 12de7c67553c0c509c8ccec98de24a0675010f71 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 26 Jul 2022 08:58:48 -0700 Subject: [PATCH 0123/1371] fix: pin KPT to v1.0.0-beta.15 (#1194) --- .github/workflows/update-tooling.yml | 3 ++- infra/build/Makefile | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index a96c2040aef..ae1d87e7131 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -19,7 +19,8 @@ jobs: run: | PR_UPDATE_BODY="" newline=$'\n' - tools=("TERRAFORM" "CLOUD_SDK" "KPT" "CFT_CLI") + # Skip "KPT" till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI") for tool in ${tools[@]} do diff --git a/infra/build/Makefile b/infra/build/Makefile index 5a5f4b98d4f..fa210c8a058 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -27,12 +27,13 @@ BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 -KPT_VERSION := 1.0.0-beta.18 +# Hold KPT at 1.0.0-beta.15 till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 +KPT_VERSION := 1.0.0-beta.15 CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From b1792f8fe4fcf4920588b608f0489042394c81c5 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 27 Jul 2022 08:16:31 -0700 Subject: [PATCH 0124/1371] chore: add data-fusion to terraform config (#1196) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 9ac93348d62..050c29bd1af 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -82,6 +82,7 @@ locals { "cloud-foundation-training", # Not module "cloud-router", "group", + "data-fusion", ] gcp_org_modules = [ "example-foundation-app", # Not module From d040872f5dc9e2b58cd98457f77d9278fe593162 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 27 Jul 2022 11:10:49 -0500 Subject: [PATCH 0125/1371] Update Tools to 1.5.9 (#1197) Update tools to 1.5.9 Co-authored-by: Bharath KKB --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index fa210c8a058..1b08bf24b04 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.2.5 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 394.0.0 +CLOUD_SDK_VERSION := 395.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -33,7 +33,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From e3179dfc63abf2fd7cf291b24531abbe3cba02ff Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Thu, 28 Jul 2022 15:50:04 -0300 Subject: [PATCH 0126/1371] feat: Add support for terraform vet in blueprint test (#1191) * add support to gcloud beta terraform vet * refactor gcloud.TerraformVet * tidy code * add test for gcloud terraform vet * unify terraform vet tests * code review fixes Co-authored-by: Bharath KKB --- infra/blueprint-test/.gitignore | 1 + .../policy-library/lib/constraints.rego | 36 +++++++ .../examples/policy-library/lib/util.rego | 46 +++++++++ .../policy-library/lib/util_test.rego | 51 ++++++++++ .../serviceusage_allow_basic_apis.yaml | 31 ++++++ .../gcp_serviceusage_allowed_services_v1.yaml | 99 +++++++++++++++++++ infra/blueprint-test/examples/tf_vet/main.tf | 22 +++++ .../examples/tf_vet/variables.tf | 25 +++++ infra/blueprint-test/pkg/gcloud/gcloud.go | 27 ++++- infra/blueprint-test/pkg/tft/terraform.go | 34 +++++++ infra/blueprint-test/pkg/utils/files.go | 14 +++ infra/blueprint-test/test/tfvet_test.go | 79 +++++++++++++++ 12 files changed, 460 insertions(+), 5 deletions(-) create mode 100644 infra/blueprint-test/examples/policy-library/lib/constraints.rego create mode 100644 infra/blueprint-test/examples/policy-library/lib/util.rego create mode 100644 infra/blueprint-test/examples/policy-library/lib/util_test.rego create mode 100644 infra/blueprint-test/examples/policy-library/policies/constraints/serviceusage_allow_basic_apis.yaml create mode 100644 infra/blueprint-test/examples/policy-library/policies/templates/gcp_serviceusage_allowed_services_v1.yaml create mode 100644 infra/blueprint-test/examples/tf_vet/main.tf create mode 100644 infra/blueprint-test/examples/tf_vet/variables.tf create mode 100644 infra/blueprint-test/test/tfvet_test.go diff --git a/infra/blueprint-test/.gitignore b/infra/blueprint-test/.gitignore index c69c16a7bf0..73816b2b97f 100644 --- a/infra/blueprint-test/.gitignore +++ b/infra/blueprint-test/.gitignore @@ -44,6 +44,7 @@ crash.log **/Gemfile.lock test/fixtures/shared/terraform.tfvars +test/setup/simple_tf_module/terraform.tfvars test/integration/gcloud/config.sh test/integration/tmp diff --git a/infra/blueprint-test/examples/policy-library/lib/constraints.rego b/infra/blueprint-test/examples/policy-library/lib/constraints.rego new file mode 100644 index 00000000000..8139e8219f5 --- /dev/null +++ b/infra/blueprint-test/examples/policy-library/lib/constraints.rego @@ -0,0 +1,36 @@ +# +# Copyright 2021 Google LLC +# +# 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 validator.gcp.lib + +# Function to fetch the constraint spec +# Usage: +# get_constraint_params(constraint, params) + +get_constraint_params(constraint) = params { + params := constraint.spec.parameters +} + +# Function to fetch constraint info +# Usage: +# get_constraint_info(constraint, info) + +get_constraint_info(constraint) = info { + info := { + "name": constraint.metadata.name, + "kind": constraint.kind, + } +} diff --git a/infra/blueprint-test/examples/policy-library/lib/util.rego b/infra/blueprint-test/examples/policy-library/lib/util.rego new file mode 100644 index 00000000000..292cf94f832 --- /dev/null +++ b/infra/blueprint-test/examples/policy-library/lib/util.rego @@ -0,0 +1,46 @@ +# +# Copyright 2021 Google LLC +# +# 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 validator.gcp.lib + +# has_field returns whether an object has a field +has_field(object, field) { + object[field] +} + +# False is a tricky special case, as false responses would create an undefined document unless +# they are explicitly tested for +has_field(object, field) { + object[field] == false +} + +has_field(object, field) = false { + not object[field] + not object[field] == false +} + +# get_default returns the value of an object's field or the provided default value. +# It avoids creating an undefined state when trying to access an object attribute that does +# not exist +get_default(object, field, _default) = output { + has_field(object, field) + output = object[field] +} + +get_default(object, field, _default) = output { + has_field(object, field) == false + output = _default +} diff --git a/infra/blueprint-test/examples/policy-library/lib/util_test.rego b/infra/blueprint-test/examples/policy-library/lib/util_test.rego new file mode 100644 index 00000000000..9e7eb00c1b1 --- /dev/null +++ b/infra/blueprint-test/examples/policy-library/lib/util_test.rego @@ -0,0 +1,51 @@ +# +# Copyright 2021 Google LLC +# +# 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 validator.gcp.lib + +# has_field tests +test_has_field_exists { + obj := {"a": "b"} + true == has_field(obj, "a") +} + +# False is a tricky special case, as false responses would create an undefined document unless +# they are explicitly tested for +test_has_field_false { + obj := {"a": false} + true == has_field(obj, "a") +} + +test_has_field_no_field { + obj := {} + false == has_field(obj, "a") +} + +# get_default_tests +test_get_default_exists { + obj := {"a": "b"} + "b" == get_default(obj, "a", "q") +} + +test_get_default_not_exists { + obj := {} + "q" == get_default(obj, "a", "q") +} + +test_get_default_has_false { + obj := {"a": false} + false == get_default(obj, "a", "b") +} diff --git a/infra/blueprint-test/examples/policy-library/policies/constraints/serviceusage_allow_basic_apis.yaml b/infra/blueprint-test/examples/policy-library/policies/constraints/serviceusage_allow_basic_apis.yaml new file mode 100644 index 00000000000..a183143bc86 --- /dev/null +++ b/infra/blueprint-test/examples/policy-library/policies/constraints/serviceusage_allow_basic_apis.yaml @@ -0,0 +1,31 @@ +# Copyright 2021 Google LLC +# +# 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 +# +# https://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. + +apiVersion: constraints.gatekeeper.sh/v1alpha1 +kind: GCPServiceUsageConstraintV1 +metadata: + name: allow_basic_set_of_apis + annotations: + description: Only a basic set of APIS + bundles.validator.forsetisecurity.org/healthcare-baseline-v1: security +spec: + severity: high + match: + target: # {"$ref":"#/definitions/io.k8s.cli.setters.target"} + - "organizations/**" + exclude: [] + parameters: + mode: allow + services: + - "cloudresourcemanager.googleapis.com" diff --git a/infra/blueprint-test/examples/policy-library/policies/templates/gcp_serviceusage_allowed_services_v1.yaml b/infra/blueprint-test/examples/policy-library/policies/templates/gcp_serviceusage_allowed_services_v1.yaml new file mode 100644 index 00000000000..5ff84ce3063 --- /dev/null +++ b/infra/blueprint-test/examples/policy-library/policies/templates/gcp_serviceusage_allowed_services_v1.yaml @@ -0,0 +1,99 @@ +# Copyright 2021 Google LLC +# +# 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 +# +# https://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. + +apiVersion: templates.gatekeeper.sh/v1alpha1 +kind: ConstraintTemplate +metadata: + name: gcp-serviceusage-allowed-services-v1 +spec: + crd: + spec: + names: + kind: GCPServiceUsageConstraintV1 + validation: + openAPIV3Schema: + properties: + mode: + description: "Enforcement mode, defaults to allow" + type: string + enum: [allow, deny] + services: + description: "List of APIs to enforce on e.g compute.googleapis.com" + type: array + items: + type: string + targets: + validation.gcp.forsetisecurity.org: + rego: | + # + # Copyright 2021 Google LLC + # + # 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 + # + # https://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 templates.gcp.GCPServiceUsageConstraintV1 + + import data.validator.gcp.lib as lib + + deny[{ + "msg": message, + "details": metadata, + }] { + constraint := input.constraint + lib.get_constraint_params(constraint, params) + asset := input.asset + asset.asset_type == "serviceusage.googleapis.com/Service" + + service_usage := asset.resource.data + parent := service_usage.parent + state := service_usage.state + service := service_usage.name + + mode := lib.get_default(params, "mode", "allow") + + state == "ENABLED" + matches_found = [m | m = params.services[_]; m == service] + target_match_count(mode, desired_count) + count(matches_found) != desired_count + + message := sprintf("%v violates a service constraint", [asset.name]) + metadata := { + "resource": asset.name, + "mode": mode, + "service": service, + } + } + + ########################### + # Rule Utilities + ########################### + + target_match_count(mode) = 0 { + mode == "deny" + } + + target_match_count(mode) = 1 { + mode == "allow" + } + #ENDINLINE diff --git a/infra/blueprint-test/examples/tf_vet/main.tf b/infra/blueprint-test/examples/tf_vet/main.tf new file mode 100644 index 00000000000..97e8cffbd58 --- /dev/null +++ b/infra/blueprint-test/examples/tf_vet/main.tf @@ -0,0 +1,22 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +resource "google_project_service" "project" { + project = var.project_id + service = var.service + disable_dependent_services = false + disable_on_destroy = false +} diff --git a/infra/blueprint-test/examples/tf_vet/variables.tf b/infra/blueprint-test/examples/tf_vet/variables.tf new file mode 100644 index 00000000000..aad6fb7457d --- /dev/null +++ b/infra/blueprint-test/examples/tf_vet/variables.tf @@ -0,0 +1,25 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +variable "project_id" { + description = "Project to enable the service." + type = string +} + +variable "service" { + description = "Service to be enabled." + type = string +} diff --git a/infra/blueprint-test/pkg/gcloud/gcloud.go b/infra/blueprint-test/pkg/gcloud/gcloud.go index 788a2663f0c..6df53e863fb 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud.go @@ -79,6 +79,15 @@ func newCmdConfig(opts ...cmdOption) (*CmdCfg, error) { // RunCmd executes a gcloud command and fails test if there are any errors. func RunCmd(t testing.TB, cmd string, opts ...cmdOption) string { + op, err := RunCmdE(t, cmd, opts...) + if err != nil { + t.Fatal(err) + } + return op +} + +// RunCmdE executes a gcloud command and return output. +func RunCmdE(t testing.TB, cmd string, opts ...cmdOption) (string, error) { gOpts, err := newCmdConfig(opts...) if err != nil { t.Fatal(err) @@ -90,11 +99,7 @@ func RunCmd(t testing.TB, cmd string, opts ...cmdOption) string { Args: append(args, gOpts.commonArgs...), Logger: gOpts.logger, } - op, err := shell.RunCommandAndGetStdOutE(t, gcloudCmd) - if err != nil { - t.Fatal(err) - } - return op + return shell.RunCommandAndGetStdOutE(t, gcloudCmd) } // Run executes a gcloud command and returns value as gjson.Result. @@ -107,6 +112,18 @@ func Run(t testing.TB, cmd string, opts ...cmdOption) gjson.Result { return gjson.Parse(op) } +// TFVet executes gcloud beta terraform vet +func TFVet(t testing.TB, planFilePath string, policyLibraryPath string) gjson.Result { + op, err := RunCmdE(t, fmt.Sprintf("beta terraform vet %s --policy-library=%s", planFilePath, policyLibraryPath)) + if err != nil && !(strings.Contains(err.Error(), "Validating resources") && strings.Contains(err.Error(), "done")){ + t.Fatal(err) + } + if !gjson.Valid(op) { + t.Fatalf("Error parsing output, invalid json: %s", op) + } + return gjson.Parse(op) +} + // RunWithCmdOptsf executes a gcloud command and returns value as gjson.Result. // // RunWithCmdOptsf(t, ops.., "projects list --filter=%s", "projectId") diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index af9c4fdbe11..698e5fd9ae2 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -22,6 +22,7 @@ import ( "fmt" "os" "path" + "path/filepath" "strings" gotest "testing" @@ -46,6 +47,8 @@ type TFBlueprintTest struct { backendConfig map[string]interface{} // backend configuration for terraform init migrateState bool // suppress user confirmation in a migration in terraform init setupDir string // optional directory containing applied TF configs to import outputs as variables for the test + policyLibraryPath string // optional absolute path to directory containing policy library constraints + planFilePath string // path to the plan file used in Teraform plan and show vars map[string]interface{} // variables to pass to Terraform as flags logger *logger.Logger // custom logger t testing.TB // TestingT or TestingB @@ -105,6 +108,12 @@ func WithSetupPath(setupPath string) tftOption { } } +func WithPolicyLibraryPath(policyLibraryPath string) tftOption { + return func(f *TFBlueprintTest) { + f.policyLibraryPath = policyLibraryPath + } +} + func WithVars(vars map[string]interface{}) tftOption { return func(f *TFBlueprintTest) { f.vars = vars @@ -154,6 +163,11 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { } tft.tfDir = tfdir } + + //set planFilePath + if tft.shouldRunTerraformVet() { + tft.planFilePath = filepath.Join(os.TempDir(), "plan.tfplan") + } // discover test config var err error tft.BlueprintTestConfig, err = discovery.GetTestConfig(path.Join(tft.tfDir, discovery.DefaultTestConfigFilename)) @@ -200,6 +214,7 @@ func (b *TFBlueprintTest) GetTFOptions() *terraform.Options { Vars: b.vars, Logger: b.logger, BackendConfig: b.backendConfig, + PlanFilePath: b.planFilePath, MigrateState: b.migrateState, }) } @@ -262,6 +277,11 @@ func (b *TFBlueprintTest) ShouldSkip() bool { return b.Spec.Skip } +// shouldRunTerraformVet checks if terraform vet should be executed +func (b *TFBlueprintTest) shouldRunTerraformVet() bool { + return b.policyLibraryPath != "" +} + // AutoDiscoverAndTest discovers TF config from examples/fixtures and runs tests. func AutoDiscoverAndTest(t *gotest.T) { configs := discovery.FindTestConfigs(t, "./") @@ -318,8 +338,22 @@ func (b *TFBlueprintTest) DefaultInit(assert *assert.Assertions) { })) } +// Vet runs TF plan, TF show, and gcloud terraform vet on a blueprint. +func (b *TFBlueprintTest) Vet(assert *assert.Assertions) { + terraform.Plan(b.t, b.GetTFOptions()) + jsonPlan := terraform.Show(b.t, b.GetTFOptions()) + filepath, err := utils.WriteTmpFileWithExtension(jsonPlan, "json") + defer os.Remove(filepath) + assert.NoError(err) + results := gcloud.TFVet(b.t, filepath, b.policyLibraryPath).Array() + assert.Empty(results, "Should have no Terraform Vet violations") +} + // DefaultApply runs TF apply on a blueprint. func (b *TFBlueprintTest) DefaultApply(assert *assert.Assertions) { + if b.shouldRunTerraformVet() { + b.Vet(assert) + } terraform.Apply(b.t, b.GetTFOptions()) } diff --git a/infra/blueprint-test/pkg/utils/files.go b/infra/blueprint-test/pkg/utils/files.go index e7ee6d5ab02..e3f7135d334 100644 --- a/infra/blueprint-test/pkg/utils/files.go +++ b/infra/blueprint-test/pkg/utils/files.go @@ -17,3 +17,17 @@ func WriteTmpFile(data string) (string, error) { } return f.Name(), nil } + +// WriteTmpFileWithExtension writes data to a temp file with given extension and returns the path. +func WriteTmpFileWithExtension(data string, extension string) (string, error) { + f, err := ioutil.TempFile("", "*." + extension) + if err != nil { + return "", err + } + defer f.Close() + _, err = f.Write([]byte(data)) + if err != nil { + return "", err + } + return f.Name(), nil +} diff --git a/infra/blueprint-test/test/tfvet_test.go b/infra/blueprint-test/test/tfvet_test.go new file mode 100644 index 00000000000..3cff5a0967a --- /dev/null +++ b/infra/blueprint-test/test/tfvet_test.go @@ -0,0 +1,79 @@ +/** + * Copyright 2022 Google LLC + * + * 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 ( + "bytes" + "log" + "os" + "path" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + testingiface "github.com/mitchellh/go-testing-interface" + "github.com/stretchr/testify/assert" +) + +func TestTerraformVet(t *testing.T) { + cwd, err := os.Getwd() + if err != nil { + t.Fatalf("unable to get wd :%v", err) + } + libraryPath := path.Join(cwd, "../examples/policy-library") + + for _, tc := range []struct { + name string + service string + errMsgContains string + }{ + { + name: "Valid configuration", + service: "cloudresourcemanager.googleapis.com", + }, + { + name: "Configuration with violations", + service: "oslogin.googleapis.com", + errMsgContains: "GCPServiceUsageConstraintV1", + }, + } { + t.Run(tc.name, func(t *testing.T) { + fakeT := &testingiface.RuntimeT{} + var logOutput bytes.Buffer + log.SetOutput(&logOutput) + vars := map[string]interface{}{"service": tc.service} + + bpt := tft.NewTFBlueprintTest(fakeT, + tft.WithVars(vars), + tft.WithTFDir("../examples/tf_vet"), + tft.WithSetupPath("./setup/simple_tf_module"), + tft.WithPolicyLibraryPath(libraryPath)) + bpt.DefineVerify( + func(assert *assert.Assertions) { + bpt.DefaultVerify(assert) + }) + bpt.Test() + + if tc.errMsgContains == "" { + assert.False(t, fakeT.Failed(), "test should be sucessful") + } else { + assert.True(t, fakeT.Failed(), "test should have failed") + assert.Contains(t, logOutput.String(), tc.errMsgContains) + } + + }) + } +} From bcf67d6d5aa193077c961c529f14df56e80b9e7a Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Thu, 28 Jul 2022 16:00:12 -0300 Subject: [PATCH 0127/1371] feat: add support for retryable tf errors (#1198) * add support for Retryable Terraform Errors * add common retryable terraform errors * add support for maxRetries and timeBetweenRetries * add tests for retryable errors * explain test strategy Co-authored-by: Andrew Peabody --- .../examples/retry_errors/main.tf | 24 +++++++++ .../examples/retry_errors/variables.tf | 20 ++++++++ infra/blueprint-test/pkg/tft/terraform.go | 46 ++++++++++++++--- .../blueprint-test/test/retry_errors_test.go | 49 +++++++++++++++++++ 4 files changed, 131 insertions(+), 8 deletions(-) create mode 100644 infra/blueprint-test/examples/retry_errors/main.tf create mode 100644 infra/blueprint-test/examples/retry_errors/variables.tf create mode 100644 infra/blueprint-test/test/retry_errors_test.go diff --git a/infra/blueprint-test/examples/retry_errors/main.tf b/infra/blueprint-test/examples/retry_errors/main.tf new file mode 100644 index 00000000000..f9b4301e584 --- /dev/null +++ b/infra/blueprint-test/examples/retry_errors/main.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +resource "google_data_catalog_taxonomy" "basic_taxonomy" { + provider = google-beta + project = var.project_id + region = "us" + display_name = "basic_taxonomy" + description = "A collection of policy tags" + activated_policy_types = ["FINE_GRAINED_ACCESS_CONTROL"] +} diff --git a/infra/blueprint-test/examples/retry_errors/variables.tf b/infra/blueprint-test/examples/retry_errors/variables.tf new file mode 100644 index 00000000000..0127bdc98b3 --- /dev/null +++ b/infra/blueprint-test/examples/retry_errors/variables.tf @@ -0,0 +1,20 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +variable "project_id" { + description = "Project to create Data Catalog taxonomy." + type = string +} diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 698e5fd9ae2..fa973402c26 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -25,6 +25,7 @@ import ( "path/filepath" "strings" gotest "testing" + "time" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/discovery" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" @@ -37,6 +38,16 @@ import ( const setupKeyOutputName = "sa_key" +var ( + CommonRetryableErrors = map[string]string{ + // Project deletion is eventually consistent. Even if google_project resources inside the folder are deleted there maybe a deletion error. + ".*FOLDER_TO_DELETE_NON_EMPTY_VIOLATION.*": "Failed to delete non empty folder.", + + // API activation is eventually consistent. Even if the google_project_service resource is reconciled there maybe an activation error. + ".*SERVICE_DISABLED.*": "Required API not enabled.", + } +) + // TFBlueprintTest implements bpt.Blueprint and stores information associated with a Terraform blueprint test. type TFBlueprintTest struct { discovery.BlueprintTestConfig // additional blueprint test configs @@ -45,6 +56,9 @@ type TFBlueprintTest struct { tfDir string // directory containing Terraform configs tfEnvVars map[string]string // variables to pass to Terraform as environment variables prefixed with TF_VAR_ backendConfig map[string]interface{} // backend configuration for terraform init + retryableTerraformErrors map[string]string // If Terraform apply fails with one of these (transient) errors, retry. The keys are a regexp to match against the error and the message is what to display to a user if that error is matched. + maxRetries int // Maximum number of times to retry errors matching RetryableTerraformErrors + timeBetweenRetries time.Duration // The amount of time to wait between retries migrateState bool // suppress user confirmation in a migration in terraform init setupDir string // optional directory containing applied TF configs to import outputs as variables for the test policyLibraryPath string // optional absolute path to directory containing policy library constraints @@ -102,6 +116,14 @@ func WithBackendConfig(backendConfig map[string]interface{}) tftOption { } } +func WithRetryableTerraformErrors(retryableTerraformErrors map[string]string, maxRetries int, timeBetweenRetries time.Duration) tftOption { + return func(f *TFBlueprintTest) { + f.retryableTerraformErrors = retryableTerraformErrors + f.maxRetries = maxRetries + f.timeBetweenRetries = timeBetweenRetries + } +} + func WithSetupPath(setupPath string) tftOption { return func(f *TFBlueprintTest) { f.setupDir = setupPath @@ -208,15 +230,23 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { // GetTFOptions generates terraform.Options used by Terratest. func (b *TFBlueprintTest) GetTFOptions() *terraform.Options { - return terraform.WithDefaultRetryableErrors(b.t, &terraform.Options{ - TerraformDir: b.tfDir, - EnvVars: b.tfEnvVars, - Vars: b.vars, - Logger: b.logger, - BackendConfig: b.backendConfig, - PlanFilePath: b.planFilePath, - MigrateState: b.migrateState, + newOptions := terraform.WithDefaultRetryableErrors(b.t, &terraform.Options{ + TerraformDir: b.tfDir, + EnvVars: b.tfEnvVars, + Vars: b.vars, + Logger: b.logger, + BackendConfig: b.backendConfig, + MigrateState: b.migrateState, + PlanFilePath: b.planFilePath, + RetryableTerraformErrors: b.retryableTerraformErrors, }) + if b.maxRetries > 0 { + newOptions.MaxRetries = b.maxRetries + } + if b.timeBetweenRetries > 0 { + newOptions.TimeBetweenRetries = b.timeBetweenRetries + } + return newOptions } // getTFOutputsAsInputs computes a map of TF inputs from outputs map. diff --git a/infra/blueprint-test/test/retry_errors_test.go b/infra/blueprint-test/test/retry_errors_test.go new file mode 100644 index 00000000000..b793dd2dcee --- /dev/null +++ b/infra/blueprint-test/test/retry_errors_test.go @@ -0,0 +1,49 @@ +/** + * Copyright 2022 Google LLC + * + * 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 ( + "testing" + "time" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/stretchr/testify/assert" +) + +func TestRetryErrors(t *testing.T) { + bpt := tft.NewTFBlueprintTest(t, + tft.WithTFDir("../examples/retry_errors"), + tft.WithSetupPath("./setup/simple_tf_module"), + tft.WithRetryableTerraformErrors(tft.CommonRetryableErrors, 2, 3*time.Second), + ) + bpt.DefineVerify(func(assert *assert.Assertions) {}) + bpt.DefineTeardown(func(assert *assert.Assertions) {}) + + // The default apply is `terraform.Apply(b.t, b.GetTFOptions())` which has a `require.NoError(t, err)` + // calling `terraform.ApplyE(t, bpt.GetTFOptions())` we are able to process the error end check if it has the + // "unsuccessful after X retries" message. this works for the this test because the code to sent the retry options + // to terraform is in the `bpt.GetTFOptions()` function. + bpt.DefineApply( + func(assert *assert.Assertions) { + out, err := terraform.ApplyE(t, bpt.GetTFOptions()) + assert.Contains(out, "SERVICE_DISABLED") + errMsg := err.Error() + assert.Equal(errMsg, "'terraform [apply -input=false -auto-approve -lock=false]' unsuccessful after 2 retries") + }) + bpt.Test() +} From 4ea786f947dfa58799f5e4736e511ca59668958b Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Mon, 1 Aug 2022 15:16:34 -0300 Subject: [PATCH 0128/1371] feat: expose setup outputs via tft (#1203) expose setup outputs via tft --- infra/blueprint-test/pkg/tft/terraform.go | 9 +++++++++ infra/blueprint-test/test/terraform_simple_bpt_test.go | 3 +++ 2 files changed, 12 insertions(+) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index fa973402c26..02d60df4e5e 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -295,6 +295,15 @@ func (b *TFBlueprintTest) GetTFSetupOutputListVal(key string) []string { return terraform.OutputList(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger}, key) } +// GetTFSetupStringOutput returns TF setup output for a given key as string. +// It fails test if given key does not output a primitive or if setupDir is not configured. +func (b *TFBlueprintTest) GetTFSetupStringOutput(key string) string { + if b.setupDir == "" { + b.t.Fatal("Setup path not set") + } + return terraform.Output(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger}, key) +} + // loadTFEnvVar adds new env variables prefixed with TF_VAR_ to an existing map of variables. func loadTFEnvVar(m map[string]string, new map[string]string) { for k, v := range new { diff --git a/infra/blueprint-test/test/terraform_simple_bpt_test.go b/infra/blueprint-test/test/terraform_simple_bpt_test.go index c4d771498b4..5986cbf9073 100644 --- a/infra/blueprint-test/test/terraform_simple_bpt_test.go +++ b/infra/blueprint-test/test/terraform_simple_bpt_test.go @@ -43,6 +43,9 @@ func TestCFTSimpleModule(t *testing.T) { assert.Equal("10.10.10.0/24", op.Get("ipCidrRange").String(), "should have the right CIDR") assert.Equal("false", op.Get("logConfig.enable").String(), "logConfig should not be enabled") assert.FileExists(statePath) + + //test for GetTFSetupStringOutput + assert.Contains(networkBlueprint.GetTFSetupStringOutput("project_id"),"ci-bptest") }) networkBlueprint.Test() } From a13ee7fb1c62d711ad2b3dc9c7db1dac3633297a Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 2 Aug 2022 10:53:02 -0500 Subject: [PATCH 0129/1371] Update Tools to 1.5.10 (#1199) Update tools to 1.5.10 --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 1b08bf24b04..76e38b0c44b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,7 +13,7 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.2.5 +TERRAFORM_VERSION := 1.2.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 CLOUD_SDK_VERSION := 395.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -33,7 +33,7 @@ CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.4 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.10 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 69e0d3302da126a5043019e65c8b5b2daa99b6c7 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 3 Aug 2022 13:55:48 -0500 Subject: [PATCH 0130/1371] feat: expose SFB test deployment for other blueprints (#1205) --- .../test-org/ci-triggers/.terraform.lock.hcl | 1 + infra/terraform/test-org/ci-triggers/backend.tf | 8 ++++++++ infra/terraform/test-org/ci-triggers/locals.tf | 11 +++++++++++ infra/terraform/test-org/ci-triggers/triggers.tf | 16 ++++++++++------ 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl index 34246f2b0ba..f545746aec8 100644 --- a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl @@ -5,6 +5,7 @@ provider "registry.terraform.io/hashicorp/google-beta" { version = "4.28.0" constraints = ">= 2.18.0, < 5.0.0" hashes = [ + "h1:OCnAHwByjG7Ck54UXweixWOKuQfheAgIbLvs3Rhttws=", "h1:kf7kz+xRgenx1f3ROvKxV9SSqkUhXBjIvJ0rmlmOSaY=", "zh:02049634b3dd7928628145c1993e9a6772b8229e94c0466943dd8a192c7dcf43", "zh:113664260f56d0559c9f4c5b912dd80ee966d09ff3723fe6ae1a71fa4915fdc9", diff --git a/infra/terraform/test-org/ci-triggers/backend.tf b/infra/terraform/test-org/ci-triggers/backend.tf index 536613efd07..4c8305e6dcd 100644 --- a/infra/terraform/test-org/ci-triggers/backend.tf +++ b/infra/terraform/test-org/ci-triggers/backend.tf @@ -37,3 +37,11 @@ data "terraform_remote_state" "tf-validator" { } } +data "terraform_remote_state" "sfb-bootstrap" { + backend = "gcs" + config = { + bucket = "bkt-b-tfstate-1d93" + prefix = "terraform/bootstrap/state" + } +} + diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index bc8223b2b81..10d332e3afc 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -45,4 +45,15 @@ locals { project_id = "cloud-foundation-cicd" forseti_ci_folder_id = "542927601143" billing_iam_test_account = "0151A3-65855E-5913CF" + # blueprints which can be layered on top of SFB + bp_on_sfb = [ + "terraform-google-cloud-run" + ] + # SFB deployment info + sfb_substs = { + _SFB_ORG_ID : "413973101099", + _SFB_SEED_PROJECT_ID : data.terraform_remote_state.sfb-bootstrap.outputs.seed_project_id, + _SFB_CLOUDBUILD_PROJECT_ID : data.terraform_remote_state.sfb-bootstrap.outputs.cloudbuild_project_id, + _SFB_TF_SA_NAME : data.terraform_remote_state.sfb-bootstrap.outputs.terraform_sa_name, + } } diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index ce8dabaef8f..844f3170c66 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -44,12 +44,16 @@ resource "google_cloudbuild_trigger" "int_trigger" { branch = ".*" } } - substitutions = { - _BILLING_ACCOUNT = local.billing_account - _FOLDER_ID = each.value.folder_id - _ORG_ID = local.org_id - _BILLING_IAM_TEST_ACCOUNT = each.key == "terraform-google-iam" ? local.billing_iam_test_account : null - } + substitutions = merge( + { + _BILLING_ACCOUNT = local.billing_account + _FOLDER_ID = each.value.folder_id + _ORG_ID = local.org_id + _BILLING_IAM_TEST_ACCOUNT = each.key == "terraform-google-iam" ? local.billing_iam_test_account : null + }, + # add sfb substitutions + contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} + ) filename = "build/int.cloudbuild.yaml" ignored_files = ["**/*.md", ".gitignore", ".github/**"] From 5ca77539e6551bd85247d532bdcaea0bd40ea14d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 3 Aug 2022 12:15:45 -0700 Subject: [PATCH 0131/1371] chore: kubectl patch releases in update-tooling (#1206) --- .github/workflows/update-tooling.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ae1d87e7131..d03f08517c1 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -9,6 +9,8 @@ env: CLOUD_SDK_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases" CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" + KUBECTL_MINOR: "1.23" + KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" jobs: update-tools: @@ -20,7 +22,7 @@ jobs: PR_UPDATE_BODY="" newline=$'\n' # Skip "KPT" till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL") for tool in ${tools[@]} do @@ -37,6 +39,9 @@ jobs: elif [ "$tool" == "CFT_CLI" ]; then # get latest CFT_CLI release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("CLI Release"))][0].tag_name' | tr -d "v") + elif [ "$tool" == "KUBECTL" ]; then + # get latest KUBECTL_MINOR release + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") else LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .tag_name | tr -d "v") fi From 66c741ef52609fd6bddbe18b33c78e75b5f336aa Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 3 Aug 2022 14:35:25 -0500 Subject: [PATCH 0132/1371] Update Tools to 1.5.11 (#1204) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 76e38b0c44b..67e39399a5a 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.2.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 395.0.0 +CLOUD_SDK_VERSION := 396.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -31,9 +31,9 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.15 CFT_CLI_VERSION := 0.4.4 ASMCLI_VERSION := 1.12 -KUBECTL_VERSION := 1.23.4 +KUBECTL_VERSION := 1.23.9 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.10 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.11 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From ae5788f3304a940ba91a428ee80551834fcb935b Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 5 Aug 2022 01:15:25 -0500 Subject: [PATCH 0133/1371] chore(master): release blueprint-test 0.2.0 (#1200) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4132906101c..3933e666919 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.1.0" + "infra/blueprint-test": "0.2.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index f73e6eb5e19..47af1a74c9a 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.2.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.1.0...infra/blueprint-test/v0.2.0) (2022-08-03) + + +### Features + +* add support for retryable tf errors ([#1198](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1198)) ([bcf67d6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bcf67d6d5aa193077c961c529f14df56e80b9e7a)) +* Add support for terraform vet in blueprint test ([#1191](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1191)) ([e3179df](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e3179dfc63abf2fd7cf291b24531abbe3cba02ff)) +* expose setup outputs via tft ([#1203](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1203)) ([4ea786f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/4ea786f947dfa58799f5e4736e511ca59668958b)) + ## [0.1.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.0.1...infra/blueprint-test/v0.1.0) (2022-06-13) From 21ddcf7038e912adf4184efa49b4a3dfb9373b6f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 5 Aug 2022 10:24:32 -0700 Subject: [PATCH 0134/1371] chore: update tooling PR reviewer (#1207) --- .github/workflows/update-tooling.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index d03f08517c1..92981cea5f1 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -90,6 +90,5 @@ jobs: Updated tools to ${{env.NEW_IMG_VERSION}} ${{env.PR_UPDATE_BODY}} labels: automated pr - assignees: bharathkkb,morgante - reviewers: morgante + reviewers: bharathkkb, apeabody branch: create-pull-request/patch-tools-version From 8205befb06fa8a66b61888cbae5b75f07dd99395 Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Fri, 5 Aug 2022 21:13:53 -0300 Subject: [PATCH 0135/1371] feat: add terraform-tools for tfv (#1211) --- infra/build/developer-tools/build/install_cloud_sdk.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/infra/build/developer-tools/build/install_cloud_sdk.sh b/infra/build/developer-tools/build/install_cloud_sdk.sh index 876ebc75dbe..516e7f499df 100755 --- a/infra/build/developer-tools/build/install_cloud_sdk.sh +++ b/infra/build/developer-tools/build/install_cloud_sdk.sh @@ -37,5 +37,8 @@ gcloud components install alpha --quiet # https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke gcloud components install gke-gcloud-auth-plugin --quiet +# https://cloud.google.com/docs/terraform/policy-validation/quickstart +gcloud components install terraform-tools --quiet + gcloud --version gsutil version -l From 339cb248327248caca129bb31e309dc8afcae345 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 5 Aug 2022 19:24:06 -0700 Subject: [PATCH 0136/1371] fix: update jinja2 and add cookiecutter for deps (#1212) --- infra/build/developer-tools/build/install_dependencies.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/install_dependencies.sh b/infra/build/developer-tools/build/install_dependencies.sh index a0813e080fe..6a623922d6a 100755 --- a/infra/build/developer-tools/build/install_dependencies.sh +++ b/infra/build/developer-tools/build/install_dependencies.sh @@ -69,5 +69,5 @@ apk add --no-cache diffutils # rsync is needed for check_documentation in task_helper_functions.sh apk add --no-cache rsync -# flake8 and jinja2 are used for lint checks -pip install flake8 jinja2 +# flake8 and jinja2 are used for lint checks, cookiecutter is used for terraform-google-module-template tests +pip install flake8 "Jinja2~=3.1" cookiecutter From af7a8cd6506c79e617425c6b8c52aaa81fde1aa1 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 10 Aug 2022 09:38:25 -0700 Subject: [PATCH 0137/1371] fix: remove dup Jinja2 pin (#1213) --- infra/build/developer-tools/build/data/requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/infra/build/developer-tools/build/data/requirements.txt b/infra/build/developer-tools/build/data/requirements.txt index c77a7a16615..447f647e7c4 100644 --- a/infra/build/developer-tools/build/data/requirements.txt +++ b/infra/build/developer-tools/build/data/requirements.txt @@ -1,4 +1,3 @@ google-api-python-client~=1.7 google-auth~=1.6 -Jinja2==2.11.3 PyGithub==1.51 From d777fc8fb682bda6e214481a161ef2a47cf2a6dd Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 10 Aug 2022 09:42:54 -0700 Subject: [PATCH 0138/1371] chore: add module-template to test-org (#1209) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 050c29bd1af..d38416e757c 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -94,5 +94,6 @@ locals { "blueprints", # Not module "policy-blueprints", "secret-manager", + "module-template", ] } From ca6cccc668478a5a978cfbf50f216c445631c8cd Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Wed, 10 Aug 2022 22:22:59 -0300 Subject: [PATCH 0139/1371] chore: Add reset of billing account iam policy (#1215) * add reset of billing account iam policy * Apply suggestions from code review Co-authored-by: Bharath KKB --- .../terraform/test-org/org-iam-policy/iam.tf | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index 34bdb6f87b7..a9e9a243a5b 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -20,6 +20,11 @@ locals { cft_dev_group = "cft-developers@dev.infra.cft.tips" gcp_admins_group_test = "gcp-admins@test.infra.cft.tips" project_cleaner = "project-cleaner-function@${data.terraform_remote_state.project_cleaner.outputs.project_id}.iam.gserviceaccount.com" + + ci_gsuite_sa = "ci-gsuite-sa@ci-gsuite-sa-project.iam.gserviceaccount.com" + cft_admin = "cft-admin@test.infra.cft.tips" + foundation_leads_group = "cloud-foundation-leads@google.com" + policy = { "roles/billing.admin" : ["group:${local.gcp_admins_group_test}"], "roles/compute.xpnAdmin" : ["group:${local.cft_ci_group}"], @@ -39,6 +44,18 @@ locals { "roles/resourcemanager.folderEditor" : ["serviceAccount:${local.project_cleaner}"], "roles/serviceusage.serviceUsageAdmin" : ["serviceAccount:${local.project_cleaner}"], } + + billing_policy = { + "roles/billing.admin" : [ + "group:${local.cft_ci_group}", + "group:${local.gcp_admins_group_test}", + "user:${local.cft_admin}", + "group:${local.foundation_leads_group}", + ], + "roles/billing.user" : [ + "serviceAccount:${local.ci_gsuite_sa}", + ] + } } resource "google_organization_iam_policy" "organization" { @@ -55,3 +72,18 @@ data "google_iam_policy" "admin" { } } } + +resource "google_billing_account_iam_policy" "billing" { + billing_account_id = data.terraform_remote_state.org.outputs.billing_account + policy_data = data.google_iam_policy.billing.policy_data +} + +data "google_iam_policy" "billing" { + dynamic "binding" { + for_each = local.billing_policy + content { + role = binding.key + members = binding.value + } + } +} From d81722d6c4c2203103bc4ea5adbf3b379455e555 Mon Sep 17 00:00:00 2001 From: Terrence Ryan Date: Fri, 12 Aug 2022 16:36:02 -0700 Subject: [PATCH 0140/1371] chore: adding two blueprints to test-infra (#1218) These are for the Solutions in Console Project --- infra/terraform/test-org/org/locals.tf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index d38416e757c..6f98de55072 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -95,5 +95,7 @@ locals { "policy-blueprints", "secret-manager", "module-template", + "load-balanced-vms", + "three-tier-app", ] } From 35cdb0b6031016a71b5c638cfa356a609324177a Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 15 Aug 2022 10:46:15 -0500 Subject: [PATCH 0141/1371] chore: update module-template org (#1219) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 6f98de55072..b3e1b7365d9 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -83,6 +83,7 @@ locals { "cloud-router", "group", "data-fusion", + "module-template", ] gcp_org_modules = [ "example-foundation-app", # Not module @@ -94,7 +95,6 @@ locals { "blueprints", # Not module "policy-blueprints", "secret-manager", - "module-template", "load-balanced-vms", "three-tier-app", ] From e22ee222f7885bb150c3e23ba8ddc834413ea47e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 15 Aug 2022 14:36:04 -0700 Subject: [PATCH 0142/1371] chore(deps): add requests~=2.28 (#1216) --- infra/build/developer-tools/build/install_dependencies.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/build/developer-tools/build/install_dependencies.sh b/infra/build/developer-tools/build/install_dependencies.sh index 6a623922d6a..c310a02d2a4 100755 --- a/infra/build/developer-tools/build/install_dependencies.sh +++ b/infra/build/developer-tools/build/install_dependencies.sh @@ -70,4 +70,5 @@ apk add --no-cache diffutils apk add --no-cache rsync # flake8 and jinja2 are used for lint checks, cookiecutter is used for terraform-google-module-template tests -pip install flake8 "Jinja2~=3.1" cookiecutter +# requests~=2.28 for https://github.com/psf/requests/pull/6179 +pip install flake8 "Jinja2~=3.1" cookiecutter "requests~=2.28" From 129ae44662da9f12ffabd067f872cdbea49a862d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 16 Aug 2022 08:48:31 -0700 Subject: [PATCH 0143/1371] chore: add terraform-google-vault module (#1221) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index b3e1b7365d9..c964979f735 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -84,6 +84,7 @@ locals { "group", "data-fusion", "module-template", + "vault", ] gcp_org_modules = [ "example-foundation-app", # Not module From 0e0f9f6437973db6b6930306647a970eeb628870 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 16 Aug 2022 10:03:15 -0700 Subject: [PATCH 0144/1371] chore: add util-linux-misc to developer-tools-krm (#1220) --- infra/build/developer-tools-krm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index 9a7da6e2080..fbd1fdfee44 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -15,7 +15,7 @@ ARG BASE_IMAGE_VERSION FROM cft/developer-tools:$BASE_IMAGE_VERSION -RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint +RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc # Additional go tooling RUN GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.40.1 From 552150323dd1f6f09ffdcd0c58b3dd5c3dd4e905 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 17 Aug 2022 08:26:33 -0700 Subject: [PATCH 0145/1371] chore: update CFT tools and disabled modules (#1223) --- .../function_source/main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py index 1200c573e30..44e3bc6d710 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py @@ -24,8 +24,9 @@ from google.protobuf import duration_pb2 as duration CFT_TOOLS_DEFAULT_IMAGE = 'gcr.io/cloud-foundation-cicd/cft/developer-tools' -CFT_TOOLS_DEFAULT_IMAGE_VERSION = '0.12' -DISABLED_MODULES = ["terraform-example-foundation", "cloud-foundation-training"] +CFT_TOOLS_DEFAULT_IMAGE_VERSION = '1' +# Disable terraform-google-module-template as it uses a cookiecutter template +DISABLED_MODULES = ["terraform-example-foundation", "cloud-foundation-training", "terraform-google-module-template"] def main(event, context): From 18d7ea74deea519d354f8112b005eb85374226c0 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 17 Aug 2022 08:30:32 -0700 Subject: [PATCH 0146/1371] chore: update branch protection excludes (#1222) --- infra/terraform/test-org/github/branch.tf | 3 ++- infra/terraform/test-org/org/locals.tf | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/github/branch.tf b/infra/terraform/test-org/github/branch.tf index 189e1bcc8b7..78a359406d6 100644 --- a/infra/terraform/test-org/github/branch.tf +++ b/infra/terraform/test-org/github/branch.tf @@ -23,8 +23,9 @@ locals { "terraform-google-secured-data-warehouse", "terraform-google-secure-cicd", "terraform-google-cloud-run", - "terraform-google-on-prem", "terraform-google-secret-manager", + "terraform-google-load-balanced-vms", + "terraform-google-three-tier-app", # Special CI case "terraform-example-foundation" ] diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index c964979f735..7f1f57df2c9 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -86,6 +86,7 @@ locals { "module-template", "vault", ] + # These should also be added to test-org/github/branch.tf#L19 till the todo is resolved. gcp_org_modules = [ "example-foundation-app", # Not module "anthos-samples", From e95dc64d9b4596135cfc8bac481402c739e1c6a4 Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Wed, 17 Aug 2022 19:46:46 -0300 Subject: [PATCH 0147/1371] feat: add project ID param to tft vet (#1226) --- infra/blueprint-test/pkg/gcloud/gcloud.go | 8 ++++---- infra/blueprint-test/pkg/tft/terraform.go | 6 ++++-- infra/blueprint-test/test/tfvet_test.go | 8 +++++++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/infra/blueprint-test/pkg/gcloud/gcloud.go b/infra/blueprint-test/pkg/gcloud/gcloud.go index 6df53e863fb..779937793f5 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud.go @@ -87,7 +87,7 @@ func RunCmd(t testing.TB, cmd string, opts ...cmdOption) string { } // RunCmdE executes a gcloud command and return output. -func RunCmdE(t testing.TB, cmd string, opts ...cmdOption) (string, error) { +func RunCmdE(t testing.TB, cmd string, opts ...cmdOption) (string, error) { gOpts, err := newCmdConfig(opts...) if err != nil { t.Fatal(err) @@ -113,9 +113,9 @@ func Run(t testing.TB, cmd string, opts ...cmdOption) gjson.Result { } // TFVet executes gcloud beta terraform vet -func TFVet(t testing.TB, planFilePath string, policyLibraryPath string) gjson.Result { - op, err := RunCmdE(t, fmt.Sprintf("beta terraform vet %s --policy-library=%s", planFilePath, policyLibraryPath)) - if err != nil && !(strings.Contains(err.Error(), "Validating resources") && strings.Contains(err.Error(), "done")){ +func TFVet(t testing.TB, planFilePath string, policyLibraryPath, terraformVetProject string) gjson.Result { + op, err := RunCmdE(t, fmt.Sprintf("beta terraform vet %s --policy-library=%s --project=%s", planFilePath, policyLibraryPath, terraformVetProject)) + if err != nil && !(strings.Contains(err.Error(), "Validating resources") && strings.Contains(err.Error(), "done")) { t.Fatal(err) } if !gjson.Valid(op) { diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 02d60df4e5e..64b9703ea8e 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -62,6 +62,7 @@ type TFBlueprintTest struct { migrateState bool // suppress user confirmation in a migration in terraform init setupDir string // optional directory containing applied TF configs to import outputs as variables for the test policyLibraryPath string // optional absolute path to directory containing policy library constraints + terraformVetProject string // optional a valid existing project that will be used when a plan has resources in a project that still does not exist. planFilePath string // path to the plan file used in Teraform plan and show vars map[string]interface{} // variables to pass to Terraform as flags logger *logger.Logger // custom logger @@ -130,9 +131,10 @@ func WithSetupPath(setupPath string) tftOption { } } -func WithPolicyLibraryPath(policyLibraryPath string) tftOption { +func WithPolicyLibraryPath(policyLibraryPath, terraformVetProject string) tftOption { return func(f *TFBlueprintTest) { f.policyLibraryPath = policyLibraryPath + f.terraformVetProject = terraformVetProject } } @@ -384,7 +386,7 @@ func (b *TFBlueprintTest) Vet(assert *assert.Assertions) { filepath, err := utils.WriteTmpFileWithExtension(jsonPlan, "json") defer os.Remove(filepath) assert.NoError(err) - results := gcloud.TFVet(b.t, filepath, b.policyLibraryPath).Array() + results := gcloud.TFVet(b.t, filepath, b.policyLibraryPath, b.terraformVetProject).Array() assert.Empty(results, "Should have no Terraform Vet violations") } diff --git a/infra/blueprint-test/test/tfvet_test.go b/infra/blueprint-test/test/tfvet_test.go index 3cff5a0967a..a492f50ae6e 100644 --- a/infra/blueprint-test/test/tfvet_test.go +++ b/infra/blueprint-test/test/tfvet_test.go @@ -56,11 +56,17 @@ func TestTerraformVet(t *testing.T) { log.SetOutput(&logOutput) vars := map[string]interface{}{"service": tc.service} + temp := tft.NewTFBlueprintTest(fakeT, + tft.WithVars(vars), + tft.WithTFDir("../examples/tf_vet"), + tft.WithSetupPath("./setup/simple_tf_module"), + ) + bpt := tft.NewTFBlueprintTest(fakeT, tft.WithVars(vars), tft.WithTFDir("../examples/tf_vet"), tft.WithSetupPath("./setup/simple_tf_module"), - tft.WithPolicyLibraryPath(libraryPath)) + tft.WithPolicyLibraryPath(libraryPath, temp.GetTFSetupStringOutput("project_id"))) bpt.DefineVerify( func(assert *assert.Assertions) { bpt.DefaultVerify(assert) From d97fac7330c7e4e2427f4d33096570605f6650f5 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 19 Aug 2022 11:01:05 -0500 Subject: [PATCH 0148/1371] feat: blueprint builds in cli (#1224) * feat: blueprint build times in cli * update comments * clarify iff * fix var name --- cli/bpbuild/build.go | 151 +++++++++++++++++++++++++ cli/bpbuild/build_test.go | 224 ++++++++++++++++++++++++++++++++++++++ cli/bpbuild/cmd.go | 143 ++++++++++++++++++++++++ cli/bpbuild/git.go | 36 ++++++ cli/bpbuild/git_test.go | 79 ++++++++++++++ cli/bpbuild/main.go | 8 ++ cli/bpbuild/prompt.go | 28 +++++ cli/bpbuild/time.go | 21 ++++ cli/bpbuild/time_test.go | 42 +++++++ cli/cmd/root.go | 3 + cli/go.mod | 3 + cli/go.sum | 51 +++++++++ 12 files changed, 789 insertions(+) create mode 100644 cli/bpbuild/build.go create mode 100644 cli/bpbuild/build_test.go create mode 100644 cli/bpbuild/cmd.go create mode 100644 cli/bpbuild/git.go create mode 100644 cli/bpbuild/git_test.go create mode 100644 cli/bpbuild/main.go create mode 100644 cli/bpbuild/prompt.go create mode 100644 cli/bpbuild/time.go create mode 100644 cli/bpbuild/time_test.go diff --git a/cli/bpbuild/build.go b/cli/bpbuild/build.go new file mode 100644 index 00000000000..1eacf702cc3 --- /dev/null +++ b/cli/bpbuild/build.go @@ -0,0 +1,151 @@ +package bpbuild + +import ( + "context" + "fmt" + "os" + "time" + + cloudbuild "google.golang.org/api/cloudbuild/v1" + "gopkg.in/yaml.v2" +) + +const ( + successStatus = "SUCCESS" + failedStatus = "FAILURE" +) + +// getCBBuildsWithFilter returns a list of cloudbuild builds in projectID with a given filter. +// Additional client side filters can be specified via cFilters. +// TODO(bharathkkb): move https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/infra/utils/fbf into CLI +func getCBBuildsWithFilter(projectID string, filter string, cFilters []clientBuildFilter) ([]*cloudbuild.Build, error) { + ctx := context.Background() + cloudbuildService, err := cloudbuild.NewService(ctx) + if err != nil { + return nil, fmt.Errorf("error creating cloudbuild service: %v", err) + } + + c, err := cloudbuildService.Projects.Builds.List(projectID).Filter(filter).Do() + if err != nil { + return nil, fmt.Errorf("error listing builds with filter %s in project %s: %v", filter, projectID, err) + } + + cbBuilds := []*cloudbuild.Build{} + appendClientFilteredBuilds := func(builds []*cloudbuild.Build) { + for _, b := range builds { + appendBuild := true + for _, cFilter := range cFilters { + // skip if any client side filter evaluates to false + if !cFilter(b) { + appendBuild = false + break + } + } + if appendBuild { + cbBuilds = append(cbBuilds, b) + } + } + } + + if len(c.Builds) < 1 { + return nil, fmt.Errorf("no builds found with filter %s in project %s", filter, projectID) + } + appendClientFilteredBuilds(c.Builds) + + // pagination + for { + c, err = cloudbuildService.Projects.Builds.List(projectID).Filter(filter).PageToken(c.NextPageToken).Do() + if err != nil { + return nil, fmt.Errorf("error retriving next page with token %s: %v", c.NextPageToken, err) + } + appendClientFilteredBuilds(c.Builds) + if c.NextPageToken == "" { + break + } + } + return cbBuilds, nil +} + +// clientside filter functions +type clientBuildFilter func(*cloudbuild.Build) bool + +// filterRealBuilds filters out builds not triggered from source repos (i.e by automation). +func filterRealBuilds(b *cloudbuild.Build) bool { + for _, subs := range []string{"COMMIT_SHA", "REPO_NAME", "TRIGGER_NAME"} { + _, substExists := b.Substitutions[subs] + if !substExists { + return false + } + } + return true +} + +// filterGHRepoBuilds filters builds from a particular repo name. +// TODO:(bharathkkb): We should ideally be using a sever side filter for this https://cloud.google.com/build/docs/view-build-results#filtering_build_results_using_queries +// but I was not able to figure out expected format for GH URLs. +func filterGHRepoBuilds(repo string) clientBuildFilter { + return func(b *cloudbuild.Build) bool { + name, exists := b.Substitutions["REPO_NAME"] + if !exists { + return false + } + return name == repo + } +} + +// successBuildsBtwFilterExpr returns a CEL expression as string +// for finding all successful builds between start and end time. +func successBuildsBtwFilterExpr(start, end time.Time) string { + return fmt.Sprintf( + "create_time>=\"%s\" AND create_time<\"%s\" AND status=\"%s\"", + start.Format(time.RFC3339), + end.Format(time.RFC3339), + successStatus) +} + +// getBuildFromFile unmarshalls a CloudBuild file at path. +func getBuildFromFile(path string) (*cloudbuild.Build, error) { + content, err := os.ReadFile(path) + if err != nil { + return nil, err + } + var b cloudbuild.Build + err = yaml.Unmarshal(content, &b) + if err != nil { + return nil, err + } + return &b, nil +} + +// getBuildStepIDs retrieves a slice of build step IDs in a build. +func getBuildStepIDs(b *cloudbuild.Build) []string { + steps := []string{} + for _, bs := range b.Steps { + steps = append(steps, bs.Id) + } + return steps +} + +// findBuildStageDurations computes duration for a given build stage across a slice of builds +// if and only if stage is successful. +func findBuildStageDurations(stepId string, builds []*cloudbuild.Build) ([]time.Duration, error) { + durations := []time.Duration{} + for _, b := range builds { + for _, bs := range b.Steps { + if bs.Id != stepId || bs.Status != successStatus { + continue + } + + parsedStartTime, err := time.Parse(time.RFC3339Nano, bs.Timing.StartTime) + if err != nil { + return []time.Duration{}, err + } + parsedEndTime, err := time.Parse(time.RFC3339Nano, bs.Timing.EndTime) + if err != nil { + return []time.Duration{}, err + } + durations = append(durations, parsedEndTime.Sub(parsedStartTime).Truncate(time.Second)) + } + } + return durations, nil +} diff --git a/cli/bpbuild/build_test.go b/cli/bpbuild/build_test.go new file mode 100644 index 00000000000..27408ef8c30 --- /dev/null +++ b/cli/bpbuild/build_test.go @@ -0,0 +1,224 @@ +package bpbuild + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + cloudbuild "google.golang.org/api/cloudbuild/v1" +) + +func TestFilterRealBuilds(t *testing.T) { + tests := []struct { + name string + subst map[string]string + want bool + }{ + { + name: "fail", + subst: map[string]string{"foo": "bar"}, + want: false, + }, + { + name: "partial", + subst: map[string]string{"REPO_NAME": "bar"}, + want: false, + }, + { + name: "pass", + subst: map[string]string{ + "REPO_NAME": "bar", + "COMMIT_SHA": "bar", + "TRIGGER_NAME": "bar", + }, + want: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + b := newTestBuild(tt.subst, nil) + if got := filterRealBuilds(b); got != tt.want { + t.Errorf("filterRealBuilds() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestFilterGHRepoBuilds(t *testing.T) { + tests := []struct { + name string + repo string + subst map[string]string + want bool + }{ + { + name: "fail", + repo: "foo", + subst: map[string]string{"foo": "bar"}, + want: false, + }, + { + name: "pass", + repo: "foo", + subst: map[string]string{"REPO_NAME": "foo"}, + want: true, + }, + { + name: "fail different", + repo: "bar", + subst: map[string]string{"REPO_NAME": "foo"}, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + b := newTestBuild(tt.subst, nil) + if got := filterGHRepoBuilds(tt.repo)(b); got != tt.want { + t.Errorf("filterGHRepoBuilds() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestFindBuildStageDurations(t *testing.T) { + tests := []struct { + name string + stepId string + builds []*cloudbuild.Build + want []time.Duration + wantErr bool + }{ + { + name: "simple", + stepId: "foo", + builds: []*cloudbuild.Build{newTestBuild(nil, []*cloudbuild.BuildStep{newTestBuildStep("foo", time.Hour, successStatus)})}, + want: []time.Duration{time.Hour}, + }, + { + name: "multiple builds", + stepId: "foo", + builds: []*cloudbuild.Build{ + newTestBuild(nil, []*cloudbuild.BuildStep{newTestBuildStep("foo", time.Hour, successStatus)}), + newTestBuild(nil, []*cloudbuild.BuildStep{newTestBuildStep("foo", time.Hour*2, successStatus)}), + newTestBuild(nil, []*cloudbuild.BuildStep{newTestBuildStep("foo", time.Hour*4, successStatus)}), + }, + want: []time.Duration{ + time.Hour, + time.Hour * 2, + time.Hour * 4, + }, + }, + { + name: "multiple builds multiple steps", + stepId: "foo", + builds: []*cloudbuild.Build{ + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour, successStatus), + newTestBuildStep("bar", time.Hour*2, successStatus), + }), + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour*2, successStatus), + newTestBuildStep("bar", time.Hour*8, successStatus), + }), + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour*4, successStatus), + newTestBuildStep("bar", time.Hour, successStatus), + }), + }, + want: []time.Duration{ + time.Hour, + time.Hour * 2, + time.Hour * 4, + }, + }, + { + name: "multiple builds multiple steps with fails", + stepId: "foo", + builds: []*cloudbuild.Build{ + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour, failedStatus), + newTestBuildStep("bar", time.Hour*2, successStatus), + }), + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour*2, successStatus), + newTestBuildStep("bar", time.Hour*8, successStatus), + }), + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour*4, failedStatus), + newTestBuildStep("bar", time.Hour, successStatus), + }), + }, + want: []time.Duration{ + time.Hour * 2, + }, + }, + { + name: "empty multiple builds multiple steps but all matched step failed", + stepId: "foo", + builds: []*cloudbuild.Build{ + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour, failedStatus), + newTestBuildStep("bar", time.Hour*2, successStatus), + }), + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour*2, failedStatus), + newTestBuildStep("bar", time.Hour*8, successStatus), + }), + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour*4, failedStatus), + newTestBuildStep("bar", time.Hour, successStatus), + }), + }, + want: []time.Duration{}, + }, + { + name: "empty multiple builds multiple steps no match", + stepId: "baz", + builds: []*cloudbuild.Build{ + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour, successStatus), + newTestBuildStep("bar", time.Hour*2, successStatus), + }), + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour*2, successStatus), + newTestBuildStep("bar", time.Hour*8, successStatus), + }), + newTestBuild(nil, []*cloudbuild.BuildStep{ + newTestBuildStep("foo", time.Hour*4, successStatus), + newTestBuildStep("bar", time.Hour, successStatus), + }), + }, + want: []time.Duration{}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := findBuildStageDurations(tt.stepId, tt.builds) + if (err != nil) != tt.wantErr { + t.Errorf("findBuildStageDurations() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !assert.Equal(t, got, tt.want) { + t.Errorf("findBuildStageDurations() = %v, want %v", got, tt.want) + } + }) + } +} + +func newTestBuild(subst map[string]string, bs []*cloudbuild.BuildStep) *cloudbuild.Build { + return &cloudbuild.Build{ + Substitutions: subst, + Steps: bs, + } +} + +func newTestBuildStep(id string, length time.Duration, status string) *cloudbuild.BuildStep { + return &cloudbuild.BuildStep{ + Id: id, + Status: status, + Timing: &cloudbuild.TimeSpan{ + StartTime: time.Now().Format(time.RFC3339Nano), + EndTime: time.Now().Add(length).Format(time.RFC3339Nano), + }, + } +} diff --git a/cli/bpbuild/cmd.go b/cli/bpbuild/cmd.go new file mode 100644 index 00000000000..62111ec4797 --- /dev/null +++ b/cli/bpbuild/cmd.go @@ -0,0 +1,143 @@ +package bpbuild + +import ( + "fmt" + "os" + "time" + + "github.com/fatih/color" + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var avgTimeFlags struct { + projectId string + repoName string + buildFilePath string + buildStepID string + lookUpStart string + lookUpStartTime time.Time + lookUpEnd string + lookUpEndTime time.Time +} + +const defaultBuildFilePath = "build/int.cloudbuild.yaml" + +func init() { + viper.AutomaticEnv() + Cmd.AddCommand(avgTimeCmd) + + avgTimeCmd.Flags().StringVar(&avgTimeFlags.buildFilePath, "build-file", defaultBuildFilePath, "Path to file containing CloudBuild configs.") + avgTimeCmd.Flags().StringVar(&avgTimeFlags.buildStepID, "step", "", "ID of build step to compute avg.") + avgTimeCmd.Flags().StringVar(&avgTimeFlags.lookUpStart, "start-time", "", "Time to start computing build step avg in form MM-DD-YYYY. Defaults to one month ago.") + avgTimeCmd.Flags().StringVar(&avgTimeFlags.lookUpEnd, "end-time", "", "Time to stop computing build step avg in form MM-DD-YYYY. Defaults to current date.") + avgTimeCmd.Flags().StringVar(&avgTimeFlags.projectId, "project-id", "cloud-foundation-cicd", "Project ID where builds are executed.") + avgTimeCmd.Flags().StringVar(&avgTimeFlags.repoName, "repo", "", "Name of repo that triggered the builds. Defaults to extracting from git config.") + +} + +var Cmd = &cobra.Command{ + Use: "builds", + Short: "Blueprint builds", + Long: `Blueprint builds CLI is used to get information about blueprint builds.`, + Args: cobra.NoArgs, +} + +var avgTimeCmd = &cobra.Command{ + Use: "avgtime", + Short: "average time for build step", + Long: `Compute average time for a given build step across build executions from a given start-time to end-time.`, + Args: cobra.NoArgs, + RunE: calcAvgTime, +} + +func calcAvgTime(cmd *cobra.Command, args []string) error { + // set any computed defaults + if err := setAvgTimeFlagDefaults(); err != nil { + return err + } + + // build filters + filterExpr := successBuildsBtwFilterExpr(avgTimeFlags.lookUpStartTime, avgTimeFlags.lookUpEndTime) + cFilters := []clientBuildFilter{ + filterRealBuilds, + filterGHRepoBuilds(avgTimeFlags.repoName), + } + + // get builds and compute avg + builds, err := getCBBuildsWithFilter(avgTimeFlags.projectId, filterExpr, cFilters) + if err != nil { + return fmt.Errorf("error retrieving builds: %w", err) + } + durations, err := findBuildStageDurations(avgTimeFlags.buildStepID, builds) + if err != nil { + return err + } + if len(durations) < 1 { + return fmt.Errorf("error no successful build stage %s found", avgTimeFlags.buildStepID) + } + avgTime := durationAvg(durations) + + // todo(bharathkkb): Add JSON output + fmt.Printf("Discovered %d samples for %s stage between %s and %s\n", len(durations), avgTimeFlags.buildStepID, avgTimeFlags.lookUpStart, avgTimeFlags.lookUpEnd) + color.Green("Computed average time: %s", avgTime) + return nil +} + +// setAvgTimeFlagDefaults sets computed defaults for any missing flags. +// An error is thrown if a default cannot be computed. +func setAvgTimeFlagDefaults() error { + // if no explicit repo name specified via flag, try to auto discover + if avgTimeFlags.repoName == "" { + Log.Info("No repo specified, attempting to detect repo name from current dir") + path, err := os.Getwd() + if err != nil { + return fmt.Errorf("error getting working dir: %w", err) + } + r, err := getRepoName(path) + if err != nil { + return fmt.Errorf("error finding repo name: %w", err) + } + if r == "" { + return fmt.Errorf("unable to detect repo name, please specify a name using --repo") + } + avgTimeFlags.repoName = r + Log.Info("Found repo", "default", avgTimeFlags.repoName) + } + + // if no explicit build step specified via flag, prompt user with possible options from CloudBuild configs. + if avgTimeFlags.buildStepID == "" { + Log.Info("No build ID specified, attempting to find and prompt for build step ID from build file.") + buildFile, err := getBuildFromFile(avgTimeFlags.buildFilePath) + if err != nil { + return fmt.Errorf("error finding build file: %w", err) + } + steps := getBuildStepIDs(buildFile) + avgTimeFlags.buildStepID = promptSelect("Select build step to compute average", steps) + } + + // if no explicit start time, default to starting computation from one month ago. + if avgTimeFlags.lookUpStart == "" { + avgTimeFlags.lookUpStart = time.Now().AddDate(0, -1, 0).Format("01-02-2006") + Log.Info("No start time specified.", "default", avgTimeFlags.lookUpStart) + } + + startTime, err := getTimeFromStr(avgTimeFlags.lookUpStart) + if err != nil { + return fmt.Errorf("error converting %s to time: %w", avgTimeFlags.lookUpStart, err) + } + avgTimeFlags.lookUpStartTime = startTime + + // if no explicit end time, default to ending computation to now. + if avgTimeFlags.lookUpEnd == "" { + avgTimeFlags.lookUpEnd = time.Now().Format("01-02-2006") + Log.Info("No end time specified.", "default", avgTimeFlags.lookUpEnd) + } + + endTime, err := getTimeFromStr(avgTimeFlags.lookUpEnd) + if err != nil { + return fmt.Errorf("error converting %s to time: %w", avgTimeFlags.lookUpEnd, err) + } + avgTimeFlags.lookUpEndTime = endTime + return nil +} diff --git a/cli/bpbuild/git.go b/cli/bpbuild/git.go new file mode 100644 index 00000000000..0076a62f91a --- /dev/null +++ b/cli/bpbuild/git.go @@ -0,0 +1,36 @@ +package bpbuild + +import ( + "fmt" + "net/url" + "strings" + + "github.com/go-git/go-git/v5" +) + +const defaultRemote = "origin" + +// getRepoName finds upstream repo name from a given repo directory +func getRepoName(dir string) (string, error) { + r, err := git.PlainOpen(dir) + if err != nil { + return "", fmt.Errorf("error opening git dir %s: %w", dir, err) + } + rm, err := r.Remote(defaultRemote) + if err != nil { + return "", fmt.Errorf("error finding remote %s in git dir %s: %w", defaultRemote, dir, err) + } + + // validate remote URL + remoteURL, err := url.Parse(rm.Config().URLs[0]) + if err != nil { + return "", fmt.Errorf("error parsing remote URL: %w", err) + } + trimmedRemotePath := strings.TrimSuffix(remoteURL.Path, "/") + splitRemotePath := strings.Split(trimmedRemotePath, "/") + // expect path to be /owner/repo + if len(splitRemotePath) != 3 { + return "", fmt.Errorf("expected owner/repo, got %s", trimmedRemotePath) + } + return splitRemotePath[len(splitRemotePath)-1], nil +} diff --git a/cli/bpbuild/git_test.go b/cli/bpbuild/git_test.go new file mode 100644 index 00000000000..30d5e89efe1 --- /dev/null +++ b/cli/bpbuild/git_test.go @@ -0,0 +1,79 @@ +package bpbuild + +import ( + "testing" + + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/config" +) + +func TestGetRepoName(t *testing.T) { + tests := []struct { + name string + repo string + remote string + want string + wantErr bool + }{ + { + name: "simple", + repo: "https://github.com/foo/bar", + remote: defaultRemote, + want: "bar", + }, + { + name: "simple trailing", + repo: "https://gitlab.com/foo/bar/", + remote: defaultRemote, + want: "bar", + }, + { + name: "no scheme", + repo: "github.com/foo/bar", + remote: defaultRemote, + want: "bar", + }, + { + name: "invalid path", + repo: "github.com/foo/bar/baz", + remote: defaultRemote, + wantErr: true, + }, + { + name: "invalid remote", + repo: "github.com/foo/bar", + remote: "foo", + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + dir := tempGitRepoWithRemote(t, tt.repo, tt.remote) + got, err := getRepoName(dir) + if (err != nil) != tt.wantErr { + t.Errorf("getRepoName() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("getRepoName() = %v, want %v", got, tt.want) + } + }) + } +} + +func tempGitRepoWithRemote(t *testing.T, repoURL, remote string) string { + t.Helper() + dir := t.TempDir() + r, err := git.PlainInit(dir, true) + if err != nil { + t.Fatalf("Error creating git repo in tempdir: %v", err) + } + _, err = r.CreateRemote(&config.RemoteConfig{ + Name: remote, + URLs: []string{repoURL}, + }) + if err != nil { + t.Fatalf("Error creating remote in tempdir repo: %v", err) + } + return dir +} diff --git a/cli/bpbuild/main.go b/cli/bpbuild/main.go new file mode 100644 index 00000000000..7664aa27622 --- /dev/null +++ b/cli/bpbuild/main.go @@ -0,0 +1,8 @@ +package bpbuild + +import ( + log "github.com/inconshreveable/log15" +) + +// bpbuild log15 handler +var Log = log.New() diff --git a/cli/bpbuild/prompt.go b/cli/bpbuild/prompt.go new file mode 100644 index 00000000000..e3aa626ad10 --- /dev/null +++ b/cli/bpbuild/prompt.go @@ -0,0 +1,28 @@ +package bpbuild + +import ( + "fmt" + "os" + "strings" + + "github.com/manifoldco/promptui" +) + +// promptSelect prompts a user to select a value from given items. +func promptSelect(label string, items []string) string { + prompt := promptui.Select{ + Label: label, + Items: items, + Searcher: func(input string, index int) bool { + return strings.Contains(items[index], input) + }, + StartInSearchMode: true, + } + _, result, err := prompt.Run() + if err != nil { + fmt.Printf("Prompt failed %v\n", err) + os.Exit(1) + } + fmt.Printf("Selected build step: %s\n", result) + return result +} diff --git a/cli/bpbuild/time.go b/cli/bpbuild/time.go new file mode 100644 index 00000000000..6829937dc22 --- /dev/null +++ b/cli/bpbuild/time.go @@ -0,0 +1,21 @@ +package bpbuild + +import "time" + +// durationAvg calculates avg for a given slice of durations. +func durationAvg(durations []time.Duration) time.Duration { + if len(durations) < 1 { + return time.Duration(0) + } + var total time.Duration + for _, d := range durations { + total += d + } + avg := total.Seconds() / float64(len(durations)) + return time.Duration(avg * float64(time.Second)) +} + +// getTimeFromStr parses string formatted MM-DD-YYY as time. +func getTimeFromStr(t string) (time.Time, error) { + return time.Parse("01-02-2006", t) +} diff --git a/cli/bpbuild/time_test.go b/cli/bpbuild/time_test.go new file mode 100644 index 00000000000..7934f4491d9 --- /dev/null +++ b/cli/bpbuild/time_test.go @@ -0,0 +1,42 @@ +package bpbuild + +import ( + "testing" + "time" +) + +func TestDurationAvg(t *testing.T) { + tests := []struct { + name string + durations []time.Duration + want time.Duration + }{ + { + name: "single", + durations: []time.Duration{time.Hour}, + want: time.Hour, + }, + { + name: "multiple", + durations: []time.Duration{time.Hour, time.Hour}, + want: time.Hour, + }, + { + name: "mixed", + durations: []time.Duration{time.Hour, 2 * time.Hour, 2 * time.Hour, 3 * time.Hour}, + want: 2 * time.Hour, + }, + { + name: "empty", + durations: []time.Duration{}, + want: time.Duration(0), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := durationAvg(tt.durations); got != tt.want { + t.Errorf("durationAvg() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/cli/cmd/root.go b/cli/cmd/root.go index 6e3c1611c33..b7194f878d4 100644 --- a/cli/cmd/root.go +++ b/cli/cmd/root.go @@ -3,6 +3,7 @@ package cmd import ( "os" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpbuild" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bptest" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/report" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/scorecard" @@ -28,6 +29,7 @@ var rootCmd = &cobra.Command{ // discard logs scorecard.Log.SetHandler(log.DiscardHandler()) bptest.Log.SetHandler(log.DiscardHandler()) + bpbuild.Log.SetHandler(log.DiscardHandler()) } // We want to dump to stdout by default cmd.SetOut(cmd.OutOrStdout()) @@ -74,6 +76,7 @@ Use "{{.CommandPath}} [command] --help" for more information about a command.{{e rootCmd.AddCommand(scorecard.Cmd) rootCmd.AddCommand(report.Cmd) rootCmd.AddCommand(bptest.Cmd) + rootCmd.AddCommand(bpbuild.Cmd) } func Execute() { diff --git a/cli/go.mod b/cli/go.mod index a62fec1093c..cb330999360 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -8,12 +8,15 @@ require ( github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355 github.com/briandowns/spinner v1.16.0 + github.com/fatih/color v1.13.0 // indirect github.com/gammazero/workerpool v1.1.2 + github.com/go-git/go-git/v5 v5.4.2 // indirect github.com/golang/protobuf v1.5.2 github.com/google/go-cmp v0.5.6 github.com/iancoleman/strcase v0.2.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/jedib0t/go-pretty/v6 v6.2.4 + github.com/manifoldco/promptui v0.9.0 // indirect github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible // indirect github.com/open-policy-agent/opa v0.34.2 diff --git a/cli/go.sum b/cli/go.sum index 58b744d5929..1895288389d 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -109,6 +109,8 @@ github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF0 github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.3/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -116,6 +118,8 @@ github.com/OneOfOne/xxhash v1.2.7/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdII github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= +github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= +github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= @@ -127,6 +131,8 @@ github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWX github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= +github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= @@ -138,6 +144,7 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5 github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= @@ -151,6 +158,7 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= @@ -199,6 +207,7 @@ github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1 github.com/charithe/durationcheck v0.0.6/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= github.com/chavacava/garif v0.0.0-20210405163807-87a70f3d418b/go.mod h1:Qjyv4H3//PWVzTeCezG2b9IRn6myJxJSr4TD/xo6ojU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= @@ -276,6 +285,8 @@ github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1/go.mod h1:Ro8st/El github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -298,7 +309,10 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= @@ -317,12 +331,21 @@ github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2H github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-critic/go-critic v0.5.6/go.mod h1:cVjj0DfqewQVIlIAGexPCaGaZDAqGE29PYDDADIVNEo= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= +github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= +github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -710,13 +733,18 @@ github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty/v6 v6.2.4 h1:wdaj2KHD2W+mz8JgJ/Q6L/T5dB7kyqEFI16eLq7GEmk= github.com/jedib0t/go-pretty/v6 v6.2.4/go.mod h1:+nE9fyyHGil+PuISTCrp7avEdo6bqoMwqZnuiK2r2a0= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jgautheron/goconst v1.4.0/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= github.com/jingyugao/rowserrcheck v0.0.0-20210315055705-d907ca737bb1/go.mod h1:TOQpc2SLx6huPfoFGK3UOnEG+u02D3C1GeosjupAKCA= @@ -750,6 +778,8 @@ github.com/julz/importas v0.0.0-20210419104244-841f0c0fe66d/go.mod h1:oSFU2R4XK/ github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= +github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -768,6 +798,7 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= 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/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -803,16 +834,21 @@ github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7 github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -820,6 +856,8 @@ github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcME github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.0-20181025052659-b20a3daf6a39/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -847,6 +885,7 @@ github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceT github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= @@ -1073,6 +1112,7 @@ github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/securego/gosec/v2 v2.7.0/go.mod h1:xNbGArrGUspJLuz3LS5XCY1EBW/0vABAl/LWfSklmiM= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= github.com/shirou/gopsutil/v3 v3.21.4/go.mod h1:ghfMypLDrFSWN2c9cDYFLHyynQ+QUht0cv/18ZqVczw= @@ -1185,6 +1225,8 @@ github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= +github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= +github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= @@ -1268,6 +1310,7 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/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-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= @@ -1285,6 +1328,8 @@ golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1385,6 +1430,7 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1452,6 +1498,7 @@ golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1501,9 +1548,11 @@ golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1834,6 +1883,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -1853,6 +1903,7 @@ gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= From d3d1df3edfd437c50ea73bd4389e623c3676a75f Mon Sep 17 00:00:00 2001 From: Mauro Santos <103214014+mauro-cit@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:33:24 -0300 Subject: [PATCH 0149/1371] feat: increase maximum buffer size for cft cli output reader (#1228) * Adding a higher maximum token size to NewBuffer * Adding the buffer size to a const * Adjusting maxScanTokenSize constant value * Adding explanation comments for the new buffer constants Co-authored-by: Bharath KKB --- cli/bptest/run.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cli/bptest/run.go b/cli/bptest/run.go index 0334db9692f..99ba709edb4 100644 --- a/cli/bptest/run.go +++ b/cli/bptest/run.go @@ -19,6 +19,15 @@ const ( testStageEnvVarKey = "RUN_STAGE" gotestBin = "gotest" goBin = "go" + + // The tfplan.json files that are being used as input for the terraform validation tests + // through the gcloud beta terraform vet are higher than the buffer default value (64*1024), + // after some tests we had evidences that the value were arround from 3MB to 5MB, so + // we choosed a value that is at least 2x higher than the original one to avoid errors. + // maxScanTokenSize is the maximum size used to buffer a token + // startBufSize is the initial of the buffer token + maxScanTokenSize = 10 * 1024 * 1024 + startBufSize = 4096 ) var allTestArgs = []string{"-p", "1", "-count", "1", "-timeout", "0"} @@ -73,6 +82,7 @@ func streamExec(cmd *exec.Cmd) error { go func() { defer wg.Done() scanner := bufio.NewScanner(op) + scanner.Buffer(make([]byte, startBufSize), maxScanTokenSize) for scanner.Scan() { fmt.Println(scanner.Text()) } From 85dbcb03889417f083ef1a0bca349d8693ad5c93 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 22 Aug 2022 13:22:34 -0500 Subject: [PATCH 0150/1371] chore: release CLI v0.4.5 (#1230) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 97deb693da9..acb530d15bf 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.4.4 +VERSION=v0.4.5 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From 4e9b833071f920c6dd3fbb00771522dd4782c543 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 22 Aug 2022 18:33:58 -0500 Subject: [PATCH 0151/1371] Update Tools to 1.5.12 (#1214) Update tools to 1.5.12 --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 67e39399a5a..6fb5a99fb7d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.2.6 +TERRAFORM_VERSION := 1.2.7 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 396.0.0 +CLOUD_SDK_VERSION := 398.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -29,11 +29,11 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.0 # Hold KPT at 1.0.0-beta.15 till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 KPT_VERSION := 1.0.0-beta.15 -CFT_CLI_VERSION := 0.4.4 +CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 -KUBECTL_VERSION := 1.23.9 +KUBECTL_VERSION := 1.23.10 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.11 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.12 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From f93548cc80fd74d3f21028e8f73bcbd55425df44 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 29 Aug 2022 16:22:09 -0500 Subject: [PATCH 0152/1371] chore: add doc samples to CI (#1235) --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 1 + 2 files changed, 2 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 10d332e3afc..739ea17aea2 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -30,6 +30,7 @@ locals { "cloud-foundation-training" = "cloud-foundation-training", "example-foundation-app" = "terraform-example-foundation-app", "anthos-samples" = "anthos-samples" + "docs-samples" = "terraform-docs-samples" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 7f1f57df2c9..e73eb64cdf2 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -85,6 +85,7 @@ locals { "data-fusion", "module-template", "vault", + "docs-samples", ] # These should also be added to test-org/github/branch.tf#L19 till the todo is resolved. gcp_org_modules = [ From d432cd19d68220ac2dfc2335c28733e0f7189927 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 29 Aug 2022 17:50:22 -0700 Subject: [PATCH 0153/1371] feat:adds base commands for blueprint metadata --- cli/bpmetadata/cmd.go | 28 ++++++++++++++++++++++++++++ cli/bpmetadata/main.go | 8 ++++++++ cli/cmd/blueprint.go | 28 ++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 cli/bpmetadata/cmd.go create mode 100644 cli/bpmetadata/main.go create mode 100644 cli/cmd/blueprint.go diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go new file mode 100644 index 00000000000..4e55c856cec --- /dev/null +++ b/cli/bpmetadata/cmd.go @@ -0,0 +1,28 @@ +package bpmetadata + +import ( + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var mdFlags struct { + path string + nested bool +} + +func init() { + viper.AutomaticEnv() + + Cmd.Flags().StringVar(&mdFlags.path, "path", ".", "Path to the blueprint for generating metadata.") + Cmd.Flags().BoolVar(&mdFlags.nested, "nested", true, "Flag for generating metadata for nested blueprint, if any.") +} + +var Cmd = &cobra.Command{ + Use: "metadata", + Short: "Generates blueprint metatda", + Long: `Generates metadata.yaml for specified blueprint`, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + cmd.Println("command under construction") + }, +} diff --git a/cli/bpmetadata/main.go b/cli/bpmetadata/main.go new file mode 100644 index 00000000000..59f70ada1d9 --- /dev/null +++ b/cli/bpmetadata/main.go @@ -0,0 +1,8 @@ +package bpmetadata + +import ( + log "github.com/inconshreveable/log15" +) + +// bpmetadata log15 handler +var Log = log.New() diff --git a/cli/cmd/blueprint.go b/cli/cmd/blueprint.go new file mode 100644 index 00000000000..d61fc255b4b --- /dev/null +++ b/cli/cmd/blueprint.go @@ -0,0 +1,28 @@ +package cmd + +import ( + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpbuild" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bptest" + "github.com/spf13/cobra" +) + +func init() { + blueprintCmd.AddCommand(bpmetadata.Cmd) + blueprintCmd.AddCommand(bpbuild.Cmd) + blueprintCmd.AddCommand(bptest.Cmd) + + rootCmd.AddCommand(blueprintCmd) +} + +var blueprintCmd = &cobra.Command{ + Use: "blueprint", + Short: "Blueprint CLI", + Long: `The CFT blueprint CLI is used to execute commands specific to blueprints such as test, builds & metadata`, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + if args == nil || len(args) == 0 { + cmd.HelpFunc()(cmd, args) + } + }, +} From a284f164fccc58db86dfb8999b8013642e5d2bd7 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 30 Aug 2022 09:39:35 -0500 Subject: [PATCH 0154/1371] feat: blueprint-test file logger --- infra/blueprint-test/pkg/utils/logger.go | 34 ++++++++++++ infra/blueprint-test/pkg/utils/logger_test.go | 53 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 infra/blueprint-test/pkg/utils/logger_test.go diff --git a/infra/blueprint-test/pkg/utils/logger.go b/infra/blueprint-test/pkg/utils/logger.go index c6bfd03ee5f..dfd8655b458 100644 --- a/infra/blueprint-test/pkg/utils/logger.go +++ b/infra/blueprint-test/pkg/utils/logger.go @@ -17,9 +17,13 @@ package utils import ( + "fmt" + "io" + "os" "testing" "github.com/gruntwork-io/terratest/modules/logger" + terraTesting "github.com/gruntwork-io/terratest/modules/testing" ) // GetLoggerFromT returns a logger based on test verbosity @@ -29,3 +33,33 @@ func GetLoggerFromT() *logger.Logger { } return logger.Discard } + +// TestFileLogger is a logger that writes to disk instead of stdout. +// This is useful when you want to redirect verbose logs of long running tests to disk. +type TestFileLogger struct { + pth string + w io.WriteCloser +} + +// NewTestFileLogger returns a TestFileLogger logger that can be used with the WithLogger option. +func NewTestFileLogger(t *testing.T, pth string) (*logger.Logger, func(t *testing.T)) { + f, err := os.OpenFile(pth, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + t.Fatalf("error opening file %s: %v", pth, err) + } + fl := TestFileLogger{ + pth: pth, + w: f, + } + return logger.New(fl), fl.Close +} + +func (fl TestFileLogger) Logf(t terraTesting.TestingT, format string, args ...interface{}) { + logger.DoLog(t, 3, fl.w, fmt.Sprintf(format, args...)) +} + +func (fl TestFileLogger) Close(t *testing.T) { + if err := fl.w.Close(); err != nil { + t.Fatalf("error closing file logger %s: %v", fl.pth, err) + } +} diff --git a/infra/blueprint-test/pkg/utils/logger_test.go b/infra/blueprint-test/pkg/utils/logger_test.go new file mode 100644 index 00000000000..151d27c8996 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/logger_test.go @@ -0,0 +1,53 @@ +/** + * Copyright 2022 Google LLC + * + * 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 utils + +import ( + "fmt" + "os" + "path" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewTestFileLogger(t *testing.T) { + tests := []struct { + name string + content string + }{ + { + name: "simple", + content: "foo", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + testFile := path.Join(t.TempDir(), fmt.Sprintf("%s.log", tt.name)) + fl, flClose := NewTestFileLogger(t, testFile) + fl.Logf(t, tt.content) + flClose(t) + gotContent, err := os.ReadFile(testFile) + assert.NoError(err) + assert.Contains(string(gotContent), "foo") + // assert we are wrapping logger.DoLog which prints stack/test info + assert.Contains(string(gotContent), fmt.Sprintf("TestNewTestFileLogger/%s", tt.name)) + assert.Contains(string(gotContent), "logger_test.go") + }) + } +} From 569e9037501de76fdd3f9dc6cfe7875131ca29db Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 30 Aug 2022 20:05:22 -0500 Subject: [PATCH 0155/1371] chore(master): release blueprint-test 0.3.0 (#1227) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3933e666919..660c28b366b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.2.0" + "infra/blueprint-test": "0.3.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 47af1a74c9a..9ace59a47ce 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.3.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.2.0...infra/blueprint-test/v0.3.0) (2022-08-30) + + +### Features + +* add project ID param to tft vet ([#1226](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1226)) ([e95dc64](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e95dc64d9b4596135cfc8bac481402c739e1c6a4)) +* blueprint-test file logger ([a284f16](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/a284f164fccc58db86dfb8999b8013642e5d2bd7)) + ## [0.2.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.1.0...infra/blueprint-test/v0.2.0) (2022-08-03) From 567e290067752628028f7cee6d85d1d4da9a4f70 Mon Sep 17 00:00:00 2001 From: Ryota Tokodai <108810788+ryotat7@users.noreply.github.com> Date: Fri, 9 Sep 2022 04:49:49 +0900 Subject: [PATCH 0156/1371] chore: add log-analysis blueprint to CI (#1239) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index e73eb64cdf2..4786e1c8a40 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -100,5 +100,6 @@ locals { "secret-manager", "load-balanced-vms", "three-tier-app", + "log-analysis", ] } From 95540666341187049899dd89a4b9c8d82e9dbc29 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 12 Sep 2022 18:04:35 -0500 Subject: [PATCH 0157/1371] Update Tools to 1.5.13 (#1231) Update tools to 1.5.13 --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 6fb5a99fb7d..6558896743f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.2.7 +TERRAFORM_VERSION := 1.2.9 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 398.0.0 +CLOUD_SDK_VERSION := 401.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -33,7 +33,7 @@ CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.10 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.12 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.13 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 23e0caae26bbfaa84d93c66c56d56b2a7c75a3e6 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 14 Sep 2022 11:55:11 -0500 Subject: [PATCH 0158/1371] chore: add CI for vod blueprint with a fixed test project (#1240) chore: add ci for vod blueprint with a fixed test project --- .../terraform/test-org/ci-triggers/locals.tf | 2 ++ .../test-org/ci-triggers/triggers.tf | 1 + infra/terraform/test-org/org/locals.tf | 1 + infra/terraform/test-org/org/outputs.tf | 4 +++ infra/terraform/test-org/org/projects.tf | 36 +++++++++++++++++++ 5 files changed, 44 insertions(+) create mode 100644 infra/terraform/test-org/org/projects.tf diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 739ea17aea2..d4e2701f940 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -57,4 +57,6 @@ locals { _SFB_CLOUDBUILD_PROJECT_ID : data.terraform_remote_state.sfb-bootstrap.outputs.cloudbuild_project_id, _SFB_TF_SA_NAME : data.terraform_remote_state.sfb-bootstrap.outputs.terraform_sa_name, } + # vod test project id + vod_test_project_id = data.terraform_remote_state.org.outputs.ci_media_cdn_vod_project_id } diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 844f3170c66..2fb568fdc4c 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -50,6 +50,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { _FOLDER_ID = each.value.folder_id _ORG_ID = local.org_id _BILLING_IAM_TEST_ACCOUNT = each.key == "terraform-google-iam" ? local.billing_iam_test_account : null + _VOD_TEST_PROJECT_ID = each.key == "terraform-google-media-cdn-vod" ? local.vod_test_project_id : null }, # add sfb substitutions contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 4786e1c8a40..0744321abe2 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -101,5 +101,6 @@ locals { "load-balanced-vms", "three-tier-app", "log-analysis", + "media-cdn-vod", ] } diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index 22c63f54a6f..0df7bd70c3b 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -90,3 +90,7 @@ output "ci_bq_external_hive_file_bar" { output "prow_int_sa" { value = module.prow-int-sa-wi.gcp_service_account_email } + +output "ci_media_cdn_vod_project_id" { + value = module.ci_media_cdn_vod_project.project_id +} diff --git a/infra/terraform/test-org/org/projects.tf b/infra/terraform/test-org/org/projects.tf new file mode 100644 index 00000000000..33232331580 --- /dev/null +++ b/infra/terraform/test-org/org/projects.tf @@ -0,0 +1,36 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +module "ci_media_cdn_vod_project" { + source = "terraform-google-modules/project-factory/google" + version = "~> 13.0" + + name = "ci-media-cdn-vod-project" + project_id = "ci-media-cdn-vod-project" + org_id = local.org_id + folder_id = module.folders-ci.ids["ci-media-cdn-vod"] + billing_account = local.billing_account + + labels = { + cft-ci = "permanent" + } + + activate_apis = [ + "cloudresourcemanager.googleapis.com", + "compute.googleapis.com", + "iam.googleapis.com", + ] +} From 8ab9228a56c69a5d05ecb84198773384cf7be2f1 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Fri, 16 Sep 2022 15:27:35 -0700 Subject: [PATCH 0159/1371] feat:initial flow and type for bpmetadata export (#1241) --- cli/bpmetadata/cmd.go | 54 +++++++++++++++++- cli/bpmetadata/repo.go | 79 +++++++++++++++++++++++++++ cli/bpmetadata/repo_test.go | 55 +++++++++++++++++++ cli/bpmetadata/types.go | 106 ++++++++++++++++++++++++++++++++++++ cli/go.mod | 9 +-- cli/go.sum | 52 +++++++++++++----- cli/util/git.go | 48 ++++++++++++++++ cli/util/git_test.go | 79 +++++++++++++++++++++++++++ 8 files changed, 460 insertions(+), 22 deletions(-) create mode 100644 cli/bpmetadata/repo.go create mode 100644 cli/bpmetadata/repo_test.go create mode 100644 cli/bpmetadata/types.go create mode 100644 cli/util/git.go create mode 100644 cli/util/git_test.go diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 4e55c856cec..ee8aca589c8 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -1,8 +1,13 @@ package bpmetadata import ( + "fmt" + "os" + "path" + "github.com/spf13/cobra" "github.com/spf13/viper" + "sigs.k8s.io/kustomize/kyaml/yaml" ) var mdFlags struct { @@ -22,7 +27,50 @@ var Cmd = &cobra.Command{ Short: "Generates blueprint metatda", Long: `Generates metadata.yaml for specified blueprint`, Args: cobra.NoArgs, - Run: func(cmd *cobra.Command, args []string) { - cmd.Println("command under construction") - }, + RunE: generate, +} + +// The top-level command function that generates metadata based on the provided flags +func generate(cmd *cobra.Command, args []string) error { + wdPath, err := os.Getwd() + if err != nil { + return fmt.Errorf("error getting working dir: %w", err) + } + + // create metadata details + bpPath := path.Join(wdPath, mdFlags.path) + err = CreateBlueprintMetadata(bpPath) + if err != nil { + return fmt.Errorf("error creating metadata for blueprint: %w", err) + } + + // TODO: write metadata to metadata.yaml + + return nil +} + +func CreateBlueprintMetadata(bpPath string) error { + // verfiy that the blueprint path is valid & get repo details + repoDetails, err := getRepoDetailsByPath(bpPath) + if err != nil { + return err + } + + // start creating blueprint metadata + var bpMetadataObj = &BlueprintMetadata{} + bpMetadataObj.Meta = yaml.ResourceMeta{ + TypeMeta: yaml.TypeMeta{ + APIVersion: "blueprints.cloud.google.com/v1alpha1", + Kind: "BlueprintMetadata", + }, + ObjectMeta: yaml.ObjectMeta{ + NameMeta: yaml.NameMeta{ + Name: repoDetails.Name, + Namespace: "", + }, + Annotations: map[string]string{"config.kubernetes.io/local-config": "true"}, + }, + } + + return nil } diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go new file mode 100644 index 00000000000..245dfde9012 --- /dev/null +++ b/cli/bpmetadata/repo.go @@ -0,0 +1,79 @@ +package bpmetadata + +import ( + "fmt" + "regexp" + "strings" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" +) + +type repoDetail struct { + Name string + Source *repoSource +} + +type repoSource struct { + Path string + SourceType string +} + +const ( + bpUrlRegEx = "(.*terraform-google-[^/]+)/?(modules/.*)?" + nestedBpPath = "modules/" +) + +// getRepoDetailsByPath takes a local path for a blueprint and tries +// to get repo details that include its name, path and type +func getRepoDetailsByPath(bpPath string) (*repoDetail, error) { + bpPath = strings.TrimSuffix(bpPath, "/") + repoPath, err := getBpPathForRepoName(bpPath) + if err != nil { + return nil, fmt.Errorf("error getting the repo path from the provided blueprint path: %w", err) + } + + repoName, err := util.GetRepoName(repoPath) + if err != nil { + return nil, fmt.Errorf("error getting the repo name from the provided local repo path: %w", err) + } + + repoUrl, err := util.GetRepoUrl(repoPath) + if err != nil { + return nil, fmt.Errorf("error getting the repo URL from the provided local repo path: %w", err) + } + + return &repoDetail{ + Name: repoName, + Source: &repoSource{ + Path: repoUrl, + SourceType: "git", + }, + }, nil +} + +// getBpPathForRepoName verifies if the blueprint follows blueprint +// naming conventions and returns the local path for the repo root +func getBpPathForRepoName(bpPath string) (string, error) { + r := regexp.MustCompile(bpUrlRegEx) + matches := r.FindStringSubmatch(bpPath) + + // not a valid blueprint path if there is no match + if matches == nil { + return "", fmt.Errorf("provided blueprint path is not valid: %s", bpPath) + } + + // if matched, matches should haveexactly 3 items, + // [0] for the match and [1] for root repo path and [2] + // for the nested blueprint name + if len(matches) != 3 { + return "", fmt.Errorf("provided nested blueprint path is not valid: %s. It should be under the %s directory", bpPath, nestedBpPath) + } + + // check if the path has a nested blueprint + // and under the right directory + if len(bpPath) != len(matches[1]) && matches[2] == "" { + return "", fmt.Errorf("provided nested blueprint path is not valid: %s. It should be under the %s directory", bpPath, nestedBpPath) + } + + return matches[1], nil +} diff --git a/cli/bpmetadata/repo_test.go b/cli/bpmetadata/repo_test.go new file mode 100644 index 00000000000..57f2f646719 --- /dev/null +++ b/cli/bpmetadata/repo_test.go @@ -0,0 +1,55 @@ +package bpmetadata + +import ( + "testing" +) + +func TestGetBpRepoPath(t *testing.T) { + tests := []struct { + name string + path string + want string + wantErr bool + }{ + { + name: "simple", + path: "testdata/bpmetadata/terraform-google-bp01", + want: "testdata/bpmetadata/terraform-google-bp01", + wantErr: false, + }, + { + name: "one level nested", + path: "testdata/bpmetadata/terraform-google-bp01/modules/bp01-01", + want: "testdata/bpmetadata/terraform-google-bp01", + wantErr: false, + }, + { + name: "two level nested", + path: "testdata/bpmetadata/terraform-google-bp01/modules/bp01-01/subbp01-01", + want: "testdata/bpmetadata/terraform-google-bp01", + wantErr: false, + }, + { + name: "invalid top level", + path: "testdata/bpmetadata/erraform-google-bp01", + wantErr: true, + }, + { + name: "invalid nested", + path: "testdata/bpmetadata/terraform-google-bp01/test/bp01-01", + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := getBpPathForRepoName(tt.path) + if (err != nil) != tt.wantErr { + t.Errorf("getBpPathForRepoName() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("getBpPathForRepoName() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go new file mode 100644 index 00000000000..ceabf7c3135 --- /dev/null +++ b/cli/bpmetadata/types.go @@ -0,0 +1,106 @@ +package bpmetadata + +import "sigs.k8s.io/kustomize/kyaml/yaml" + +// BlueprintMetadata defines the overall structure for blueprint metadata details +type BlueprintMetadata struct { + Meta yaml.ResourceMeta + Spec *BlueprintMetadataSpec `yaml:"spec"` +} + +// BlueprintMetadataSpec defines the spec portion of the blueprint metadata +type BlueprintMetadataSpec struct { + Info BlueprintInfo + Content BlueprintContent + Interfaces BlueprintInterface + Security BlueprintSecurity +} + +// BlueprintInfo defines informational detail for the blueprint +type BlueprintInfo struct { + Title string `yaml:"title"` + Source *BlueprintRepoDetail `yaml:"source"` + Version string + ActuationTool *BlueprintActuationTool + Description *BlueprintDescription + Icon string +} + +// BlueprintContent defines the detail for blueprint related content such as +// related documentation, diagrams, examples etc. +type BlueprintContent struct { + Diagrams []BlueprintDiagram + Documentation []BlueprintDocumentation + SubBlueprints []BlueprintMiscContent + Examples []BlueprintMiscContent +} + +// BlueprintInterface the input and output variables for the blueprint +type BlueprintInterface struct { + Variables []BlueprintVariable + VariableGroups []BlueprintVariableGroup + Outputs []BlueprintOutputs +} + +// BlueprintSecurity defines the roles required and the assocaited services +// that need to be enabled to provision blueprint resources +type BlueprintSecurity struct { + Roles []BlueprintRoles + Services []string +} + +type BlueprintRepoDetail struct { + Path string `yaml:"path"` + SourceType string `yaml:"type" default:"git"` +} + +type BlueprintActuationTool struct { + Flavor string `yaml:"type"` + Version string +} + +type BlueprintDescription struct { + Tagline string + Detailed string + PreDeploy string +} + +type BlueprintMiscContent struct { + Name string + Location string +} + +type BlueprintDiagram struct { + Name string + AltText string + Description string +} + +type BlueprintDocumentation struct { + Title string + Url string +} + +type BlueprintVariable struct { + Name string + Description string + VarType string `yaml:"type"` + Default string + Required bool +} + +type BlueprintVariableGroup struct { + Name string + Description string + Variables []string +} + +type BlueprintOutputs struct { + Name string + Description string +} + +type BlueprintRoles struct { + Granularity string + Roles []string +} diff --git a/cli/go.mod b/cli/go.mod index cb330999360..f4606641763 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -8,26 +8,27 @@ require ( github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355 github.com/briandowns/spinner v1.16.0 - github.com/fatih/color v1.13.0 // indirect + github.com/fatih/color v1.13.0 github.com/gammazero/workerpool v1.1.2 - github.com/go-git/go-git/v5 v5.4.2 // indirect + github.com/go-git/go-git/v5 v5.4.2 github.com/golang/protobuf v1.5.2 github.com/google/go-cmp v0.5.6 github.com/iancoleman/strcase v0.2.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/jedib0t/go-pretty/v6 v6.2.4 - github.com/manifoldco/promptui v0.9.0 // indirect + github.com/manifoldco/promptui v0.9.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible // indirect github.com/open-policy-agent/opa v0.34.2 github.com/otiai10/copy v1.6.0 github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.2.1 + github.com/spf13/cobra v1.4.0 github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.7.0 google.golang.org/api v0.58.0 google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 gopkg.in/yaml.v2 v2.4.0 + sigs.k8s.io/kustomize/kyaml v0.13.9 sigs.k8s.io/yaml v1.2.0 ) diff --git a/cli/go.sum b/cli/go.sum index 1895288389d..2b9decb6097 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -144,6 +144,7 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5 github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -158,6 +159,7 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= @@ -206,9 +208,11 @@ github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/charithe/durationcheck v0.0.6/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= github.com/chavacava/garif v0.0.0-20210405163807-87a70f3d418b/go.mod h1:Qjyv4H3//PWVzTeCezG2b9IRn6myJxJSr4TD/xo6ojU= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -240,6 +244,7 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc= @@ -307,7 +312,6 @@ github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZM github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -327,10 +331,12 @@ github.com/gammazero/deque v0.1.0 h1:f9LnNmq66VDeuAlSAapemq/U7hJ2jpIWa4c09q8Dlik github.com/gammazero/deque v0.1.0/go.mod h1:KQw7vFau1hHuM8xmI9RbgKFbAsQFWmBpqQ2KenFLk6M= github.com/gammazero/workerpool v1.1.2 h1:vuioDQbgrz4HoaCi2q1HLlOXdpbap5AET7xu5/qj87g= github.com/gammazero/workerpool v1.1.2/go.mod h1:UelbXcO0zCIGFcufcirHhq2/xtLXJdQ29qZNlXG9OjQ= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= @@ -343,6 +349,7 @@ github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4u github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= @@ -582,6 +589,8 @@ github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB github.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +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/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= @@ -731,7 +740,6 @@ github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= @@ -798,6 +806,7 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= 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 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= @@ -840,12 +849,12 @@ github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpAp github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -854,7 +863,6 @@ github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= @@ -937,7 +945,6 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nishanths/exhaustive v0.1.0/go.mod h1:S1j9110vxV1ECdCudXRkeMnFQ/DQk9ajLT0Uf2MYZQQ= github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= @@ -1101,6 +1108,7 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ= github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -1151,8 +1159,9 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1237,6 +1246,7 @@ github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b h1:vVRagRXf67ESqAb72hG2C/ZwI8NtJF2u2V76EsuOHGY= github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b/go.mod h1:HptNXiXVDcJjXe9SqMd0v2FsL9f8dz4GnXgltU6q/co= @@ -1434,8 +1444,9 @@ golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5o golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= 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= @@ -1563,12 +1574,14 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678 h1:J27LZFQBFoihqXoegpscI10HpjZ7B5WQLLKL2FZXQKw= golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -1578,8 +1591,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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= @@ -1661,6 +1675,7 @@ golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -1799,6 +1814,7 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D 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-20200904004341-0bd0a958aa1d/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-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1875,14 +1891,15 @@ 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.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.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= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= @@ -1984,6 +2001,7 @@ k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= @@ -1995,8 +2013,9 @@ k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20220401212409-b28bf2818661 h1:nqYOUleKLC/0P1zbU29F5q6aoezM6MOAVz+iyfQbZ5M= +k8s.io/kube-openapi v0.0.0-20220401212409-b28bf2818661/go.mod h1:daOouuuwd9JXpv1L7Y34iV3yf6nxzipkKMWWlqlvK9M= k8s.io/kubectl v0.17.2 h1:QZR8Q6lWiVRjwKslekdbN5WPMp53dS/17j5e+oi5XVU= k8s.io/kubectl v0.17.2/go.mod h1:y4rfLV0n6aPmvbRCqZQjvOp3ezxsFgpqL+zF5jH/lxk= k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= @@ -2004,8 +2023,10 @@ k8s.io/metrics v0.17.2/go.mod h1:3TkNHET4ROd+NfzNxkjoVfQ0Ob4iZnaHmSEA4vYpwLw= k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20200912215256-4140de9c8800 h1:9ZNvfPvVIEsp/T1ez4GQuzCcCTEQWhovSofhqR73A6g= k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= @@ -2026,8 +2047,9 @@ sigs.k8s.io/controller-runtime v0.7.0/go.mod h1:pJ3YBrJiAqMAZKi6UVGuE98ZrroV1p+p sigs.k8s.io/controller-tools v0.2.2/go.mod h1:8SNGuj163x/sMwydREj7ld5mIMJu1cDanIfnx6xsU70= sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= -sigs.k8s.io/kustomize/kyaml v0.11.0 h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA= sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= +sigs.k8s.io/kustomize/kyaml v0.13.9 h1:Qz53EAaFFANyNgyOEJbT/yoIHygK40/ZcvU3rgry2Tk= +sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ85/nOXac4= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= diff --git a/cli/util/git.go b/cli/util/git.go new file mode 100644 index 00000000000..be676ceebdd --- /dev/null +++ b/cli/util/git.go @@ -0,0 +1,48 @@ +package util + +import ( + "fmt" + "net/url" + "strings" + + "github.com/go-git/go-git/v5" +) + +const defaultRemote = "origin" + +// getRepoName finds upstream repo name from a given repo directory +func GetRepoName(dir string) (string, error) { + remoteUrl, err := GetRepoUrl(dir) + if err != nil { + return "", fmt.Errorf("error getting remote URL: %w", err) + } + + trimmedRemotePath := strings.TrimSuffix(remoteUrl, "/") + splitRemotePath := strings.Split(trimmedRemotePath, "/") + // expect path to be /owner/repo + if len(splitRemotePath) != 3 { + return "", fmt.Errorf("expected owner/repo, got %s", trimmedRemotePath) + } + + return splitRemotePath[len(splitRemotePath)-1], nil +} + +// getRepoName finds upstream repo name from a given repo directory +func GetRepoUrl(dir string) (string, error) { + r, err := git.PlainOpen(dir) + if err != nil { + return "", fmt.Errorf("error opening git dir %s: %w", dir, err) + } + rm, err := r.Remote(defaultRemote) + if err != nil { + return "", fmt.Errorf("error finding remote %s in git dir %s: %w", defaultRemote, dir, err) + } + + // validate remote URL + remoteURL, err := url.Parse(rm.Config().URLs[0]) + if err != nil { + return "", fmt.Errorf("error parsing remote URL: %w", err) + } + + return remoteURL.Path, nil +} diff --git a/cli/util/git_test.go b/cli/util/git_test.go new file mode 100644 index 00000000000..be2885c2dd7 --- /dev/null +++ b/cli/util/git_test.go @@ -0,0 +1,79 @@ +package util + +import ( + "testing" + + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/config" +) + +func TestGetRepoName(t *testing.T) { + tests := []struct { + name string + repo string + remote string + want string + wantErr bool + }{ + { + name: "simple", + repo: "https://github.com/foo/bar", + remote: defaultRemote, + want: "bar", + }, + { + name: "simple trailing", + repo: "https://gitlab.com/foo/bar/", + remote: defaultRemote, + want: "bar", + }, + { + name: "no scheme", + repo: "github.com/foo/bar", + remote: defaultRemote, + want: "bar", + }, + { + name: "invalid path", + repo: "github.com/foo/bar/baz", + remote: defaultRemote, + wantErr: true, + }, + { + name: "invalid remote", + repo: "github.com/foo/bar", + remote: "foo", + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + dir := tempGitRepoWithRemote(t, tt.repo, tt.remote) + got, err := GetRepoName(dir) + if (err != nil) != tt.wantErr { + t.Errorf("getRepoName() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("getRepoName() = %v, want %v", got, tt.want) + } + }) + } +} + +func tempGitRepoWithRemote(t *testing.T, repoURL, remote string) string { + t.Helper() + dir := t.TempDir() + r, err := git.PlainInit(dir, true) + if err != nil { + t.Fatalf("Error creating git repo in tempdir: %v", err) + } + _, err = r.CreateRemote(&config.RemoteConfig{ + Name: remote, + URLs: []string{repoURL}, + }) + if err != nil { + t.Fatalf("Error creating remote in tempdir repo: %v", err) + } + return dir +} From 9f920472e0960d94d27957698ebf01d8a73e883d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 16 Sep 2022 15:54:42 -0700 Subject: [PATCH 0160/1371] fix: exempt mp4 files from whitespace and newline (#1244) --- .../developer-tools/build/scripts/task_helper_functions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 7915d9ff357..2dc2fe1f843 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -232,7 +232,7 @@ check_whitespace() { local rc echo "Checking for trailing whitespace" find_files . -print \ - | grep -v -E '\.(pyc|png|gz|tfvars)$' \ + | grep -v -E '\.(pyc|png|gz|tfvars|mp4)$' \ | compat_xargs grep -H -n '[[:blank:]]$' rc=$? if [[ ${rc} -eq 0 ]]; then @@ -243,7 +243,7 @@ check_whitespace() { fi echo "Checking for missing newline at end of file" find_files . -print \ - | grep -v -E '\.(png|gz|tfvars)$' \ + | grep -v -E '\.(png|gz|tfvars|mp4)$' \ | compat_xargs check_eof_newline return $((rc+$?)) } From 31e2550c2e14ba8eccdea8d5c13b351703859c5f Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 19 Sep 2022 11:27:56 -0500 Subject: [PATCH 0161/1371] Update Tools to 1.5.14 (#1242) Update tools to 1.5.14 --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 6558896743f..0ba6261f832 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.2.9 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 401.0.0 +CLOUD_SDK_VERSION := 402.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -31,9 +31,9 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.15 CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 -KUBECTL_VERSION := 1.23.10 +KUBECTL_VERSION := 1.23.11 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.13 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.14 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 8a9d8962e6926f02455a92424fd110d38370bc09 Mon Sep 17 00:00:00 2001 From: fbeevikm <91213908+fbeevikm@users.noreply.github.com> Date: Mon, 19 Sep 2022 13:59:28 -0400 Subject: [PATCH 0162/1371] feat: add golang to developer-tools-light (#1245) --- infra/build/Makefile | 2 +- infra/build/developer-tools-light/Dockerfile | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 0ba6261f832..5fc80e01f5e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -33,7 +33,7 @@ CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.11 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.5.14 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.6.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-light/Dockerfile b/infra/build/developer-tools-light/Dockerfile index 8a616bc284e..b5384c02533 100644 --- a/infra/build/developer-tools-light/Dockerfile +++ b/infra/build/developer-tools-light/Dockerfile @@ -19,13 +19,14 @@ ARG TERRAFORM_VERSION ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} RUN /install-hashicorp-tool "terraform" "$TERRAFORM_VERSION" -FROM alpine:3.13 +FROM alpine:3.15.4 RUN apk update && apk add --no-cache \ bash \ git \ wget \ python3 \ - jq + jq \ + go # Install Terraform COPY --from=installer /software/terraform /usr/local/bin/terraform From d79aa9586dd9f7ccaf4be5039e1986ccc196265b Mon Sep 17 00:00:00 2001 From: fbeevikm <91213908+fbeevikm@users.noreply.github.com> Date: Mon, 19 Sep 2022 15:02:47 -0400 Subject: [PATCH 0163/1371] fix: Fix vulnerability in developer-tools-light (#1246) * install golang to developer-tools-light dockerfile * Fix vulnerability in developer-tools-light --- infra/build/Makefile | 2 +- infra/build/developer-tools-light/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 5fc80e01f5e..2857c4e3de3 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -33,7 +33,7 @@ CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.11 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.6.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.6.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-light/Dockerfile b/infra/build/developer-tools-light/Dockerfile index b5384c02533..fcba433371e 100644 --- a/infra/build/developer-tools-light/Dockerfile +++ b/infra/build/developer-tools-light/Dockerfile @@ -19,7 +19,7 @@ ARG TERRAFORM_VERSION ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} RUN /install-hashicorp-tool "terraform" "$TERRAFORM_VERSION" -FROM alpine:3.15.4 +FROM alpine:3.15.6 RUN apk update && apk add --no-cache \ bash \ git \ From ba1a9181a127c98e81cea0b73e695902142af3f0 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 20 Sep 2022 16:31:10 -0500 Subject: [PATCH 0164/1371] feat: setup infra for filelogger (#1248) --- .../terraform/test-org/ci-triggers/locals.tf | 2 ++ infra/terraform/test-org/ci-triggers/logs.tf | 29 +++++++++++++++++++ .../test-org/ci-triggers/triggers.tf | 1 + 3 files changed, 32 insertions(+) create mode 100644 infra/terraform/test-org/ci-triggers/logs.tf diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index d4e2701f940..4ee1d70785f 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -59,4 +59,6 @@ locals { } # vod test project id vod_test_project_id = data.terraform_remote_state.org.outputs.ci_media_cdn_vod_project_id + # file logger opt-in + enable_file_log = { "terraform-docs-samples": true } } diff --git a/infra/terraform/test-org/ci-triggers/logs.tf b/infra/terraform/test-org/ci-triggers/logs.tf new file mode 100644 index 00000000000..b081d67e6dd --- /dev/null +++ b/infra/terraform/test-org/ci-triggers/logs.tf @@ -0,0 +1,29 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +module "filelogs_bucket" { + source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket" + version = "~> 3.3" + + name = "${local.project_id}-filelogs" + project_id = local.project_id + location = "us-central1" + + iam_members = [{ + role = "roles/storage.objectAdmin" + member = "group:${data.terraform_remote_state.org.outputs.cft_ci_group}" + }] +} diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 2fb568fdc4c..286baf16ccd 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -51,6 +51,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { _ORG_ID = local.org_id _BILLING_IAM_TEST_ACCOUNT = each.key == "terraform-google-iam" ? local.billing_iam_test_account : null _VOD_TEST_PROJECT_ID = each.key == "terraform-google-media-cdn-vod" ? local.vod_test_project_id : null + _FILE_LOGS_BUCKET = lookup(local.enable_file_log, each.key, false) ? module.filelogs_bucket.url : null }, # add sfb substitutions contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} From 69b6673adc94209662f4a990aae4e84df5212ec0 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 23 Sep 2022 13:47:37 -0500 Subject: [PATCH 0165/1371] Update Tools to 1.7.0 (#1249) * Update tools to 1.6.2 * Update Makefile Co-authored-by: Bharath KKB --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 2857c4e3de3..24475f3e3f2 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.2.9 +TERRAFORM_VERSION := 1.3.0 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 402.0.0 +CLOUD_SDK_VERSION := 403.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -31,9 +31,9 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.15 CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 -KUBECTL_VERSION := 1.23.11 +KUBECTL_VERSION := 1.23.12 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.6.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.7.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 8d731102d9becaaa245ea2587c4ea65b9cdbce40 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 3 Oct 2022 23:32:42 -0700 Subject: [PATCH 0166/1371] feat:adds tf and markdown config data generation for bpmetadata --- cli/bpmetadata/cmd.go | 112 +++++- cli/bpmetadata/markdown.go | 92 +++++ cli/bpmetadata/markdown_test.go | 149 ++++++++ cli/bpmetadata/repo.go | 2 + cli/bpmetadata/tfconfig.go | 358 ++++++++++++++++++ cli/bpmetadata/tfconfig_test.go | 208 ++++++++++ cli/bpmetadata/types.go | 26 +- cli/go.mod | 6 +- cli/go.sum | 37 +- cli/testdata/bpmetadata/md/list-content.md | 31 ++ cli/testdata/bpmetadata/md/simple-content.md | 13 + cli/testdata/bpmetadata/tf/main.tf | 105 +++++ .../bpmetadata/tf/sample-module/outputs.tf | 37 ++ .../bpmetadata/tf/sample-module/variables.tf | 34 ++ .../bpmetadata/tf/versions-bad-all.tf | 7 + .../bpmetadata/tf/versions-bad-core.tf | 7 + .../bpmetadata/tf/versions-bad-module.tf | 7 + cli/testdata/bpmetadata/tf/versions-beta.tf | 21 + cli/testdata/bpmetadata/tf/versions-core.tf | 3 + cli/testdata/bpmetadata/tf/versions-module.tf | 5 + cli/testdata/bpmetadata/tf/versions.tf | 7 + 21 files changed, 1248 insertions(+), 19 deletions(-) create mode 100644 cli/bpmetadata/markdown.go create mode 100644 cli/bpmetadata/markdown_test.go create mode 100644 cli/bpmetadata/tfconfig.go create mode 100644 cli/bpmetadata/tfconfig_test.go create mode 100644 cli/testdata/bpmetadata/md/list-content.md create mode 100644 cli/testdata/bpmetadata/md/simple-content.md create mode 100644 cli/testdata/bpmetadata/tf/main.tf create mode 100644 cli/testdata/bpmetadata/tf/sample-module/outputs.tf create mode 100644 cli/testdata/bpmetadata/tf/sample-module/variables.tf create mode 100644 cli/testdata/bpmetadata/tf/versions-bad-all.tf create mode 100644 cli/testdata/bpmetadata/tf/versions-bad-core.tf create mode 100644 cli/testdata/bpmetadata/tf/versions-bad-module.tf create mode 100644 cli/testdata/bpmetadata/tf/versions-beta.tf create mode 100644 cli/testdata/bpmetadata/tf/versions-core.tf create mode 100644 cli/testdata/bpmetadata/tf/versions-module.tf create mode 100644 cli/testdata/bpmetadata/tf/versions.tf diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index ee8aca589c8..b377768ba52 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -15,6 +15,13 @@ var mdFlags struct { nested bool } +const ( + readmeFileName = "README.md" + tfVersionsFileName = "versions.tf" + tfRolesFileName = "test/setup/iam.tf" + tfServicesFileName = "test/setup/main.tf" +) + func init() { viper.AutomaticEnv() @@ -44,7 +51,7 @@ func generate(cmd *cobra.Command, args []string) error { return fmt.Errorf("error creating metadata for blueprint: %w", err) } - // TODO: write metadata to metadata.yaml + // TODO:(b/248642744) write metadata to metadata.yaml return nil } @@ -72,5 +79,108 @@ func CreateBlueprintMetadata(bpPath string) error { }, } + // start creating the Spec node + readmeContent, err := os.ReadFile(path.Join(bpPath, readmeFileName)) + if err != nil { + return fmt.Errorf("error reading blueprint readme markdown: %w", err) + } + + info, err := createInfo(bpPath, readmeContent) + if err != nil { + return fmt.Errorf("error creating blueprint info: %w", err) + } + + interfaces, err := getBlueprintInterfaces(bpPath) + if err != nil { + return fmt.Errorf("error creating blueprint interfaces: %w", err) + } + + rolesCfgPath := path.Join(repoDetails.Source.RootPath, tfRolesFileName) + svcsCfgPath := path.Join(repoDetails.Source.RootPath, tfServicesFileName) + requirements, err := getBlueprintRequirements(rolesCfgPath, svcsCfgPath) + if err != nil { + return fmt.Errorf("error creating blueprint requirements: %w", err) + } + + content := createContent(bpPath, readmeContent) + + bpMetadataObj.Spec = &BlueprintMetadataSpec{ + Info: *info, + Content: content, + Interfaces: *interfaces, + Requirements: *requirements, + } + return nil } + +func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { + i := &BlueprintInfo{} + title, err := getMdContent(readmeContent, 1, 1, "", false) + if err != nil { + return nil, err + } + + i.Title = title.literal + + repoDetails, err := getRepoDetailsByPath(bpPath) + if err != nil { + return nil, err + } + + i.Source = &BlueprintRepoDetail{ + Repo: repoDetails.Source.Path, + SourceType: "git", + } + + versionInfo, err := getBlueprintVersion(path.Join(bpPath, tfVersionsFileName)) + if err != nil { + return nil, err + } + + i.Version = versionInfo.moduleVersion + + // create descriptions + i.Description = &BlueprintDescription{} + tagline, err := getMdContent(readmeContent, -1, -1, "Tagline", true) + if err == nil { + i.Description.Tagline = tagline.literal + } + + detailed, err := getMdContent(readmeContent, -1, -1, "Detailed", true) + if err == nil { + i.Description.Detailed = detailed.literal + } + + preDeploy, err := getMdContent(readmeContent, -1, -1, "PreDeploy", true) + if err == nil { + i.Description.PreDeploy = preDeploy.literal + } + + // TODO:(b/246603410) create icon + + return i, nil +} + +func createContent(bpPath string, readmeContent []byte) BlueprintContent { + var docListToSet []BlueprintListContent + documentation, err := getMdContent(readmeContent, -1, -1, "Documentation", true) + if err == nil { + for _, li := range documentation.listItems { + doc := BlueprintListContent{ + Title: li.text, + Url: li.url, + } + + docListToSet = append(docListToSet, doc) + } + } + + // TODO:(b/246603410) create sub-blueprints + + // TODO:(b/246603410) create examples + + return BlueprintContent{ + Documentation: docListToSet, + } +} diff --git a/cli/bpmetadata/markdown.go b/cli/bpmetadata/markdown.go new file mode 100644 index 00000000000..b596f6a88bf --- /dev/null +++ b/cli/bpmetadata/markdown.go @@ -0,0 +1,92 @@ +package bpmetadata + +import ( + "fmt" + + "github.com/gomarkdown/markdown" + "github.com/gomarkdown/markdown/ast" +) + +type mdContent struct { + literal string + listItems []mdListItem +} + +type mdListItem struct { + text string + url string +} + +// getMdContent accepts 3 types of content requests and return and mdContent object +// with the relevant content info. The 3 scenarios are: +// 1: get heading literal by (level and/or order) OR by title +// 2: get paragraph content immediately following a heading by (level and/or order) OR by title +// 3: get list item content immediately following a heading by (level and/or order) OR by title +// A -1 value to headLevel/headOrder enforces the content to be matchd by headTitle +func getMdContent(content []byte, headLevel int, headOrder int, headTitle string, getContent bool) (*mdContent, error) { + mdDocument := markdown.Parse(content, nil) + orderCtr := 0 + mdSections := mdDocument.GetChildren() + var foundHead bool + for _, section := range mdSections { + currLeaf := ast.GetFirstChild(section).AsLeaf() + switch sectionType := section.(type) { + case *ast.Heading: + if headTitle == string(currLeaf.Literal) { + foundHead = true + } + + if headLevel == sectionType.Level { + orderCtr++ + } + + if !getContent && (headOrder == orderCtr || foundHead) { + return &mdContent{ + literal: string(currLeaf.Literal), + }, nil + } + + case *ast.Paragraph: + if getContent && (headOrder == orderCtr || foundHead) { + return &mdContent{ + literal: string(currLeaf.Literal), + }, nil + } + + case *ast.List: + if getContent && (headOrder == orderCtr || foundHead) { + var mdListItems []mdListItem + for _, c := range sectionType.Container.Children { + var listItem mdListItem + // each item is a list with data and metadata about the list item + itemConfigs := ast.GetFirstChild(c).AsContainer().Children + // if the length of the child node is 1, it is a plain text list item + // if the length is greater the 1, it is a list item with a link + if len(itemConfigs) == 1 { + listItemText := string(itemConfigs[0].AsLeaf().Literal) + listItem = mdListItem{ + text: listItemText, + } + } else if len(itemConfigs) > 1 { + // the second child node has the link data and metadata + listItemLink := itemConfigs[1].(*ast.Link) + listItemText := string(ast.GetFirstChild(listItemLink).AsLeaf().Literal) + + listItem = mdListItem{ + text: listItemText, + url: string(listItemLink.Destination), + } + } + + mdListItems = append(mdListItems, listItem) + } + + return &mdContent{ + listItems: mdListItems, + }, nil + } + } + } + + return nil, fmt.Errorf("unable to find md content") +} diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go new file mode 100644 index 00000000000..4973884dff4 --- /dev/null +++ b/cli/bpmetadata/markdown_test.go @@ -0,0 +1,149 @@ +package bpmetadata + +import ( + "os" + "path" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const ( + mdTestdataPath = "../testdata/bpmetadata/md" +) + +func TestProcessMarkdownContent(t *testing.T) { + tests := []struct { + name string + fileName string + level int + order int + title string + getContent bool + want *mdContent + }{ + { + name: "level 1 heading", + fileName: "simple-content.md", + level: 1, + order: 1, + getContent: false, + want: &mdContent{ + literal: "h1 doc title", + }, + }, + { + name: "level 1 heading order 2", + fileName: "simple-content.md", + level: 1, + order: 2, + getContent: false, + want: nil, + }, + { + name: "level 2 heading order 2", + fileName: "simple-content.md", + level: 2, + order: 2, + getContent: false, + want: &mdContent{ + literal: "Horizontal Rules", + }, + }, + { + name: "level 1 content", + fileName: "simple-content.md", + level: 1, + order: 1, + getContent: true, + want: &mdContent{ + literal: "some content doc title for h1", + }, + }, + { + name: "level 3 content order 2", + fileName: "simple-content.md", + level: 3, + order: 2, + getContent: true, + want: &mdContent{ + literal: "some more content sub heading for h3", + }, + }, + { + name: "content by head title", + fileName: "simple-content.md", + level: -1, + order: -1, + title: "h3 sub sub heading", + getContent: true, + want: &mdContent{ + literal: "some content sub heading for h3", + }, + }, + { + name: "content by head title does not exist", + fileName: "simple-content.md", + level: -1, + order: -1, + title: "Horizontal Rules", + getContent: true, + want: nil, + }, + { + name: "content by head title link list items", + fileName: "list-content.md", + level: -1, + order: -1, + title: "Documentation", + getContent: true, + want: &mdContent{ + listItems: []mdListItem{ + mdListItem{ + text: "document-01", + url: "http://google.com/doc-01", + }, + mdListItem{ + text: "document-02", + url: "http://google.com/doc-02", + }, + mdListItem{ + text: "document-03", + url: "http://google.com/doc-03", + }, + mdListItem{ + text: "document-04", + url: "http://google.com/doc-04", + }, + }, + }, + }, + { + name: "content by head title list items", + fileName: "list-content.md", + level: -1, + order: -1, + title: "Diagrams", + getContent: true, + want: &mdContent{ + listItems: []mdListItem{ + mdListItem{ + text: "text-document-01", + }, + mdListItem{ + text: "text-document-02", + }, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + content, err := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) + require.NoError(t, err) + got, _ := getMdContent(content, tt.level, tt.order, tt.title, tt.getContent) + assert.Equal(t, tt.want, got) + }) + } +} diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 245dfde9012..5fc1285093b 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -15,6 +15,7 @@ type repoDetail struct { type repoSource struct { Path string + RootPath string SourceType string } @@ -47,6 +48,7 @@ func getRepoDetailsByPath(bpPath string) (*repoDetail, error) { Source: &repoSource{ Path: repoUrl, SourceType: "git", + RootPath: repoPath, }, }, nil } diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go new file mode 100644 index 00000000000..8169c57c728 --- /dev/null +++ b/cli/bpmetadata/tfconfig.go @@ -0,0 +1,358 @@ +package bpmetadata + +import ( + "fmt" + "os" + "path/filepath" + "regexp" + + hcl "github.com/hashicorp/hcl/v2" + "github.com/hashicorp/hcl/v2/gohcl" + "github.com/hashicorp/hcl/v2/hclparse" + "github.com/hashicorp/terraform-config-inspect/tfconfig" +) + +const ( + versionRegEx = "/v([0-9]+[.0-9]*)$" +) + +type blueprintVersion struct { + moduleVersion string + requiredTfVersion string +} + +var rootSchema = &hcl.BodySchema{ + Blocks: []hcl.BlockHeaderSchema{ + { + Type: "terraform", + LabelNames: nil, + }, + { + Type: "locals", + LabelNames: nil, + }, + { + Type: "resource", + LabelNames: []string{"type", "name"}, + }, + }, +} + +var metaSchema = &hcl.BodySchema{ + Blocks: []hcl.BlockHeaderSchema{ + { + Type: "provider_meta", + LabelNames: []string{"name"}, + }, + }, +} + +var metaBlockSchema = &hcl.BodySchema{ + Attributes: []hcl.AttributeSchema{ + { + Name: "module_name", + }, + }, +} + +// getBlueprintVersion gets both the required core version and the +// version of the blueprint +func getBlueprintVersion(configPath string) (*blueprintVersion, error) { + bytes, err := os.ReadFile(configPath) + if err != nil { + return nil, err + } + + //create hcl file object from the provided tf config + fileName := filepath.Base(configPath) + var diags hcl.Diagnostics + p := hclparse.NewParser() + versionsFile, fileDiags := p.ParseHCL(bytes, fileName) + diags = append(diags, fileDiags...) + err = hasHclErrors(diags) + if err != nil { + return nil, err + } + + //parse out the blueprint version from the config + modName, err := parseBlueprintVersion(versionsFile, diags) + if err != nil { + return nil, fmt.Errorf("error parsing blueprint version: %v", err) + } + + //parse out the required version from the config + var hclModule tfconfig.Module + hclModule.RequiredProviders = make(map[string]*tfconfig.ProviderRequirement) + hclModuleDiag := tfconfig.LoadModuleFromFile(versionsFile, &hclModule) + diags = append(diags, hclModuleDiag...) + err = hasHclErrors(diags) + if err != nil { + return nil, err + } + + requiredCore := "" + if len(hclModule.RequiredCore) != 0 { + //always looking for the first element since tf blueprints + //have one required core version + requiredCore = hclModule.RequiredCore[0] + } + + return &blueprintVersion{ + moduleVersion: modName, + requiredTfVersion: requiredCore, + }, nil +} + +// parseBlueprintVersion gets the blueprint version from the provided config +// from the provider_meta block +func parseBlueprintVersion(versionsFile *hcl.File, diags hcl.Diagnostics) (string, error) { + re := regexp.MustCompile(versionRegEx) + // PartialContent() returns TF content containing blocks and attributes + // based on the provided schema + rootContent, _, rootContentDiags := versionsFile.Body.PartialContent(rootSchema) + diags = append(diags, rootContentDiags...) + err := hasHclErrors(diags) + if err != nil { + return "", err + } + + // based on the content returned, iterate through blocks and look for + // the terraform block specfically + for _, rootBlock := range rootContent.Blocks { + if rootBlock.Type != "terraform" { + continue + } + + // do a PartialContent() call again but now for the provider_meta block + // within the terraform block + tfContent, _, tfContentDiags := rootBlock.Body.PartialContent(metaSchema) + diags = append(diags, tfContentDiags...) + err := hasHclErrors(diags) + if err != nil { + return "", err + } + + for _, tfContentBlock := range tfContent.Blocks { + if tfContentBlock.Type != "provider_meta" { + continue + } + + // this PartialContent() call with get the module_name attribute + // that contains the version info + metaContent, _, metaContentDiags := tfContentBlock.Body.PartialContent(metaBlockSchema) + diags = append(diags, metaContentDiags...) + err := hasHclErrors(diags) + if err != nil { + return "", err + } + + versionAttr, defined := metaContent.Attributes["module_name"] + if !defined { + return "", fmt.Errorf("module_name not defined for provider_meta") + } + + // get the module name from the version attribute and extract the + // version name only + var modName string + gohcl.DecodeExpression(versionAttr.Expr, nil, &modName) + m := re.FindStringSubmatch(modName) + if len(m) > 0 { + return m[len(m)-1], nil + } + + return "", nil + } + + break + } + + return "", nil +} + +// getBlueprintInterfaces gets the variables and outputs associated +// with the blueprint +func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { + //load the configs from the dir path + mod, diags := tfconfig.LoadModule(configPath) + err := hasTfconfigErrors(diags) + if err != nil { + return nil, err + } + + var variables []BlueprintVariable + for _, val := range mod.Variables { + v := getBlueprintVariable(val) + variables = append(variables, v) + } + + var outputs []BlueprintOutput + for _, val := range mod.Outputs { + o := getBlueprintOutput(val) + + outputs = append(outputs, o) + } + + return &BlueprintInterface{ + Variables: variables, + Outputs: outputs, + }, nil +} + +//build variable +func getBlueprintVariable(modVar *tfconfig.Variable) BlueprintVariable { + return BlueprintVariable{ + Name: modVar.Name, + Description: modVar.Description, + Default: modVar.Default, + Required: modVar.Required, + VarType: modVar.Type, + } +} + +//build output +func getBlueprintOutput(modOut *tfconfig.Output) BlueprintOutput { + return BlueprintOutput{ + Name: modOut.Name, + Description: modOut.Description, + } +} + +// getBlueprintRequirements gets the services and roles associated +// with the blueprint +func getBlueprintRequirements(rolesConfigPath, servicesConfigPath string) (*BlueprintRequirements, error) { + //parse blueprint roles + p := hclparse.NewParser() + rolesFile, diags := p.ParseHCLFile(rolesConfigPath) + err := hasHclErrors(diags) + if err != nil { + return nil, err + } + + r, err := parseBlueprintRoles(rolesFile) + if err != nil { + return nil, err + } + + //parse blueprint services + servicesFile, diags := p.ParseHCLFile(servicesConfigPath) + err = hasHclErrors(diags) + if err != nil { + return nil, err + } + + s, err := parseBlueprintServices(servicesFile) + if err != nil { + return nil, err + } + + return &BlueprintRequirements{ + Roles: r, + Services: s, + }, nil +} + +// parseBlueprintRoles gets the roles required for the blueprint to be provisioned +func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { + var r []BlueprintRoles + iamContent, _, diags := rolesFile.Body.PartialContent(rootSchema) + err := hasHclErrors(diags) + if err != nil { + return nil, err + } + + for _, block := range iamContent.Blocks { + if block.Type != "locals" { + continue + } + + iamAttrs, diags := block.Body.JustAttributes() + err := hasHclErrors(diags) + if err != nil { + return nil, err + } + + for k, _ := range iamAttrs { + var iamRoles []string + attrValue, _ := iamAttrs[k].Expr.Value(nil) + ie := attrValue.ElementIterator() + for ie.Next() { + _, v := ie.Element() + iamRoles = append(iamRoles, v.AsString()) + } + + containerRoles := BlueprintRoles{ + // TODO: (b/248123274) no good way to associate granularity yet + Granularity: "", + Roles: iamRoles, + } + + r = append(r, containerRoles) + } + + // because we're only interested in the top-level locals block + break + } + + return r, nil +} + +// parseBlueprintServices gets the gcp api services required for the blueprint +// to be provisioned +func parseBlueprintServices(servicesFile *hcl.File) ([]string, error) { + var s []string + servicesContent, _, diags := servicesFile.Body.PartialContent(rootSchema) + err := hasHclErrors(diags) + if err != nil { + return nil, err + } + + // TODO: (b/250778215) instead of parsing the locals block, this should look at + // activate_apis attribute on the project module + for _, block := range servicesContent.Blocks { + if block.Type != "locals" { + continue + } + + serivceAttrs, diags := block.Body.JustAttributes() + err := hasHclErrors(diags) + if err != nil { + return nil, err + } + + for k, _ := range serivceAttrs { + attrValue, _ := serivceAttrs[k].Expr.Value(nil) + ie := attrValue.ElementIterator() + for ie.Next() { + _, v := ie.Element() + s = append(s, v.AsString()) + } + } + + // because we're only interested in the top-level locals block + break + } + + return s, nil +} + +func hasHclErrors(diags hcl.Diagnostics) error { + for _, diag := range diags { + if diag.Severity == hcl.DiagError { + return fmt.Errorf("hcl error: %s | detail: %s", diag.Summary, diag.Detail) + } + } + + return nil +} + +// this is almost a dup of hasHclErrors because the TF api has two +// different structs for diagnostics... +func hasTfconfigErrors(diags tfconfig.Diagnostics) error { + for _, diag := range diags { + if diag.Severity == tfconfig.DiagError { + return fmt.Errorf("hcl error: %s | detail: %s", diag.Summary, diag.Detail) + } + } + + return nil +} diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go new file mode 100644 index 00000000000..114ac35cf31 --- /dev/null +++ b/cli/bpmetadata/tfconfig_test.go @@ -0,0 +1,208 @@ +package bpmetadata + +import ( + "path" + "testing" + + "github.com/hashicorp/hcl/v2/hclparse" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const ( + tfTestdataPath = "../testdata/bpmetadata/tf" + interfaces = "sample-module" +) + +func TestTFInterfaces(t *testing.T) { + varTests := []struct { + name string + varName string + wantDescription string + wantVarType string + wantDefault interface{} + wantRequired bool + }{ + { + name: "just name and description", + varName: "project_id", + wantDescription: "The project ID to host the cluster in", + wantRequired: true, + }, + { + name: "with type and string default", + varName: "description", + wantDescription: "The description of the cluster", + wantVarType: "string", + wantDefault: "some description", + wantRequired: false, + }, + { + name: "with required as fasle", + varName: "regional", + wantDescription: "Whether is a regional cluster", + wantVarType: "bool", + wantDefault: true, + wantRequired: false, + }, + } + + outTests := []struct { + name string + outName string + wantDescription string + }{ + { + name: "just name and description", + outName: "cluster_id", + wantDescription: "Cluster ID", + }, + { + name: "more than just name and description", + outName: "endpoint", + wantDescription: "Cluster endpoint", + }, + } + + got, err := getBlueprintInterfaces(path.Join(tfTestdataPath, interfaces)) + require.NoError(t, err) + for _, tt := range varTests { + t.Run(tt.name, func(t *testing.T) { + assert.Contains(t, got.Variables, BlueprintVariable{ + Name: tt.varName, + Description: tt.wantDescription, + Default: tt.wantDefault, + Required: tt.wantRequired, + VarType: tt.wantVarType, + }) + }) + } + + for _, tt := range outTests { + t.Run(tt.name, func(t *testing.T) { + assert.Contains(t, got.Outputs, BlueprintOutput{ + Name: tt.outName, + Description: tt.wantDescription, + }) + }) + } +} + +func TestTFVersions(t *testing.T) { + tests := []struct { + name string + configName string + wantRequiredVersion string + wantModuleVersion string + }{ + { + name: "core version only", + configName: "versions-core.tf", + wantRequiredVersion: ">= 0.13.0", + }, + { + name: "module version only", + configName: "versions-module.tf", + wantModuleVersion: "23.1.0", + }, + { + name: "bad module version good core version", + configName: "versions-bad-module.tf", + wantRequiredVersion: ">= 0.13.0", + wantModuleVersion: "", + }, + { + name: "bad core version good module version", + configName: "versions-bad-core.tf", + wantRequiredVersion: "", + wantModuleVersion: "23.1.0", + }, + { + name: "all bad", + configName: "versions-bad-all.tf", + wantRequiredVersion: "", + wantModuleVersion: "", + }, + { + name: "both versions", + configName: "versions.tf", + wantRequiredVersion: ">= 0.13.0", + wantModuleVersion: "23.1.0", + }, + { + name: "both versions with beta", + configName: "versions-beta.tf", + wantRequiredVersion: ">= 0.13.0", + wantModuleVersion: "23.1.0", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, _ := getBlueprintVersion(path.Join(tfTestdataPath, tt.configName)) + + if got != nil { + if got.requiredTfVersion != tt.wantRequiredVersion { + t.Errorf("getBlueprintVersion() = %v, want %v", got.requiredTfVersion, tt.wantRequiredVersion) + return + } + + if got.moduleVersion != tt.wantModuleVersion { + t.Errorf("getBlueprintVersion() = %v, want %v", got.moduleVersion, tt.wantModuleVersion) + return + } + + } else { + if tt.wantModuleVersion != "" && tt.wantRequiredVersion != "" { + t.Errorf("getBlueprintVersion() = returned nil when we want core: %v and bpVersion: %v", tt.wantRequiredVersion, tt.wantModuleVersion) + } + } + }) + } +} + +func TestTFServices(t *testing.T) { + tests := []struct { + name string + configName string + wantServices []string + }{ + { + name: "simple list of apis", + configName: "main.tf", + wantServices: []string{ + "cloudkms.googleapis.com", + "cloudresourcemanager.googleapis.com", + "container.googleapis.com", + "pubsub.googleapis.com", + "serviceusage.googleapis.com", + "storage-api.googleapis.com", + "anthos.googleapis.com", + "anthosconfigmanagement.googleapis.com", + "logging.googleapis.com", + "meshca.googleapis.com", + "meshtelemetry.googleapis.com", + "meshconfig.googleapis.com", + "cloudresourcemanager.googleapis.com", + "monitoring.googleapis.com", + "stackdriver.googleapis.com", + "cloudtrace.googleapis.com", + "meshca.googleapis.com", + "iamcredentials.googleapis.com", + "gkeconnect.googleapis.com", + "privateca.googleapis.com", + "gkehub.googleapis.com", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + p := hclparse.NewParser() + content, _ := p.ParseHCLFile(path.Join(tfTestdataPath, tt.configName)) + got, err := parseBlueprintServices(content) + require.NoError(t, err) + assert.Equal(t, got, tt.wantServices) + }) + } +} diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index ceabf7c3135..bd9ce4bed85 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -10,10 +10,10 @@ type BlueprintMetadata struct { // BlueprintMetadataSpec defines the spec portion of the blueprint metadata type BlueprintMetadataSpec struct { - Info BlueprintInfo - Content BlueprintContent - Interfaces BlueprintInterface - Security BlueprintSecurity + Info BlueprintInfo + Content BlueprintContent + Interfaces BlueprintInterface + Requirements BlueprintRequirements } // BlueprintInfo defines informational detail for the blueprint @@ -30,7 +30,7 @@ type BlueprintInfo struct { // related documentation, diagrams, examples etc. type BlueprintContent struct { Diagrams []BlueprintDiagram - Documentation []BlueprintDocumentation + Documentation []BlueprintListContent SubBlueprints []BlueprintMiscContent Examples []BlueprintMiscContent } @@ -39,19 +39,19 @@ type BlueprintContent struct { type BlueprintInterface struct { Variables []BlueprintVariable VariableGroups []BlueprintVariableGroup - Outputs []BlueprintOutputs + Outputs []BlueprintOutput } -// BlueprintSecurity defines the roles required and the assocaited services +// BlueprintRequirements defines the roles required and the assocaited services // that need to be enabled to provision blueprint resources -type BlueprintSecurity struct { +type BlueprintRequirements struct { Roles []BlueprintRoles Services []string } type BlueprintRepoDetail struct { - Path string `yaml:"path"` - SourceType string `yaml:"type" default:"git"` + Repo string `yaml:"repo"` + SourceType string `yaml:"sourceType"` } type BlueprintActuationTool struct { @@ -76,7 +76,7 @@ type BlueprintDiagram struct { Description string } -type BlueprintDocumentation struct { +type BlueprintListContent struct { Title string Url string } @@ -85,7 +85,7 @@ type BlueprintVariable struct { Name string Description string VarType string `yaml:"type"` - Default string + Default interface{} Required bool } @@ -95,7 +95,7 @@ type BlueprintVariableGroup struct { Variables []string } -type BlueprintOutputs struct { +type BlueprintOutput struct { Name string Description string } diff --git a/cli/go.mod b/cli/go.mod index f4606641763..6322c0beb7c 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -12,7 +12,10 @@ require ( github.com/gammazero/workerpool v1.1.2 github.com/go-git/go-git/v5 v5.4.2 github.com/golang/protobuf v1.5.2 + github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb github.com/google/go-cmp v0.5.6 + github.com/hashicorp/hcl/v2 v2.14.0 + github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f github.com/iancoleman/strcase v0.2.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/jedib0t/go-pretty/v6 v6.2.4 @@ -24,9 +27,10 @@ require ( github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.4.0 github.com/spf13/viper v1.9.0 - github.com/stretchr/testify v1.7.0 + github.com/stretchr/testify v1.8.0 google.golang.org/api v0.58.0 google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 + google.golang.org/protobuf v1.28.1 // indirect gopkg.in/yaml.v2 v2.4.0 sigs.k8s.io/kustomize/kyaml v0.13.9 sigs.k8s.io/yaml v1.2.0 diff --git a/cli/go.sum b/cli/go.sum index 2b9decb6097..54dd217a7d9 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -135,6 +135,8 @@ github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= +github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -152,8 +154,11 @@ github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= +github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -474,6 +479,7 @@ github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= @@ -583,6 +589,8 @@ github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= +github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb h1:7h+tPfwoUE+qLvWYmsvKSiRlXv6WGorb6PUKaZUclwc= +github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= @@ -716,9 +724,13 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= +github.com/hashicorp/hcl/v2 v2.14.0 h1:jX6+Q38Ly9zaAJlAjnFVyeNSNCKKW8D0wvyg7vij5Wc= +github.com/hashicorp/hcl/v2 v2.14.0/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= @@ -726,6 +738,8 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f h1:R8UIC07Ha9jZYkdcJ51l4ownCB8xYwfJtrgZSMvqjWI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f/go.mod h1:Z0Nnk4+3Cy89smEbrq+sl1bxc9198gIP4I7wcQF6Kqs= github.com/hashicorp/terraform-json v0.9.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= @@ -816,6 +830,7 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kulti/thelper v0.4.0/go.mod h1:vMu2Cizjy/grP+jmsvOFDx1kYP6+PD1lqg4Yu5exl2U= github.com/kunwardeep/paralleltest v1.0.2/go.mod h1:ZPqNm1fVHPllh5LPVujzbVz1JN2GhLxSfY+oqUsvG30= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= github.com/ldez/gomoddirectives v0.2.1/go.mod h1:sGicqkRgBOg//JfpXwkB9Hj0X5RyJ7mlACM5B9f6Me4= @@ -900,6 +915,7 @@ github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eI github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= @@ -1187,6 +1203,7 @@ github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5J github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -1195,8 +1212,10 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV 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 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= 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 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= @@ -1233,6 +1252,8 @@ github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44 github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= @@ -1259,8 +1280,12 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= +github.com/zclconf/go-cty v1.8.0 h1:s4AvqaeQzJIu3ndv4gVIhplVD0krU+bgrcLSVUnaWuA= +github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= @@ -1340,8 +1365,9 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 h1:O8uGbHCqlTp2P6QJSLmCojM4mN6UemYv8K+dCnmHmu0= +golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1445,6 +1471,7 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1892,8 +1919,9 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/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= @@ -1938,8 +1966,9 @@ gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/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.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/cli/testdata/bpmetadata/md/list-content.md b/cli/testdata/bpmetadata/md/list-content.md new file mode 100644 index 00000000000..25176e5f16a --- /dev/null +++ b/cli/testdata/bpmetadata/md/list-content.md @@ -0,0 +1,31 @@ +# h1 doc title +some content doc title for h1 +some content doc title for h1 + +## h2 sub heading +some content sub heading for h2 + +## Documentation +- [document-01](http://google.com/doc-01) +- [document-02](http://google.com/doc-02) +- [document-03](http://google.com/doc-03) +- [document-04](http://google.com/doc-04) + +### h3 sub sub heading + +## Horizontal Rules + +## Diagrams +- text-document-01 +- text-document-02 + +## Description: +### tagline +Opinionated GCP project creation + +### detailed +This blueprint allows you to create opinionated Google Cloud Platform projects. +It creates projects and configures aspects like Shared VPC connectivity, IAM access, Service Accounts, and API enablement to follow best practices. + +### preDeploy +To deploy this blueprint you must have an active billing account and billing permissions. diff --git a/cli/testdata/bpmetadata/md/simple-content.md b/cli/testdata/bpmetadata/md/simple-content.md new file mode 100644 index 00000000000..7da6679e5e2 --- /dev/null +++ b/cli/testdata/bpmetadata/md/simple-content.md @@ -0,0 +1,13 @@ +# h1 doc title +some content doc title for h1 + +## h2 sub heading +some content sub heading for h2 + +### h3 sub sub heading +some content sub heading for h3 + +### h3 sub sub heading but order 2 +some more content sub heading for h3 + +## Horizontal Rules diff --git a/cli/testdata/bpmetadata/tf/main.tf b/cli/testdata/bpmetadata/tf/main.tf new file mode 100644 index 00000000000..b6af0cad70a --- /dev/null +++ b/cli/testdata/bpmetadata/tf/main.tf @@ -0,0 +1,105 @@ +/** + * Copyright 2019 Google LLC + * + * 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. + */ + +resource "random_id" "random_project_id_suffix" { + byte_length = 4 +} + +locals { + apis = [ + "cloudkms.googleapis.com", + "cloudresourcemanager.googleapis.com", + "container.googleapis.com", + "pubsub.googleapis.com", + "serviceusage.googleapis.com", + "storage-api.googleapis.com", + "anthos.googleapis.com", + "anthosconfigmanagement.googleapis.com", + "logging.googleapis.com", + "meshca.googleapis.com", + "meshtelemetry.googleapis.com", + "meshconfig.googleapis.com", + "cloudresourcemanager.googleapis.com", + "monitoring.googleapis.com", + "stackdriver.googleapis.com", + "cloudtrace.googleapis.com", + "meshca.googleapis.com", + "iamcredentials.googleapis.com", + "gkeconnect.googleapis.com", + "privateca.googleapis.com", + "gkehub.googleapis.com" + ] +} + +module "gke-project-1" { + source = "terraform-google-modules/project-factory/google" + version = "~> 13.0" + + name = "ci-gke-${random_id.random_project_id_suffix.hex}" + random_project_id = true + org_id = var.org_id + folder_id = var.folder_id + billing_account = var.billing_account + # due to https://github.com/hashicorp/terraform-provider-google/issues/9505 for AP + default_service_account = "keep" + + auto_create_network = true + + activate_apis = local.apis + activate_api_identities = [ + { + api = "container.googleapis.com" + roles = ["roles/cloudkms.cryptoKeyEncrypterDecrypter", "roles/container.serviceAgent"] + }, + ] +} + +module "gke-project-2" { + source = "terraform-google-modules/project-factory/google" + version = "~> 13.0" + + name = "ci-gke-${random_id.random_project_id_suffix.hex}" + random_project_id = true + org_id = var.org_id + folder_id = var.folder_id + billing_account = var.billing_account + # due to https://github.com/hashicorp/terraform-provider-google/issues/9505 for AP + default_service_account = "keep" + + activate_apis = local.apis + activate_api_identities = [ + { + api = "container.googleapis.com" + roles = ["roles/cloudkms.cryptoKeyEncrypterDecrypter", "roles/container.serviceAgent"] + }, + ] +} + +# apis as documented https://cloud.google.com/service-mesh/docs/scripted-install/reference#setting_up_your_project +module "gke-project-asm" { + source = "terraform-google-modules/project-factory/google" + version = "~> 13.0" + + name = "ci-gke-asm-${random_id.random_project_id_suffix.hex}" + random_project_id = true + org_id = var.org_id + folder_id = var.folder_id + billing_account = var.billing_account + # due to https://github.com/hashicorp/terraform-provider-google/issues/9505 for AP + default_service_account = "keep" + + activate_apis = local.apis +} diff --git a/cli/testdata/bpmetadata/tf/sample-module/outputs.tf b/cli/testdata/bpmetadata/tf/sample-module/outputs.tf new file mode 100644 index 00000000000..49ae9051078 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/sample-module/outputs.tf @@ -0,0 +1,37 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +// This file was automatically generated from a template in ./autogen/main + +output "cluster_id" { + description = "Cluster ID" +} + +output "endpoint" { + sensitive = true + description = "Cluster endpoint" + value = local.cluster_endpoint + depends_on = [ + /* Nominally, the endpoint is populated as soon as it is known to Terraform. + * However, the cluster may not be in a usable state yet. Therefore any + * resources dependent on the cluster being up will fail to deploy. With + * this explicit dependency, dependent resources can wait for the cluster + * to be up. + */ + google_container_cluster.primary, + google_container_node_pool.pools, + ] +} diff --git a/cli/testdata/bpmetadata/tf/sample-module/variables.tf b/cli/testdata/bpmetadata/tf/sample-module/variables.tf new file mode 100644 index 00000000000..acef73a6227 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/sample-module/variables.tf @@ -0,0 +1,34 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +// This file was automatically generated from a template in ./autogen/main + +variable "project_id" { + description = "The project ID to host the cluster in" + required = false +} + +variable "description" { + description = "The description of the cluster" + type = string + default = "some description" +} + +variable "regional" { + type = bool + description = "Whether is a regional cluster" + default = true +} diff --git a/cli/testdata/bpmetadata/tf/versions-bad-all.tf b/cli/testdata/bpmetadata/tf/versions-bad-all.tf new file mode 100644 index 00000000000..d997e93c09f --- /dev/null +++ b/cli/testdata/bpmetadata/tf/versions-bad-all.tf @@ -0,0 +1,7 @@ +terraform { + required_version_not_good = ">= 0.13.0" + + provider_meta "google" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/23.1.0" + } +} diff --git a/cli/testdata/bpmetadata/tf/versions-bad-core.tf b/cli/testdata/bpmetadata/tf/versions-bad-core.tf new file mode 100644 index 00000000000..cd4e612ce09 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/versions-bad-core.tf @@ -0,0 +1,7 @@ +terraform { + required_version_not_good = ">= 0.13.0" + + provider_meta "google" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } +} diff --git a/cli/testdata/bpmetadata/tf/versions-bad-module.tf b/cli/testdata/bpmetadata/tf/versions-bad-module.tf new file mode 100644 index 00000000000..19bb714a8e0 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/versions-bad-module.tf @@ -0,0 +1,7 @@ +terraform { + required_version = ">= 0.13.0" + + provider_meta "google" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/23.1.0" + } +} diff --git a/cli/testdata/bpmetadata/tf/versions-beta.tf b/cli/testdata/bpmetadata/tf/versions-beta.tf new file mode 100644 index 00000000000..2cfcd942689 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/versions-beta.tf @@ -0,0 +1,21 @@ +terraform { + required_version = ">= 0.13.0" + + required_providers { + google = { + source = "hashicorp/google" + version = ">= 4.4.0, < 5.0" + } + google-beta = { + source = "hashicorp/google-beta" + version = ">= 4.4.0, < 5.0" + } + } + + provider_meta "google" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } + provider_meta "google-beta" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } +} diff --git a/cli/testdata/bpmetadata/tf/versions-core.tf b/cli/testdata/bpmetadata/tf/versions-core.tf new file mode 100644 index 00000000000..450c502a03e --- /dev/null +++ b/cli/testdata/bpmetadata/tf/versions-core.tf @@ -0,0 +1,3 @@ +terraform { + required_version = ">= 0.13.0" +} diff --git a/cli/testdata/bpmetadata/tf/versions-module.tf b/cli/testdata/bpmetadata/tf/versions-module.tf new file mode 100644 index 00000000000..a37cde08d71 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/versions-module.tf @@ -0,0 +1,5 @@ +terraform { + provider_meta "google" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } +} diff --git a/cli/testdata/bpmetadata/tf/versions.tf b/cli/testdata/bpmetadata/tf/versions.tf new file mode 100644 index 00000000000..517b35c318d --- /dev/null +++ b/cli/testdata/bpmetadata/tf/versions.tf @@ -0,0 +1,7 @@ +terraform { + required_version = ">= 0.13.0" + + provider_meta "google" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } +} From 9904f0c4668857df21e77dd5fe42c32d91aa935d Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 11 Oct 2022 12:06:41 -0500 Subject: [PATCH 0167/1371] chore: bump cleaner job to nightly (#1257) --- infra/terraform/test-org/ci-project/cleaner.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/ci-project/cleaner.tf b/infra/terraform/test-org/ci-project/cleaner.tf index 43c717ef49e..9998e19cc55 100644 --- a/infra/terraform/test-org/ci-project/cleaner.tf +++ b/infra/terraform/test-org/ci-project/cleaner.tf @@ -58,8 +58,8 @@ resource "google_cloud_scheduler_job" "job" { name = "trigger-test-org-iam-reset-build" description = "Trigger reset test org IAM build" region = "us-central1" - # run every week at 13:00 on Saturday - schedule = "0 13 * * 6" + # run every day at 3:00 + schedule = "0 3 * * *" http_target { http_method = "POST" From 54e0cf4f51b64282f34165799fd38b7ed49aa071 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 12 Oct 2022 13:03:36 -0500 Subject: [PATCH 0168/1371] chore: add link to cft and fabric comparison (#1258) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c289571dd0c..9a1dfcd5294 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ In addition, the CFT repository includes a sample pipeline that enables running CFT deployment operations from Jenkins - see the [pipeline directory](dm/pipeline/README.md). +You can see a comparison between CFT and Fabric [here](https://github.com/GoogleCloudPlatform/cloud-foundation-fabric/blob/master/FABRIC-AND-CFT.md). + ## License Apache 2.0 - See [LICENSE](LICENSE) for more information. From 505931b24bdcda74235b8c103c55db3faf224440 Mon Sep 17 00:00:00 2001 From: fbeevikm <91213908+fbeevikm@users.noreply.github.com> Date: Fri, 14 Oct 2022 19:37:33 +0000 Subject: [PATCH 0169/1371] Upgrade alpine version to 3.16.2 in developer-tools-light (#1259) --- infra/build/Makefile | 2 +- infra/build/developer-tools-light/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 24475f3e3f2..64d4af49e9d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -33,7 +33,7 @@ CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.12 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.7.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.7.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-light/Dockerfile b/infra/build/developer-tools-light/Dockerfile index fcba433371e..e5535b535a6 100644 --- a/infra/build/developer-tools-light/Dockerfile +++ b/infra/build/developer-tools-light/Dockerfile @@ -19,7 +19,7 @@ ARG TERRAFORM_VERSION ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} RUN /install-hashicorp-tool "terraform" "$TERRAFORM_VERSION" -FROM alpine:3.15.6 +FROM alpine:3.16.2 RUN apk update && apk add --no-cache \ bash \ git \ From 94646b3d7d223657fe9f65d1dce09f0213547163 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Sun, 16 Oct 2022 07:36:44 -0500 Subject: [PATCH 0170/1371] Update Tools to 1.7.2 (#1253) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 64d4af49e9d..a4c4f6fc251 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.3.0 +TERRAFORM_VERSION := 1.3.2 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 403.0.0 +CLOUD_SDK_VERSION := 405.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.6.9 @@ -31,9 +31,9 @@ KUSTOMIZE_VERSION := 3.6.0 KPT_VERSION := 1.0.0-beta.15 CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 -KUBECTL_VERSION := 1.23.12 +KUBECTL_VERSION := 1.23.13 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.7.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.7.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 5829d9058b283c41c7ee0e3f0244beb9c3bb3849 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 17 Oct 2022 11:38:59 -0500 Subject: [PATCH 0171/1371] chore: skip zip for whitespace check (#1260) --- .../developer-tools/build/scripts/task_helper_functions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 2dc2fe1f843..4d9239d0247 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -232,7 +232,7 @@ check_whitespace() { local rc echo "Checking for trailing whitespace" find_files . -print \ - | grep -v -E '\.(pyc|png|gz|tfvars|mp4)$' \ + | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip)$' \ | compat_xargs grep -H -n '[[:blank:]]$' rc=$? if [[ ${rc} -eq 0 ]]; then @@ -243,7 +243,7 @@ check_whitespace() { fi echo "Checking for missing newline at end of file" find_files . -print \ - | grep -v -E '\.(png|gz|tfvars|mp4)$' \ + | grep -v -E '\.(png|gz|tfvars|mp4|zip)$' \ | compat_xargs check_eof_newline return $((rc+$?)) } From 8818525485a774023cf85f44c98c58c3076e6d23 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 17 Oct 2022 15:24:58 -0700 Subject: [PATCH 0172/1371] feat:adds file path logic for bpmetadata --- cli/bpmetadata/cmd.go | 31 +++- cli/bpmetadata/path.go | 92 ++++++++++ cli/bpmetadata/path_test.go | 158 ++++++++++++++++++ cli/bpmetadata/tfconfig.go | 7 + cli/testdata/bpmetadata/assets/icon.png | 0 .../acm/acm-terraform-blog-part1/README.md | 0 .../terraform/main.tf | 0 .../acm/acm-terraform-blog-part2/README.md | 0 .../examples/beta_cluster/README.md | 0 .../examples/simple_regional/README.md | 0 .../examples/simple_regional/main.tf | 0 .../acm/acm-terraform-blog-part1/README.md | 0 .../terraform/main.tf | 0 .../acm/acm-terraform-blog-part2/README.md | 0 .../acm/acm-terraform-blog-part2/main.tf | 0 .../examples/simple_regional/README.md | 0 .../content/examples/simple_regional/main.tf | 0 .../examples/simple_regional_beta/README.md | 0 .../examples/simple_regional_beta/main.tf | 0 .../simple_regional_beta/variables.tf | 0 .../modules/beta-public-cluster/README.md | 0 .../modules/beta-public-cluster/README.md | 0 .../modules/beta-public-cluster/main.tf | 0 .../modules/binary-authorization/README.md | 0 .../modules/binary-authorization/main.tf | 0 .../content/modules/private-cluster/README.md | 0 .../content/modules/private-cluster/main.tf | 0 27 files changed, 282 insertions(+), 6 deletions(-) create mode 100644 cli/bpmetadata/path.go create mode 100644 cli/bpmetadata/path_test.go create mode 100644 cli/testdata/bpmetadata/assets/icon.png create mode 100644 cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part1/README.md create mode 100644 cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part1/terraform/main.tf create mode 100644 cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part2/README.md create mode 100644 cli/testdata/bpmetadata/content/examples-some-without-tf/examples/beta_cluster/README.md create mode 100644 cli/testdata/bpmetadata/content/examples-some-without-tf/examples/simple_regional/README.md create mode 100644 cli/testdata/bpmetadata/content/examples-some-without-tf/examples/simple_regional/main.tf create mode 100644 cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/README.md create mode 100644 cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform/main.tf create mode 100644 cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part2/README.md create mode 100644 cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part2/main.tf create mode 100644 cli/testdata/bpmetadata/content/examples/simple_regional/README.md create mode 100644 cli/testdata/bpmetadata/content/examples/simple_regional/main.tf create mode 100644 cli/testdata/bpmetadata/content/examples/simple_regional_beta/README.md create mode 100644 cli/testdata/bpmetadata/content/examples/simple_regional_beta/main.tf create mode 100644 cli/testdata/bpmetadata/content/examples/simple_regional_beta/variables.tf create mode 100644 cli/testdata/bpmetadata/content/modules-no-tf/modules/beta-public-cluster/README.md create mode 100644 cli/testdata/bpmetadata/content/modules/beta-public-cluster/README.md create mode 100644 cli/testdata/bpmetadata/content/modules/beta-public-cluster/main.tf create mode 100644 cli/testdata/bpmetadata/content/modules/binary-authorization/README.md create mode 100644 cli/testdata/bpmetadata/content/modules/binary-authorization/main.tf create mode 100644 cli/testdata/bpmetadata/content/modules/private-cluster/README.md create mode 100644 cli/testdata/bpmetadata/content/modules/private-cluster/main.tf diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index b377768ba52..5752e83bb7e 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -20,6 +20,9 @@ const ( tfVersionsFileName = "versions.tf" tfRolesFileName = "test/setup/iam.tf" tfServicesFileName = "test/setup/main.tf" + iconFilePath = "assets/icon.png" + modulesPath = "modules" + examplesPath = "examples" ) func init() { @@ -102,7 +105,7 @@ func CreateBlueprintMetadata(bpPath string) error { return fmt.Errorf("error creating blueprint requirements: %w", err) } - content := createContent(bpPath, readmeContent) + content := createContent(bpPath, repoDetails.Source.RootPath, readmeContent) bpMetadataObj.Spec = &BlueprintMetadataSpec{ Info: *info, @@ -157,12 +160,18 @@ func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { i.Description.PreDeploy = preDeploy.literal } - // TODO:(b/246603410) create icon + // create icon + iPath := path.Join(repoDetails.Source.RootPath, iconFilePath) + exists, _ := fileExists(iPath) + if exists { + i.Icon = iconFilePath + } return i, nil } -func createContent(bpPath string, readmeContent []byte) BlueprintContent { +func createContent(bpPath string, rootPath string, readmeContent []byte) BlueprintContent { + var content BlueprintContent var docListToSet []BlueprintListContent documentation, err := getMdContent(readmeContent, -1, -1, "Documentation", true) if err == nil { @@ -174,13 +183,23 @@ func createContent(bpPath string, readmeContent []byte) BlueprintContent { docListToSet = append(docListToSet, doc) } + + content.Documentation = docListToSet } // TODO:(b/246603410) create sub-blueprints + modPath := path.Join(bpPath, modulesPath) + modContent, err := getModules(modPath) + if err == nil { + content.SubBlueprints = modContent + } // TODO:(b/246603410) create examples - - return BlueprintContent{ - Documentation: docListToSet, + exPath := path.Join(rootPath, examplesPath) + exContent, err := getExamples(exPath) + if err == nil { + content.Examples = exContent } + + return content } diff --git a/cli/bpmetadata/path.go b/cli/bpmetadata/path.go new file mode 100644 index 00000000000..27e7ddfdbf4 --- /dev/null +++ b/cli/bpmetadata/path.go @@ -0,0 +1,92 @@ +package bpmetadata + +import ( + "fmt" + "io/fs" + "os" + "path/filepath" + "regexp" + "sort" + "strings" +) + +const ( + regexExamples = ".*/(examples/.*)" + regexModules = ".*/(modules/.*)" +) + +var ( + reExamples = regexp.MustCompile(regexExamples) + reModules = regexp.MustCompile(regexModules) +) + +func fileExists(path string) (bool, error) { + info, err := os.Stat(path) + if err != nil { + return false, fmt.Errorf("unable to read file at the provided path: %v", err) + } + + if info.IsDir() { + return false, fmt.Errorf("provided path is a directory, need a valid file path.") + } + + return true, nil +} + +func getExamples(configPath string) ([]BlueprintMiscContent, error) { + return getDirPaths(configPath, reExamples) +} + +func getModules(configPath string) ([]BlueprintMiscContent, error) { + return getDirPaths(configPath, reModules) +} + +// getDirPaths traverses a given path and looks for directories +// with TF configs while ignoring the .terraform* directories created and +// used internally by the Terraform CLI +func getDirPaths(configPath string, re *regexp.Regexp) ([]BlueprintMiscContent, error) { + paths := []BlueprintMiscContent{} + err := filepath.Walk(configPath, func(path string, info fs.FileInfo, err error) error { + if err != nil { + return fmt.Errorf("error accessing examples in the path %q: %v", configPath, err) + } + + // skip if this is a .terraform dir + if info.IsDir() && strings.HasPrefix(info.Name(), ".terraform") { + return filepath.SkipDir + } + + // only interested if it has a TF config + if !info.IsDir() && strings.HasSuffix(info.Name(), ".tf") { + d := filepath.Dir(path) + if l := trimPath(d, re); l != "" { + dirPath := BlueprintMiscContent{ + Name: filepath.Base(d), + Location: l, + } + + paths = append(paths, dirPath) + } + return filepath.SkipDir + } + + return nil + }) + + if err != nil { + return nil, fmt.Errorf("error accessing examples in the path %q: %v", configPath, err) + } + + // Sort by configPath name before returning + sort.SliceStable(paths, func(i, j int) bool { return paths[i].Name < paths[j].Name }) + return paths, nil +} + +func trimPath(assetPath string, re *regexp.Regexp) string { + matches := re.FindStringSubmatch(assetPath) + if len(matches) > 1 { + return matches[1] + } + + return "" +} diff --git a/cli/bpmetadata/path_test.go b/cli/bpmetadata/path_test.go new file mode 100644 index 00000000000..07323f3f2fa --- /dev/null +++ b/cli/bpmetadata/path_test.go @@ -0,0 +1,158 @@ +package bpmetadata + +import ( + "path" + "regexp" + "sort" + "testing" + + "github.com/stretchr/testify/assert" +) + +const ( + bptestdataPath = "../testdata/bpmetadata" +) + +func TestIsPathValid(t *testing.T) { + tests := []struct { + name string + path string + want bool + wantErr bool + }{ + { + name: "valid", + path: "assets/icon.png", + want: true, + wantErr: false, + }, + { + name: "invalid", + path: "assets/icon2.png", + wantErr: true, + }, + { + name: "empty", + path: "", + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := fileExists(path.Join(bptestdataPath, tt.path)) + if (err != nil) != tt.wantErr { + t.Errorf("fileExists() error = %v, wantErr %v", err, tt.wantErr) + return + } + + if got != tt.want { + t.Errorf("fileExists() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestDirContent(t *testing.T) { + tests := []struct { + name string + path string + regex string + want []BlueprintMiscContent + wantErr bool + }{ + { + name: "valid examples", + path: "content/examples", + regex: regexExamples, + want: []BlueprintMiscContent{ + BlueprintMiscContent{ + Name: "terraform", + Location: "examples/acm/acm-terraform-blog-part1/terraform", + }, + BlueprintMiscContent{ + Name: "acm-terraform-blog-part2", + Location: "examples/acm/acm-terraform-blog-part2", + }, + BlueprintMiscContent{ + Name: "simple_regional", + Location: "examples/simple_regional", + }, + BlueprintMiscContent{ + Name: "simple_regional_beta", + Location: "examples/simple_regional_beta", + }, + }, + wantErr: false, + }, + { + name: "valid modules", + path: "content/modules", + regex: regexModules, + want: []BlueprintMiscContent{ + BlueprintMiscContent{ + Name: "beta-public-cluster", + Location: "modules/beta-public-cluster", + }, + BlueprintMiscContent{ + Name: "binary-authorization", + Location: "modules/binary-authorization", + }, + BlueprintMiscContent{ + Name: "private-cluster", + Location: "modules/private-cluster", + }, + }, + wantErr: false, + }, + { + name: "invalid dir", + path: "content/modules2", + regex: regexModules, + wantErr: true, + }, + { + name: "some example folders without any tf", + path: "content/examples-some-without-tf/examples", + regex: regexExamples, + want: []BlueprintMiscContent{ + BlueprintMiscContent{ + Name: "terraform", + Location: "examples/acm/acm-terraform-blog-part1/terraform", + }, + BlueprintMiscContent{ + Name: "simple_regional", + Location: "examples/simple_regional", + }, + }, + wantErr: false, + }, + { + name: "all module folders without any tf", + path: "content/modules-no-tf/modules", + regex: regexModules, + want: []BlueprintMiscContent{}, + wantErr: false, + }, + { + name: "mismatched regex", + path: "content/modules", + regex: "badRegex", + want: []BlueprintMiscContent{}, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + re := regexp.MustCompile(tt.regex) + sort.SliceStable(tt.want, func(i, j int) bool { return tt.want[i].Name < tt.want[j].Name }) + got, err := getDirPaths(path.Join(bptestdataPath, tt.path), re) + if (err != nil) != tt.wantErr { + t.Errorf("getDirPaths() error = %v, wantErr %v", err, tt.wantErr) + return + } + + assert.Equal(t, got, tt.want) + }) + } +} diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index 8169c57c728..a9d1798dd35 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -5,6 +5,7 @@ import ( "os" "path/filepath" "regexp" + "sort" hcl "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/gohcl" @@ -185,6 +186,9 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { variables = append(variables, v) } + // Sort variables + sort.SliceStable(variables, func(i, j int) bool { return variables[i].Name < variables[j].Name }) + var outputs []BlueprintOutput for _, val := range mod.Outputs { o := getBlueprintOutput(val) @@ -192,6 +196,9 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { outputs = append(outputs, o) } + // Sort outputs + sort.SliceStable(outputs, func(i, j int) bool { return outputs[i].Name < outputs[j].Name }) + return &BlueprintInterface{ Variables: variables, Outputs: outputs, diff --git a/cli/testdata/bpmetadata/assets/icon.png b/cli/testdata/bpmetadata/assets/icon.png new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part1/README.md b/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part1/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part1/terraform/main.tf b/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part1/terraform/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part2/README.md b/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/acm/acm-terraform-blog-part2/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/beta_cluster/README.md b/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/beta_cluster/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/simple_regional/README.md b/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/simple_regional/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/simple_regional/main.tf b/cli/testdata/bpmetadata/content/examples-some-without-tf/examples/simple_regional/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/README.md b/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform/main.tf b/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part2/README.md b/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part2/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part2/main.tf b/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part2/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional/README.md b/cli/testdata/bpmetadata/content/examples/simple_regional/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional/main.tf b/cli/testdata/bpmetadata/content/examples/simple_regional/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional_beta/README.md b/cli/testdata/bpmetadata/content/examples/simple_regional_beta/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional_beta/main.tf b/cli/testdata/bpmetadata/content/examples/simple_regional_beta/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional_beta/variables.tf b/cli/testdata/bpmetadata/content/examples/simple_regional_beta/variables.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/modules-no-tf/modules/beta-public-cluster/README.md b/cli/testdata/bpmetadata/content/modules-no-tf/modules/beta-public-cluster/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/modules/beta-public-cluster/README.md b/cli/testdata/bpmetadata/content/modules/beta-public-cluster/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/modules/beta-public-cluster/main.tf b/cli/testdata/bpmetadata/content/modules/beta-public-cluster/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/modules/binary-authorization/README.md b/cli/testdata/bpmetadata/content/modules/binary-authorization/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/modules/binary-authorization/main.tf b/cli/testdata/bpmetadata/content/modules/binary-authorization/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/modules/private-cluster/README.md b/cli/testdata/bpmetadata/content/modules/private-cluster/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/modules/private-cluster/main.tf b/cli/testdata/bpmetadata/content/modules/private-cluster/main.tf new file mode 100644 index 00000000000..e69de29bb2d From ea39ee0a1ce77661616d51de4fbdc2f2b3b931dc Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Sun, 23 Oct 2022 17:26:50 -0700 Subject: [PATCH 0173/1371] feat:functionality for writing metadata to disk --- cli/bpmetadata/cmd.go | 124 +++++++++++++++---- cli/bpmetadata/markdown.go | 6 + cli/bpmetadata/markdown_test.go | 9 ++ cli/bpmetadata/tfconfig.go | 4 +- cli/bpmetadata/types.go | 70 ++++++----- cli/testdata/bpmetadata/md/simple-content.md | 3 + 6 files changed, 159 insertions(+), 57 deletions(-) diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 5752e83bb7e..2d9bd62c663 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -1,6 +1,7 @@ package bpmetadata import ( + "errors" "fmt" "os" "path" @@ -13,6 +14,7 @@ import ( var mdFlags struct { path string nested bool + force bool } const ( @@ -23,13 +25,17 @@ const ( iconFilePath = "assets/icon.png" modulesPath = "modules" examplesPath = "examples" + metadataFileName = "metadata.yaml" + metadataApiVersion = "blueprints.cloud.google.com/v1alpha1" + metadataKind = "BlueprintMetadata" ) func init() { viper.AutomaticEnv() - Cmd.Flags().StringVar(&mdFlags.path, "path", ".", "Path to the blueprint for generating metadata.") + Cmd.Flags().StringVarP(&mdFlags.path, "path", "p", ".", "Path to the blueprint for generating metadata.") Cmd.Flags().BoolVar(&mdFlags.nested, "nested", true, "Flag for generating metadata for nested blueprint, if any.") + Cmd.Flags().BoolVarP(&mdFlags.force, "force", "f", false, "Force the generation of metadata") } var Cmd = &cobra.Command{ @@ -47,37 +53,48 @@ func generate(cmd *cobra.Command, args []string) error { return fmt.Errorf("error getting working dir: %w", err) } - // create metadata details bpPath := path.Join(wdPath, mdFlags.path) - err = CreateBlueprintMetadata(bpPath) + + //try to read existing metadata.yaml + bpObj, err := UnmarshalMetadata(bpPath) + if err != nil && !mdFlags.force { + return err + } + + // create metadata details + bpMetaObj, err := CreateBlueprintMetadata(bpPath, bpObj) if err != nil { return fmt.Errorf("error creating metadata for blueprint: %w", err) } - // TODO:(b/248642744) write metadata to metadata.yaml + // write metadata to disk + err = WriteMetadata(bpMetaObj) + if err != nil { + return fmt.Errorf("error writing metadata to disk: %w", err) + } return nil } -func CreateBlueprintMetadata(bpPath string) error { +func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (*BlueprintMetadata, error) { // verfiy that the blueprint path is valid & get repo details repoDetails, err := getRepoDetailsByPath(bpPath) if err != nil { - return err + return nil, err } // start creating blueprint metadata - var bpMetadataObj = &BlueprintMetadata{} bpMetadataObj.Meta = yaml.ResourceMeta{ TypeMeta: yaml.TypeMeta{ - APIVersion: "blueprints.cloud.google.com/v1alpha1", - Kind: "BlueprintMetadata", + APIVersion: metadataApiVersion, + Kind: metadataKind, }, ObjectMeta: yaml.ObjectMeta{ NameMeta: yaml.NameMeta{ Name: repoDetails.Name, Namespace: "", }, + Labels: bpMetadataObj.Meta.ObjectMeta.Labels, Annotations: map[string]string{"config.kubernetes.io/local-config": "true"}, }, } @@ -85,36 +102,36 @@ func CreateBlueprintMetadata(bpPath string) error { // start creating the Spec node readmeContent, err := os.ReadFile(path.Join(bpPath, readmeFileName)) if err != nil { - return fmt.Errorf("error reading blueprint readme markdown: %w", err) + return nil, fmt.Errorf("error reading blueprint readme markdown: %w", err) } info, err := createInfo(bpPath, readmeContent) if err != nil { - return fmt.Errorf("error creating blueprint info: %w", err) + return nil, fmt.Errorf("error creating blueprint info: %w", err) } - interfaces, err := getBlueprintInterfaces(bpPath) + interfaces, err := createInterfaces(bpPath, &bpMetadataObj.Spec.Interfaces) if err != nil { - return fmt.Errorf("error creating blueprint interfaces: %w", err) + return nil, fmt.Errorf("error creating blueprint interfaces: %w", err) } rolesCfgPath := path.Join(repoDetails.Source.RootPath, tfRolesFileName) svcsCfgPath := path.Join(repoDetails.Source.RootPath, tfServicesFileName) requirements, err := getBlueprintRequirements(rolesCfgPath, svcsCfgPath) if err != nil { - return fmt.Errorf("error creating blueprint requirements: %w", err) + return nil, fmt.Errorf("error creating blueprint requirements: %w", err) } - content := createContent(bpPath, repoDetails.Source.RootPath, readmeContent) + content := createContent(bpPath, repoDetails.Source.RootPath, readmeContent, &bpMetadataObj.Spec.Content) - bpMetadataObj.Spec = &BlueprintMetadataSpec{ + bpMetadataObj.Spec = BlueprintMetadataSpec{ Info: *info, - Content: content, + Content: *content, Interfaces: *interfaces, Requirements: *requirements, } - return nil + return bpMetadataObj, nil } func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { @@ -143,6 +160,12 @@ func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { i.Version = versionInfo.moduleVersion + // actuation tool + i.ActuationTool = BlueprintActuationTool{ + Version: versionInfo.requiredTfVersion, + Flavor: "Terraform", + } + // create descriptions i.Description = &BlueprintDescription{} tagline, err := getMdContent(readmeContent, -1, -1, "Tagline", true) @@ -170,8 +193,21 @@ func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { return i, nil } -func createContent(bpPath string, rootPath string, readmeContent []byte) BlueprintContent { - var content BlueprintContent +func createInterfaces(bpPath string, interfaces *BlueprintInterface) (*BlueprintInterface, error) { + i, err := getBlueprintInterfaces(bpPath) + if err != nil { + return nil, err + } + + if interfaces.VariableGroups != nil { + i.VariableGroups = interfaces.VariableGroups + } + + return i, nil +} + +func createContent(bpPath string, rootPath string, readmeContent []byte, content *BlueprintContent) *BlueprintContent { + //var content BlueprintContent var docListToSet []BlueprintListContent documentation, err := getMdContent(readmeContent, -1, -1, "Documentation", true) if err == nil { @@ -187,14 +223,14 @@ func createContent(bpPath string, rootPath string, readmeContent []byte) Bluepri content.Documentation = docListToSet } - // TODO:(b/246603410) create sub-blueprints + // create sub-blueprints modPath := path.Join(bpPath, modulesPath) modContent, err := getModules(modPath) if err == nil { content.SubBlueprints = modContent } - // TODO:(b/246603410) create examples + // create examples exPath := path.Join(rootPath, examplesPath) exContent, err := getExamples(exPath) if err == nil { @@ -203,3 +239,47 @@ func createContent(bpPath string, rootPath string, readmeContent []byte) Bluepri return content } + +func WriteMetadata(obj *BlueprintMetadata) error { + // marshal and write the file + yFile, err := yaml.Marshal(obj) + if err != nil { + return err + } + + return os.WriteFile(metadataFileName, yFile, 0644) +} + +func UnmarshalMetadata(bpPath string) (*BlueprintMetadata, error) { + bpObj := BlueprintMetadata{} + metaFilePath := path.Join(bpPath, metadataFileName) + + // return empty metadata if file does not exist or if the file is not read + if _, err := os.Stat(metaFilePath); errors.Is(err, os.ErrNotExist) { + return &bpObj, nil + } + + f, err := os.ReadFile(metaFilePath) + if err != nil { + return &bpObj, fmt.Errorf("unable to read metadata from the existing file: %w", err) + } + + err = yaml.Unmarshal(f, &bpObj) + if err != nil { + return &bpObj, err + } + + currVersion := bpObj.Meta.TypeMeta.APIVersion + currKind := bpObj.Meta.TypeMeta.Kind + + //validate GVK for current metadata + if currVersion != metadataApiVersion { + return &bpObj, fmt.Errorf("found incorrect version for the metadata: %s. Supported version is: %s", currVersion, metadataApiVersion) + } + + if currKind != metadataKind { + return &bpObj, fmt.Errorf("found incorrect kind for the metadata: %s. Supported kind is %s", currKind, metadataKind) + } + + return &bpObj, nil +} diff --git a/cli/bpmetadata/markdown.go b/cli/bpmetadata/markdown.go index b596f6a88bf..576968cf6d2 100644 --- a/cli/bpmetadata/markdown.go +++ b/cli/bpmetadata/markdown.go @@ -29,6 +29,12 @@ func getMdContent(content []byte, headLevel int, headOrder int, headTitle string mdSections := mdDocument.GetChildren() var foundHead bool for _, section := range mdSections { + // if the first child is nil, it's a comment and we don't + // need to evaluate it + if ast.GetFirstChild(section) == nil { + continue + } + currLeaf := ast.GetFirstChild(section).AsLeaf() switch sectionType := section.(type) { case *ast.Heading: diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go index 4973884dff4..12ee96da5e4 100644 --- a/cli/bpmetadata/markdown_test.go +++ b/cli/bpmetadata/markdown_test.go @@ -82,6 +82,15 @@ func TestProcessMarkdownContent(t *testing.T) { literal: "some content sub heading for h3", }, }, + { + name: "Tagline does not exist", + fileName: "simple-content.md", + level: -1, + order: -1, + title: "Tagline", + getContent: true, + want: nil, + }, { name: "content by head title does not exist", fileName: "simple-content.md", diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index a9d1798dd35..53ce7512c2e 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -289,8 +289,8 @@ func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { containerRoles := BlueprintRoles{ // TODO: (b/248123274) no good way to associate granularity yet - Granularity: "", - Roles: iamRoles, + Level: "", + Roles: iamRoles, } r = append(r, containerRoles) diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index bd9ce4bed85..16306393953 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -4,41 +4,43 @@ import "sigs.k8s.io/kustomize/kyaml/yaml" // BlueprintMetadata defines the overall structure for blueprint metadata details type BlueprintMetadata struct { - Meta yaml.ResourceMeta - Spec *BlueprintMetadataSpec `yaml:"spec"` + Meta yaml.ResourceMeta `json:",inline" yaml:",inline"` + Spec BlueprintMetadataSpec } // BlueprintMetadataSpec defines the spec portion of the blueprint metadata type BlueprintMetadataSpec struct { - Info BlueprintInfo - Content BlueprintContent - Interfaces BlueprintInterface - Requirements BlueprintRequirements + Info BlueprintInfo `json:",inline" yaml:",inline"` + Content BlueprintContent `json:",inline" yaml:",inline"` + Interfaces BlueprintInterface `json:",inline" yaml:",inline"` + Requirements BlueprintRequirements `json:",inline" yaml:",inline"` } // BlueprintInfo defines informational detail for the blueprint type BlueprintInfo struct { - Title string `yaml:"title"` - Source *BlueprintRepoDetail `yaml:"source"` + Title string + Source *BlueprintRepoDetail Version string - ActuationTool *BlueprintActuationTool - Description *BlueprintDescription - Icon string + ActuationTool BlueprintActuationTool `json:"actuationTool" yaml:"actuationTool"` + Description *BlueprintDescription `json:",omitempty" yaml:",omitempty"` + Icon string `json:",omitempty" yaml:",omitempty"` } // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. type BlueprintContent struct { - Diagrams []BlueprintDiagram - Documentation []BlueprintListContent - SubBlueprints []BlueprintMiscContent - Examples []BlueprintMiscContent + // Diagrams are manually entered + Diagrams []BlueprintDiagram `json:",omitempty" yaml:",omitempty"` + Documentation []BlueprintListContent `json:",omitempty" yaml:",omitempty"` + SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` + Examples []BlueprintMiscContent `json:",omitempty" yaml:",omitempty"` } // BlueprintInterface the input and output variables for the blueprint type BlueprintInterface struct { - Variables []BlueprintVariable - VariableGroups []BlueprintVariableGroup + Variables []BlueprintVariable + // VariableGroups are manually entered + VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` Outputs []BlueprintOutput } @@ -50,19 +52,19 @@ type BlueprintRequirements struct { } type BlueprintRepoDetail struct { - Repo string `yaml:"repo"` - SourceType string `yaml:"sourceType"` + Repo string + SourceType string `json:"sourceType" yaml:"sourceType"` } type BlueprintActuationTool struct { - Flavor string `yaml:"type"` + Flavor string `json:"type" yaml:"type"` Version string } type BlueprintDescription struct { - Tagline string - Detailed string - PreDeploy string + Tagline string `json:",omitempty" yaml:",omitempty"` + Detailed string `json:",omitempty" yaml:",omitempty"` + PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` } type BlueprintMiscContent struct { @@ -70,37 +72,39 @@ type BlueprintMiscContent struct { Location string } +// BlueprintDiagram is manually entered type BlueprintDiagram struct { Name string - AltText string - Description string + AltText string `json:"altText,omitempty" yaml:"altText,omitempty"` + Description string `json:",omitempty" yaml:",omitempty"` } type BlueprintListContent struct { Title string - Url string + Url string `json:",omitempty" yaml:",omitempty"` } type BlueprintVariable struct { Name string - Description string - VarType string `yaml:"type"` - Default interface{} + Description string `json:",omitempty" yaml:",omitempty"` + VarType string `yaml:"type"` + Default interface{} `json:",omitempty" yaml:",omitempty"` Required bool } +// BlueprintVariableGroup is manually entered type BlueprintVariableGroup struct { Name string - Description string + Description string `json:",omitempty" yaml:",omitempty"` Variables []string } type BlueprintOutput struct { Name string - Description string + Description string `json:",omitempty" yaml:",omitempty"` } type BlueprintRoles struct { - Granularity string - Roles []string + Level string + Roles []string } diff --git a/cli/testdata/bpmetadata/md/simple-content.md b/cli/testdata/bpmetadata/md/simple-content.md index 7da6679e5e2..28e5bb2db83 100644 --- a/cli/testdata/bpmetadata/md/simple-content.md +++ b/cli/testdata/bpmetadata/md/simple-content.md @@ -7,6 +7,9 @@ some content sub heading for h2 ### h3 sub sub heading some content sub heading for h3 + + + ### h3 sub sub heading but order 2 some more content sub heading for h3 From 7d1e3c4afc774870b9ea0d883b27947bbefaaa87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Oct 2022 10:05:31 -0700 Subject: [PATCH 0174/1371] chore(deps): bump tzinfo from 1.2.7 to 2.0.5 and ruby from 2.6.9 to 2.7.6 (#1192) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- .../build/developer-tools/build/data/Gemfile | 1 + .../developer-tools/build/data/Gemfile.lock | 574 +++++++++++------- 3 files changed, 356 insertions(+), 221 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index a4c4f6fc251..7eff076733c 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -18,7 +18,7 @@ TERRAFORM_VALIDATOR_VERSION := 0.13.0 CLOUD_SDK_VERSION := 405.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 -RUBY_VERSION := 2.6.9 +RUBY_VERSION := 2.7.6 BATS_VERSION := 0.4.0 GOLANG_VERSION := 1.17 BATS_SUPPORT_VERSION := 0.3.0 diff --git a/infra/build/developer-tools/build/data/Gemfile b/infra/build/developer-tools/build/data/Gemfile index 7461e0697fd..4723a685fc4 100644 --- a/infra/build/developer-tools/build/data/Gemfile +++ b/infra/build/developer-tools/build/data/Gemfile @@ -18,3 +18,4 @@ source 'https://rubygems.org/' do gem "rest-client", "~> 2.0" gem 'nokogiri', '~> 1.13' end +ruby '~> 2.7.6' diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 39f1717fd91..fb38a103176 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -1,198 +1,280 @@ GEM remote: https://rubygems.org/ specs: - activesupport (5.2.4.4) + activesupport (7.0.3.1) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) - aws-eventstream (1.1.0) - aws-partitions (1.381.0) - aws-sdk-apigateway (1.55.0) - aws-sdk-core (~> 3, >= 3.109.0) + ast (2.4.2) + aws-eventstream (1.2.0) + aws-partitions (1.610.0) + aws-sdk-alexaforbusiness (1.56.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-apigatewayv2 (1.29.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-amplify (1.32.0) + aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-athena (1.33.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-apigateway (1.78.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-autoscaling (1.22.0) - aws-sdk-core (~> 3, >= 3.52.1) + aws-sdk-apigatewayv2 (1.42.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-budgets (1.35.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-applicationautoscaling (1.51.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudformation (1.44.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-athena (1.56.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudfront (1.43.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-autoscaling (1.63.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsm (1.27.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-batch (1.47.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsmv2 (1.30.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-budgets (1.50.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudtrail (1.29.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-cloudformation (1.70.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatch (1.45.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-cloudfront (1.65.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchlogs (1.38.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-cloudhsm (1.39.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-codecommit (1.40.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-cloudhsmv2 (1.42.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-codedeploy (1.37.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-cloudtrail (1.49.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-codepipeline (1.37.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-cloudwatch (1.65.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-configservice (1.53.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-cloudwatchevents (1.46.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-core (3.109.1) + aws-sdk-cloudwatchlogs (1.53.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-codecommit (1.51.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-codedeploy (1.49.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-codepipeline (1.53.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-cognitoidentity (1.31.0) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sigv4 (~> 1.1) + aws-sdk-cognitoidentityprovider (1.53.0) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sigv4 (~> 1.1) + aws-sdk-configservice (1.79.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-core (3.131.3) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.239.0) + aws-partitions (~> 1, >= 1.525.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1, >= 1.6.1) + aws-sdk-costandusagereportservice (1.40.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-databasemigrationservice (1.53.0) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sigv4 (~> 1.1) + aws-sdk-dynamodb (1.75.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-ec2 (1.324.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-ecr (1.56.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-ecrpublic (1.12.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-ecs (1.100.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-efs (1.54.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-eks (1.75.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - jmespath (~> 1.0) - aws-sdk-costandusagereportservice (1.28.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-elasticache (1.79.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-dynamodb (1.55.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-elasticbeanstalk (1.51.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-ec2 (1.200.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-elasticloadbalancing (1.40.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-ecr (1.39.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-elasticloadbalancingv2 (1.78.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-ecs (1.70.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-elasticsearchservice (1.65.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-efs (1.36.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-emr (1.53.0) + aws-sdk-core (~> 3, >= 3.121.2) aws-sigv4 (~> 1.1) - aws-sdk-eks (1.45.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-eventbridge (1.24.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticache (1.44.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-firehose (1.48.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticbeanstalk (1.38.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-glue (1.88.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancing (1.29.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-guardduty (1.58.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancingv2 (1.53.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-iam (1.69.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticsearchservice (1.43.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-kafka (1.50.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-firehose (1.35.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-kinesis (1.41.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-guardduty (1.42.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-kms (1.58.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-iam (1.46.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-lambda (1.84.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-kafka (1.29.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-mq (1.40.0) + aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesis (1.30.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-networkfirewall (1.18.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-kms (1.39.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-networkmanager (1.24.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-lambda (1.51.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-organizations (1.59.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-organizations (1.17.0) - aws-sdk-core (~> 3, >= 3.39.0) - aws-sigv4 (~> 1.0) - aws-sdk-rds (1.103.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-ram (1.26.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-redshift (1.50.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-rds (1.150.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-route53 (1.44.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-redshift (1.84.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-route53domains (1.28.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-route53 (1.63.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-route53resolver (1.21.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-route53domains (1.40.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.83.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-route53resolver (1.37.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.114.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.4) + aws-sdk-s3control (1.43.0) + aws-sdk-core (~> 3, >= 3.122.0) + aws-sigv4 (~> 1.1) + aws-sdk-secretsmanager (1.46.0) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sigv4 (~> 1.1) + aws-sdk-securityhub (1.67.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-servicecatalog (1.60.0) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sigv4 (~> 1.1) + aws-sdk-ses (1.41.0) + aws-sdk-core (~> 3, >= 3.120.0) + aws-sigv4 (~> 1.1) + aws-sdk-shield (1.48.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-signer (1.32.0) + aws-sdk-core (~> 3, >= 3.120.0) + aws-sigv4 (~> 1.1) + aws-sdk-simpledb (1.29.0) + aws-sdk-core (~> 3, >= 3.120.0) + aws-sigv2 (~> 1.0) + aws-sdk-sms (1.40.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-securityhub (1.35.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-sns (1.53.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-ses (1.36.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-sqs (1.51.1) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-sms (1.27.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-ssm (1.137.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-sns (1.33.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-states (1.39.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-sqs (1.34.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-synthetics (1.19.0) + aws-sdk-core (~> 3, >= 3.121.2) aws-sigv4 (~> 1.1) - aws-sdk-ssm (1.93.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-transfer (1.34.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sigv4 (1.2.2) + aws-sdk-waf (1.43.0) + aws-sdk-core (~> 3, >= 3.122.0) + aws-sigv4 (~> 1.1) + aws-sigv2 (1.1.0) + aws-sigv4 (1.5.1) aws-eventstream (~> 1, >= 1.0.2) azure_graph_rbac (0.17.2) ms_rest_azure (~> 0.12.0) - azure_mgmt_key_vault (0.17.6) + azure_mgmt_key_vault (0.17.7) ms_rest_azure (~> 0.12.0) - azure_mgmt_resources (0.18.0) + azure_mgmt_resources (0.18.2) ms_rest_azure (~> 0.12.0) - azure_mgmt_security (0.18.2) + azure_mgmt_security (0.19.0) ms_rest_azure (~> 0.12.0) - azure_mgmt_storage (0.22.0) + azure_mgmt_storage (0.23.0) ms_rest_azure (~> 0.12.0) bcrypt_pbkdf (1.0.1) + bson (4.15.0) builder (3.2.4) - chef-config (16.5.77) + chef-config (17.10.0) addressable - chef-utils (= 16.5.77) + chef-utils (= 17.10.0) fuzzyurl mixlib-config (>= 2.2.12, < 4.0) mixlib-shellout (>= 2.0, < 4.0) tomlrb (~> 1.2) - chef-telemetry (1.0.14) + chef-telemetry (1.1.1) chef-config concurrent-ruby (~> 1.0) - ffi-yajl (~> 2.2) - chef-utils (16.5.77) + chef-utils (17.10.0) + concurrent-ruby coderay (1.1.3) - concurrent-ruby (1.1.7) + concurrent-ruby (1.1.10) + cookstyle (7.32.1) + rubocop (= 1.25.1) declarative (0.0.20) - declarative-option (0.1.0) delegate (0.1.0) - diff-lcs (1.4.4) - docker-api (2.0.0) + diff-lcs (1.5.0) + docker-api (2.2.0) excon (>= 0.47.0) multi_json domain_name (0.5.20190701) @@ -226,101 +308,107 @@ GEM dry-equalizer (~> 0.2) dry-logic (~> 0.5, >= 0.5.0) dry-types (~> 0.14.0) - ecma-re-validator (0.2.1) - regexp_parser (~> 1.2) ed25519 (1.2.4) - erubi (1.9.0) - excon (0.76.0) - faraday (1.0.1) + erubi (1.10.0) + excon (0.92.4) + faraday (1.4.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) multipart-post (>= 1.2, < 3) + ruby2_keywords (>= 0.0.4) faraday-cookie_jar (0.0.7) faraday (>= 0.8.0) http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) faraday_middleware (1.0.0) faraday (~> 1.0) ffi (1.15.5) ffi-compiler (1.0.1) ffi (>= 1.0.0) rake - ffi-yajl (2.3.4) - libyajl2 (~> 1.2) fuzzyurl (0.9.0) - google-api-client (0.44.0) + google-api-client (0.52.0) addressable (~> 2.5, >= 2.5.1) googleauth (~> 0.9) httpclient (>= 2.8.1, < 3.0) mini_mime (~> 1.0) representable (~> 3.0) retriable (>= 2.0, < 4.0) + rexml signet (~> 0.12) - googleauth (0.13.0) + googleauth (0.14.0) faraday (>= 0.17.3, < 2.0) jwt (>= 1.4, < 3.0) memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (~> 0.14) - gssapi (1.3.0) + gssapi (1.3.1) ffi (>= 1.0.1) - gyoku (1.3.1) + gyoku (1.4.0) builder (>= 2.1.2) - hana (1.3.6) - hashie (3.6.0) + rexml (~> 3.0) + hashie (4.1.0) http (4.4.1) addressable (~> 2.3) http-cookie (~> 1.0) http-form_data (~> 2.2) http-parser (~> 1.2.0) http-accept (1.7.0) - http-cookie (1.0.4) + http-cookie (1.0.5) domain_name (~> 0.5) http-form_data (2.3.0) http-parser (1.2.3) ffi-compiler (>= 1.0, < 2.0) httpclient (2.8.3) - i18n (1.8.5) + i18n (1.12.0) concurrent-ruby (~> 1.0) inifile (3.0.0) - inspec (4.23.11) + inspec (4.56.20) + cookstyle faraday_middleware (>= 0.12.2, < 1.1) - inspec-core (= 4.23.11) + inspec-core (= 4.56.20) + mongo (= 2.13.2) + rake train (~> 3.0) - train-aws (~> 0.1) + train-aws (~> 0.2) train-habitat (~> 0.1) train-winrm (~> 0.2) - inspec-core (4.23.11) + inspec-core (4.56.20) addressable (~> 2.4) - chef-telemetry (~> 1.0) - faraday (>= 0.9.0, < 1.1) - hashie (~> 3.4) - json_schemer (>= 0.2.1, < 0.2.12) + chef-telemetry (~> 1.0, >= 1.0.8) + faraday (>= 0.9.0, < 1.5) + faraday_middleware (~> 1.0) + hashie (>= 3.4, < 5.0) license-acceptance (>= 0.2.13, < 3.0) method_source (>= 0.8, < 2.0) mixlib-log (~> 3.0) multipart-post (~> 2.0) parallel (~> 1.9) - parslet (~> 1.5) + parslet (>= 1.5, < 2.0) pry (~> 0.13) - rspec (~> 3.9) + rspec (>= 3.9, <= 3.11) rspec-its (~> 1.2) - rubyzip (~> 1.2, >= 1.2.2) + rubyzip (>= 1.2.2, < 3.0) semverse (~> 3.0) sslshake (~> 1.2) thor (>= 0.20, < 2.0) - tomlrb (~> 1.2.0) + tomlrb (>= 1.2, < 2.1) train-core (~> 3.0) tty-prompt (~> 0.17) tty-table (~> 0.10) jmespath (1.6.1) - json (2.3.1) - json_schemer (0.2.11) - ecma-re-validator (~> 0.2) - hana (~> 1.3) - regexp_parser (~> 1.5) - uri_template (~> 0.7) + json (2.6.2) jsonpath (1.1.0) multi_json - jwt (2.2.2) + jwt (2.4.1) kitchen-terraform (5.8.0) delegate (~> 0.1.0) dry-validation (~> 0.13) @@ -334,14 +422,13 @@ GEM jsonpath (~> 1.0) recursive-open-struct (~> 1.1, >= 1.1.1) rest-client (~> 2.0) - libyajl2 (1.2.0) - license-acceptance (2.1.2) + license-acceptance (2.1.13) pastel (~> 0.7) - tomlrb (~> 1.2) + tomlrb (>= 1.2, < 3.0) tty-box (~> 0.6) tty-prompt (~> 0.20) little-plugger (1.1.4) - logging (2.3.0) + logging (2.3.1) little-plugger (~> 1.1) multi_json (~> 1.14) memoist (0.16.2) @@ -349,19 +436,21 @@ GEM mime-types (3.4.1) mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) - mini_mime (1.0.2) + mini_mime (1.1.2) mini_portile2 (2.8.0) - minitest (5.14.2) - mixlib-config (3.0.9) + minitest (5.16.2) + mixlib-config (3.0.27) tomlrb mixlib-install (3.12.3) mixlib-shellout mixlib-versioning thor mixlib-log (3.0.9) - mixlib-shellout (3.1.6) + mixlib-shellout (3.2.7) chef-utils mixlib-versioning (1.2.12) + mongo (2.13.2) + bson (>= 4.8.2, < 5.0.0) ms_rest (0.7.6) concurrent-ruby (~> 1.0) faraday (>= 0.9, < 2.0.0) @@ -372,7 +461,7 @@ GEM faraday-cookie_jar (~> 0.0.6) ms_rest (~> 0.7.6) multi_json (1.15.0) - multipart-post (2.1.1) + multipart-post (2.2.3) net-scp (3.0.0) net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.1.0) @@ -383,22 +472,25 @@ GEM mini_portile2 (~> 2.8.0) racc (~> 1.4) nori (2.6.0) - os (1.1.1) - parallel (1.19.2) + os (1.1.4) + parallel (1.22.1) + parser (3.1.2.0) + ast (~> 2.4.1) parslet (1.8.2) pastel (0.8.0) tty-color (~> 0.5) - pry (0.13.1) + pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (4.0.6) + public_suffix (4.0.7) racc (1.6.0) + rainbow (3.1.1) rake (13.0.6) recursive-open-struct (1.1.3) - regexp_parser (1.8.2) - representable (3.0.4) + regexp_parser (2.5.0) + representable (3.2.0) declarative (< 0.1.0) - declarative-option (< 0.2.0) + trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) rest-client (2.1.0) http-accept (>= 1.7.0, < 2.0) @@ -406,34 +498,48 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.2) - rspec (3.9.0) - rspec-core (~> 3.9.0) - rspec-expectations (~> 3.9.0) - rspec-mocks (~> 3.9.0) - rspec-core (3.9.3) - rspec-support (~> 3.9.3) - rspec-expectations (3.9.2) + rexml (3.2.5) + rspec (3.11.0) + rspec-core (~> 3.11.0) + rspec-expectations (~> 3.11.0) + rspec-mocks (~> 3.11.0) + rspec-core (3.11.0) + rspec-support (~> 3.11.0) + rspec-expectations (3.11.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.9.0) + rspec-support (~> 3.11.0) rspec-its (1.3.0) rspec-core (>= 3.0.0) rspec-expectations (>= 3.0.0) - rspec-mocks (3.9.1) + rspec-mocks (3.11.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.9.0) - rspec-support (3.9.3) - rubyntlm (0.6.2) - rubyzip (1.3.0) - semverse (3.0.0) - signet (0.14.0) - addressable (~> 2.3) - faraday (>= 0.17.3, < 2.0) + rspec-support (~> 3.11.0) + rspec-support (3.11.0) + rubocop (1.25.1) + parallel (~> 1.10) + parser (>= 3.1.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml + rubocop-ast (>= 1.15.1, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 1.4.0, < 3.0) + rubocop-ast (1.19.1) + parser (>= 3.1.1.0) + ruby-progressbar (1.11.0) + ruby2_keywords (0.0.5) + rubyntlm (0.6.3) + rubyzip (2.3.2) + semverse (3.0.2) + signet (0.17.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) sslshake (1.3.1) - strings (0.2.0) + strings (0.2.1) strings-ansi (~> 0.2) - unicode-display_width (~> 1.5) + unicode-display_width (>= 1.5, < 3.0) unicode_utils (~> 1.4) strings-ansi (0.2.0) test-kitchen (2.7.2) @@ -449,28 +555,32 @@ GEM winrm (~> 2.0) winrm-elevated (~> 1.0) winrm-fs (~> 1.1) - thor (1.0.1) - thread_safe (0.3.6) + thor (1.2.1) timeliness (0.3.10) - tomlrb (1.2.9) - train (3.3.24) - activesupport (>= 5.2.4.3, < 6.0.0) + tomlrb (1.3.0) + trailblazer-option (0.1.2) + train (3.10.1) + activesupport (>= 6.0.3.1) azure_graph_rbac (~> 0.16) azure_mgmt_key_vault (~> 0.17) azure_mgmt_resources (~> 0.15) azure_mgmt_security (~> 0.18) azure_mgmt_storage (~> 0.18) docker-api (>= 1.26, < 3.0) - google-api-client (>= 0.23.9, < 0.44.1) - googleauth (>= 0.6.6, < 0.13.1) + google-api-client (>= 0.23.9, <= 0.52.0) + googleauth (>= 0.6.6, <= 0.14.0) inifile (~> 3.0) - train-core (= 3.3.24) + train-core (= 3.10.1) train-winrm (~> 0.2) - train-aws (0.1.18) + train-aws (0.2.24) + aws-sdk-alexaforbusiness (~> 1.0) + aws-sdk-amplify (~> 1.32.0) aws-sdk-apigateway (~> 1.0) aws-sdk-apigatewayv2 (~> 1.0) + aws-sdk-applicationautoscaling (>= 1.46, < 1.52) aws-sdk-athena (~> 1.0) - aws-sdk-autoscaling (~> 1.22.0) + aws-sdk-autoscaling (>= 1.22, < 1.64) + aws-sdk-batch (>= 1.36, < 1.48) aws-sdk-budgets (~> 1.0) aws-sdk-cloudformation (~> 1.0) aws-sdk-cloudfront (~> 1.0) @@ -478,16 +588,21 @@ GEM aws-sdk-cloudhsmv2 (~> 1.0) aws-sdk-cloudtrail (~> 1.8) aws-sdk-cloudwatch (~> 1.13) + aws-sdk-cloudwatchevents (>= 1.36, < 1.47) aws-sdk-cloudwatchlogs (~> 1.13) aws-sdk-codecommit (~> 1.0) aws-sdk-codedeploy (~> 1.0) aws-sdk-codepipeline (~> 1.0) + aws-sdk-cognitoidentity (>= 1.26, < 1.32) + aws-sdk-cognitoidentityprovider (>= 1.46, < 1.54) aws-sdk-configservice (~> 1.21) aws-sdk-core (~> 3.0) aws-sdk-costandusagereportservice (~> 1.6) + aws-sdk-databasemigrationservice (>= 1.42, < 1.54) aws-sdk-dynamodb (~> 1.31) aws-sdk-ec2 (~> 1.70) aws-sdk-ecr (~> 1.18) + aws-sdk-ecrpublic (~> 1.3) aws-sdk-ecs (~> 1.30) aws-sdk-efs (~> 1.0) aws-sdk-eks (~> 1.9) @@ -496,48 +611,65 @@ GEM aws-sdk-elasticloadbalancing (~> 1.8) aws-sdk-elasticloadbalancingv2 (~> 1.0) aws-sdk-elasticsearchservice (~> 1.0) + aws-sdk-emr (~> 1.53.0) + aws-sdk-eventbridge (~> 1.24.0) aws-sdk-firehose (~> 1.0) + aws-sdk-glue (>= 1.71, < 1.89) aws-sdk-guardduty (~> 1.31) aws-sdk-iam (~> 1.13) aws-sdk-kafka (~> 1.0) aws-sdk-kinesis (~> 1.0) aws-sdk-kms (~> 1.13) aws-sdk-lambda (~> 1.0) - aws-sdk-organizations (~> 1.17.0) + aws-sdk-mq (~> 1.40.0) + aws-sdk-networkfirewall (>= 1.6.0) + aws-sdk-networkmanager (>= 1.13.0) + aws-sdk-organizations (>= 1.17, < 1.60) + aws-sdk-ram (>= 1.21, < 1.27) aws-sdk-rds (~> 1.43) aws-sdk-redshift (~> 1.0) aws-sdk-route53 (~> 1.0) aws-sdk-route53domains (~> 1.0) aws-sdk-route53resolver (~> 1.0) aws-sdk-s3 (~> 1.30) + aws-sdk-s3control (~> 1.43.0) + aws-sdk-secretsmanager (>= 1.42, < 1.47) aws-sdk-securityhub (~> 1.0) - aws-sdk-ses (~> 1.0) + aws-sdk-servicecatalog (>= 1.48, < 1.61) + aws-sdk-ses (~> 1.41.0) + aws-sdk-shield (~> 1.30) + aws-sdk-signer (~> 1.32.0) + aws-sdk-simpledb (~> 1.29.0) aws-sdk-sms (~> 1.0) aws-sdk-sns (~> 1.9) aws-sdk-sqs (~> 1.10) aws-sdk-ssm (~> 1.0) - train-core (3.3.24) + aws-sdk-states (>= 1.35, < 1.40) + aws-sdk-synthetics (~> 1.19.0) + aws-sdk-transfer (>= 1.26, < 1.35) + aws-sdk-waf (~> 1.43.0) + train-core (3.10.1) addressable (~> 2.5) ffi (!= 1.13.0) json (>= 1.8, < 3.0) mixlib-shellout (>= 2.0, < 4.0) net-scp (>= 1.2, < 4.0) net-ssh (>= 2.9, < 7.0) - train-habitat (0.2.13) - train-winrm (0.2.11) - winrm (~> 2.0) + train-habitat (0.2.22) + train-winrm (0.2.13) + winrm (>= 2.3.6, < 3.0) winrm-elevated (~> 1.2.2) winrm-fs (~> 1.0) - tty-box (0.6.0) + tty-box (0.7.0) pastel (~> 0.8) strings (~> 0.2.0) tty-cursor (~> 0.7) - tty-color (0.5.2) + tty-color (0.6.0) tty-cursor (0.7.1) - tty-prompt (0.22.0) + tty-prompt (0.23.1) pastel (~> 0.8) tty-reader (~> 0.8) - tty-reader (0.8.0) + tty-reader (0.9.0) tty-cursor (~> 0.7) tty-screen (~> 0.8) wisper (~> 2.0) @@ -547,16 +679,15 @@ GEM strings (~> 0.2.0) tty-screen (~> 0.8) tty-which (0.4.2) - tzinfo (1.2.7) - thread_safe (~> 0.1) + tzinfo (2.0.5) + concurrent-ruby (~> 1.0) uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.8.1) - unicode-display_width (1.7.0) + unf_ext (0.0.8.2) + unicode-display_width (2.2.0) unicode_utils (1.4.0) - uri_template (0.7.0) - winrm (2.3.4) + winrm (2.3.6) builder (>= 2.1.2) erubi (~> 1.8) gssapi (~> 1.2) @@ -564,15 +695,15 @@ GEM httpclient (~> 2.2, >= 2.2.0.2) logging (>= 1.6.1, < 3.0) nori (~> 2.0) - rubyntlm (~> 0.6.0, >= 0.6.1) - winrm-elevated (1.2.2) + rubyntlm (~> 0.6.0, >= 0.6.3) + winrm-elevated (1.2.3) erubi (~> 1.8) winrm (~> 2.0) winrm-fs (~> 1.0) - winrm-fs (1.3.3) + winrm-fs (1.3.5) erubi (~> 1.8) logging (>= 1.6.1, < 3.0) - rubyzip (~> 1.1) + rubyzip (~> 2.0) winrm (~> 2.0) wisper (2.0.1) @@ -585,5 +716,8 @@ DEPENDENCIES nokogiri (~> 1.13)! rest-client (~> 2.0)! +RUBY VERSION + ruby 2.7.6p219 + BUNDLED WITH - 1.17.3 + 2.1.4 From 0809ae11401e28c6b9fbc50a1182e25fe8958536 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 26 Oct 2022 09:08:02 -0700 Subject: [PATCH 0175/1371] chore: configure renovate (#1268) --- .github/renovate.json | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/renovate.json diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 00000000000..6e7a4f26b6b --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base", + ":semanticCommits", + ":preserveSemverRanges" + ], + "stabilityDays":7, + "ignorePaths": [], + "labels": ["dependencies"], + "vulnerabilityAlerts":{ + "labels":[ + "type:security" + ], + "stabilityDays":0 + }, + "packageRules": [ + { + "matchDepTypes": ["module"], + "groupName": "TF modules", + "separateMajorMinor":false + }, + { + "matchDepTypes": ["require"], + "groupName": "GO modules", + "postUpdateOptions": ["gomodTidy"], + "separateMajorMinor":false + }, + { + "matchPackageNames": ["go"], + "allowedVersions": "<1.19.0", + "postUpdateOptions": ["gomodTidy"] + } + ] +} From ce60d2a30dc2ef38b83bdfa9e225b515ffb28a2d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 26 Oct 2022 13:02:32 -0700 Subject: [PATCH 0176/1371] feat: inline TF installation method (#1269) --- infra/build/developer-tools-light/Dockerfile | 16 ++++++------ infra/build/developer-tools/Dockerfile | 15 +++++------ .../build/install_terraform.sh | 25 +++++++++++++++++++ 3 files changed, 38 insertions(+), 18 deletions(-) create mode 100755 infra/build/developer-tools/build/install_terraform.sh diff --git a/infra/build/developer-tools-light/Dockerfile b/infra/build/developer-tools-light/Dockerfile index e5535b535a6..77b5a345dd5 100644 --- a/infra/build/developer-tools-light/Dockerfile +++ b/infra/build/developer-tools-light/Dockerfile @@ -13,12 +13,6 @@ # limitations under the License. # Download and verify the integrity of the download first -FROM sethvargo/hashicorp-installer:0.2.0 AS installer -# Required to download and install Terraform -ARG TERRAFORM_VERSION -ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} -RUN /install-hashicorp-tool "terraform" "$TERRAFORM_VERSION" - FROM alpine:3.16.2 RUN apk update && apk add --no-cache \ bash \ @@ -28,15 +22,19 @@ RUN apk update && apk add --no-cache \ jq \ go -# Install Terraform -COPY --from=installer /software/terraform /usr/local/bin/terraform - # Install cloud SDK ENV PATH /usr/local/google-cloud-sdk/bin:$PATH ARG CLOUD_SDK_VERSION ENV CLOUD_SDK_VERSION ${CLOUD_SDK_VERSION} ADD developer-tools/build/install_cloud_sdk.sh /build/ RUN /build/install_cloud_sdk.sh ${CLOUD_SDK_VERSION} + +# Required to download and install Terraform +ARG TERRAFORM_VERSION +ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} +ADD developer-tools/build/install_terraform.sh /build/ +RUN /build/install_terraform.sh ${TERRAFORM_VERSION} + RUN rm -rf /build RUN terraform version && gcloud version diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index c46ba2a11ce..899e9d437ca 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -15,12 +15,6 @@ ARG RUBY_VERSION ARG GOLANG_VERSION -FROM sethvargo/hashicorp-installer:0.2.0 AS installer -# Required to download and install Terraform -ARG TERRAFORM_VERSION -ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} -RUN /install-hashicorp-tool "terraform" "$TERRAFORM_VERSION" - # Builds module-swapper FROM golang:$GOLANG_VERSION-alpine AS module-swapper-builder WORKDIR /go/src/github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper @@ -64,6 +58,10 @@ ENV BATS_ASSERT_VERSION ${BATS_ASSERT_VERSION} ARG BATS_MOCK_VERSION ENV BATS_MOCK_VERSION ${BATS_MOCK_VERSION} +# Required to download and install Terraform +ARG TERRAFORM_VERSION +ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} + ARG TERRAGRUNT_VERSION ENV TERRAGRUNT_VERSION ${TERRAGRUNT_VERSION} @@ -108,9 +106,8 @@ ENV TERRAFORM_VALIDATOR_VERSION ${TERRAFORM_VALIDATOR_VERSION} ADD ./build/install_terraform_validator.sh /build/ RUN /build/install_terraform_validator.sh ${TERRAFORM_VALIDATOR_VERSION} -#ADD ./build/install_terraform.sh /build/ -#RUN /build/install_terraform.sh ${TERRAFORM_VERSION} -COPY --from=installer /software/terraform /usr/local/bin/terraform +ADD ./build/install_terraform.sh /build/ +RUN ./build/install_terraform.sh ${TERRAFORM_VERSION} # Install Golang COPY --from=go /usr/local/go/ /usr/local/go/ diff --git a/infra/build/developer-tools/build/install_terraform.sh b/infra/build/developer-tools/build/install_terraform.sh new file mode 100755 index 00000000000..aa45508013f --- /dev/null +++ b/infra/build/developer-tools/build/install_terraform.sh @@ -0,0 +1,25 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +cd /build + +TERRAFORM_VERSION=$1 + +wget -q https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip +unzip ./terraform_${TERRAFORM_VERSION}_linux_amd64.zip +install -o 0 -g 0 -m 0755 terraform /usr/local/bin/terraform From 79b0954203d464bd3ba2caa8f0341a240198d2b9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 26 Oct 2022 14:40:56 -0700 Subject: [PATCH 0177/1371] chore: support gcp repos and add renovate.json (#1254) --- .../modules/branch_protection/main.tf | 64 ++++++++++++++++ .../modules/branch_protection/variables.tf | 34 +++++++++ infra/terraform/modules/repo_file/main.tf | 46 ++++++++++++ .../terraform/modules/repo_file/variables.tf | 39 ++++++++++ .../test-org/github/.terraform.lock.hcl | 55 +++++++++----- infra/terraform/test-org/github/main.tf | 5 +- infra/terraform/test-org/github/outputs.tf | 8 +- .../github/{branch.tf => protection.tf} | 75 +++++++++---------- infra/terraform/test-org/github/renovate.json | 35 +++++++++ infra/terraform/test-org/github/versions.tf | 2 +- infra/terraform/test-org/org/locals.tf | 2 +- 11 files changed, 298 insertions(+), 67 deletions(-) create mode 100644 infra/terraform/modules/branch_protection/main.tf create mode 100644 infra/terraform/modules/branch_protection/variables.tf create mode 100644 infra/terraform/modules/repo_file/main.tf create mode 100644 infra/terraform/modules/repo_file/variables.tf rename infra/terraform/test-org/github/{branch.tf => protection.tf} (55%) create mode 100644 infra/terraform/test-org/github/renovate.json diff --git a/infra/terraform/modules/branch_protection/main.tf b/infra/terraform/modules/branch_protection/main.tf new file mode 100644 index 00000000000..adcec9ef10e --- /dev/null +++ b/infra/terraform/modules/branch_protection/main.tf @@ -0,0 +1,64 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +provider "github" { + owner = var.org +} + +locals { + repos = setintersection(var.repo_list, toset(data.github_repositories.repos.names)) +} + +data "github_team" "admin" { + slug = var.admin +} + +data "github_repositories" "repos" { + query = "org:${var.org} archived:no" +} + +data "github_repository" "repo" { + for_each = local.repos + name = each.value +} + +resource "github_branch_protection" "default" { + for_each = data.github_repository.repo + repository_id = each.value.node_id + pattern = each.value.default_branch + + required_pull_request_reviews { + required_approving_review_count = 1 + require_code_owner_reviews = true + } + + required_status_checks { + strict = true + contexts = [ + "cla/google", + "${each.value.name}-int-trigger (cloud-foundation-cicd)", + "${each.value.name}-lint-trigger (cloud-foundation-cicd)" + ] + } + + enforce_admins = false + blocks_creations = false + + push_restrictions = [ + data.github_team.admin.node_id + ] + +} diff --git a/infra/terraform/modules/branch_protection/variables.tf b/infra/terraform/modules/branch_protection/variables.tf new file mode 100644 index 00000000000..562a1118d45 --- /dev/null +++ b/infra/terraform/modules/branch_protection/variables.tf @@ -0,0 +1,34 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +/****************************************** + Required variables +*******************************************/ + +variable "org" { + description = "GitHub Org" + type = string +} + +variable "repo_list" { + description = "List of Repos" + type = list(any) +} + +variable "admin" { + description = "GitHub Admin" + type = string +} diff --git a/infra/terraform/modules/repo_file/main.tf b/infra/terraform/modules/repo_file/main.tf new file mode 100644 index 00000000000..4359609c44e --- /dev/null +++ b/infra/terraform/modules/repo_file/main.tf @@ -0,0 +1,46 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +provider "github" { + owner = var.org +} + +locals { + repos = setintersection(var.repo_list, toset(data.github_repositories.repos.names)) + commit_author = "CFT Bot" + commit_email = "cloud-foundation-bot@google.com" +} + +data "github_repositories" "repos" { + query = "org:${var.org} archived:no" +} + +data "github_repository" "repo" { + for_each = local.repos + name = each.value +} + +resource "github_repository_file" "renovate_json" { + for_each = data.github_repository.repo + repository = each.value.name + branch = each.value.default_branch + file = var.filename + commit_message = "chore: update ${var.filename}" + commit_author = local.commit_author + commit_email = local.commit_email + overwrite_on_create = true + content = var.content +} diff --git a/infra/terraform/modules/repo_file/variables.tf b/infra/terraform/modules/repo_file/variables.tf new file mode 100644 index 00000000000..915372da53a --- /dev/null +++ b/infra/terraform/modules/repo_file/variables.tf @@ -0,0 +1,39 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +/****************************************** + Required variables +*******************************************/ + +variable "org" { + description = "GitHub Org" + type = string +} + +variable "repo_list" { + description = "List of Repos" + type = list(any) +} + +variable "filename" { + description = "Filename" + type = string +} + +variable "content" { + description = "File content" + type = string +} diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 3b4b8779863..f712b40e5e0 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -1,24 +1,45 @@ # This file is maintained automatically by "terraform init". # Manual edits may be lost in future updates. +provider "registry.terraform.io/hashicorp/github" { + version = "5.6.0" + hashes = [ + "h1:mQP/tDNaXzsJtdNXuhlPO97caTOacTClJmSp/kPEqts=", + "zh:2d9761af624d228116bd60e67f6b9cfa32647bd810066844878541e3fe80c5bf", + "zh:399ec1bd4384685dce55660d6231a024ee56ba0269da3c00898c5fc63baa9005", + "zh:56de36705ea4016a1362483d7618fd4331e559c240e2d6a5d6eadbf6ab3d52d3", + "zh:60085086d3648fef7727b291bc86de99cedbacc06617f00b72bca86b57d9cf0e", + "zh:7b9964788cbd8278222590bd68153b02c20fa4319a2e0f5bb9a0a9347f9ded1f", + "zh:87ddf58e54d339af050ae4d3aa8817065cab12c5b8ac87decff8ff1968f72364", + "zh:9bc29f8359b7f3f33d81efe3ffed5ea6e2ddfb350eee6ac8ce9438f29dc1075f", + "zh:9ebbe348bfc4b17449966ed7a2a0ac52f58a682cf4a58f7df6eb6981f89b7fac", + "zh:b8a0f434f0bd3fd602b32c942f98908346e1d640ebdea4cc9a509b0bc159de64", + "zh:c596f3a07a8420f74f9fc88d538a1066f84ca9da8605170617c5d57022c5933e", + "zh:cbe70912db71c66a5bf60c893a3087197c8cc074707f3a2b1979e68a85eeeded", + "zh:d1fb7eaf8c1ac17e109fac8d4ed402ad6b5e141a06574b09327a951fd5aa8116", + "zh:e2e6a69347c08f6109e0893af1eb65ec363e546c13f836e8d09e8dfbc369bc95", + "zh:fa7dffaf0304e5b6fc88fab7c895f9e5a84ae35e83b2d49a0688dd50c4181e6e", + ] +} + provider "registry.terraform.io/integrations/github" { - version = "4.26.1" - constraints = "~> 4.0" + version = "5.6.0" + constraints = "~> 5.0" hashes = [ - "h1:7in21iUvEJxqkMBojPKQcR8pIbL5I+adC+pMwYH3YDo=", - "zh:106aec70ccc00955282dbb07fc5daae9231db127bb6912c460ab7bbcc83e2497", - "zh:2b9c8ded414a7815ffe79774d428ea12c68ef1fb7b67aa95a9917c5f0e487738", - "zh:6494db79f68f1f220cffcfdf18ce1943c098a643eb610dc6cc8b27f0277069ad", - "zh:705a31d53d3417bdea1cb765fd84e9e958325de0ddd01b43a0c3175734d31098", - "zh:76389591b417d8035d7aa3b9f81883b87c8efa767fcd4968abfb30a2641df1cc", - "zh:7dcb526e515296080f724c3b2bdeb04739a46034ea382a0bd6210436d1904203", - "zh:9878bf61cca2439f32dc290245137b33cb9ca556e68e4bda36899f579e57b3f9", - "zh:9c1aabe76001fca0a16550720787b6635044846787152fb250304c369c415a8e", - "zh:bd22b65a74471589498298c5f3a5e4403b0d4be0812c257195eccc70df2dd561", - "zh:d9f36f76ce57c360bfd1d430712a4c7457fcd72aefc8914a49ba135cffd06615", - "zh:e7d2718706c904faaa935e8112fc1b4750109d070c49feaa2b4df03ebe866428", - "zh:f3eb43d54acd4c8dc0135a45621c74b58676295ac9c640ab9264f160ea0ba614", - "zh:f59490c68239bf1a3e3580be61378d605ed02b7023fb073da1ade7fa784dc674", - "zh:fdf6007b3180ccbdc9875c426f40d5ae7933f6a7b617aa2e0107226074946ea5", + "h1:mQP/tDNaXzsJtdNXuhlPO97caTOacTClJmSp/kPEqts=", + "zh:2d9761af624d228116bd60e67f6b9cfa32647bd810066844878541e3fe80c5bf", + "zh:399ec1bd4384685dce55660d6231a024ee56ba0269da3c00898c5fc63baa9005", + "zh:56de36705ea4016a1362483d7618fd4331e559c240e2d6a5d6eadbf6ab3d52d3", + "zh:60085086d3648fef7727b291bc86de99cedbacc06617f00b72bca86b57d9cf0e", + "zh:7b9964788cbd8278222590bd68153b02c20fa4319a2e0f5bb9a0a9347f9ded1f", + "zh:87ddf58e54d339af050ae4d3aa8817065cab12c5b8ac87decff8ff1968f72364", + "zh:9bc29f8359b7f3f33d81efe3ffed5ea6e2ddfb350eee6ac8ce9438f29dc1075f", + "zh:9ebbe348bfc4b17449966ed7a2a0ac52f58a682cf4a58f7df6eb6981f89b7fac", + "zh:b8a0f434f0bd3fd602b32c942f98908346e1d640ebdea4cc9a509b0bc159de64", + "zh:c596f3a07a8420f74f9fc88d538a1066f84ca9da8605170617c5d57022c5933e", + "zh:cbe70912db71c66a5bf60c893a3087197c8cc074707f3a2b1979e68a85eeeded", + "zh:d1fb7eaf8c1ac17e109fac8d4ed402ad6b5e141a06574b09327a951fd5aa8116", + "zh:e2e6a69347c08f6109e0893af1eb65ec363e546c13f836e8d09e8dfbc369bc95", + "zh:fa7dffaf0304e5b6fc88fab7c895f9e5a84ae35e83b2d49a0688dd50c4181e6e", ] } diff --git a/infra/terraform/test-org/github/main.tf b/infra/terraform/test-org/github/main.tf index 2e535bf4854..cf054bfa54d 100644 --- a/infra/terraform/test-org/github/main.tf +++ b/infra/terraform/test-org/github/main.tf @@ -15,8 +15,7 @@ */ locals { - gh_org = "terraform-google-modules" - repos = keys(data.terraform_remote_state.triggers.outputs.repo_folder) + repos = keys(data.terraform_remote_state.triggers.outputs.repo_folder) labels = [ { name : "enhancement", @@ -122,5 +121,5 @@ locals { } provider "github" { - owner = local.gh_org + owner = "terraform-google-modules" } diff --git a/infra/terraform/test-org/github/outputs.tf b/infra/terraform/test-org/github/outputs.tf index aaa16dc2485..970b3d60bb6 100644 --- a/infra/terraform/test-org/github/outputs.tf +++ b/infra/terraform/test-org/github/outputs.tf @@ -14,10 +14,6 @@ * limitations under the License. */ -output "branch_repos" { - value = local.branch_repos -} - output "label_repos" { value = local.sub_repos_labels } @@ -25,3 +21,7 @@ output "label_repos" { output "labels" { value = local.labels } + +output "protected_repos" { + value = local.filtered_repos +} diff --git a/infra/terraform/test-org/github/branch.tf b/infra/terraform/test-org/github/protection.tf similarity index 55% rename from infra/terraform/test-org/github/branch.tf rename to infra/terraform/test-org/github/protection.tf index 78a359406d6..100bae5ff94 100644 --- a/infra/terraform/test-org/github/branch.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -15,57 +15,50 @@ */ locals { - remove_branch_repos = [ - # TODO: add support for non terraform-google-modules org repos + remove_special_repos = [ + # Exclude from CI/branch protection "anthos-samples", - "terraform-example-foundation-app", - "terraform-google-network-forensics", - "terraform-google-secured-data-warehouse", - "terraform-google-secure-cicd", - "terraform-google-cloud-run", - "terraform-google-secret-manager", - "terraform-google-load-balanced-vms", - "terraform-google-three-tier-app", - # Special CI case + "terraform-docs-samples", + # Special CI/branch protection case "terraform-example-foundation" ] - branch_repos = setsubtract(toset(local.repos), local.remove_branch_repos) + filtered_repos = setsubtract(toset(local.repos), local.remove_special_repos) } -data "github_repository" "repo" { - for_each = local.branch_repos - name = each.value +module "branch_protection_tgm" { + source = "../../modules/branch_protection" + org = "terraform-google-modules" + repo_list = local.filtered_repos + admin = "cft-admins" } -data "github_team" "cft-admins" { - slug = "cft-admins" +module "branch_protection_gcp" { + source = "../../modules/branch_protection" + org = "GoogleCloudPlatform" + repo_list = local.filtered_repos + admin = "blueprint-solutions" } -resource "github_branch_protection" "master" { - for_each = data.github_repository.repo - repository_id = each.value.node_id - pattern = "master" - - required_pull_request_reviews { - required_approving_review_count = 1 - require_code_owner_reviews = true - } - - required_status_checks { - strict = true - contexts = [ - "cla/google", - "${each.value.name}-int-trigger (cloud-foundation-cicd)", - "${each.value.name}-lint-trigger (cloud-foundation-cicd)" - ] - } +module "renovate_json_tgm" { + source = "../../modules/repo_file" + org = "terraform-google-modules" + repo_list = local.filtered_repos + filename = ".github/renovate.json" + content = file("${path.module}/renovate.json") +} - enforce_admins = false +module "renovate_json_gcp" { + source = "../../modules/repo_file" + org = "GoogleCloudPlatform" + repo_list = local.filtered_repos + filename = ".github/renovate.json" + content = file("${path.module}/renovate.json") +} - push_restrictions = [ - data.github_team.cft-admins.node_id - ] +# Special CI/branch protection case +data "github_team" "cft-admins" { + slug = "cft-admins" } data "github_repository" "terraform-example-foundation" { @@ -74,7 +67,7 @@ data "github_repository" "terraform-example-foundation" { resource "github_branch_protection" "terraform-example-foundation" { repository_id = data.github_repository.terraform-example-foundation.node_id - pattern = "master" + pattern = data.github_repository.terraform-example-foundation.default_branch required_pull_request_reviews { required_approving_review_count = 1 @@ -82,7 +75,7 @@ resource "github_branch_protection" "terraform-example-foundation" { } required_status_checks { - strict = true + strict = true contexts = [ "cla/google", "terraform-example-foundation-int-trigger-default (cloud-foundation-cicd)", diff --git a/infra/terraform/test-org/github/renovate.json b/infra/terraform/test-org/github/renovate.json new file mode 100644 index 00000000000..6e7a4f26b6b --- /dev/null +++ b/infra/terraform/test-org/github/renovate.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base", + ":semanticCommits", + ":preserveSemverRanges" + ], + "stabilityDays":7, + "ignorePaths": [], + "labels": ["dependencies"], + "vulnerabilityAlerts":{ + "labels":[ + "type:security" + ], + "stabilityDays":0 + }, + "packageRules": [ + { + "matchDepTypes": ["module"], + "groupName": "TF modules", + "separateMajorMinor":false + }, + { + "matchDepTypes": ["require"], + "groupName": "GO modules", + "postUpdateOptions": ["gomodTidy"], + "separateMajorMinor":false + }, + { + "matchPackageNames": ["go"], + "allowedVersions": "<1.19.0", + "postUpdateOptions": ["gomodTidy"] + } + ] +} diff --git a/infra/terraform/test-org/github/versions.tf b/infra/terraform/test-org/github/versions.tf index b0accdc549e..3f00bc0a300 100644 --- a/infra/terraform/test-org/github/versions.tf +++ b/infra/terraform/test-org/github/versions.tf @@ -19,7 +19,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 4.0" + version = "~> 5.0" } } } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 0744321abe2..51759e1c5ce 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -87,7 +87,7 @@ locals { "vault", "docs-samples", ] - # These should also be added to test-org/github/branch.tf#L19 till the todo is resolved. + gcp_org_modules = [ "example-foundation-app", # Not module "anthos-samples", From ead6e452784d33881f0a83d554506323d4e44c7d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 28 Oct 2022 10:30:37 -0700 Subject: [PATCH 0178/1371] feat: parameterize and update alpine version (#1264) --- .gitignore | 1 + infra/build/Makefile | 4 +++- infra/build/developer-tools/Dockerfile | 6 +++--- infra/build/developer-tools/build/data/requirements.txt | 3 --- infra/build/developer-tools/build/install_dependencies.sh | 6 ++---- .../developer-tools/build/scripts/export_tf_outputs.py | 2 +- .../developer-tools/build/scripts/task_helper_functions.sh | 2 +- .../build/verify_boilerplate/verify_boilerplate.py | 2 +- 8 files changed, 12 insertions(+), 14 deletions(-) delete mode 100644 infra/build/developer-tools/build/data/requirements.txt diff --git a/.gitignore b/.gitignore index a14272c72b0..fe8ef185091 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ docs/meta/env config-connector/tests/testcases/environments.yaml .DS_Store .vscode +*.pyc diff --git a/infra/build/Makefile b/infra/build/Makefile index 7eff076733c..7e6fb35e28e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -32,8 +32,9 @@ KPT_VERSION := 1.0.0-beta.15 CFT_CLI_VERSION := 0.4.5 ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.13 +ALPINE_VERSION := 3.16 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.7.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -63,6 +64,7 @@ build-image-developer-tools: --build-arg KPT_VERSION=${KPT_VERSION} \ --build-arg CFT_CLI_VERSION=${CFT_CLI_VERSION} \ --build-arg KUBECTL_VERSION=${KUBECTL_VERSION} \ + --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools" docker build \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 899e9d437ca..603af06bc0c 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -14,6 +14,7 @@ # Download and verify the integrity of the download first ARG RUBY_VERSION ARG GOLANG_VERSION +ARG ALPINE_VERSION # Builds module-swapper FROM golang:$GOLANG_VERSION-alpine AS module-swapper-builder @@ -23,7 +24,7 @@ RUN go build -v -o /usr/local/bin/module-swapper FROM golang:$GOLANG_VERSION-alpine AS go -FROM ruby:$RUBY_VERSION-alpine3.15 +FROM ruby:$RUBY_VERSION-alpine$ALPINE_VERSION # Required to download and install terraform-docs ARG TERRAFORM_DOCS_VERSION @@ -150,8 +151,7 @@ RUN /build/install_cft_cli.sh ${CFT_CLI_VERSION} WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . -ADD ./build/data/requirements.txt . -RUN bundle install && pip3 install -r requirements.txt +RUN gem install bundler:2.1.4 && bundle install COPY ./build/install_verify_boilerplate.sh /build/ COPY ./build/verify_boilerplate/ /build/verify_boilerplate/ diff --git a/infra/build/developer-tools/build/data/requirements.txt b/infra/build/developer-tools/build/data/requirements.txt deleted file mode 100644 index 447f647e7c4..00000000000 --- a/infra/build/developer-tools/build/data/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -google-api-python-client~=1.7 -google-auth~=1.6 -PyGithub==1.51 diff --git a/infra/build/developer-tools/build/install_dependencies.sh b/infra/build/developer-tools/build/install_dependencies.sh index c310a02d2a4..400f432a9cb 100755 --- a/infra/build/developer-tools/build/install_dependencies.sh +++ b/infra/build/developer-tools/build/install_dependencies.sh @@ -49,9 +49,6 @@ apk add --no-cache openssh # unclear why perl is needed, but is good to have apk add --no-cache perl -# python 2 is needed for compatibility and linting -apk add --no-cache python2 - # python 3 is needed for python linting apk add --no-cache python3 @@ -71,4 +68,5 @@ apk add --no-cache rsync # flake8 and jinja2 are used for lint checks, cookiecutter is used for terraform-google-module-template tests # requests~=2.28 for https://github.com/psf/requests/pull/6179 -pip install flake8 "Jinja2~=3.1" cookiecutter "requests~=2.28" +# Remaining items moved here from requirements.txt +pip install flake8 "Jinja2~=3.1" cookiecutter "requests~=2.28" PyGithub==1.51 google-auth~=1.6 google-api-python-client~=1.7 diff --git a/infra/build/developer-tools/build/scripts/export_tf_outputs.py b/infra/build/developer-tools/build/scripts/export_tf_outputs.py index 42932f0f714..d4e2770f87b 100755 --- a/infra/build/developer-tools/build/scripts/export_tf_outputs.py +++ b/infra/build/developer-tools/build/scripts/export_tf_outputs.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright 2019 Google LLC # diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 4d9239d0247..3f12449144a 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -512,7 +512,7 @@ setup_environment() { source_test_env() { if [ -d test/setup ]; then # shellcheck disable=SC1091 - source <(python /usr/local/bin/export_tf_outputs.py --path=test/setup) + source <(python3 /usr/local/bin/export_tf_outputs.py --path=test/setup) else if [ -f test/source.sh ]; then echo "Warning: test/setup not found. Will only use test/source.sh to configure environment." diff --git a/infra/build/developer-tools/build/verify_boilerplate/verify_boilerplate.py b/infra/build/developer-tools/build/verify_boilerplate/verify_boilerplate.py index 14d3fe13c00..dfc157af4bb 100755 --- a/infra/build/developer-tools/build/verify_boilerplate/verify_boilerplate.py +++ b/infra/build/developer-tools/build/verify_boilerplate/verify_boilerplate.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright 2019 Google LLC # From 5a9015e7efac34b28ce1e7c2b7260c38aaba7c1b Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 28 Oct 2022 15:21:29 -0500 Subject: [PATCH 0179/1371] Update Tools to 1.8.1 (#1262) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 7e6fb35e28e..a09b5549383 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,9 +13,9 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh -TERRAFORM_VERSION := 1.3.2 +TERRAFORM_VERSION := 1.3.3 TERRAFORM_VALIDATOR_VERSION := 0.13.0 -CLOUD_SDK_VERSION := 405.0.1 +CLOUD_SDK_VERSION := 407.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -34,7 +34,7 @@ ASMCLI_VERSION := 1.12 KUBECTL_VERSION := 1.23.13 ALPINE_VERSION := 3.16 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 6d4e9db56ea74b6b7744ee5c79538e60196897c1 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 28 Oct 2022 19:14:00 -0700 Subject: [PATCH 0180/1371] feat: add gator and opa to krm tools (#1271) Co-authored-by: Bharath KKB --- .github/workflows/update-tooling.yml | 7 +++++- infra/build/Makefile | 20 ++++++++++++--- infra/build/developer-tools-krm/Dockerfile | 18 ++++++++++++- .../build/install_gator.sh | 25 +++++++++++++++++++ .../developer-tools-krm/build/install_opa.sh | 24 ++++++++++++++++++ 5 files changed, 89 insertions(+), 5 deletions(-) create mode 100755 infra/build/developer-tools-krm/build/install_gator.sh create mode 100755 infra/build/developer-tools-krm/build/install_opa.sh diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 92981cea5f1..74a77ea1e69 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -11,6 +11,8 @@ env: CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" KUBECTL_MINOR: "1.23" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" + GATOR_MINOR: "3.9" + GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" jobs: update-tools: @@ -22,7 +24,7 @@ jobs: PR_UPDATE_BODY="" newline=$'\n' # Skip "KPT" till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR") for tool in ${tools[@]} do @@ -42,6 +44,9 @@ jobs: elif [ "$tool" == "KUBECTL" ]; then # get latest KUBECTL_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") + elif [ "$tool" == "GATOR" ]; then + # get latest GATOR_MINOR release + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${GATOR_MINOR}'"))][0].tag_name' | tr -d "v") else LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .tag_name | tr -d "v") fi diff --git a/infra/build/Makefile b/infra/build/Makefile index a09b5549383..8475348c1a1 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -13,8 +13,10 @@ # limitations under the License. SHELL := /usr/bin/env bash # Make will use bash instead of sh +# Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.3.3 TERRAFORM_VALIDATOR_VERSION := 0.13.0 +# Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 407.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 @@ -26,15 +28,24 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 -KUSTOMIZE_VERSION := 3.6.0 +KUSTOMIZE_VERSION := 3.6.1 +# Updated by Update Tooling Workflow # Hold KPT at 1.0.0-beta.15 till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 KPT_VERSION := 1.0.0-beta.15 +# Updated by Update Tooling Workflow CFT_CLI_VERSION := 0.4.5 -ASMCLI_VERSION := 1.12 +# Updated by Update Tooling Workflow KUBECTL_VERSION := 1.23.13 ALPINE_VERSION := 3.16 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.1 +# For developer-tools-krm +GOLANGCI_VERSION := 1.40.1 +ASMCLI_VERSION := 1.12 +# Updated by Update Tooling Workflow +GATOR_VERSION := 3.9.2 +OPA_VERSION := 0.42.2 + +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -75,7 +86,10 @@ build-image-developer-tools: --build-arg CLOUD_SDK_VERSION=${CLOUD_SDK_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} -f "./developer-tools-light/Dockerfile" docker build \ + --build-arg GOLANGCI_VERSION=${GOLANGCI_VERSION} \ --build-arg ASMCLI_VERSION=${ASMCLI_VERSION} \ + --build-arg GATOR_VERSION=${GATOR_VERSION} \ + --build-arg OPA_VERSION=${OPA_VERSION} \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ -t ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools-krm" diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index fbd1fdfee44..db0a436b2cc 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -18,7 +18,8 @@ FROM cft/developer-tools:$BASE_IMAGE_VERSION RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc # Additional go tooling -RUN GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.40.1 +ARG GOLANGCI_VERSION +RUN GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v$GOLANGCI_VERSION # Required to download and install asmcli ARG ASMCLI_VERSION @@ -26,6 +27,21 @@ ENV ASMCLI_VERSION ${ASMCLI_VERSION} ADD ./build/install_asmcli.sh /build/ RUN /build/install_asmcli.sh ${ASMCLI_VERSION} + +# Required to download and install gator +ARG GATOR_VERSION +ENV GATOR_VERSION ${GATOR_VERSION} + +ADD ./build/install_gator.sh /build/ +RUN /build/install_gator.sh ${GATOR_VERSION} + +# Required to download and install OPA +ARG OPA_VERSION +ENV OPA_VERSION ${OPA_VERSION} + +ADD ./build/install_opa.sh /build/ +RUN /build/install_opa.sh ${OPA_VERSION} + RUN rm -rf /build # Add dind helper for prow diff --git a/infra/build/developer-tools-krm/build/install_gator.sh b/infra/build/developer-tools-krm/build/install_gator.sh new file mode 100755 index 00000000000..5cf6255af5a --- /dev/null +++ b/infra/build/developer-tools-krm/build/install_gator.sh @@ -0,0 +1,25 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +cd /build + +GATOR_VERSION=$1 + +wget -q https://github.com/open-policy-agent/gatekeeper/releases/download/v${GATOR_VERSION}/gator-v${GATOR_VERSION}-linux-amd64.tar.gz +tar -xf gator-v${GATOR_VERSION}-linux-amd64.tar.gz +install -o 0 -g 0 -m 0755 gator /usr/local/bin/gator diff --git a/infra/build/developer-tools-krm/build/install_opa.sh b/infra/build/developer-tools-krm/build/install_opa.sh new file mode 100755 index 00000000000..0eac0e6ef95 --- /dev/null +++ b/infra/build/developer-tools-krm/build/install_opa.sh @@ -0,0 +1,24 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +cd /build + +OPA_VERSION=$1 + +curl https://openpolicyagent.org/downloads/v${OPA_VERSION}/opa_linux_amd64_static > opa +install -o 0 -g 0 -m 0755 opa /usr/local/bin/opa From d678eb7c2d21c23e5511389c93f484221c8307c9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 31 Oct 2022 10:10:45 -0700 Subject: [PATCH 0181/1371] fix: handle opa download redirect (#1273) --- infra/build/developer-tools-krm/build/install_opa.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools-krm/build/install_opa.sh b/infra/build/developer-tools-krm/build/install_opa.sh index 0eac0e6ef95..396d9669567 100755 --- a/infra/build/developer-tools-krm/build/install_opa.sh +++ b/infra/build/developer-tools-krm/build/install_opa.sh @@ -20,5 +20,5 @@ cd /build OPA_VERSION=$1 -curl https://openpolicyagent.org/downloads/v${OPA_VERSION}/opa_linux_amd64_static > opa +wget -q https://openpolicyagent.org/downloads/v${OPA_VERSION}/opa_linux_amd64_static -O opa install -o 0 -g 0 -m 0755 opa /usr/local/bin/opa From 1550f4e9cf45dd8480885c6c2773c28951c81459 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 31 Oct 2022 12:45:50 -0700 Subject: [PATCH 0182/1371] chore: add libc6-compat to tools-krm (#1274) --- infra/build/developer-tools-krm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index db0a436b2cc..41fa9d14e99 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -15,7 +15,7 @@ ARG BASE_IMAGE_VERSION FROM cft/developer-tools:$BASE_IMAGE_VERSION -RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc +RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc libc6-compat # Additional go tooling ARG GOLANGCI_VERSION From de3ae0738a37384214e13cac77d5af70ddf24df7 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 1 Nov 2022 10:59:15 -0700 Subject: [PATCH 0183/1371] chore: update golangci-lint v1.47.3 and install method (#1275) Co-authored-by: Bharath KKB --- infra/build/Makefile | 4 ++-- infra/build/developer-tools-krm/Dockerfile | 7 ++++-- .../build/install_golangci_lint.sh | 24 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100755 infra/build/developer-tools-krm/build/install_golangci_lint.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index 8475348c1a1..a98a882c01f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -39,13 +39,13 @@ KUBECTL_VERSION := 1.23.13 ALPINE_VERSION := 3.16 # For developer-tools-krm -GOLANGCI_VERSION := 1.40.1 +GOLANGCI_VERSION := 1.47.3 ASMCLI_VERSION := 1.12 # Updated by Update Tooling Workflow GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index 41fa9d14e99..7c135cf86b8 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -17,9 +17,12 @@ FROM cft/developer-tools:$BASE_IMAGE_VERSION RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc libc6-compat -# Additional go tooling +# Required to download and install golangci-lint ARG GOLANGCI_VERSION -RUN GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v$GOLANGCI_VERSION +ENV GOLANGCI_VERSION ${GOLANGCI_VERSION} + +ADD ./build/install_golangci_lint.sh /build/ +RUN /build/install_golangci_lint.sh ${GOLANGCI_VERSION} # Required to download and install asmcli ARG ASMCLI_VERSION diff --git a/infra/build/developer-tools-krm/build/install_golangci_lint.sh b/infra/build/developer-tools-krm/build/install_golangci_lint.sh new file mode 100755 index 00000000000..8e6ada2d088 --- /dev/null +++ b/infra/build/developer-tools-krm/build/install_golangci_lint.sh @@ -0,0 +1,24 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +cd /build + +GOLANGCI_VERSION=$1 + +go install github.com/golangci/golangci-lint/cmd/golangci-lint@v$GOLANGCI_VERSION +ln -s $(go env GOPATH)/bin/golangci-lint /usr/local/bin/ From f7452193c5fb2d6d35b11d51d0c3dfcbd2388996 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 1 Nov 2022 12:17:57 -0700 Subject: [PATCH 0184/1371] feat: add labels modules and add stale.yml to repo (#1270) --- .../modules/branch_protection/main.tf | 10 +- .../modules/branch_protection/versions.tf | 24 +++ infra/terraform/modules/repo_file/main.tf | 7 +- infra/terraform/modules/repo_file/versions.tf | 24 +++ infra/terraform/modules/repo_labels/main.tf | 46 ++++++ .../modules/repo_labels/variables.tf | 34 +++++ .../terraform/modules/repo_labels/versions.tf | 24 +++ infra/terraform/test-org/github/labels.tf | 140 +++++++++++++++--- infra/terraform/test-org/github/main.tf | 102 ------------- infra/terraform/test-org/github/protection.tf | 34 ++++- infra/terraform/test-org/github/stale.yml | 29 ++++ 11 files changed, 330 insertions(+), 144 deletions(-) create mode 100644 infra/terraform/modules/branch_protection/versions.tf create mode 100644 infra/terraform/modules/repo_file/versions.tf create mode 100644 infra/terraform/modules/repo_labels/main.tf create mode 100644 infra/terraform/modules/repo_labels/variables.tf create mode 100644 infra/terraform/modules/repo_labels/versions.tf create mode 100644 infra/terraform/test-org/github/stale.yml diff --git a/infra/terraform/modules/branch_protection/main.tf b/infra/terraform/modules/branch_protection/main.tf index adcec9ef10e..3fdf7af3e9c 100644 --- a/infra/terraform/modules/branch_protection/main.tf +++ b/infra/terraform/modules/branch_protection/main.tf @@ -18,20 +18,12 @@ provider "github" { owner = var.org } -locals { - repos = setintersection(var.repo_list, toset(data.github_repositories.repos.names)) -} - data "github_team" "admin" { slug = var.admin } -data "github_repositories" "repos" { - query = "org:${var.org} archived:no" -} - data "github_repository" "repo" { - for_each = local.repos + for_each = toset(var.repo_list) name = each.value } diff --git a/infra/terraform/modules/branch_protection/versions.tf b/infra/terraform/modules/branch_protection/versions.tf new file mode 100644 index 00000000000..56c83e7c0a2 --- /dev/null +++ b/infra/terraform/modules/branch_protection/versions.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +terraform { + required_providers { + github = { + source = "integrations/github" + version = "~> 5.0" + } + } +} diff --git a/infra/terraform/modules/repo_file/main.tf b/infra/terraform/modules/repo_file/main.tf index 4359609c44e..3422691a371 100644 --- a/infra/terraform/modules/repo_file/main.tf +++ b/infra/terraform/modules/repo_file/main.tf @@ -19,17 +19,12 @@ provider "github" { } locals { - repos = setintersection(var.repo_list, toset(data.github_repositories.repos.names)) commit_author = "CFT Bot" commit_email = "cloud-foundation-bot@google.com" } -data "github_repositories" "repos" { - query = "org:${var.org} archived:no" -} - data "github_repository" "repo" { - for_each = local.repos + for_each = toset(var.repo_list) name = each.value } diff --git a/infra/terraform/modules/repo_file/versions.tf b/infra/terraform/modules/repo_file/versions.tf new file mode 100644 index 00000000000..56c83e7c0a2 --- /dev/null +++ b/infra/terraform/modules/repo_file/versions.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +terraform { + required_providers { + github = { + source = "integrations/github" + version = "~> 5.0" + } + } +} diff --git a/infra/terraform/modules/repo_labels/main.tf b/infra/terraform/modules/repo_labels/main.tf new file mode 100644 index 00000000000..22f443d7c27 --- /dev/null +++ b/infra/terraform/modules/repo_labels/main.tf @@ -0,0 +1,46 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +provider "github" { + owner = var.org +} + +locals { + repo_labels = { + for o in flatten([ + for repo in var.repo_list : + [ + for label in var.labels : + { + "repo" : repo, + "label" : label.name, + "color" : label.color, + "description" : label.description + } + ] + ]) : + "${o.repo}/${o.label}" => o + } +} + +# Create labels on all repos +resource "github_issue_label" "test_repo" { + for_each = local.repo_labels + repository = each.value.repo + name = each.value.label + color = each.value.color + description = each.value.description +} diff --git a/infra/terraform/modules/repo_labels/variables.tf b/infra/terraform/modules/repo_labels/variables.tf new file mode 100644 index 00000000000..456a9f2c7dc --- /dev/null +++ b/infra/terraform/modules/repo_labels/variables.tf @@ -0,0 +1,34 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +/****************************************** + Required variables +*******************************************/ + +variable "org" { + description = "GitHub Org" + type = string +} + +variable "repo_list" { + description = "List of Repos" + type = list(any) +} + +variable "labels" { + description = "Labels" + type = list(any) +} diff --git a/infra/terraform/modules/repo_labels/versions.tf b/infra/terraform/modules/repo_labels/versions.tf new file mode 100644 index 00000000000..56c83e7c0a2 --- /dev/null +++ b/infra/terraform/modules/repo_labels/versions.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +terraform { + required_providers { + github = { + source = "integrations/github" + version = "~> 5.0" + } + } +} diff --git a/infra/terraform/test-org/github/labels.tf b/infra/terraform/test-org/github/labels.tf index a872ea3c34d..db4f1ad5b52 100644 --- a/infra/terraform/test-org/github/labels.tf +++ b/infra/terraform/test-org/github/labels.tf @@ -18,29 +18,123 @@ locals { remove_repo_labels = [ "anthos-samples" ] - sub_repos_labels = setsubtract(toset(local.repos), local.remove_repo_labels) - repo_labels = { - for o in flatten([ - for repo in local.sub_repos_labels : - [ - for label in local.labels : - { - "repo" : repo, - "label" : label.name, - "color" : label.color, - "description" : label.description - } - ] - ]) : - "${o.repo}/${o.label}" => o - } + sub_repos_labels = setsubtract(toset(local.repos), local.remove_repo_labels) + sub_repos_labels_gcp = setintersection(local.sub_repos_labels, toset(data.github_repositories.repos_gcp.names)) + sub_repos_labels_tgm = setintersection(local.sub_repos_labels, toset(data.github_repositories.repos_tgm.names)) + labels = [ + { + name : "enhancement", + color : "a2eeef", + description : "New feature or request" + }, + { + name : "bug", + color : "d73a4a" + description : "Something isn't working" + }, + { + name : "duplicate", + color : "cfd3d7" + description : "This issue or pull request already exists" + }, + { + name : "good first issue", + color : "7057ff" + description : "Good for newcomers" + }, + { + name : "help wanted", + color : "008672", + description : "Extra attention is needed" + }, + { + name : "invalid", + color : "e4e669", + description : "Something doesn't seem right" + }, + { + name : "question", + color : "d876e3", + description : "Further information is requested" + }, + { + name : "wontfix", + color : "db643d", + description : "This will not be worked on" + }, + { + name : "triaged", + color : "322560", + description : "Scoped and ready for work" + }, + { + name : "upstream", + color : "B580D1", + description : "Work required on Terraform core or provider" + }, + { + name : "security", + color : "801336", + description : "Fixes a security vulnerability or lapse in best practice" + }, + { + name : "refactor", + color : "004445", + description : "Updates for readability, code cleanliness, DRYness, etc. Only needs Terraform exp." + }, + { + name : "blocked", + color : "ef4339", + description : "Blocked by some other work" + }, + { + name : "P1", + color : "b01111", + description : "highest priority issues" + }, + { + name : "P2", + color : "b4451f", + description : "high priority issues" + }, + { + name : "P3", + color : "e7d87d", + description : "medium priority issues" + }, + { + name : "P4", + color : "62a1db", + description : "low priority issues" + }, + { + name : "release-please:force-run", + color : "e7d87d", + description : "Force release-please to check for changes." + }, + { + name : "waiting-response", + color : "5319e7", + description : "Waiting for issue author to respond." + }, + { + name : "v0.13", + color : "edb761", + description : "Terraform v0.13 issue." + }, + ] +} + +module "repo_labels_gcp" { + source = "../../modules/repo_labels" + org = "GoogleCloudPlatform" + repo_list = local.sub_repos_labels_gcp + labels = local.labels } -# Create labels on all repos -resource "github_issue_label" "test_repo" { - for_each = local.repo_labels - repository = each.value.repo - name = each.value.label - color = each.value.color - description = each.value.description +module "repo_labels_tgm" { + source = "../../modules/repo_labels" + org = "terraform-google-modules" + repo_list = local.sub_repos_labels_tgm + labels = local.labels } diff --git a/infra/terraform/test-org/github/main.tf b/infra/terraform/test-org/github/main.tf index cf054bfa54d..767d5f6ec90 100644 --- a/infra/terraform/test-org/github/main.tf +++ b/infra/terraform/test-org/github/main.tf @@ -16,108 +16,6 @@ locals { repos = keys(data.terraform_remote_state.triggers.outputs.repo_folder) - labels = [ - { - name : "enhancement", - color : "a2eeef", - description : "New feature or request" - }, - { - name : "bug", - color : "d73a4a" - description : "Something isn't working" - }, - { - name : "duplicate", - color : "cfd3d7" - description : "This issue or pull request already exists" - }, - { - name : "good first issue", - color : "7057ff" - description : "Good for newcomers" - }, - { - name : "help wanted", - color : "008672", - description : "Extra attention is needed" - }, - { - name : "invalid", - color : "e4e669", - description : "Something doesn't seem right" - }, - { - name : "question", - color : "d876e3", - description : "Further information is requested" - }, - { - name : "wontfix", - color : "db643d", - description : "This will not be worked on" - }, - { - name : "triaged", - color : "322560", - description : "Scoped and ready for work" - }, - { - name : "upstream", - color : "B580D1", - description : "Work required on Terraform core or provider" - }, - { - name : "security", - color : "801336", - description : "Fixes a security vulnerability or lapse in best practice" - }, - { - name : "refactor", - color : "004445", - description : "Updates for readability, code cleanliness, DRYness, etc. Only needs Terraform exp." - }, - { - name : "blocked", - color : "ef4339", - description : "Blocked by some other work" - }, - { - name : "P1", - color : "b01111", - description : "highest priority issues" - }, - { - name : "P2", - color : "b4451f", - description : "high priority issues" - }, - { - name : "P3", - color : "e7d87d", - description : "medium priority issues" - }, - { - name : "P4", - color : "62a1db", - description : "low priority issues" - }, - { - name : "release-please:force-run", - color : "e7d87d", - description : "Force release-please to check for changes." - }, - { - name : "waiting-response", - color : "5319e7", - description : "Waiting for issue author to respond." - }, - { - name : "v0.13", - color : "edb761", - description : "Terraform v0.13 issue." - }, - ] } provider "github" { diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 100bae5ff94..4e72bada462 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -23,26 +23,36 @@ locals { "terraform-example-foundation" ] filtered_repos = setsubtract(toset(local.repos), local.remove_special_repos) + gcp_repos = setintersection(local.filtered_repos, toset(data.github_repositories.repos_gcp.names)) + tgm_repos = setintersection(local.filtered_repos, toset(data.github_repositories.repos_tgm.names)) +} + +data "github_repositories" "repos_gcp" { + query = "org:GoogleCloudPlatform archived:no" +} + +data "github_repositories" "repos_tgm" { + query = "org:terraform-google-modules archived:no" } module "branch_protection_tgm" { source = "../../modules/branch_protection" org = "terraform-google-modules" - repo_list = local.filtered_repos + repo_list = local.tgm_repos admin = "cft-admins" } module "branch_protection_gcp" { source = "../../modules/branch_protection" org = "GoogleCloudPlatform" - repo_list = local.filtered_repos + repo_list = local.gcp_repos admin = "blueprint-solutions" } module "renovate_json_tgm" { source = "../../modules/repo_file" org = "terraform-google-modules" - repo_list = local.filtered_repos + repo_list = local.tgm_repos filename = ".github/renovate.json" content = file("${path.module}/renovate.json") } @@ -50,11 +60,27 @@ module "renovate_json_tgm" { module "renovate_json_gcp" { source = "../../modules/repo_file" org = "GoogleCloudPlatform" - repo_list = local.filtered_repos + repo_list = local.gcp_repos filename = ".github/renovate.json" content = file("${path.module}/renovate.json") } +module "stale_yml_tgm" { + source = "../../modules/repo_file" + org = "terraform-google-modules" + repo_list = local.tgm_repos + filename = ".github/workflows/stale.yml" + content = file("${path.module}/stale.yml") +} + +module "stale_yml_gcp" { + source = "../../modules/repo_file" + org = "GoogleCloudPlatform" + repo_list = local.gcp_repos + filename = ".github/workflows/stale.yml" + content = file("${path.module}/stale.yml") +} + # Special CI/branch protection case data "github_team" "cft-admins" { diff --git a/infra/terraform/test-org/github/stale.yml b/infra/terraform/test-org/github/stale.yml new file mode 100644 index 00000000000..dd2c152bc56 --- /dev/null +++ b/infra/terraform/test-org/github/stale.yml @@ -0,0 +1,29 @@ +# Copyright 2022 Google LLC +# +# 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. + +name: "Close stale issues" +on: + schedule: + - cron: "0 23 * * *" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v6 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' + stale-pr-message: 'This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' + exempt-issue-labels: triaged From e065db1c0e4b3a73e18a8a079571a6905d25ac75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Nov 2022 10:35:12 -0700 Subject: [PATCH 0185/1371] chore(deps): bump nokogiri from 1.13.6 to 1.13.9 in /infra/build/developer-tools/build/data (#1267) --- infra/build/developer-tools/build/data/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index fb38a103176..43816230070 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -468,7 +468,7 @@ GEM net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.13.6) + nokogiri (1.13.9) mini_portile2 (~> 2.8.0) racc (~> 1.4) nori (2.6.0) From 26e573ae934a41661d13bc35dc73181792491288 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 2 Nov 2022 15:51:46 -0500 Subject: [PATCH 0186/1371] feat: add catalog subcmd (#1266) * add catalog subcmd * tidy * add comments * comments --- cli/bpcatalog/cmd.go | 71 ++++++++++++++ cli/bpcatalog/gh.go | 110 ++++++++++++++++++++++ cli/bpcatalog/main.go | 8 ++ cli/bpcatalog/render.go | 71 ++++++++++++++ cli/bpcatalog/render_test.go | 99 ++++++++++++++++++++ cli/bpcatalog/tf.go | 64 +++++++++++++ cli/bpcatalog/tf_test.go | 140 ++++++++++++++++++++++++++++ cli/cmd/blueprint.go | 2 + cli/go.mod | 6 +- cli/go.sum | 17 +++- cli/testdata/catalog/csv.expected | 3 + cli/testdata/catalog/table.expected | 6 ++ 12 files changed, 595 insertions(+), 2 deletions(-) create mode 100644 cli/bpcatalog/cmd.go create mode 100644 cli/bpcatalog/gh.go create mode 100644 cli/bpcatalog/main.go create mode 100644 cli/bpcatalog/render.go create mode 100644 cli/bpcatalog/render_test.go create mode 100644 cli/bpcatalog/tf.go create mode 100644 cli/bpcatalog/tf_test.go create mode 100644 cli/testdata/catalog/csv.expected create mode 100644 cli/testdata/catalog/table.expected diff --git a/cli/bpcatalog/cmd.go b/cli/bpcatalog/cmd.go new file mode 100644 index 00000000000..a4f5c4575c2 --- /dev/null +++ b/cli/bpcatalog/cmd.go @@ -0,0 +1,71 @@ +package bpcatalog + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var catalogListFlags struct { + format renderFormat + sort sortOption +} + +const ( + tfModulesOrg = "terraform-google-modules" + gcpOrg = "GoogleCloudPlatform" +) + +var ( + // any repos that match terraform-google-* but should not be included + repoIgnoreList = map[string]bool{ + "terraform-google-conversion": true, + "terraform-google-examples": true, + } + // any repos that do not match terraform-google-* but should be included + repoAllowList = map[string]bool{ + "terraform-example-foundation": true, + } +) + +func init() { + viper.AutomaticEnv() + Cmd.AddCommand(listCmd) + + listCmd.Flags().Var(&catalogListFlags.format, "format", fmt.Sprintf("Format to display catalog. Defaults to table. Options are %+v.", renderFormats)) + listCmd.Flags().Var(&catalogListFlags.sort, "sort", fmt.Sprintf("Sort results. Defaults to created date. Options are %+v.", sortOptions)) + +} + +var Cmd = &cobra.Command{ + Use: "catalog", + Short: "Blueprint catalog", + Long: `Blueprint catalog is used to get information about blueprints catalog.`, + Args: cobra.NoArgs, +} + +var listCmd = &cobra.Command{ + Use: "list", + Short: "lists blueprints", + Long: `Lists blueprints in catalog`, + Args: cobra.NoArgs, + RunE: listCatalog, +} + +func listCatalog(cmd *cobra.Command, args []string) error { + // defaults + if catalogListFlags.format.Empty() { + catalogListFlags.format = renderTable + } + if catalogListFlags.sort.Empty() { + catalogListFlags.sort = sortCreated + } + gh := newGHService(withTokenClient(), withOrgs([]string{tfModulesOrg, gcpOrg})) + repos, err := fetchSortedTFRepos(gh, catalogListFlags.sort) + if err != nil { + return err + } + return render(repos, os.Stdout, catalogListFlags.format) +} diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go new file mode 100644 index 00000000000..9d2ceb80b37 --- /dev/null +++ b/cli/bpcatalog/gh.go @@ -0,0 +1,110 @@ +package bpcatalog + +import ( + "context" + "fmt" + "net/http" + "os" + "sort" + + "github.com/google/go-github/v47/github" + "golang.org/x/oauth2" +) + +const ghTokenEnvVar = "GITHUB_TOKEN" + +type ghService struct { + client *github.Client + ctx context.Context + orgs []string +} + +type ghServiceOption func(*ghService) + +func withOrgs(orgs []string) ghServiceOption { + return func(g *ghService) { + g.orgs = orgs + } +} + +func withClient(c *http.Client) ghServiceOption { + return func(g *ghService) { + g.client = github.NewClient(c) + } +} + +func withTokenClient() ghServiceOption { + return func(g *ghService) { + pat, isSet := os.LookupEnv(ghTokenEnvVar) + if !isSet { + Log.Crit(fmt.Sprintf("GitHub token env var %s is not set", ghTokenEnvVar)) + os.Exit(1) + } + ts := oauth2.StaticTokenSource( + &oauth2.Token{AccessToken: pat}, + ) + tc := oauth2.NewClient(g.ctx, ts) + g.client = github.NewClient(tc) + } +} + +func newGHService(opts ...ghServiceOption) *ghService { + ctx := context.Background() + ghs := &ghService{ + client: github.NewClient(nil), + ctx: ctx, + } + for _, opt := range opts { + opt(ghs) + } + return ghs +} + +type repos []*github.Repository + +// filter filters repos using a given filter func. +func (r repos) filter(filter func(*github.Repository) bool) repos { + var filtered []*github.Repository + for _, repo := range r { + if filter(repo) { + filtered = append(filtered, repo) + } + } + return filtered +} + +// sort sorts repos using a given sort option. +func (r repos) sort(s sortOption) (repos, error) { + switch s { + case sortCreated: + sort.SliceStable(r, func(i, j int) bool { return r[i].GetCreatedAt().Before(r[j].GetCreatedAt().Time) }) + case sortStars: + sort.SliceStable(r, func(i, j int) bool { return r[i].GetStargazersCount() < r[j].GetStargazersCount() }) + case sortName: + sort.SliceStable(r, func(i, j int) bool { return r[i].GetName() < r[j].GetName() }) + default: + return nil, fmt.Errorf("one of %+v expected. unknown format: %s", sortOptions, catalogListFlags.sort) + } + return r, nil +} + +// fetchRepos fetches all repos across multiple orgs. +func (g *ghService) fetchRepos() (repos, error) { + opts := &github.RepositoryListByOrgOptions{ListOptions: github.ListOptions{PerPage: 100}, Type: "public"} + var allRepos []*github.Repository + for _, org := range g.orgs { + for { + repos, resp, err := g.client.Repositories.ListByOrg(g.ctx, org, opts) + if err != nil { + return nil, err + } + allRepos = append(allRepos, repos...) + // if no next page, we have reached end of pagination + if resp.NextPage == 0 { + break + } + opts.Page = resp.NextPage + } + } + return allRepos, nil +} diff --git a/cli/bpcatalog/main.go b/cli/bpcatalog/main.go new file mode 100644 index 00000000000..e3987e7aec9 --- /dev/null +++ b/cli/bpcatalog/main.go @@ -0,0 +1,8 @@ +package bpcatalog + +import ( + log "github.com/inconshreveable/log15" +) + +// bpcatalog log15 handler +var Log = log.New() diff --git a/cli/bpcatalog/render.go b/cli/bpcatalog/render.go new file mode 100644 index 00000000000..7cf97818dcf --- /dev/null +++ b/cli/bpcatalog/render.go @@ -0,0 +1,71 @@ +package bpcatalog + +import ( + "fmt" + "io" + + "github.com/jedib0t/go-pretty/table" +) + +// renderFormat defines the set of render options for catalog. +type renderFormat string + +func (r *renderFormat) String() string { + return string(*r) +} + +func (r *renderFormat) Empty() bool { + return r.String() == "" +} + +func (r *renderFormat) Set(v string) error { + f, err := renderFormatFromString(v) + if err != nil { + return err + } + *r = f + return nil +} + +func renderFormatFromString(s string) (renderFormat, error) { + format := renderFormat(s) + for _, stage := range renderFormats { + if format == stage { + return format, nil + } + } + return "", fmt.Errorf("one of %+v expected. unknown format: %s", renderFormats, s) +} + +func (r *renderFormat) Type() string { + return "renderFormat" +} + +const ( + renderTable renderFormat = "table" + renderCSV renderFormat = "csv" + renderTimeformat string = "2006-01-02" +) + +var ( + renderFormats = []renderFormat{renderTable, renderCSV} +) + +// render writes given repo information in the specified renderFormat to w. +func render(r repos, w io.Writer, format renderFormat) error { + tbl := table.NewWriter() + tbl.SetOutputMirror(w) + tbl.AppendHeader(table.Row{"Repo", "Stars", "Created"}) + for _, repo := range r { + tbl.AppendRow(table.Row{repo.GetName(), repo.GetStargazersCount(), repo.GetCreatedAt().Format(renderTimeformat)}) + } + switch format { + case renderTable: + tbl.Render() + case renderCSV: + tbl.RenderCSV() + default: + return fmt.Errorf("one of %+v expected. unknown format: %s", renderFormats, catalogListFlags.format) + } + return nil +} diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go new file mode 100644 index 00000000000..ae9c152ef87 --- /dev/null +++ b/cli/bpcatalog/render_test.go @@ -0,0 +1,99 @@ +package bpcatalog + +import ( + "bytes" + "os" + "path" + "strings" + "testing" + "time" + + "github.com/google/go-github/v47/github" + "github.com/stretchr/testify/assert" +) + +const ( + expectedSuffix = ".expected" + updateEnvVar = "UPDATE_EXPECTED" + testDataDir = "../testdata/catalog" +) + +func TestRender(t *testing.T) { + testRepoData := repos{ + { + Name: github.String("terraform-google-bar"), + CreatedAt: &github.Timestamp{Time: time.Date(2021, 1, 3, 4, 3, 0, 0, time.UTC)}, + StargazersCount: github.Int(5), + }, + { + Name: github.String("terraform-google-foo"), + CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, + StargazersCount: github.Int(10), + }, + } + tests := []struct { + name string + r repos + format renderFormat + wantErr bool + }{ + { + name: "table", + r: testRepoData, + format: renderTable, + }, + { + name: "csv", + r: testRepoData, + format: renderCSV, + }, + { + name: "invalid", + r: testRepoData, + format: "invalid", + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var got bytes.Buffer + if err := render(tt.r, &got, tt.format); (err != nil) != tt.wantErr { + t.Errorf("render() error = %v, wantErr %v", err, tt.wantErr) + } + if !tt.wantErr { + expectedPath := path.Join(testDataDir, tt.name+".expected") + expected := readFile(t, expectedPath) + updateExpected(t, expectedPath, got.String()) + assert.Equal(t, expected, got.String()) + } + }) + } +} + +func readFile(t *testing.T, p string) string { + t.Helper() + j, err := os.ReadFile(p) + if err != nil { + t.Fatalf("error reading file %s: %s", p, err) + } + return string(j) +} + +// UpdateExpected updates expected file at fp with data with update env var is set. +func updateExpected(t *testing.T, fp, data string) { + t.Helper() + if strings.ToLower(os.Getenv(updateEnvVar)) != "true" { + return + } + // 0755 allows read/execute for everyone, write for owner + // which is a safe default since this is test data. + // Execute bit is needed to traverse directories. + err := os.MkdirAll(path.Dir(fp), 0755) + if err != nil { + t.Fatalf("error updating result: %v", err) + } + err = os.WriteFile(fp, []byte(data), 0755) + if err != nil { + t.Fatalf("error updating result: %v", err) + } +} diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go new file mode 100644 index 00000000000..9dab5bee3ef --- /dev/null +++ b/cli/bpcatalog/tf.go @@ -0,0 +1,64 @@ +package bpcatalog + +import ( + "fmt" + "strings" + + "github.com/google/go-github/v47/github" +) + +// sortOption defines the set of sort options for catalog. +type sortOption string + +func (s *sortOption) String() string { + return string(*s) +} + +func (s *sortOption) Empty() bool { + return s.String() == "" +} + +func (s *sortOption) Set(v string) error { + f, err := sortOptionFromString(v) + if err != nil { + return err + } + *s = f + return nil +} + +func sortOptionFromString(s string) (sortOption, error) { + format := sortOption(s) + for _, stage := range sortOptions { + if format == stage { + return format, nil + } + } + return "", fmt.Errorf("one of %+v expected. unknown sort option: %s", sortOptions, s) +} + +func (r *sortOption) Type() string { + return "sortOption" +} + +const ( + sortStars sortOption = "stars" + sortCreated sortOption = "created" + sortName sortOption = "name" +) + +var ( + sortOptions = []sortOption{sortStars, sortCreated, sortName} +) + +// fetchSortedTFRepos returns a slice of repos sorted by sortOpt. +func fetchSortedTFRepos(gh *ghService, sortOpt sortOption) (repos, error) { + repos, err := gh.fetchRepos() + if err != nil { + return nil, fmt.Errorf("error fetching repos: %v", err) + } + repos = repos.filter(func(r *github.Repository) bool { + return repoAllowList[r.GetName()] || (strings.HasPrefix(r.GetName(), "terraform-google") && !repoIgnoreList[r.GetName()]) + }) + return repos.sort(sortOpt) +} diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go new file mode 100644 index 00000000000..632f4b04619 --- /dev/null +++ b/cli/bpcatalog/tf_test.go @@ -0,0 +1,140 @@ +package bpcatalog + +import ( + "testing" + "time" + + "github.com/google/go-github/v47/github" + "github.com/migueleliasweb/go-github-mock/src/mock" + "github.com/stretchr/testify/assert" +) + +func TestFetchSortedTFRepos(t *testing.T) { + mockT := time.Now() + tests := []struct { + name string + repos []github.Repository + sortBy sortOption + want []string + wantErr bool + }{ + { + name: "simple sort created", + repos: []github.Repository{ + { + Name: github.String("terraform-google-bar"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 3)}, + }, + { + Name: github.String("terraform-google-foo"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + }, + { + Name: github.String("foo"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + }, + }, + want: []string{ + "terraform-google-foo", + "terraform-google-bar", + }, + sortBy: sortCreated, + }, + { + name: "simple sort name", + repos: []github.Repository{ + { + Name: github.String("terraform-google-bar"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 3)}, + }, + { + Name: github.String("terraform-google-foo"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + }, + { + Name: github.String("foo"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + }, + }, + want: []string{ + "terraform-google-bar", + "terraform-google-foo", + }, + sortBy: sortName, + }, + { + name: "simple sort stars", + repos: []github.Repository{ + { + Name: github.String("terraform-google-bar"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 3)}, + StargazersCount: github.Int(5), + }, + { + Name: github.String("terraform-google-foo"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + StargazersCount: github.Int(10), + }, + { + Name: github.String("foo"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + StargazersCount: github.Int(12), + }, + }, + want: []string{ + "terraform-google-bar", + "terraform-google-foo", + }, + sortBy: sortStars, + }, + { + name: "invalid", + repos: []github.Repository{ + { + Name: github.String("terraform-google-bar"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 3)}, + StargazersCount: github.Int(5), + }, + { + Name: github.String("terraform-google-foo"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + StargazersCount: github.Int(10), + }, + { + Name: github.String("foo"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + StargazersCount: github.Int(12), + }, + }, + wantErr: true, + sortBy: "baz", + }, + { + name: "empty", + repos: []github.Repository{}, + wantErr: false, + sortBy: "name", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockedHTTPClient := mock.NewMockedHTTPClient( + mock.WithRequestMatch( + mock.GetOrgsReposByOrg, + tt.repos, + ), + ) + mockGHService := newGHService(withClient(mockedHTTPClient), withOrgs([]string{"foo"})) + got, err := fetchSortedTFRepos(mockGHService, tt.sortBy) + if (err != nil) != tt.wantErr { + t.Errorf("fetchSortedTFRepos() error = %v, wantErr %v", err, tt.wantErr) + return + } + var gotRepoNames []string + for _, r := range got { + gotRepoNames = append(gotRepoNames, r.GetName()) + } + assert.Equal(t, tt.want, gotRepoNames) + }) + } +} diff --git a/cli/cmd/blueprint.go b/cli/cmd/blueprint.go index d61fc255b4b..c08449065f0 100644 --- a/cli/cmd/blueprint.go +++ b/cli/cmd/blueprint.go @@ -2,6 +2,7 @@ package cmd import ( "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpbuild" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpcatalog" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bptest" "github.com/spf13/cobra" @@ -11,6 +12,7 @@ func init() { blueprintCmd.AddCommand(bpmetadata.Cmd) blueprintCmd.AddCommand(bpbuild.Cmd) blueprintCmd.AddCommand(bptest.Cmd) + blueprintCmd.AddCommand(bpcatalog.Cmd) rootCmd.AddCommand(blueprintCmd) } diff --git a/cli/go.mod b/cli/go.mod index 6322c0beb7c..c73410cf9e6 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -13,13 +13,16 @@ require ( github.com/go-git/go-git/v5 v5.4.2 github.com/golang/protobuf v1.5.2 github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb - github.com/google/go-cmp v0.5.6 + github.com/google/go-cmp v0.5.9 + github.com/google/go-github/v47 v47.1.0 github.com/hashicorp/hcl/v2 v2.14.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f github.com/iancoleman/strcase v0.2.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac + github.com/jedib0t/go-pretty v4.3.0+incompatible github.com/jedib0t/go-pretty/v6 v6.2.4 github.com/manifoldco/promptui v0.9.0 + github.com/migueleliasweb/go-github-mock v0.0.12 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible // indirect github.com/open-policy-agent/opa v0.34.2 @@ -28,6 +31,7 @@ require ( github.com/spf13/cobra v1.4.0 github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.8.0 + golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 google.golang.org/api v0.58.0 google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 google.golang.org/protobuf v1.28.1 // indirect diff --git a/cli/go.sum b/cli/go.sum index 54dd217a7d9..df61bf4602c 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -199,6 +199,7 @@ github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2 github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/briandowns/spinner v1.16.0 h1:DFmp6hEaIx2QXXuqSJmtfSBSAjRmpGiKG6ip2Wm/yOs= github.com/briandowns/spinner v1.16.0/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bytecodealliance/wasmtime-go v0.27.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= github.com/bytecodealliance/wasmtime-go v0.30.0 h1:WfYpr4WdqInt8m5/HvYinf+HrSEAIhItKIcth+qb1h4= github.com/bytecodealliance/wasmtime-go v0.30.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= @@ -365,9 +366,11 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-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-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/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= @@ -610,9 +613,16 @@ github.com/google/go-cmp v0.5.2/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.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.0.0-20200110202235-f4fb41bf00a3/go.mod h1:2wIuQute9+hhWqvL3vEI7YB0EKluF4WcPzI1eAliazk= +github.com/google/go-github/v41 v41.0.0 h1:HseJrM2JFf2vfiZJ8anY2hqBjdfY1Vlj/K27ueww4gg= +github.com/google/go-github/v41 v41.0.0/go.mod h1:XgmCA5H323A9rtgExdTcnDkcqp6S30AVACCBDOonIxg= +github.com/google/go-github/v47 v47.1.0 h1:Cacm/WxQBOa9lF0FT0EMjZ2BWMetQ1TQfyurn4yF1z8= +github.com/google/go-github/v47 v47.1.0/go.mod h1:VPZBXNbFSJGjyjFRUKo9vZGawTajnWzC/YjGw/oFKi0= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= @@ -666,6 +676,7 @@ github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51 github.com/gorilla/mux v0.0.0-20181024020800-521ea7b17d02/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= @@ -764,6 +775,8 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= +github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= github.com/jedib0t/go-pretty/v6 v6.2.4 h1:wdaj2KHD2W+mz8JgJ/Q6L/T5dB7kyqEFI16eLq7GEmk= github.com/jedib0t/go-pretty/v6 v6.2.4/go.mod h1:+nE9fyyHGil+PuISTCrp7avEdo6bqoMwqZnuiK2r2a0= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= @@ -904,6 +917,8 @@ github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7 github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/migueleliasweb/go-github-mock v0.0.12 h1:z9Qd82YRA2+LbVDefRG+4PKRgaB3NYtjlv+eNtREWY4= +github.com/migueleliasweb/go-github-mock v0.0.12/go.mod h1:mD5w+9J3oBBMLr7uD6owEYlYBAL8tZd+BA7iGjI4EU8= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= diff --git a/cli/testdata/catalog/csv.expected b/cli/testdata/catalog/csv.expected new file mode 100644 index 00000000000..31623fe54f2 --- /dev/null +++ b/cli/testdata/catalog/csv.expected @@ -0,0 +1,3 @@ +Repo,Stars,Created +terraform-google-bar,5,2021-01-03 +terraform-google-foo,10,2022-11-03 diff --git a/cli/testdata/catalog/table.expected b/cli/testdata/catalog/table.expected new file mode 100644 index 00000000000..b57ef13edb3 --- /dev/null +++ b/cli/testdata/catalog/table.expected @@ -0,0 +1,6 @@ ++----------------------+-------+------------+ +| REPO | STARS | CREATED | ++----------------------+-------+------------+ +| terraform-google-bar | 5 | 2021-01-03 | +| terraform-google-foo | 10 | 2022-11-03 | ++----------------------+-------+------------+ From faa78708f1cd6f9ddf09f85c6301db2888dab126 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 2 Nov 2022 17:39:20 -0500 Subject: [PATCH 0187/1371] feat: add kind to devtools krm (#1277) --- infra/build/Makefile | 4 +++- infra/build/developer-tools-krm/Dockerfile | 7 ++++++ .../developer-tools-krm/build/install_kind.sh | 24 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100755 infra/build/developer-tools-krm/build/install_kind.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index a98a882c01f..5c79bf562f4 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -41,11 +41,12 @@ ALPINE_VERSION := 3.16 # For developer-tools-krm GOLANGCI_VERSION := 1.47.3 ASMCLI_VERSION := 1.12 +KIND_VERSION := 0.17.0 # Updated by Update Tooling Workflow GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -90,6 +91,7 @@ build-image-developer-tools: --build-arg ASMCLI_VERSION=${ASMCLI_VERSION} \ --build-arg GATOR_VERSION=${GATOR_VERSION} \ --build-arg OPA_VERSION=${OPA_VERSION} \ + --build-arg KIND_VERSION=${KIND_VERSION} \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ -t ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools-krm" diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index 7c135cf86b8..cbc446d5217 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -45,6 +45,13 @@ ENV OPA_VERSION ${OPA_VERSION} ADD ./build/install_opa.sh /build/ RUN /build/install_opa.sh ${OPA_VERSION} +# Required to download and install kind +ARG KIND_VERSION +ENV KIND_VERSION ${KIND_VERSION} + +ADD ./build/install_kind.sh /build/ +RUN /build/install_kind.sh ${KIND_VERSION} + RUN rm -rf /build # Add dind helper for prow diff --git a/infra/build/developer-tools-krm/build/install_kind.sh b/infra/build/developer-tools-krm/build/install_kind.sh new file mode 100755 index 00000000000..4638173df3e --- /dev/null +++ b/infra/build/developer-tools-krm/build/install_kind.sh @@ -0,0 +1,24 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +cd /build + +KIND_VERSION=$1 + +wget -q https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-linux-amd64 +install -o 0 -g 0 -m 0755 kind-linux-amd64 /usr/local/bin/kind From ab0f7710fe155c482a299b05a2c3b148bf04e8bd Mon Sep 17 00:00:00 2001 From: zhuchenwang Date: Fri, 4 Nov 2022 11:12:08 -0700 Subject: [PATCH 0188/1371] Onboard anthos-vm module (#1278) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 51759e1c5ce..25e1bcaefd4 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -102,5 +102,6 @@ locals { "three-tier-app", "log-analysis", "media-cdn-vod", + "anthos-vm", ] } From ed5facec5c19a2ab6fec8a9c173def710a3387c5 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 11 Nov 2022 07:59:20 -0800 Subject: [PATCH 0189/1371] feat: consolidate TPG and TPG-Beta, major and minor into single PR (#1280) --- infra/terraform/test-org/github/renovate.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/infra/terraform/test-org/github/renovate.json b/infra/terraform/test-org/github/renovate.json index 6e7a4f26b6b..c7c3f596022 100644 --- a/infra/terraform/test-org/github/renovate.json +++ b/infra/terraform/test-org/github/renovate.json @@ -30,6 +30,11 @@ "matchPackageNames": ["go"], "allowedVersions": "<1.19.0", "postUpdateOptions": ["gomodTidy"] + }, + { + "matchPackageNames": ["google", "google-beta"], + "groupName": "terraform googles", + "separateMajorMinor": false } ] } From 98fb51fcb88d49d3fa988d45e39a812d45d0b1da Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 15 Nov 2022 10:33:35 -0600 Subject: [PATCH 0190/1371] Update Tools to 1.8.5 (#1276) Update tools to 1.8.5 --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 5c79bf562f4..f3d755565a3 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.3.3 +TERRAFORM_VERSION := 1.3.4 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 407.0.0 +CLOUD_SDK_VERSION := 409.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -35,7 +35,7 @@ KPT_VERSION := 1.0.0-beta.15 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 0.4.5 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.23.13 +KUBECTL_VERSION := 1.23.14 ALPINE_VERSION := 3.16 # For developer-tools-krm @@ -46,7 +46,7 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 797a395f73ee5ab1b5a525aefcc98bc9e0984f50 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 15 Nov 2022 11:56:05 -0600 Subject: [PATCH 0191/1371] feat: add tflint to lint toolchain (#1272) * feat: add tflint to our lint toolchain * fmt * chore: bump tools version Co-authored-by: Andrew Peabody --- infra/build/Makefile | 4 +- infra/build/developer-tools/Dockerfile | 11 ++++ .../build/home/.tflint.example.hcl | 32 ++++++++++ .../build/home/.tflint.module.hcl | 61 +++++++++++++++++++ .../developer-tools/build/install_tflint.sh | 25 ++++++++ .../build/scripts/task_helper_functions.sh | 39 ++++++++++++ .../build/scripts/test_lint.sh | 2 + 7 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 infra/build/developer-tools/build/home/.tflint.example.hcl create mode 100644 infra/build/developer-tools/build/home/.tflint.module.hcl create mode 100755 infra/build/developer-tools/build/install_tflint.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index f3d755565a3..512afb32f8b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -36,6 +36,7 @@ KPT_VERSION := 1.0.0-beta.15 CFT_CLI_VERSION := 0.4.5 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.23.14 +TFLINT_VERSION := 0.41.0 ALPINE_VERSION := 3.16 # For developer-tools-krm @@ -46,7 +47,7 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.8.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -76,6 +77,7 @@ build-image-developer-tools: --build-arg KPT_VERSION=${KPT_VERSION} \ --build-arg CFT_CLI_VERSION=${CFT_CLI_VERSION} \ --build-arg KUBECTL_VERSION=${KUBECTL_VERSION} \ + --build-arg TFLINT_VERSION=${TFLINT_VERSION} \ --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools" docker build \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 603af06bc0c..8121b78e61e 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -81,6 +81,10 @@ ENV CFT_CLI_VERSION ${CFT_CLI_VERSION} ARG KUBECTL_VERSION ENV KUBECTL_VERSION ${KUBECTL_VERSION} +# Required to download and install TFlint +ARG TFLINT_VERSION +ENV TFLINT_VERSION ${TFLINT_VERSION} + # $WORKSPACE is intended for assets that persist across multiple build steps in a pipeline. # It's also where the project git repository is located. # https://cloud.google.com/cloud-build/docs/build-config @@ -148,6 +152,9 @@ RUN /build/install_addlicense.sh ADD ./build/install_cft_cli.sh /build/ RUN /build/install_cft_cli.sh ${CFT_CLI_VERSION} +ADD ./build/install_tflint.sh /build/ +RUN /build/install_tflint.sh ${TFLINT_VERSION} + WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . @@ -180,6 +187,10 @@ ADD ./build/scripts/gh_lint_comment.py /usr/local/bin/ ADD ./build/home/bash_history /root/.bash_history ADD ./build/home/bashrc /root/.bashrc +# TFLint configs +ADD ./build/home/.tflint.example.hcl /root/tflint/.tflint.example.hcl +ADD ./build/home/.tflint.module.hcl /root/tflint/.tflint.module.hcl + # Set TF cache dir ENV TF_PLUGIN_CACHE_DIR /workspace/test/integration/tmp/.terraform RUN mkdir -p ${TF_PLUGIN_CACHE_DIR} diff --git a/infra/build/developer-tools/build/home/.tflint.example.hcl b/infra/build/developer-tools/build/home/.tflint.example.hcl new file mode 100644 index 00000000000..7cd335a5f0d --- /dev/null +++ b/infra/build/developer-tools/build/home/.tflint.example.hcl @@ -0,0 +1,32 @@ +// disable all rules by default +config { + disabled_by_default = true +} + +plugin "terraform" { + enabled = true +} + +rule "terraform_deprecated_index" { + enabled = true +} + +rule "terraform_deprecated_interpolation" { + enabled = true +} + +rule "terraform_empty_list_equality" { + enabled = true +} + +rule "terraform_module_pinned_source" { + enabled = true +} + +rule "terraform_module_version" { + enabled = true +} + +rule "terraform_unused_declarations" { + enabled = true +} diff --git a/infra/build/developer-tools/build/home/.tflint.module.hcl b/infra/build/developer-tools/build/home/.tflint.module.hcl new file mode 100644 index 00000000000..821d28eb1f1 --- /dev/null +++ b/infra/build/developer-tools/build/home/.tflint.module.hcl @@ -0,0 +1,61 @@ +// disable all rules by default +config { + disabled_by_default = true +} + +plugin "terraform" { + enabled = true +} + +rule "terraform_deprecated_index" { + enabled = true +} + +rule "terraform_deprecated_interpolation" { + enabled = true +} + +rule "terraform_empty_list_equality" { + enabled = true +} + +rule "terraform_module_pinned_source" { + enabled = true +} + +rule "terraform_module_version" { + enabled = true +} + +rule "terraform_unused_declarations" { + enabled = true +} + +// module specific +rule "terraform_documented_outputs" { + enabled = true +} + +rule "terraform_documented_variables" { + enabled = true +} + +rule "terraform_module_pinned_source" { + enabled = true +} + +rule "terraform_module_version" { + enabled = true +} + +rule "terraform_required_providers" { + enabled = true +} + +rule "terraform_required_version" { + enabled = true +} + +rule "terraform_typed_variables" { + enabled = true +} diff --git a/infra/build/developer-tools/build/install_tflint.sh b/infra/build/developer-tools/build/install_tflint.sh new file mode 100755 index 00000000000..d6efa0e8af0 --- /dev/null +++ b/infra/build/developer-tools/build/install_tflint.sh @@ -0,0 +1,25 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +TF_LINT_VERSION=$1 + +cd /build + +wget "https://github.com/terraform-linters/tflint/releases/download/v${TF_LINT_VERSION}/tflint_linux_amd64.zip" +unzip tflint_linux_amd64.zip +install -o 0 -g 0 -m 0755 tflint /usr/local/bin/tflint diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 3f12449144a..f8de7b6152d 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -307,6 +307,45 @@ function generate_docs() { | sort -u) } +function check_tflint() { + if [[ "${DISABLE_TFLINT:-}" ]]; then + echo "DISABLE_TFLINT set. Skipping tflint check." + return 0 + fi + setup_trap_handler + rval=0 + echo "Checking for tflint" + local path + while read -r path; do + local tflintCfg + # skip any tf configs under test/ + if [[ $path == "./test"* ]];then + echo "Skipping ${path}" + continue + fi + # load default ruleset + tflintCfg="/root/tflint/.tflint.example.hcl" + # if module, load tighter ruleset + if [[ $path == "." || $path == "./modules"* ]];then + tflintCfg="/root/tflint/.tflint.module.hcl" + fi + + cd "${path}" && echo "Working in ${path} ..." + tflint --config=${tflintCfg} --no-color + rc=$? + if [[ "${rc}" -ne 0 ]]; then + echo "tflint failed ${path} " + ((rval++)) + else + echo "tflint passed ${path} " + fi + cd - >/dev/null + done < <(find_files . -name '*.tf' -print0 \ + | compat_xargs -0 -n1 dirname \ + | sort -u) + return $((rval)) +} + # Lint check to determine whether generate_docs() needs to be run by copying to # a tmp directory, running generate_docs(), and then diffing the result. function check_documentation() { diff --git a/infra/build/developer-tools/build/scripts/test_lint.sh b/infra/build/developer-tools/build/scripts/test_lint.sh index bd24e8e56ae..40f02f01df0 100755 --- a/infra/build/developer-tools/build/scripts/test_lint.sh +++ b/infra/build/developer-tools/build/scripts/test_lint.sh @@ -36,6 +36,7 @@ messages='{ "check_shell": "Failed shell check. More info on running shellcheck locally [here](https://www.shellcheck.net).", "check_headers": "All files need a license header. Please make sure all your files include the appropriate header. A helper tool available [here](https://github.com/google/addlicense).", "check_python": "Failed flake8 Python lint check.", + "check_tflint": "Failed TFlint check. More details below.", "check_terraform": "Failed Terraform check. More details below." }' rval=0 @@ -47,6 +48,7 @@ tests=( check_shell check_headers check_python + check_tflint check_terraform ) From 85517c6c6c9c26b851b17dbc84fa168a129a3289 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 15 Nov 2022 22:13:35 -0600 Subject: [PATCH 0192/1371] Update Tools to 1.10 (#1281) * Update tools to 1.10 * Update Makefile Co-authored-by: Bharath KKB --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 512afb32f8b..8f8e37a79fc 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.3.4 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 409.0.0 +CLOUD_SDK_VERSION := 410.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -47,7 +47,7 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.9.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From c71cb3fa428db67e6f304cc950a3e95c70401611 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 18 Nov 2022 08:46:35 -0800 Subject: [PATCH 0193/1371] chore: validate tool version isn't missing (#1283) --- .github/workflows/update-tooling.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 74a77ea1e69..ee318d46817 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -56,6 +56,8 @@ jobs: # update tool version in Makefile if not latest if [ "$CURRENT_TOOL_VERSION" == "$LATEST_TOOL_VERSION" ]; then echo "${tool} is latest" + elif [ -z "$CURRENT_TOOL_VERSION" || "$CURRENT_TOOL_VERSION" == "" || "$CURRENT_TOOL_VERSION" == "null" ]; then + echo "${tool} version is missing" else echo "${tool} needs to be updated to ${LATEST_TOOL_VERSION}" sed -i "s/${tool}_VERSION := ${CURRENT_TOOL_VERSION}/${tool}_VERSION := ${LATEST_TOOL_VERSION}/g" infra/build/Makefile From 53ae65695546a01f05c3b50ff9321dc19552fd77 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 18 Nov 2022 11:05:39 -0800 Subject: [PATCH 0194/1371] chore: validate tool version isn't missing (#1287) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ee318d46817..ee372091d2c 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -56,7 +56,7 @@ jobs: # update tool version in Makefile if not latest if [ "$CURRENT_TOOL_VERSION" == "$LATEST_TOOL_VERSION" ]; then echo "${tool} is latest" - elif [ -z "$CURRENT_TOOL_VERSION" || "$CURRENT_TOOL_VERSION" == "" || "$CURRENT_TOOL_VERSION" == "null" ]; then + elif [[ -z "$CURRENT_TOOL_VERSION" || "$CURRENT_TOOL_VERSION" == "" || "$CURRENT_TOOL_VERSION" == "null" ]]; then echo "${tool} version is missing" else echo "${tool} needs to be updated to ${LATEST_TOOL_VERSION}" From de5d5090980f5f12e0321365a935e119493518ec Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 18 Nov 2022 15:00:25 -0600 Subject: [PATCH 0195/1371] feat: new test strategy for redeploy validation (#1286) --- .../examples/simple_pet_module/main.tf | 2 ++ infra/blueprint-test/pkg/tft/terraform.go | 20 +++++++++++ .../test/terraform_redeploy_test.go | 36 +++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 infra/blueprint-test/examples/simple_pet_module/main.tf create mode 100644 infra/blueprint-test/test/terraform_redeploy_test.go diff --git a/infra/blueprint-test/examples/simple_pet_module/main.tf b/infra/blueprint-test/examples/simple_pet_module/main.tf new file mode 100644 index 00000000000..4fd41b5ab83 --- /dev/null +++ b/infra/blueprint-test/examples/simple_pet_module/main.tf @@ -0,0 +1,2 @@ +resource "random_pet" "hello" { +} diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 64b9703ea8e..df78d57b99f 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -432,3 +432,23 @@ func (b *TFBlueprintTest) Test() { utils.RunStage("apply", func() { b.Apply(a) }) utils.RunStage("verify", func() { b.Verify(a) }) } + +// RedeployTest deploys the test n times in separate workspaces before teardown. +func (b *TFBlueprintTest) RedeployTest(n int) { + if b.ShouldSkip() { + b.logger.Logf(b.t, "Skipping test due to config %s", b.Path) + b.t.SkipNow() + return + } + a := assert.New(b.t) + for i := 1; i <= n; i++ { + ws := terraform.WorkspaceSelectOrNew(b.t, b.GetTFOptions(), fmt.Sprintf("test-%d", i)) + utils.RunStage("init", func() { b.Init(a) }) + defer func() { + terraform.WorkspaceSelectOrNew(b.t, b.GetTFOptions(), ws) + utils.RunStage("teardown", func() { b.Teardown(a) }) + }() + utils.RunStage("apply", func() { b.Apply(a) }) + utils.RunStage("verify", func() { b.Verify(a) }) + } +} diff --git a/infra/blueprint-test/test/terraform_redeploy_test.go b/infra/blueprint-test/test/terraform_redeploy_test.go new file mode 100644 index 00000000000..1ce2d8543f6 --- /dev/null +++ b/infra/blueprint-test/test/terraform_redeploy_test.go @@ -0,0 +1,36 @@ +/** + * Copyright 2022 Google LLC + * + * 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 ( + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/gruntwork-io/terratest/modules/terraform" +) + +func TestRedeploy(t *testing.T) { + nt := tft.NewTFBlueprintTest(t, + tft.WithTFDir("../examples/simple_pet_module"), + tft.WithSetupPath(""), + ) + nt.RedeployTest(3) + expectedWorkspaces := []string{"test-1", "test-2", "test-3"} + for _, ws := range expectedWorkspaces { + terraform.RunTerraformCommand(t, nt.GetTFOptions(), "workspace", "select", ws) + } +} From 762b7de7a2befb2867a282fe171501fd50041df5 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 21 Nov 2022 15:10:57 -0800 Subject: [PATCH 0196/1371] chore: update tools to GO 1.18 (#1288) --- infra/build/Makefile | 6 +++--- infra/build/developer-tools/build/install_addlicense.sh | 2 +- infra/build/developer-tools/build/install_dependencies.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 8f8e37a79fc..1f7de0f42d5 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.3.4 +TERRAFORM_VERSION := 1.3.5 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 410.0.0 @@ -22,7 +22,7 @@ GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 BATS_VERSION := 0.4.0 -GOLANG_VERSION := 1.17 +GOLANG_VERSION := 1.18 BATS_SUPPORT_VERSION := 0.3.0 BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 @@ -47,7 +47,7 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.9.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/install_addlicense.sh b/infra/build/developer-tools/build/install_addlicense.sh index e3c6172742b..22390bd08ae 100755 --- a/infra/build/developer-tools/build/install_addlicense.sh +++ b/infra/build/developer-tools/build/install_addlicense.sh @@ -18,5 +18,5 @@ set -u cd /build -go get -u github.com/google/addlicense@v1.0.0 +go install github.com/google/addlicense@v1.1.0 ln -s $(go env GOPATH)/bin/addlicense /usr/local/bin/ diff --git a/infra/build/developer-tools/build/install_dependencies.sh b/infra/build/developer-tools/build/install_dependencies.sh index 400f432a9cb..31493c3656a 100755 --- a/infra/build/developer-tools/build/install_dependencies.sh +++ b/infra/build/developer-tools/build/install_dependencies.sh @@ -69,4 +69,4 @@ apk add --no-cache rsync # flake8 and jinja2 are used for lint checks, cookiecutter is used for terraform-google-module-template tests # requests~=2.28 for https://github.com/psf/requests/pull/6179 # Remaining items moved here from requirements.txt -pip install flake8 "Jinja2~=3.1" cookiecutter "requests~=2.28" PyGithub==1.51 google-auth~=1.6 google-api-python-client~=1.7 +pip install flake8 "Jinja2~=3.1" cookiecutter "requests~=2.28" PyGithub==1.51 google-auth~=1.6 google-api-python-client~=1.7 crcmod From c2f6d8f25e6bc685807e89447b46978f0792a65d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 22 Nov 2022 09:12:54 -0800 Subject: [PATCH 0197/1371] chore: update build-push-cft-devtools.yml versions (#1290) --- .github/workflows/build-push-cft-devtools.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index e7848b1aa36..47699ff381a 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -19,18 +19,18 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@v0.4.2' + uses: 'google-github-actions/auth@v1.0.0' with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@v0.3.0 + - uses: google-github-actions/setup-gcloud@v1.0.1 with: - version: "366.0.0" + version: "410.0.0" project_id: ${{ env.PROJECT_ID }} - name: Build @@ -44,7 +44,7 @@ jobs: - name: Open issue if failed if: ${{ failure() }} - uses: actions/github-script@9ac08808f993958e9de277fe43a64532a609130e + uses: actions/github-script@v6.3.3 with: script: |- github.rest.issues.create({ From 06fae232e1f97b1d78df6809eff65898fddb5268 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 28 Nov 2022 12:23:50 -0600 Subject: [PATCH 0198/1371] feat: enable no color (#1293) --- infra/blueprint-test/pkg/tft/terraform.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index df78d57b99f..badbce81a45 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -214,7 +214,7 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { // load TFEnvVars from setup outputs if tft.setupDir != "" { tft.logger.Logf(tft.t, "Loading env vars from setup %s", tft.setupDir) - loadTFEnvVar(tft.tfEnvVars, tft.getTFOutputsAsInputs(terraform.OutputAll(tft.t, &terraform.Options{TerraformDir: tft.setupDir, Logger: tft.logger}))) + loadTFEnvVar(tft.tfEnvVars, tft.getTFOutputsAsInputs(terraform.OutputAll(tft.t, &terraform.Options{TerraformDir: tft.setupDir, Logger: tft.logger, NoColor: true}))) if credsEnc, exists := tft.tfEnvVars[fmt.Sprintf("TF_VAR_%s", setupKeyOutputName)]; tft.saKey == "" && exists { if credDec, err := b64.StdEncoding.DecodeString(credsEnc); err == nil { gcloud.ActivateCredsAndEnvVars(tft.t, string(credDec)) @@ -241,6 +241,7 @@ func (b *TFBlueprintTest) GetTFOptions() *terraform.Options { MigrateState: b.migrateState, PlanFilePath: b.planFilePath, RetryableTerraformErrors: b.retryableTerraformErrors, + NoColor: true, }) if b.maxRetries > 0 { newOptions.MaxRetries = b.maxRetries @@ -294,7 +295,7 @@ func (b *TFBlueprintTest) GetTFSetupOutputListVal(key string) []string { if b.setupDir == "" { b.t.Fatal("Setup path not set") } - return terraform.OutputList(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger}, key) + return terraform.OutputList(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger, NoColor: true}, key) } // GetTFSetupStringOutput returns TF setup output for a given key as string. @@ -303,7 +304,7 @@ func (b *TFBlueprintTest) GetTFSetupStringOutput(key string) string { if b.setupDir == "" { b.t.Fatal("Setup path not set") } - return terraform.Output(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger}, key) + return terraform.Output(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger, NoColor: true}, key) } // loadTFEnvVar adds new env variables prefixed with TF_VAR_ to an existing map of variables. @@ -376,6 +377,7 @@ func (b *TFBlueprintTest) DefaultInit(assert *assert.Assertions) { terraform.Validate(b.t, terraform.WithDefaultRetryableErrors(b.t, &terraform.Options{ TerraformDir: b.tfDir, Logger: b.logger, + NoColor: true, })) } From 6c1826d08f6eb43588f31cd1bc4e9286c7fa19d2 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 28 Nov 2022 15:10:59 -0800 Subject: [PATCH 0199/1371] feat: automate codeowners & renovate chores (#1291) --- .../terraform/modules/codeowners_file/main.tf | 37 +++++++++++++++++ .../modules/codeowners_file/variables.tf | 40 +++++++++++++++++++ .../modules/codeowners_file/versions.tf | 24 +++++++++++ .../test-org/github/.terraform.lock.hcl | 32 +++++++-------- infra/terraform/test-org/github/backend.tf | 8 ++++ infra/terraform/test-org/github/main.tf | 8 +++- infra/terraform/test-org/github/protection.tf | 24 +++++++++++ infra/terraform/test-org/github/renovate.json | 12 +++++- infra/terraform/test-org/org/locals.tf | 16 ++++++++ infra/terraform/test-org/org/outputs.tf | 4 ++ 10 files changed, 186 insertions(+), 19 deletions(-) create mode 100644 infra/terraform/modules/codeowners_file/main.tf create mode 100644 infra/terraform/modules/codeowners_file/variables.tf create mode 100644 infra/terraform/modules/codeowners_file/versions.tf diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf new file mode 100644 index 00000000000..9ed80b677c6 --- /dev/null +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -0,0 +1,37 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +locals { + commit_author = "CFT Bot" + commit_email = "cloud-foundation-bot@google.com" +} + +data "github_repository" "repo" { + for_each = toset(var.repo_list) + name = each.value +} + +resource "github_repository_file" "CODEOWNERS" { + for_each = data.github_repository.repo + repository = each.value.name + branch = each.value.default_branch + file = "CODEOWNERS" + commit_message = "chore: update CODEOWNERS" + commit_author = local.commit_author + commit_email = local.commit_email + overwrite_on_create = true + content = trimspace("* @${var.org}/${var.owner} ${try(var.add_owners[each.value.name], "")}") +} diff --git a/infra/terraform/modules/codeowners_file/variables.tf b/infra/terraform/modules/codeowners_file/variables.tf new file mode 100644 index 00000000000..8674121b7cb --- /dev/null +++ b/infra/terraform/modules/codeowners_file/variables.tf @@ -0,0 +1,40 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +/****************************************** + Required variables +*******************************************/ + +variable "org" { + description = "GitHub Org" + type = string +} + +variable "repo_list" { + description = "List of Repos" + type = list(any) +} + +variable "owner" { + description = "Primary owner" + type = string + nullable = false +} + +variable "add_owners" { + description = "Map of addtional owners as repo:owners" + type = map(string) +} diff --git a/infra/terraform/modules/codeowners_file/versions.tf b/infra/terraform/modules/codeowners_file/versions.tf new file mode 100644 index 00000000000..56c83e7c0a2 --- /dev/null +++ b/infra/terraform/modules/codeowners_file/versions.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +terraform { + required_providers { + github = { + source = "integrations/github" + version = "~> 5.0" + } + } +} diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index f712b40e5e0..6d1dbd7fc53 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,23 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/github" { - version = "5.6.0" + version = "5.9.1" hashes = [ - "h1:mQP/tDNaXzsJtdNXuhlPO97caTOacTClJmSp/kPEqts=", - "zh:2d9761af624d228116bd60e67f6b9cfa32647bd810066844878541e3fe80c5bf", - "zh:399ec1bd4384685dce55660d6231a024ee56ba0269da3c00898c5fc63baa9005", - "zh:56de36705ea4016a1362483d7618fd4331e559c240e2d6a5d6eadbf6ab3d52d3", - "zh:60085086d3648fef7727b291bc86de99cedbacc06617f00b72bca86b57d9cf0e", - "zh:7b9964788cbd8278222590bd68153b02c20fa4319a2e0f5bb9a0a9347f9ded1f", - "zh:87ddf58e54d339af050ae4d3aa8817065cab12c5b8ac87decff8ff1968f72364", - "zh:9bc29f8359b7f3f33d81efe3ffed5ea6e2ddfb350eee6ac8ce9438f29dc1075f", - "zh:9ebbe348bfc4b17449966ed7a2a0ac52f58a682cf4a58f7df6eb6981f89b7fac", - "zh:b8a0f434f0bd3fd602b32c942f98908346e1d640ebdea4cc9a509b0bc159de64", - "zh:c596f3a07a8420f74f9fc88d538a1066f84ca9da8605170617c5d57022c5933e", - "zh:cbe70912db71c66a5bf60c893a3087197c8cc074707f3a2b1979e68a85eeeded", - "zh:d1fb7eaf8c1ac17e109fac8d4ed402ad6b5e141a06574b09327a951fd5aa8116", - "zh:e2e6a69347c08f6109e0893af1eb65ec363e546c13f836e8d09e8dfbc369bc95", - "zh:fa7dffaf0304e5b6fc88fab7c895f9e5a84ae35e83b2d49a0688dd50c4181e6e", + "h1:S0eAD8z5oIM7pCZIuZCH3RvdjC5Z4cc6aG8XQz0QWPg=", + "zh:0a61a1e5bb556ff6f905b5df6d2f55b673cabd9a55b139d7e7957dfaef01a723", + "zh:0a9a0431ad48540dc8f2e802aafe35cdb435cd5a2b940a396f7a51555da75aa1", + "zh:1274b93e369d696cfc9c3ffee5093a4d8e45d027c11e59fb375a0d2ee78e0b49", + "zh:16157ec4b1f62c8b8dec647c0d6d8e0b02687f5b0674530233973b329716a2c7", + "zh:2f94a7545109c435bc01298341bdec59feba47665b456e0bd488b85baed9300a", + "zh:503e04c657ea2f81ff655e6deba51260527c41728e27d2bfc3e8127c92655251", + "zh:785f0949b0a5f44d53e3e152479a374336f9ab213cb32d6ad06ac221eaa78e23", + "zh:8ec0da6eb61cb4f9862899dd48d85281fe55039649cc4a1b21a7e9f3e04d39a6", + "zh:9a984d7420b3560b8c785bba2e5fdae57aa24267aff9c99e5426546eb2b2e4e3", + "zh:b66a335a1dec93a4bff0c1abf0ce859e1e1d7a8724fab59e0a21d8dbf890dad7", + "zh:cef84a7cd751dccc221e81ddea5a775b4183251309248da81edcf80601126126", + "zh:ddda79701c2e658e1b58005a1b9d3b9fd47cfe08cf6891560e94718ae7856aca", + "zh:f0ec0ce220fc1fe9e302df44efb591a51bd399827c423662fea63f18b9f02095", + "zh:f5c4a26c129acc7dc42cfb0d3fc0bb071c180163703ed5b2a14c29a3c56270a4", ] } diff --git a/infra/terraform/test-org/github/backend.tf b/infra/terraform/test-org/github/backend.tf index 6b40fc18f91..cdb115ce99f 100644 --- a/infra/terraform/test-org/github/backend.tf +++ b/infra/terraform/test-org/github/backend.tf @@ -28,3 +28,11 @@ data "terraform_remote_state" "triggers" { prefix = "state/ci-triggers" } } + +data "terraform_remote_state" "org" { + backend = "gcs" + config = { + bucket = "cft-infra-test-tfstate" + prefix = "state/org" + } +} diff --git a/infra/terraform/test-org/github/main.tf b/infra/terraform/test-org/github/main.tf index 767d5f6ec90..3eee4eda36b 100644 --- a/infra/terraform/test-org/github/main.tf +++ b/infra/terraform/test-org/github/main.tf @@ -15,9 +15,15 @@ */ locals { - repos = keys(data.terraform_remote_state.triggers.outputs.repo_folder) + repos = keys(data.terraform_remote_state.triggers.outputs.repo_folder) + add_owners = data.terraform_remote_state.org.outputs.blueprint_owners } provider "github" { owner = "terraform-google-modules" } + +provider "github" { + alias = "gcp" + owner = "GoogleCloudPlatform" +} diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 4e72bada462..1fedb213e48 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -81,6 +81,30 @@ module "stale_yml_gcp" { content = file("${path.module}/stale.yml") } + +module "codeowners_tgm" { + source = "../../modules/codeowners_file" + org = "terraform-google-modules" + providers = { + github = github + } + # Add in terraform-example-foundation for CODEOWNERS + repo_list = setunion(local.tgm_repos, ["terraform-example-foundation"]) + owner = "cft-admins" + add_owners = local.add_owners +} + +module "codeowners_gcp" { + source = "../../modules/codeowners_file" + org = "GoogleCloudPlatform" + providers = { + github = github.gcp + } + repo_list = local.gcp_repos + owner = "blueprint-solutions" + add_owners = local.add_owners +} + # Special CI/branch protection case data "github_team" "cft-admins" { diff --git a/infra/terraform/test-org/github/renovate.json b/infra/terraform/test-org/github/renovate.json index c7c3f596022..2a109792b9e 100644 --- a/infra/terraform/test-org/github/renovate.json +++ b/infra/terraform/test-org/github/renovate.json @@ -3,7 +3,8 @@ "extends": [ "config:base", ":semanticCommits", - ":preserveSemverRanges" + ":preserveSemverRanges", + ":rebaseStalePrs" ], "stabilityDays":7, "ignorePaths": [], @@ -15,10 +16,17 @@ "stabilityDays":0 }, "packageRules": [ + { + "matchPaths": ["examples/**", "test/**", ".github/**"], + "extends": [":semanticCommitTypeAll(chore)"] + }, { "matchDepTypes": ["module"], "groupName": "TF modules", - "separateMajorMinor":false + "separateMajorMinor":false, + "major": { + "semanticCommitType": "feat!" + } }, { "matchDepTypes": ["require"], diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 25e1bcaefd4..fbb5b01496a 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -104,4 +104,20 @@ locals { "media-cdn-vod", "anthos-vm", ] + + blueprint_owners = { + # Enter on a single line per repo using GH CODEOWNERS syntax: "@user1 @user2" + cloud-foundation-training = "@marine675 @zefdelgadillo" + terraform-google-healthcare = "@yeweidaniel" + terraform-google-cloud-run = "@prabhu34 @anamer @mitchelljamie" + terraform-google-secured-data-warehouse = "@erlanderlo" + terraform-google-anthos-vm = "@zhuchenwang" + terraform-google-kubernetes-engine = "@Jberlinsky" + terraform-example-foundation = "@rjerrems" + terraform-google-log-analysis = "@ryotat7" + terraform-google-three-tier-app = "@tpryan" + terraform-google-load-balanced-vms = "@tpryan" + terraform-google-secure-cicd = "@gtsorbo" + terraform-google-media-cdn-vod = "@roddzurcher" + } } diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index 0df7bd70c3b..b162b1fef7c 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -94,3 +94,7 @@ output "prow_int_sa" { output "ci_media_cdn_vod_project_id" { value = module.ci_media_cdn_vod_project.project_id } + +output "blueprint_owners" { + value = local.blueprint_owners +} From 94841a480e5271a51aa17807b83e01a3033b4c9f Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 28 Nov 2022 16:30:59 -0800 Subject: [PATCH 0200/1371] fix:addresses multiple minor issues and adds recursive md generation (#1279) * fix:addresses multiple minor issues and adds recursive md generation - now looks at activate_apis attribute for services - adds and fixes omitonempty to a few more applicable types - adds recursive metadata generation - fixes repo names and urls - adds util functions for walking TF directories * minor ws removal * go-cty version update * address comments from 1554af3 Co-authored-by: Awais Malik --- cli/bpmetadata/cmd.go | 66 ++++++++++++++++++++-------- cli/bpmetadata/repo.go | 2 +- cli/bpmetadata/tfconfig.go | 39 +++++++++++------ cli/bpmetadata/tfconfig_test.go | 38 ++++++++++++++++ cli/bpmetadata/types.go | 12 +++--- cli/go.mod | 1 + cli/go.sum | 3 +- cli/testdata/bpmetadata/tf/iam.tf | 12 ++++++ cli/testdata/bpmetadata/tf/main.tf | 69 ++---------------------------- cli/util/file.go | 46 ++++++++++++++++++++ cli/util/file_test.go | 55 ++++++++++++++++++++++++ cli/util/git.go | 15 ++++--- cli/util/git_test.go | 16 ++++++- 13 files changed, 262 insertions(+), 112 deletions(-) create mode 100644 cli/testdata/bpmetadata/tf/iam.tf create mode 100644 cli/util/file.go create mode 100644 cli/util/file_test.go diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 2d9bd62c663..82abae7c76d 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -5,7 +5,9 @@ import ( "fmt" "os" "path" + "strings" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" "github.com/spf13/cobra" "github.com/spf13/viper" "sigs.k8s.io/kustomize/kyaml/yaml" @@ -53,8 +55,43 @@ func generate(cmd *cobra.Command, args []string) error { return fmt.Errorf("error getting working dir: %w", err) } - bpPath := path.Join(wdPath, mdFlags.path) + var allBpPaths []string + currBpPath := path.Join(wdPath, mdFlags.path) + allBpPaths = append(allBpPaths, currBpPath) + + var errors []string + // if nested, check if modules/ exists and create paths + // for submodules + if mdFlags.nested { + modulesPathforBp := path.Join(currBpPath, modulesPath) + _, err = os.Stat(modulesPathforBp) + if os.IsNotExist(err) { + Log.Info("sub-modules do not exist for this blueprint") + } else { + moduleDirs, err := util.WalkTerraformDirs(modulesPathforBp) + if err != nil { + errors = append(errors, err.Error()) + } else { + allBpPaths = append(allBpPaths, moduleDirs...) + } + } + } + + for _, path := range allBpPaths { + err = generateMetadataForBpPath(path) + if err != nil { + errors = append(errors, err.Error()) + } + } + + if len(errors) > 0 { + return fmt.Errorf(strings.Join(errors, "\n")) + } + + return nil +} +func generateMetadataForBpPath(bpPath string) error { //try to read existing metadata.yaml bpObj, err := UnmarshalMetadata(bpPath) if err != nil && !mdFlags.force { @@ -64,13 +101,13 @@ func generate(cmd *cobra.Command, args []string) error { // create metadata details bpMetaObj, err := CreateBlueprintMetadata(bpPath, bpObj) if err != nil { - return fmt.Errorf("error creating metadata for blueprint: %w", err) + return fmt.Errorf("error creating metadata for blueprint at path: %s. Details: %w", bpPath, err) } // write metadata to disk - err = WriteMetadata(bpMetaObj) + err = WriteMetadata(bpMetaObj, bpPath) if err != nil { - return fmt.Errorf("error writing metadata to disk: %w", err) + return fmt.Errorf("error writing metadata to disk for blueprint at path: %s. Details: %w", bpPath, err) } return nil @@ -154,20 +191,15 @@ func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { } versionInfo, err := getBlueprintVersion(path.Join(bpPath, tfVersionsFileName)) - if err != nil { - return nil, err - } - - i.Version = versionInfo.moduleVersion - - // actuation tool - i.ActuationTool = BlueprintActuationTool{ - Version: versionInfo.requiredTfVersion, - Flavor: "Terraform", + if err == nil { + i.Version = versionInfo.moduleVersion + i.ActuationTool = BlueprintActuationTool{ + Version: versionInfo.requiredTfVersion, + Flavor: "Terraform", + } } // create descriptions - i.Description = &BlueprintDescription{} tagline, err := getMdContent(readmeContent, -1, -1, "Tagline", true) if err == nil { i.Description.Tagline = tagline.literal @@ -240,14 +272,14 @@ func createContent(bpPath string, rootPath string, readmeContent []byte, content return content } -func WriteMetadata(obj *BlueprintMetadata) error { +func WriteMetadata(obj *BlueprintMetadata, bpPath string) error { // marshal and write the file yFile, err := yaml.Marshal(obj) if err != nil { return err } - return os.WriteFile(metadataFileName, yFile, 0644) + return os.WriteFile(path.Join(bpPath, metadataFileName), yFile, 0644) } func UnmarshalMetadata(bpPath string) (*BlueprintMetadata, error) { diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 5fc1285093b..f8c0ba36a64 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -46,7 +46,7 @@ func getRepoDetailsByPath(bpPath string) (*repoDetail, error) { return &repoDetail{ Name: repoName, Source: &repoSource{ - Path: repoUrl, + Path: repoUrl.String(), SourceType: "git", RootPath: repoPath, }, diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index 53ce7512c2e..4e84d1db8f5 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -36,6 +36,10 @@ var rootSchema = &hcl.BodySchema{ Type: "resource", LabelNames: []string{"type", "name"}, }, + { + Type: "module", + LabelNames: []string{"name"}, + }, }, } @@ -56,6 +60,14 @@ var metaBlockSchema = &hcl.BodySchema{ }, } +var moduleSchema = &hcl.BodySchema{ + Attributes: []hcl.AttributeSchema{ + { + Name: "activate_apis", + }, + }, +} + // getBlueprintVersion gets both the required core version and the // version of the blueprint func getBlueprintVersion(configPath string) (*blueprintVersion, error) { @@ -281,6 +293,10 @@ func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { for k, _ := range iamAttrs { var iamRoles []string attrValue, _ := iamAttrs[k].Expr.Value(nil) + if !attrValue.Type().IsTupleType() { + continue + } + ie := attrValue.ElementIterator() for ie.Next() { _, v := ie.Element() @@ -289,7 +305,7 @@ func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { containerRoles := BlueprintRoles{ // TODO: (b/248123274) no good way to associate granularity yet - Level: "", + Level: "Project", Roles: iamRoles, } @@ -313,29 +329,26 @@ func parseBlueprintServices(servicesFile *hcl.File) ([]string, error) { return nil, err } - // TODO: (b/250778215) instead of parsing the locals block, this should look at - // activate_apis attribute on the project module for _, block := range servicesContent.Blocks { - if block.Type != "locals" { + if block.Type != "module" { continue } - serivceAttrs, diags := block.Body.JustAttributes() + moduleContent, _, moduleContentDiags := block.Body.PartialContent(moduleSchema) + diags = append(diags, moduleContentDiags...) err := hasHclErrors(diags) if err != nil { return nil, err } - for k, _ := range serivceAttrs { - attrValue, _ := serivceAttrs[k].Expr.Value(nil) - ie := attrValue.ElementIterator() - for ie.Next() { - _, v := ie.Element() - s = append(s, v.AsString()) - } + apisAttr, defined := moduleContent.Attributes["activate_apis"] + if !defined { + return nil, fmt.Errorf("activate_apis not defined for project module") } - // because we're only interested in the top-level locals block + gohcl.DecodeExpression(apisAttr.Expr, nil, &s) + + // because we're only interested in the top-level modules block break } diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index 114ac35cf31..dd9096fea27 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -206,3 +206,41 @@ func TestTFServices(t *testing.T) { }) } } + +func TestTFRoles(t *testing.T) { + tests := []struct { + name string + configName string + wantRoles []BlueprintRoles + }{ + { + name: "simple list of roles", + configName: "iam.tf", + wantRoles: []BlueprintRoles{ + { + Level: "Project", + Roles: []string{ + "roles/cloudsql.admin", + "roles/compute.networkAdmin", + "roles/iam.serviceAccountAdmin", + "roles/resourcemanager.projectIamAdmin", + "roles/storage.admin", + "roles/workflows.admin", + "roles/cloudscheduler.admin", + "roles/iam.serviceAccountUser", + }, + }, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + p := hclparse.NewParser() + content, _ := p.ParseHCLFile(path.Join(tfTestdataPath, tt.configName)) + got, err := parseBlueprintRoles(content) + require.NoError(t, err) + assert.Equal(t, got, tt.wantRoles) + }) + } +} diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 16306393953..25466fed1c4 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -20,8 +20,8 @@ type BlueprintMetadataSpec struct { type BlueprintInfo struct { Title string Source *BlueprintRepoDetail - Version string - ActuationTool BlueprintActuationTool `json:"actuationTool" yaml:"actuationTool"` + Version string `json:",omitempty" yaml:",omitempty"` + ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` Description *BlueprintDescription `json:",omitempty" yaml:",omitempty"` Icon string `json:",omitempty" yaml:",omitempty"` } @@ -38,10 +38,10 @@ type BlueprintContent struct { // BlueprintInterface the input and output variables for the blueprint type BlueprintInterface struct { - Variables []BlueprintVariable + Variables []BlueprintVariable `json:",omitempty" yaml:",omitempty"` // VariableGroups are manually entered VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` - Outputs []BlueprintOutput + Outputs []BlueprintOutput `json:",omitempty" yaml:",omitempty"` } // BlueprintRequirements defines the roles required and the assocaited services @@ -57,8 +57,8 @@ type BlueprintRepoDetail struct { } type BlueprintActuationTool struct { - Flavor string `json:"type" yaml:"type"` - Version string + Flavor string `json:"type,omitempty" yaml:"type,omitempty"` + Version string `json:",omitempty" yaml:",omitempty"` } type BlueprintDescription struct { diff --git a/cli/go.mod b/cli/go.mod index c73410cf9e6..12ac38b7c3f 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -31,6 +31,7 @@ require ( github.com/spf13/cobra v1.4.0 github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.8.0 + github.com/zclconf/go-cty v1.10.0 // indirect golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 google.golang.org/api v0.58.0 google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 diff --git a/cli/go.sum b/cli/go.sum index df61bf4602c..9b48a02f4af 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1298,8 +1298,9 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.8.0 h1:s4AvqaeQzJIu3ndv4gVIhplVD0krU+bgrcLSVUnaWuA= github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= +github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= diff --git a/cli/testdata/bpmetadata/tf/iam.tf b/cli/testdata/bpmetadata/tf/iam.tf new file mode 100644 index 00000000000..2f88d44842d --- /dev/null +++ b/cli/testdata/bpmetadata/tf/iam.tf @@ -0,0 +1,12 @@ +locals { + int_required_roles = [ + "roles/cloudsql.admin", + "roles/compute.networkAdmin", + "roles/iam.serviceAccountAdmin", + "roles/resourcemanager.projectIamAdmin", + "roles/storage.admin", + "roles/workflows.admin", + "roles/cloudscheduler.admin", + "roles/iam.serviceAccountUser" + ] +} \ No newline at end of file diff --git a/cli/testdata/bpmetadata/tf/main.tf b/cli/testdata/bpmetadata/tf/main.tf index b6af0cad70a..4f66d58ec8d 100644 --- a/cli/testdata/bpmetadata/tf/main.tf +++ b/cli/testdata/bpmetadata/tf/main.tf @@ -14,12 +14,11 @@ * limitations under the License. */ -resource "random_id" "random_project_id_suffix" { - byte_length = 4 -} +module "gke-project-1" { + source = "terraform-google-modules/project-factory/google" + version = "~> 13.0" -locals { - apis = [ + activate_apis = [ "cloudkms.googleapis.com", "cloudresourcemanager.googleapis.com", "container.googleapis.com", @@ -43,63 +42,3 @@ locals { "gkehub.googleapis.com" ] } - -module "gke-project-1" { - source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" - - name = "ci-gke-${random_id.random_project_id_suffix.hex}" - random_project_id = true - org_id = var.org_id - folder_id = var.folder_id - billing_account = var.billing_account - # due to https://github.com/hashicorp/terraform-provider-google/issues/9505 for AP - default_service_account = "keep" - - auto_create_network = true - - activate_apis = local.apis - activate_api_identities = [ - { - api = "container.googleapis.com" - roles = ["roles/cloudkms.cryptoKeyEncrypterDecrypter", "roles/container.serviceAgent"] - }, - ] -} - -module "gke-project-2" { - source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" - - name = "ci-gke-${random_id.random_project_id_suffix.hex}" - random_project_id = true - org_id = var.org_id - folder_id = var.folder_id - billing_account = var.billing_account - # due to https://github.com/hashicorp/terraform-provider-google/issues/9505 for AP - default_service_account = "keep" - - activate_apis = local.apis - activate_api_identities = [ - { - api = "container.googleapis.com" - roles = ["roles/cloudkms.cryptoKeyEncrypterDecrypter", "roles/container.serviceAgent"] - }, - ] -} - -# apis as documented https://cloud.google.com/service-mesh/docs/scripted-install/reference#setting_up_your_project -module "gke-project-asm" { - source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" - - name = "ci-gke-asm-${random_id.random_project_id_suffix.hex}" - random_project_id = true - org_id = var.org_id - folder_id = var.folder_id - billing_account = var.billing_account - # due to https://github.com/hashicorp/terraform-provider-google/issues/9505 for AP - default_service_account = "keep" - - activate_apis = local.apis -} diff --git a/cli/util/file.go b/cli/util/file.go new file mode 100644 index 00000000000..ddcbb895d64 --- /dev/null +++ b/cli/util/file.go @@ -0,0 +1,46 @@ +package util + +import ( + "fmt" + "io/fs" + "path/filepath" + "strings" +) + +const ( + tfInternalDirPrefix = ".terraform" +) + +// skipDiscoverDirs are directories that are skipped when discovering test cases. +var skipDiscoverDirs = map[string]bool{ + "test": true, + "build": true, + ".git": true, +} + +// walkTerraformDirs traverses a provided path to return a list of directories +// that hold terraform configs while skiping internal folders that have a +// .terraform.* prefix +func WalkTerraformDirs(topLevelPath string) ([]string, error) { + var tfDirs []string + err := filepath.Walk(topLevelPath, func(path string, info fs.FileInfo, err error) error { + if err != nil { + return fmt.Errorf("failure in accessing the path %q: %v\n", path, err) + } + if info.IsDir() && (strings.HasPrefix(info.Name(), tfInternalDirPrefix) || skipDiscoverDirs[info.Name()]) { + return filepath.SkipDir + } + + if !info.IsDir() && strings.HasSuffix(info.Name(), ".tf") { + tfDirs = append(tfDirs, filepath.Dir(path)) + return filepath.SkipDir + } + + return nil + }) + if err != nil { + return nil, fmt.Errorf("error walking the path %q: %v\n", topLevelPath, err) + } + + return tfDirs, nil +} diff --git a/cli/util/file_test.go b/cli/util/file_test.go new file mode 100644 index 00000000000..592392384eb --- /dev/null +++ b/cli/util/file_test.go @@ -0,0 +1,55 @@ +package util + +import ( + "github.com/stretchr/testify/assert" + "path" + "testing" +) + +const ( + testContentPath = "../testdata/bpmetadata" +) + +func TestTFDirectories(t *testing.T) { + tests := []struct { + name string + path string + want []string + wantErr bool + }{ + { + name: "multiple directores", + path: "content/examples", + want: []string{ + "../testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform", + "../testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part2", + "../testdata/bpmetadata/content/examples/simple_regional", + "../testdata/bpmetadata/content/examples/simple_regional_beta", + }, + }, + { + name: "single directory", + path: "content/examples/simple_regional_beta", + want: []string{ + "../testdata/bpmetadata/content/examples/simple_regional_beta", + }, + }, + { + name: "single directory", + path: "content/no_directory", + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + path := path.Join(testContentPath, tt.path) + got, err := WalkTerraformDirs(path) + if (err != nil) != tt.wantErr { + t.Errorf("WalkTerraformDirs() error = %v, wantErr %v", err, tt.wantErr) + return + } + + assert.Equal(t, got, tt.want) + }) + } +} diff --git a/cli/util/git.go b/cli/util/git.go index be676ceebdd..6c27ee24060 100644 --- a/cli/util/git.go +++ b/cli/util/git.go @@ -17,32 +17,33 @@ func GetRepoName(dir string) (string, error) { return "", fmt.Errorf("error getting remote URL: %w", err) } - trimmedRemotePath := strings.TrimSuffix(remoteUrl, "/") + trimmedRemotePath := strings.TrimSuffix(remoteUrl.Path, "/") splitRemotePath := strings.Split(trimmedRemotePath, "/") // expect path to be /owner/repo if len(splitRemotePath) != 3 { return "", fmt.Errorf("expected owner/repo, got %s", trimmedRemotePath) } - return splitRemotePath[len(splitRemotePath)-1], nil + repoName := strings.TrimSuffix(splitRemotePath[len(splitRemotePath)-1], ".git") + return repoName, nil } // getRepoName finds upstream repo name from a given repo directory -func GetRepoUrl(dir string) (string, error) { +func GetRepoUrl(dir string) (*url.URL, error) { r, err := git.PlainOpen(dir) if err != nil { - return "", fmt.Errorf("error opening git dir %s: %w", dir, err) + return nil, fmt.Errorf("error opening git dir %s: %w", dir, err) } rm, err := r.Remote(defaultRemote) if err != nil { - return "", fmt.Errorf("error finding remote %s in git dir %s: %w", defaultRemote, dir, err) + return nil, fmt.Errorf("error finding remote %s in git dir %s: %w", defaultRemote, dir, err) } // validate remote URL remoteURL, err := url.Parse(rm.Config().URLs[0]) if err != nil { - return "", fmt.Errorf("error parsing remote URL: %w", err) + return nil, fmt.Errorf("error parsing remote URL: %w", err) } - return remoteURL.Path, nil + return remoteURL, nil } diff --git a/cli/util/git_test.go b/cli/util/git_test.go index be2885c2dd7..96a0ff493d0 100644 --- a/cli/util/git_test.go +++ b/cli/util/git_test.go @@ -1,6 +1,7 @@ package util import ( + "path" "testing" "github.com/go-git/go-git/v5" @@ -11,6 +12,7 @@ func TestGetRepoName(t *testing.T) { tests := []struct { name string repo string + subDir string remote string want string wantErr bool @@ -45,10 +47,17 @@ func TestGetRepoName(t *testing.T) { remote: "foo", wantErr: true, }, + { + name: "simple w/ module sub directory", + repo: "https://github.com/foo/bar", + subDir: "modules/bp1", + remote: defaultRemote, + want: "bar", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - dir := tempGitRepoWithRemote(t, tt.repo, tt.remote) + dir := tempGitRepoWithRemote(t, tt.repo, tt.remote, tt.subDir) got, err := GetRepoName(dir) if (err != nil) != tt.wantErr { t.Errorf("getRepoName() error = %v, wantErr %v", err, tt.wantErr) @@ -61,9 +70,12 @@ func TestGetRepoName(t *testing.T) { } } -func tempGitRepoWithRemote(t *testing.T, repoURL, remote string) string { +func tempGitRepoWithRemote(t *testing.T, repoURL, remote string, subDir string) string { t.Helper() dir := t.TempDir() + if subDir != "" { + dir = path.Join(dir, subDir) + } r, err := git.PlainInit(dir, true) if err != nil { t.Fatalf("Error creating git repo in tempdir: %v", err) From 78d0c8cd732e4760d5e7d75034d55f444fd99bc9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 29 Nov 2022 08:26:20 -0800 Subject: [PATCH 0201/1371] chore: add newline to CODEOWNERS (#1294) --- infra/terraform/modules/codeowners_file/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf index 9ed80b677c6..7bd0883666c 100644 --- a/infra/terraform/modules/codeowners_file/main.tf +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -33,5 +33,5 @@ resource "github_repository_file" "CODEOWNERS" { commit_author = local.commit_author commit_email = local.commit_email overwrite_on_create = true - content = trimspace("* @${var.org}/${var.owner} ${try(var.add_owners[each.value.name], "")}") + content = "${trimspace("* @${var.org}/${var.owner} ${try(var.add_owners[each.value.name], "")}")}\n" } From 4c2234fb29aafe40b52546b5dd04caed5d63226b Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Tue, 29 Nov 2022 10:26:49 -0800 Subject: [PATCH 0202/1371] chore: updates the version for cft cli for bpmetadata (#1295) Co-authored-by: Awais Malik Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index acb530d15bf..5c7a8b7a2a3 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.4.5 +VERSION=v0.5.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From c59422d75be36ed8230e0df4b61ca49a3ca350a2 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 29 Nov 2022 12:41:45 -0600 Subject: [PATCH 0203/1371] chore: update release-cli.yml (#1296) --- .github/workflows/release-cli.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index cc9fbbc3adf..bfae9133235 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -27,12 +27,12 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@v0.4.2' + uses: 'google-github-actions/auth@v1' with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@v0.3.0 + - uses: google-github-actions/setup-gcloud@v1 with: version: "366.0.0" From 4b1973ad375d442e802b0738bdac134bc07573d1 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 29 Nov 2022 12:50:11 -0600 Subject: [PATCH 0204/1371] chore: use a newer gcloud version for CLI release (#1297) --- .github/workflows/release-cli.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index bfae9133235..5ebdb9760f4 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -34,7 +34,7 @@ jobs: - uses: google-github-actions/setup-gcloud@v1 with: - version: "366.0.0" + version: "410.0.0" # used by make release which runs gcloud alpha storage - name: Install gcloud alpha commands From 7cdcc26101e77d22e45c546be592908a3bc81644 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 29 Nov 2022 15:01:18 -0600 Subject: [PATCH 0205/1371] Update Tools to 1.10.1 (#1298) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 1f7de0f42d5..ef98b6b3ce6 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -33,7 +33,7 @@ KUSTOMIZE_VERSION := 3.6.1 # Hold KPT at 1.0.0-beta.15 till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 KPT_VERSION := 1.0.0-beta.15 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 0.4.5 +CFT_CLI_VERSION := 0.5.0 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.23.14 TFLINT_VERSION := 0.41.0 @@ -47,7 +47,7 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 1e698e2fb3f181c3fe5dad46f681b268b8897174 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 1 Dec 2022 07:30:16 -0800 Subject: [PATCH 0206/1371] chore: add ansible-lint to krm tools (#1300) --- infra/build/Makefile | 2 +- infra/build/developer-tools-krm/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index ef98b6b3ce6..cdf7c166487 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -47,7 +47,7 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index cbc446d5217..f77fb9ea857 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -15,7 +15,7 @@ ARG BASE_IMAGE_VERSION FROM cft/developer-tools:$BASE_IMAGE_VERSION -RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc libc6-compat +RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc libc6-compat ansible-lint # Required to download and install golangci-lint ARG GOLANGCI_VERSION From d5a1ea7b5bca2829596ab4d104ef90f2bb96634a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 2 Dec 2022 07:58:46 -0800 Subject: [PATCH 0207/1371] chore: add py3-jsonschema to krm tools 1.10.3 (#1303) --- infra/build/Makefile | 4 ++-- infra/build/developer-tools-krm/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index cdf7c166487..037ba0afe89 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.3.5 +TERRAFORM_VERSION := 1.3.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 410.0.0 @@ -47,7 +47,7 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index f77fb9ea857..966e6aa77c2 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -15,7 +15,7 @@ ARG BASE_IMAGE_VERSION FROM cft/developer-tools:$BASE_IMAGE_VERSION -RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc libc6-compat ansible-lint +RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc libc6-compat ansible-lint py3-jsonschema # Required to download and install golangci-lint ARG GOLANGCI_VERSION From f6ffa1f60039f03a6fb77e122894641caa739fef Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 2 Dec 2022 14:38:30 -0600 Subject: [PATCH 0208/1371] feat: allow var overrides for workspace mode (#1292) --- .../examples/simple_pet_module/main.tf | 12 +++++++++++ infra/blueprint-test/pkg/tft/terraform.go | 21 ++++++++++++++++--- .../test/terraform_redeploy_test.go | 10 ++++++++- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/infra/blueprint-test/examples/simple_pet_module/main.tf b/infra/blueprint-test/examples/simple_pet_module/main.tf index 4fd41b5ab83..e1890023c1f 100644 --- a/infra/blueprint-test/examples/simple_pet_module/main.tf +++ b/infra/blueprint-test/examples/simple_pet_module/main.tf @@ -1,2 +1,14 @@ +variable "test" { + default = "" +} + resource "random_pet" "hello" { } + +output "test" { + value = var.test +} + +output "current_ws" { + value = terraform.workspace +} diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index badbce81a45..72163f1feab 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -436,20 +436,35 @@ func (b *TFBlueprintTest) Test() { } // RedeployTest deploys the test n times in separate workspaces before teardown. -func (b *TFBlueprintTest) RedeployTest(n int) { +func (b *TFBlueprintTest) RedeployTest(n int, nVars map[int]map[string]interface{}) { + if n < 2 { + b.t.Fatalf("n should be 2 or greater but got: %d", n) + } if b.ShouldSkip() { b.logger.Logf(b.t, "Skipping test due to config %s", b.Path) b.t.SkipNow() return } a := assert.New(b.t) + // capture currently set vars as default if no override + defaultVars := b.vars + overrideVars := func(i int) { + custom, exists := nVars[i] + if exists { + b.vars = custom + } else { + b.vars = defaultVars + } + } for i := 1; i <= n; i++ { ws := terraform.WorkspaceSelectOrNew(b.t, b.GetTFOptions(), fmt.Sprintf("test-%d", i)) + overrideVars(i) utils.RunStage("init", func() { b.Init(a) }) - defer func() { + defer func(i int) { + overrideVars(i) terraform.WorkspaceSelectOrNew(b.t, b.GetTFOptions(), ws) utils.RunStage("teardown", func() { b.Teardown(a) }) - }() + }(i) utils.RunStage("apply", func() { b.Apply(a) }) utils.RunStage("verify", func() { b.Verify(a) }) } diff --git a/infra/blueprint-test/test/terraform_redeploy_test.go b/infra/blueprint-test/test/terraform_redeploy_test.go index 1ce2d8543f6..39530fdd299 100644 --- a/infra/blueprint-test/test/terraform_redeploy_test.go +++ b/infra/blueprint-test/test/terraform_redeploy_test.go @@ -21,6 +21,7 @@ import ( "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/stretchr/testify/assert" ) func TestRedeploy(t *testing.T) { @@ -28,7 +29,14 @@ func TestRedeploy(t *testing.T) { tft.WithTFDir("../examples/simple_pet_module"), tft.WithSetupPath(""), ) - nt.RedeployTest(3) + nt.DefineVerify(func(a *assert.Assertions) { + if nt.GetStringOutput("current_ws") == "test-2" { + a.Equal("custom", nt.GetStringOutput("test"), "should have custom var override") + } else { + a.Equal("", nt.GetStringOutput("test"), "should have not have custom var override") + } + }) + nt.RedeployTest(3, map[int]map[string]interface{}{2: {"test": "custom"}}) expectedWorkspaces := []string{"test-1", "test-2", "test-3"} for _, ws := range expectedWorkspaces { terraform.RunTerraformCommand(t, nt.GetTFOptions(), "workspace", "select", ws) From edca28999466ec67b60a98a331555567876b4c8a Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 2 Dec 2022 18:47:33 -0600 Subject: [PATCH 0209/1371] chore(master): release blueprint-test 0.4.0 (#1289) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 660c28b366b..97ff8e05dfa 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.3.0" + "infra/blueprint-test": "0.4.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 9ace59a47ce..acb2fd4ec55 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.4.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.3.0...infra/blueprint-test/v0.4.0) (2022-12-02) + + +### Features + +* allow var overrides for workspace mode ([#1292](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1292)) ([f6ffa1f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/f6ffa1f60039f03a6fb77e122894641caa739fef)) +* enable no color ([#1293](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1293)) ([06fae23](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/06fae232e1f97b1d78df6809eff65898fddb5268)) +* new test strategy for redeploy validation ([#1286](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1286)) ([de5d509](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/de5d5090980f5f12e0321365a935e119493518ec)) + ## [0.3.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.2.0...infra/blueprint-test/v0.3.0) (2022-08-30) From f071b8e656f4623f112bf61cbdc32b7c32ed6388 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 7 Dec 2022 00:27:10 +0100 Subject: [PATCH 0210/1371] chore(deps): update actions/checkout action to v3 (#1310) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 5ebdb9760f4..49bed1198fe 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions/setup-go@v2 with: go-version: '~1.16' diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 3a224793a48..5ef233d0060 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions/setup-go@v2 with: go-version: '~1.16' diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ee372091d2c..c9490357480 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -18,7 +18,7 @@ jobs: update-tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Update Tools run: | PR_UPDATE_BODY="" From 3e0599698c6e9a0bdc838bfffdec6960272d160a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 7 Dec 2022 00:41:39 +0100 Subject: [PATCH 0211/1371] chore(deps): update actions/setup-go action to v3 (#1311) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/test-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 49bed1198fe..26713fb129d 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v3 with: go-version: '~1.16' diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 5ef233d0060..41223176272 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@v3 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v3 with: go-version: '~1.16' - run: |- From c0b26d7ba701b8f273cebacdfc9b63dcd553afdf Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 7 Dec 2022 01:43:10 +0100 Subject: [PATCH 0212/1371] chore(deps): update actions/upload-artifact action to v3 (#1312) --- .github/workflows/release-cli.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 26713fb129d..74c5025b03a 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -53,7 +53,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: bin path: cli/bin From 2f962f74333ca1a7985e4447ad9813a6d7b84764 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 9 Dec 2022 18:26:35 +0100 Subject: [PATCH 0213/1371] chore(deps): update dependency nokogiri to v1.13.10 [security] (#1323) --- infra/build/developer-tools/build/data/Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 43816230070..e67d443c353 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -468,7 +468,7 @@ GEM net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.13.9) + nokogiri (1.13.10) mini_portile2 (~> 2.8.0) racc (~> 1.4) nori (2.6.0) @@ -483,7 +483,7 @@ GEM coderay (~> 1.1) method_source (~> 1.0) public_suffix (4.0.7) - racc (1.6.0) + racc (1.6.1) rainbow (3.1.1) rake (13.0.6) recursive-open-struct (1.1.3) From 004216fbcc1e1734036844e36e5565e9495b6e91 Mon Sep 17 00:00:00 2001 From: Takashi Matsuo Date: Fri, 9 Dec 2022 15:17:06 -0800 Subject: [PATCH 0214/1371] chore: create conventional commit bot config (#1325) --- .github/conventional-commit-lint.yaml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .github/conventional-commit-lint.yaml diff --git a/.github/conventional-commit-lint.yaml b/.github/conventional-commit-lint.yaml new file mode 100644 index 00000000000..c967ffa6fe6 --- /dev/null +++ b/.github/conventional-commit-lint.yaml @@ -0,0 +1,2 @@ +enabled: true +always_check_pr_title: true From f0adea35fdc370afd7779a7b5d52810a81564ca8 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 12 Dec 2022 09:27:21 -0800 Subject: [PATCH 0215/1371] chore: add GCRANE to krm tools (#1315) --- .github/workflows/update-tooling.yml | 3 ++- infra/build/Makefile | 3 +++ infra/build/developer-tools-krm/Dockerfile | 7 ++++++ .../build/install_gcrane.sh | 24 +++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100755 infra/build/developer-tools-krm/build/install_gcrane.sh diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index c9490357480..401ae482b0e 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -13,6 +13,7 @@ env: KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" GATOR_MINOR: "3.9" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" + GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases" jobs: update-tools: @@ -24,7 +25,7 @@ jobs: PR_UPDATE_BODY="" newline=$'\n' # Skip "KPT" till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE") for tool in ${tools[@]} do diff --git a/infra/build/Makefile b/infra/build/Makefile index 037ba0afe89..e2e5c02a4af 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -46,6 +46,8 @@ KIND_VERSION := 0.17.0 # Updated by Update Tooling Workflow GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 +# Updated by Update Tooling Workflow +GCRANE_VERSION := 0.12.1 DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) @@ -94,6 +96,7 @@ build-image-developer-tools: --build-arg GATOR_VERSION=${GATOR_VERSION} \ --build-arg OPA_VERSION=${OPA_VERSION} \ --build-arg KIND_VERSION=${KIND_VERSION} \ + --build-arg GCRANE_VERSION=${GCRANE_VERSION} \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ -t ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools-krm" diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index 966e6aa77c2..d9218785d9e 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -52,6 +52,13 @@ ENV KIND_VERSION ${KIND_VERSION} ADD ./build/install_kind.sh /build/ RUN /build/install_kind.sh ${KIND_VERSION} +# Required to download and install crane +ARG GCRANE_VERSION +ENV GCRANE_VERSION ${GCRANE_VERSION} + +ADD ./build/install_gcrane.sh /build/ +RUN /build/install_gcrane.sh ${GCRANE_VERSION} + RUN rm -rf /build # Add dind helper for prow diff --git a/infra/build/developer-tools-krm/build/install_gcrane.sh b/infra/build/developer-tools-krm/build/install_gcrane.sh new file mode 100755 index 00000000000..13e56a8bd8a --- /dev/null +++ b/infra/build/developer-tools-krm/build/install_gcrane.sh @@ -0,0 +1,24 @@ +#! /bin/bash +# Copyright 2022 Google LLC +# +# 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. + +set -e +set -u + +cd /build + +GCRANE_VERSION=$1 + +go install github.com/google/go-containerregistry/cmd/gcrane@v$GCRANE_VERSION +ln -s $(go env GOPATH)/bin/gcrane /usr/local/bin/ From ab7dafa71964e8c4b9dc072314171d43af6a1501 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 12 Dec 2022 10:28:35 -0800 Subject: [PATCH 0216/1371] chore: add managed conventional-commit-lint.yaml (#1327) --- .../modules/branch_protection/main.tf | 3 ++- infra/terraform/test-org/github/protection.tf | 18 +++++++++++++++++- .../resources/conventional-commit-lint.yaml | 16 ++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 infra/terraform/test-org/github/resources/conventional-commit-lint.yaml diff --git a/infra/terraform/modules/branch_protection/main.tf b/infra/terraform/modules/branch_protection/main.tf index 3fdf7af3e9c..47859f6d46b 100644 --- a/infra/terraform/modules/branch_protection/main.tf +++ b/infra/terraform/modules/branch_protection/main.tf @@ -42,7 +42,8 @@ resource "github_branch_protection" "default" { contexts = [ "cla/google", "${each.value.name}-int-trigger (cloud-foundation-cicd)", - "${each.value.name}-lint-trigger (cloud-foundation-cicd)" + "${each.value.name}-lint-trigger (cloud-foundation-cicd)", + "conventionalcommits.org" ] } diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 1fedb213e48..aca54c76a7d 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -81,6 +81,21 @@ module "stale_yml_gcp" { content = file("${path.module}/stale.yml") } +module "conventional-commit-lint_yaml_tgm" { + source = "../../modules/repo_file" + org = "terraform-google-modules" + repo_list = setunion(local.tgm_repos, ["terraform-example-foundation"]) + filename = ".github/conventional-commit-lint.yaml" + content = file("${path.module}/resources/conventional-commit-lint.yaml") +} + +module "conventional-commit-lint_yaml_gcp" { + source = "../../modules/repo_file" + org = "GoogleCloudPlatform" + repo_list = local.gcp_repos + filename = ".github/conventional-commit-lint.yaml" + content = file("${path.module}/resources/conventional-commit-lint.yaml") +} module "codeowners_tgm" { source = "../../modules/codeowners_file" @@ -130,7 +145,8 @@ resource "github_branch_protection" "terraform-example-foundation" { "cla/google", "terraform-example-foundation-int-trigger-default (cloud-foundation-cicd)", "terraform-example-foundation-int-trigger-HubAndSpoke (cloud-foundation-cicd)", - "terraform-example-foundation-lint-trigger (cloud-foundation-cicd)" + "terraform-example-foundation-lint-trigger (cloud-foundation-cicd)", + "conventionalcommits.org" ] } diff --git a/infra/terraform/test-org/github/resources/conventional-commit-lint.yaml b/infra/terraform/test-org/github/resources/conventional-commit-lint.yaml new file mode 100644 index 00000000000..2aabd6eb428 --- /dev/null +++ b/infra/terraform/test-org/github/resources/conventional-commit-lint.yaml @@ -0,0 +1,16 @@ +# Copyright 2022 Google LLC +# +# 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. + +enabled: true +always_check_pr_title: true From fade5460ac2ab69c73c08bbe14bbdb8979d9bfef Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 12 Dec 2022 12:57:38 -0800 Subject: [PATCH 0217/1371] fix: updates approach for discovering mod/submods (#1301) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/repo.go | 45 +++++-------------- cli/bpmetadata/repo_test.go | 24 +++++----- cli/util/git.go | 3 +- cli/util/git_test.go | 12 +++-- .../build/scripts/task_helper_functions.sh | 25 +++++++++-- 6 files changed, 57 insertions(+), 54 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 5c7a8b7a2a3..64195fa22ca 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.5.0 +VERSION=v0.5.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index f8c0ba36a64..4b0d402eaa5 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -2,7 +2,6 @@ package bpmetadata import ( "fmt" - "regexp" "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" @@ -20,25 +19,20 @@ type repoSource struct { } const ( - bpUrlRegEx = "(.*terraform-google-[^/]+)/?(modules/.*)?" - nestedBpPath = "modules/" + nestedBpPath = "/modules" ) // getRepoDetailsByPath takes a local path for a blueprint and tries // to get repo details that include its name, path and type func getRepoDetailsByPath(bpPath string) (*repoDetail, error) { bpPath = strings.TrimSuffix(bpPath, "/") - repoPath, err := getBpPathForRepoName(bpPath) - if err != nil { - return nil, fmt.Errorf("error getting the repo path from the provided blueprint path: %w", err) - } - - repoName, err := util.GetRepoName(repoPath) + rootRepoPath := getBpRootPath(bpPath) + repoName, err := util.GetRepoName(rootRepoPath) if err != nil { return nil, fmt.Errorf("error getting the repo name from the provided local repo path: %w", err) } - repoUrl, err := util.GetRepoUrl(repoPath) + repoUrl, err := util.GetRepoUrl(bpPath) if err != nil { return nil, fmt.Errorf("error getting the repo URL from the provided local repo path: %w", err) } @@ -48,34 +42,19 @@ func getRepoDetailsByPath(bpPath string) (*repoDetail, error) { Source: &repoSource{ Path: repoUrl.String(), SourceType: "git", - RootPath: repoPath, + RootPath: rootRepoPath, }, }, nil } -// getBpPathForRepoName verifies if the blueprint follows blueprint -// naming conventions and returns the local path for the repo root -func getBpPathForRepoName(bpPath string) (string, error) { - r := regexp.MustCompile(bpUrlRegEx) - matches := r.FindStringSubmatch(bpPath) - - // not a valid blueprint path if there is no match - if matches == nil { - return "", fmt.Errorf("provided blueprint path is not valid: %s", bpPath) - } - - // if matched, matches should haveexactly 3 items, - // [0] for the match and [1] for root repo path and [2] - // for the nested blueprint name - if len(matches) != 3 { - return "", fmt.Errorf("provided nested blueprint path is not valid: %s. It should be under the %s directory", bpPath, nestedBpPath) - } +// getBpRootPath determines if the provided bpPath is for a submodule +// and resolves it to the root module path if necessary +func getBpRootPath(bpPath string) string { - // check if the path has a nested blueprint - // and under the right directory - if len(bpPath) != len(matches[1]) && matches[2] == "" { - return "", fmt.Errorf("provided nested blueprint path is not valid: %s. It should be under the %s directory", bpPath, nestedBpPath) + if strings.Contains(bpPath, nestedBpPath) { + i := strings.Index(bpPath, nestedBpPath) + bpPath = bpPath[0:i] } - return matches[1], nil + return bpPath } diff --git a/cli/bpmetadata/repo_test.go b/cli/bpmetadata/repo_test.go index 57f2f646719..73bdc426244 100644 --- a/cli/bpmetadata/repo_test.go +++ b/cli/bpmetadata/repo_test.go @@ -4,7 +4,7 @@ import ( "testing" ) -func TestGetBpRepoPath(t *testing.T) { +func TestGetBpRootPath(t *testing.T) { tests := []struct { name string path string @@ -30,25 +30,23 @@ func TestGetBpRepoPath(t *testing.T) { wantErr: false, }, { - name: "invalid top level", - path: "testdata/bpmetadata/erraform-google-bp01", - wantErr: true, + name: "docker workspace root", + path: "workspace", + want: "workspace", + wantErr: false, }, { - name: "invalid nested", - path: "testdata/bpmetadata/terraform-google-bp01/test/bp01-01", - wantErr: true, + name: "docker workspace submodule", + path: "workspace/modules/bp-01", + want: "workspace", + wantErr: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := getBpPathForRepoName(tt.path) - if (err != nil) != tt.wantErr { - t.Errorf("getBpPathForRepoName() error = %v, wantErr %v", err, tt.wantErr) - return - } + got := getBpRootPath(tt.path) if got != tt.want { - t.Errorf("getBpPathForRepoName() = %v, want %v", got, tt.want) + t.Errorf("getBpRootPath() = %v, want %v", got, tt.want) } }) } diff --git a/cli/util/git.go b/cli/util/git.go index 6c27ee24060..a0c063d244b 100644 --- a/cli/util/git.go +++ b/cli/util/git.go @@ -30,7 +30,8 @@ func GetRepoName(dir string) (string, error) { // getRepoName finds upstream repo name from a given repo directory func GetRepoUrl(dir string) (*url.URL, error) { - r, err := git.PlainOpen(dir) + opt := &git.PlainOpenOptions{DetectDotGit: true} + r, err := git.PlainOpenWithOptions(dir, opt) if err != nil { return nil, fmt.Errorf("error opening git dir %s: %w", dir, err) } diff --git a/cli/util/git_test.go b/cli/util/git_test.go index 96a0ff493d0..052f952fcd5 100644 --- a/cli/util/git_test.go +++ b/cli/util/git_test.go @@ -1,6 +1,7 @@ package util import ( + "os" "path" "testing" @@ -74,9 +75,13 @@ func tempGitRepoWithRemote(t *testing.T, repoURL, remote string, subDir string) t.Helper() dir := t.TempDir() if subDir != "" { - dir = path.Join(dir, subDir) + err := os.MkdirAll(path.Join(dir, subDir), 0755) + if err != nil { + t.Fatalf("Error sub dir for temp git repo: %v", err) + } } - r, err := git.PlainInit(dir, true) + + r, err := git.PlainInit(dir, false) if err != nil { t.Fatalf("Error creating git repo in tempdir: %v", err) } @@ -87,5 +92,6 @@ func tempGitRepoWithRemote(t *testing.T, repoURL, remote string, subDir string) if err != nil { t.Fatalf("Error creating remote in tempdir repo: %v", err) } - return dir + + return path.Join(dir, subDir) } diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index f8de7b6152d..54293ac2eb4 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -305,6 +305,25 @@ function generate_docs() { done < <(find_files . -name '*.tf' -print0 \ | compat_xargs -0 -n1 dirname \ | sort -u) + + generate_metadata +} + +function generate_metadata() { + if [[ "${DISABLE_BPMETADATA:-}" ]]; then + echo "DISABLE_BPMETADATA set. Skipping metadata generation." + return 0 + fi + echo "Generating blueprint metadata" + cft blueprint metadata + if [ $? -eq 0 ]; then + echo "Success!" + else + echo "Warning! Unable to generate metadata." + fi + # add headers since comments are not preserved with metadata generation + # TODO: b/260869608 + fix_headers } function check_tflint() { @@ -357,18 +376,18 @@ function check_documentation() { rsync -axh \ --exclude '*/.terraform' \ --exclude '*/.kitchen' \ - --exclude '*/.git' \ --exclude 'autogen' \ --exclude '*/.tfvars' \ /workspace "${tempdir}" >/dev/null 2>/dev/null - cd "${tempdir}" + cd "${tempdir}/workspace" generate_docs >/dev/null 2>/dev/null + # TODO: (b/261241276) preserve verion no. for release PR diff -r \ --exclude=".terraform" \ --exclude=".kitchen" \ - --exclude=".git" \ --exclude="autogen" \ --exclude="*.tfvars" \ + --exclude="*metadata.yaml" \ /workspace "${tempdir}/workspace" rc=$? if [[ "${rc}" -ne 0 ]]; then From 53df27da53f23c02753e0890ed10b794e6846a2d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 12 Dec 2022 15:38:52 -0800 Subject: [PATCH 0218/1371] chore: update toolings to conventionalcommits (#1324) --- .github/workflows/update-tooling.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 401ae482b0e..0f7ff42a035 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -85,7 +85,7 @@ jobs: git config user.name 'Cloud Foundation Bot' git config user.email 'cloud-foundation-bot@google.com' git add infra/build/Makefile - git diff-index --quiet HEAD || git commit -m "Update tools to ${{env.NEW_IMG_VERSION}}" + git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a @@ -93,7 +93,7 @@ jobs: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} committer: "Update Tooling Action " - title: "Update Tools to ${{env.NEW_IMG_VERSION}}" + title: "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" body: | Updated tools to ${{env.NEW_IMG_VERSION}} ${{env.PR_UPDATE_BODY}} From e4c69ed3714a08e1b6f70c2c5c872c1ea612fdd4 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 14 Dec 2022 11:55:27 -0600 Subject: [PATCH 0219/1371] chore: gcrane update fix (#1329) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 0f7ff42a035..875c66a0284 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -13,7 +13,7 @@ env: KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" GATOR_MINOR: "3.9" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" - GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases" + GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" jobs: update-tools: From f8484f10dc4d3cbfeda7a3c5d2d8d4f731843de8 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 14 Dec 2022 13:08:39 -0600 Subject: [PATCH 0220/1371] chore: Update Tools to 1.10.4 (#1320) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index e2e5c02a4af..2482edf2b16 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.3.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 410.0.0 +CLOUD_SDK_VERSION := 412.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -33,9 +33,9 @@ KUSTOMIZE_VERSION := 3.6.1 # Hold KPT at 1.0.0-beta.15 till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 KPT_VERSION := 1.0.0-beta.15 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 0.5.0 +CFT_CLI_VERSION := 0.5.1 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.23.14 +KUBECTL_VERSION := 1.23.15 TFLINT_VERSION := 0.41.0 ALPINE_VERSION := 3.16 @@ -49,7 +49,7 @@ OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.12.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 1edc5df7267c78a917eec0f2b5ad3f4024ca5e98 Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Thu, 15 Dec 2022 17:00:22 -0300 Subject: [PATCH 0221/1371] fix: remove terraform plan file needed for the terraform vet execution after validation (#1321) Co-authored-by: Andrew Peabody Co-authored-by: Bharath KKB --- infra/blueprint-test/pkg/tft/terraform.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 72163f1feab..035e8adc428 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -63,7 +63,6 @@ type TFBlueprintTest struct { setupDir string // optional directory containing applied TF configs to import outputs as variables for the test policyLibraryPath string // optional absolute path to directory containing policy library constraints terraformVetProject string // optional a valid existing project that will be used when a plan has resources in a project that still does not exist. - planFilePath string // path to the plan file used in Teraform plan and show vars map[string]interface{} // variables to pass to Terraform as flags logger *logger.Logger // custom logger t testing.TB // TestingT or TestingB @@ -188,10 +187,6 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { tft.tfDir = tfdir } - //set planFilePath - if tft.shouldRunTerraformVet() { - tft.planFilePath = filepath.Join(os.TempDir(), "plan.tfplan") - } // discover test config var err error tft.BlueprintTestConfig, err = discovery.GetTestConfig(path.Join(tft.tfDir, discovery.DefaultTestConfigFilename)) @@ -239,7 +234,6 @@ func (b *TFBlueprintTest) GetTFOptions() *terraform.Options { Logger: b.logger, BackendConfig: b.backendConfig, MigrateState: b.migrateState, - PlanFilePath: b.planFilePath, RetryableTerraformErrors: b.retryableTerraformErrors, NoColor: true, }) @@ -383,10 +377,13 @@ func (b *TFBlueprintTest) DefaultInit(assert *assert.Assertions) { // Vet runs TF plan, TF show, and gcloud terraform vet on a blueprint. func (b *TFBlueprintTest) Vet(assert *assert.Assertions) { - terraform.Plan(b.t, b.GetTFOptions()) - jsonPlan := terraform.Show(b.t, b.GetTFOptions()) + localOptions := b.GetTFOptions() + localOptions.PlanFilePath = filepath.Join(os.TempDir(), "plan.tfplan") + terraform.Plan(b.t, localOptions) + jsonPlan := terraform.Show(b.t, localOptions) filepath, err := utils.WriteTmpFileWithExtension(jsonPlan, "json") defer os.Remove(filepath) + defer os.Remove(localOptions.PlanFilePath) assert.NoError(err) results := gcloud.TFVet(b.t, filepath, b.policyLibraryPath, b.terraformVetProject).Array() assert.Empty(results, "Should have no Terraform Vet violations") From 6ae2e27c9b5244c79b5a1cef18325454345bc41f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 15 Dec 2022 13:48:50 -0800 Subject: [PATCH 0222/1371] feat: centralize module repo configuration (#1331) --- .../terraform/modules/codeowners_file/main.tf | 7 +- .../modules/codeowners_file/variables.tf | 11 +- infra/terraform/modules/repositories/main.tf | 35 ++ .../terraform/modules/repositories/outputs.tf | 19 + .../modules/repositories/variables.tf | 24 + .../modules/repositories/versions.tf | 24 + .../test-org/ci-triggers/.terraform.lock.hcl | 47 +- .../test-org/github/.terraform.lock.hcl | 53 +- infra/terraform/test-org/github/backend.tf | 8 - infra/terraform/test-org/github/labels.tf | 10 +- infra/terraform/test-org/github/main.tf | 3 +- infra/terraform/test-org/github/outputs.tf | 6 +- infra/terraform/test-org/github/protection.tf | 61 ++- .../github/{ => resources}/renovate.json | 0 .../test-org/github/{ => resources}/stale.yml | 0 infra/terraform/test-org/org/folders.tf | 2 +- infra/terraform/test-org/org/locals.tf | 485 ++++++++++++++---- infra/terraform/test-org/org/outputs.tf | 4 +- 18 files changed, 588 insertions(+), 211 deletions(-) create mode 100644 infra/terraform/modules/repositories/main.tf create mode 100644 infra/terraform/modules/repositories/outputs.tf create mode 100644 infra/terraform/modules/repositories/variables.tf create mode 100644 infra/terraform/modules/repositories/versions.tf rename infra/terraform/test-org/github/{ => resources}/renovate.json (100%) rename infra/terraform/test-org/github/{ => resources}/stale.yml (100%) diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf index 7bd0883666c..63f5ff7b105 100644 --- a/infra/terraform/modules/codeowners_file/main.tf +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -17,11 +17,12 @@ locals { commit_author = "CFT Bot" commit_email = "cloud-foundation-bot@google.com" + owners = { for value in var.repos_map : value.name => value.owners if can(value.owners) } } data "github_repository" "repo" { - for_each = toset(var.repo_list) - name = each.value + for_each = var.repos_map + name = each.value.name } resource "github_repository_file" "CODEOWNERS" { @@ -33,5 +34,5 @@ resource "github_repository_file" "CODEOWNERS" { commit_author = local.commit_author commit_email = local.commit_email overwrite_on_create = true - content = "${trimspace("* @${var.org}/${var.owner} ${try(var.add_owners[each.value.name], "")}")}\n" + content = "${trimspace("* @${var.org}/${var.owner} ${try(local.owners[each.value.name], "")}")}\n" } diff --git a/infra/terraform/modules/codeowners_file/variables.tf b/infra/terraform/modules/codeowners_file/variables.tf index 8674121b7cb..5906f4b33cb 100644 --- a/infra/terraform/modules/codeowners_file/variables.tf +++ b/infra/terraform/modules/codeowners_file/variables.tf @@ -23,18 +23,13 @@ variable "org" { type = string } -variable "repo_list" { - description = "List of Repos" - type = list(any) -} - variable "owner" { description = "Primary owner" type = string nullable = false } -variable "add_owners" { - description = "Map of addtional owners as repo:owners" - type = map(string) +variable "repos_map" { + description = "Map of Repos" + type = map(map(string)) } diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf new file mode 100644 index 00000000000..56c00054a54 --- /dev/null +++ b/infra/terraform/modules/repositories/main.tf @@ -0,0 +1,35 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +resource "github_repository" "repo" { + for_each = var.repos_map + name = each.value.name + description = try(each.value.description, null) + homepage_url = try(each.value.url, "https://registry.terraform.io/modules/${each.value.org}/${trimprefix(each.value.name, "terraform-google-")}/google") + topics = setunion(["cft-terraform"], try(split(",", trimspace(each.value.topics)), [])) + + allow_merge_commit = false + allow_rebase_merge = false + allow_update_branch = true + delete_branch_on_merge = true + has_issues = true + has_projects = false + has_wiki = false + vulnerability_alerts = true + has_downloads = false + squash_merge_commit_message = "BLANK" + squash_merge_commit_title = "PR_TITLE" +} diff --git a/infra/terraform/modules/repositories/outputs.tf b/infra/terraform/modules/repositories/outputs.tf new file mode 100644 index 00000000000..0a126e4045c --- /dev/null +++ b/infra/terraform/modules/repositories/outputs.tf @@ -0,0 +1,19 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +output "repos" { + value = [for value in github_repository.repo : value.name] +} diff --git a/infra/terraform/modules/repositories/variables.tf b/infra/terraform/modules/repositories/variables.tf new file mode 100644 index 00000000000..7f30b7adc91 --- /dev/null +++ b/infra/terraform/modules/repositories/variables.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +/****************************************** + Required variables +*******************************************/ + +variable "repos_map" { + description = "Map of Repos" + type = map(map(string)) +} diff --git a/infra/terraform/modules/repositories/versions.tf b/infra/terraform/modules/repositories/versions.tf new file mode 100644 index 00000000000..e9cd909f9f6 --- /dev/null +++ b/infra/terraform/modules/repositories/versions.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +terraform { + required_providers { + github = { + source = "integrations/github" + version = "~> 5.7" + } + } +} diff --git a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl index f545746aec8..26617b320ee 100644 --- a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl @@ -1,23 +1,42 @@ # This file is maintained automatically by "terraform init". # Manual edits may be lost in future updates. +provider "registry.terraform.io/hashicorp/google" { + version = "4.46.0" + constraints = ">= 3.53.0, < 5.0.0" + hashes = [ + "h1:HSbC3sovuqGBwzlKOAeJEeQl36SiwPkMrEshBkA7Crs=", + "zh:06667e8c975734c0fbfe9cdbc6ee6789f3114e40bb97a8a721ed87f3e5c42dfc", + "zh:0e9829e326095d142ffa394f7189528001b074249b2ec8f98567ada049e35cbf", + "zh:1feceb13f5dfd658bcd94886c495b8064096f58bccb65f8386465803ae67e821", + "zh:404a642769271a290eb600c238f33ecaeb5c6d1354694d0ee6f83030941fde00", + "zh:46923a708123777a383aec56d0e834eae9095e440511f27c8ac5d0dfaf9b937b", + "zh:5f7b32404f70444dbe9e89d4ba0f9599d76f1072da2a52ca207a14e117ba165b", + "zh:a9d3d03c5e9cf904f08906ab13ad5ad8ff3f2271565fda75cd32c6ba528a4ea3", + "zh:aaef3d327fd6c8fbe33c454103ac0bad3e2043ff6bcb6c0aaa0d5974695dc8e4", + "zh:b49ea5676065543c2c28a0f5fef28058ad8fc96894782123fb9c013cd083be98", + "zh:f432cb018a4826b7a61e39f10239ca017a74313e0755b24858f082395e38bf9a", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fe5dde2af422510ba2a1388209dc94723ee740b4282323aafa199366705387cc", + ] +} + provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.28.0" + version = "4.46.0" constraints = ">= 2.18.0, < 5.0.0" hashes = [ - "h1:OCnAHwByjG7Ck54UXweixWOKuQfheAgIbLvs3Rhttws=", - "h1:kf7kz+xRgenx1f3ROvKxV9SSqkUhXBjIvJ0rmlmOSaY=", - "zh:02049634b3dd7928628145c1993e9a6772b8229e94c0466943dd8a192c7dcf43", - "zh:113664260f56d0559c9f4c5b912dd80ee966d09ff3723fe6ae1a71fa4915fdc9", - "zh:28de139a2db9ccf280a92fa18ed41f36ea5ef4269fda4124288751eec45b6907", - "zh:303dec5be87bd935351bf991da4edff71bab9909ce410a819b3dd0849a27df8b", - "zh:579b6cf837488a0e6335c1ca0b81ce0936d2ea29c24b4fb8ba54018e81a0cabb", - "zh:77cdb315e9144739241f9ea3e55502104dece33ce0acd9694469a3a5df4e3906", - "zh:837c37d168dc557b474b5dac3b850e134779a27ee9df3f49a4427c569d0eae44", - "zh:9359bf058b95fa6b9337a3b55168517fd380e6752c383c964fb776513621aca4", - "zh:cf3cdef5ed5d4a321ffd2cac070a00ff0f8cee7bfd6a2697c494a1d06937bb67", - "zh:e4f647bd336260fc477f7ab77e48e825d49f3d4ed1391bf232b5039cfc411760", - "zh:ec3a02205594beeeedd090dd6c831a988fc0ff58fb353cc78dc6395eedf19979", + "h1:GQgp57Wrf3oDVB/nDtBd/VL3/uMTFN5bLPhPLLADGB4=", + "zh:08aa990fd9944061194138ad4f136f5e6b45f331d110d882e4ddb566619eb9d8", + "zh:186b9c7b49ad93a2ab2d8d713429caa8b23dab8d90763c01244205c3455dd813", + "zh:221598948eab9c64e13a778c6be17dd1e9cb2e08a3217072d9759202986c3f09", + "zh:402d386ea907923bbf36568dc481becda2dd0522c5286602dcb716f364f73d91", + "zh:84d70da182503ce312148cc86e110482c88d57041223af00d2ead60fefe851ee", + "zh:92bd8e30f6334988d6e7fedff11b99c68fe0d21bfead6f1cbbfc73acb665c36d", + "zh:a0e5815460c2a1d720955a2abbd6ca6eef450da7a76c52c223203f5d03ca45d7", + "zh:c34c0124f70b86ceb4cf79b93539539286f47175e1a648e37cfb754200cc19b7", + "zh:d00769dbfd1bea46da5ac81a9e3384d0f954ed3f912859b21ed3ea2378c2cb1d", + "zh:dadd937ed05dcc3d521cd6ca04bc9681fd30acbb42265f748e69f5feb0f5b829", + "zh:e4c2d65cf138cc868ae52e3e2cf97e37fbbdbc9c510f1c669fdbcc736256e402", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 6d1dbd7fc53..dfcac9bb151 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -1,45 +1,24 @@ # This file is maintained automatically by "terraform init". # Manual edits may be lost in future updates. -provider "registry.terraform.io/hashicorp/github" { - version = "5.9.1" - hashes = [ - "h1:S0eAD8z5oIM7pCZIuZCH3RvdjC5Z4cc6aG8XQz0QWPg=", - "zh:0a61a1e5bb556ff6f905b5df6d2f55b673cabd9a55b139d7e7957dfaef01a723", - "zh:0a9a0431ad48540dc8f2e802aafe35cdb435cd5a2b940a396f7a51555da75aa1", - "zh:1274b93e369d696cfc9c3ffee5093a4d8e45d027c11e59fb375a0d2ee78e0b49", - "zh:16157ec4b1f62c8b8dec647c0d6d8e0b02687f5b0674530233973b329716a2c7", - "zh:2f94a7545109c435bc01298341bdec59feba47665b456e0bd488b85baed9300a", - "zh:503e04c657ea2f81ff655e6deba51260527c41728e27d2bfc3e8127c92655251", - "zh:785f0949b0a5f44d53e3e152479a374336f9ab213cb32d6ad06ac221eaa78e23", - "zh:8ec0da6eb61cb4f9862899dd48d85281fe55039649cc4a1b21a7e9f3e04d39a6", - "zh:9a984d7420b3560b8c785bba2e5fdae57aa24267aff9c99e5426546eb2b2e4e3", - "zh:b66a335a1dec93a4bff0c1abf0ce859e1e1d7a8724fab59e0a21d8dbf890dad7", - "zh:cef84a7cd751dccc221e81ddea5a775b4183251309248da81edcf80601126126", - "zh:ddda79701c2e658e1b58005a1b9d3b9fd47cfe08cf6891560e94718ae7856aca", - "zh:f0ec0ce220fc1fe9e302df44efb591a51bd399827c423662fea63f18b9f02095", - "zh:f5c4a26c129acc7dc42cfb0d3fc0bb071c180163703ed5b2a14c29a3c56270a4", - ] -} - provider "registry.terraform.io/integrations/github" { - version = "5.6.0" + version = "5.12.0" constraints = "~> 5.0" hashes = [ - "h1:mQP/tDNaXzsJtdNXuhlPO97caTOacTClJmSp/kPEqts=", - "zh:2d9761af624d228116bd60e67f6b9cfa32647bd810066844878541e3fe80c5bf", - "zh:399ec1bd4384685dce55660d6231a024ee56ba0269da3c00898c5fc63baa9005", - "zh:56de36705ea4016a1362483d7618fd4331e559c240e2d6a5d6eadbf6ab3d52d3", - "zh:60085086d3648fef7727b291bc86de99cedbacc06617f00b72bca86b57d9cf0e", - "zh:7b9964788cbd8278222590bd68153b02c20fa4319a2e0f5bb9a0a9347f9ded1f", - "zh:87ddf58e54d339af050ae4d3aa8817065cab12c5b8ac87decff8ff1968f72364", - "zh:9bc29f8359b7f3f33d81efe3ffed5ea6e2ddfb350eee6ac8ce9438f29dc1075f", - "zh:9ebbe348bfc4b17449966ed7a2a0ac52f58a682cf4a58f7df6eb6981f89b7fac", - "zh:b8a0f434f0bd3fd602b32c942f98908346e1d640ebdea4cc9a509b0bc159de64", - "zh:c596f3a07a8420f74f9fc88d538a1066f84ca9da8605170617c5d57022c5933e", - "zh:cbe70912db71c66a5bf60c893a3087197c8cc074707f3a2b1979e68a85eeeded", - "zh:d1fb7eaf8c1ac17e109fac8d4ed402ad6b5e141a06574b09327a951fd5aa8116", - "zh:e2e6a69347c08f6109e0893af1eb65ec363e546c13f836e8d09e8dfbc369bc95", - "zh:fa7dffaf0304e5b6fc88fab7c895f9e5a84ae35e83b2d49a0688dd50c4181e6e", + "h1:M4TrKADwjuTO8LKL7BNH3v8aS27sWEl4AqIlac20lRs=", + "zh:041b44fff2004656f474cefe75ab0df27fda5163f97d774987e3b62cf6c706a0", + "zh:0766d4cd1a43fb3f9c5f91471d26da356e1ffa222bcbc69cef7a132e0924c588", + "zh:196c40951758fad02ea95920e46bce5cf48477723c69c5bbf09c76cb9aae989f", + "zh:223f53cd5aace1b5ab6c9f5d1b785c740c39bf3b7244f86247bc28b4b964f9bc", + "zh:27041c44b793993ce48c62e1679198112011afccfbb30798cf124fd45a9700c7", + "zh:30c741f22e5fde2aad35e0fda4293da04d54fde89dbe301e702255ddcca169fa", + "zh:51c408c0ad50726d486ebdd0eb26532645678a84cc7b38ea39a25f3a8b83a42d", + "zh:622fdad082a0c00f827ccbd21f6a75db63bdc9ba2d49421c6603bc23c56127b0", + "zh:648ab2f95cadac4f9e4a1eb54fad327f603ffad1e1c22769deba3c076fa6e358", + "zh:6fd41629088abdd36d6bbdc2b56eaddcffa971a7622284d555a8c83d4b6aa210", + "zh:8a3abc6f6fadd99963ad9a593893b724ec2c98905f66fd1f627ca3aa55191dde", + "zh:a0653c831705804d98db9d352341fee04ea6c7db6fa612f886b7284ce8a67023", + "zh:a9b51b0c2e5026a4676b5ac71274eaa745ebef1de72a69667855edb8a9548347", + "zh:d7720e30f931f4069255e8d9d08332ccc2ee18b418e899fed55cd4f414f17bb6", ] } diff --git a/infra/terraform/test-org/github/backend.tf b/infra/terraform/test-org/github/backend.tf index cdb115ce99f..dff2fff2a55 100644 --- a/infra/terraform/test-org/github/backend.tf +++ b/infra/terraform/test-org/github/backend.tf @@ -21,14 +21,6 @@ terraform { } } -data "terraform_remote_state" "triggers" { - backend = "gcs" - config = { - bucket = "cft-infra-test-tfstate" - prefix = "state/ci-triggers" - } -} - data "terraform_remote_state" "org" { backend = "gcs" config = { diff --git a/infra/terraform/test-org/github/labels.tf b/infra/terraform/test-org/github/labels.tf index db4f1ad5b52..f4468134426 100644 --- a/infra/terraform/test-org/github/labels.tf +++ b/infra/terraform/test-org/github/labels.tf @@ -15,12 +15,6 @@ */ locals { - remove_repo_labels = [ - "anthos-samples" - ] - sub_repos_labels = setsubtract(toset(local.repos), local.remove_repo_labels) - sub_repos_labels_gcp = setintersection(local.sub_repos_labels, toset(data.github_repositories.repos_gcp.names)) - sub_repos_labels_tgm = setintersection(local.sub_repos_labels, toset(data.github_repositories.repos_tgm.names)) labels = [ { name : "enhancement", @@ -128,13 +122,13 @@ locals { module "repo_labels_gcp" { source = "../../modules/repo_labels" org = "GoogleCloudPlatform" - repo_list = local.sub_repos_labels_gcp + repo_list = module.repos_gcp.repos labels = local.labels } module "repo_labels_tgm" { source = "../../modules/repo_labels" org = "terraform-google-modules" - repo_list = local.sub_repos_labels_tgm + repo_list = setunion(module.repos_tgm.repos, ["terraform-docs-samples"]) labels = local.labels } diff --git a/infra/terraform/test-org/github/main.tf b/infra/terraform/test-org/github/main.tf index 3eee4eda36b..74e44220be5 100644 --- a/infra/terraform/test-org/github/main.tf +++ b/infra/terraform/test-org/github/main.tf @@ -15,8 +15,7 @@ */ locals { - repos = keys(data.terraform_remote_state.triggers.outputs.repo_folder) - add_owners = data.terraform_remote_state.org.outputs.blueprint_owners + modules = data.terraform_remote_state.org.outputs.modules } provider "github" { diff --git a/infra/terraform/test-org/github/outputs.tf b/infra/terraform/test-org/github/outputs.tf index 970b3d60bb6..9330530bc2b 100644 --- a/infra/terraform/test-org/github/outputs.tf +++ b/infra/terraform/test-org/github/outputs.tf @@ -14,14 +14,10 @@ * limitations under the License. */ -output "label_repos" { - value = local.sub_repos_labels -} - output "labels" { value = local.labels } output "protected_repos" { - value = local.filtered_repos + value = setunion(module.repos_gcp.repos, module.repos_tgm.repos) } diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index aca54c76a7d..f446c19c4f0 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -15,76 +15,78 @@ */ locals { - remove_special_repos = [ - # Exclude from CI/branch protection - "anthos-samples", - "terraform-docs-samples", - # Special CI/branch protection case - "terraform-example-foundation" - ] - filtered_repos = setsubtract(toset(local.repos), local.remove_special_repos) - gcp_repos = setintersection(local.filtered_repos, toset(data.github_repositories.repos_gcp.names)) - tgm_repos = setintersection(local.filtered_repos, toset(data.github_repositories.repos_tgm.names)) + tgm_modules_map = { for value in local.modules : value.name => value if value.org == "terraform-google-modules" } + gcp_modules_map = { for value in local.modules : value.name => value if value.org == "GoogleCloudPlatform" } } -data "github_repositories" "repos_gcp" { - query = "org:GoogleCloudPlatform archived:no" +module "repos_tgm" { + source = "../../modules/repositories" + repos_map = local.tgm_modules_map + providers = { + github = github + } } -data "github_repositories" "repos_tgm" { - query = "org:terraform-google-modules archived:no" +module "repos_gcp" { + source = "../../modules/repositories" + repos_map = local.gcp_modules_map + providers = { + github = github.gcp + } } +// terraform-example-foundation CI is a special case - below module "branch_protection_tgm" { source = "../../modules/branch_protection" org = "terraform-google-modules" - repo_list = local.tgm_repos + repo_list = setsubtract(module.repos_tgm.repos, ["terraform-example-foundation"]) admin = "cft-admins" } module "branch_protection_gcp" { source = "../../modules/branch_protection" org = "GoogleCloudPlatform" - repo_list = local.gcp_repos + repo_list = module.repos_gcp.repos admin = "blueprint-solutions" } +// terraform-example-foundation renovate is a special case - manual module "renovate_json_tgm" { source = "../../modules/repo_file" org = "terraform-google-modules" - repo_list = local.tgm_repos + repo_list = setsubtract(module.repos_tgm.repos, ["terraform-example-foundation"]) filename = ".github/renovate.json" - content = file("${path.module}/renovate.json") + content = file("${path.module}/resources/renovate.json") } module "renovate_json_gcp" { source = "../../modules/repo_file" org = "GoogleCloudPlatform" - repo_list = local.gcp_repos + repo_list = module.repos_gcp.repos filename = ".github/renovate.json" - content = file("${path.module}/renovate.json") + content = file("${path.module}/resources/renovate.json") } module "stale_yml_tgm" { source = "../../modules/repo_file" org = "terraform-google-modules" - repo_list = local.tgm_repos + repo_list = module.repos_tgm.repos filename = ".github/workflows/stale.yml" - content = file("${path.module}/stale.yml") + content = file("${path.module}/resources/stale.yml") } module "stale_yml_gcp" { source = "../../modules/repo_file" org = "GoogleCloudPlatform" - repo_list = local.gcp_repos + repo_list = module.repos_gcp.repos filename = ".github/workflows/stale.yml" - content = file("${path.module}/stale.yml") + content = file("${path.module}/resources/stale.yml") } module "conventional-commit-lint_yaml_tgm" { source = "../../modules/repo_file" org = "terraform-google-modules" - repo_list = setunion(local.tgm_repos, ["terraform-example-foundation"]) + repo_list = module.repos_tgm.repos filename = ".github/conventional-commit-lint.yaml" content = file("${path.module}/resources/conventional-commit-lint.yaml") } @@ -92,7 +94,7 @@ module "conventional-commit-lint_yaml_tgm" { module "conventional-commit-lint_yaml_gcp" { source = "../../modules/repo_file" org = "GoogleCloudPlatform" - repo_list = local.gcp_repos + repo_list = module.repos_gcp.repos filename = ".github/conventional-commit-lint.yaml" content = file("${path.module}/resources/conventional-commit-lint.yaml") } @@ -103,10 +105,8 @@ module "codeowners_tgm" { providers = { github = github } - # Add in terraform-example-foundation for CODEOWNERS - repo_list = setunion(local.tgm_repos, ["terraform-example-foundation"]) owner = "cft-admins" - add_owners = local.add_owners + repos_map = local.tgm_modules_map } module "codeowners_gcp" { @@ -115,9 +115,8 @@ module "codeowners_gcp" { providers = { github = github.gcp } - repo_list = local.gcp_repos owner = "blueprint-solutions" - add_owners = local.add_owners + repos_map = local.gcp_modules_map } # Special CI/branch protection case diff --git a/infra/terraform/test-org/github/renovate.json b/infra/terraform/test-org/github/resources/renovate.json similarity index 100% rename from infra/terraform/test-org/github/renovate.json rename to infra/terraform/test-org/github/resources/renovate.json diff --git a/infra/terraform/test-org/github/stale.yml b/infra/terraform/test-org/github/resources/stale.yml similarity index 100% rename from infra/terraform/test-org/github/stale.yml rename to infra/terraform/test-org/github/resources/stale.yml diff --git a/infra/terraform/test-org/org/folders.tf b/infra/terraform/test-org/org/folders.tf index 0c03227c120..e0833130fad 100644 --- a/infra/terraform/test-org/org/folders.tf +++ b/infra/terraform/test-org/org/folders.tf @@ -34,7 +34,7 @@ module "folders-ci" { parent = "folders/${replace(local.folders["ci-projects"], "folders/", "")}" - names = [for module in concat(local.tgm_org_modules, local.gcp_org_modules) : "ci-${module}"] + names = [for module in [for repo in local.repos : try(repo.short_name, trimprefix(repo.name, "terraform-google-"))] : "ci-${module}"] set_roles = false } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index fbb5b01496a..3462185c2d8 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -26,98 +26,399 @@ locals { "ci-shared" = module.folders-root.ids["ci-shared"] } - ci_folders = module.folders-ci.ids - ci_repos_folders = merge( - { for m in local.tgm_org_modules : m => { folder_name = "ci-${m}", folder_id = replace(module.folders-ci.ids["ci-${m}"], "folders/", ""), gh_org = "terraform-google-modules" } }, - { for m in local.gcp_org_modules : m => { folder_name = "ci-${m}", folder_id = replace(module.folders-ci.ids["ci-${m}"], "folders/", ""), gh_org = "GoogleCloudPlatform" } } - ) - tgm_org_modules = [ - "kms", - "network", - "folders", - "slo", - "sap", - "iam", - "event-function", - "kubernetes-engine", - "vpn", - "project-factory", - "pubsub", - "migrate", - "bootstrap", - "datalab", - "jenkins", - "container-vm", - "lb", - "vm", - "memorystore", - "service-accounts", - "cloud-storage", - "sql-db", - "vpc-service-controls", - "cloud-datastore", - "dataflow", - "cloud-nat", - "startup-scripts", - "scheduled-function", - "address", - "bigquery", - "bastion-host", - "org-policy", - "log-export", - "cloud-dns", - "gsuite-export", - "terraform-validator", - "lb-http", - "gcloud", - "lb-internal", - "utils", - "composer", - "github-actions-runners", - "healthcare", - "gke-gitlab", - "example-foundation", # Not module - "anthos-platform", # Not module - "cloud-operations", - "cloud-foundation-training", # Not module - "cloud-router", - "group", - "data-fusion", - "module-template", - "vault", - "docs-samples", - ] + ci_folders = module.folders-ci.ids + ci_repos_folders = { + for repo in local.repos : try(repo.short_name, trimprefix(repo.name, "terraform-google-")) => { + folder_name = "ci-${try(repo.short_name, trimprefix(repo.name, "terraform-google-"))}", + folder_id = replace(module.folders-ci.ids["ci-${try(repo.short_name, trimprefix(repo.name, "terraform-google-"))}"], "folders/", ""), + gh_org = repo.org + } + } - gcp_org_modules = [ - "example-foundation-app", # Not module - "anthos-samples", - "secure-cicd", - "secured-data-warehouse", - "cloud-run", - "network-forensics", - "blueprints", # Not module - "policy-blueprints", - "secret-manager", - "load-balanced-vms", - "three-tier-app", - "log-analysis", - "media-cdn-vod", - "anthos-vm", - ] +/* + * repos schema + * name = "string" (required for modules) + * short_name = "string" (optional for modules, if not prefixed with 'terraform-google-') + * org = "terraform-google-modules" or "GoogleCloudPlatform" (required) + * description = "string" (required) + * owners = "@user1 @user2" (optional) + * homepage_url = "string" (optional, overrides default) + * topics = "string1,string2,string3" (optional) + * module = BOOL (optional, default is true which includes GH repo configuration) + * + */ - blueprint_owners = { - # Enter on a single line per repo using GH CODEOWNERS syntax: "@user1 @user2" - cloud-foundation-training = "@marine675 @zefdelgadillo" - terraform-google-healthcare = "@yeweidaniel" - terraform-google-cloud-run = "@prabhu34 @anamer @mitchelljamie" - terraform-google-secured-data-warehouse = "@erlanderlo" - terraform-google-anthos-vm = "@zhuchenwang" - terraform-google-kubernetes-engine = "@Jberlinsky" - terraform-example-foundation = "@rjerrems" - terraform-google-log-analysis = "@ryotat7" - terraform-google-three-tier-app = "@tpryan" - terraform-google-load-balanced-vms = "@tpryan" - terraform-google-secure-cicd = "@gtsorbo" - terraform-google-media-cdn-vod = "@roddzurcher" - } + repos = [ + { + name = "cloud-foundation-training" + org = "terraform-google-modules" + description = "" + owners = "@marine675 @zefdelgadillo" + }, + { + name = "terraform-google-healthcare" + org = "terraform-google-modules" + description = "Handles opinionated Google Cloud Healthcare datasets and stores" + owners = "@yeweidaniel" + }, + { + name = "terraform-google-cloud-run" + org = "GoogleCloudPlatform" + description = "Deploys apps to Cloud Run, along with option to map custom domain" + owners = "@prabhu34 @anamer @mitchelljamie" + topics = "cft-fabric,cloudrun,google-cloud-platform,terraform-modules" + }, + { + name = "terraform-google-secured-data-warehouse" + org = "GoogleCloudPlatform" + description = "Deploys a secured BigQuery data warehouse" + owners = "@erlanderlo" + }, + { + name = "terraform-google-anthos-vm" + org = "GoogleCloudPlatform" + description = "Creates VMs on Anthos Bare Metal clusters" + owners = "@zhuchenwang" + topics = "anthos,kubernetes,terraform-module,vm" + }, + { + name = "terraform-google-kubernetes-engine" + org = "terraform-google-modules" + description = "Configures opinionated GKE clusters" + owners = "@Jberlinsky" + }, + { + name = "terraform-example-foundation" + short_name = "example-foundation" + org = "terraform-google-modules" + description = "Shows how the CFT modules can be composed to build a secure cloud foundation" + owners = "@rjerrems" + homepage_url = "https://github.com/terraform-google-modules/terraform-example-foundation" + }, + { + name = "terraform-google-log-analysis" + org = "GoogleCloudPlatform" + description = "Stores and analyzes log data" + owners = "@ryotat7" + }, + { + name = "terraform-google-three-tier-web-app" + org = "GoogleCloudPlatform" + description = "Creates a Cloud Storage bucket" + owners = "@tpryan" + }, + { + name = "terraform-google-load-balanced-vms" + org = "GoogleCloudPlatform" + description = "Creates a Managed Instance Group with a loadbalancer" + owners = "@tpryan" + }, + { + name = "terraform-google-secure-cicd" + org = "GoogleCloudPlatform" + description = "Builds a secure CI/CD pipeline on Google Cloud" + owners = "@gtsorbo" + }, + { + name = "terraform-google-media-cdn-vod" + org = "GoogleCloudPlatform" + description = "Deploys Media CDN video-on-demand" + owners = "@roddzurcher" + }, + { + name = "terraform-example-foundation-app" + short_name = "example-foundation-app" + org = "GoogleCloudPlatform" + description = "" + }, + { + name = "terraform-google-network-forensics" + org = "GoogleCloudPlatform" + description = "Deploys Zeek on Google Cloud" + }, + { + name = "terraform-google-secret-manager" + org = "GoogleCloudPlatform" + description = "Creates one or more Google Secret Manager secrets and manages basic permissions for them" + topics = "gcp,kms,pubsub,terraform-module" + }, + { + name = "terraform-google-address" + org = "terraform-google-modules" + description = "Manages Google Cloud IP addresses" + }, + { + name = "terraform-google-bastion-host" + org = "terraform-google-modules" + description = "Generates a bastion host VM compatible with OS Login and IAP Tunneling that can be used to access internal VMs" + }, + { + name = "terraform-google-bigquery" + org = "terraform-google-modules" + description = "Creates opinionated BigQuery datasets and tables" + }, + { + name = "terraform-google-bootstrap" + org = "terraform-google-modules" + description = "Bootstraps Terraform usage and related CI/CD in a new Google Cloud organization" + }, + { + name = "terraform-google-cloud-datastore" + org = "terraform-google-modules" + description = "Manages Datastore" + }, + { + name = "terraform-google-cloud-dns" + org = "terraform-google-modules" + description = "Creates and manages Cloud DNS public or private zones and their records" + topics = "cft-fabric" + }, + { + name = "terraform-google-cloud-nat" + org = "terraform-google-modules" + description = "Creates and configures Cloud NAT" + topics = "cft-fabric" + }, + { + name = "terraform-google-cloud-operations" + org = "terraform-google-modules" + description = "Manages Google Cloud's operations suite (Cloud Logging and Cloud Monitoring)" + }, + { + name = "terraform-google-cloud-router" + org = "terraform-google-modules" + description = "Manages a Cloud Router on Google Cloud" + }, + { + name = "terraform-google-cloud-storage" + org = "terraform-google-modules" + description = "Creates one or more Cloud Storage buckets and assigns basic permissions on them to arbitrary users" + topics = "cft-fabric" + }, + { + name = "terraform-google-composer" + org = "terraform-google-modules" + description = "Manages Cloud Composer v1 and v2 along with option to manage networking" + }, + { + name = "terraform-google-container-vm" + org = "terraform-google-modules" + description = "Deploys containers on Compute Engine instances" + topics = "cft-fabric" + }, + { + name = "terraform-google-data-fusion" + org = "terraform-google-modules" + description = "[ALPHA] Manages Cloud Data Fusion" + }, + { + name = "terraform-google-dataflow" + org = "terraform-google-modules" + description = "Handles opinionated Dataflow job configuration and deployments" + }, + { + name = "terraform-google-datalab" + org = "terraform-google-modules" + description = "Creates DataLab instances with support for GPU instances" + }, + { + name = "terraform-google-event-function" + org = "terraform-google-modules" + description = "Responds to logging events with a Cloud Function" + }, + { + name = "terraform-google-folders" + org = "terraform-google-modules" + description = "Creates several Google Cloud folders under the same parent" + topics = "cft-fabric" + }, + { + name = "terraform-google-gcloud" + org = "terraform-google-modules" + description = "Executes Google Cloud CLI commands within Terraform" + }, + { + name = "terraform-google-github-actions-runners" + org = "terraform-google-modules" + description = "[ALPHA] Creates self-hosted GitHub Actions Runners on Google Cloud" + }, + { + name = "terraform-google-gke-gitlab" + org = "terraform-google-modules" + description = "Installs GitLab on Kubernetes Engine" + }, + { + name = "terraform-google-group" + org = "terraform-google-modules" + description = "Manages Google Groups" + }, + { + name = "terraform-google-gsuite-export" + org = "terraform-google-modules" + description = "Creates a Compute Engine VM instance and sets up a cronjob to export GSuite Admin SDK data to Cloud Logging on a schedule" + }, + { + name = "terraform-google-iam" + org = "terraform-google-modules" + description = "Manages multiple IAM roles for resources on Google Cloud" + }, + { + name = "terraform-google-jenkins" + org = "terraform-google-modules" + description = "Creates a Compute Engine instance running Jenkins" + }, + { + name = "terraform-google-kms" + org = "terraform-google-modules" + description = "Allows managing a keyring, zero or more keys in the keyring, and IAM role bindings on individual keys" + topics = "cft-fabric" + }, + { + name = "terraform-google-lb" + org = "terraform-google-modules" + description = "Creates a regional TCP proxy load balancer for Compute Engine by using target pools and forwarding rules" + }, + { + name = "terraform-google-lb-http" + org = "terraform-google-modules" + description = "Creates a global HTTP load balancer for Compute Engine by using forwarding rules" + }, + { + name = "terraform-google-lb-internal" + org = "terraform-google-modules" + description = "Creates an internal load balancer for Compute Engine by using forwarding rules" + }, + { + name = "terraform-google-log-export" + org = "terraform-google-modules" + description = "Creates log exports at the project, folder, or organization level" + topics = "cft-fabric" + }, + { + name = "terraform-google-memorystore" + org = "terraform-google-modules" + description = "Creates a fully functional Google Memorystore (redis) instance" + }, + { + name = "terraform-google-module-template" + org = "terraform-google-modules" + description = "Provides a template for creating a Cloud Foundation Toolkit Terraform module" + }, + { + name = "terraform-google-network" + org = "terraform-google-modules" + description = "Sets up a new VPC network on Google Cloud" + topics = "cft-fabric" + }, + { + name = "terraform-google-org-policy" + org = "terraform-google-modules" + description = "Manages Google Cloud organization policies" + topics = "cft-fabric" + }, + { + name = "terraform-google-project-factory" + org = "terraform-google-modules" + description = "Creates an opinionated Google Cloud project by using Shared VPC, IAM, and Google Cloud APIs" + topics = "cft-fabric" + }, + { + name = "terraform-google-pubsub" + org = "terraform-google-modules" + description = "Creates Pub/Sub topic and subscriptions associated with the topic" + }, + { + name = "terraform-google-sap" + org = "terraform-google-modules" + description = "Deploys SAP products" + }, + { + name = "terraform-google-scheduled-function" + org = "terraform-google-modules" + description = "Sets up a scheduled job to trigger events and run functions" + }, + { + name = "terraform-google-service-accounts" + org = "terraform-google-modules" + description = "Creates one or more service accounts and grants them basic roles" + topics = "cft-fabric" + }, + { + name = "terraform-google-slo" + org = "terraform-google-modules" + description = "Creates SLOs on Google Cloud from custom Stackdriver metrics capability to export SLOs to Google Cloud services and other systems" + }, + { + name = "terraform-google-sql-db" + org = "terraform-google-modules" + description = "Creates a Cloud SQL database instance" + }, + { + name = "terraform-google-startup-scripts" + org = "terraform-google-modules" + description = "Provides a library of useful startup scripts to embed in VMs" + }, + { + name = "terraform-google-utils" + org = "terraform-google-modules" + description = "Gets the short names for a given Google Cloud region" + }, + { + name = "terraform-google-vault" + org = "terraform-google-modules" + description = "Deploys Vault on Compute Engine" + topics = "hashicorp-vault,terraform,terraform-module" + }, + { + name = "terraform-google-vm" + org = "terraform-google-modules" + description = "Provisions VMs in Google Cloud" + }, + { + name = "terraform-google-vpc-service-controls" + org = "terraform-google-modules" + description = "Handles opinionated VPC Service Controls and Access Context Manager configuration and deployments" + }, + { + name = "terraform-google-vpn" + org = "terraform-google-modules" + description = "Sets up a Cloud VPN gateway" + topics = "cft-fabric" + }, + { + short_name = "anthos-platform" + org = "terraform-google-modules" + module = false + }, + { + short_name = "anthos-samples" + org = "GoogleCloudPlatform" + module = false + }, + { + short_name = "blueprints" + org = "GoogleCloudPlatform" + module = false + }, + { + short_name = "docs-samples" + org = "terraform-google-modules" + module = false + }, + { + short_name = "migrate" + org = "terraform-google-modules" + module = false + }, + { + short_name = "policy-blueprints" + org = "GoogleCloudPlatform" + module = false + }, + { + short_name = "terraform-validator" + org = "terraform-google-modules" + module = false + } + ] } diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index b162b1fef7c..10ac8603951 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -95,6 +95,6 @@ output "ci_media_cdn_vod_project_id" { value = module.ci_media_cdn_vod_project.project_id } -output "blueprint_owners" { - value = local.blueprint_owners +output "modules" { + value = [for value in local.repos : value if try(value.module, true)] } From 956dc80ffa87b2ad9f0095172fe08953e3ddd9fb Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Thu, 15 Dec 2022 16:14:42 -0600 Subject: [PATCH 0223/1371] chore: Onboard WAAP blueprint (#1330) --- infra/terraform/test-org/org/locals.tf | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 3462185c2d8..c72c1888eb6 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -419,6 +419,12 @@ locals { short_name = "terraform-validator" org = "terraform-google-modules" module = false - } + }, + { + name = "terraform-google-waap" + org = "GoogleCloudPlatform" + description = "Deploys the WAAP solution on Google Cloud." + owners = "@gtsorbo" + }, ] } From 99042baae64ee231c2a5f5895222eb517625ab94 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 15 Dec 2022 15:45:21 -0800 Subject: [PATCH 0224/1371] fix: pin TF repositories module to GHP 5.7 (#1334) --- .../modules/repositories/versions.tf | 3 +- .../test-org/github/.terraform.lock.hcl | 34 +++++++++---------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/infra/terraform/modules/repositories/versions.tf b/infra/terraform/modules/repositories/versions.tf index e9cd909f9f6..ec596f4c0c4 100644 --- a/infra/terraform/modules/repositories/versions.tf +++ b/infra/terraform/modules/repositories/versions.tf @@ -18,7 +18,8 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.7" + # Hold at 5.7 till https://github.com/integrations/terraform-provider-github/pull/1431 + version = "~> 5.7.0" } } } diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index dfcac9bb151..5c3bcd88bcf 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,23 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "5.12.0" - constraints = "~> 5.0" + version = "5.7.0" + constraints = "~> 5.0, ~> 5.7.0" hashes = [ - "h1:M4TrKADwjuTO8LKL7BNH3v8aS27sWEl4AqIlac20lRs=", - "zh:041b44fff2004656f474cefe75ab0df27fda5163f97d774987e3b62cf6c706a0", - "zh:0766d4cd1a43fb3f9c5f91471d26da356e1ffa222bcbc69cef7a132e0924c588", - "zh:196c40951758fad02ea95920e46bce5cf48477723c69c5bbf09c76cb9aae989f", - "zh:223f53cd5aace1b5ab6c9f5d1b785c740c39bf3b7244f86247bc28b4b964f9bc", - "zh:27041c44b793993ce48c62e1679198112011afccfbb30798cf124fd45a9700c7", - "zh:30c741f22e5fde2aad35e0fda4293da04d54fde89dbe301e702255ddcca169fa", - "zh:51c408c0ad50726d486ebdd0eb26532645678a84cc7b38ea39a25f3a8b83a42d", - "zh:622fdad082a0c00f827ccbd21f6a75db63bdc9ba2d49421c6603bc23c56127b0", - "zh:648ab2f95cadac4f9e4a1eb54fad327f603ffad1e1c22769deba3c076fa6e358", - "zh:6fd41629088abdd36d6bbdc2b56eaddcffa971a7622284d555a8c83d4b6aa210", - "zh:8a3abc6f6fadd99963ad9a593893b724ec2c98905f66fd1f627ca3aa55191dde", - "zh:a0653c831705804d98db9d352341fee04ea6c7db6fa612f886b7284ce8a67023", - "zh:a9b51b0c2e5026a4676b5ac71274eaa745ebef1de72a69667855edb8a9548347", - "zh:d7720e30f931f4069255e8d9d08332ccc2ee18b418e899fed55cd4f414f17bb6", + "h1:it8faA/RfAwPrCktB+AELdhqynSEPzEmWzpgrpYmcXE=", + "zh:10dbf885c13f1ebb0cebaa81da2febcdf1cd2aa6d96506fbae46e79c066bd38c", + "zh:1911db0547a5d8bf299747854dec6ba6d11f0122d1706c772ceb0e59c8129e19", + "zh:1dc4cc6c79a7f07c81e92763eb34a85467e365803636bd88f79bc16a4bc76c7e", + "zh:2f205df9bc955d0998f4c84014b5af3c3930c7be1fa9cb08d91c884629b0508b", + "zh:3c636f0497942b00d68ac68fc7813f438a7e7d56519ce429e9f585ac7c827be9", + "zh:51de8660b062d07d799d867e9096e86295e06d04ccca5b15fe2929be63ed9d98", + "zh:530d3a00053cc82fa80a1bf976079f168c1b513c419ce4c6a20e38088de35ba5", + "zh:adcb31e2dd2a2fe4283e7f2c9ebf31f2579fc7618a009ecae717fed6d1d221c8", + "zh:caff9d1d929a63b3f7a0ee16e7b3c2585e8c0684133774909d3b42f7bfedd8c7", + "zh:cf9043b11fd5466c9e27eaeee6c986ddd6cd18cf10375f02f4dbecca49b299ed", + "zh:d7660fb1863890d2031aaa96eda16313a2606bee7563d1b0a4949eb60cb218af", + "zh:dad49e63f5b97379d74e7d1b52a928c49ed04a5180224c3d2977d037a9c918fe", + "zh:dbb39bd68da549f108fbcb76619d7a33eb161ff1bda2202d6486d4c662a6de7a", + "zh:f716229c1623243b9725121e137d1673743392eb2b48dab872f5b42614deac10", ] } From 29e980be9f3e3535f4b0b7314c9e1aea5ec2001f Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 15 Dec 2022 20:54:04 -0600 Subject: [PATCH 0225/1371] chore: update topics (#1335) --- .../test-org/github/.terraform.lock.hcl | 1 + .../test-org/org/.terraform.lock.hcl | 9 +- infra/terraform/test-org/org/locals.tf | 118 +++++++++++++----- infra/terraform/test-org/org/policy.tf | 11 +- 4 files changed, 107 insertions(+), 32 deletions(-) diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 5c3bcd88bcf..4a7eb0344f2 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -6,6 +6,7 @@ provider "registry.terraform.io/integrations/github" { constraints = "~> 5.0, ~> 5.7.0" hashes = [ "h1:it8faA/RfAwPrCktB+AELdhqynSEPzEmWzpgrpYmcXE=", + "h1:yxFoLEBm40d/38RN2JB0Aw7uapOrDnh9m8nsDTgI7UI=", "zh:10dbf885c13f1ebb0cebaa81da2febcdf1cd2aa6d96506fbae46e79c066bd38c", "zh:1911db0547a5d8bf299747854dec6ba6d11f0122d1706c772ceb0e59c8129e19", "zh:1dc4cc6c79a7f07c81e92763eb34a85467e365803636bd88f79bc16a4bc76c7e", diff --git a/infra/terraform/test-org/org/.terraform.lock.hcl b/infra/terraform/test-org/org/.terraform.lock.hcl index f28ee2bab74..0200470ff7a 100644 --- a/infra/terraform/test-org/org/.terraform.lock.hcl +++ b/infra/terraform/test-org/org/.terraform.lock.hcl @@ -3,8 +3,9 @@ provider "registry.terraform.io/hashicorp/external" { version = "2.2.2" - constraints = ">= 1.2.0, < 3.0.0" + constraints = ">= 1.2.0, >= 2.2.2, < 3.0.0" hashes = [ + "h1:VUkgcWvCliS0HO4kt7oEQhFD2gcx/59XpwMqxfCU1kE=", "h1:e7RpnZ2PbJEEPnfsg7V0FNwbfSk0/Z3FdrLsXINBmDY=", "zh:0b84ab0af2e28606e9c0c1289343949339221c3ab126616b831ddb5aaef5f5ca", "zh:10cf5c9b9524ca2e4302bf02368dc6aac29fb50aeaa6f7758cce9aa36ae87a28", @@ -25,6 +26,7 @@ provider "registry.terraform.io/hashicorp/google" { version = "4.28.0" constraints = ">= 3.19.0, >= 3.39.0, >= 3.43.0, >= 3.45.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" hashes = [ + "h1:GWIsjFFxrWk2kY+xrzfczjCCBL2m2WuI5/Kw3AF5y2Q=", "h1:jjNvhmeP9hf97J7C69ntwWEctx/1eJFK+fFZqzbosr0=", "zh:17664192fbeb733d6d6cfa17fbd1c54e6f1614f635f48adfae17557e121b63eb", "zh:2993a3ba417c576ca9c6adccb6a6e914b4dedd3f91a735fd14ab8910936d8c11", @@ -45,6 +47,7 @@ provider "registry.terraform.io/hashicorp/google-beta" { version = "4.28.0" constraints = ">= 3.19.0, >= 3.43.0, >= 3.50.0, ~> 4.11, < 5.0.0" hashes = [ + "h1:OCnAHwByjG7Ck54UXweixWOKuQfheAgIbLvs3Rhttws=", "h1:kf7kz+xRgenx1f3ROvKxV9SSqkUhXBjIvJ0rmlmOSaY=", "zh:02049634b3dd7928628145c1993e9a6772b8229e94c0466943dd8a192c7dcf43", "zh:113664260f56d0559c9f4c5b912dd80ee966d09ff3723fe6ae1a71fa4915fdc9", @@ -66,6 +69,7 @@ provider "registry.terraform.io/hashicorp/kubernetes" { constraints = "~> 2.0" hashes = [ "h1:6ZgqegUao9WcfVzYg7taxCQOQldTmMVw0HqjG5S46OY=", + "h1:iAS9NYD0DjjmKpge74+y6nRltWkF+jkEpavWOEgq4jY=", "zh:1ecb2adff52754fb4680c7cfe6143d1d8c264b00bb0c44f07f5583b1c7f978b8", "zh:1fbd155088cd5818ad5874e4d59ccf1801e4e1961ac0711442b963315f1967ab", "zh:29e927c7c8f112ee0e8ab70e71b498f2f2ae6f47df1a14e6fd0fdb6f14b57c00", @@ -86,6 +90,7 @@ provider "registry.terraform.io/hashicorp/null" { constraints = ">= 2.1.0, < 4.0.0" hashes = [ "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", + "h1:Pctug/s/2Hg5FJqjYcTM0kPyx3AoYK1MpRWO0T9V2ns=", "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", @@ -105,6 +110,7 @@ provider "registry.terraform.io/hashicorp/random" { version = "3.3.2" constraints = ">= 2.2.0, >= 2.3.1, < 4.0.0" hashes = [ + "h1:Fu0IKMy46WsO5Y6KfuH9IFkkuxZjE/gIcgtB7GWkTtc=", "h1:H5V+7iXol/EHB2+BUMzGlpIiCOdV74H8YjzCxnSAWcg=", "zh:038293aebfede983e45ee55c328e3fde82ae2e5719c9bd233c324cfacc437f9c", "zh:07eaeab03a723d83ac1cc218f3a59fceb7bbf301b38e89a26807d1c93c81cef8", @@ -124,6 +130,7 @@ provider "registry.terraform.io/hashicorp/random" { provider "registry.terraform.io/hashicorp/time" { version = "0.7.2" hashes = [ + "h1:NKy1QrNLlP5mKy5Tea6lQSRsVoyydJQKh6WvNTdBF4I=", "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index c72c1888eb6..7763b58e1e6 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -20,22 +20,39 @@ locals { cft_ci_group = "cft-ci-robots@test.infra.cft.tips" cft_dev_group = "cft-developers@dev.infra.cft.tips" gcp_admins_group = "gcp-admins@test.infra.cft.tips" + ci_project_id = "cloud-foundation-cicd" folders = { "ci-projects" = module.folders-root.ids["ci-projects"] "ci-shared" = module.folders-root.ids["ci-shared"] } - ci_folders = module.folders-ci.ids + ci_folders = module.folders-ci.ids ci_repos_folders = { for repo in local.repos : try(repo.short_name, trimprefix(repo.name, "terraform-google-")) => { folder_name = "ci-${try(repo.short_name, trimprefix(repo.name, "terraform-google-"))}", - folder_id = replace(module.folders-ci.ids["ci-${try(repo.short_name, trimprefix(repo.name, "terraform-google-"))}"], "folders/", ""), - gh_org = repo.org + folder_id = replace(module.folders-ci.ids["ci-${try(repo.short_name, trimprefix(repo.name, "terraform-google-"))}"], "folders/", ""), + gh_org = repo.org } } -/* + common_topics = { + hcls = "healthcare-life-sciences", + e2e = "end-to-end" + serverless = "serverless-computing", + compute = "compute" + containers = "containers", + db = "databases", + da = "data-analytics", + storage = "storage", + ops = "operations", + net = "networking", + security = "security-identity", + devtools = "developer-tools" + workspace = "workspace" + } + + /* * repos schema * name = "string" (required for modules) * short_name = "string" (optional for modules, if not prefixed with 'terraform-google-') @@ -43,8 +60,8 @@ locals { * description = "string" (required) * owners = "@user1 @user2" (optional) * homepage_url = "string" (optional, overrides default) - * topics = "string1,string2,string3" (optional) * module = BOOL (optional, default is true which includes GH repo configuration) + * topics = "string1,string2,string3" (one or more of local.common_topics required if module = true) * */ @@ -60,32 +77,35 @@ locals { org = "terraform-google-modules" description = "Handles opinionated Google Cloud Healthcare datasets and stores" owners = "@yeweidaniel" + topics = local.common_topics.hcls }, { name = "terraform-google-cloud-run" org = "GoogleCloudPlatform" description = "Deploys apps to Cloud Run, along with option to map custom domain" owners = "@prabhu34 @anamer @mitchelljamie" - topics = "cft-fabric,cloudrun,google-cloud-platform,terraform-modules" + topics = "cloudrun,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" }, { name = "terraform-google-secured-data-warehouse" org = "GoogleCloudPlatform" description = "Deploys a secured BigQuery data warehouse" owners = "@erlanderlo" + topics = join(",", [local.common_topics.da, local.common_topics.e2e]) }, { name = "terraform-google-anthos-vm" org = "GoogleCloudPlatform" description = "Creates VMs on Anthos Bare Metal clusters" owners = "@zhuchenwang" - topics = "anthos,kubernetes,terraform-module,vm" + topics = "anthos,kubernetes,terraform-module,vm,${local.common_topics.compute}" }, { name = "terraform-google-kubernetes-engine" org = "terraform-google-modules" description = "Configures opinionated GKE clusters" owners = "@Jberlinsky" + topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { name = "terraform-example-foundation" @@ -93,37 +113,43 @@ locals { org = "terraform-google-modules" description = "Shows how the CFT modules can be composed to build a secure cloud foundation" owners = "@rjerrems" - homepage_url = "https://github.com/terraform-google-modules/terraform-example-foundation" + homepage_url = "https://cloud.google.com/architecture/security-foundations" + topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) }, { name = "terraform-google-log-analysis" org = "GoogleCloudPlatform" description = "Stores and analyzes log data" owners = "@ryotat7" + topics = local.common_topics.da }, { name = "terraform-google-three-tier-web-app" org = "GoogleCloudPlatform" - description = "Creates a Cloud Storage bucket" + description = "Deploys a three tier web application using Cloud Run and Cloud SQL" owners = "@tpryan" + topics = join(",", [local.common_topics.serverless, local.common_topics.db]) }, { name = "terraform-google-load-balanced-vms" org = "GoogleCloudPlatform" description = "Creates a Managed Instance Group with a loadbalancer" owners = "@tpryan" + topics = local.common_topics.net }, { name = "terraform-google-secure-cicd" org = "GoogleCloudPlatform" description = "Builds a secure CI/CD pipeline on Google Cloud" owners = "@gtsorbo" + topics = join(",", [local.common_topics.security, local.common_topics.devtools, local.common_topics.e2e]) }, { name = "terraform-google-media-cdn-vod" org = "GoogleCloudPlatform" description = "Deploys Media CDN video-on-demand" owners = "@roddzurcher" + topics = local.common_topics.ops }, { name = "terraform-example-foundation-app" @@ -135,169 +161,193 @@ locals { name = "terraform-google-network-forensics" org = "GoogleCloudPlatform" description = "Deploys Zeek on Google Cloud" + topics = local.common_topics.net }, { name = "terraform-google-secret-manager" org = "GoogleCloudPlatform" description = "Creates one or more Google Secret Manager secrets and manages basic permissions for them" - topics = "gcp,kms,pubsub,terraform-module" + topics = "gcp,kms,pubsub,terraform-module,${local.common_topics.security}" }, { name = "terraform-google-address" org = "terraform-google-modules" description = "Manages Google Cloud IP addresses" + topics = local.common_topics.net }, { name = "terraform-google-bastion-host" org = "terraform-google-modules" description = "Generates a bastion host VM compatible with OS Login and IAP Tunneling that can be used to access internal VMs" + topics = join(",", [local.common_topics.security, local.common_topics.ops, local.common_topics.devtools]) }, { name = "terraform-google-bigquery" org = "terraform-google-modules" description = "Creates opinionated BigQuery datasets and tables" + topics = local.common_topics.da }, { name = "terraform-google-bootstrap" org = "terraform-google-modules" description = "Bootstraps Terraform usage and related CI/CD in a new Google Cloud organization" + topics = join(",", [local.common_topics.ops, local.common_topics.devtools]) }, { name = "terraform-google-cloud-datastore" org = "terraform-google-modules" description = "Manages Datastore" + topics = local.common_topics.db }, { name = "terraform-google-cloud-dns" org = "terraform-google-modules" description = "Creates and manages Cloud DNS public or private zones and their records" - topics = "cft-fabric" + topics = local.common_topics.net }, { name = "terraform-google-cloud-nat" org = "terraform-google-modules" description = "Creates and configures Cloud NAT" - topics = "cft-fabric" + topics = local.common_topics.net }, { name = "terraform-google-cloud-operations" org = "terraform-google-modules" description = "Manages Google Cloud's operations suite (Cloud Logging and Cloud Monitoring)" + topics = local.common_topics.ops }, { name = "terraform-google-cloud-router" org = "terraform-google-modules" description = "Manages a Cloud Router on Google Cloud" + topics = local.common_topics.net }, { name = "terraform-google-cloud-storage" org = "terraform-google-modules" description = "Creates one or more Cloud Storage buckets and assigns basic permissions on them to arbitrary users" - topics = "cft-fabric" + topics = local.common_topics.storage }, { name = "terraform-google-composer" org = "terraform-google-modules" description = "Manages Cloud Composer v1 and v2 along with option to manage networking" + topics = local.common_topics.da }, { name = "terraform-google-container-vm" org = "terraform-google-modules" description = "Deploys containers on Compute Engine instances" - topics = "cft-fabric" + topics = join(",", [local.common_topics.containers, local.common_topics.compute]) }, { name = "terraform-google-data-fusion" org = "terraform-google-modules" - description = "[ALPHA] Manages Cloud Data Fusion" + description = "Manages Cloud Data Fusion" + topics = local.common_topics.da }, { name = "terraform-google-dataflow" org = "terraform-google-modules" description = "Handles opinionated Dataflow job configuration and deployments" + topics = local.common_topics.da }, { name = "terraform-google-datalab" org = "terraform-google-modules" description = "Creates DataLab instances with support for GPU instances" + topics = local.common_topics.da }, { name = "terraform-google-event-function" org = "terraform-google-modules" description = "Responds to logging events with a Cloud Function" + topics = local.common_topics.serverless }, { name = "terraform-google-folders" org = "terraform-google-modules" description = "Creates several Google Cloud folders under the same parent" - topics = "cft-fabric" + topics = local.common_topics.devtools }, { name = "terraform-google-gcloud" org = "terraform-google-modules" description = "Executes Google Cloud CLI commands within Terraform" + topics = local.common_topics.devtools }, { name = "terraform-google-github-actions-runners" org = "terraform-google-modules" - description = "[ALPHA] Creates self-hosted GitHub Actions Runners on Google Cloud" + description = "Creates self-hosted GitHub Actions Runners on Google Cloud" + topics = local.common_topics.devtools }, { name = "terraform-google-gke-gitlab" org = "terraform-google-modules" description = "Installs GitLab on Kubernetes Engine" + topics = local.common_topics.devtools }, { name = "terraform-google-group" org = "terraform-google-modules" description = "Manages Google Groups" + topics = local.common_topics.workspace }, { name = "terraform-google-gsuite-export" org = "terraform-google-modules" description = "Creates a Compute Engine VM instance and sets up a cronjob to export GSuite Admin SDK data to Cloud Logging on a schedule" + topics = join(",", [local.common_topics.ops, local.common_topics.workspace]) }, { name = "terraform-google-iam" org = "terraform-google-modules" description = "Manages multiple IAM roles for resources on Google Cloud" + topics = local.common_topics.security }, { name = "terraform-google-jenkins" org = "terraform-google-modules" description = "Creates a Compute Engine instance running Jenkins" + topics = local.common_topics.devtools }, { name = "terraform-google-kms" org = "terraform-google-modules" description = "Allows managing a keyring, zero or more keys in the keyring, and IAM role bindings on individual keys" - topics = "cft-fabric" + topics = local.common_topics.security }, { name = "terraform-google-lb" org = "terraform-google-modules" description = "Creates a regional TCP proxy load balancer for Compute Engine by using target pools and forwarding rules" + topics = local.common_topics.net }, { name = "terraform-google-lb-http" org = "terraform-google-modules" description = "Creates a global HTTP load balancer for Compute Engine by using forwarding rules" + topics = local.common_topics.net }, { name = "terraform-google-lb-internal" org = "terraform-google-modules" description = "Creates an internal load balancer for Compute Engine by using forwarding rules" + topics = local.common_topics.net }, { name = "terraform-google-log-export" org = "terraform-google-modules" description = "Creates log exports at the project, folder, or organization level" - topics = "cft-fabric" + topics = local.common_topics.ops }, { name = "terraform-google-memorystore" org = "terraform-google-modules" description = "Creates a fully functional Google Memorystore (redis) instance" + topics = local.common_topics.db }, { name = "terraform-google-module-template" @@ -308,82 +358,91 @@ locals { name = "terraform-google-network" org = "terraform-google-modules" description = "Sets up a new VPC network on Google Cloud" - topics = "cft-fabric" + topics = local.common_topics.net }, { name = "terraform-google-org-policy" org = "terraform-google-modules" description = "Manages Google Cloud organization policies" - topics = "cft-fabric" + topics = local.common_topics.security }, { name = "terraform-google-project-factory" org = "terraform-google-modules" description = "Creates an opinionated Google Cloud project by using Shared VPC, IAM, and Google Cloud APIs" - topics = "cft-fabric" + topics = local.common_topics.ops }, { name = "terraform-google-pubsub" org = "terraform-google-modules" description = "Creates Pub/Sub topic and subscriptions associated with the topic" + topics = local.common_topics.da }, { name = "terraform-google-sap" org = "terraform-google-modules" description = "Deploys SAP products" + topics = local.common_topics.compute }, { name = "terraform-google-scheduled-function" org = "terraform-google-modules" description = "Sets up a scheduled job to trigger events and run functions" + topics = local.common_topics.serverless }, { name = "terraform-google-service-accounts" org = "terraform-google-modules" description = "Creates one or more service accounts and grants them basic roles" - topics = "cft-fabric" + topics = local.common_topics.security }, { name = "terraform-google-slo" org = "terraform-google-modules" description = "Creates SLOs on Google Cloud from custom Stackdriver metrics capability to export SLOs to Google Cloud services and other systems" + topics = local.common_topics.ops }, { name = "terraform-google-sql-db" org = "terraform-google-modules" description = "Creates a Cloud SQL database instance" + topics = local.common_topics.db }, { name = "terraform-google-startup-scripts" org = "terraform-google-modules" description = "Provides a library of useful startup scripts to embed in VMs" + topics = local.common_topics.compute }, { name = "terraform-google-utils" org = "terraform-google-modules" description = "Gets the short names for a given Google Cloud region" + topics = local.common_topics.ops }, { name = "terraform-google-vault" org = "terraform-google-modules" description = "Deploys Vault on Compute Engine" - topics = "hashicorp-vault,terraform,terraform-module" + topics = "hashicorp-vault,${local.common_topics.ops},${local.common_topics.devtools}" }, { name = "terraform-google-vm" org = "terraform-google-modules" description = "Provisions VMs in Google Cloud" + topics = local.common_topics.compute }, { name = "terraform-google-vpc-service-controls" org = "terraform-google-modules" description = "Handles opinionated VPC Service Controls and Access Context Manager configuration and deployments" + topics = local.common_topics.net }, { name = "terraform-google-vpn" org = "terraform-google-modules" description = "Sets up a Cloud VPN gateway" - topics = "cft-fabric" + topics = local.common_topics.net }, { short_name = "anthos-platform" @@ -421,10 +480,11 @@ locals { module = false }, { - name = "terraform-google-waap" - org = "GoogleCloudPlatform" - description = "Deploys the WAAP solution on Google Cloud." - owners = "@gtsorbo" + name = "terraform-google-waap" + org = "GoogleCloudPlatform" + description = "Deploys the WAAP solution on Google Cloud." + owners = "@gtsorbo" + topics = local.common_topics.ops }, ] } diff --git a/infra/terraform/test-org/org/policy.tf b/infra/terraform/test-org/org/policy.tf index 76c039f69ea..33ec5ca3eb6 100644 --- a/infra/terraform/test-org/org/policy.tf +++ b/infra/terraform/test-org/org/policy.tf @@ -14,7 +14,14 @@ * limitations under the License. */ +provider "google" { + user_project_override = true + billing_project = local.ci_project_id + alias = "override" +} + resource "google_access_context_manager_access_policy" "access_policy" { - parent = "organizations/${local.org_id}" - title = "default policy" + provider = google.override + parent = "organizations/${local.org_id}" + title = "default policy" } From 68a76cb174a3ad27fc0654bbdf9f3201f913c76e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 27 Dec 2022 19:24:23 +0100 Subject: [PATCH 0226/1371] chore(deps): update peter-evans/create-pull-request digest to ea54357 (#1306) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 875c66a0284..d28dfaca693 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -88,7 +88,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a + uses: peter-evans/create-pull-request@ea54357f43e3d1cf1125471d0814f4d02cc0d364 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 6571a7d3ec376d3e6865de1f9973832431a5099c Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 29 Dec 2022 08:47:15 -0800 Subject: [PATCH 0227/1371] chore: add lint for infra/terraform (#1336) --- infra/.gitignore | 2 +- .../lint-infra-terraform.cloudbuild.yaml | 28 +++ .../dev-org/dev-project-cleanup/versions.tf | 2 +- .../modules/repositories/versions.tf | 2 +- infra/terraform/modules/variables/main.tf | 20 -- infra/terraform/modules/variables/outputs.tf | 4 - infra/terraform/terraform_backend/phoogle.tf | 18 -- .../terraform_backend/terraform.tfstate | 103 ---------- .../terraform/terraform_backend/variables.tf | 1 - .../versions.tf | 2 +- .../terraform/test-org/ci-project/versions.tf | 2 +- .../terraform/test-org/ci-triggers/locals.tf | 2 +- .../test-org/ci-triggers/triggers.tf | 2 +- .../test-org/ci-triggers/versions.tf | 2 +- infra/terraform/test-org/github/protection.tf | 8 +- infra/terraform/test-org/github/versions.tf | 2 +- .../test-org/org-iam-policy/versions.tf | 2 +- .../test-org/org/.terraform.lock.hcl | 190 +++++++++--------- .../test-org/org/bigquery_external_data.tf | 2 +- infra/terraform/test-org/org/locals.tf | 1 - infra/terraform/test-org/org/versions.tf | 2 +- .../test-org/test-cleanup/versions.tf | 2 +- .../test-org/tf-validator/versions.tf | 2 +- 23 files changed, 138 insertions(+), 263 deletions(-) create mode 100644 infra/cloudbuild/lint-infra-terraform.cloudbuild.yaml delete mode 100644 infra/terraform/modules/variables/main.tf delete mode 100644 infra/terraform/modules/variables/outputs.tf delete mode 100644 infra/terraform/terraform_backend/phoogle.tf delete mode 100644 infra/terraform/terraform_backend/terraform.tfstate delete mode 100644 infra/terraform/terraform_backend/variables.tf diff --git a/infra/.gitignore b/infra/.gitignore index 98b0c61ac6f..ea42ba7cc1f 100644 --- a/infra/.gitignore +++ b/infra/.gitignore @@ -7,4 +7,4 @@ terraform.tfstate.backup credentials.json *.credentials.json concourse/fly -.idea/ \ No newline at end of file +.idea/ diff --git a/infra/cloudbuild/lint-infra-terraform.cloudbuild.yaml b/infra/cloudbuild/lint-infra-terraform.cloudbuild.yaml new file mode 100644 index 00000000000..e00578f1a73 --- /dev/null +++ b/infra/cloudbuild/lint-infra-terraform.cloudbuild.yaml @@ -0,0 +1,28 @@ +# Copyright 2019-2022 Google LLC +# +# 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 +# +# https://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. + +steps: +- name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + id: 'lint' + args: ['/usr/local/bin/test_lint.sh'] + env: + # negative lookahead regex isn't currently supported + - 'EXCLUDE_LINT_DIRS=\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs' + - 'EXCLUDE_HEADER_CHECK=.*' +tags: +- 'ci' +- 'lint' +substitutions: + _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1' diff --git a/infra/terraform/dev-org/dev-project-cleanup/versions.tf b/infra/terraform/dev-org/dev-project-cleanup/versions.tf index 0973484e675..14674a78014 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/versions.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { archive = { version = ">= 1.3, < 3.0" diff --git a/infra/terraform/modules/repositories/versions.tf b/infra/terraform/modules/repositories/versions.tf index ec596f4c0c4..7e3dbefe35d 100644 --- a/infra/terraform/modules/repositories/versions.tf +++ b/infra/terraform/modules/repositories/versions.tf @@ -17,7 +17,7 @@ terraform { required_providers { github = { - source = "integrations/github" + source = "integrations/github" # Hold at 5.7 till https://github.com/integrations/terraform-provider-github/pull/1431 version = "~> 5.7.0" } diff --git a/infra/terraform/modules/variables/main.tf b/infra/terraform/modules/variables/main.tf deleted file mode 100644 index aaeddcafec2..00000000000 --- a/infra/terraform/modules/variables/main.tf +++ /dev/null @@ -1,20 +0,0 @@ -variable "name_prefix" { - default = "cicd" - description = "Common prefix for naming resources such as networks and k8s clusters." -} - -variable "project_id" { - default = "cloud-foundation-cicd" - description = "ID of project where all CICD resources will be launched." -} - -variable "region" { - default = { - primary = "us-west1" - } - description = "GCP region to launch resources in. Keys should correspond to Terraform workspaces." -} - -variable "phoogle_billing_account" { - default = "01E8A0-35F760-5CF02A" -} diff --git a/infra/terraform/modules/variables/outputs.tf b/infra/terraform/modules/variables/outputs.tf deleted file mode 100644 index 98acb372f61..00000000000 --- a/infra/terraform/modules/variables/outputs.tf +++ /dev/null @@ -1,4 +0,0 @@ -output "name_prefix" { value = "${var.name_prefix}" } -output "region" { value = "${var.region}" } -output "project_id" { value = "${var.project_id}" } -output "phoogle_billing_account" { value = "${var.phoogle_billing_account}" } diff --git a/infra/terraform/terraform_backend/phoogle.tf b/infra/terraform/terraform_backend/phoogle.tf deleted file mode 100644 index 09505803697..00000000000 --- a/infra/terraform/terraform_backend/phoogle.tf +++ /dev/null @@ -1,18 +0,0 @@ -# Legacy Terraform state for deleted Phoogle projects -module "phoogle-backend" { - source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket" - version = "~> 3.2" - - name = "cloud-foundation-cicd-tfstate" - project_id = module.variables.project_id - location = "US" -} - -module "phoogle-seed" { - source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket" - version = "~> 3.2" - - name = "cloud-foundation-cicd-seed-projects-tfstate" - project_id = module.variables.project_id - location = "US" -} diff --git a/infra/terraform/terraform_backend/terraform.tfstate b/infra/terraform/terraform_backend/terraform.tfstate deleted file mode 100644 index 160143af28c..00000000000 --- a/infra/terraform/terraform_backend/terraform.tfstate +++ /dev/null @@ -1,103 +0,0 @@ -{ - "version": 4, - "terraform_version": "0.12.20", - "serial": 6, - "lineage": "39c3f0b9-0ef6-2c65-4541-f514715e1d01", - "outputs": {}, - "resources": [ - { - "module": "module.phoogle-seed", - "mode": "managed", - "type": "google_storage_bucket", - "name": "bucket", - "provider": "provider.google", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket_policy_only": true, - "cors": [], - "default_event_based_hold": false, - "encryption": [], - "force_destroy": false, - "id": "cloud-foundation-cicd-seed-projects-tfstate", - "labels": {}, - "lifecycle_rule": [], - "location": "US", - "logging": [], - "name": "cloud-foundation-cicd-seed-projects-tfstate", - "project": "cloud-foundation-cicd", - "requester_pays": false, - "retention_policy": [], - "self_link": "https://www.googleapis.com/storage/v1/b/cloud-foundation-cicd-seed-projects-tfstate", - "storage_class": "STANDARD", - "url": "gs://cloud-foundation-cicd-seed-projects-tfstate", - "versioning": [ - { - "enabled": true - } - ], - "website": [] - }, - "private": "bnVsbA==" - } - ] - }, - { - "module": "module.phoogle-backend", - "mode": "managed", - "type": "google_storage_bucket", - "name": "bucket", - "provider": "provider.google", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket_policy_only": true, - "cors": [], - "default_event_based_hold": false, - "encryption": [], - "force_destroy": false, - "id": "cloud-foundation-cicd-tfstate", - "labels": {}, - "lifecycle_rule": [], - "location": "US", - "logging": [], - "name": "cloud-foundation-cicd-tfstate", - "project": "cloud-foundation-cicd", - "requester_pays": false, - "retention_policy": [], - "self_link": "https://www.googleapis.com/storage/v1/b/cloud-foundation-cicd-tfstate", - "storage_class": "STANDARD", - "url": "gs://cloud-foundation-cicd-tfstate", - "versioning": [ - { - "enabled": true - } - ], - "website": [] - }, - "private": "bnVsbA==" - } - ] - }, - { - "module": "module.phoogle-seed", - "mode": "managed", - "type": "google_storage_bucket_iam_member", - "name": "members", - "each": "map", - "provider": "provider.google", - "instances": [] - }, - { - "module": "module.phoogle-backend", - "mode": "managed", - "type": "google_storage_bucket_iam_member", - "name": "members", - "each": "map", - "provider": "provider.google", - "instances": [] - } - ] -} diff --git a/infra/terraform/terraform_backend/variables.tf b/infra/terraform/terraform_backend/variables.tf deleted file mode 100644 index 0c0f9ce0c90..00000000000 --- a/infra/terraform/terraform_backend/variables.tf +++ /dev/null @@ -1 +0,0 @@ -module "variables" { source = "../modules/variables" } diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf b/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf index 42e3d393a23..04657c6ce3f 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { google = { version = ">= 3.38, < 5.0" diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf index 12278a5107f..1347a1cda37 100644 --- a/infra/terraform/test-org/ci-project/versions.tf +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { github = { source = "integrations/github" diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 4ee1d70785f..473b5aee0e0 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -60,5 +60,5 @@ locals { # vod test project id vod_test_project_id = data.terraform_remote_state.org.outputs.ci_media_cdn_vod_project_id # file logger opt-in - enable_file_log = { "terraform-docs-samples": true } + enable_file_log = { "terraform-docs-samples" : true } } diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 286baf16ccd..adb4433b4d3 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -51,7 +51,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { _ORG_ID = local.org_id _BILLING_IAM_TEST_ACCOUNT = each.key == "terraform-google-iam" ? local.billing_iam_test_account : null _VOD_TEST_PROJECT_ID = each.key == "terraform-google-media-cdn-vod" ? local.vod_test_project_id : null - _FILE_LOGS_BUCKET = lookup(local.enable_file_log, each.key, false) ? module.filelogs_bucket.url : null + _FILE_LOGS_BUCKET = lookup(local.enable_file_log, each.key, false) ? module.filelogs_bucket.url : null }, # add sfb substitutions contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} diff --git a/infra/terraform/test-org/ci-triggers/versions.tf b/infra/terraform/test-org/ci-triggers/versions.tf index 13a58aa139d..af1ed920f0c 100644 --- a/infra/terraform/test-org/ci-triggers/versions.tf +++ b/infra/terraform/test-org/ci-triggers/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { google-beta = ">= 2.18, < 5.0" } diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index f446c19c4f0..8259f58004e 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -15,8 +15,8 @@ */ locals { - tgm_modules_map = { for value in local.modules : value.name => value if value.org == "terraform-google-modules" } - gcp_modules_map = { for value in local.modules : value.name => value if value.org == "GoogleCloudPlatform" } + tgm_modules_map = { for value in local.modules : value.name => value if value.org == "terraform-google-modules" } + gcp_modules_map = { for value in local.modules : value.name => value if value.org == "GoogleCloudPlatform" } } module "repos_tgm" { @@ -105,7 +105,7 @@ module "codeowners_tgm" { providers = { github = github } - owner = "cft-admins" + owner = "cft-admins" repos_map = local.tgm_modules_map } @@ -115,7 +115,7 @@ module "codeowners_gcp" { providers = { github = github.gcp } - owner = "blueprint-solutions" + owner = "blueprint-solutions" repos_map = local.gcp_modules_map } diff --git a/infra/terraform/test-org/github/versions.tf b/infra/terraform/test-org/github/versions.tf index 3f00bc0a300..f09b213c7a9 100644 --- a/infra/terraform/test-org/github/versions.tf +++ b/infra/terraform/test-org/github/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { github = { source = "integrations/github" diff --git a/infra/terraform/test-org/org-iam-policy/versions.tf b/infra/terraform/test-org/org-iam-policy/versions.tf index 9260b4bc9b5..8082d07b803 100644 --- a/infra/terraform/test-org/org-iam-policy/versions.tf +++ b/infra/terraform/test-org/org-iam-policy/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { google = { version = ">= 3.39, < 5.0" diff --git a/infra/terraform/test-org/org/.terraform.lock.hcl b/infra/terraform/test-org/org/.terraform.lock.hcl index 0200470ff7a..10feafb3f0c 100644 --- a/infra/terraform/test-org/org/.terraform.lock.hcl +++ b/infra/terraform/test-org/org/.terraform.lock.hcl @@ -2,146 +2,140 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/external" { - version = "2.2.2" + version = "2.2.3" constraints = ">= 1.2.0, >= 2.2.2, < 3.0.0" hashes = [ - "h1:VUkgcWvCliS0HO4kt7oEQhFD2gcx/59XpwMqxfCU1kE=", - "h1:e7RpnZ2PbJEEPnfsg7V0FNwbfSk0/Z3FdrLsXINBmDY=", - "zh:0b84ab0af2e28606e9c0c1289343949339221c3ab126616b831ddb5aaef5f5ca", - "zh:10cf5c9b9524ca2e4302bf02368dc6aac29fb50aeaa6f7758cce9aa36ae87a28", - "zh:56a016ee871c8501acb3f2ee3b51592ad7c3871a1757b098838349b17762ba6b", - "zh:719d6ef39c50e4cffc67aa67d74d195adaf42afcf62beab132dafdb500347d39", + "h1:uvOYRWcVIqOZSl8YjjaB18yZFz1AWIt2CnK7O45rckg=", + "zh:184ecd339d764de845db0e5b8a9c87893dcd0c9d822167f73658f89d80ec31c9", + "zh:2661eaca31d17d6bbb18a8f673bbfe3fe1b9b7326e60d0ceb302017003274e3c", + "zh:2c0a180f6d1fc2ba6e03f7dfc5f73b617e45408681f75bca75aa82f3796df0e4", + "zh:4b92ae44c6baef4c4952c47be00541055cb5280dd3bc8031dba5a1b2ee982387", + "zh:5641694d5daf3893d7ea90be03b6fa575211a08814ffe70998d5adb8b59cdc0a", + "zh:5bd55a2be8a1c20d732ac9c604b839e1cadc8c49006315dffa4d709b6874df32", + "zh:6e0ef5d11e1597202424b7d69b9da7b881494c9b13a3d4026fc47012dc651c79", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:7fbfc4d37435ac2f717b0316f872f558f608596b389b895fcb549f118462d327", - "zh:8ac71408204db606ce63fe8f9aeaf1ddc7751d57d586ec421e62d440c402e955", - "zh:a4cacdb06f114454b6ed0033add28006afa3f65a0ea7a43befe45fc82e6809fb", - "zh:bb5ce3132b52ae32b6cc005bc9f7627b95259b9ffe556de4dad60d47d47f21f0", - "zh:bb60d2976f125ffd232a7ccb4b3f81e7109578b23c9c6179f13a11d125dca82a", - "zh:f9540ecd2e056d6e71b9ea5f5a5cf8f63dd5c25394b9db831083a9d4ea99b372", - "zh:ffd998b55b8a64d4335a090b6956b4bf8855b290f7554dd38db3302de9c41809", + "zh:9e19f89fa25004d3b926a8d15ea630b4bde62f1fa4ed5e11a3d27aabddb77353", + "zh:b763efdd69fd097616b4a4c89cf333b4cee9699ac6432d73d2756f8335d1213f", + "zh:e3b561efdee510b2b445f76a52a902c52bee8e13095e7f4bed7c80f10f8d294a", + "zh:fe660bb8781ee043a093b9a20e53069974475dcaa5791a1f45fd03c61a26478a", ] } provider "registry.terraform.io/hashicorp/google" { - version = "4.28.0" + version = "4.46.0" constraints = ">= 3.19.0, >= 3.39.0, >= 3.43.0, >= 3.45.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" hashes = [ - "h1:GWIsjFFxrWk2kY+xrzfczjCCBL2m2WuI5/Kw3AF5y2Q=", - "h1:jjNvhmeP9hf97J7C69ntwWEctx/1eJFK+fFZqzbosr0=", - "zh:17664192fbeb733d6d6cfa17fbd1c54e6f1614f635f48adfae17557e121b63eb", - "zh:2993a3ba417c576ca9c6adccb6a6e914b4dedd3f91a735fd14ab8910936d8c11", - "zh:452323359fd64dc0fbf96da8c1df1df57cacef72cf2615631662bdec1d73d94e", - "zh:492c1d1bfbd9bef2a30fab0096ae642ceeeee81499cf5aa9f4505a884b0855a3", - "zh:611875b0246bdbd8815f8e81e744e31466559fec3b4566c9d2f3d1fd54c20292", - "zh:63c5084e1ac50165da1feebf2f51af3c8a7b61f817861418850b2b59b010b604", - "zh:6efb784223405839aa22fc6e40e37e08dd7ba37310e327dea1731299e5c67104", - "zh:ac51b5555bfdee282885475831bdc336f42294687e887f91cd339f15a4f69bc1", - "zh:c98e971f99f43aea9e0363cdd478e3b19f79b4553357a089bb10ba7ab897a932", - "zh:e9c29205674657f7b31f352a680a17262a797150bcbe76b26939d5cb39d19199", + "h1:HSbC3sovuqGBwzlKOAeJEeQl36SiwPkMrEshBkA7Crs=", + "zh:06667e8c975734c0fbfe9cdbc6ee6789f3114e40bb97a8a721ed87f3e5c42dfc", + "zh:0e9829e326095d142ffa394f7189528001b074249b2ec8f98567ada049e35cbf", + "zh:1feceb13f5dfd658bcd94886c495b8064096f58bccb65f8386465803ae67e821", + "zh:404a642769271a290eb600c238f33ecaeb5c6d1354694d0ee6f83030941fde00", + "zh:46923a708123777a383aec56d0e834eae9095e440511f27c8ac5d0dfaf9b937b", + "zh:5f7b32404f70444dbe9e89d4ba0f9599d76f1072da2a52ca207a14e117ba165b", + "zh:a9d3d03c5e9cf904f08906ab13ad5ad8ff3f2271565fda75cd32c6ba528a4ea3", + "zh:aaef3d327fd6c8fbe33c454103ac0bad3e2043ff6bcb6c0aaa0d5974695dc8e4", + "zh:b49ea5676065543c2c28a0f5fef28058ad8fc96894782123fb9c013cd083be98", + "zh:f432cb018a4826b7a61e39f10239ca017a74313e0755b24858f082395e38bf9a", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f968998e7690cd508c1f7847d7fa3ba2ae448d70e94414ada85c1cee81b3bcd9", + "zh:fe5dde2af422510ba2a1388209dc94723ee740b4282323aafa199366705387cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.28.0" + version = "4.46.0" constraints = ">= 3.19.0, >= 3.43.0, >= 3.50.0, ~> 4.11, < 5.0.0" hashes = [ - "h1:OCnAHwByjG7Ck54UXweixWOKuQfheAgIbLvs3Rhttws=", - "h1:kf7kz+xRgenx1f3ROvKxV9SSqkUhXBjIvJ0rmlmOSaY=", - "zh:02049634b3dd7928628145c1993e9a6772b8229e94c0466943dd8a192c7dcf43", - "zh:113664260f56d0559c9f4c5b912dd80ee966d09ff3723fe6ae1a71fa4915fdc9", - "zh:28de139a2db9ccf280a92fa18ed41f36ea5ef4269fda4124288751eec45b6907", - "zh:303dec5be87bd935351bf991da4edff71bab9909ce410a819b3dd0849a27df8b", - "zh:579b6cf837488a0e6335c1ca0b81ce0936d2ea29c24b4fb8ba54018e81a0cabb", - "zh:77cdb315e9144739241f9ea3e55502104dece33ce0acd9694469a3a5df4e3906", - "zh:837c37d168dc557b474b5dac3b850e134779a27ee9df3f49a4427c569d0eae44", - "zh:9359bf058b95fa6b9337a3b55168517fd380e6752c383c964fb776513621aca4", - "zh:cf3cdef5ed5d4a321ffd2cac070a00ff0f8cee7bfd6a2697c494a1d06937bb67", - "zh:e4f647bd336260fc477f7ab77e48e825d49f3d4ed1391bf232b5039cfc411760", - "zh:ec3a02205594beeeedd090dd6c831a988fc0ff58fb353cc78dc6395eedf19979", + "h1:GQgp57Wrf3oDVB/nDtBd/VL3/uMTFN5bLPhPLLADGB4=", + "zh:08aa990fd9944061194138ad4f136f5e6b45f331d110d882e4ddb566619eb9d8", + "zh:186b9c7b49ad93a2ab2d8d713429caa8b23dab8d90763c01244205c3455dd813", + "zh:221598948eab9c64e13a778c6be17dd1e9cb2e08a3217072d9759202986c3f09", + "zh:402d386ea907923bbf36568dc481becda2dd0522c5286602dcb716f364f73d91", + "zh:84d70da182503ce312148cc86e110482c88d57041223af00d2ead60fefe851ee", + "zh:92bd8e30f6334988d6e7fedff11b99c68fe0d21bfead6f1cbbfc73acb665c36d", + "zh:a0e5815460c2a1d720955a2abbd6ca6eef450da7a76c52c223203f5d03ca45d7", + "zh:c34c0124f70b86ceb4cf79b93539539286f47175e1a648e37cfb754200cc19b7", + "zh:d00769dbfd1bea46da5ac81a9e3384d0f954ed3f912859b21ed3ea2378c2cb1d", + "zh:dadd937ed05dcc3d521cd6ca04bc9681fd30acbb42265f748e69f5feb0f5b829", + "zh:e4c2d65cf138cc868ae52e3e2cf97e37fbbdbc9c510f1c669fdbcc736256e402", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } provider "registry.terraform.io/hashicorp/kubernetes" { - version = "2.12.1" + version = "2.16.1" constraints = "~> 2.0" hashes = [ - "h1:6ZgqegUao9WcfVzYg7taxCQOQldTmMVw0HqjG5S46OY=", - "h1:iAS9NYD0DjjmKpge74+y6nRltWkF+jkEpavWOEgq4jY=", - "zh:1ecb2adff52754fb4680c7cfe6143d1d8c264b00bb0c44f07f5583b1c7f978b8", - "zh:1fbd155088cd5818ad5874e4d59ccf1801e4e1961ac0711442b963315f1967ab", - "zh:29e927c7c8f112ee0e8ab70e71b498f2f2ae6f47df1a14e6fd0fdb6f14b57c00", - "zh:42c2f421da6b5b7c997e42aa04ca1457fceb13dd66099a057057a0812b680836", - "zh:522a7bccd5cd7acbb4ec3ef077d47f4888df7e59ff9f3d598b717ad3ee4fe9c9", - "zh:b45d8dc5dcbc5e30ae570d0c2e198505f47d09098dfd5f004871be8262e6ec1e", - "zh:c3ea0943f2050001c7d6a7115b9b990f148b082ebfc4ff3c2ff3463a8affcc4a", - "zh:f111833a64e06659d2e21864de39b7b7dec462615294d02f04c777956742a930", - "zh:f182dba5707b90b0952d5984c23f7a2da3baa62b4d71e78df7759f16cc88d957", + "h1:i+DwtJK82sIWmTcQA9lL0mlET+14/QpUqv10fU2o3As=", + "zh:06224975f5910d41e73b35a4d5079861da2c24f9353e3ebb015fbb3b3b996b1c", + "zh:2bc400a8d9fe7755cca27c2551564a9e2609cfadc77f526ef855114ee02d446f", + "zh:3a479014187af1d0aec3a1d3d9c09551b801956fe6dd29af1186dec86712731b", + "zh:73fb0a69f1abdb02858b6589f7fab6d989a0f422f7ad95ed662aaa84872d3473", + "zh:a33852cd382cbc8e06d3f6c018b468ad809d24d912d64722e037aed1f9bf39db", + "zh:b533ff2214dca90296b1d22eace7eaa7e3efe5a7ae9da66a112094abc932db4f", + "zh:ddf74d8bb1aeb01dc2c36ef40e2b283d32b2a96db73f6daaf179fa2f10949c80", + "zh:e720f3a15d34e795fa9ff90bc755e838ebb4aef894aa2a423fb16dfa6d6b0667", + "zh:e789ae70a658800cb0a19ef7e4e9b26b5a38a92b43d1f41d64fc8bb46539cefb", + "zh:e8aed7dc0bd8f843d607dee5f72640dbef6835a8b1c6ea12cea5b4ec53e463f7", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f76655a68680887daceabd947b2f68e2103f5bbec49a2bc29530f82ab8e3bca3", - "zh:fadb77352caa570bd3259dfb59c31db614d55bc96df0ff15a3c0cd2e685678b9", + "zh:fb3ac4f43c8b0dfc0b0103dd0f062ea72b3a34518d4c8808e3a44c9a3dd5f024", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.1.1" + version = "3.2.1" constraints = ">= 2.1.0, < 4.0.0" hashes = [ - "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", - "h1:Pctug/s/2Hg5FJqjYcTM0kPyx3AoYK1MpRWO0T9V2ns=", - "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", - "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", - "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "h1:FbGfc+muBsC17Ohy5g806iuI1hQc4SIexpYCrQHQd8w=", + "zh:58ed64389620cc7b82f01332e27723856422820cfd302e304b5f6c3436fb9840", + "zh:62a5cc82c3b2ddef7ef3a6f2fedb7b9b3deff4ab7b414938b08e51d6e8be87cb", + "zh:63cff4de03af983175a7e37e52d4bd89d990be256b16b5c7f919aff5ad485aa5", + "zh:74cb22c6700e48486b7cabefa10b33b801dfcab56f1a6ac9b6624531f3d36ea3", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", - "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", - "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", - "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", - "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", - "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", - "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", - "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", + "zh:79e553aff77f1cfa9012a2218b8238dd672ea5e1b2924775ac9ac24d2a75c238", + "zh:a1e06ddda0b5ac48f7e7c7d59e1ab5a4073bbcf876c73c0299e4610ed53859dc", + "zh:c37a97090f1a82222925d45d84483b2aa702ef7ab66532af6cbcfb567818b970", + "zh:e4453fbebf90c53ca3323a92e7ca0f9961427d2f0ce0d2b65523cc04d5d999c2", + "zh:e80a746921946d8b6761e77305b752ad188da60688cfd2059322875d363be5f5", + "zh:fbdb892d9822ed0e4cb60f2fedbdbb556e4da0d88d3b942ae963ed6ff091e48f", + "zh:fca01a623d90d0cad0843102f9b8b9fe0d3ff8244593bd817f126582b52dd694", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.3.2" + version = "3.4.3" constraints = ">= 2.2.0, >= 2.3.1, < 4.0.0" hashes = [ - "h1:Fu0IKMy46WsO5Y6KfuH9IFkkuxZjE/gIcgtB7GWkTtc=", - "h1:H5V+7iXol/EHB2+BUMzGlpIiCOdV74H8YjzCxnSAWcg=", - "zh:038293aebfede983e45ee55c328e3fde82ae2e5719c9bd233c324cfacc437f9c", - "zh:07eaeab03a723d83ac1cc218f3a59fceb7bbf301b38e89a26807d1c93c81cef8", - "zh:427611a4ce9d856b1c73bea986d841a969e4c2799c8ac7c18798d0cc42b78d32", - "zh:49718d2da653c06a70ba81fd055e2b99dfd52dcb86820a6aeea620df22cd3b30", - "zh:5574828d90b19ab762604c6306337e6cd430e65868e13ef6ddb4e25ddb9ad4c0", - "zh:7222e16f7833199dabf1bc5401c56d708ec052b2a5870988bc89ff85b68a5388", + "h1:xZGZf18JjMS06pFa4NErzANI98qi59SEcBsOcS2P2yQ=", + "zh:41c53ba47085d8261590990f8633c8906696fa0a3c4b384ff6a7ecbf84339752", + "zh:59d98081c4475f2ad77d881c4412c5129c56214892f490adf11c7e7a5a47de9b", + "zh:686ad1ee40b812b9e016317e7f34c0d63ef837e084dea4a1f578f64a6314ad53", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:b1b2d7d934784d2aee98b0f8f07a8ccfc0410de63493ae2bf2222c165becf938", - "zh:b8f85b6a20bd264fcd0814866f415f0a368d1123cd7879c8ebbf905d370babc8", - "zh:c3813133acc02bbebddf046d9942e8ba5c35fc99191e3eb057957dafc2929912", - "zh:e7a41dbc919d1de800689a81c240c27eec6b9395564630764ebb323ea82ac8a9", - "zh:ee6d23208449a8eaa6c4f203e33f5176fa795b4b9ecf32903dffe6e2574732c2", + "zh:84103eae7251384c0d995f5a257c72b0096605048f757b749b7b62107a5dccb3", + "zh:8ee974b110adb78c7cd18aae82b2729e5124d8f115d484215fd5199451053de5", + "zh:9dd4561e3c847e45de603f17fa0c01ae14cae8c4b7b4e6423c9ef3904b308dda", + "zh:bb07bb3c2c0296beba0beec629ebc6474c70732387477a65966483b5efabdbc6", + "zh:e891339e96c9e5a888727b45b2e1bb3fcbdfe0fd7c5b4396e4695459b38c8cb1", + "zh:ea4739860c24dfeaac6c100b2a2e357106a89d18751f7693f3c31ecf6a996f8d", + "zh:f0c76ac303fd0ab59146c39bc121c5d7d86f878e9a69294e29444d4c653786f8", + "zh:f143a9a5af42b38fed328a161279906759ff39ac428ebcfe55606e05e1518b93", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.7.2" + version = "0.9.1" hashes = [ - "h1:NKy1QrNLlP5mKy5Tea6lQSRsVoyydJQKh6WvNTdBF4I=", - "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", - "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", - "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", - "zh:35e4de0437f4fa9c1ad69aaf8136413be2369ea607d78e04bb68dc66a6a520b8", - "zh:369756417a6272e79cad31eb2c82c202f6a4b6e4204a893f656644ba9e149fa2", - "zh:390370f1179d89b33c3a0731691e772d5450a7d59fc66671ec625e201db74aa2", - "zh:3d12ac905259d225c685bc42e5507ed0fbdaa5a09c30dce7c1932d908df857f7", - "zh:75f63e5e1c68e6c5bccba4568c3564e2774eb3a7a19189eb8e2b6e0d58c8f8cc", - "zh:7c22a2078a608e3e0278c4cbc9c483909062ebd1843bddaf8f176346c6d378b1", - "zh:7cfb3c02f78f0060d59c757c4726ab45a962ce4a9cf4833beca704a1020785bd", - "zh:a0325917f47c28a2ed088dedcea0d9520d91b264e63cc667fe4336ac993c0c11", - "zh:c181551d4c0a40b52e236f1755cc340aeca0fb5dcfd08b3b1c393a7667d2f327", + "h1:NUv/YtEytDQncBQ2mTxnUZEy/rmDlPYmE9h2iokR0vk=", + "zh:00a1476ecf18c735cc08e27bfa835c33f8ac8fa6fa746b01cd3bcbad8ca84f7f", + "zh:3007f8fc4a4f8614c43e8ef1d4b0c773a5de1dcac50e701d8abc9fdc8fcb6bf5", + "zh:5f79d0730fdec8cb148b277de3f00485eff3e9cf1ff47fb715b1c969e5bbd9d4", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:8c8094689a2bed4bb597d24a418bbbf846e15507f08be447d0a5acea67c2265a", + "zh:a6d9206e95d5681229429b406bc7a9ba4b2d9b67470bda7df88fa161508ace57", + "zh:aa299ec058f23ebe68976c7581017de50da6204883950de228ed9246f309e7f1", + "zh:b129f00f45fba1991db0aa954a6ba48d90f64a738629119bfb8e9a844b66e80b", + "zh:ef6cecf5f50cda971c1b215847938ced4cb4a30a18095509c068643b14030b00", + "zh:f1f46a4f6c65886d2dd27b66d92632232adc64f92145bf8403fe64d5ffa5caea", + "zh:f79d6155cda7d559c60d74883a24879a01c4d5f6fd7e8d1e3250f3cd215fb904", + "zh:fd59fa73074805c3575f08cd627eef7acda14ab6dac2c135a66e7a38d262201c", ] } diff --git a/infra/terraform/test-org/org/bigquery_external_data.tf b/infra/terraform/test-org/org/bigquery_external_data.tf index 747acbc66b2..8291495d4b5 100644 --- a/infra/terraform/test-org/org/bigquery_external_data.tf +++ b/infra/terraform/test-org/org/bigquery_external_data.tf @@ -66,4 +66,4 @@ resource "google_storage_bucket_object" "ci_bq_external_hive_file_bar" { name = "hive_partition_example/year=2013/bar.csv" source = "external_data/bar.csv" bucket = google_storage_bucket.ci_bq_external_data_storage_bucket.name -} \ No newline at end of file +} diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 7763b58e1e6..f4261183fc2 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -18,7 +18,6 @@ locals { org_id = "943740911108" billing_account = "01D904-DAF6EC-F34EF7" cft_ci_group = "cft-ci-robots@test.infra.cft.tips" - cft_dev_group = "cft-developers@dev.infra.cft.tips" gcp_admins_group = "gcp-admins@test.infra.cft.tips" ci_project_id = "cloud-foundation-cicd" diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index eb2cdaab017..85a498ea058 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { external = { version = ">= 1.2, < 3.0" diff --git a/infra/terraform/test-org/test-cleanup/versions.tf b/infra/terraform/test-org/test-cleanup/versions.tf index bf68289a1f5..2164afda332 100644 --- a/infra/terraform/test-org/test-cleanup/versions.tf +++ b/infra/terraform/test-org/test-cleanup/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { archive = { version = ">= 1.3, < 3.0" diff --git a/infra/terraform/test-org/tf-validator/versions.tf b/infra/terraform/test-org/tf-validator/versions.tf index b0f6540afe8..74d28d5eb0f 100644 --- a/infra/terraform/test-org/tf-validator/versions.tf +++ b/infra/terraform/test-org/tf-validator/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.2.0" + required_version = "~> 1.3.0" required_providers { google = { source = "hashicorp/google" From 918910e4d766bb321d96ee4243f83b21e433be60 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 29 Dec 2022 11:26:04 -0800 Subject: [PATCH 0228/1371] feat: update stale version and renovate config (#1344) --- .../test-org/github/resources/renovate.json | 17 ++++++++--------- .../test-org/github/resources/stale.yml | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 2a109792b9e..9b920dbb1c8 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -15,24 +15,24 @@ ], "stabilityDays":0 }, + "separateMajorMinor":false, "packageRules": [ { "matchPaths": ["examples/**", "test/**", ".github/**"], "extends": [":semanticCommitTypeAll(chore)"] }, + { + "matchPaths": ["*", "modules/**"], + "extends": [":semanticCommitTypeAll(fix)"] + }, { "matchDepTypes": ["module"], - "groupName": "TF modules", - "separateMajorMinor":false, - "major": { - "semanticCommitType": "feat!" - } + "groupName": "TF modules" }, { "matchDepTypes": ["require"], "groupName": "GO modules", - "postUpdateOptions": ["gomodTidy"], - "separateMajorMinor":false + "postUpdateOptions": ["gomodTidy"] }, { "matchPackageNames": ["go"], @@ -41,8 +41,7 @@ }, { "matchPackageNames": ["google", "google-beta"], - "groupName": "terraform googles", - "separateMajorMinor": false + "groupName": "terraform googles" } ] } diff --git a/infra/terraform/test-org/github/resources/stale.yml b/infra/terraform/test-org/github/resources/stale.yml index dd2c152bc56..c26bb1d3afc 100644 --- a/infra/terraform/test-org/github/resources/stale.yml +++ b/infra/terraform/test-org/github/resources/stale.yml @@ -21,7 +21,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v6 + - uses: actions/stale@v7 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' From 16f2961aa8f64efc09ab4b9e74d97ce62559d22a Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 4 Jan 2023 20:28:21 -0600 Subject: [PATCH 0229/1371] feat: add doc generate to catalog (#1337) Co-authored-by: Andrew Peabody --- cli/bpcatalog/cmd.go | 2 +- cli/bpcatalog/render.go | 170 ++++++++++++++++- cli/bpcatalog/render_test.go | 216 +++++++++++++++++++++- cli/bpcatalog/tf.go | 3 + cli/bpcatalog/tf_test.go | 5 + cli/testdata/catalog/csv-verbose.expected | 4 + cli/testdata/catalog/csv.expected | 1 + cli/testdata/catalog/html.expected | 33 ++++ cli/testdata/catalog/single-html.expected | 19 ++ cli/testdata/catalog/table.expected | 1 + 10 files changed, 444 insertions(+), 10 deletions(-) create mode 100644 cli/testdata/catalog/csv-verbose.expected create mode 100644 cli/testdata/catalog/html.expected create mode 100644 cli/testdata/catalog/single-html.expected diff --git a/cli/bpcatalog/cmd.go b/cli/bpcatalog/cmd.go index a4f5c4575c2..539605b6bd3 100644 --- a/cli/bpcatalog/cmd.go +++ b/cli/bpcatalog/cmd.go @@ -67,5 +67,5 @@ func listCatalog(cmd *cobra.Command, args []string) error { if err != nil { return err } - return render(repos, os.Stdout, catalogListFlags.format) + return render(repos, os.Stdout, catalogListFlags.format, viper.GetBool("verbose")) } diff --git a/cli/bpcatalog/render.go b/cli/bpcatalog/render.go index 7cf97818dcf..e21719c1999 100644 --- a/cli/bpcatalog/render.go +++ b/cli/bpcatalog/render.go @@ -1,8 +1,13 @@ package bpcatalog import ( + "bytes" "fmt" + "html/template" "io" + "sort" + "strconv" + "strings" "github.com/jedib0t/go-pretty/table" ) @@ -42,22 +47,112 @@ func (r *renderFormat) Type() string { } const ( - renderTable renderFormat = "table" - renderCSV renderFormat = "csv" - renderTimeformat string = "2006-01-02" + renderTable renderFormat = "table" + renderCSV renderFormat = "csv" + renderHTML renderFormat = "html" + + renderTimeformat = "2006-01-02" + e2eLabel = "end-to-end" + htmlTemplate = ` + + + + + + + + +{{range .}}{{if .Categories}} + + + + + +{{end}}{{end}} + +
CategoryBlueprintDescription
{{.Categories}}{{.DisplayName}}{{.Description}}
` ) var ( - renderFormats = []renderFormat{renderTable, renderCSV} + renderFormats = []renderFormat{renderTable, renderCSV, renderHTML} + + // maps GH topics to categories + // https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/29e980be9f3e3535f4b0b7314c9e1aea5ec2001f/infra/terraform/test-org/org/locals.tf#L39-L53 + topicToCategory = map[string]string{ + e2eLabel: "End-to-end", + "healthcare-life-sciences": "Healthcare and life sciences", + "serverless-computing": "Serverless computing", + "compute": "Compute", + "containers": "Containers", + "databases": "Databases", + "networking": "Networking", + "data-analytics": "Data analytics", + "storage": "Storage", + "operations": "Operations", + "developer-tools": "Developer tools", + "security-identity": "Security and identity", + "workspace": "Workspace", + } + + // static display data for docs mode + // these repos are not currently auto discovered + staticDM = []displayMeta{ + { + DisplayName: "fabric", + URL: "https://github.com/terraform-google-modules/cloud-foundation-fabric", + Categories: "End to end", + IsE2E: true, + Description: "Advanced examples designed for prototyping", + }, + { + DisplayName: "ai-notebook", + URL: "https://github.com/GoogleCloudPlatform/notebooks-blueprint-security", + Categories: "End to end, Data analytics", + IsE2E: true, + Description: "Protect confidential data in Vertex AI Workbench notebooks", + }, + } ) +// displayMeta stores processed display metadata. +// Currently it processes from repo info but +// may also pull from other sources like blueprint meta +// in the future. +type displayMeta struct { + Name string + DisplayName string + Stars string + CreatedAt string + Description string + Labels []string + URL string + Categories string + IsE2E bool +} + // render writes given repo information in the specified renderFormat to w. -func render(r repos, w io.Writer, format renderFormat) error { +func render(r repos, w io.Writer, format renderFormat, verbose bool) error { + dm := reposToDisplayMeta(r) + if format == renderHTML { + w.Write([]byte(renderDocHTML(append(dm, staticDM...)))) + return nil + } + tbl := table.NewWriter() tbl.SetOutputMirror(w) - tbl.AppendHeader(table.Row{"Repo", "Stars", "Created"}) + h := table.Row{"Repo", "Stars", "Created"} + if verbose { + h = append(h, "Description") + } + tbl.AppendHeader(h) + for _, repo := range r { - tbl.AppendRow(table.Row{repo.GetName(), repo.GetStargazersCount(), repo.GetCreatedAt().Format(renderTimeformat)}) + row := table.Row{repo.GetName(), repo.GetStargazersCount(), repo.GetCreatedAt().Format(renderTimeformat)} + if verbose { + row = append(row, repo.GetDescription()) + } + tbl.AppendRow(row) } switch format { case renderTable: @@ -69,3 +164,64 @@ func render(r repos, w io.Writer, format renderFormat) error { } return nil } + +// reposToDisplayMeta converts repo to displayMeta. +func reposToDisplayMeta(r repos) []displayMeta { + dm := make([]displayMeta, 0, len(r)) + for _, repo := range r { + displayName := strings.TrimPrefix(repo.GetName(), "terraform-google-") + displayName = strings.TrimPrefix(displayName, "terraform-") + d := displayMeta{ + Name: repo.GetName(), + DisplayName: displayName, + URL: repo.GetHTMLURL(), + Stars: strconv.Itoa(repo.GetStargazersCount()), + CreatedAt: repo.GetCreatedAt().Format(renderTimeformat), + Description: repo.GetDescription(), + Labels: repo.Topics, + } + + // gh topics to categories + parsedCategories := []string{} + for _, topic := range repo.Topics { + p, exists := topicToCategory[topic] + if exists { + parsedCategories = append(parsedCategories, p) + } + if topic == e2eLabel { + d.IsE2E = true + } + } + if len(parsedCategories) > 0 { + sort.Strings(parsedCategories) + d.Categories = strings.Join(parsedCategories, ", ") + } + dm = append(dm, d) + } + return dm +} + +// docSort sorts displayMeta surfacing e2e blueprints first for documentation. +func docSort(dm []displayMeta) []displayMeta { + sort.SliceStable(dm, func(i, j int) bool { + if dm[i].IsE2E && dm[j].IsE2E { + return dm[i].DisplayName < dm[j].DisplayName + } + return dm[i].IsE2E + }) + return dm +} + +// renderDocHTML renders html for documentation. +func renderDocHTML(dm []displayMeta) string { + htmlTmpl, err := template.New("htmlDoc").Parse(htmlTemplate) + if err != nil { + return fmt.Sprintf("error parsing template: %v", err) + } + var tpl bytes.Buffer + err = htmlTmpl.Execute(&tpl, docSort(dm)) + if err != nil { + return fmt.Sprintf("error executing template: %v", err) + } + return tpl.String() +} diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index ae9c152ef87..07a503d1fc6 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -24,17 +24,25 @@ func TestRender(t *testing.T) { Name: github.String("terraform-google-bar"), CreatedAt: &github.Timestamp{Time: time.Date(2021, 1, 3, 4, 3, 0, 0, time.UTC)}, StargazersCount: github.Int(5), + Description: github.String("lorem ipsom"), }, { Name: github.String("terraform-google-foo"), CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, StargazersCount: github.Int(10), }, + { + Name: github.String("terraform-foo"), + CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, + StargazersCount: github.Int(10), + Topics: []string{"unrelated", e2eLabel, "containers"}, + }, } tests := []struct { name string r repos format renderFormat + verbose bool wantErr bool }{ { @@ -47,6 +55,17 @@ func TestRender(t *testing.T) { r: testRepoData, format: renderCSV, }, + { + name: "csv-verbose", + r: testRepoData, + format: renderCSV, + verbose: true, + }, + { + name: "html", + r: testRepoData, + format: renderHTML, + }, { name: "invalid", r: testRepoData, @@ -57,13 +76,13 @@ func TestRender(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { var got bytes.Buffer - if err := render(tt.r, &got, tt.format); (err != nil) != tt.wantErr { + if err := render(tt.r, &got, tt.format, tt.verbose); (err != nil) != tt.wantErr { t.Errorf("render() error = %v, wantErr %v", err, tt.wantErr) } if !tt.wantErr { expectedPath := path.Join(testDataDir, tt.name+".expected") - expected := readFile(t, expectedPath) updateExpected(t, expectedPath, got.String()) + expected := readFile(t, expectedPath) assert.Equal(t, expected, got.String()) } }) @@ -92,8 +111,201 @@ func updateExpected(t *testing.T, fp, data string) { if err != nil { t.Fatalf("error updating result: %v", err) } + + if _, err := os.Stat(fp); os.IsNotExist(err) { + _, err := os.Create(fp) + if err != nil { + t.Fatalf("error creating %s: %v", fp, err) + } + } + err = os.WriteFile(fp, []byte(data), 0755) if err != nil { t.Fatalf("error updating result: %v", err) } } + +func TestDocSort(t *testing.T) { + tests := []struct { + name string + input []displayMeta + want []displayMeta + }{ + { + name: "simple", + input: []displayMeta{ + { + DisplayName: "a", + IsE2E: false, + }, + { + DisplayName: "b", + IsE2E: true, + }, + }, + want: []displayMeta{ + { + DisplayName: "b", + IsE2E: true, + }, + { + DisplayName: "a", + IsE2E: false, + }, + }, + }, + + { + name: "mutiple", + input: []displayMeta{ + { + DisplayName: "d", + IsE2E: true, + }, + { + DisplayName: "b", + IsE2E: false, + }, + { + DisplayName: "c", + IsE2E: false, + }, + { + DisplayName: "a", + IsE2E: true, + }, + }, + want: []displayMeta{ + { + DisplayName: "a", + IsE2E: true, + }, + { + DisplayName: "d", + IsE2E: true, + }, + { + DisplayName: "b", + IsE2E: false, + }, + { + DisplayName: "c", + IsE2E: false, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := docSort(tt.input) + assert.Equal(t, tt.want, got) + }) + } +} + +func TestReposToDisplayMeta(t *testing.T) { + tests := []struct { + name string + input repos + want []displayMeta + }{ + { + name: "simple", + input: repos{ + { + Name: github.String("terraform-google-bar"), + CreatedAt: &github.Timestamp{Time: time.Date(2021, 1, 3, 4, 3, 0, 0, time.UTC)}, + StargazersCount: github.Int(5), + Description: github.String("lorem ipsom"), + Topics: []string{"containers"}, + }, + { + Name: github.String("terraform-foo"), + CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, + StargazersCount: github.Int(10), + Topics: []string{"unrelated", e2eLabel, "containers"}, + }, + { + Name: github.String("foo"), + CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, + StargazersCount: github.Int(10), + }, + }, + want: []displayMeta{ + { + Name: "terraform-google-bar", + DisplayName: "bar", + Stars: "5", + CreatedAt: "2021-01-03", + Description: "lorem ipsom", + Labels: []string{"containers"}, + URL: "", + Categories: "Containers", + IsE2E: false, + }, + { + Name: "terraform-foo", + DisplayName: "foo", + Stars: "10", + CreatedAt: "2022-11-03", + Description: "", + Labels: []string{"unrelated", e2eLabel, "containers"}, + URL: "", + Categories: "Containers, End-to-end", + IsE2E: true, + }, + { + Name: "foo", + DisplayName: "foo", + Stars: "10", + CreatedAt: "2022-11-03", + Description: "", + Labels: []string(nil), + URL: "", + Categories: "", + IsE2E: false, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := reposToDisplayMeta(tt.input) + assert.Equal(t, tt.want, got) + }) + } +} + +func TestRenderDocHTML(t *testing.T) { + tests := []struct { + name string + input []displayMeta + }{ + { + name: "single-html", + input: []displayMeta{ + { + Name: "terraform-google-bar", + DisplayName: "bar", + Stars: "5", + CreatedAt: "2021-01-03", + Description: "lorem ipsom", + Labels: []string{"containers"}, + URL: "", + Categories: "Containers", + IsE2E: false, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := renderDocHTML(tt.input) + expectedPath := path.Join(testDataDir, tt.name+".expected") + updateExpected(t, expectedPath, got) + expected := readFile(t, expectedPath) + assert.Equal(t, expected, got) + + }) + } +} diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index 9dab5bee3ef..889d2680c07 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -58,6 +58,9 @@ func fetchSortedTFRepos(gh *ghService, sortOpt sortOption) (repos, error) { return nil, fmt.Errorf("error fetching repos: %v", err) } repos = repos.filter(func(r *github.Repository) bool { + if r.GetArchived() { + return false + } return repoAllowList[r.GetName()] || (strings.HasPrefix(r.GetName(), "terraform-google") && !repoIgnoreList[r.GetName()]) }) return repos.sort(sortOpt) diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 632f4b04619..9a2112b3c84 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -80,6 +80,11 @@ func TestFetchSortedTFRepos(t *testing.T) { CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, StargazersCount: github.Int(12), }, + { + Name: github.String("archived"), + CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, + Archived: github.Bool(true), + }, }, want: []string{ "terraform-google-bar", diff --git a/cli/testdata/catalog/csv-verbose.expected b/cli/testdata/catalog/csv-verbose.expected new file mode 100644 index 00000000000..ffa47e0348e --- /dev/null +++ b/cli/testdata/catalog/csv-verbose.expected @@ -0,0 +1,4 @@ +Repo,Stars,Created,Description +terraform-google-bar,5,2021-01-03,lorem ipsom +terraform-google-foo,10,2022-11-03, +terraform-foo,10,2022-11-03, diff --git a/cli/testdata/catalog/csv.expected b/cli/testdata/catalog/csv.expected index 31623fe54f2..5069f2db665 100644 --- a/cli/testdata/catalog/csv.expected +++ b/cli/testdata/catalog/csv.expected @@ -1,3 +1,4 @@ Repo,Stars,Created terraform-google-bar,5,2021-01-03 terraform-google-foo,10,2022-11-03 +terraform-foo,10,2022-11-03 diff --git a/cli/testdata/catalog/html.expected b/cli/testdata/catalog/html.expected new file mode 100644 index 00000000000..80f30889dc1 --- /dev/null +++ b/cli/testdata/catalog/html.expected @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CategoryBlueprintDescription
End to end, Data analyticsai-notebookProtect confidential data in Vertex AI Workbench notebooks
End to endfabricAdvanced examples designed for prototyping
Containers, End-to-endfoo
\ No newline at end of file diff --git a/cli/testdata/catalog/single-html.expected b/cli/testdata/catalog/single-html.expected new file mode 100644 index 00000000000..9712ecd219e --- /dev/null +++ b/cli/testdata/catalog/single-html.expected @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + +
CategoryBlueprintDescription
Containersbarlorem ipsom
\ No newline at end of file diff --git a/cli/testdata/catalog/table.expected b/cli/testdata/catalog/table.expected index b57ef13edb3..fbb0ae0b1d0 100644 --- a/cli/testdata/catalog/table.expected +++ b/cli/testdata/catalog/table.expected @@ -3,4 +3,5 @@ +----------------------+-------+------------+ | terraform-google-bar | 5 | 2021-01-03 | | terraform-google-foo | 10 | 2022-11-03 | +| terraform-foo | 10 | 2022-11-03 | +----------------------+-------+------------+ From 09520dc212fa7884b4b181d1068811e8e651e452 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 4 Jan 2023 19:47:02 -0800 Subject: [PATCH 0230/1371] chore: update CFT for org-iam-policy TF version (#1346) --- infra/terraform/test-org/org-iam-policy/cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml b/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml index 2dde13d9823..d8820f9969c 100644 --- a/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml +++ b/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml @@ -30,4 +30,4 @@ steps: args: ['apply', '--auto-approve'] substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.5' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.10' From 651f16545784a2753d185e85ad3866036c865f38 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 5 Jan 2023 19:29:00 +0100 Subject: [PATCH 0231/1371] chore(deps): update peter-evans/create-pull-request digest to e398a27 (#1345) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index d28dfaca693..f854956a45b 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -88,7 +88,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@ea54357f43e3d1cf1125471d0814f4d02cc0d364 + uses: peter-evans/create-pull-request@e398a27af37e126b2754c0fb5fd21509352911b0 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 04fc289276bcdee18274ae5591fe05730a5734b1 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 6 Jan 2023 10:18:44 -0600 Subject: [PATCH 0232/1371] chore: add eric to codeowner, update labels, onboard workflows (#1355) --- infra/terraform/test-org/org/locals.tf | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index f4261183fc2..9377a389248 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -103,7 +103,7 @@ locals { name = "terraform-google-kubernetes-engine" org = "terraform-google-modules" description = "Configures opinionated GKE clusters" - owners = "@Jberlinsky" + owners = "@Jberlinsky @ericyz" topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { @@ -232,7 +232,7 @@ locals { name = "terraform-google-composer" org = "terraform-google-modules" description = "Manages Cloud Composer v1 and v2 along with option to manage networking" - topics = local.common_topics.da + topics = join(",", [local.common_topics.da, local.common_topics.ops, local.common_topics.e2e]) }, { name = "terraform-google-container-vm" @@ -423,7 +423,7 @@ locals { name = "terraform-google-vault" org = "terraform-google-modules" description = "Deploys Vault on Compute Engine" - topics = "hashicorp-vault,${local.common_topics.ops},${local.common_topics.devtools}" + topics = "hashicorp-vault,${local.common_topics.ops},${local.common_topics.devtools},${local.common_topics.security}" }, { name = "terraform-google-vm" @@ -485,5 +485,12 @@ locals { owners = "@gtsorbo" topics = local.common_topics.ops }, + { + name = "terraform-google-cloud-workflows" + org = "GoogleCloudPlatform" + description = "Manage Cloud Workflows with optional Scheduler or Event Arc triggers." + owners = "@anaik91" + topics = join(",", [local.common_topics.serverless, local.common_topics.devtools]) + } ] } From 511ca898c1ce76b309a18fdefc9398bf176b970a Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 6 Jan 2023 11:47:06 -0600 Subject: [PATCH 0233/1371] chore: make generation metadata opt in (#1354) --- infra/build/Makefile | 2 +- .../developer-tools/build/scripts/task_helper_functions.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 2482edf2b16..8d2bbb547e1 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.12.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 54293ac2eb4..117f8f35c4e 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -310,8 +310,9 @@ function generate_docs() { } function generate_metadata() { - if [[ "${DISABLE_BPMETADATA:-}" ]]; then - echo "DISABLE_BPMETADATA set. Skipping metadata generation." + # disable opt in after https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1353 + if [[ "${ENABLE_BPMETADATA:-}" -ne 1 ]]; then + echo "ENABLE_BPMETADATA not set to 1. Skipping metadata generation." return 0 fi echo "Generating blueprint metadata" From f7b6d0e46bef9229133babdc7a5280b3c3021fa8 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 9 Jan 2023 19:28:23 -0600 Subject: [PATCH 0234/1371] feat: add blueprint test init (#1350) --- cli/bpbuild/cmd.go | 3 +- cli/bptest/cmd.go | 32 ++++ cli/bptest/init.go | 73 ++++++++ cli/bptest/init_test.go | 159 ++++++++++++++++++ cli/bptest/templates/go.mod.tmpl | 4 +- cli/bptest/testdata/init/examples/foo/main.tf | 3 + .../init/test/integration/bar/bar_test.go | 0 cli/util/file.go | 13 ++ cli/{bpbuild => util}/prompt.go | 8 +- 9 files changed, 288 insertions(+), 7 deletions(-) create mode 100644 cli/bptest/init.go create mode 100644 cli/bptest/init_test.go create mode 100644 cli/bptest/testdata/init/examples/foo/main.tf create mode 100644 cli/bptest/testdata/init/test/integration/bar/bar_test.go rename cli/{bpbuild => util}/prompt.go (67%) diff --git a/cli/bpbuild/cmd.go b/cli/bpbuild/cmd.go index 62111ec4797..58a23293a29 100644 --- a/cli/bpbuild/cmd.go +++ b/cli/bpbuild/cmd.go @@ -5,6 +5,7 @@ import ( "os" "time" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" "github.com/fatih/color" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -113,7 +114,7 @@ func setAvgTimeFlagDefaults() error { return fmt.Errorf("error finding build file: %w", err) } steps := getBuildStepIDs(buildFile) - avgTimeFlags.buildStepID = promptSelect("Select build step to compute average", steps) + avgTimeFlags.buildStepID = util.PromptSelect("Select build step to compute average", steps) } // if no explicit start time, default to starting computation from one month ago. diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index 67d4e389a90..db78079f7aa 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -3,7 +3,9 @@ package bptest import ( "fmt" "os" + "path" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -19,6 +21,7 @@ func init() { Cmd.AddCommand(listCmd) Cmd.AddCommand(runCmd) Cmd.AddCommand(convertCmd) + Cmd.AddCommand(initCmd) Cmd.PersistentFlags().StringVar(&flags.testDir, "test-dir", "", "Path to directory containing integration tests (default is computed by scanning current working directory)") runCmd.Flags().StringVar(&flags.testStage, "stage", "", "Test stage to execute (default is running all stages in order - init, apply, verify, teardown)") @@ -111,3 +114,32 @@ var convertCmd = &cobra.Command{ return convertKitchenTests() }, } + +var initCmd = &cobra.Command{ + Use: "init", + Short: "initialize blueprint test", + Long: "Initialize a new blueprint test", + Args: cobra.MaximumNArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + var initTestName string + // if no args, prompt user to select from examples + if len(args) < 1 { + cwd, err := os.Getwd() + if err != nil { + return err + } + examplePaths, err := util.WalkTerraformDirs(path.Join(cwd, "examples")) + if err != nil { + return err + } + exampleNames := make([]string, 0, len(examplePaths)) + for _, examplePath := range examplePaths { + exampleNames = append(exampleNames, path.Base(examplePath)) + } + initTestName = util.PromptSelect("Select example for test", exampleNames) + } else { + initTestName = args[0] + } + return initTest(initTestName) + }, +} diff --git a/cli/bptest/init.go b/cli/bptest/init.go new file mode 100644 index 00000000000..c597edf79d0 --- /dev/null +++ b/cli/bptest/init.go @@ -0,0 +1,73 @@ +package bptest + +import ( + "fmt" + "os" + "path" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/discovery" + "github.com/hashicorp/terraform-config-inspect/tfconfig" + "github.com/iancoleman/strcase" +) + +func initTest(name string) error { + // check if test already exist + testDir := path.Join(intTestPath, name) + exists, err := util.Exists(testDir) + if err != nil { + return err + } + if exists { + return fmt.Errorf("%s already exists", testDir) + } + + // write go mod if not exists + goModpath := path.Join(intTestPath, goModFilename) + exists, err = util.Exists(goModpath) + if err != nil { + return err + } + if !exists { + goMod, err := getTmplFileContents(goModFilename) + if err != nil { + return err + } + cwd, err := os.Getwd() + if err != nil { + return err + } + err = writeFile(goModpath, fmt.Sprintf(goMod, path.Base(cwd))) + if err != nil { + return fmt.Errorf("error writing go mod file: %v", err) + } + } + + // discover test configs + testCfg, err := discovery.GetConfigDirFromTestDir(testDir) + if err != nil { + return fmt.Errorf("unable to discover test configs for %s: %v", testDir, err) + } + + // Parse config to expose outputs within test + mod, diags := tfconfig.LoadModule(testCfg) + if diags.HasErrors() { + return fmt.Errorf("error parsing outputs: %v", diags) + } + outputs := make([]string, 0, len(mod.Outputs)) + for _, op := range mod.Outputs { + // todo(bharathkkb): make templates type aware + outputs = append(outputs, op.Name) + } + + // render and write test + testFile, err := getBPTestFromTmpl(name, outputs) + if err != nil { + return fmt.Errorf("error creating blueprint test: %v", err) + } + err = os.MkdirAll(testDir, os.ModePerm) + if err != nil { + return fmt.Errorf("error creating test dir: %v", err) + } + return writeFile(path.Join(testDir, fmt.Sprintf("%s_test.go", strcase.ToSnake(name))), testFile) +} diff --git a/cli/bptest/init_test.go b/cli/bptest/init_test.go new file mode 100644 index 00000000000..db441781bd2 --- /dev/null +++ b/cli/bptest/init_test.go @@ -0,0 +1,159 @@ +package bptest + +import ( + "io/ioutil" + "os" + "path" + "testing" + + "github.com/otiai10/copy" + "github.com/stretchr/testify/assert" +) + +const ( + initTestDir = "testdata/init" +) + +func TestInitTest(t *testing.T) { + tests := []struct { + name string + bptName string + preProcessTestDir func(t *testing.T, dir string) + expectedFilesContents map[string]string + errMsg string + }{ + { + name: "simple with mod", + bptName: "foo", + expectedFilesContents: map[string]string{ + "test/integration/foo/foo_test.go": `package foo + +import ( + "fmt" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/stretchr/testify/assert" +) + +func TestFoo(t *testing.T) { + bpt := tft.NewTFBlueprintTest(t) + + bpt.DefineVerify(func(assert *assert.Assertions) { + bpt.DefaultVerify(assert) + + foo := bpt.GetStringOutput("foo") + + op := gcloud.Run(t,"") + assert.Contains(op.Get("result").String(), "foo", "contains foo") + }) + + bpt.Test() +} +`, + "test/integration/go.mod": "", // we create an empty go.mod in preprocess so no generation is expected + }, + preProcessTestDir: func(t *testing.T, dir string) { + _, err := os.Create(path.Join(dir, intTestPath, "go.mod")) + if err != nil { + t.Fatalf("error creating go.mod: %v", err) + } + }, + }, + { + name: "simple without mod", + bptName: "foo", + expectedFilesContents: map[string]string{ + "test/integration/foo/foo_test.go": `package foo + +import ( + "fmt" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/stretchr/testify/assert" +) + +func TestFoo(t *testing.T) { + bpt := tft.NewTFBlueprintTest(t) + + bpt.DefineVerify(func(assert *assert.Assertions) { + bpt.DefaultVerify(assert) + + foo := bpt.GetStringOutput("foo") + + op := gcloud.Run(t,"") + assert.Contains(op.Get("result").String(), "foo", "contains foo") + }) + + bpt.Test() +} +`, + "test/integration/go.mod": `module github.com/terraform-google-modules/init/test/integration + +go 1.16 + +require ( + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.4.0 + github.com/stretchr/testify v1.8.1 +) +`, + }, + }, + { + name: "invalid already exists", + bptName: "bar", + errMsg: "test/integration/bar already exists", + }, + { + name: "invalid no example", + bptName: "baz", + errMsg: "unable to discover test configs for test/integration/baz: unable to find config in test/fixtures/baz nor examples/baz", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + // copy fixture to tmpdir + tmpDir := path.Join(t.TempDir(), initTestDir) + err := copy.Copy(initTestDir, tmpDir) + assert.NoError(err) + // apply any pre processing before tests + if tt.preProcessTestDir != nil { + tt.preProcessTestDir(t, tmpDir) + } + // switch to tmp dir for test + t.Cleanup(switchDir(t, tmpDir)) + + err = initTest(tt.bptName) + if tt.errMsg != "" { + assert.NotNil(err) + assert.Contains(err.Error(), tt.errMsg) + } else { + assert.NoError(err) + for name, expectedContent := range tt.expectedFilesContents { + pth := path.Join(tmpDir, name) + assert.FileExists(pth) + gotContents, err := ioutil.ReadFile(pth) + assert.NoError(err) + assert.Equal(expectedContent, string(gotContents)) + } + } + }) + } +} + +func switchDir(t *testing.T, dir string) func() { + assert := assert.New(t) + currDir, err := os.Getwd() + assert.NoError(err) + err = os.Chdir(dir) + assert.NoError(err) + return func() { + if err := os.Chdir(currDir); err != nil { + assert.NoError(err) + } + } +} diff --git a/cli/bptest/templates/go.mod.tmpl b/cli/bptest/templates/go.mod.tmpl index 0ba814e4af0..cf05bd512ea 100644 --- a/cli/bptest/templates/go.mod.tmpl +++ b/cli/bptest/templates/go.mod.tmpl @@ -3,6 +3,6 @@ module github.com/terraform-google-modules/%s/test/integration go 1.16 require ( - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220317050137-1c8897fbd42c - github.com/stretchr/testify v1.7.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.4.0 + github.com/stretchr/testify v1.8.1 ) diff --git a/cli/bptest/testdata/init/examples/foo/main.tf b/cli/bptest/testdata/init/examples/foo/main.tf new file mode 100644 index 00000000000..17d5d1f2146 --- /dev/null +++ b/cli/bptest/testdata/init/examples/foo/main.tf @@ -0,0 +1,3 @@ +output "foo" { + value = "foo" +} diff --git a/cli/bptest/testdata/init/test/integration/bar/bar_test.go b/cli/bptest/testdata/init/test/integration/bar/bar_test.go new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/util/file.go b/cli/util/file.go index ddcbb895d64..fdca8976c78 100644 --- a/cli/util/file.go +++ b/cli/util/file.go @@ -1,8 +1,10 @@ package util import ( + "errors" "fmt" "io/fs" + "os" "path/filepath" "strings" ) @@ -44,3 +46,14 @@ func WalkTerraformDirs(topLevelPath string) ([]string, error) { return tfDirs, nil } + +func Exists(path string) (bool, error) { + _, err := os.Stat(path) + if err == nil { + return true, nil + } + if errors.Is(err, os.ErrNotExist) { + return false, nil + } + return false, fmt.Errorf("error checking if %s exists: %v", path, err) +} diff --git a/cli/bpbuild/prompt.go b/cli/util/prompt.go similarity index 67% rename from cli/bpbuild/prompt.go rename to cli/util/prompt.go index e3aa626ad10..73e0ad30c85 100644 --- a/cli/bpbuild/prompt.go +++ b/cli/util/prompt.go @@ -1,4 +1,4 @@ -package bpbuild +package util import ( "fmt" @@ -8,8 +8,8 @@ import ( "github.com/manifoldco/promptui" ) -// promptSelect prompts a user to select a value from given items. -func promptSelect(label string, items []string) string { +// PromptSelect prompts a user to select a value from given items. +func PromptSelect(label string, items []string) string { prompt := promptui.Select{ Label: label, Items: items, @@ -23,6 +23,6 @@ func promptSelect(label string, items []string) string { fmt.Printf("Prompt failed %v\n", err) os.Exit(1) } - fmt.Printf("Selected build step: %s\n", result) + fmt.Printf("Selected: %s\n", result) return result } From 2d401e0a53106511647822311ee7eb6ae54dbfb4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 10 Jan 2023 08:28:29 -0800 Subject: [PATCH 0235/1371] chore: update renovate (#1352) --- .github/renovate.json | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 6e7a4f26b6b..a1a61dfe714 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -3,7 +3,8 @@ "extends": [ "config:base", ":semanticCommits", - ":preserveSemverRanges" + ":preserveSemverRanges", + ":rebaseStalePrs" ], "stabilityDays":7, "ignorePaths": [], @@ -14,17 +15,15 @@ ], "stabilityDays":0 }, + "separateMajorMinor":false, "packageRules": [ { - "matchDepTypes": ["module"], - "groupName": "TF modules", - "separateMajorMinor":false + "matchPaths": [".github/**"], + "extends": [":semanticCommitTypeAll(chore)"] }, { "matchDepTypes": ["require"], - "groupName": "GO modules", - "postUpdateOptions": ["gomodTidy"], - "separateMajorMinor":false + "postUpdateOptions": ["gomodTidy"] }, { "matchPackageNames": ["go"], From 5c50728b825fda6187ca9b73151741c733e623ec Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 10 Jan 2023 08:31:27 -0800 Subject: [PATCH 0236/1371] fix(deps): update for go-sdk refactor (#1217) --- infra/blueprint-test/go.mod | 6 ++++-- infra/blueprint-test/go.sum | 35 +++++++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 43b6d41b25b..8d328492438 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -3,13 +3,15 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.16 require ( - github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2 + github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381 github.com/gruntwork-io/terratest v0.40.7 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/otiai10/copy v1.6.0 github.com/stretchr/testify v1.7.0 github.com/tidwall/gjson v1.12.1 github.com/tidwall/sjson v1.2.4 + golang.org/x/net v0.0.0-20211209124913-491a49abca63 // indirect golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect - sigs.k8s.io/kustomize/kyaml v0.11.0 + k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect + sigs.k8s.io/kustomize/kyaml v0.13.6 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 80b79fe9cf6..64dd9a850b9 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -65,8 +65,8 @@ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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= -github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2 h1:xAvEbj/KELmHntrHXkQVtYitM604wMGHXvI5+zQw22k= -github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2/go.mod h1:lJYiqfBOl6AOiefK9kmkhinbffIysu+nnclOBwKEPlQ= +github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381 h1:UdVx6rgwZeZr1hDMRLt2CDFw7sLRlg5Uxq60seIIWJU= +github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381/go.mod h1:prNhhUAODrB2VqHVead9tB8nLU9ffY4e4jjBwLMNO1M= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -306,6 +306,7 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -322,8 +323,9 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= @@ -387,6 +389,7 @@ github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 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/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= 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= @@ -435,6 +438,7 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -941,8 +945,9 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY= +golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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= @@ -1063,8 +1068,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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= @@ -1111,6 +1117,7 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -1126,8 +1133,9 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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= @@ -1200,6 +1208,7 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D 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-20200904004341-0bd0a958aa1d/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-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1252,8 +1261,9 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= 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 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1319,21 +1329,26 @@ k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= 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/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/kustomize/kyaml v0.11.0 h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA= -sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= +sigs.k8s.io/kustomize/kyaml v0.13.6 h1:eF+wsn4J7GOAXlvajv6OknSunxpcOBQQqsnPxObtkGs= +sigs.k8s.io/kustomize/kyaml v0.13.6/go.mod h1:yHP031rn1QX1lr/Xd934Ri/xdVNG8BE2ECa78Ht/kEg= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= From 6b6763521c0cbb9f0d10dfa83bab066f431f6acb Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Jan 2023 16:50:02 +0000 Subject: [PATCH 0237/1371] chore(deps): update peter-evans/create-pull-request digest to 84c5454 (#1359) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index f854956a45b..574baa88db5 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -88,7 +88,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@e398a27af37e126b2754c0fb5fd21509352911b0 + uses: peter-evans/create-pull-request@84c5454c6e165b9ff002651085afb89402cd486a with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 1df18aacc71e11774ad25210d2a81b911e243910 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 11:09:05 -0800 Subject: [PATCH 0238/1371] chore(master): release blueprint-test 0.4.1 (#1333) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 97ff8e05dfa..8c0c72ca316 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.4.0" + "infra/blueprint-test": "0.4.1" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index acb2fd4ec55..4adfa7a62b6 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.4.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.4.0...infra/blueprint-test/v0.4.1) (2023-01-10) + + +### Bug Fixes + +* **deps:** update for go-sdk refactor ([#1217](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1217)) ([5c50728](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5c50728b825fda6187ca9b73151741c733e623ec)) +* remove terraform plan file needed for the terraform vet execution after validation ([#1321](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1321)) ([1edc5df](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1edc5df7267c78a917eec0f2b5ad3f4024ca5e98)) + ## [0.4.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.3.0...infra/blueprint-test/v0.4.0) (2022-12-02) From 0ddf56cc82f66ea2fece7385c776d3fc4f4d8d26 Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Thu, 12 Jan 2023 10:55:30 -0600 Subject: [PATCH 0239/1371] chore: onboard Cloud Deploy module (#1356) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 9377a389248..1001e1b0960 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -491,6 +491,13 @@ locals { description = "Manage Cloud Workflows with optional Scheduler or Event Arc triggers." owners = "@anaik91" topics = join(",", [local.common_topics.serverless, local.common_topics.devtools]) - } + }, + { + name = "terraform-google-cloud-deploy" + org = "GoogleCloudPlatform" + description = "Create Cloud Deploy pipelines and targets" + owners = "@gtsorbo @niranjankl" + topics = join(",", [local.common_topics.devtools]) + }, ] } From b6dcd6020ee637dfbe21f07bac8d0c31113475db Mon Sep 17 00:00:00 2001 From: Imran Nayer <29933900+imrannayer@users.noreply.github.com> Date: Thu, 12 Jan 2023 20:17:40 -0500 Subject: [PATCH 0240/1371] chore: Added Cloud Armor Module (#1357) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 1001e1b0960..7be4198327c 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -492,6 +492,13 @@ locals { owners = "@anaik91" topics = join(",", [local.common_topics.serverless, local.common_topics.devtools]) }, + { + name = "terraform-google-cloud-armor" + org = "GoogleCloudPlatform" + description = "Deploy Cloud Armor Security policy" + owners = "@imrannayer @belgana" + topics = join(",", [local.common_topics.compute, local.common_topics.net]) + }, { name = "terraform-google-cloud-deploy" org = "GoogleCloudPlatform" From 36134916e2fd859b0aea4384c1b4a5ab79d65eac Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 25 Jan 2023 08:12:12 -0800 Subject: [PATCH 0241/1371] fix: update blueprint-test for kpt v1.0.0-beta.16+ (#1367) Co-authored-by: Bharath KKB --- .github/workflows/update-tooling.yml | 3 +- infra/blueprint-test/go.mod | 1 + infra/blueprint-test/pkg/kpt/kpt.go | 8 +++++ infra/blueprint-test/pkg/kpt/status.go | 42 ++++++++++------------- infra/blueprint-test/pkg/krmt/krm.go | 10 +++--- infra/blueprint-test/pkg/utils/version.go | 37 ++++++++++++++++++++ infra/build/Makefile | 3 +- 7 files changed, 72 insertions(+), 32 deletions(-) create mode 100644 infra/blueprint-test/pkg/utils/version.go diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 574baa88db5..fb04a247598 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -24,8 +24,7 @@ jobs: run: | PR_UPDATE_BODY="" newline=$'\n' - # Skip "KPT" till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT") for tool in ${tools[@]} do diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 8d328492438..4d557476734 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -10,6 +10,7 @@ require ( github.com/stretchr/testify v1.7.0 github.com/tidwall/gjson v1.12.1 github.com/tidwall/sjson v1.2.4 + golang.org/x/mod v0.4.2 golang.org/x/net v0.0.0-20211209124913-491a49abca63 // indirect golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect diff --git a/infra/blueprint-test/pkg/kpt/kpt.go b/infra/blueprint-test/pkg/kpt/kpt.go index e21f649b2ba..d9040306e6e 100644 --- a/infra/blueprint-test/pkg/kpt/kpt.go +++ b/infra/blueprint-test/pkg/kpt/kpt.go @@ -13,6 +13,9 @@ import ( "sigs.k8s.io/kustomize/kyaml/yaml" ) +// MIN_KPT_VERSION format: vMAJOR[.MINOR[.PATCH[-PRERELEASE]]] +const MIN_KPT_VERSION = "v1.0.0-beta.16" + type CmdCfg struct { kptBinary string // kpt binary dir string // dir to execute commands in @@ -57,6 +60,11 @@ func NewCmdConfig(t testing.TB, opts ...cmdOption) *CmdCfg { } kOpts.kptBinary = "kpt" } + // Validate required KPT version + if err := utils.MinSemver("v" + kOpts.RunCmd("version"), MIN_KPT_VERSION); err != nil { + t.Fatalf("unable to validate minimum required kpt version: %v", err) + } + return kOpts } diff --git a/infra/blueprint-test/pkg/kpt/status.go b/infra/blueprint-test/pkg/kpt/status.go index 61cef8af361..0d888bf2aab 100644 --- a/infra/blueprint-test/pkg/kpt/status.go +++ b/infra/blueprint-test/pkg/kpt/status.go @@ -7,40 +7,36 @@ import ( ) const ( - // Individual apply events can have either of resourceApplied or resourceFailed status. - // https://github.com/GoogleContainerTools/kpt/blob/2a817f60cf7132c88fd2e526c02b800cf927c048/thirdparty/cli-utils/printers/json/formatter.go#L31 - ApplyType = "apply" - ResourceAppliedEventType = "resourceApplied" - ResourceFailedEventType = "resourceFailed" - // Unchanged operation represents a resource that remained unchanged. - ResourceOperationUnchanged = "Unchanged" - // Group event of type apply has completed status - CompletedEventType = "completed" + // Resource event of type apply has apply type + ResourceApplyType = "apply" + // Status of successful resource event + ResourceOperationSuccessful = "Successful" + // Group event of type apply has summary type + CompletedEventType = "summary" ) type ResourceApplyStatus struct { - EventType string `json:"eventType"` Group string `json:"group,omitempty"` Kind string `json:"kind,omitempty"` Name string `json:"name,omitempty"` Namespace string `json:"namespace,omitempty"` - Operation string `json:"operation"` + Status string `json:"status"` + Timestamp string `json:"timestamp"` Type string `json:"type"` } type GroupApplyStatus struct { - EventType string `json:"eventType"` + Action string `json:"action"` Count int `json:"count"` - CreatedCount int `json:"createdCount"` - UnchangedCount int `json:"unchangedCount"` - ConfiguredCount int `json:"configuredCount"` - FailedCount int `json:"failedCount"` - ServerSideCount int `json:"serverSideCount"` - Operation string `json:"operation"` - Type string `json:"type"` + Failed int `json:"failed"` + Skipped int `json:"skipped"` + Status string `json:"status"` + Successful int `json:"successful"` + Timestamp string `json:"timestamp"` + Type string `json:"type"` } -// GetPkgApplyResourcesStatus finds individual kpt apply statuses from newline seperated string of apply statuses +// GetPkgApplyResourcesStatus finds individual kpt apply statuses from newline separated string of apply statuses // and converts them into a slice of ResourceApplyStatus. func GetPkgApplyResourcesStatus(jsonStatus string) ([]ResourceApplyStatus, error) { var statuses []ResourceApplyStatus @@ -51,7 +47,7 @@ func GetPkgApplyResourcesStatus(jsonStatus string) ([]ResourceApplyStatus, error if err != nil { return nil, fmt.Errorf("error unmarshalling %s: %v", status, err) } - if s.Type == ApplyType && (s.EventType == ResourceAppliedEventType || s.EventType == ResourceFailedEventType) { + if s.Type == ResourceApplyType { statuses = append(statuses, s) } @@ -59,7 +55,7 @@ func GetPkgApplyResourcesStatus(jsonStatus string) ([]ResourceApplyStatus, error return statuses, nil } -// GetPkgApplyGroupStatus finds the first group kpt apply status from newline seperated string of apply statuses +// GetPkgApplyGroupStatus finds the first group kpt apply status from newline separated string of apply statuses // and converts it into a GroupApplyStatus. func GetPkgApplyGroupStatus(jsonStatus string) (GroupApplyStatus, error) { var s GroupApplyStatus @@ -70,7 +66,7 @@ func GetPkgApplyGroupStatus(jsonStatus string) (GroupApplyStatus, error) { if err != nil { return s, fmt.Errorf("error unmarshalling %s: %v", resourceStatuses[i], err) } - if s.Type == ApplyType && (s.EventType == CompletedEventType) { + if s.Type == CompletedEventType { return s, nil } } diff --git a/infra/blueprint-test/pkg/krmt/krm.go b/infra/blueprint-test/pkg/krmt/krm.go index 2c21428b487..dc3d3e955c7 100644 --- a/infra/blueprint-test/pkg/krmt/krm.go +++ b/infra/blueprint-test/pkg/krmt/krm.go @@ -286,21 +286,21 @@ func (b *KRMBlueprintTest) DefaultApply(assert *assert.Assertions) { b.kpt.RunCmd("live", "status", "--output", "json", "--poll-until", "current", "--timeout", b.timeout) } -// DefaultVerify asserts no resource changes exist after apply. +// DefaultVerify asserts all resources are status successful func (b *KRMBlueprintTest) DefaultVerify(assert *assert.Assertions) { jsonOp := b.kpt.RunCmd("live", "apply", "--output", "json") - // assert each resource is unchanged from initial apply + // assert each resource status is successful resourceStatus, err := kpt.GetPkgApplyResourcesStatus(jsonOp) assert.NoError(err, "Resource statuses should be parsable") for _, r := range resourceStatus { - assert.Equal(kpt.ResourceOperationUnchanged, r.Operation, "Resource should be unchanged") + assert.Equal(kpt.ResourceOperationSuccessful, r.Status, "Status should be successful") } - // assert count of resources applied equals count of resources unchanged + // assert count of resources applied equals count of resources successful groupStatus, err := kpt.GetPkgApplyGroupStatus(jsonOp) assert.NoError(err, "Group status should be parsable") - assert.Equal(groupStatus.Count, groupStatus.UnchangedCount, "All resources should be unchanged") + assert.Equal(groupStatus.Count, groupStatus.Successful, "All resources should be successful") } diff --git a/infra/blueprint-test/pkg/utils/version.go b/infra/blueprint-test/pkg/utils/version.go new file mode 100644 index 00000000000..0864ba83293 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/version.go @@ -0,0 +1,37 @@ +/** + * Copyright 2023 Google LLC + * + * 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 utils + +import ( + "fmt" + + "golang.org/x/mod/semver" +) + +// MinSemver validates gotSemver is not less than minSemver +func MinSemver(gotSemver string, minSemver string) error { + if !semver.IsValid(gotSemver) { + return fmt.Errorf("unable to parse got version %q", gotSemver) + } else if !semver.IsValid(minSemver) { + return fmt.Errorf("unable to parse minimum version %q", minSemver) + } + if semver.Compare(gotSemver, minSemver) == -1 { + return fmt.Errorf("got version %q is less than minimum version %q", gotSemver, minSemver) + } + + return nil +} diff --git a/infra/build/Makefile b/infra/build/Makefile index 8d2bbb547e1..0648943dcd3 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -30,8 +30,7 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -# Hold KPT at 1.0.0-beta.15 till resolved: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1190 -KPT_VERSION := 1.0.0-beta.15 +KPT_VERSION := 1.0.0-beta.24 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 0.5.1 # Updated by Update Tooling Workflow From 7d122926548f46cfa52c273352bf8a62b5aa1301 Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Wed, 25 Jan 2023 20:45:54 -0300 Subject: [PATCH 0242/1371] chore: install tinkey in developer-tools image (#1370) --- infra/build/Makefile | 2 ++ infra/build/developer-tools/Dockerfile | 7 +++++ .../developer-tools/build/install_tinkey.sh | 31 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100755 infra/build/developer-tools/build/install_tinkey.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index 0648943dcd3..efc57d6eacc 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -36,6 +36,7 @@ CFT_CLI_VERSION := 0.5.1 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.23.15 TFLINT_VERSION := 0.41.0 +TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 # For developer-tools-krm @@ -79,6 +80,7 @@ build-image-developer-tools: --build-arg CFT_CLI_VERSION=${CFT_CLI_VERSION} \ --build-arg KUBECTL_VERSION=${KUBECTL_VERSION} \ --build-arg TFLINT_VERSION=${TFLINT_VERSION} \ + --build-arg TINKEY_VERSION=${TINKEY_VERSION} \ --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools" docker build \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 8121b78e61e..d4beda2c5c4 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -85,6 +85,10 @@ ENV KUBECTL_VERSION ${KUBECTL_VERSION} ARG TFLINT_VERSION ENV TFLINT_VERSION ${TFLINT_VERSION} +# Required to download and install tinkey +ARG TINKEY_VERSION +ENV TINKEY_VERSION ${TINKEY_VERSION} + # $WORKSPACE is intended for assets that persist across multiple build steps in a pipeline. # It's also where the project git repository is located. # https://cloud.google.com/cloud-build/docs/build-config @@ -155,6 +159,9 @@ RUN /build/install_cft_cli.sh ${CFT_CLI_VERSION} ADD ./build/install_tflint.sh /build/ RUN /build/install_tflint.sh ${TFLINT_VERSION} +ADD ./build/install_tinkey.sh /build/ +RUN /build/install_tinkey.sh ${TINKEY_VERSION} + WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . diff --git a/infra/build/developer-tools/build/install_tinkey.sh b/infra/build/developer-tools/build/install_tinkey.sh new file mode 100755 index 00000000000..fc5ddccf5fc --- /dev/null +++ b/infra/build/developer-tools/build/install_tinkey.sh @@ -0,0 +1,31 @@ +#! /bin/bash +# Copyright 2023 Google LLC +# +# 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. + +set -e +set -u + +cd /build + +TINKEY_VERSION=$1 + +mkdir ./tinkey + +gsutil cp "gs://tinkey/tinkey-${TINKEY_VERSION}.tar.gz" ./tinkey +tar -xzvf "./tinkey/tinkey-${TINKEY_VERSION}.tar.gz" -C ./tinkey + +install -o 0 -g 0 -m 0755 ./tinkey/tinkey_deploy.jar /usr/bin/ +install -o 0 -g 0 -m 0755 ./tinkey/tinkey /usr/bin/ + +rm -rf ./tinkey From 02a5901ef7d34483858b2a40b7654806dec3c289 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 26 Jan 2023 10:52:18 -0600 Subject: [PATCH 0243/1371] chore: Update Tools to 1.10.6 (#1349) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index efc57d6eacc..bcc022852eb 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.3.6 +TERRAFORM_VERSION := 1.3.7 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 412.0.0 +CLOUD_SDK_VERSION := 415.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -34,7 +34,7 @@ KPT_VERSION := 1.0.0-beta.24 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 0.5.1 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.23.15 +KUBECTL_VERSION := 1.23.16 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 @@ -47,9 +47,9 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.9.2 OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.12.1 +GCRANE_VERSION := 0.13.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 0234ad6f0da169aec58a9fd848094907aa4b6851 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 30 Jan 2023 16:57:39 -0800 Subject: [PATCH 0244/1371] feat: update blueprint-test to GO 1.18 and test fixes (#1373) --- .../examples/simple_tf_module/main.tf | 11 +- .../examples/simple_tf_module/versions.tf | 29 + infra/blueprint-test/go.mod | 83 +- infra/blueprint-test/go.sum | 1209 ++--------------- infra/blueprint-test/test/README.md | 32 + .../blueprint-test/test/retry_errors_test.go | 2 +- 6 files changed, 284 insertions(+), 1082 deletions(-) create mode 100644 infra/blueprint-test/examples/simple_tf_module/versions.tf create mode 100644 infra/blueprint-test/test/README.md diff --git a/infra/blueprint-test/examples/simple_tf_module/main.tf b/infra/blueprint-test/examples/simple_tf_module/main.tf index 00d2de9f546..9c0ba1e5f21 100644 --- a/infra/blueprint-test/examples/simple_tf_module/main.tf +++ b/infra/blueprint-test/examples/simple_tf_module/main.tf @@ -14,21 +14,13 @@ * limitations under the License. */ -provider "google" { - version = "~> 3.45.0" -} - -provider "null" { - version = "~> 2.1" -} - terraform { backend "local" {} } module "test-vpc-module" { source = "terraform-google-modules/network/google" - version = "~> 3.2.0" + version = "~> 6.0" project_id = var.project_id # Replace this with your project ID in quotes network_name = var.network_name mtu = 1460 @@ -54,6 +46,7 @@ module "test-vpc-module" { subnet_flow_logs_interval = "INTERVAL_10_MIN" subnet_flow_logs_sampling = 0.7 subnet_flow_logs_metadata = "INCLUDE_ALL_METADATA" + subnet_flow_logs_filter = "false" } ] } diff --git a/infra/blueprint-test/examples/simple_tf_module/versions.tf b/infra/blueprint-test/examples/simple_tf_module/versions.tf new file mode 100644 index 00000000000..3aa2524f07c --- /dev/null +++ b/infra/blueprint-test/examples/simple_tf_module/versions.tf @@ -0,0 +1,29 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +terraform { + required_version = ">= 0.13.0" + required_providers { + google = { + source = "hashicorp/google" + version = "< 5.0, >= 3.45" + } + null = { + source = "hashicorp/null" + version = ">= 2.1" + } + } +} diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 4d557476734..6bff5de2961 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -1,18 +1,79 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test -go 1.16 +go 1.18 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381 - github.com/gruntwork-io/terratest v0.40.7 + github.com/gruntwork-io/terratest v0.41.9 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/otiai10/copy v1.6.0 - github.com/stretchr/testify v1.7.0 - github.com/tidwall/gjson v1.12.1 - github.com/tidwall/sjson v1.2.4 - golang.org/x/mod v0.4.2 - golang.org/x/net v0.0.0-20211209124913-491a49abca63 // indirect - golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect - k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect - sigs.k8s.io/kustomize/kyaml v0.13.6 + github.com/otiai10/copy v1.9.0 + github.com/stretchr/testify v1.8.1 + github.com/tidwall/gjson v1.14.4 + github.com/tidwall/sjson v1.2.5 + golang.org/x/mod v0.7.0 + sigs.k8s.io/kustomize/kyaml v0.13.10 +) + +require ( + cloud.google.com/go v0.109.0 // indirect + cloud.google.com/go/compute v1.18.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v0.10.0 // indirect + cloud.google.com/go/storage v1.29.0 // indirect + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/aws/aws-sdk-go v1.44.188 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/go-errors/errors v1.4.2 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/gnostic v0.6.9 // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.1 // indirect + github.com/googleapis/gax-go/v2 v2.7.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.6.2 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/hcl/v2 v2.15.0 // indirect + github.com/hashicorp/terraform-json v0.14.0 // indirect + github.com/jinzhu/copier v0.3.5 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/klauspost/compress v1.15.15 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-zglob v0.0.4 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.1 // indirect + github.com/tmccombs/hcl2json v0.3.6 // indirect + github.com/ulikunitz/xz v0.5.11 // indirect + github.com/xlab/treeprint v1.1.0 // indirect + github.com/zclconf/go-cty v1.12.1 // indirect + go.opencensus.io v0.24.0 // indirect + golang.org/x/crypto v0.5.0 // indirect + golang.org/x/net v0.5.0 // indirect + golang.org/x/oauth2 v0.4.0 // indirect + golang.org/x/sys v0.4.0 // indirect + golang.org/x/text v0.6.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.108.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa // indirect + google.golang.org/grpc v1.52.3 // indirect + google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a // indirect ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 64dd9a850b9..b18f95b8ff0 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -1,378 +1,86 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0 h1:bAMqZidYkmIsUqe6PtkEPT7Q+vfizScn+jfNA6jwK9c= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.109.0 h1:38CZoKGlCnPZjGdyj0ZfpoGae0/wgNfy5F0byyxg0Gk= +cloud.google.com/go v0.109.0/go.mod h1:2sYycXt75t/CSB5R9M2wPU1tJmire7AQZTPtITcGBVE= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v50.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= -github.com/Azure/go-autorest/autorest v0.11.20/go.mod h1:o3tqFY+QR40VOlk+pV4d77mORO64jOXSgEnPQgLK6JY= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/adal v0.9.11/go.mod h1:nBKAnTomx8gDtl+3ZCJv2v0KACFHWTB2drffI1B68Pk= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.8/go.mod h1:kxyKZTSfKh8OVFWPAgOgQ/frrJgeYQJPyR5fLFmXko4= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +cloud.google.com/go/iam v0.10.0 h1:fpP/gByFs6US1ma53v7VxhvbJpO2Aapng6wabJ99MuI= +cloud.google.com/go/iam v0.10.0/go.mod h1:nXAECrMt2qHpF6RZUZseteD6QyanL68reN4OXPw0UWM= +cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= +cloud.google.com/go/storage v1.29.0 h1:6weCgzRvMg7lzuUurI4697AqIRPU1SvzHhynwpW31jI= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= 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= github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381 h1:UdVx6rgwZeZr1hDMRLt2CDFw7sLRlg5Uxq60seIIWJU= github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381/go.mod h1:prNhhUAODrB2VqHVead9tB8nLU9ffY4e4jjBwLMNO1M= -github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= -github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= -github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= -github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= -github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= -github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/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/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= -github.com/aws/aws-sdk-go v1.40.56 h1:FM2yjR0UUYFzDTMx+mH9Vyw1k1EUUxsAFzk+BjkzANA= -github.com/aws/aws-sdk-go v1.40.56/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/aws/aws-sdk-go v1.44.188 h1:NCN6wFDWKU72Ka+f7cCk3HRj1KxkEXhRdr7lO8oBRRQ= +github.com/aws/aws-sdk-go v1.44.188/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= -github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= -github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= -github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= -github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= -github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= -github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= -github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= -github.com/containerd/containerd v1.5.2/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= -github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= -github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= -github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= -github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= -github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= -github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= -github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= -github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/stargz-snapshotter/estargz v0.7.0/go.mod h1:83VWDqHnurTKliEB0YvWMiCfLDwv4Cjj1X9Vk98GJZw= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= -github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= -github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= -github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= -github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= -github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= -github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= -github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= -github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= -github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= -github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= -github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= 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/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v20.10.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= -github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= -github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= -github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= -github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -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-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-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +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 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= -github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= -github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -382,195 +90,93 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 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/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= +github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= 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= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-containerregistry v0.6.0/go.mod h1:euCCtNbZ6tKqi1E72vwDj2xZcN5ttKpZLfa/wSo5iLw= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/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/googleapis/enterprise-certificate-proxy v0.2.1 h1:RY7tHKZcRlk788d5WSo/e83gOyyy742E8GSs771ySpg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gruntwork-io/go-commons v0.8.0/go.mod h1:gtp0yTtIBExIZp7vyIV9I0XQkVwiQZze678hvDXof78= -github.com/gruntwork-io/terratest v0.40.7 h1:kp6Ymc3hPMdsCoV2Ij2C5QqooCCwELuIopKXhWho/jE= -github.com/gruntwork-io/terratest v0.40.7/go.mod h1:CjHsEgP1Pe987X5N8K5qEqCuLtu1bqERGIAF8bTj1s0= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/gruntwork-io/terratest v0.41.9 h1:jyygu23iLcEFjGQhlvRx4R0EJVqOoriP+Ire4U9cZA0= +github.com/gruntwork-io/terratest v0.41.9/go.mod h1:qH1xkPTTGx30XkMHw8jAVIbzqheSjIa5IyiTwSV2vKI= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.5.9 h1:b7ahZW50iQiUek/at3CvZhPK1/jiV6CtKcsJiR6E4R0= -github.com/hashicorp/go-getter v1.5.9/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= +github.com/hashicorp/go-getter v1.6.2/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= -github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.9.1 h1:eOy4gREY0/ZQHNItlfuEZqtcQbXIxzojlP301hDpnac= -github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/terraform-json v0.13.0 h1:Li9L+lKD1FO5RVFRM1mMMIBDoUHslOniyEi5CM+FWGY= -github.com/hashicorp/terraform-json v0.13.0/go.mod h1:y5OdLBCT+rxbwnpxZs9kGL7R9ExU76+cpdY8zHwoazk= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= -github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o= -github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= +github.com/hashicorp/hcl/v2 v2.15.0 h1:CPDXO6+uORPjKflkWCCwoWc9uRp+zSIPcCQ+BrxV7m8= +github.com/hashicorp/hcl/v2 v2.15.0/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= +github.com/hashicorp/terraform-json v0.14.0 h1:sh9iZ1Y8IFJLx+xQiKHGud6/TSUCM0N8e17dKDpqV7s= +github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= +github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= +github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +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/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.0 h1:2T7tUoQrQT+fQWdaY5rjWztFGAFwbGD04iPJg90ZiOs= -github.com/klauspost/compress v1.13.0/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= +github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= 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 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= -github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326 h1:ofNAzWCcyTALn2Zv40+8XitdzCgXY6e9qvXwN9W0YXg= -github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= +github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -581,675 +187,219 @@ github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -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/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= -github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= -github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= -github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= -github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= +github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= +github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= -github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/otiai10/mint v1.4.0 h1:umwcf7gbpEwf7WFzqmWwSv0CzbeMsae2u9ZvpP8j2q4= +github.com/otiai10/mint v1.4.0/go.mod h1:gifjb2MYOoULtKLqUAEILUG/9KONW6f7YsJ6vQLTlFI= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= -github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-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/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= -github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 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 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/tidwall/gjson v1.12.1 h1:ikuZsLdhr8Ws0IdROXUS1Gi4v9Z4pGqpX/CvJkxvfpo= -github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +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 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= +github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.4 h1:cuiLzLnaMeBhRmEv00Lpk3tkYrcxpmbU81tAY4Dw0tc= -github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmccombs/hcl2json v0.3.3 h1:+DLNYqpWE0CsOQiEZu+OZm5ZBImake3wtITYxQ8uLFQ= -github.com/tmccombs/hcl2json v0.3.3/go.mod h1:Y2chtz2x9bAeRTvSibVRVgbLJhLJXKlUeIvjeVdnm4w= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/tmccombs/hcl2json v0.3.6 h1:QVZ1FKXXk9LBpaWTUvJXgdhsllpDmWnfr4/4FP+vBRQ= +github.com/tmccombs/hcl2json v0.3.6/go.mod h1:vRUcMTGRHWMSqa/T1yDk3Jft2Ct9MFDxoS422aASPdo= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -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/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.8.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.9.1 h1:viqrgQwFl5UpSxc046qblj78wZXVDFnSOufaOTER+cc= -github.com/zclconf/go-cty v1.9.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.12.1 h1:PcupnljUm9EIvbgSHQnHhUr3fO6oFmkOrvs2BAFNXXY= +github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -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/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -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= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= -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.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY= -golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +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.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= 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= -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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644 h1:CA1DEQ4NdKphKeL70tvsWNdT5oFh1lOjihRcEDROi0I= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20220517195934-5e4e11fc645e/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= +golang.org/x/sys v0.4.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-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +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.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 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= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= -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/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 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= 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= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= -google.golang.org/api v0.47.0 h1:sQLWZQvP6jPGIP4JGPkJu4zHswrv81iobiyszr3b/0I= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.108.0 h1:WVBc/faN0DkKtR43Q/7+tPny9ZoLZdIiAyG5Q9vFClg= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= 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/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= 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= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -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-20200904004341-0bd0a958aa1d/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-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa h1:qQPhfbPO23fwm/9lQr91L1u62Zo6cm+zI+slZT+uf+o= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= 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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= 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= @@ -1258,97 +408,34 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= 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.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -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.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +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= 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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= -k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= -k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= -k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= -k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= -k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= -k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= -k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= -k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= -k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= -k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= -k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= -k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a h1:s6zvHjyDQX1NtVT88pvw2tddqhqY0Bz0Gbnn+yctsFU= +k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a/go.mod h1:/BYxry62FuDzmI+i9B+X2pqfySRmSOW2ARmj5Zbqhj0= 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/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/kustomize/kyaml v0.13.6 h1:eF+wsn4J7GOAXlvajv6OknSunxpcOBQQqsnPxObtkGs= -sigs.k8s.io/kustomize/kyaml v0.13.6/go.mod h1:yHP031rn1QX1lr/Xd934Ri/xdVNG8BE2ECa78Ht/kEg= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/kustomize/kyaml v0.13.10 h1:htPMvrk7ZDfTDyrgXIm/2mfmcYJHEmRb6s+yCLgtNms= +sigs.k8s.io/kustomize/kyaml v0.13.10/go.mod h1:PzDV8gSaY8mwdd7nR9zg7Pw5yh9fu8G+ElAXoQVzBq8= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/infra/blueprint-test/test/README.md b/infra/blueprint-test/test/README.md new file mode 100644 index 00000000000..a35d6d842d7 --- /dev/null +++ b/infra/blueprint-test/test/README.md @@ -0,0 +1,32 @@ +# Run blueprint-tests + +Set environment variables: + +```bash +export TF_VAR_org_id="your_org_id" +export TF_VAR_folder_id="your_folder_id" +export TF_VAR_billing_account="your_billing_account_id" +``` + +Create test project: + +```bash +terraform -chdir=setup/simple_tf_module init +terraform -chdir=setup/simple_tf_module apply +``` + +Run tests: + +```bash +go test [-v] +``` + +Cleanup test project: + +```bash +terraform -chdir=setup/simple_tf_module destroy +``` + +Note: + +* `krm_simple_blueprint_test.go` will need a GKE cluster with [config-connector](https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall) diff --git a/infra/blueprint-test/test/retry_errors_test.go b/infra/blueprint-test/test/retry_errors_test.go index b793dd2dcee..98a4bd1d04c 100644 --- a/infra/blueprint-test/test/retry_errors_test.go +++ b/infra/blueprint-test/test/retry_errors_test.go @@ -43,7 +43,7 @@ func TestRetryErrors(t *testing.T) { out, err := terraform.ApplyE(t, bpt.GetTFOptions()) assert.Contains(out, "SERVICE_DISABLED") errMsg := err.Error() - assert.Equal(errMsg, "'terraform [apply -input=false -auto-approve -lock=false]' unsuccessful after 2 retries") + assert.Equal(errMsg, "'terraform [apply -input=false -auto-approve -no-color -lock=false]' unsuccessful after 2 retries") }) bpt.Test() } From d998f6950352ccd9afbafdea1bea64418e27b841 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 31 Jan 2023 09:13:46 -0800 Subject: [PATCH 0245/1371] chore: update gator to track 3.11 (#1375) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index fb04a247598..f56950263f6 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -11,7 +11,7 @@ env: CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" KUBECTL_MINOR: "1.23" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" - GATOR_MINOR: "3.9" + GATOR_MINOR: "3.11" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" From edb1d98c8c57deec1c1e8c648923943ec7028af8 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Tue, 31 Jan 2023 23:02:19 +0500 Subject: [PATCH 0246/1371] fix: fixes bp metadata desc issue and adds architecture desc attribute (#1374) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 12 +++++++++++- cli/bpmetadata/markdown_test.go | 18 ++++++++++++++++++ cli/bpmetadata/types.go | 7 ++++--- cli/testdata/bpmetadata/md/list-content.md | 4 ++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 64195fa22ca..9522a0e1a6e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.5.1 +VERSION=v0.5.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 82abae7c76d..124bc3f48d0 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -200,6 +200,7 @@ func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { } // create descriptions + i.Description = &BlueprintDescription{} tagline, err := getMdContent(readmeContent, -1, -1, "Tagline", true) if err == nil { i.Description.Tagline = tagline.literal @@ -215,6 +216,16 @@ func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { i.Description.PreDeploy = preDeploy.literal } + var archListToSet []string + architecture, err := getMdContent(readmeContent, -1, -1, "Architecture", true) + if err == nil { + for _, li := range architecture.listItems { + archListToSet = append(archListToSet, li.text) + } + + i.Description.Architecture = archListToSet + } + // create icon iPath := path.Join(repoDetails.Source.RootPath, iconFilePath) exists, _ := fileExists(iPath) @@ -239,7 +250,6 @@ func createInterfaces(bpPath string, interfaces *BlueprintInterface) (*Blueprint } func createContent(bpPath string, rootPath string, readmeContent []byte, content *BlueprintContent) *BlueprintContent { - //var content BlueprintContent var docListToSet []BlueprintListContent documentation, err := getMdContent(readmeContent, -1, -1, "Documentation", true) if err == nil { diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go index 12ee96da5e4..3d765afa9de 100644 --- a/cli/bpmetadata/markdown_test.go +++ b/cli/bpmetadata/markdown_test.go @@ -91,6 +91,24 @@ func TestProcessMarkdownContent(t *testing.T) { getContent: true, want: nil, }, + { + name: "Architecture description exists", + fileName: "list-content.md", + level: -1, + order: -1, + title: "Architecture", + getContent: true, + want: &mdContent{ + listItems: []mdListItem{ + mdListItem{ + text: "User requests are sent to the front end, which is deployed on two Cloud Run services as containers to support high scalability applications.", + }, + mdListItem{ + text: "The request then lands on the middle tier, which is the API layer that provides access to the backend. This is also deployed on Cloud Run for scalability and ease of deployment in multiple languages. This middleware is a Golang based API.", + }, + }, + }, + }, { name: "content by head title does not exist", fileName: "simple-content.md", diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 25466fed1c4..e45af60cb7c 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -62,9 +62,10 @@ type BlueprintActuationTool struct { } type BlueprintDescription struct { - Tagline string `json:",omitempty" yaml:",omitempty"` - Detailed string `json:",omitempty" yaml:",omitempty"` - PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` + Tagline string `json:",omitempty" yaml:",omitempty"` + Detailed string `json:",omitempty" yaml:",omitempty"` + PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` + Architecture []string `json:"architecture,omitempty" yaml:"architecture,omitempty"` } type BlueprintMiscContent struct { diff --git a/cli/testdata/bpmetadata/md/list-content.md b/cli/testdata/bpmetadata/md/list-content.md index 25176e5f16a..b214bf29836 100644 --- a/cli/testdata/bpmetadata/md/list-content.md +++ b/cli/testdata/bpmetadata/md/list-content.md @@ -29,3 +29,7 @@ It creates projects and configures aspects like Shared VPC connectivity, IAM acc ### preDeploy To deploy this blueprint you must have an active billing account and billing permissions. + +### Architecture +1. User requests are sent to the front end, which is deployed on two Cloud Run services as containers to support high scalability applications. +2. The request then lands on the middle tier, which is the API layer that provides access to the backend. This is also deployed on Cloud Run for scalability and ease of deployment in multiple languages. This middleware is a Golang based API. From a6d0bddc0fbee3b241bc16f0017d74967907b93d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 1 Feb 2023 13:20:39 -0800 Subject: [PATCH 0247/1371] chore: ignore concourse (#1377) --- .github/renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/renovate.json b/.github/renovate.json index a1a61dfe714..bb3b2c706ac 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -16,6 +16,7 @@ "stabilityDays":0 }, "separateMajorMinor":false, + "ignorePaths": ["infra/concourse/**"], "packageRules": [ { "matchPaths": [".github/**"], From b40e92197dec425d564a120b4bda6ef2baffa87a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 2 Feb 2023 01:02:48 +0000 Subject: [PATCH 0248/1371] chore(deps): update peter-evans/create-pull-request digest to ec919b7 (#1369) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index f56950263f6..ac557f5356a 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@84c5454c6e165b9ff002651085afb89402cd486a + uses: peter-evans/create-pull-request@ec919b7792ececbf1eb42fb7173dafc48a596f81 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 1416fb5f4b8fdec03507b050d73484b439c063dd Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 6 Feb 2023 12:11:48 -0600 Subject: [PATCH 0249/1371] chore: enable comment trigger (#1382) --- .../test-org/ci-triggers/triggers.tf | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index adb4433b4d3..be07291f231 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -24,7 +24,8 @@ resource "google_cloudbuild_trigger" "lint_trigger" { owner = each.value.gh_org name = each.key pull_request { - branch = ".*" + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" } } @@ -41,7 +42,8 @@ resource "google_cloudbuild_trigger" "int_trigger" { owner = each.value.gh_org name = each.key pull_request { - branch = ".*" + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" } } substitutions = merge( @@ -103,7 +105,8 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_integration_tests" { owner = "GoogleCloudPlatform" name = "terraform-validator" pull_request { - branch = ".*" + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" } } substitutions = { @@ -127,7 +130,8 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_unit_tests" { owner = "GoogleCloudPlatform" name = "terraform-validator" pull_request { - branch = ".*" + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" } } substitutions = { @@ -173,7 +177,8 @@ resource "google_cloudbuild_trigger" "tf_validator_pull_license_check" { owner = "GoogleCloudPlatform" name = "terraform-validator" pull_request { - branch = ".*" + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" } } @@ -205,7 +210,8 @@ resource "google_cloudbuild_trigger" "forseti_lint" { owner = "forseti-security" name = "terraform-google-forseti" pull_request { - branch = ".*" + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" } } @@ -220,7 +226,8 @@ resource "google_cloudbuild_trigger" "forseti_int" { owner = "forseti-security" name = "terraform-google-forseti" pull_request { - branch = ".*" + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" } } substitutions = { @@ -243,7 +250,8 @@ resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { owner = values(local.example_foundation)[0]["gh_org"] name = keys(local.example_foundation)[0] pull_request { - branch = ".*" + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" } } substitutions = { From 710ebd75f7f161de1d16e9d5516af86b142edb7a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 7 Feb 2023 15:00:10 -0800 Subject: [PATCH 0250/1371] chore: fix variable name (#1384) --- infra/terraform/modules/repo_file/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/modules/repo_file/main.tf b/infra/terraform/modules/repo_file/main.tf index 3422691a371..84eef481506 100644 --- a/infra/terraform/modules/repo_file/main.tf +++ b/infra/terraform/modules/repo_file/main.tf @@ -28,7 +28,7 @@ data "github_repository" "repo" { name = each.value } -resource "github_repository_file" "renovate_json" { +resource "github_repository_file" "file" { for_each = data.github_repository.repo repository = each.value.name branch = each.value.default_branch From de2267850c6f7316b7454b16d3fe012f63777d70 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 8 Feb 2023 08:15:40 -0800 Subject: [PATCH 0251/1371] chore: add trusted-contribution.yml (#1385) --- infra/terraform/test-org/github/protection.tf | 16 ++++++++++++++ .../github/resources/trusted-contribution.yml | 22 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 infra/terraform/test-org/github/resources/trusted-contribution.yml diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 8259f58004e..60bfa4d8e0e 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -99,6 +99,22 @@ module "conventional-commit-lint_yaml_gcp" { content = file("${path.module}/resources/conventional-commit-lint.yaml") } +module "trusted-contribution_yml_tgm" { + source = "../../modules/repo_file" + org = "terraform-google-modules" + repo_list = module.repos_tgm.repos + filename = ".github/trusted-contribution.yml" + content = file("${path.module}/resources/trusted-contribution.yml") +} + +module "trusted-contribution_yml_gcp" { + source = "../../modules/repo_file" + org = "GoogleCloudPlatform" + repo_list = module.repos_gcp.repos + filename = ".github/trusted-contribution.yml" + content = file("${path.module}/resources/trusted-contribution.yml") +} + module "codeowners_tgm" { source = "../../modules/codeowners_file" org = "terraform-google-modules" diff --git a/infra/terraform/test-org/github/resources/trusted-contribution.yml b/infra/terraform/test-org/github/resources/trusted-contribution.yml new file mode 100644 index 00000000000..7ff60faeb31 --- /dev/null +++ b/infra/terraform/test-org/github/resources/trusted-contribution.yml @@ -0,0 +1,22 @@ +# Copyright 2023 Google LLC +# +# 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. + +annotations: + - type: comment + text: "/gcbrun" +trustedContributors: + - release-please[bot] + - renovate[bot] + - forking-renovate[bot] + - dependabot[bot] From 6d95aa28d5aa67255b1a8328df6eadce5bd7c4f4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 8 Feb 2023 16:37:18 -0800 Subject: [PATCH 0252/1371] chore: add trusted-contribution.yml (#1386) --- .github/trusted-contribution.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/trusted-contribution.yml diff --git a/.github/trusted-contribution.yml b/.github/trusted-contribution.yml new file mode 100644 index 00000000000..7ff60faeb31 --- /dev/null +++ b/.github/trusted-contribution.yml @@ -0,0 +1,22 @@ +# Copyright 2023 Google LLC +# +# 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. + +annotations: + - type: comment + text: "/gcbrun" +trustedContributors: + - release-please[bot] + - renovate[bot] + - forking-renovate[bot] + - dependabot[bot] From 0b49df163578c69e06652f5daf42226dd430bcee Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 15 Feb 2023 10:02:56 -0800 Subject: [PATCH 0253/1371] chore: add cloud-foundation-bot and renovate-bot (#1387) --- .github/trusted-contribution.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/trusted-contribution.yml b/.github/trusted-contribution.yml index 7ff60faeb31..2889bbc6dc6 100644 --- a/.github/trusted-contribution.yml +++ b/.github/trusted-contribution.yml @@ -19,4 +19,6 @@ trustedContributors: - release-please[bot] - renovate[bot] - forking-renovate[bot] + - renovate-bot - dependabot[bot] + - cloud-foundation-bot From a274079fd3719d70641b7a471d836c262fe47ca7 Mon Sep 17 00:00:00 2001 From: Prabhu <18209477+prabhu34@users.noreply.github.com> Date: Wed, 15 Feb 2023 18:23:25 +0000 Subject: [PATCH 0254/1371] feat: added cloud functions to the repo list (#1388) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 7be4198327c..b3aab0864d7 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -506,5 +506,12 @@ locals { owners = "@gtsorbo @niranjankl" topics = join(",", [local.common_topics.devtools]) }, + { + name = "terraform-google-cloud-functions" + org = "GoogleCloudPlatform" + description = "Deploys Cloud Functions (Gen 2)" + owners = "@prabhu34" + topics = "cloudfunctions,functions,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" + }, ] } From 9cb80a50417be19a483f3c0f8b8da5deff95ed61 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 15 Feb 2023 12:58:39 -0800 Subject: [PATCH 0255/1371] chore: update renovate (#1389) --- .github/renovate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index bb3b2c706ac..2c905a3d3ed 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -16,7 +16,7 @@ "stabilityDays":0 }, "separateMajorMinor":false, - "ignorePaths": ["infra/concourse/**"], + "ignorePaths": ["infra/concourse/**", "config-connector/**"], "packageRules": [ { "matchPaths": [".github/**"], From 80b2770e66fc3e651bee61af7e368bb0f469dcb9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 15 Feb 2023 21:06:38 +0000 Subject: [PATCH 0256/1371] chore(deps): update peter-evans/create-pull-request digest to 951d1b8 (#1390) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ac557f5356a..bc210e4d5d2 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@ec919b7792ececbf1eb42fb7173dafc48a596f81 + uses: peter-evans/create-pull-request@951d1b87f0fa1a50266797110286ac276d822c5e with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From a98e6e1b290e75573549fe9dd00168187c67ec5f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 22 Feb 2023 12:37:05 -0800 Subject: [PATCH 0257/1371] chore: add stale (#1394) --- .github/workflows/stale.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000000..e46cd34fc1f --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +# Copyright 2023 Google LLC +# +# 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. + +name: "Close stale issues" +on: + schedule: + - cron: "0 23 * * *" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v7 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' + stale-pr-message: 'This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' + exempt-issue-labels: triaged From 3f09b0732e201054c8ec69d148ed9500853aea4e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 22 Feb 2023 13:04:37 -0800 Subject: [PATCH 0258/1371] chore: add dpebot to repos (#1399) --- infra/terraform/modules/repositories/main.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index 56c00054a54..d63ce2b14de 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -33,3 +33,10 @@ resource "github_repository" "repo" { squash_merge_commit_message = "BLANK" squash_merge_commit_title = "PR_TITLE" } + +resource "github_repository_collaborator" "dpebot" { + for_each = github_repository.repo + repository = each.value.name + username = "dpebot" + permission = "pull" +} From 9f0e946fb67fc084aaf9a9546dc019a4e21a5377 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 22 Feb 2023 23:03:42 -0600 Subject: [PATCH 0259/1371] chore: Update Tools to 1.10.7 (#1378) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index bcc022852eb..72a8ec2fb17 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.3.7 +TERRAFORM_VERSION := 1.3.9 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 415.0.0 +CLOUD_SDK_VERSION := 419.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -30,9 +30,9 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.24 +KPT_VERSION := 1.0.0-beta.27 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 0.5.1 +CFT_CLI_VERSION := 0.5.2 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.23.16 TFLINT_VERSION := 0.41.0 @@ -44,12 +44,12 @@ GOLANGCI_VERSION := 1.47.3 ASMCLI_VERSION := 1.12 KIND_VERSION := 0.17.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.9.2 +GATOR_VERSION := 3.11.0 OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.13.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 2005e8fe7202901490aa9b6c86c8d3bf4cac41d9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 23 Feb 2023 08:19:14 -0800 Subject: [PATCH 0260/1371] chore: update renovate (#1392) --- .github/renovate.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 2c905a3d3ed..59232cf091b 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -7,7 +7,6 @@ ":rebaseStalePrs" ], "stabilityDays":7, - "ignorePaths": [], "labels": ["dependencies"], "vulnerabilityAlerts":{ "labels":[ @@ -16,7 +15,8 @@ "stabilityDays":0 }, "separateMajorMinor":false, - "ignorePaths": ["infra/concourse/**", "config-connector/**"], + "ignorePaths": ["infra/concourse/**", "config-connector/**", "docs/**"], + "additionalBranchPrefix": "{{parentDir}}-", "packageRules": [ { "matchPaths": [".github/**"], @@ -24,7 +24,8 @@ }, { "matchDepTypes": ["require"], - "postUpdateOptions": ["gomodTidy"] + "postUpdateOptions": ["gomodTidy"], + "groupName": "GO modules" }, { "matchPackageNames": ["go"], From 3b05220845881efe81ec7fa51c439ac80a589643 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 23 Feb 2023 16:26:11 +0000 Subject: [PATCH 0261/1371] chore(deps): update peter-evans/create-pull-request digest to 24b0f8e (#1402) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index bc210e4d5d2..56d5cc157be 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@951d1b87f0fa1a50266797110286ac276d822c5e + uses: peter-evans/create-pull-request@24b0f8edad74dd5b08956ea2655c6818355ef8a6 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 54451830c5f088e4659c7882c9460227b8ed510b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 24 Feb 2023 16:44:30 +0000 Subject: [PATCH 0262/1371] chore(deps): update actions/github-script action to v6.4.0 (#1406) --- .github/workflows/build-push-cft-devtools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 47699ff381a..0a5b8d7e9ff 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -44,7 +44,7 @@ jobs: - name: Open issue if failed if: ${{ failure() }} - uses: actions/github-script@v6.3.3 + uses: actions/github-script@v6.4.0 with: script: |- github.rest.issues.create({ From a2f6254181f37619b63fb74086c25773948093cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Feb 2023 12:19:29 -0800 Subject: [PATCH 0263/1371] chore(deps): bump github.com/hashicorp/go-getter from 1.6.2 to 1.7.0 in /infra/blueprint-test (#1395) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 612 +++++++++++++++++++++++++++++++++++- 2 files changed, 603 insertions(+), 11 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 6bff5de2961..8ec13d94a06 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -39,7 +39,7 @@ require ( github.com/googleapis/gax-go/v2 v2.7.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.6.2 // indirect + github.com/hashicorp/go-getter v1.7.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index b18f95b8ff0..29fbe617909 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -4,19 +4,188 @@ cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSR cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.109.0 h1:38CZoKGlCnPZjGdyj0ZfpoGae0/wgNfy5F0byyxg0Gk= cloud.google.com/go v0.109.0/go.mod h1:2sYycXt75t/CSB5R9M2wPU1tJmire7AQZTPtITcGBVE= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= cloud.google.com/go/iam v0.10.0 h1:fpP/gByFs6US1ma53v7VxhvbJpO2Aapng6wabJ99MuI= cloud.google.com/go/iam v0.10.0/go.mod h1:nXAECrMt2qHpF6RZUZseteD6QyanL68reN4OXPw0UWM= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.29.0 h1:6weCgzRvMg7lzuUurI4697AqIRPU1SvzHhynwpW31jI= cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +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= github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381 h1:UdVx6rgwZeZr1hDMRLt2CDFw7sLRlg5Uxq60seIIWJU= @@ -30,7 +199,7 @@ github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:o github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= -github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.188 h1:NCN6wFDWKU72Ka+f7cCk3HRj1KxkEXhRdr7lO8oBRRQ= github.com/aws/aws-sdk-go v1.44.188/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= @@ -38,11 +207,21 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +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/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= 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= @@ -51,14 +230,21 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= @@ -69,18 +255,27 @@ github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3a github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -90,8 +285,10 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 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.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= @@ -100,9 +297,15 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -110,18 +313,45 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +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/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.2.1 h1:RY7tHKZcRlk788d5WSo/e83gOyyy742E8GSs771ySpg= github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= 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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/terratest v0.41.9 h1:jyygu23iLcEFjGQhlvRx4R0EJVqOoriP+Ire4U9cZA0= github.com/gruntwork-io/terratest v0.41.9/go.mod h1:qH1xkPTTGx30XkMHw8jAVIbzqheSjIa5IyiTwSV2vKI= @@ -130,13 +360,12 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= -github.com/hashicorp/go-getter v1.6.2/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= +github.com/hashicorp/go-getter v1.7.0 h1:bzrYP+qu/gMrL1au7/aDvkoOVGUJpeKBgbqRHACAFDY= +github.com/hashicorp/go-getter v1.7.0/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -146,9 +375,10 @@ github.com/hashicorp/hcl/v2 v2.15.0 h1:CPDXO6+uORPjKflkWCCwoWc9uRp+zSIPcCQ+BrxV7 github.com/hashicorp/hcl/v2 v2.15.0/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= github.com/hashicorp/terraform-json v0.14.0 h1:sh9iZ1Y8IFJLx+xQiKHGud6/TSUCM0N8e17dKDpqV7s= github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -156,7 +386,9 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfC 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/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -178,10 +410,9 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= @@ -203,6 +434,7 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -214,7 +446,9 @@ github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 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= @@ -232,7 +466,7 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tmccombs/hcl2json v0.3.6 h1:QVZ1FKXXk9LBpaWTUvJXgdhsllpDmWnfr4/4FP+vBRQ= github.com/tmccombs/hcl2json v0.3.6/go.mod h1:vRUcMTGRHWMSqa/T1yDk3Jft2Ct9MFDxoS422aASPdo= -github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= @@ -243,6 +477,11 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +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= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= @@ -251,25 +490,58 @@ github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeW github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +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.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= 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= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/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.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -284,21 +556,72 @@ golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= 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= +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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -306,7 +629,15 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -315,17 +646,61 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20220517195934-5e4e11fc645e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -333,10 +708,12 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn 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.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= +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= 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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/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= @@ -345,6 +722,7 @@ golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 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= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -355,18 +733,105 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +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/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= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= 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= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= google.golang.org/api v0.108.0 h1:WVBc/faN0DkKtR43Q/7+tPny9ZoLZdIiAyG5Q9vFClg= google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -374,6 +839,7 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -383,9 +849,101 @@ google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa h1:qQPhfbPO23fwm/9lQr91L1u62Zo6cm+zI+slZT+uf+o= google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -393,13 +951,39 @@ google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiq google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -408,10 +992,12 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -420,6 +1006,7 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -433,9 +1020,14 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh 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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a h1:s6zvHjyDQX1NtVT88pvw2tddqhqY0Bz0Gbnn+yctsFU= k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a/go.mod h1:/BYxry62FuDzmI+i9B+X2pqfySRmSOW2ARmj5Zbqhj0= 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/kustomize/kyaml v0.13.10 h1:htPMvrk7ZDfTDyrgXIm/2mfmcYJHEmRb6s+yCLgtNms= sigs.k8s.io/kustomize/kyaml v0.13.10/go.mod h1:PzDV8gSaY8mwdd7nR9zg7Pw5yh9fu8G+ElAXoQVzBq8= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= From c6c240916443082fbf13f08d722bbb88ed0545bf Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Fri, 24 Feb 2023 20:38:36 -0800 Subject: [PATCH 0264/1371] feat: adds tf formatting to module gen helper function (#1332) Co-authored-by: Awais Malik --- .../developer-tools/build/scripts/task_helper_functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 117f8f35c4e..70aaaece12f 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -406,6 +406,11 @@ function generate_modules() { if [[ -e /workspace/autogen_modules.json ]]; then autogen_modules=$(jq '.' /workspace/autogen_modules.json) python3 /usr/local/bin/generate_modules.py "$autogen_modules" + + # formatting the generated modules since formatting does not apply + # to jinja templates + echo "Running terraform fmt" + terraform fmt -recursive fi } From 9f87d3c693104d6bd5e5a9148fe66523425c467d Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 27 Feb 2023 09:36:31 -0800 Subject: [PATCH 0265/1371] fix: updates cli tagging for automatic upload to go docs (#1410) Co-authored-by: Awais Malik --- .github/workflows/release-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 74c5025b03a..52a67c9ecbb 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -77,7 +77,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tag_name: ${{ env.CURRENT_VERSION }} + tag_name: cli/${{ env.CURRENT_VERSION }} release_name: CLI Release ${{ env.CURRENT_VERSION }} draft: false prerelease: false diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 56d5cc157be..84ddf594cbf 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -43,7 +43,7 @@ jobs: LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("CLI Release"))][0].tag_name' | tr -d "v") elif [ "$tool" == "KUBECTL" ]; then # get latest KUBECTL_MINOR release - LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name | sub(".*v(?[0-9]\\.[0-9]\\.[0-9])"; .semver)') elif [ "$tool" == "GATOR" ]; then # get latest GATOR_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${GATOR_MINOR}'"))][0].tag_name' | tr -d "v") From c2ebdada397602304c2d8c08fddcbd3dd8b84ab3 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Mon, 27 Feb 2023 10:17:29 -0800 Subject: [PATCH 0266/1371] fix: honor repo url when manually authored (#1400) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 54 ++++++++++++++++-------------------- cli/bpmetadata/repo.go | 23 ++++++++++------ cli/bpmetadata/tfconfig.go | 4 +-- cli/util/git.go | 18 ++++++------ cli/util/git_test.go | 56 ++++++++++++++++++++++++++++++-------- 6 files changed, 94 insertions(+), 63 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 9522a0e1a6e..8bb390ebcf5 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.5.2 +VERSION=v0.5.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 124bc3f48d0..140f464141d 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -115,7 +115,7 @@ func generateMetadataForBpPath(bpPath string) error { func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (*BlueprintMetadata, error) { // verfiy that the blueprint path is valid & get repo details - repoDetails, err := getRepoDetailsByPath(bpPath) + repoDetails, err := getRepoDetailsByPath(bpPath, bpMetadataObj.Spec.Info.Source) if err != nil { return nil, err } @@ -142,16 +142,19 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error reading blueprint readme markdown: %w", err) } - info, err := createInfo(bpPath, readmeContent) + // create blueprint info + err = bpMetadataObj.Spec.Info.create(bpPath, readmeContent) if err != nil { return nil, fmt.Errorf("error creating blueprint info: %w", err) } - interfaces, err := createInterfaces(bpPath, &bpMetadataObj.Spec.Interfaces) + // create blueprint interfaces i.e. variables & outputs + err = bpMetadataObj.Spec.Interfaces.create(bpPath) if err != nil { return nil, fmt.Errorf("error creating blueprint interfaces: %w", err) } + // get blueprint requirements rolesCfgPath := path.Join(repoDetails.Source.RootPath, tfRolesFileName) svcsCfgPath := path.Join(repoDetails.Source.RootPath, tfServicesFileName) requirements, err := getBlueprintRequirements(rolesCfgPath, svcsCfgPath) @@ -159,30 +162,24 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error creating blueprint requirements: %w", err) } - content := createContent(bpPath, repoDetails.Source.RootPath, readmeContent, &bpMetadataObj.Spec.Content) + bpMetadataObj.Spec.Requirements = *requirements - bpMetadataObj.Spec = BlueprintMetadataSpec{ - Info: *info, - Content: *content, - Interfaces: *interfaces, - Requirements: *requirements, - } + // create blueprint content i.e. documentation, icons, etc. + bpMetadataObj.Spec.Content.create(bpPath, repoDetails.Source.RootPath, readmeContent) return bpMetadataObj, nil } -func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { - i := &BlueprintInfo{} +func (i *BlueprintInfo) create(bpPath string, readmeContent []byte) error { title, err := getMdContent(readmeContent, 1, 1, "", false) if err != nil { - return nil, err + return err } i.Title = title.literal - - repoDetails, err := getRepoDetailsByPath(bpPath) + repoDetails, err := getRepoDetailsByPath(bpPath, i.Source) if err != nil { - return nil, err + return err } i.Source = &BlueprintRepoDetail{ @@ -233,23 +230,22 @@ func createInfo(bpPath string, readmeContent []byte) (*BlueprintInfo, error) { i.Icon = iconFilePath } - return i, nil + return nil } -func createInterfaces(bpPath string, interfaces *BlueprintInterface) (*BlueprintInterface, error) { - i, err := getBlueprintInterfaces(bpPath) +func (i *BlueprintInterface) create(bpPath string) error { + interfaces, err := getBlueprintInterfaces(bpPath) if err != nil { - return nil, err + return err } - if interfaces.VariableGroups != nil { - i.VariableGroups = interfaces.VariableGroups - } + i.Variables = interfaces.Variables + i.Outputs = interfaces.Outputs - return i, nil + return nil } -func createContent(bpPath string, rootPath string, readmeContent []byte, content *BlueprintContent) *BlueprintContent { +func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent []byte) { var docListToSet []BlueprintListContent documentation, err := getMdContent(readmeContent, -1, -1, "Documentation", true) if err == nil { @@ -262,24 +258,22 @@ func createContent(bpPath string, rootPath string, readmeContent []byte, content docListToSet = append(docListToSet, doc) } - content.Documentation = docListToSet + c.Documentation = docListToSet } // create sub-blueprints modPath := path.Join(bpPath, modulesPath) modContent, err := getModules(modPath) if err == nil { - content.SubBlueprints = modContent + c.SubBlueprints = modContent } // create examples exPath := path.Join(rootPath, examplesPath) exContent, err := getExamples(exPath) if err == nil { - content.Examples = exContent + c.Examples = exContent } - - return content } func WriteMetadata(obj *BlueprintMetadata, bpPath string) error { diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 4b0d402eaa5..8d102873ea2 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -24,23 +24,29 @@ const ( // getRepoDetailsByPath takes a local path for a blueprint and tries // to get repo details that include its name, path and type -func getRepoDetailsByPath(bpPath string) (*repoDetail, error) { - bpPath = strings.TrimSuffix(bpPath, "/") +func getRepoDetailsByPath(bpPath string, sourceUrl *BlueprintRepoDetail) (*repoDetail, error) { rootRepoPath := getBpRootPath(bpPath) - repoName, err := util.GetRepoName(rootRepoPath) - if err != nil { - return nil, fmt.Errorf("error getting the repo name from the provided local repo path: %w", err) + if sourceUrl == nil { + bpPath = strings.TrimSuffix(bpPath, "/") + repoUrl, err := util.GetRepoUrl(bpPath) + if err != nil { + return nil, fmt.Errorf("error getting the repo URL from the provided local repo path: %w", err) + } + + sourceUrl = &BlueprintRepoDetail{ + Repo: repoUrl, + } } - repoUrl, err := util.GetRepoUrl(bpPath) + repoName, err := util.GetRepoName(sourceUrl.Repo) if err != nil { - return nil, fmt.Errorf("error getting the repo URL from the provided local repo path: %w", err) + return nil, fmt.Errorf("error getting the repo name from the provided local repo path: %w", err) } return &repoDetail{ Name: repoName, Source: &repoSource{ - Path: repoUrl.String(), + Path: sourceUrl.Repo, SourceType: "git", RootPath: rootRepoPath, }, @@ -50,7 +56,6 @@ func getRepoDetailsByPath(bpPath string) (*repoDetail, error) { // getBpRootPath determines if the provided bpPath is for a submodule // and resolves it to the root module path if necessary func getBpRootPath(bpPath string) string { - if strings.Contains(bpPath, nestedBpPath) { i := strings.Index(bpPath, nestedBpPath) bpPath = bpPath[0:i] diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index 4e84d1db8f5..d8dd1aeaa47 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -217,7 +217,7 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { }, nil } -//build variable +// build variable func getBlueprintVariable(modVar *tfconfig.Variable) BlueprintVariable { return BlueprintVariable{ Name: modVar.Name, @@ -228,7 +228,7 @@ func getBlueprintVariable(modVar *tfconfig.Variable) BlueprintVariable { } } -//build output +// build output func getBlueprintOutput(modOut *tfconfig.Output) BlueprintOutput { return BlueprintOutput{ Name: modOut.Name, diff --git a/cli/util/git.go b/cli/util/git.go index a0c063d244b..8b361b3b07d 100644 --- a/cli/util/git.go +++ b/cli/util/git.go @@ -11,13 +11,13 @@ import ( const defaultRemote = "origin" // getRepoName finds upstream repo name from a given repo directory -func GetRepoName(dir string) (string, error) { - remoteUrl, err := GetRepoUrl(dir) +func GetRepoName(repoUrl string) (string, error) { + u, err := url.Parse(repoUrl) if err != nil { - return "", fmt.Errorf("error getting remote URL: %w", err) + return "", fmt.Errorf("malformed repo URL: %w", err) } - trimmedRemotePath := strings.TrimSuffix(remoteUrl.Path, "/") + trimmedRemotePath := strings.TrimSuffix(u.Path, "/") splitRemotePath := strings.Split(trimmedRemotePath, "/") // expect path to be /owner/repo if len(splitRemotePath) != 3 { @@ -29,22 +29,22 @@ func GetRepoName(dir string) (string, error) { } // getRepoName finds upstream repo name from a given repo directory -func GetRepoUrl(dir string) (*url.URL, error) { +func GetRepoUrl(dir string) (string, error) { opt := &git.PlainOpenOptions{DetectDotGit: true} r, err := git.PlainOpenWithOptions(dir, opt) if err != nil { - return nil, fmt.Errorf("error opening git dir %s: %w", dir, err) + return "", fmt.Errorf("error opening git dir %s: %w", dir, err) } rm, err := r.Remote(defaultRemote) if err != nil { - return nil, fmt.Errorf("error finding remote %s in git dir %s: %w", defaultRemote, dir, err) + return "", fmt.Errorf("error finding remote %s in git dir %s: %w", defaultRemote, dir, err) } // validate remote URL remoteURL, err := url.Parse(rm.Config().URLs[0]) if err != nil { - return nil, fmt.Errorf("error parsing remote URL: %w", err) + return "", fmt.Errorf("error parsing remote URL: %w", err) } - return remoteURL, nil + return remoteURL.String(), nil } diff --git a/cli/util/git_test.go b/cli/util/git_test.go index 052f952fcd5..732234d71b1 100644 --- a/cli/util/git_test.go +++ b/cli/util/git_test.go @@ -9,7 +9,7 @@ import ( "github.com/go-git/go-git/v5/config" ) -func TestGetRepoName(t *testing.T) { +func TestGetRepoUrl(t *testing.T) { tests := []struct { name string repo string @@ -22,25 +22,19 @@ func TestGetRepoName(t *testing.T) { name: "simple", repo: "https://github.com/foo/bar", remote: defaultRemote, - want: "bar", + want: "https://github.com/foo/bar", }, { name: "simple trailing", repo: "https://gitlab.com/foo/bar/", remote: defaultRemote, - want: "bar", + want: "https://gitlab.com/foo/bar/", }, { name: "no scheme", repo: "github.com/foo/bar", remote: defaultRemote, - want: "bar", - }, - { - name: "invalid path", - repo: "github.com/foo/bar/baz", - remote: defaultRemote, - wantErr: true, + want: "github.com/foo/bar", }, { name: "invalid remote", @@ -53,13 +47,51 @@ func TestGetRepoName(t *testing.T) { repo: "https://github.com/foo/bar", subDir: "modules/bp1", remote: defaultRemote, - want: "bar", + want: "https://github.com/foo/bar", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { dir := tempGitRepoWithRemote(t, tt.repo, tt.remote, tt.subDir) - got, err := GetRepoName(dir) + got, err := GetRepoUrl(dir) + if (err != nil) != tt.wantErr { + t.Errorf("GetRepoUrl() error = %v, wantErr %v", err, tt.wantErr) + return + } + + if got != tt.want { + t.Errorf("GetRepoUrl() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestGetRepoNameFromUrl(t *testing.T) { + tests := []struct { + name string + repoUrl string + want string + wantErr bool + }{ + { + name: "simple", + repoUrl: "https://github.com/foo/bar", + want: "bar", + }, + { + name: "no scheme", + repoUrl: "github.com/foo/bar", + want: "bar", + }, + { + name: "invalid path", + repoUrl: "github.com/foo/bar/baz", + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := GetRepoName(tt.repoUrl) if (err != nil) != tt.wantErr { t.Errorf("getRepoName() error = %v, wantErr %v", err, tt.wantErr) return From 5f01e1ffd04d9ad47bf7bdb28c92716028d1977f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 28 Feb 2023 08:57:36 -0800 Subject: [PATCH 0267/1371] fix(deps): update go modules (#1416) --- infra/blueprint-test/go.mod | 42 +++++++-------- infra/blueprint-test/go.sum | 104 ++++++++++++++++-------------------- 2 files changed, 67 insertions(+), 79 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 8ec13d94a06..c0043c7a6b7 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -3,26 +3,26 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.18 require ( - github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381 - github.com/gruntwork-io/terratest v0.41.9 + github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230224220849-babdb61f37fe + github.com/gruntwork-io/terratest v0.41.11 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/otiai10/copy v1.9.0 github.com/stretchr/testify v1.8.1 github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.7.0 - sigs.k8s.io/kustomize/kyaml v0.13.10 + golang.org/x/mod v0.8.0 + sigs.k8s.io/kustomize/kyaml v0.14.0 ) require ( - cloud.google.com/go v0.109.0 // indirect + cloud.google.com/go v0.110.0 // indirect cloud.google.com/go/compute v1.18.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.10.0 // indirect + cloud.google.com/go/iam v0.12.0 // indirect cloud.google.com/go/storage v1.29.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/aws/aws-sdk-go v1.44.188 // indirect + github.com/aws/aws-sdk-go v1.44.209 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-errors/errors v1.4.2 // indirect @@ -35,7 +35,7 @@ require ( github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.1 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.7.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -43,8 +43,8 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/hcl/v2 v2.15.0 // indirect - github.com/hashicorp/terraform-json v0.14.0 // indirect + github.com/hashicorp/hcl/v2 v2.16.1 // indirect + github.com/hashicorp/terraform-json v0.15.0 // indirect github.com/jinzhu/copier v0.3.5 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -57,23 +57,23 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - github.com/tmccombs/hcl2json v0.3.6 // indirect + github.com/tmccombs/hcl2json v0.4.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/xlab/treeprint v1.1.0 // indirect - github.com/zclconf/go-cty v1.12.1 // indirect + github.com/zclconf/go-cty v1.13.0 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.5.0 // indirect - golang.org/x/net v0.5.0 // indirect - golang.org/x/oauth2 v0.4.0 // indirect - golang.org/x/sys v0.4.0 // indirect - golang.org/x/text v0.6.0 // indirect + golang.org/x/crypto v0.6.0 // indirect + golang.org/x/net v0.7.0 // indirect + golang.org/x/oauth2 v0.5.0 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/text v0.7.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.108.0 // indirect + google.golang.org/api v0.110.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa // indirect - google.golang.org/grpc v1.52.3 // indirect + google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 // indirect + google.golang.org/grpc v1.53.0 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a // indirect + k8s.io/kube-openapi v0.0.0-20230224204730-66828de6f33b // indirect ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 29fbe617909..67c4ffba2bd 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.109.0 h1:38CZoKGlCnPZjGdyj0ZfpoGae0/wgNfy5F0byyxg0Gk= -cloud.google.com/go v0.109.0/go.mod h1:2sYycXt75t/CSB5R9M2wPU1tJmire7AQZTPtITcGBVE= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -109,8 +109,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.10.0 h1:fpP/gByFs6US1ma53v7VxhvbJpO2Aapng6wabJ99MuI= -cloud.google.com/go/iam v0.10.0/go.mod h1:nXAECrMt2qHpF6RZUZseteD6QyanL68reN4OXPw0UWM= +cloud.google.com/go/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -188,20 +188,18 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS 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= -github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381 h1:UdVx6rgwZeZr1hDMRLt2CDFw7sLRlg5Uxq60seIIWJU= -github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20221109010843-1f7d0c07a381/go.mod h1:prNhhUAODrB2VqHVead9tB8nLU9ffY4e4jjBwLMNO1M= +github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230224220849-babdb61f37fe h1:1xI0kTkm4j3cYzBJc1hNOmWfFnO03FI6EHvb7x73G1Y= +github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230224220849-babdb61f37fe/go.mod h1:prNhhUAODrB2VqHVead9tB8nLU9ffY4e4jjBwLMNO1M= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.188 h1:NCN6wFDWKU72Ka+f7cCk3HRj1KxkEXhRdr7lO8oBRRQ= -github.com/aws/aws-sdk-go v1.44.188/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.209 h1:wZuiaA4eaqYZmoZXqGgNHqVD7y7kUGFvACDGBgowTps= +github.com/aws/aws-sdk-go v1.44.209/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= @@ -251,9 +249,7 @@ github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2Kv github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= -github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -315,8 +311,8 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -338,8 +334,8 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.1 h1:RY7tHKZcRlk788d5WSo/e83gOyyy742E8GSs771ySpg= -github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= 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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -353,8 +349,8 @@ github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1Yu github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gruntwork-io/terratest v0.41.9 h1:jyygu23iLcEFjGQhlvRx4R0EJVqOoriP+Ire4U9cZA0= -github.com/gruntwork-io/terratest v0.41.9/go.mod h1:qH1xkPTTGx30XkMHw8jAVIbzqheSjIa5IyiTwSV2vKI= +github.com/gruntwork-io/terratest v0.41.11 h1:EAHiK6PFWJCVkgW2yUompjSsZQzA0CfBcuqIaXtZdpk= +github.com/gruntwork-io/terratest v0.41.11/go.mod h1:qH1xkPTTGx30XkMHw8jAVIbzqheSjIa5IyiTwSV2vKI= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -366,15 +362,14 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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/hcl/v2 v2.15.0 h1:CPDXO6+uORPjKflkWCCwoWc9uRp+zSIPcCQ+BrxV7m8= -github.com/hashicorp/hcl/v2 v2.15.0/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= -github.com/hashicorp/terraform-json v0.14.0 h1:sh9iZ1Y8IFJLx+xQiKHGud6/TSUCM0N8e17dKDpqV7s= -github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= +github.com/hashicorp/hcl/v2 v2.16.1 h1:BwuxEMD/tsYgbhIW7UuI3crjovf3MzuFWiVgiv57iHg= +github.com/hashicorp/hcl/v2 v2.16.1/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= +github.com/hashicorp/terraform-json v0.15.0 h1:/gIyNtR6SFw6h5yzlbDbACyGvIhKtQi8mTsbkNd79lE= +github.com/hashicorp/terraform-json v0.15.0/go.mod h1:+L1RNzjDU5leLFZkHTFTbJXaoqUC6TqXlFgDoOXrtvk= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= @@ -401,7 +396,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -415,7 +409,6 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= @@ -428,7 +421,6 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.4.0 h1:umwcf7gbpEwf7WFzqmWwSv0CzbeMsae2u9ZvpP8j2q4= github.com/otiai10/mint v1.4.0/go.mod h1:gifjb2MYOoULtKLqUAEILUG/9KONW6f7YsJ6vQLTlFI= -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= @@ -436,15 +428,12 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: 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/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -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= @@ -464,8 +453,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tmccombs/hcl2json v0.3.6 h1:QVZ1FKXXk9LBpaWTUvJXgdhsllpDmWnfr4/4FP+vBRQ= -github.com/tmccombs/hcl2json v0.3.6/go.mod h1:vRUcMTGRHWMSqa/T1yDk3Jft2Ct9MFDxoS422aASPdo= +github.com/tmccombs/hcl2json v0.4.0 h1:U4NsBBHsAh7lU0vIC6IwmRYwXWMG6dEWHVu4JTjpj1A= +github.com/tmccombs/hcl2json v0.4.0/go.mod h1:B0ZpBthAKbQur6yZRKrtaqDmYLCvgnwHOBApE0faCpU= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -485,8 +474,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.12.1 h1:PcupnljUm9EIvbgSHQnHhUr3fO6oFmkOrvs2BAFNXXY= -github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA= +github.com/zclconf/go-cty v1.13.0 h1:It5dfKTTZHe9aeppbNOda3mN7Ag7sg6QkBNm6TkyFa0= +github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -504,9 +493,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -543,8 +531,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -582,7 +570,6 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -595,8 +582,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 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= @@ -622,8 +609,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= -golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= 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= @@ -702,12 +689,12 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.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.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= +golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= 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= @@ -718,8 +705,8 @@ golang.org/x/text v0.3.5/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.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 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= @@ -832,8 +819,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.108.0 h1:WVBc/faN0DkKtR43Q/7+tPny9ZoLZdIiAyG5Q9vFClg= -google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= 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= @@ -944,8 +931,8 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa h1:qQPhfbPO23fwm/9lQr91L1u62Zo6cm+zI+slZT+uf+o= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 h1:znp6mq/drrY+6khTAlJUDNFFcDGV2ENLYKpMq8SyCds= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= 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= @@ -981,8 +968,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -1023,11 +1010,12 @@ 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/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a h1:s6zvHjyDQX1NtVT88pvw2tddqhqY0Bz0Gbnn+yctsFU= -k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a/go.mod h1:/BYxry62FuDzmI+i9B+X2pqfySRmSOW2ARmj5Zbqhj0= +k8s.io/kube-openapi v0.0.0-20230224204730-66828de6f33b h1:4dkmFEDQj0ZBLKCxJ0R+qzhvZmEvRdRaaZAE06tR/Lg= +k8s.io/kube-openapi v0.0.0-20230224204730-66828de6f33b/go.mod h1:y5VtZWM9sHHc2ZodIH/6SHzXj+TPU5USoA8lcIeKEKY= 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/kustomize/kyaml v0.13.10 h1:htPMvrk7ZDfTDyrgXIm/2mfmcYJHEmRb6s+yCLgtNms= -sigs.k8s.io/kustomize/kyaml v0.13.10/go.mod h1:PzDV8gSaY8mwdd7nR9zg7Pw5yh9fu8G+ElAXoQVzBq8= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/kustomize/kyaml v0.14.0 h1:uzH0MzMtYypHW09LbMDk8k/lT/LSsUuCoZIuEGhIBNE= +sigs.k8s.io/kustomize/kyaml v0.14.0/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= From d574e98ffa4200091f35ce8200e480792c8e966a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 28 Feb 2023 09:29:13 -0800 Subject: [PATCH 0268/1371] chore: skip INT for metadata.yaml (#1415) --- infra/terraform/test-org/ci-triggers/triggers.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index be07291f231..85f8ea9ed2d 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -60,7 +60,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { ) filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", ".gitignore", ".github/**"] + ignored_files = ["**/*.md", ".gitignore", ".github/**", "**/metadata.yaml"] } resource "google_cloudbuild_trigger" "tf_validator_main_integration_tests" { From 034e6b4ece0ea1959d50bda1195726e9f9f2d0e0 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 10:14:37 -0800 Subject: [PATCH 0269/1371] chore(master): release blueprint-test 0.5.0 (#1371) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8c0c72ca316..b7ba136ec72 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.4.1" + "infra/blueprint-test": "0.5.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 4adfa7a62b6..0bb8c86bedd 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.5.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.4.1...infra/blueprint-test/v0.5.0) (2023-02-28) + + +### Features + +* update blueprint-test to GO 1.18 and test fixes ([#1373](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1373)) ([0234ad6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/0234ad6f0da169aec58a9fd848094907aa4b6851)) + + +### Bug Fixes + +* **deps:** update go modules ([#1416](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1416)) ([5f01e1f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5f01e1ffd04d9ad47bf7bdb28c92716028d1977f)) +* update blueprint-test for kpt v1.0.0-beta.16+ ([#1367](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1367)) ([3613491](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/36134916e2fd859b0aea4384c1b4a5ab79d65eac)) + ## [0.4.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.4.0...infra/blueprint-test/v0.4.1) (2023-01-10) From c4b9daf7141fc96ce3e4caacc8e154b415bf1a2f Mon Sep 17 00:00:00 2001 From: Imran Nayer <29933900+imrannayer@users.noreply.github.com> Date: Wed, 1 Mar 2023 13:40:18 -0600 Subject: [PATCH 0270/1371] chore: removed owner from cloud armor module (#1417) Co-authored-by: g-awmalik --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index b3aab0864d7..bd5be3987f6 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -496,7 +496,7 @@ locals { name = "terraform-google-cloud-armor" org = "GoogleCloudPlatform" description = "Deploy Cloud Armor Security policy" - owners = "@imrannayer @belgana" + owners = "@imrannayer" topics = join(",", [local.common_topics.compute, local.common_topics.net]) }, { From f6460aebdfd81990a7648894594116d382360582 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 2 Mar 2023 11:10:43 -0600 Subject: [PATCH 0271/1371] chore: onboard dynamic python webapp (#1419) --- .../terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/gsuite.tf | 23 ++++++++++--------- infra/terraform/test-org/org/locals.tf | 14 ++++++++--- infra/terraform/test-org/org/outputs.tf | 21 +++++++++-------- 4 files changed, 35 insertions(+), 24 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 473b5aee0e0..4050d4acd6b 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -31,6 +31,7 @@ locals { "example-foundation-app" = "terraform-example-foundation-app", "anthos-samples" = "anthos-samples" "docs-samples" = "terraform-docs-samples" + "dynamic-python-webapp" = "terraform-dynamic-python-webapp" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/gsuite.tf b/infra/terraform/test-org/org/gsuite.tf index 7db66646d86..14724284c56 100644 --- a/infra/terraform/test-org/org/gsuite.tf +++ b/infra/terraform/test-org/org/gsuite.tf @@ -39,8 +39,8 @@ locals { "roles/storage.admin", ] - ci_gsuite_sa_bucket = "ci-gsuite-sa-secrets" - ci_gsuite_sa_bucket_path = "gsuite-sa.json" + ci_gsuite_sa_bucket = "ci-gsuite-sa-secrets" + // ci_gsuite_sa_bucket_path = "gsuite-sa.json" } resource "google_folder" "ci_gsuite_sa_folder" { @@ -105,10 +105,10 @@ resource "google_billing_account_iam_member" "ci_gsuite_sa_billing" { } // Generate a json key and put it into the secrets bucket. - -resource "google_service_account_key" "ci_gsuite_sa" { - service_account_id = google_service_account.ci_gsuite_sa.id -} +//TODO(bbaiju): Re enable if needed for any CI +# resource "google_service_account_key" "ci_gsuite_sa" { +# service_account_id = google_service_account.ci_gsuite_sa.id +# } resource "google_storage_bucket" "ci_gsuite_sa" { name = local.ci_gsuite_sa_bucket @@ -123,11 +123,12 @@ resource "google_storage_bucket" "ci_gsuite_sa" { force_destroy = true } -resource "google_storage_bucket_object" "ci_gsuite_sa_json" { - name = local.ci_gsuite_sa_bucket_path - content = base64decode(google_service_account_key.ci_gsuite_sa.private_key) - bucket = google_storage_bucket.ci_gsuite_sa.name -} +//TODO(bbaiju): Re enable if needed for any CI +# resource "google_storage_bucket_object" "ci_gsuite_sa_json" { +# name = local.ci_gsuite_sa_bucket_path +# content = base64decode(google_service_account_key.ci_gsuite_sa.private_key) +# bucket = google_storage_bucket.ci_gsuite_sa.name +# } # Grant G-Suite project rights to cft_ci_group. # Required to be able to create new gsuite sa keys and to fetch diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index bd5be3987f6..a48785afea3 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -481,21 +481,21 @@ locals { { name = "terraform-google-waap" org = "GoogleCloudPlatform" - description = "Deploys the WAAP solution on Google Cloud." + description = "Deploys the WAAP solution on Google Cloud" owners = "@gtsorbo" topics = local.common_topics.ops }, { name = "terraform-google-cloud-workflows" org = "GoogleCloudPlatform" - description = "Manage Cloud Workflows with optional Scheduler or Event Arc triggers." + description = "Manage Workflows with optional Scheduler or Event Arc triggers" owners = "@anaik91" topics = join(",", [local.common_topics.serverless, local.common_topics.devtools]) }, { name = "terraform-google-cloud-armor" org = "GoogleCloudPlatform" - description = "Deploy Cloud Armor Security policy" + description = "Deploy Cloud Armor security policy" owners = "@imrannayer" topics = join(",", [local.common_topics.compute, local.common_topics.net]) }, @@ -513,5 +513,13 @@ locals { owners = "@prabhu34" topics = "cloudfunctions,functions,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" }, + { + name = "terraform-dynamic-python-webapp" + short_name = "dynamic-python-webapp" + org = "GoogleCloudPlatform" + description = "Deploy a dynamic python webapp" + owners = "@glasnt @donmccasland" + homepage_url = "avocano.dev" + }, ] } diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index 10ac8603951..baaa0a45f4f 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -50,18 +50,19 @@ output "ci_gsuite_sa_project_id" { value = module.ci_gsuite_sa_project.project_id } -output "ci_gsuite_sa_key" { - value = google_service_account_key.ci_gsuite_sa.private_key - sensitive = true -} -output "ci_gsuite_sa_bucket" { - value = google_storage_bucket.ci_gsuite_sa.name -} +# output "ci_gsuite_sa_key" { +# value = google_service_account_key.ci_gsuite_sa.private_key +# sensitive = true +# } -output "ci_gsuite_sa_bucket_path" { - value = google_storage_bucket_object.ci_gsuite_sa_json.name -} +# output "ci_gsuite_sa_bucket" { +# value = google_storage_bucket.ci_gsuite_sa.name +# } + +# output "ci_gsuite_sa_bucket_path" { +# value = google_storage_bucket_object.ci_gsuite_sa_json.name +# } output "ci_bq_external_data_folder_id" { value = google_folder.ci_bq_external_data_folder.id From 61cd09b36cbeb7d038cff9c70eb564ba90354fd2 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Thu, 2 Mar 2023 09:59:38 -0800 Subject: [PATCH 0272/1371] feat: extends metadata schema for bpmetadata (#1413) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/types.go | 74 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 68 insertions(+), 8 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 8bb390ebcf5..6bb0b51928e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.5.3 +VERSION=v0.5.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index e45af60cb7c..4782519842c 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -1,6 +1,8 @@ package bpmetadata -import "sigs.k8s.io/kustomize/kyaml/yaml" +import ( + "sigs.k8s.io/kustomize/kyaml/yaml" +) // BlueprintMetadata defines the overall structure for blueprint metadata details type BlueprintMetadata struct { @@ -18,18 +20,23 @@ type BlueprintMetadataSpec struct { // BlueprintInfo defines informational detail for the blueprint type BlueprintInfo struct { - Title string - Source *BlueprintRepoDetail - Version string `json:",omitempty" yaml:",omitempty"` - ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` - Description *BlueprintDescription `json:",omitempty" yaml:",omitempty"` - Icon string `json:",omitempty" yaml:",omitempty"` + Title string + Source *BlueprintRepoDetail + Version string `json:",omitempty" yaml:",omitempty"` + ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` + Description *BlueprintDescription `json:",omitempty" yaml:",omitempty"` + Icon string `json:",omitempty" yaml:",omitempty"` + DeploymentTime BlueprintTimeEstimate `json:"deploymentTime,omitempty" yaml:"deploymentTime,omitempty"` + CostEstimate BlueprintCostEstimate `json:",omitempty" yaml:",omitempty"` + CloudProducts []BlueprintCloudProduct `json:",omitempty" yaml:",omitempty"` + QuotaDetails []BlueprintQuotaDetail `json:",omitempty" yaml:",omitempty"` } // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. type BlueprintContent struct { // Diagrams are manually entered + Architecture BlueprintArchitecture `json:"architecture,omitempty" yaml:"architecture,omitempty"` Diagrams []BlueprintDiagram `json:",omitempty" yaml:",omitempty"` Documentation []BlueprintListContent `json:",omitempty" yaml:",omitempty"` SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` @@ -68,11 +75,64 @@ type BlueprintDescription struct { Architecture []string `json:"architecture,omitempty" yaml:"architecture,omitempty"` } +type BlueprintTimeEstimate struct { + ConfigurationSecs int `json:"configuration,omitempty" yaml:"configuration,omitempty"` + DeploymentSecs int `json:"deployment,omitempty" yaml:"deployment,omitempty"` +} + +type BlueprintCostEstimate struct { + Description string `json:",omitempty" yaml:",omitempty"` + Url string `json:",omitempty" yaml:",omitempty"` +} + +type BlueprintCloudProduct struct { + ProductId string `json:",omitempty" yaml:",omitempty"` + PageUrl string `json:",omitempty" yaml:",omitempty"` + Label string `json:",omitempty" yaml:",omitempty"` + LocationKey bool `json:",omitempty" yaml:",omitempty"` +} + +type QuotaResourceType string + +const ( + GceInstance QuotaResourceType = "GCE_INSTANCE" + GceDisk QuotaResourceType = "GCE_DISK" +) + +type QuotaType string + +const ( + MachineType QuotaType = "MACHINE_TYPE" + Cpus QuotaType = "CPUs" + DiskType QuotaType = "DISK_TYPE" + DiskSizeGb QuotaType = "SIZE_GB" +) + +type BlueprintQuotaDetail struct { + // DynamicVariable, if provided, associates the provided input variable + // with the corresponding resource and quota type. In its absence, the quota + // detail is assumed to be fixed. + DynamicVariable string `json:"variable,omitempty" yaml:"variable,omitempty"` + + // ResourceType is the type of resource the quota will be applied to i.e. + // GCE Instance or Disk etc. + ResourceType QuotaResourceType `json:"type" yaml:"type"` + + // QuotaType is a key/value pair of the actual quotas an their corresponding + // values. + QuotaType map[QuotaType]string `json:"quotaType" yaml:"quotaType"` +} + type BlueprintMiscContent struct { Name string Location string } +type BlueprintArchitecture struct { + DiagramUrl string `json:"diagram,omitempty" yaml:"diagram,omitempty"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` +} + // BlueprintDiagram is manually entered type BlueprintDiagram struct { Name string From cdd2a6258e4c004e1f14667d5c5a692b8237923a Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Thu, 2 Mar 2023 16:23:17 -0800 Subject: [PATCH 0273/1371] fix: adds ctx manager policy reader role to ci bots (#1420) Co-authored-by: Awais Malik > I assume this has already been applied Manually, yes. We can wait for the cron to apply the TF. --- infra/terraform/test-org/org-iam-policy/iam.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index a9e9a243a5b..e84dec0cc9f 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -43,6 +43,7 @@ locals { "roles/compute.orgSecurityResourceAdmin" : ["serviceAccount:${local.project_cleaner}"], "roles/resourcemanager.folderEditor" : ["serviceAccount:${local.project_cleaner}"], "roles/serviceusage.serviceUsageAdmin" : ["serviceAccount:${local.project_cleaner}"], + "roles/accesscontextmanager.policyReader" : ["group:${local.cft_ci_group}"], } billing_policy = { From 2b4701a3944a286a0680d0e824f6cd9d90fd91ad Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 6 Mar 2023 12:49:37 -0800 Subject: [PATCH 0274/1371] feat: add 'renovate-bot' for forking-renovate (#1421) --- .../terraform/test-org/github/resources/trusted-contribution.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/github/resources/trusted-contribution.yml b/infra/terraform/test-org/github/resources/trusted-contribution.yml index 7ff60faeb31..f44b8a84752 100644 --- a/infra/terraform/test-org/github/resources/trusted-contribution.yml +++ b/infra/terraform/test-org/github/resources/trusted-contribution.yml @@ -18,5 +18,6 @@ annotations: trustedContributors: - release-please[bot] - renovate[bot] + - renovate-bot - forking-renovate[bot] - dependabot[bot] From a7dcc74192eb0787e2f9cf06e6e1f69636f05574 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 7 Mar 2023 10:07:21 -0600 Subject: [PATCH 0275/1371] chore: onboard java app repo (#1424) --- infra/terraform/modules/repositories/main.tf | 2 +- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index d63ce2b14de..b00e8f43f3a 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -18,7 +18,7 @@ resource "github_repository" "repo" { for_each = var.repos_map name = each.value.name description = try(each.value.description, null) - homepage_url = try(each.value.url, "https://registry.terraform.io/modules/${each.value.org}/${trimprefix(each.value.name, "terraform-google-")}/google") + homepage_url = try(each.value.homepage_url, "https://registry.terraform.io/modules/${each.value.org}/${trimprefix(each.value.name, "terraform-google-")}/google") topics = setunion(["cft-terraform"], try(split(",", trimspace(each.value.topics)), [])) allow_merge_commit = false diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 4050d4acd6b..1a145ef7d44 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -32,6 +32,7 @@ locals { "anthos-samples" = "anthos-samples" "docs-samples" = "terraform-docs-samples" "dynamic-python-webapp" = "terraform-dynamic-python-webapp" + "deploy-java-multizone" = "terraform-example-deploy-java-multizone" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index a48785afea3..31eeb7f0b8c 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -521,5 +521,12 @@ locals { owners = "@glasnt @donmccasland" homepage_url = "avocano.dev" }, + { + name = "terraform-example-deploy-java-multizone" + short_name = "deploy-java-multizone" + org = "GoogleCloudPlatform" + description = "Deploy a multizone Java application" + owners = "@donmccasland" + }, ] } From a87b654c0ccf15c10062da83c6613bc85c3123d0 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Wed, 8 Mar 2023 11:25:52 -0800 Subject: [PATCH 0276/1371] fix: skips submodule metdata autogen if readme isn't present (#1428) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 6bb0b51928e..96594629741 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.5.4 +VERSION=v0.5.5 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 140f464141d..b5f4bed1e72 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -57,9 +57,16 @@ func generate(cmd *cobra.Command, args []string) error { var allBpPaths []string currBpPath := path.Join(wdPath, mdFlags.path) - allBpPaths = append(allBpPaths, currBpPath) + _, err = os.Stat(path.Join(currBpPath, readmeFileName)) + // throw an error and exit if root level readme.md doesn't exist + if err != nil { + return fmt.Errorf("Top-level module does not have a readme. Details: %w\n", err) + } + + allBpPaths = append(allBpPaths, currBpPath) var errors []string + // if nested, check if modules/ exists and create paths // for submodules if mdFlags.nested { @@ -77,8 +84,17 @@ func generate(cmd *cobra.Command, args []string) error { } } - for _, path := range allBpPaths { - err = generateMetadataForBpPath(path) + for _, modPath := range allBpPaths { + // check if module path has readme.md + _, err := os.Stat(path.Join(modPath, readmeFileName)) + + // log info if a sub-module doesn't have a readme.md and continue + if err != nil { + Log.Info("Skipping metadata for sub-module identified as an internal module", "Path:", modPath) + continue + } + + err = generateMetadataForBpPath(modPath) if err != nil { errors = append(errors, err.Error()) } From 00d6ec33c56bef184a3cb281734b9c53d672d753 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Fri, 10 Mar 2023 11:32:28 -0800 Subject: [PATCH 0277/1371] feat: adds UI specific type extensions to bpmetadata (#1425) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 2 +- cli/bpmetadata/types.go | 261 ++++++++++++++++++++++++++------- cli/bpmetadata/types_ui.go | 127 ++++++++++++++++ cli/bpmetadata/types_ui_ext.go | 161 ++++++++++++++++++++ 5 files changed, 497 insertions(+), 56 deletions(-) create mode 100644 cli/bpmetadata/types_ui.go create mode 100644 cli/bpmetadata/types_ui_ext.go diff --git a/cli/Makefile b/cli/Makefile index 96594629741..1a2882f59f5 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.5.5 +VERSION=v0.6.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index b5f4bed1e72..73f7f709a47 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -268,7 +268,7 @@ func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent for _, li := range documentation.listItems { doc := BlueprintListContent{ Title: li.text, - Url: li.url, + URL: li.url, } docListToSet = append(docListToSet, doc) diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 4782519842c..39f8e9927d4 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -4,108 +4,176 @@ import ( "sigs.k8s.io/kustomize/kyaml/yaml" ) -// BlueprintMetadata defines the overall structure for blueprint metadata details +// BlueprintMetadata defines the overall structure for blueprint metadata. type BlueprintMetadata struct { Meta yaml.ResourceMeta `json:",inline" yaml:",inline"` Spec BlueprintMetadataSpec } -// BlueprintMetadataSpec defines the spec portion of the blueprint metadata +// BlueprintMetadataSpec defines the spec portion of the blueprint metadata. +// All immediate types within BlueprintMetadataSpec are inline and will +// not appear as nodes in metadata. type BlueprintMetadataSpec struct { Info BlueprintInfo `json:",inline" yaml:",inline"` Content BlueprintContent `json:",inline" yaml:",inline"` Interfaces BlueprintInterface `json:",inline" yaml:",inline"` Requirements BlueprintRequirements `json:",inline" yaml:",inline"` + UI BlueprintUI `json:",inline" yaml:",inline"` } -// BlueprintInfo defines informational detail for the blueprint type BlueprintInfo struct { - Title string - Source *BlueprintRepoDetail - Version string `json:",omitempty" yaml:",omitempty"` - ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` - Description *BlueprintDescription `json:",omitempty" yaml:",omitempty"` - Icon string `json:",omitempty" yaml:",omitempty"` - DeploymentTime BlueprintTimeEstimate `json:"deploymentTime,omitempty" yaml:"deploymentTime,omitempty"` - CostEstimate BlueprintCostEstimate `json:",omitempty" yaml:",omitempty"` - CloudProducts []BlueprintCloudProduct `json:",omitempty" yaml:",omitempty"` - QuotaDetails []BlueprintQuotaDetail `json:",omitempty" yaml:",omitempty"` -} + // Title for the blueprint. + // Autogenerated: First H1 text in readme.md. + Title string -// BlueprintContent defines the detail for blueprint related content such as -// related documentation, diagrams, examples etc. -type BlueprintContent struct { - // Diagrams are manually entered - Architecture BlueprintArchitecture `json:"architecture,omitempty" yaml:"architecture,omitempty"` - Diagrams []BlueprintDiagram `json:",omitempty" yaml:",omitempty"` - Documentation []BlueprintListContent `json:",omitempty" yaml:",omitempty"` - SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` - Examples []BlueprintMiscContent `json:",omitempty" yaml:",omitempty"` -} + // Blueprint source location and source type. + // Autogen details in BlueprintRepoDetail. + Source *BlueprintRepoDetail -// BlueprintInterface the input and output variables for the blueprint -type BlueprintInterface struct { - Variables []BlueprintVariable `json:",omitempty" yaml:",omitempty"` - // VariableGroups are manually entered - VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` - Outputs []BlueprintOutput `json:",omitempty" yaml:",omitempty"` -} + // Last released semantic version for the packaged blueprint. + // Autogenerated: From the `module_name` attribute of the `provider_meta "google"` block. + // E.g. + // provider_meta "google" { + // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" + // } + Version string `json:",omitempty" yaml:",omitempty"` -// BlueprintRequirements defines the roles required and the assocaited services -// that need to be enabled to provision blueprint resources -type BlueprintRequirements struct { - Roles []BlueprintRoles - Services []string + // Actuation tool e.g. Terraform and its required version. + // Autogen details in BlueprintActuationTool. + ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` + + // Various types of descriptions associated with the blueprint. + // Autogen details in BlueprintDescription. + Description *BlueprintDescription `json:",omitempty" yaml:",omitempty"` + + // Path to an image representing the icon for the blueprint. + // Will be set as "assets/icon.png". Can be manually authored otherwise. + Icon string `json:",omitempty" yaml:",omitempty"` + + // The time estimate for configuring and deploying the blueprint. + // Autogen details in BlueprintTimeEstimate. + DeploymentTime BlueprintTimeEstimate `json:"deploymentTime,omitempty" yaml:"deploymentTime,omitempty"` + + // The cost estimate for the blueprint based on preconfigured variables. + // Autogen details in BlueprintCostEstimate. + CostEstimate BlueprintCostEstimate `json:",omitempty" yaml:",omitempty"` + + // A list of GCP cloud products used in the blueprint. + // Manually authored. + CloudProducts []BlueprintCloudProduct `json:",omitempty" yaml:",omitempty"` + + // A configuration of fixed and dymanic GCP quotas that apply to the soltuion. + // Manually authored. + QuotaDetails []BlueprintQuotaDetail `json:",omitempty" yaml:",omitempty"` + + // Details on the author producing the blueprint. + // Manually authored. + Author BlueprintAuthor `json:",omitempty" yaml:",omitempty"` + + // Details on sotfware installed as part of the blueprint. + // Manually authored. + SoftwareGroups []BlueprintSoftwareGroup `json:",omitempty" yaml:",omitempty"` + + // Support offered, if any for the blueprint. + // Manually authored. + SupportInfo BlueprintSupport `json:",omitempty" yaml:",omitempty"` } type BlueprintRepoDetail struct { - Repo string + // Autogenerated: URL from the .git dir. + // Can be manually overriden with a custom URL if needed. + Repo string + + // Set as "git" for now until more types are supported. SourceType string `json:"sourceType" yaml:"sourceType"` } type BlueprintActuationTool struct { - Flavor string `json:"type,omitempty" yaml:"type,omitempty"` + // Set as "Terraform" for now until more flavors are supported. + Flavor string `json:"type,omitempty" yaml:"type,omitempty"` + + // Required version for the actuation tool. + // Autogenerated: For Terraform this is the `required_version` set in + // `terraform` block. E.g. + // terraform { + // required_version = ">= 0.13" + // } Version string `json:",omitempty" yaml:",omitempty"` } type BlueprintDescription struct { - Tagline string `json:",omitempty" yaml:",omitempty"` - Detailed string `json:",omitempty" yaml:",omitempty"` - PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` + // Autogenerated: All types of descriptions are set with the markdown content + // immediately after the each type's heading declaration in readme.md. + + // Autogenerated: Markdown after "### Tagline". + Tagline string `json:",omitempty" yaml:",omitempty"` + + // Autogenerated: Markdown after "### Detailed". + Detailed string `json:",omitempty" yaml:",omitempty"` + + // Autogenerated: Markdown after "### PreDeploy". + PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` + + // Autogenerated: Markdown after "### Html". + HTML string `json:"html,omitempty" yaml:"html,omitempty"` + + // Autogenerated: Markdown after "### EulaUrls". + EulaURLs []string `json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"` + + // Autogenerated: Markdown after "### Architecture" + // Deprecated. Use BlueprintContent.Architecture instead. Architecture []string `json:"architecture,omitempty" yaml:"architecture,omitempty"` } +// A time estimate in secs required for configuring and deploying the blueprint. type BlueprintTimeEstimate struct { + // Autogenerated: Set using the content defined under "### DeploymentTime" E.g. + // ### DeploymentTime + // - Configuration: X secs + // - Deployment: Y secs ConfigurationSecs int `json:"configuration,omitempty" yaml:"configuration,omitempty"` DeploymentSecs int `json:"deployment,omitempty" yaml:"deployment,omitempty"` } +// The cost estimate for the blueprint based on preconfigured variables. type BlueprintCostEstimate struct { + // Autogenerated: Set using the content defined under "### Cost" as a link + // with a description E.g. + // ### Cost + // [View cost details](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) Description string `json:",omitempty" yaml:",omitempty"` - Url string `json:",omitempty" yaml:",omitempty"` + URL string `json:",omitempty" yaml:",omitempty"` } +// A GCP cloud product used in the blueprint. +// Manually authored. type BlueprintCloudProduct struct { - ProductId string `json:",omitempty" yaml:",omitempty"` - PageUrl string `json:",omitempty" yaml:",omitempty"` - Label string `json:",omitempty" yaml:",omitempty"` - LocationKey bool `json:",omitempty" yaml:",omitempty"` + // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") + // product used in the blueprint. + ProductId string `json:",omitempty" yaml:",omitempty"` + + // Url for the product. + PageURL string `json:",omitempty" yaml:",omitempty"` + + // A label string for the product, if it is not an integrated GCP product. + // E.g. "Data Studio" + Label string `json:",omitempty" yaml:",omitempty"` } type QuotaResourceType string const ( - GceInstance QuotaResourceType = "GCE_INSTANCE" - GceDisk QuotaResourceType = "GCE_DISK" + GCEInstance QuotaResourceType = "GCE_INSTANCE" + GCEDisk QuotaResourceType = "GCE_DISK" ) type QuotaType string const ( MachineType QuotaType = "MACHINE_TYPE" - Cpus QuotaType = "CPUs" + CPUs QuotaType = "CPUs" DiskType QuotaType = "DISK_TYPE" - DiskSizeGb QuotaType = "SIZE_GB" + DiskSizeGB QuotaType = "SIZE_GB" ) type BlueprintQuotaDetail struct { @@ -123,17 +191,102 @@ type BlueprintQuotaDetail struct { QuotaType map[QuotaType]string `json:"quotaType" yaml:"quotaType"` } +type BlueprintAuthor struct { + // Name of template author or organization. + Title string `yaml:"author"` + + // Description of the author. + Description string `yaml:"author,omitempty"` + + // Link to the author's website. + URL string `yaml:"url,omitempty"` +} + +type SoftwareGroupType string + +const ( + UnspecifiedSG SoftwareGroupType = "UNSPECIFIED" + OS SoftwareGroupType = "OS" +) + +// A group of related software components for the blueprint. +type BlueprintSoftwareGroup struct { + // Pre-defined software types. + Type SoftwareGroupType `yaml:"type"` + + // Software components belonging to this group. + Software []BlueprintSoftware `yaml:"software"` +} + +// A description of a piece of a single software component +// installed by the blueprint. +type BlueprintSoftware struct { + // User-visible title. + Title string `yaml:"title"` + + // Software version. + Version string `yaml:"title,omitempty"` + + // Link to development site or marketing page for this software. + URL string `yaml:"url,omitempty"` + + // Link to license page. + LicenseURL string `yaml:"licenseUrl,omitempty"` +} + +// A description of a support option +type BlueprintSupport struct { + //Description of the support option. + Description string `yaml:"description,omitempty"` + + // Link to the page providing this support option. + URL string `yaml:"url"` + + // The organization or group that provides the support option (e.g.: + // "Community", "Google"). + Entity string `yaml:"entity,omitempty"` + + // Whether to show the customer's support ID. + ShowSupportId bool `yaml:"showSupportId,omitempty"` +} + +// BlueprintContent defines the detail for blueprint related content such as +// related documentation, diagrams, examples etc. +type BlueprintContent struct { + // Diagrams are manually entered. + Architecture BlueprintArchitecture `json:"architecture,omitempty" yaml:"architecture,omitempty"` + Diagrams []BlueprintDiagram `json:",omitempty" yaml:",omitempty"` + Documentation []BlueprintListContent `json:",omitempty" yaml:",omitempty"` + SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` + Examples []BlueprintMiscContent `json:",omitempty" yaml:",omitempty"` +} + +// BlueprintInterface defines the input and output variables for the blueprint. +type BlueprintInterface struct { + Variables []BlueprintVariable `json:",omitempty" yaml:",omitempty"` + // VariableGroups are manually entered. + VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` + Outputs []BlueprintOutput `json:",omitempty" yaml:",omitempty"` +} + +// BlueprintRequirements defines the roles required and the assocaited services +// that need to be enabled to provision blueprint resources. +type BlueprintRequirements struct { + Roles []BlueprintRoles + Services []string +} + type BlueprintMiscContent struct { Name string Location string } type BlueprintArchitecture struct { - DiagramUrl string `json:"diagram,omitempty" yaml:"diagram,omitempty"` + DiagramURL string `json:"diagram,omitempty" yaml:"diagram,omitempty"` Description string `json:"description,omitempty" yaml:"description,omitempty"` } -// BlueprintDiagram is manually entered +// BlueprintDiagram is manually entered. type BlueprintDiagram struct { Name string AltText string `json:"altText,omitempty" yaml:"altText,omitempty"` @@ -142,7 +295,7 @@ type BlueprintDiagram struct { type BlueprintListContent struct { Title string - Url string `json:",omitempty" yaml:",omitempty"` + URL string `json:",omitempty" yaml:",omitempty"` } type BlueprintVariable struct { @@ -153,7 +306,7 @@ type BlueprintVariable struct { Required bool } -// BlueprintVariableGroup is manually entered +// BlueprintVariableGroup is manually entered. type BlueprintVariableGroup struct { Name string Description string `json:",omitempty" yaml:",omitempty"` diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go new file mode 100644 index 00000000000..9080c196098 --- /dev/null +++ b/cli/bpmetadata/types_ui.go @@ -0,0 +1,127 @@ +package bpmetadata + +// BlueprintUI is the top-level structure for holding UI specific metadata. +type BlueprintUI struct { + // The top-level input section that defines the list of variables and + // their sections on the deployment page. + Input BlueprintUIInput `yaml:"input"` + + // The top-level section for listing runtime (or blueprint output) information + // i.e. the console URL for the VM or a button to ssh into the VM etc based on. + Runtime BlueprintUIOutput `yaml:"runtime"` +} + +// BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. +type BlueprintUIInput struct { + + // variables is a map defining all inputs on the UI. + DisplayVariables map[string]DisplayVariable `yaml:"variables"` + + // Sections is a generic structure for grouping inputs together. + DisplaySections []DisplaySection `yaml:"sections"` +} + +// Additional display specific metadata pertaining to a particular +// input variable. +type DisplayVariable struct { + // The variable name from the corresponding standard metadata file. + Name string `yaml:"name"` + + // Visible title for the variable on the UI. + Title bool `yaml:"title,omitempty"` + + // A flag to hide or show the variable on the UI. + Visible bool `yaml:"visible,omitempty"` + + // Variable tooltip. + Tooltip string `yaml:"tooltip,omitempty"` + + // Placeholder text (when there is no default). + Placeholder string `yaml:"placeholder,omitempty"` + + // Text describing the validation rules for the variable based + // on a regular expression. + // Typically shown after an invalid input. + RegExValidation string `yaml:"regexValidation,omitempty"` + + // Minimum no. of values for the input variable. + Minimum int `yaml:"min,omitempty"` + + // Max no. of values for the input variable. + Maximum int `yaml:"max,omitempty"` + + // The name of a section to which this variable belongs. + // variables belong to the root section if this field is + // not set. + Section string `yaml:"section,omitempty"` + + // Designates that this variable has no impact on the costs, quotas, or + // permissions associated with the resources in the expanded deployment. + // Typically true for application-specific variables that do not affect the + // size or number of instances in the deployment. + ResourceImpact bool `yaml:"resourceImpact,omitempty"` + + // UI extension associated with the input variable. + // E.g. for rendering a GCE machine type selector: + // + // x-googleProperty: + // type: GCE_MACHINE_TYPE + // zoneProperty: myZone + // gceMachineType: + // minCpu: 2 + // minRamGb: 6 + UIDisplayVariableExtension GooglePropertyExtension `yaml:"x-googleProperty,omitempty"` +} + +// A logical group of variables. [Section][]s may also be grouped into +// sub-sections. +type DisplaySection struct { + // The name of the section, referenced by DisplayVariable.Section + // Section names must be unique. + Name string `yaml:"name"` + + // Section title. + // If not provided, name will be used instead. + Title string `yaml:"title,omitempty"` + + // Section tooltip. + Tooltip string `yaml:"tooltip,omitempty"` + + // Section subtext. + Subtext string `yaml:"subtext,omitempty"` + + // The name of the parent section (if parent is not the root section). + Parent string `yaml:"parent,omitempty"` +} + +type BlueprintUIOutput struct { + // Short message to be displayed while the blueprint is deploying. + // At most 128 characters. + OutputMessage string `yaml:"outputMessage,omitempty"` + + // List of suggested actions to take. + SuggestedActions []UIActionItem `yaml:"suggestedActions,omitempty"` +} + +// An item appearing in a list of required or suggested steps. +type UIActionItem struct { + // Summary heading for the item. + // Required. Accepts string expressions. At most 64 characters. + Heading string `yaml:"heading"` + + // Longer description of the item. + // At least one description or snippet is required. + // Accepts string expressions. HTML <a href> + // tags only. At most 512 characters. + Description string `yaml:"description"` + + // Fixed-width formatted code snippet. + // At least one description or snippet is required. + // Accepts string expressions. UTF-8 text. At most 512 characters. + Snippet string `yaml:"snippet"` + + // If present, this expression determines whether the item is shown. + // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP + // where `externalIP` is the output. + ShowIf string `yaml:"showIf,omitempty"` +} diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go new file mode 100644 index 00000000000..6cb24121481 --- /dev/null +++ b/cli/bpmetadata/types_ui_ext.go @@ -0,0 +1,161 @@ +package bpmetadata + +type ExtensionType string + +const ( + Undefined ExtensionType = "UNDEFINED_TYPE" + + // General formats. + EmailAddress ExtensionType = "EMAIL_ADDRESS" + MultiLineString ExtensionType = "MULTI_LINE_STRING" + + // GCE related. + GCEDiskImage ExtensionType = "GCE_DISK_IMAGE" + GCEDiskType ExtensionType = "GCE_DISK_TYPE" + GCEDiskSize ExtensionType = "GCE_DISK_SIZE" + GCEMachineType ExtensionType = "GCE_MACHINE_TYPE" + GCENetwork ExtensionType = "GCE_NETWORK" + GCEZone ExtensionType = "GCE_ZONE" + GCESubnetwork ExtensionType = "GCE_SUBNETWORK" + GCERegion ExtensionType = "GCE_REGION" + GCEGPUType ExtensionType = "GCE_GPU_TYPE" + GCEGPUCount ExtensionType = "GCE_GPU_COUNT" + GCEExternalIP ExtensionType = "GCE_EXTERNAL_IP" + GCEIPForwarding ExtensionType = "GCE_IP_FORWARDING" + GCEFirewall ExtensionType = "GCE_FIREWALL" + GCEFirewallRange ExtensionType = "GCE_FIREWALL_RANGE" + GCEGenericResource ExtensionType = "GCE_GENERIC_RESOURCE" + + // GCS related. + GCSBucket ExtensionType = "GCS_BUCKET" + + // IAM related. + IAMServiceAccount ExtensionType = "IAM_SERVICE_ACCOUNT" +) + +// An extension for variables defined as part of DisplayVariable. The +// extension defines Google-specifc metadata necessary for choosing an +// appropriate input widget or adding restrictions to GCP-specific resources. +type GooglePropertyExtension struct { + Type ExtensionType `yaml:"type"` + + // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to + // determine the set of allowable values. This field references another + // property from the schema, which must have type GCE_ZONE. + ZoneProperty string `yaml:"zoneProperty,omitempty"` + + // Property-specific extensions. + GCEMachineType GCEMachineTypeExtension `yaml:"gceMachineType,omitempty"` + GCEDiskSize GCEDiskSizeExtension `yaml:"gceDiskSize,omitempty"` + GCESubnetwork GCESubnetworkExtension `yaml:"gceMachineType,omitempty"` + GCEResource GCEGenericResourceExtension `yaml:"gceSubnetwork,omitempty"` + GCEGPUType GCEGPUTypeExtension `yaml:"gceGpuType,omitempty"` + GCEGPUCount GCEGPUCountExtension `yaml:"gceGpuCount,omitempty"` + GCENetwork GCENetworkExtension `yaml:"gceNetwork,omitempty"` + GCEExternalIP GCEExternalIPExtension `yaml:"gceExternalIp,omitempty"` + GCEIPForwarding GCEIPForwardingExtension `yaml:"gceIpForwarding,omitempty"` + GCEFirewall GCEFirewallExtension `yaml:"gceFirewall,omitempty"` + GCEFirewallRange GCEFirewallRangeExtension `yaml:"gceFirewallRange,omitempty"` + GCEZone GCELocationExtension `yaml:"gceZone,omitempty"` + GCERegion GCELocationExtension `yaml:"gceRegion,omitempty"` + IAMServiceAccount IAMServiceAccountExtension `yaml:"iamServiceAccount,omitempty"` +} + +type GCELocationExtension struct { + AllowlistedZones []string `yaml:"allowlistedZones,omitempty"` + AllowlistedRegions []string `yaml:"allowlistedRegions,omitempty"` +} + +type GCEMachineTypeExtension struct { + // Minimum cpu. Used to filter the list of selectable machine types. + MinCPU int `yaml:"minCpu,omitempty"` + + // Minimum ram. Used to filter the list of selectable machine types. + MinRAMGB int `yaml:"minRamGb,omitempty"` + + // If true, custom machine types will not be selectable. + // More info: + // https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type + DisallowCustomMachineTypes bool `yaml:"disallowCustomMachineTypes,omitempty"` +} + +type GCEGPUTypeExtension struct { + MachineType string `yaml:"machineType"` + GPUType string `yaml:"gpuType"` +} + +type GCEGPUCountExtension struct { + // This field references another variable from the schema, + // which must have type GCEMachineType. + MachineTypeVariable string `yaml:"machineTypeVariable"` +} + +type GCEDiskSizeExtension struct { + // The allowable range of disk sizes depends on the disk type. This field + // references another variable from the schema, which must have type GCEDiskType. + DiskTypeVariable string `yaml:"diskTypeVariable"` +} + +type GCENetworkExtension struct { + // AllowSharedVpcs indicates this solution can receive + // shared VPC selflinks (fully qualified compute links). + AllowSharedVPCs bool `yaml:"allowSharedVpcs"` + // Used to indicate to which machine type this network interface will be + // attached to. + MachineTypeVariable string `yaml:"machineTypeVariable"` +} + +type ExternalIPType string + +const ( + IPEphemeral ExternalIPType = "EPHEMERAL" + IPStaic ExternalIPType = "STATIC" +) + +type GCEExternalIPExtension struct { + // NetworkVariable is used to indicate the network variable in the schema + // this external IP belongs to. + NetworkVariable string `yaml:"networkVariable"` + + // Type specifies if the external IP is ephemeral or static. + // Defaults to ephemeral if not specified. + Type ExternalIPType `yaml:"externalIpType,omitempty"` +} + +type GCEIPForwardingExtension struct { + // NetworkVariable is used to indicate the network variable in the schema + // this external IP belongs to. + NetworkVariable string `yaml:"networkVariable"` + NotConfigurable bool `yaml:"notConfigurable"` +} + +type GCEFirewallExtension struct { + // NetworkVariable is used to indicate the network variable in the schema + // this external IP belongs to. + NetworkVariable string `yaml:"networkVariable"` +} + +type GCEFirewallRangeExtension struct { + // FirewallVariable is used to indicate the firewall variable with the type + // GCEFirewall in the schema to which this firewall range belongs to. + FirewallVariable string `yaml:"firewallVariable"` +} + +type GCESubnetworkExtension struct { + // Subnetwork variable requires a network context in order to determine the + // set of available subnetworks. This field references another + // variable from the schema, which must have type GCENetwork. + NetworkVariable string `yaml:"networkVariable"` +} + +type GCEGenericResourceExtension struct { + // GCE resource type to be fetched. This field references another + // property from the schema, which must have type GCEGenericResource. + ResourceVariable string `yaml:"resourceVariable"` +} + +type IAMServiceAccountExtension struct { + // List of IAM roles that to grant to a new SA, or the roles to filter + // existing SAs with. + Roles []string `yaml:"roles"` +} From 1d38e6a84759895707c213bdb1f9dddc9aaa8061 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 10 Mar 2023 16:00:19 -0600 Subject: [PATCH 0278/1371] chore: switch dev org (#1431) --- infra/terraform/test-org/org-iam-policy/iam.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index e84dec0cc9f..98f9b865ce3 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -17,7 +17,7 @@ locals { cft_ci_group = "cft-ci-robots@test.infra.cft.tips" - cft_dev_group = "cft-developers@dev.infra.cft.tips" + cft_dev_group = "cft-developers@develop.blueprints.joonix.net" gcp_admins_group_test = "gcp-admins@test.infra.cft.tips" project_cleaner = "project-cleaner-function@${data.terraform_remote_state.project_cleaner.outputs.project_id}.iam.gserviceaccount.com" From acc12c62102ce7a285ef2ce001bdfd5fe6990de6 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 13 Mar 2023 11:32:10 -0700 Subject: [PATCH 0279/1371] chore: auto update cft/developer-tools (#1432) --- .../test-org/github/resources/renovate.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 9b920dbb1c8..bccd0c174a3 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -43,5 +43,21 @@ "matchPackageNames": ["google", "google-beta"], "groupName": "terraform googles" } + ], + "regexManagers": [ + { + "fileMatch": ["(^|/)Makefile$"], + "matchStrings": ["DOCKER_TAG_VERSION_DEVELOPER_TOOLS := (?.*?)\\n"], + "datasourceTemplate": "docker", + "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", + "depNameTemplate": "cft/developer-tools" + }, + { + "fileMatch": ["(^|/)build/(int|lint)\\.cloudbuild\\.yaml$"], + "matchStrings": [" _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '(?.*?)'\\n"], + "datasourceTemplate": "docker", + "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", + "depNameTemplate": "cft/developer-tools" + } ] } From e8b5a2970f5c406f70c7dd97aeffc190e4ee47a6 Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Mon, 13 Mar 2023 14:51:38 -0500 Subject: [PATCH 0280/1371] chore: Onboard itar-architectures repo (#1429) Co-authored-by: g-awmalik --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 31eeb7f0b8c..82e729ddd53 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -528,5 +528,12 @@ locals { description = "Deploy a multizone Java application" owners = "@donmccasland" }, + { + name = "terraform-google-itar-architectures" + org = "GoogleCloudPlatform" + description = "Includes use cases for deploying ITAR-aligned architectures on Google Cloud" + owners = "@gtsorbo" + topics = join(",", [local.common_topics.compute], ["compliance"]) + }, ] } From f4cbd8241b6de0035de6a03b680ec16f110a2da8 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 14 Mar 2023 11:04:36 -0500 Subject: [PATCH 0281/1371] chore: switch test org (#1435) --- infra/terraform/test-org/org-iam-policy/iam.tf | 6 +++--- infra/terraform/test-org/org/locals.tf | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index 98f9b865ce3..72e41fedfd3 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -16,13 +16,13 @@ locals { - cft_ci_group = "cft-ci-robots@test.infra.cft.tips" + cft_ci_group = "cft-ci-robots@test.blueprints.joonix.net" cft_dev_group = "cft-developers@develop.blueprints.joonix.net" - gcp_admins_group_test = "gcp-admins@test.infra.cft.tips" + gcp_admins_group_test = "gcp-admins@test.blueprints.joonix.net" project_cleaner = "project-cleaner-function@${data.terraform_remote_state.project_cleaner.outputs.project_id}.iam.gserviceaccount.com" ci_gsuite_sa = "ci-gsuite-sa@ci-gsuite-sa-project.iam.gserviceaccount.com" - cft_admin = "cft-admin@test.infra.cft.tips" + cft_admin = "cft-admin@test.blueprints.joonix.net" foundation_leads_group = "cloud-foundation-leads@google.com" policy = { diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 82e729ddd53..4d2a17039da 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -17,8 +17,8 @@ locals { org_id = "943740911108" billing_account = "01D904-DAF6EC-F34EF7" - cft_ci_group = "cft-ci-robots@test.infra.cft.tips" - gcp_admins_group = "gcp-admins@test.infra.cft.tips" + cft_ci_group = "cft-ci-robots@test.blueprints.joonix.net" + gcp_admins_group = "gcp-admins@test.blueprints.joonix.net" ci_project_id = "cloud-foundation-cicd" folders = { From 1a273b7db07bebdb24715e2c5cf18334e1bf9c2e Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 14 Mar 2023 13:36:06 -0500 Subject: [PATCH 0282/1371] chore: add new SAs to test org IAM (#1437) --- infra/terraform/test-org/org-iam-policy/iam.tf | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index 72e41fedfd3..6643e39faaa 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -33,7 +33,12 @@ locals { "roles/resourcemanager.folderAdmin" : ["group:${local.gcp_admins_group_test}"], "roles/resourcemanager.folderViewer" : ["serviceAccount:${local.project_cleaner}"], "roles/resourcemanager.lienModifier" : ["serviceAccount:${local.project_cleaner}"], - "roles/resourcemanager.organizationAdmin" : ["group:${local.cft_ci_group}", "group:${local.gcp_admins_group_test}", ], + "roles/resourcemanager.organizationAdmin" : [ + "group:${local.cft_ci_group}", + "group:${local.gcp_admins_group_test}", + "serviceAccount:${data.google_secret_manager_secret_version.org-admin-sa.secret_data}", + ], + "roles/iam.organizationRoleAdmin" : ["serviceAccount:${data.google_secret_manager_secret_version.org-role-admin-sa.secret_data}", ], "roles/resourcemanager.organizationViewer" : ["group:${local.cft_ci_group}"], "roles/resourcemanager.projectDeleter" : ["serviceAccount:${local.project_cleaner}"], "roles/owner" : ["group:${local.gcp_admins_group_test}", "serviceAccount:${local.project_cleaner}"], @@ -59,6 +64,16 @@ locals { } } +data "google_secret_manager_secret_version" "org-admin-sa" { + project = "cloud-foundation-cicd" + secret = "org-admin-sa" +} + +data "google_secret_manager_secret_version" "org-role-admin-sa" { + project = "cloud-foundation-cicd" + secret = "org-role-admin-sa" +} + resource "google_organization_iam_policy" "organization" { org_id = data.terraform_remote_state.org.outputs.org_id policy_data = data.google_iam_policy.admin.policy_data From d1b585b3a5aabd25b7e59fc0a0a325403308052d Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 14 Mar 2023 16:34:24 -0500 Subject: [PATCH 0283/1371] chore: switch billing (#1438) --- .../terraform/test-org/org/bigquery_external_data.tf | 2 +- infra/terraform/test-org/org/gsuite.tf | 7 +------ infra/terraform/test-org/org/iam.tf | 6 ------ infra/terraform/test-org/org/locals.tf | 11 ++++++----- infra/terraform/test-org/org/projects.tf | 2 +- 5 files changed, 9 insertions(+), 19 deletions(-) diff --git a/infra/terraform/test-org/org/bigquery_external_data.tf b/infra/terraform/test-org/org/bigquery_external_data.tf index 8291495d4b5..3bfc464804c 100644 --- a/infra/terraform/test-org/org/bigquery_external_data.tf +++ b/infra/terraform/test-org/org/bigquery_external_data.tf @@ -27,7 +27,7 @@ module "ci_bq_external_data_project" { project_id = "ci-bq-external-data-project" org_id = local.org_id folder_id = google_folder.ci_bq_external_data_folder.id - billing_account = local.billing_account + billing_account = local.old_billing_account labels = { cft-ci = "permanent" diff --git a/infra/terraform/test-org/org/gsuite.tf b/infra/terraform/test-org/org/gsuite.tf index 14724284c56..2cf2cf4c61e 100644 --- a/infra/terraform/test-org/org/gsuite.tf +++ b/infra/terraform/test-org/org/gsuite.tf @@ -56,7 +56,7 @@ module "ci_gsuite_sa_project" { project_id = "ci-gsuite-sa-project" org_id = local.org_id folder_id = google_folder.ci_gsuite_sa_folder.id - billing_account = local.billing_account + billing_account = local.old_billing_account labels = { cft-ci = "permanent" @@ -98,11 +98,6 @@ resource "google_folder_iam_member" "ci_gsuite_sa_folder" { member = "serviceAccount:${google_service_account.ci_gsuite_sa.email}" } -resource "google_billing_account_iam_member" "ci_gsuite_sa_billing" { - billing_account_id = local.billing_account - role = "roles/billing.user" - member = "serviceAccount:${google_service_account.ci_gsuite_sa.email}" -} // Generate a json key and put it into the secrets bucket. //TODO(bbaiju): Re enable if needed for any CI diff --git a/infra/terraform/test-org/org/iam.tf b/infra/terraform/test-org/org/iam.tf index 2e90ff4d334..a073006b5b0 100644 --- a/infra/terraform/test-org/org/iam.tf +++ b/infra/terraform/test-org/org/iam.tf @@ -69,9 +69,3 @@ module "ci_folders_folder_bindings" { ] } } - -resource "google_billing_account_iam_member" "ci-billing-user" { - billing_account_id = local.billing_account - role = "roles/billing.admin" - member = "group:${local.cft_ci_group}" -} diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 4d2a17039da..7a8161b6b7b 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -15,11 +15,12 @@ */ locals { - org_id = "943740911108" - billing_account = "01D904-DAF6EC-F34EF7" - cft_ci_group = "cft-ci-robots@test.blueprints.joonix.net" - gcp_admins_group = "gcp-admins@test.blueprints.joonix.net" - ci_project_id = "cloud-foundation-cicd" + org_id = "943740911108" + old_billing_account = "01D904-DAF6EC-F34EF7" + billing_account = "0138EF-C93849-98B0B5" + cft_ci_group = "cft-ci-robots@test.blueprints.joonix.net" + gcp_admins_group = "gcp-admins@test.blueprints.joonix.net" + ci_project_id = "cloud-foundation-cicd" folders = { "ci-projects" = module.folders-root.ids["ci-projects"] diff --git a/infra/terraform/test-org/org/projects.tf b/infra/terraform/test-org/org/projects.tf index 33232331580..99dc4c26576 100644 --- a/infra/terraform/test-org/org/projects.tf +++ b/infra/terraform/test-org/org/projects.tf @@ -22,7 +22,7 @@ module "ci_media_cdn_vod_project" { project_id = "ci-media-cdn-vod-project" org_id = local.org_id folder_id = module.folders-ci.ids["ci-media-cdn-vod"] - billing_account = local.billing_account + billing_account = local.old_billing_account labels = { cft-ci = "permanent" From 22b7d717c6534a5579b5560348b9eebcdce0d228 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 17 Mar 2023 13:47:34 -0500 Subject: [PATCH 0284/1371] chore: Onboard gke migrate (#1441) --- infra/terraform/test-org/ci-triggers/locals.tf | 13 +++++++------ infra/terraform/test-org/org/locals.tf | 6 ++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 1a145ef7d44..f3e64b303e5 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -27,12 +27,13 @@ locals { ] # custom mapping of the form name => repo_name used for overriding `terraform-google` prefix custom_repo_mapping = { - "cloud-foundation-training" = "cloud-foundation-training", - "example-foundation-app" = "terraform-example-foundation-app", - "anthos-samples" = "anthos-samples" - "docs-samples" = "terraform-docs-samples" - "dynamic-python-webapp" = "terraform-dynamic-python-webapp" - "deploy-java-multizone" = "terraform-example-deploy-java-multizone" + "cloud-foundation-training" = "cloud-foundation-training", + "example-foundation-app" = "terraform-example-foundation-app", + "anthos-samples" = "anthos-samples" + "docs-samples" = "terraform-docs-samples" + "dynamic-python-webapp" = "terraform-dynamic-python-webapp" + "deploy-java-multizone" = "terraform-example-deploy-java-multizone" + "Migrate-Legacy-Java-App-GKE" = "Migrate-Legacy-Java-App-GKE" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 7a8161b6b7b..e80bfc02997 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -536,5 +536,11 @@ locals { owners = "@gtsorbo" topics = join(",", [local.common_topics.compute], ["compliance"]) }, + { + name = "Migrate-Legacy-Java-App-GKE" + org = "HSA-Integration" + description = "TODO" + owners = "@donmccasland" + }, ] } From 1c333496f5c6d93519eaba53ac9fd0fa971826f2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 17 Mar 2023 21:58:48 +0000 Subject: [PATCH 0285/1371] chore(deps): update dependency google-api-python-client to v2 (#1414) --- infra/utils/delete-projects/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/utils/delete-projects/requirements.txt b/infra/utils/delete-projects/requirements.txt index e4aa8717e5d..231759ff0e9 100644 --- a/infra/utils/delete-projects/requirements.txt +++ b/infra/utils/delete-projects/requirements.txt @@ -1,4 +1,4 @@ google-cloud==0.34.0 google-cloud-resource-manager==0.30.2 oauth2client==4.1.3 -google-api-python-client==1.12.8 +google-api-python-client==2.80.0 From 5af30fe14151c4d6e30468f499940c5d61b100d6 Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Fri, 17 Mar 2023 17:04:00 -0700 Subject: [PATCH 0286/1371] fix: bpmetadata cli accepts abs and relative paths (#1444) --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 1a2882f59f5..36ed75a023b 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.6.0 +VERSION=v0.6.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 73f7f709a47..7b425ef9033 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -55,8 +55,12 @@ func generate(cmd *cobra.Command, args []string) error { return fmt.Errorf("error getting working dir: %w", err) } + currBpPath := mdFlags.path + if !path.IsAbs(mdFlags.path) { + currBpPath = path.Join(wdPath, mdFlags.path) + } + var allBpPaths []string - currBpPath := path.Join(wdPath, mdFlags.path) _, err = os.Stat(path.Join(currBpPath, readmeFileName)) // throw an error and exit if root level readme.md doesn't exist From 8dd6b28ee33b9c1ebc0d0531d1614bf2460341cc Mon Sep 17 00:00:00 2001 From: Iris Chen <10179943+iyabchen@users.noreply.github.com> Date: Fri, 17 Mar 2023 21:04:53 -0400 Subject: [PATCH 0287/1371] chore(ci): add trigger for terraform-google-conversion (#1398) Co-authored-by: Bharath KKB --- .../test-org/ci-triggers/triggers.tf | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 85f8ea9ed2d..d652a6be69c 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -202,6 +202,145 @@ resource "google_cloudbuild_trigger" "tf_validator_main_license_check" { filename = ".ci/cloudbuild-tests-go-licenses.yaml" } +resource "google_cloudbuild_trigger" "tgc_main_integration_tests" { + for_each = { + tf12 = "0.12.31" + tf13 = "0.13.7" + } + name = "tgc-main-integration-tests-${each.key}" + description = "Main/release branch integration tests for terraform-google-conversion with terraform ${each.value}. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-google-conversion" + push { + branch = "^(main|release-.+)$" + } + } + substitutions = { + _TERRAFORM_VERSION = each.value + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id + } + + filename = ".ci/cloudbuild-tests-integration.yaml" +} + +resource "google_cloudbuild_trigger" "tgc_pull_integration_tests" { + for_each = { + tf12 = "0.12.31" + tf13 = "0.13.7" + } + name = "tgc-pull-integration-tests-${each.key}" + description = "Pull request integration tests for terraform-google-conversion with terraform ${each.value}. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-google-conversion" + pull_request { + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" + } + } + substitutions = { + _TERRAFORM_VERSION = each.value + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id + } + + filename = ".ci/cloudbuild-tests-integration.yaml" +} + +resource "google_cloudbuild_trigger" "tgc_pull_unit_tests" { + name = "tgc-pull-unit-tests" + description = "Pull request unit tests for terraform-google-conversion. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-google-conversion" + pull_request { + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" + } + } + substitutions = { + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id + } + + filename = ".ci/cloudbuild-tests-unit.yaml" +} + +resource "google_cloudbuild_trigger" "tgc_main_unit_tests" { + name = "tgc-main-unit-tests" + description = "Main/release branch unit tests for terraform-google-conversion. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-google-conversion" + push { + branch = "^(main|release-.+)$" + } + } + substitutions = { + _TEST_PROJECT = local.tf_validator_project_id + _TEST_FOLDER = local.tf_validator_folder_id + _TEST_ANCESTRY = local.tf_validator_ancestry + _TEST_ORG = local.org_id + } + + filename = ".ci/cloudbuild-tests-unit.yaml" +} + +resource "google_cloudbuild_trigger" "tgc_pull_license_check" { + name = "tgc-pull-license-check" + description = "Pull request license check for terraform-google-conversion. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-google-conversion" + pull_request { + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" + } + } + + filename = ".ci/cloudbuild-tests-go-licenses.yaml" +} + +resource "google_cloudbuild_trigger" "tgc_main_license_check" { + name = "tgc-main-license-check" + description = "Main/release branch license check for terraform-google-conversion. Managed by Terraform https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/tf-validator/project.tf" + + provider = google-beta + project = local.project_id + github { + owner = "GoogleCloudPlatform" + name = "terraform-google-conversion" + push { + branch = "^(main|release-.+)$" + } + } + + filename = ".ci/cloudbuild-tests-go-licenses.yaml" +} + resource "google_cloudbuild_trigger" "forseti_lint" { provider = google-beta project = local.project_id From 1aa567df1aa4ab6c3f0725e6ead27250e2438a67 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 17 Mar 2023 18:13:17 -0700 Subject: [PATCH 0288/1371] chore: add gtsorbo as network-forensics owner (#1436) Co-authored-by: g-awmalik Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index e80bfc02997..20c3c68b8fa 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -161,6 +161,7 @@ locals { name = "terraform-google-network-forensics" org = "GoogleCloudPlatform" description = "Deploys Zeek on Google Cloud" + owners = "@gtsorbo" topics = local.common_topics.net }, { From 63b8c170f4c48bc38cd81674dabcbda59c2860c0 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 17 Mar 2023 20:59:34 -0700 Subject: [PATCH 0289/1371] fix: removing replace directive for gatekeeper (#1446) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/go.mod | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 36ed75a023b..0f77aa5e7e9 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.6.1 +VERSION=v0.6.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 12ac38b7c3f..ee8db61feb7 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -24,7 +24,7 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.12 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible // indirect + github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e // indirect github.com/open-policy-agent/opa v0.34.2 github.com/otiai10/copy v1.6.0 github.com/pkg/errors v0.9.1 @@ -40,5 +40,3 @@ require ( sigs.k8s.io/kustomize/kyaml v0.13.9 sigs.k8s.io/yaml v1.2.0 ) - -replace github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible => github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e From bc6aafd1cacbc6817237ea65c3ce9405106cd521 Mon Sep 17 00:00:00 2001 From: Steve W <67876607+stevewalker-de@users.noreply.github.com> Date: Sat, 18 Mar 2023 00:42:29 -0400 Subject: [PATCH 0290/1371] chore: onboard Analytics Lakehouse repo (#1442) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 20c3c68b8fa..50cbff2ecd9 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -543,5 +543,12 @@ locals { description = "TODO" owners = "@donmccasland" }, + { + name = "terraform-google-analytics-lakehouse" + org = "GoogleCloudPlatform" + description = "Deploys a Lakehouse Architecture Solution" + owners = "@stevewalker-de" + topics = local.common_topics.da + }, ] } From c9cc7af901d8ff6c100358c540eb9eea5f8015a4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 20 Mar 2023 13:19:11 -0700 Subject: [PATCH 0291/1371] fix: kpt tests without existing working dir (#1447) --- infra/blueprint-test/pkg/kpt/kpt.go | 13 ++++++++++++- infra/blueprint-test/pkg/kpt/setters.go | 2 +- infra/blueprint-test/pkg/kpt/status.go | 18 +++++++++--------- infra/blueprint-test/pkg/krmt/krm.go | 14 +++----------- infra/blueprint-test/pkg/tft/terraform.go | 6 +----- infra/blueprint-test/pkg/utils/env.go | 9 +++++++++ infra/blueprint-test/pkg/utils/files.go | 2 +- infra/blueprint-test/pkg/utils/version.go | 2 +- 8 files changed, 37 insertions(+), 29 deletions(-) diff --git a/infra/blueprint-test/pkg/kpt/kpt.go b/infra/blueprint-test/pkg/kpt/kpt.go index d9040306e6e..6e736dc891b 100644 --- a/infra/blueprint-test/pkg/kpt/kpt.go +++ b/infra/blueprint-test/pkg/kpt/kpt.go @@ -61,7 +61,7 @@ func NewCmdConfig(t testing.TB, opts ...cmdOption) *CmdCfg { kOpts.kptBinary = "kpt" } // Validate required KPT version - if err := utils.MinSemver("v" + kOpts.RunCmd("version"), MIN_KPT_VERSION); err != nil { + if err := utils.MinSemver("v"+GetKptVersion(t, kOpts.kptBinary), MIN_KPT_VERSION); err != nil { t.Fatalf("unable to validate minimum required kpt version: %v", err) } @@ -96,3 +96,14 @@ func findKptfile(nodes []*yaml.RNode) (*kptfilev1.KptFile, error) { } return nil, fmt.Errorf("unable to find Kptfile, please include --include-meta-resources flag if a Kptfile is present") } + +// GetKptVersion gets the version of kptBinary +func GetKptVersion(t testing.TB, kptBinary string) string { + kVersionOpts := &CmdCfg{ + kptBinary: kptBinary, + dir: utils.GetWD(t), + logger: utils.GetLoggerFromT(), + t: t, + } + return kVersionOpts.RunCmd("version") +} diff --git a/infra/blueprint-test/pkg/kpt/setters.go b/infra/blueprint-test/pkg/kpt/setters.go index 316ffa9e751..3aae1b299c8 100644 --- a/infra/blueprint-test/pkg/kpt/setters.go +++ b/infra/blueprint-test/pkg/kpt/setters.go @@ -41,7 +41,7 @@ func UpsertSetters(nodes []*yaml.RNode, setters map[string]string) error { return nil } -//findSetterNode finds setter node from a slice of nodes. +// findSetterNode finds setter node from a slice of nodes. func findSetterNode(nodes []*yaml.RNode, path string) (*yaml.RNode, error) { for _, node := range nodes { np := node.GetAnnotations()[kioutil.PathAnnotation] diff --git a/infra/blueprint-test/pkg/kpt/status.go b/infra/blueprint-test/pkg/kpt/status.go index 0d888bf2aab..0d4ce2f57ae 100644 --- a/infra/blueprint-test/pkg/kpt/status.go +++ b/infra/blueprint-test/pkg/kpt/status.go @@ -8,7 +8,7 @@ import ( const ( // Resource event of type apply has apply type - ResourceApplyType = "apply" + ResourceApplyType = "apply" // Status of successful resource event ResourceOperationSuccessful = "Successful" // Group event of type apply has summary type @@ -26,14 +26,14 @@ type ResourceApplyStatus struct { } type GroupApplyStatus struct { - Action string `json:"action"` - Count int `json:"count"` - Failed int `json:"failed"` - Skipped int `json:"skipped"` - Status string `json:"status"` - Successful int `json:"successful"` - Timestamp string `json:"timestamp"` - Type string `json:"type"` + Action string `json:"action"` + Count int `json:"count"` + Failed int `json:"failed"` + Skipped int `json:"skipped"` + Status string `json:"status"` + Successful int `json:"successful"` + Timestamp string `json:"timestamp"` + Type string `json:"type"` } // GetPkgApplyResourcesStatus finds individual kpt apply statuses from newline separated string of apply statuses diff --git a/infra/blueprint-test/pkg/krmt/krm.go b/infra/blueprint-test/pkg/krmt/krm.go index dc3d3e955c7..12ee893b51d 100644 --- a/infra/blueprint-test/pkg/krmt/krm.go +++ b/infra/blueprint-test/pkg/krmt/krm.go @@ -132,11 +132,7 @@ func NewKRMBlueprintTest(t testing.TB, opts ...krmtOption) *KRMBlueprintTest { t.Fatalf("Dir path %s does not exist", krmt.exampleDir) } } else { - cwd, err := os.Getwd() - if err != nil { - t.Fatalf("unable to get wd :%v", err) - } - exampleDir, err := discovery.GetConfigDirFromTestDir(cwd) + exampleDir, err := discovery.GetConfigDirFromTestDir(utils.GetWD(t)) if err != nil { t.Fatalf("unable to detect KRM dir :%v", err) } @@ -173,12 +169,8 @@ func NewKRMBlueprintTest(t testing.TB, opts ...krmtOption) *KRMBlueprintTest { // getDefaultBuildDir returns a temporary build directory for hydrated configs. func (b *KRMBlueprintTest) getDefaultBuildDir() string { - cwd, err := os.Getwd() - if err != nil { - b.t.Fatalf("unable to get wd :%v", err) - } - buildDir := path.Join(cwd, tmpBuildDir) - err = os.MkdirAll(buildDir, 0755) + buildDir := path.Join(utils.GetWD(b.t), tmpBuildDir) + err := os.MkdirAll(buildDir, 0755) if err != nil { b.t.Fatalf("unable to create %s :%v", buildDir, err) } diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 035e8adc428..5cdcd794f68 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -176,11 +176,7 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { t.Fatalf("TFDir path %s does not exist", tft.tfDir) } } else { - cwd, err := os.Getwd() - if err != nil { - t.Fatalf("unable to get wd :%v", err) - } - tfdir, err := discovery.GetConfigDirFromTestDir(cwd) + tfdir, err := discovery.GetConfigDirFromTestDir(utils.GetWD(t)) if err != nil { t.Fatalf("unable to detect TFDir :%v", err) } diff --git a/infra/blueprint-test/pkg/utils/env.go b/infra/blueprint-test/pkg/utils/env.go index 89d3fb1b8f3..7aebfcd2c0b 100644 --- a/infra/blueprint-test/pkg/utils/env.go +++ b/infra/blueprint-test/pkg/utils/env.go @@ -39,3 +39,12 @@ func SetEnv(t testing.TB, key string, value string) { t.Fatal("Unable to put environment variable %s: %v", key, err) } } + +// Get the environment Working Directory. +func GetWD(t testing.TB) string { + cwd, err := os.Getwd() + if err != nil { + t.Fatalf("unable to get wd :%v", err) + } + return cwd +} diff --git a/infra/blueprint-test/pkg/utils/files.go b/infra/blueprint-test/pkg/utils/files.go index e3f7135d334..4191ccf03e2 100644 --- a/infra/blueprint-test/pkg/utils/files.go +++ b/infra/blueprint-test/pkg/utils/files.go @@ -20,7 +20,7 @@ func WriteTmpFile(data string) (string, error) { // WriteTmpFileWithExtension writes data to a temp file with given extension and returns the path. func WriteTmpFileWithExtension(data string, extension string) (string, error) { - f, err := ioutil.TempFile("", "*." + extension) + f, err := ioutil.TempFile("", "*."+extension) if err != nil { return "", err } diff --git a/infra/blueprint-test/pkg/utils/version.go b/infra/blueprint-test/pkg/utils/version.go index 0864ba83293..481a1630aa7 100644 --- a/infra/blueprint-test/pkg/utils/version.go +++ b/infra/blueprint-test/pkg/utils/version.go @@ -26,7 +26,7 @@ import ( func MinSemver(gotSemver string, minSemver string) error { if !semver.IsValid(gotSemver) { return fmt.Errorf("unable to parse got version %q", gotSemver) - } else if !semver.IsValid(minSemver) { + } else if !semver.IsValid(minSemver) { return fmt.Errorf("unable to parse minimum version %q", minSemver) } if semver.Compare(gotSemver, minSemver) == -1 { From 66079f15e1886ef5d383b58960e39cd6fe9e54a7 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 13:23:32 -0700 Subject: [PATCH 0292/1371] chore(master): release blueprint-test 0.5.1 (#1448) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b7ba136ec72..d3b9c9d0bac 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.5.0" + "infra/blueprint-test": "0.5.1" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 0bb8c86bedd..915c1219346 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.5.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.5.0...infra/blueprint-test/v0.5.1) (2023-03-20) + + +### Bug Fixes + +* kpt tests without existing working dir ([#1447](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1447)) ([c9cc7af](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/c9cc7af901d8ff6c100358c540eb9eea5f8015a4)) + ## [0.5.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.4.1...infra/blueprint-test/v0.5.0) (2023-02-28) From 5ca3e865c81cdc9f2cafcf47b8bfb2453c1bdf01 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 21 Mar 2023 14:23:12 -0700 Subject: [PATCH 0293/1371] feat: adds metadata validation logic (#1440) Co-authored-by: Awais Malik --- .gitignore | 1 + cli/Makefile | 14 +- cli/bpmetadata/cmd.go | 39 +- cli/bpmetadata/schema/bpmetadataschema.json | 906 ++++++++++++++++++ cli/bpmetadata/schema/generate.go | 49 + cli/bpmetadata/schema/main.go | 44 + cli/bpmetadata/types.go | 141 +-- cli/bpmetadata/types_ui.go | 55 +- cli/bpmetadata/types_ui_ext.go | 72 +- cli/bpmetadata/validate.go | 115 +++ cli/bpmetadata/validate_test.go | 58 ++ cli/go.mod | 6 +- cli/go.sum | 8 + .../bpmetadata/schema/empty-metadata.yaml | 0 .../schema/invalid-metadata-w-enum.yaml | 13 + .../bpmetadata/schema/invalid-metadata.yaml | 7 + .../schema/valid-metadata-w-enum.yaml | 13 + .../bpmetadata/schema/valid-metadata.yaml | 9 + 18 files changed, 1399 insertions(+), 151 deletions(-) create mode 100644 cli/bpmetadata/schema/bpmetadataschema.json create mode 100644 cli/bpmetadata/schema/generate.go create mode 100644 cli/bpmetadata/schema/main.go create mode 100644 cli/bpmetadata/validate.go create mode 100644 cli/bpmetadata/validate_test.go create mode 100644 cli/testdata/bpmetadata/schema/empty-metadata.yaml create mode 100644 cli/testdata/bpmetadata/schema/invalid-metadata-w-enum.yaml create mode 100644 cli/testdata/bpmetadata/schema/invalid-metadata.yaml create mode 100644 cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml create mode 100644 cli/testdata/bpmetadata/schema/valid-metadata.yaml diff --git a/.gitignore b/.gitignore index fe8ef185091..50b2cdb29a9 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ config-connector/tests/testcases/environments.yaml .DS_Store .vscode *.pyc +schema \ No newline at end of file diff --git a/cli/Makefile b/cli/Makefile index 0f77aa5e7e9..62f52762f51 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,21 +1,24 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.6.2 +VERSION=v0.7.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin BUILD_DIR=./bin +SCHEMA_DIR=./bpmetadata/schema NAME=cft BUCKET=gs://cft-cli # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" +# need an extra build command to embed an most up to date schema in the binary .PHONY: build build: go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} - + go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} + .PHONY: publish publish: gcloud alpha storage cp "${BUILD_DIR}/*" "${BUCKET}/${VERSION}" @@ -28,6 +31,9 @@ release: $(PLATFORMS) $(PLATFORMS): GO111MODULE=on GOOS=$@ GOARCH=amd64 CGO_ENABLED=0 go build ${LDFLAGS} -o "${BUILD_DIR}/${NAME}-$@-amd64" -.PHONY: test -test: +.PHONY: go_test +go_test: go test ./... + +.PHONY: test +test: build go_test diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 7b425ef9033..066417c62f4 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -14,9 +14,11 @@ import ( ) var mdFlags struct { - path string - nested bool - force bool + path string + nested bool + force bool + display bool + validate bool } const ( @@ -35,9 +37,11 @@ const ( func init() { viper.AutomaticEnv() + Cmd.Flags().BoolVarP(&mdFlags.display, "display", "d", false, "Generate the display metadata used for UI rendering.") + Cmd.Flags().BoolVarP(&mdFlags.force, "force", "f", false, "Force the generation of fresh metadata.") Cmd.Flags().StringVarP(&mdFlags.path, "path", "p", ".", "Path to the blueprint for generating metadata.") Cmd.Flags().BoolVar(&mdFlags.nested, "nested", true, "Flag for generating metadata for nested blueprint, if any.") - Cmd.Flags().BoolVarP(&mdFlags.force, "force", "f", false, "Force the generation of metadata") + Cmd.Flags().BoolVarP(&mdFlags.validate, "validate", "v", false, "Validate metadata against the schema definition.") } var Cmd = &cobra.Command{ @@ -55,6 +59,15 @@ func generate(cmd *cobra.Command, args []string) error { return fmt.Errorf("error getting working dir: %w", err) } + // validate metadata if there is an argument passed into the command + if mdFlags.validate { + if err := validateMetadata(mdFlags.path, wdPath); err != nil { + return err + } + + return nil + } + currBpPath := mdFlags.path if !path.IsAbs(mdFlags.path) { currBpPath = path.Join(wdPath, mdFlags.path) @@ -135,13 +148,13 @@ func generateMetadataForBpPath(bpPath string) error { func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (*BlueprintMetadata, error) { // verfiy that the blueprint path is valid & get repo details - repoDetails, err := getRepoDetailsByPath(bpPath, bpMetadataObj.Spec.Info.Source) + repoDetails, err := getRepoDetailsByPath(bpPath, bpMetadataObj.Spec.Source) if err != nil { return nil, err } // start creating blueprint metadata - bpMetadataObj.Meta = yaml.ResourceMeta{ + bpMetadataObj.ResourceMeta = yaml.ResourceMeta{ TypeMeta: yaml.TypeMeta{ APIVersion: metadataApiVersion, Kind: metadataKind, @@ -151,7 +164,7 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* Name: repoDetails.Name, Namespace: "", }, - Labels: bpMetadataObj.Meta.ObjectMeta.Labels, + Labels: bpMetadataObj.ResourceMeta.ObjectMeta.Labels, Annotations: map[string]string{"config.kubernetes.io/local-config": "true"}, }, } @@ -163,13 +176,13 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* } // create blueprint info - err = bpMetadataObj.Spec.Info.create(bpPath, readmeContent) + err = bpMetadataObj.Spec.BlueprintInfo.create(bpPath, readmeContent) if err != nil { return nil, fmt.Errorf("error creating blueprint info: %w", err) } // create blueprint interfaces i.e. variables & outputs - err = bpMetadataObj.Spec.Interfaces.create(bpPath) + err = bpMetadataObj.Spec.BlueprintInterface.create(bpPath) if err != nil { return nil, fmt.Errorf("error creating blueprint interfaces: %w", err) } @@ -182,10 +195,10 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error creating blueprint requirements: %w", err) } - bpMetadataObj.Spec.Requirements = *requirements + bpMetadataObj.Spec.BlueprintRequirements = *requirements // create blueprint content i.e. documentation, icons, etc. - bpMetadataObj.Spec.Content.create(bpPath, repoDetails.Source.RootPath, readmeContent) + bpMetadataObj.Spec.BlueprintContent.create(bpPath, repoDetails.Source.RootPath, readmeContent) return bpMetadataObj, nil } @@ -325,8 +338,8 @@ func UnmarshalMetadata(bpPath string) (*BlueprintMetadata, error) { return &bpObj, err } - currVersion := bpObj.Meta.TypeMeta.APIVersion - currKind := bpObj.Meta.TypeMeta.Kind + currVersion := bpObj.ResourceMeta.TypeMeta.APIVersion + currKind := bpObj.ResourceMeta.TypeMeta.Kind //validate GVK for current metadata if currVersion != metadataApiVersion { diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json new file mode 100644 index 00000000000..e41b932ab19 --- /dev/null +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -0,0 +1,906 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata/blueprint-metadata", + "$ref": "#/$defs/BlueprintMetadata", + "$defs": { + "BlueprintActuationTool": { + "properties": { + "type": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + }, + "BlueprintArchitecture": { + "properties": { + "diagram": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "diagram", + "description" + ] + }, + "BlueprintAuthor": { + "properties": { + "author": { + "type": "string" + }, + "description": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "author" + ] + }, + "BlueprintCloudProduct": { + "properties": { + "productId": { + "type": "string" + }, + "pageUrl": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "pageUrl" + ] + }, + "BlueprintCostEstimate": { + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "description", + "url" + ] + }, + "BlueprintDescription": { + "properties": { + "tagline": { + "type": "string" + }, + "detailed": { + "type": "string" + }, + "preDeploy": { + "type": "string" + }, + "html": { + "type": "string" + }, + "eulaUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "architecture": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, + "BlueprintDiagram": { + "properties": { + "name": { + "type": "string" + }, + "altText": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name" + ] + }, + "BlueprintListContent": { + "properties": { + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "title" + ] + }, + "BlueprintMetadata": { + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/$defs/ObjectMeta" + }, + "spec": { + "$ref": "#/$defs/BlueprintMetadataSpec" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "spec" + ] + }, + "BlueprintMetadataSpec": { + "properties": { + "title": { + "type": "string" + }, + "source": { + "$ref": "#/$defs/BlueprintRepoDetail" + }, + "version": { + "type": "string" + }, + "actuationTool": { + "$ref": "#/$defs/BlueprintActuationTool" + }, + "description": { + "$ref": "#/$defs/BlueprintDescription" + }, + "icon": { + "type": "string" + }, + "deploymentDuration": { + "$ref": "#/$defs/BlueprintTimeEstimate" + }, + "costEstimate": { + "$ref": "#/$defs/BlueprintCostEstimate" + }, + "cloudProducts": { + "items": { + "$ref": "#/$defs/BlueprintCloudProduct" + }, + "type": "array" + }, + "quotaDetails": { + "items": { + "$ref": "#/$defs/BlueprintQuotaDetail" + }, + "type": "array" + }, + "author": { + "$ref": "#/$defs/BlueprintAuthor" + }, + "softwareGroups": { + "items": { + "$ref": "#/$defs/BlueprintSoftwareGroup" + }, + "type": "array" + }, + "supportInfo": { + "$ref": "#/$defs/BlueprintSupport" + }, + "architecture": { + "$ref": "#/$defs/BlueprintArchitecture" + }, + "diagrams": { + "items": { + "$ref": "#/$defs/BlueprintDiagram" + }, + "type": "array" + }, + "documentation": { + "items": { + "$ref": "#/$defs/BlueprintListContent" + }, + "type": "array" + }, + "subBlueprints": { + "items": { + "$ref": "#/$defs/BlueprintMiscContent" + }, + "type": "array" + }, + "examples": { + "items": { + "$ref": "#/$defs/BlueprintMiscContent" + }, + "type": "array" + }, + "variables": { + "items": { + "$ref": "#/$defs/BlueprintVariable" + }, + "type": "array" + }, + "variableGroups": { + "items": { + "$ref": "#/$defs/BlueprintVariableGroup" + }, + "type": "array" + }, + "outputs": { + "items": { + "$ref": "#/$defs/BlueprintOutput" + }, + "type": "array" + }, + "roles": { + "items": { + "$ref": "#/$defs/BlueprintRoles" + }, + "type": "array" + }, + "services": { + "items": { + "type": "string" + }, + "type": "array" + }, + "input": { + "$ref": "#/$defs/BlueprintUIInput" + }, + "runtime": { + "$ref": "#/$defs/BlueprintUIOutput" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "title", + "source" + ] + }, + "BlueprintMiscContent": { + "properties": { + "name": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name" + ] + }, + "BlueprintOutput": { + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name" + ] + }, + "BlueprintQuotaDetail": { + "properties": { + "variable": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "GCE_INSTANCE", + "GCE_DISK" + ] + }, + "quotaType": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "type", + "quotaType" + ] + }, + "BlueprintRepoDetail": { + "properties": { + "repo": { + "type": "string" + }, + "sourceType": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "repo", + "sourceType" + ] + }, + "BlueprintRoles": { + "properties": { + "level": { + "type": "string" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "level", + "roles" + ] + }, + "BlueprintSoftware": { + "properties": { + "title": { + "type": "string" + }, + "version": { + "type": "string" + }, + "url": { + "type": "string" + }, + "licenseUrl": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "title" + ] + }, + "BlueprintSoftwareGroup": { + "properties": { + "type": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "OS" + ] + }, + "software": { + "items": { + "$ref": "#/$defs/BlueprintSoftware" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, + "BlueprintSupport": { + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string" + }, + "entity": { + "type": "string" + }, + "showSupportId": { + "type": "boolean" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "description" + ] + }, + "BlueprintTimeEstimate": { + "properties": { + "configuration": { + "type": "integer" + }, + "deployment": { + "type": "integer" + } + }, + "additionalProperties": false, + "type": "object" + }, + "BlueprintUIInput": { + "properties": { + "variables": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/DisplayVariable" + } + }, + "type": "object" + }, + "sections": { + "items": { + "$ref": "#/$defs/DisplaySection" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, + "BlueprintUIOutput": { + "properties": { + "outputMessage": { + "type": "string" + }, + "suggestedActions": { + "items": { + "$ref": "#/$defs/UIActionItem" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, + "BlueprintVariable": { + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string" + }, + "default": true, + "required": { + "type": "boolean" + } + }, + "additionalProperties": false, + "type": "object" + }, + "BlueprintVariableGroup": { + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "variables": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name" + ] + }, + "DisplaySection": { + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + }, + "tooltip": { + "type": "string" + }, + "subtext": { + "type": "string" + }, + "parent": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name" + ] + }, + "DisplayVariable": { + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "boolean" + }, + "visible": { + "type": "boolean" + }, + "tooltip": { + "type": "string" + }, + "placeholder": { + "type": "string" + }, + "regexValidation": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "section": { + "type": "string" + }, + "resourceImpact": { + "type": "boolean" + }, + "x-googleProperty": { + "$ref": "#/$defs/GooglePropertyExtension" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name" + ] + }, + "GCEDiskSizeExtension": { + "properties": { + "diskTypeVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "diskTypeVariable" + ] + }, + "GCEExternalIPExtension": { + "properties": { + "networkVariable": { + "type": "string" + }, + "externalIpType": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "networkVariable" + ] + }, + "GCEFirewallExtension": { + "properties": { + "networkVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "networkVariable" + ] + }, + "GCEFirewallRangeExtension": { + "properties": { + "firewallVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "firewallVariable" + ] + }, + "GCEGPUCountExtension": { + "properties": { + "machineTypeVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "machineTypeVariable" + ] + }, + "GCEGPUTypeExtension": { + "properties": { + "machineType": { + "type": "string" + }, + "gpuType": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "machineType" + ] + }, + "GCEGenericResourceExtension": { + "properties": { + "resourceVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "resourceVariable" + ] + }, + "GCEIPForwardingExtension": { + "properties": { + "networkVariable": { + "type": "string" + }, + "notConfigurable": { + "type": "boolean" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "networkVariable" + ] + }, + "GCELocationExtension": { + "properties": { + "allowlistedZones": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowlistedRegions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, + "GCEMachineTypeExtension": { + "properties": { + "minCpu": { + "type": "integer" + }, + "minRamGb": { + "type": "integer" + }, + "disallowCustomMachineTypes": { + "type": "boolean" + } + }, + "additionalProperties": false, + "type": "object" + }, + "GCENetworkExtension": { + "properties": { + "allowSharedVpcs": { + "type": "boolean" + }, + "machineTypeVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "machineTypeVariable" + ] + }, + "GCESubnetworkExtension": { + "properties": { + "networkVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "networkVariable" + ] + }, + "GooglePropertyExtension": { + "properties": { + "type": { + "type": "string", + "enum": [ + "EMAIL_ADDRESS", + "MULTI_LINE_STRING", + "GCE_DISK_IMAGE", + "GCE_DISK_TYPE", + "GCE_DISK_SIZE", + "GCE_MACHINE_TYPE", + "GCE_NETWORK", + "GCE_ZONE", + "GCE_SUBNETWORK", + "GCE_REGION", + "GCE_GPU_TYPE", + "GCE_GPU_COUNT", + "GCE_EXTERNAL_IP", + "GCE_IP_FORWARDING", + "GCE_FIREWALL", + "GCE_FIREWALL_RANGE", + "GCE_GENERIC_RESOURCE", + "GCS_BUCKET", + "IAM_SERVICE_ACCOUNT" + ] + }, + "zoneProperty": { + "type": "string" + }, + "gceMachineType": { + "$ref": "#/$defs/GCEMachineTypeExtension" + }, + "gceDiskSize": { + "$ref": "#/$defs/GCEDiskSizeExtension" + }, + "gceSubnetwork": { + "$ref": "#/$defs/GCESubnetworkExtension" + }, + "gceResource": { + "$ref": "#/$defs/GCEGenericResourceExtension" + }, + "gceGpuType": { + "$ref": "#/$defs/GCEGPUTypeExtension" + }, + "gceGpuCount": { + "$ref": "#/$defs/GCEGPUCountExtension" + }, + "gceNetwork": { + "$ref": "#/$defs/GCENetworkExtension" + }, + "gceExternalIp": { + "$ref": "#/$defs/GCEExternalIPExtension" + }, + "gceIpForwarding": { + "$ref": "#/$defs/GCEIPForwardingExtension" + }, + "gceFirewall": { + "$ref": "#/$defs/GCEFirewallExtension" + }, + "gceFirewallRange": { + "$ref": "#/$defs/GCEFirewallRangeExtension" + }, + "gceZone": { + "$ref": "#/$defs/GCELocationExtension" + }, + "gceRegion": { + "$ref": "#/$defs/GCELocationExtension" + }, + "iamServiceAccount": { + "$ref": "#/$defs/IAMServiceAccountExtension" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "type" + ] + }, + "IAMServiceAccountExtension": { + "properties": { + "roles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "roles" + ] + }, + "ObjectMeta": { + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "labels": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "annotations": { + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + } + }, + "additionalProperties": false, + "type": "object" + }, + "UIActionItem": { + "properties": { + "heading": { + "type": "string" + }, + "description": { + "type": "string" + }, + "snippet": { + "type": "string" + }, + "showIf": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "heading" + ] + } + } +} \ No newline at end of file diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go new file mode 100644 index 00000000000..874faf0b40d --- /dev/null +++ b/cli/bpmetadata/schema/generate.go @@ -0,0 +1,49 @@ +package main + +import ( + "encoding/json" + "os" + "path" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata" + "github.com/invopop/jsonschema" +) + +const schemaFileName = "bpmetadataschema.json" + +// generateSchema creates a JSON Schema based on the types +// defined in the type BlueprintMetadata and it's recursive +// children. The generated schema will be used to validate +// all metadata files for consistency and will be uploaded +// to https://www.schemastore.org/ to provide IntelliSense +// VSCode for authors manually authoring the metadata. +func generateSchemaFile(o, wdPath string) error { + sData, err := GenerateSchema() + if err != nil { + return err + } + + // check if the provided output path is relative + if !path.IsAbs(o) { + o = path.Join(wdPath, o) + } + + err = os.WriteFile(path.Join(o, schemaFileName), sData, 0644) + if err != nil { + return err + } + + Log.Info("generated JSON schema for BlueprintMetadata", "path", path.Join(o, schemaFileName)) + return nil +} + +func GenerateSchema() ([]byte, error) { + r := &jsonschema.Reflector{} + s := r.Reflect(&bpmetadata.BlueprintMetadata{}) + sData, err := json.MarshalIndent(s, "", " ") + if err != nil { + return nil, err + } + + return sData, nil +} diff --git a/cli/bpmetadata/schema/main.go b/cli/bpmetadata/schema/main.go new file mode 100644 index 00000000000..ddc6a87f7a0 --- /dev/null +++ b/cli/bpmetadata/schema/main.go @@ -0,0 +1,44 @@ +package main + +import ( + "flag" + "fmt" + "os" + "path" + + log "github.com/inconshreveable/log15" +) + +// bpmetadata log15 handler +var Log = log.New() + +func main() { + flag.Usage = func() { + fmt.Fprintf(os.Stderr, + "USAGE: %s [-output=PATH]\n", + path.Base(os.Args[0])) + flag.PrintDefaults() + os.Exit(1) + } + + output := flag.String("output", "", "output path for generating the JSON schema definition") + flag.Parse() + + os.Exit(process(*output)) +} + +func process(output string) int { + // get the working directory for the command + wdPath, err := os.Getwd() + if err != nil { + Log.Error("error getting working dir", "err", err) + return 1 + } + + if err := generateSchemaFile(output, wdPath); err != nil { + Log.Error("error generating schema", "err", err) + return 1 + } + + return 0 +} diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 39f8e9927d4..efbcb5c6f35 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -6,29 +6,29 @@ import ( // BlueprintMetadata defines the overall structure for blueprint metadata. type BlueprintMetadata struct { - Meta yaml.ResourceMeta `json:",inline" yaml:",inline"` - Spec BlueprintMetadataSpec + yaml.ResourceMeta `json:",inline" yaml:",inline"` + Spec BlueprintMetadataSpec `json:"spec" yaml:"spec"` } // BlueprintMetadataSpec defines the spec portion of the blueprint metadata. // All immediate types within BlueprintMetadataSpec are inline and will // not appear as nodes in metadata. type BlueprintMetadataSpec struct { - Info BlueprintInfo `json:",inline" yaml:",inline"` - Content BlueprintContent `json:",inline" yaml:",inline"` - Interfaces BlueprintInterface `json:",inline" yaml:",inline"` - Requirements BlueprintRequirements `json:",inline" yaml:",inline"` - UI BlueprintUI `json:",inline" yaml:",inline"` + BlueprintInfo `json:",inline,omitempty" yaml:",inline,omitempty"` + BlueprintContent `json:",inline,omitempty" yaml:",inline,omitempty"` + BlueprintInterface `json:",inline,omitempty" yaml:",inline,omitempty"` + BlueprintRequirements `json:",inline,omitempty" yaml:",inline,omitempty"` + BlueprintUI `json:",inline,omitempty" yaml:",inline,omitempty"` } type BlueprintInfo struct { // Title for the blueprint. // Autogenerated: First H1 text in readme.md. - Title string + Title string `json:"title" yaml:"title"` // Blueprint source location and source type. // Autogen details in BlueprintRepoDetail. - Source *BlueprintRepoDetail + Source *BlueprintRepoDetail `json:"source" yaml:"source"` // Last released semantic version for the packaged blueprint. // Autogenerated: From the `module_name` attribute of the `provider_meta "google"` block. @@ -36,7 +36,7 @@ type BlueprintInfo struct { // provider_meta "google" { // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" // } - Version string `json:",omitempty" yaml:",omitempty"` + Version string `json:"version,omitempty" yaml:"version,omitempty"` // Actuation tool e.g. Terraform and its required version. // Autogen details in BlueprintActuationTool. @@ -44,45 +44,46 @@ type BlueprintInfo struct { // Various types of descriptions associated with the blueprint. // Autogen details in BlueprintDescription. - Description *BlueprintDescription `json:",omitempty" yaml:",omitempty"` + Description *BlueprintDescription `json:"description,omitempty" yaml:"description,omitempty"` // Path to an image representing the icon for the blueprint. - // Will be set as "assets/icon.png". Can be manually authored otherwise. - Icon string `json:",omitempty" yaml:",omitempty"` + // Will be set as "assets/icon.png", if present. Otherwise, it + // can be manually authored. + Icon string `json:"icon,omitempty" yaml:"icon,omitempty"` // The time estimate for configuring and deploying the blueprint. // Autogen details in BlueprintTimeEstimate. - DeploymentTime BlueprintTimeEstimate `json:"deploymentTime,omitempty" yaml:"deploymentTime,omitempty"` + DeploymentDuration BlueprintTimeEstimate `json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"` // The cost estimate for the blueprint based on preconfigured variables. // Autogen details in BlueprintCostEstimate. - CostEstimate BlueprintCostEstimate `json:",omitempty" yaml:",omitempty"` + CostEstimate BlueprintCostEstimate `json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"` // A list of GCP cloud products used in the blueprint. // Manually authored. - CloudProducts []BlueprintCloudProduct `json:",omitempty" yaml:",omitempty"` + CloudProducts []BlueprintCloudProduct `json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` // A configuration of fixed and dymanic GCP quotas that apply to the soltuion. // Manually authored. - QuotaDetails []BlueprintQuotaDetail `json:",omitempty" yaml:",omitempty"` + QuotaDetails []BlueprintQuotaDetail `json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` // Details on the author producing the blueprint. // Manually authored. - Author BlueprintAuthor `json:",omitempty" yaml:",omitempty"` + Author BlueprintAuthor `json:"author,omitempty" yaml:"author,omitempty"` // Details on sotfware installed as part of the blueprint. // Manually authored. - SoftwareGroups []BlueprintSoftwareGroup `json:",omitempty" yaml:",omitempty"` + SoftwareGroups []BlueprintSoftwareGroup `json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` // Support offered, if any for the blueprint. // Manually authored. - SupportInfo BlueprintSupport `json:",omitempty" yaml:",omitempty"` + SupportInfo BlueprintSupport `json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` } type BlueprintRepoDetail struct { // Autogenerated: URL from the .git dir. // Can be manually overriden with a custom URL if needed. - Repo string + Repo string `json:"repo" yaml:"repo"` // Set as "git" for now until more types are supported. SourceType string `json:"sourceType" yaml:"sourceType"` @@ -98,7 +99,7 @@ type BlueprintActuationTool struct { // terraform { // required_version = ">= 0.13" // } - Version string `json:",omitempty" yaml:",omitempty"` + Version string `json:"version,omitempty" yaml:"version,omitempty"` } type BlueprintDescription struct { @@ -106,10 +107,10 @@ type BlueprintDescription struct { // immediately after the each type's heading declaration in readme.md. // Autogenerated: Markdown after "### Tagline". - Tagline string `json:",omitempty" yaml:",omitempty"` + Tagline string `json:"tagline,omitempty" yaml:"tagline,omitempty"` // Autogenerated: Markdown after "### Detailed". - Detailed string `json:",omitempty" yaml:",omitempty"` + Detailed string `json:"detailed,omitempty" yaml:"detailed,omitempty"` // Autogenerated: Markdown after "### PreDeploy". PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` @@ -141,8 +142,8 @@ type BlueprintCostEstimate struct { // with a description E.g. // ### Cost // [View cost details](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) - Description string `json:",omitempty" yaml:",omitempty"` - URL string `json:",omitempty" yaml:",omitempty"` + Description string `json:"description" yaml:"description"` + URL string `json:"url" yaml:"url"` } // A GCP cloud product used in the blueprint. @@ -150,14 +151,14 @@ type BlueprintCostEstimate struct { type BlueprintCloudProduct struct { // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") // product used in the blueprint. - ProductId string `json:",omitempty" yaml:",omitempty"` + ProductId string `json:"productId,omitempty" yaml:"productId,omitempty"` // Url for the product. - PageURL string `json:",omitempty" yaml:",omitempty"` + PageURL string `json:"pageUrl" yaml:"pageUrl"` // A label string for the product, if it is not an integrated GCP product. // E.g. "Data Studio" - Label string `json:",omitempty" yaml:",omitempty"` + Label string `json:"label,omitempty" yaml:"label,omitempty"` } type QuotaResourceType string @@ -184,7 +185,7 @@ type BlueprintQuotaDetail struct { // ResourceType is the type of resource the quota will be applied to i.e. // GCE Instance or Disk etc. - ResourceType QuotaResourceType `json:"type" yaml:"type"` + ResourceType QuotaResourceType `json:"type" yaml:"type" jsonschema:"enum=GCE_INSTANCE,enum=GCE_DISK"` // QuotaType is a key/value pair of the actual quotas an their corresponding // values. @@ -193,13 +194,13 @@ type BlueprintQuotaDetail struct { type BlueprintAuthor struct { // Name of template author or organization. - Title string `yaml:"author"` + Title string `json:"author" yaml:"author"` // Description of the author. - Description string `yaml:"author,omitempty"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` // Link to the author's website. - URL string `yaml:"url,omitempty"` + URL string `json:"url,omitempty" yaml:"url,omitempty"` } type SoftwareGroupType string @@ -212,42 +213,42 @@ const ( // A group of related software components for the blueprint. type BlueprintSoftwareGroup struct { // Pre-defined software types. - Type SoftwareGroupType `yaml:"type"` + Type SoftwareGroupType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=UNSPECIFIED,enum=OS"` // Software components belonging to this group. - Software []BlueprintSoftware `yaml:"software"` + Software []BlueprintSoftware `json:"software,omitempty" yaml:"software,omitempty"` } // A description of a piece of a single software component // installed by the blueprint. type BlueprintSoftware struct { // User-visible title. - Title string `yaml:"title"` + Title string `json:"title" yaml:"title"` // Software version. - Version string `yaml:"title,omitempty"` + Version string `json:"version,omitempty" yaml:"version,omitempty"` // Link to development site or marketing page for this software. - URL string `yaml:"url,omitempty"` + URL string `json:"url,omitempty" yaml:"url,omitempty"` // Link to license page. - LicenseURL string `yaml:"licenseUrl,omitempty"` + LicenseURL string `json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"` } // A description of a support option type BlueprintSupport struct { //Description of the support option. - Description string `yaml:"description,omitempty"` + Description string `json:"description" yaml:"description"` // Link to the page providing this support option. - URL string `yaml:"url"` + URL string `json:"url,omitempty" yaml:"url,omitempty"` // The organization or group that provides the support option (e.g.: // "Community", "Google"). - Entity string `yaml:"entity,omitempty"` + Entity string `json:"entity,omitempty" yaml:"entity,omitempty"` // Whether to show the customer's support ID. - ShowSupportId bool `yaml:"showSupportId,omitempty"` + ShowSupportId bool `json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"` } // BlueprintContent defines the detail for blueprint related content such as @@ -255,70 +256,70 @@ type BlueprintSupport struct { type BlueprintContent struct { // Diagrams are manually entered. Architecture BlueprintArchitecture `json:"architecture,omitempty" yaml:"architecture,omitempty"` - Diagrams []BlueprintDiagram `json:",omitempty" yaml:",omitempty"` - Documentation []BlueprintListContent `json:",omitempty" yaml:",omitempty"` + Diagrams []BlueprintDiagram `json:"diagrams,omitempty" yaml:"diagrams,omitempty"` + Documentation []BlueprintListContent `json:"documentation,omitempty" yaml:"documentation,omitempty"` SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` - Examples []BlueprintMiscContent `json:",omitempty" yaml:",omitempty"` + Examples []BlueprintMiscContent `json:"examples,omitempty" yaml:"examples,omitempty"` } // BlueprintInterface defines the input and output variables for the blueprint. type BlueprintInterface struct { - Variables []BlueprintVariable `json:",omitempty" yaml:",omitempty"` + Variables []BlueprintVariable `json:"variables,omitempty" yaml:"variables,omitempty"` // VariableGroups are manually entered. VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` - Outputs []BlueprintOutput `json:",omitempty" yaml:",omitempty"` + Outputs []BlueprintOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` } // BlueprintRequirements defines the roles required and the assocaited services // that need to be enabled to provision blueprint resources. type BlueprintRequirements struct { - Roles []BlueprintRoles - Services []string + Roles []BlueprintRoles `json:"roles,omitempty" yaml:"roles,omitempty"` + Services []string `json:"services,omitempty" yaml:"services,omitempty"` } type BlueprintMiscContent struct { - Name string - Location string + Name string `json:"name" yaml:"name"` + Location string `json:"location,omitempty" yaml:"location,omitempty"` } type BlueprintArchitecture struct { - DiagramURL string `json:"diagram,omitempty" yaml:"diagram,omitempty"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` + DiagramURL string `json:"diagram" yaml:"diagram"` + Description string `json:"description" yaml:"description"` } // BlueprintDiagram is manually entered. type BlueprintDiagram struct { - Name string + Name string `json:"name" yaml:"name"` AltText string `json:"altText,omitempty" yaml:"altText,omitempty"` - Description string `json:",omitempty" yaml:",omitempty"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` } type BlueprintListContent struct { - Title string - URL string `json:",omitempty" yaml:",omitempty"` + Title string `json:"title" yaml:"title"` + URL string `json:"url,omitempty" yaml:url,omitempty"` } type BlueprintVariable struct { - Name string - Description string `json:",omitempty" yaml:",omitempty"` - VarType string `yaml:"type"` - Default interface{} `json:",omitempty" yaml:",omitempty"` - Required bool + Name string `json:"name,omitempty" yaml:"name,omitempty"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` + VarType string `json:"type,omitempty" yaml:"type,omitempty"` + Default interface{} `json:"default,omitempty" yaml:"default,omitempty"` + Required bool `json:"required,omitempty" yaml:"required,omitempty"` } // BlueprintVariableGroup is manually entered. type BlueprintVariableGroup struct { - Name string - Description string `json:",omitempty" yaml:",omitempty"` - Variables []string + Name string `json:"name" yaml:"name"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` + Variables []string `json:"variables,omitempty" yaml:"variables,omitempty"` } type BlueprintOutput struct { - Name string - Description string `json:",omitempty" yaml:",omitempty"` + Name string `json:"name" yaml:"name"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` } type BlueprintRoles struct { - Level string - Roles []string + Level string `json:"level" yaml:"level"` + Roles []string `json:"roles" yaml:"roles"` } diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index 9080c196098..81cef247985 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -4,62 +4,63 @@ package bpmetadata type BlueprintUI struct { // The top-level input section that defines the list of variables and // their sections on the deployment page. - Input BlueprintUIInput `yaml:"input"` + Input BlueprintUIInput `json:"input,omitempty" yaml:"input,omitempty"` // The top-level section for listing runtime (or blueprint output) information // i.e. the console URL for the VM or a button to ssh into the VM etc based on. - Runtime BlueprintUIOutput `yaml:"runtime"` + Runtime BlueprintUIOutput `json:"runtime,omitempty" yaml:"runtime,omitempty"` } // BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. type BlueprintUIInput struct { // variables is a map defining all inputs on the UI. - DisplayVariables map[string]DisplayVariable `yaml:"variables"` + DisplayVariables map[string]DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"` // Sections is a generic structure for grouping inputs together. - DisplaySections []DisplaySection `yaml:"sections"` + DisplaySections []DisplaySection `json:"sections,omitempty" yaml:"sections,omitempty"` } // Additional display specific metadata pertaining to a particular // input variable. type DisplayVariable struct { // The variable name from the corresponding standard metadata file. - Name string `yaml:"name"` + Name string `json:"name" yaml:"name"` - // Visible title for the variable on the UI. - Title bool `yaml:"title,omitempty"` + // Visible title for the variable on the UI. If not present, + // Name will be used for the Title. + Title bool `json:"title,omitempty" yaml:"title,omitempty"` // A flag to hide or show the variable on the UI. - Visible bool `yaml:"visible,omitempty"` + Visible bool `json:"visible,omitempty" yaml:"visible,omitempty"` // Variable tooltip. - Tooltip string `yaml:"tooltip,omitempty"` + Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // Placeholder text (when there is no default). - Placeholder string `yaml:"placeholder,omitempty"` + Placeholder string `json:"placeholder,omitempty" yaml:"placeholder,omitempty"` // Text describing the validation rules for the variable based // on a regular expression. // Typically shown after an invalid input. - RegExValidation string `yaml:"regexValidation,omitempty"` + RegExValidation string `json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` // Minimum no. of values for the input variable. - Minimum int `yaml:"min,omitempty"` + Minimum int `json:"min,omitempty" yaml:"min,omitempty"` // Max no. of values for the input variable. - Maximum int `yaml:"max,omitempty"` + Maximum int `json:"max,omitempty" yaml:"max,omitempty"` // The name of a section to which this variable belongs. // variables belong to the root section if this field is // not set. - Section string `yaml:"section,omitempty"` + Section string `json:"section,omitempty" yaml:"section,omitempty"` // Designates that this variable has no impact on the costs, quotas, or // permissions associated with the resources in the expanded deployment. // Typically true for application-specific variables that do not affect the // size or number of instances in the deployment. - ResourceImpact bool `yaml:"resourceImpact,omitempty"` + ResourceImpact bool `json:"resourceImpact,omitempty" yaml:"resourceImpact,omitempty"` // UI extension associated with the input variable. // E.g. for rendering a GCE machine type selector: @@ -70,7 +71,7 @@ type DisplayVariable struct { // gceMachineType: // minCpu: 2 // minRamGb: 6 - UIDisplayVariableExtension GooglePropertyExtension `yaml:"x-googleProperty,omitempty"` + UIDisplayVariableExtension GooglePropertyExtension `json:"x-googleProperty,omitempty" yaml:"x-googleProperty,omitempty"` } // A logical group of variables. [Section][]s may also be grouped into @@ -78,50 +79,50 @@ type DisplayVariable struct { type DisplaySection struct { // The name of the section, referenced by DisplayVariable.Section // Section names must be unique. - Name string `yaml:"name"` + Name string `json:"name" yaml:"name"` // Section title. // If not provided, name will be used instead. - Title string `yaml:"title,omitempty"` + Title string `json:"title,omitempty" yaml:"title,omitempty"` // Section tooltip. - Tooltip string `yaml:"tooltip,omitempty"` + Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // Section subtext. - Subtext string `yaml:"subtext,omitempty"` + Subtext string `json:"subtext,omitempty" yaml:"subtext,omitempty"` // The name of the parent section (if parent is not the root section). - Parent string `yaml:"parent,omitempty"` + Parent string `json:"parent,omitempty" yaml:"parent,omitempty"` } type BlueprintUIOutput struct { // Short message to be displayed while the blueprint is deploying. // At most 128 characters. - OutputMessage string `yaml:"outputMessage,omitempty"` + OutputMessage string `json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"` // List of suggested actions to take. - SuggestedActions []UIActionItem `yaml:"suggestedActions,omitempty"` + SuggestedActions []UIActionItem `json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"` } // An item appearing in a list of required or suggested steps. type UIActionItem struct { // Summary heading for the item. // Required. Accepts string expressions. At most 64 characters. - Heading string `yaml:"heading"` + Heading string `json:"heading" yaml:"heading"` // Longer description of the item. // At least one description or snippet is required. // Accepts string expressions. HTML <a href> // tags only. At most 512 characters. - Description string `yaml:"description"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` // Fixed-width formatted code snippet. // At least one description or snippet is required. // Accepts string expressions. UTF-8 text. At most 512 characters. - Snippet string `yaml:"snippet"` + Snippet string `json:"snippet,omitempty" yaml:"snippet,omitempty"` // If present, this expression determines whether the item is shown. // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP // where `externalIP` is the output. - ShowIf string `yaml:"showIf,omitempty"` + ShowIf string `json:"showIf,omitempty" yaml:"showIf,omitempty"` } diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go index 6cb24121481..27fa50b8a72 100644 --- a/cli/bpmetadata/types_ui_ext.go +++ b/cli/bpmetadata/types_ui_ext.go @@ -37,72 +37,72 @@ const ( // extension defines Google-specifc metadata necessary for choosing an // appropriate input widget or adding restrictions to GCP-specific resources. type GooglePropertyExtension struct { - Type ExtensionType `yaml:"type"` + Type ExtensionType `json:"type" yaml:"type" jsonschema:"enum=EMAIL_ADDRESS,enum=MULTI_LINE_STRING,enum=GCE_DISK_IMAGE,enum=GCE_DISK_TYPE,enum=GCE_DISK_SIZE,enum=GCE_MACHINE_TYPE,enum=GCE_NETWORK,enum=GCE_ZONE,enum=GCE_SUBNETWORK,enum=GCE_REGION,enum=GCE_GPU_TYPE,enum=GCE_GPU_COUNT,enum=GCE_EXTERNAL_IP,enum=GCE_IP_FORWARDING,enum=GCE_FIREWALL,enum=GCE_FIREWALL_RANGE,enum=GCE_GENERIC_RESOURCE,enum=GCS_BUCKET,enum=IAM_SERVICE_ACCOUNT"` // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to // determine the set of allowable values. This field references another // property from the schema, which must have type GCE_ZONE. - ZoneProperty string `yaml:"zoneProperty,omitempty"` + ZoneProperty string `json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"` // Property-specific extensions. - GCEMachineType GCEMachineTypeExtension `yaml:"gceMachineType,omitempty"` - GCEDiskSize GCEDiskSizeExtension `yaml:"gceDiskSize,omitempty"` - GCESubnetwork GCESubnetworkExtension `yaml:"gceMachineType,omitempty"` - GCEResource GCEGenericResourceExtension `yaml:"gceSubnetwork,omitempty"` - GCEGPUType GCEGPUTypeExtension `yaml:"gceGpuType,omitempty"` - GCEGPUCount GCEGPUCountExtension `yaml:"gceGpuCount,omitempty"` - GCENetwork GCENetworkExtension `yaml:"gceNetwork,omitempty"` - GCEExternalIP GCEExternalIPExtension `yaml:"gceExternalIp,omitempty"` - GCEIPForwarding GCEIPForwardingExtension `yaml:"gceIpForwarding,omitempty"` - GCEFirewall GCEFirewallExtension `yaml:"gceFirewall,omitempty"` - GCEFirewallRange GCEFirewallRangeExtension `yaml:"gceFirewallRange,omitempty"` - GCEZone GCELocationExtension `yaml:"gceZone,omitempty"` - GCERegion GCELocationExtension `yaml:"gceRegion,omitempty"` - IAMServiceAccount IAMServiceAccountExtension `yaml:"iamServiceAccount,omitempty"` + GCEMachineType GCEMachineTypeExtension `json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty"` + GCEDiskSize GCEDiskSizeExtension `json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty"` + GCESubnetwork GCESubnetworkExtension `json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty"` + GCEResource GCEGenericResourceExtension `json:"gceResource,omitempty" yaml:"gceResource,omitempty"` + GCEGPUType GCEGPUTypeExtension `json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty"` + GCEGPUCount GCEGPUCountExtension `json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty"` + GCENetwork GCENetworkExtension `json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty"` + GCEExternalIP GCEExternalIPExtension `json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty"` + GCEIPForwarding GCEIPForwardingExtension `json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty"` + GCEFirewall GCEFirewallExtension `json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty"` + GCEFirewallRange GCEFirewallRangeExtension `json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty"` + GCEZone GCELocationExtension `json:"gceZone,omitempty" yaml:"gceZone,omitempty"` + GCERegion GCELocationExtension `json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"` + IAMServiceAccount IAMServiceAccountExtension `json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"` } type GCELocationExtension struct { - AllowlistedZones []string `yaml:"allowlistedZones,omitempty"` - AllowlistedRegions []string `yaml:"allowlistedRegions,omitempty"` + AllowlistedZones []string `json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty"` + AllowlistedRegions []string `json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty"` } type GCEMachineTypeExtension struct { // Minimum cpu. Used to filter the list of selectable machine types. - MinCPU int `yaml:"minCpu,omitempty"` + MinCPU int `json:"minCpu,omitempty" yaml:"minCpu,omitempty"` // Minimum ram. Used to filter the list of selectable machine types. - MinRAMGB int `yaml:"minRamGb,omitempty"` + MinRAMGB int `json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"` // If true, custom machine types will not be selectable. // More info: // https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type - DisallowCustomMachineTypes bool `yaml:"disallowCustomMachineTypes,omitempty"` + DisallowCustomMachineTypes bool `json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty"` } type GCEGPUTypeExtension struct { - MachineType string `yaml:"machineType"` - GPUType string `yaml:"gpuType"` + MachineType string `json:"machineType" yaml:"machineType"` + GPUType string `json:"gpuType,omitempty" yaml:"gpuType,omitempty"` } type GCEGPUCountExtension struct { // This field references another variable from the schema, // which must have type GCEMachineType. - MachineTypeVariable string `yaml:"machineTypeVariable"` + MachineTypeVariable string `json:"machineTypeVariable" yaml:"machineTypeVariable"` } type GCEDiskSizeExtension struct { // The allowable range of disk sizes depends on the disk type. This field // references another variable from the schema, which must have type GCEDiskType. - DiskTypeVariable string `yaml:"diskTypeVariable"` + DiskTypeVariable string `json:"diskTypeVariable" yaml:"diskTypeVariable"` } type GCENetworkExtension struct { // AllowSharedVpcs indicates this solution can receive // shared VPC selflinks (fully qualified compute links). - AllowSharedVPCs bool `yaml:"allowSharedVpcs"` + AllowSharedVPCs bool `json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty"` // Used to indicate to which machine type this network interface will be // attached to. - MachineTypeVariable string `yaml:"machineTypeVariable"` + MachineTypeVariable string `json:"machineTypeVariable" yaml:"machineTypeVariable"` } type ExternalIPType string @@ -115,47 +115,47 @@ const ( type GCEExternalIPExtension struct { // NetworkVariable is used to indicate the network variable in the schema // this external IP belongs to. - NetworkVariable string `yaml:"networkVariable"` + NetworkVariable string `json:"networkVariable" yaml:"networkVariable"` // Type specifies if the external IP is ephemeral or static. // Defaults to ephemeral if not specified. - Type ExternalIPType `yaml:"externalIpType,omitempty"` + Type ExternalIPType `json:"externalIpType,omitempty" yaml:"externalIpType,omitempty"` } type GCEIPForwardingExtension struct { // NetworkVariable is used to indicate the network variable in the schema // this external IP belongs to. - NetworkVariable string `yaml:"networkVariable"` - NotConfigurable bool `yaml:"notConfigurable"` + NetworkVariable string `json:"networkVariable" yaml:"networkVariable"` + NotConfigurable bool `json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` } type GCEFirewallExtension struct { // NetworkVariable is used to indicate the network variable in the schema // this external IP belongs to. - NetworkVariable string `yaml:"networkVariable"` + NetworkVariable string `json:"networkVariable" yaml:"networkVariable"` } type GCEFirewallRangeExtension struct { // FirewallVariable is used to indicate the firewall variable with the type // GCEFirewall in the schema to which this firewall range belongs to. - FirewallVariable string `yaml:"firewallVariable"` + FirewallVariable string `json:"firewallVariable" yaml:"firewallVariable"` } type GCESubnetworkExtension struct { // Subnetwork variable requires a network context in order to determine the // set of available subnetworks. This field references another // variable from the schema, which must have type GCENetwork. - NetworkVariable string `yaml:"networkVariable"` + NetworkVariable string `json:"networkVariable" yaml:"networkVariable"` } type GCEGenericResourceExtension struct { // GCE resource type to be fetched. This field references another // property from the schema, which must have type GCEGenericResource. - ResourceVariable string `yaml:"resourceVariable"` + ResourceVariable string `json:"resourceVariable" yaml:"resourceVariable"` } type IAMServiceAccountExtension struct { // List of IAM roles that to grant to a new SA, or the roles to filter // existing SAs with. - Roles []string `yaml:"roles"` + Roles []string `json:"roles" yaml:"roles"` } diff --git a/cli/bpmetadata/validate.go b/cli/bpmetadata/validate.go new file mode 100644 index 00000000000..42a96f73d92 --- /dev/null +++ b/cli/bpmetadata/validate.go @@ -0,0 +1,115 @@ +package bpmetadata + +import ( + _ "embed" + "fmt" + "io/ioutil" + "os" + "path" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" + "github.com/xeipuuv/gojsonschema" + "sigs.k8s.io/yaml" +) + +//go:embed schema/bpmetadataschema.json +var s []byte + +// validateMetadata validates the metadata files for the provided +// blueprint path. This validation occurs for top-level blueprint +// metadata and blueprints in the modules/ folder, if present +func validateMetadata(bpPath, wdPath string) error { + // load schema from the binary + schemaLoader := gojsonschema.NewStringLoader(string(s)) + + // check if the provided output path is relative + if !path.IsAbs(bpPath) { + bpPath = path.Join(wdPath, bpPath) + } + + moduleDirs := []string{bpPath} + modulesPath := path.Join(bpPath, modulesPath) + _, err := os.Stat(modulesPath) + if err == nil { + subModuleDirs, err := util.WalkTerraformDirs(modulesPath) + if err != nil { + Log.Warn("unable to read the submodules i.e. modules/ folder", "err", err) + } + + moduleDirs = append(moduleDirs, subModuleDirs...) + } + + var vErrs []error + for _, d := range moduleDirs { + m := path.Join(d, metadataFileName) + _, err := os.Stat(m) + + // log info msg and continue if the file does not exist + if err != nil { + Log.Info("metadata for module does not exist", "path", d) + continue + } + + err = validateMetadataYaml(m, schemaLoader) + if err != nil { + vErrs = append(vErrs, err) + Log.Error("metadata validation failed", "err", err) + } + } + + if len(vErrs) > 0 { + return fmt.Errorf("metadata validation failed for at least one blueprint") + } + + return nil +} + +// validateMetadata validates an individual yaml file present at path "m" +func validateMetadataYaml(m string, schema gojsonschema.JSONLoader) error { + // prepare metadata for validation by converting it from YAML to JSON + mBytes, err := convertYamlToJson(m) + if err != nil { + return fmt.Errorf("yaml to json conversion failed for metadata at path %s. error: %s", m, err) + } + + // load metadata from the path + yamlLoader := gojsonschema.NewStringLoader(string(mBytes)) + + // validate metadata against the schema + result, err := gojsonschema.Validate(schema, yamlLoader) + if err != nil { + return fmt.Errorf("metadata validation failed for %s. error: %s", m, err) + } + + if !result.Valid() { + for _, e := range result.Errors() { + Log.Error("validation error", "err", e) + } + + return fmt.Errorf("metdata validation failed for: %s", m) + } + + Log.Info("metadata is valid", "path", m) + return nil +} + +// prepares metadata bytes for validation since direct +// validation of YAML is not possible +func convertYamlToJson(m string) ([]byte, error) { + // read metadata for validation + b, err := ioutil.ReadFile(m) + if err != nil { + return nil, fmt.Errorf("unable to read metadata at path %s. error: %s", m, err) + } + + if len(b) == 0 { + return nil, fmt.Errorf("metadata contents can not be empty") + } + + json, err := yaml.YAMLToJSON(b) + if err != nil { + return nil, fmt.Errorf("metadata contents are invalid: %s", err.Error()) + } + + return json, nil +} diff --git a/cli/bpmetadata/validate_test.go b/cli/bpmetadata/validate_test.go new file mode 100644 index 00000000000..53cc22636a8 --- /dev/null +++ b/cli/bpmetadata/validate_test.go @@ -0,0 +1,58 @@ +package bpmetadata + +import ( + "path" + "testing" + + "github.com/xeipuuv/gojsonschema" +) + +const ( + yamlTestDirPath = "../testdata/bpmetadata/schema" +) + +func TestValidateMetadata(t *testing.T) { + tests := []struct { + name string + path string + wantErr bool + }{ + { + name: "empty metadata", + path: "empty-metadata.yaml", + wantErr: true, + }, + { + name: "valid metadata", + path: "valid-metadata.yaml", + wantErr: false, + }, + { + name: "invalid metadata - source missing", + path: "invalid-metadata.yaml", + wantErr: true, + }, + { + name: "valid enums for QuotaType", + path: "valid-metadata-w-enum.yaml", + }, + { + name: "invalid enums for QuotaResourceType", + path: "invalid-metadata-w-enum.yaml", + wantErr: true, + }, + } + + // load schema from the binary + s := gojsonschema.NewReferenceLoader("file://schema/bpmetadataschema.json") + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := validateMetadataYaml(path.Join(yamlTestDirPath, tt.path), s) + if (err != nil) != tt.wantErr { + t.Errorf("validateMetadataYaml() error = %v, wantErr %v", err, tt.wantErr) + return + } + }) + } +} diff --git a/cli/go.mod b/cli/go.mod index ee8db61feb7..b98fa2b3dd4 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -19,18 +19,20 @@ require ( github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f github.com/iancoleman/strcase v0.2.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac + github.com/invopop/jsonschema v0.7.0 github.com/jedib0t/go-pretty v4.3.0+incompatible github.com/jedib0t/go-pretty/v6 v6.2.4 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.12 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e // indirect + github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible // indirect github.com/open-policy-agent/opa v0.34.2 github.com/otiai10/copy v1.6.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.4.0 github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.8.0 + github.com/xeipuuv/gojsonschema v1.2.0 github.com/zclconf/go-cty v1.10.0 // indirect golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 google.golang.org/api v0.58.0 @@ -40,3 +42,5 @@ require ( sigs.k8s.io/kustomize/kyaml v0.13.9 sigs.k8s.io/yaml v1.2.0 ) + +replace github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible => github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e diff --git a/cli/go.sum b/cli/go.sum index 9b48a02f4af..436fa2ef776 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -756,6 +756,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -773,6 +775,8 @@ github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac/go.mod h1:cO github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= +github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= @@ -1224,6 +1228,7 @@ github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRci github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/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= @@ -1274,10 +1279,13 @@ github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= diff --git a/cli/testdata/bpmetadata/schema/empty-metadata.yaml b/cli/testdata/bpmetadata/schema/empty-metadata.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/schema/invalid-metadata-w-enum.yaml b/cli/testdata/bpmetadata/schema/invalid-metadata-w-enum.yaml new file mode 100644 index 00000000000..16fa4db3180 --- /dev/null +++ b/cli/testdata/bpmetadata/schema/invalid-metadata-w-enum.yaml @@ -0,0 +1,13 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-module +spec: + title: Terraform Google Module + source: + repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git + sourceType: git + quotaDetails: + - type: BAD_ENUM + quotaType: + MACHINE_TYPE: "n1-standard-8" \ No newline at end of file diff --git a/cli/testdata/bpmetadata/schema/invalid-metadata.yaml b/cli/testdata/bpmetadata/schema/invalid-metadata.yaml new file mode 100644 index 00000000000..7ea69d0c627 --- /dev/null +++ b/cli/testdata/bpmetadata/schema/invalid-metadata.yaml @@ -0,0 +1,7 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-module +spec: + title: Terraform Google Module + diff --git a/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml b/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml new file mode 100644 index 00000000000..85f71016df3 --- /dev/null +++ b/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml @@ -0,0 +1,13 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-module +spec: + title: Terraform Google Module + source: + repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git + sourceType: git + quotaDetails: + - type: GCE_INSTANCE + quotaType: + MACHINE_TYPE: "n1-standard-8" \ No newline at end of file diff --git a/cli/testdata/bpmetadata/schema/valid-metadata.yaml b/cli/testdata/bpmetadata/schema/valid-metadata.yaml new file mode 100644 index 00000000000..ea7d07ac07c --- /dev/null +++ b/cli/testdata/bpmetadata/schema/valid-metadata.yaml @@ -0,0 +1,9 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-module +spec: + title: Terraform Google Module + source: + repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git + sourceType: git From 703ff90c18e82f0ff4ef8b60015800a5d0f4b8e9 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 22 Mar 2023 12:11:46 -0700 Subject: [PATCH 0294/1371] fix: adds an addtional build step for schema validation (#1450) --- cli/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 62f52762f51..d5a32621f3d 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.7.0 +VERSION=v0.7.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin @@ -16,8 +16,8 @@ LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" # need an extra build command to embed an most up to date schema in the binary .PHONY: build build: - go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} + go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} .PHONY: publish publish: From 14486905e29e1d4f574a34686a89e54f442636bc Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 24 Mar 2023 13:51:11 -0700 Subject: [PATCH 0295/1371] fix: removes the replace directive for gatekeeper (#1454) --- cli/go.mod | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index b98fa2b3dd4..826c0b58e3e 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -25,7 +25,7 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.12 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible // indirect + github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e // indirect github.com/open-policy-agent/opa v0.34.2 github.com/otiai10/copy v1.6.0 github.com/pkg/errors v0.9.1 @@ -42,5 +42,3 @@ require ( sigs.k8s.io/kustomize/kyaml v0.13.9 sigs.k8s.io/yaml v1.2.0 ) - -replace github.com/open-policy-agent/gatekeeper v3.0.4-beta.2+incompatible => github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e From 17791d53ccac8e5073ff7e1c2ca8c3e09e42c055 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 27 Mar 2023 10:35:44 -0700 Subject: [PATCH 0296/1371] feat: adds autogen logic for Blueprint Architecture (#1451) --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 6 +++ cli/bpmetadata/markdown.go | 57 ++++++++++++++++++++++ cli/bpmetadata/markdown_test.go | 50 ++++++++++++++++++- cli/bpmetadata/types.go | 4 +- cli/testdata/bpmetadata/md/list-content.md | 11 +++++ 6 files changed, 126 insertions(+), 4 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index d5a32621f3d..8158de140cf 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.7.1 +VERSION=v0.8.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 066417c62f4..ec0f64ec995 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -294,6 +294,12 @@ func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent c.Documentation = docListToSet } + // create architecture + a, err := getArchitctureInfo(readmeContent, "Architecture") + if err == nil { + c.Architecture = *a + } + // create sub-blueprints modPath := path.Join(bpPath, modulesPath) modContent, err := getModules(modPath) diff --git a/cli/bpmetadata/markdown.go b/cli/bpmetadata/markdown.go index 576968cf6d2..2ff2be81d56 100644 --- a/cli/bpmetadata/markdown.go +++ b/cli/bpmetadata/markdown.go @@ -2,6 +2,7 @@ package bpmetadata import ( "fmt" + "strings" "github.com/gomarkdown/markdown" "github.com/gomarkdown/markdown/ast" @@ -96,3 +97,59 @@ func getMdContent(content []byte, headLevel int, headOrder int, headTitle string return nil, fmt.Errorf("unable to find md content") } + +// getArchitctureInfo parses and builds Architecture details from README.md +func getArchitctureInfo(content []byte, headTitle string) (*BlueprintArchitecture, error) { + mdDocument := markdown.Parse(content, nil) + if mdDocument == nil { + return nil, fmt.Errorf("unable to parse md content") + } + + children := mdDocument.GetChildren() + for _, node := range children { + h, isHeading := node.(*ast.Heading) + if !isHeading { + continue + } + + // check if this is the architecture heading + hLiteral := string(ast.GetFirstChild(h).AsLeaf().Literal) + if hLiteral != headTitle { + continue + } + + //get architecture details + infoNode := ast.GetNextNode(h) + paraNode, isPara := infoNode.(*ast.Paragraph) + if !isPara { + continue + } + + t := ast.GetLastChild(paraNode) + _, isText := t.(*ast.Text) + if !isText { + continue + } + + d := strings.TrimLeft(string(t.AsLeaf().Literal), "\n") + dList := strings.Split(d, "\n") + i := ast.GetPrevNode(t) + iNode, isImage := i.(*ast.Image) + if isImage { + return &BlueprintArchitecture{ + Description: dList, + DiagramURL: string(iNode.Destination), + }, nil + } + + lNode, isLink := i.(*ast.Link) + if isLink { + return &BlueprintArchitecture{ + Description: dList, + DiagramURL: string(lNode.Destination), + }, nil + } + } + + return nil, fmt.Errorf("unable to find architecture content") +} diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go index 3d765afa9de..da90861d4fa 100644 --- a/cli/bpmetadata/markdown_test.go +++ b/cli/bpmetadata/markdown_test.go @@ -92,7 +92,7 @@ func TestProcessMarkdownContent(t *testing.T) { want: nil, }, { - name: "Architecture description exists", + name: "Architecture description exists as diagram content", fileName: "list-content.md", level: -1, order: -1, @@ -174,3 +174,51 @@ func TestProcessMarkdownContent(t *testing.T) { }) } } + +func TestProcessArchitectureContent(t *testing.T) { + tests := []struct { + name string + fileName string + title string + want *BlueprintArchitecture + wantErr bool + }{ + { + name: "Architecture details exists as BlueprintArchitecture", + fileName: "list-content.md", + title: "Architecture", + want: &BlueprintArchitecture{ + Description: []string{ + `1. Step 1`, + `2. Step 2`, + `3. Step 3`, + }, + DiagramURL: "https://i.redd.it/w3kr4m2fi3111.png", + }, + }, + { + name: "Architecture details don't exist as BlueprintArchitecture", + fileName: "list-content.md", + title: "ArchitectureNotValid", + wantErr: true, + }, + { + name: "md content file path for BlueprintArchitecture is invalid", + fileName: "list-content-bad-file-name.md", + title: "Architecture", + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + content, err := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) + got, err := getArchitctureInfo(content, tt.title) + if (err != nil) != tt.wantErr { + t.Errorf("getArchitctureInfo() error = %v, wantErr %v", err, tt.wantErr) + return + } + assert.Equal(t, tt.want, got) + }) + } +} diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index efbcb5c6f35..16dbe94d184 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -283,8 +283,8 @@ type BlueprintMiscContent struct { } type BlueprintArchitecture struct { - DiagramURL string `json:"diagram" yaml:"diagram"` - Description string `json:"description" yaml:"description"` + DiagramURL string `json:"diagram" yaml:"diagram"` + Description []string `json:"description" yaml:"description"` } // BlueprintDiagram is manually entered. diff --git a/cli/testdata/bpmetadata/md/list-content.md b/cli/testdata/bpmetadata/md/list-content.md index b214bf29836..ab365389499 100644 --- a/cli/testdata/bpmetadata/md/list-content.md +++ b/cli/testdata/bpmetadata/md/list-content.md @@ -33,3 +33,14 @@ To deploy this blueprint you must have an active billing account and billing per ### Architecture 1. User requests are sent to the front end, which is deployed on two Cloud Run services as containers to support high scalability applications. 2. The request then lands on the middle tier, which is the API layer that provides access to the backend. This is also deployed on Cloud Run for scalability and ease of deployment in multiple languages. This middleware is a Golang based API. + +### Architecture +![Test Image](https://i.redd.it/w3kr4m2fi3111.png) +1. Step 1 +2. Step 2 +3. Step 3 + +### ArchitectureNotValid +1. Step 1 +2. Step 2 +3. Step 3 From 09ec25ee99ef9fd0cb06bc66d026a0078f9eac00 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 27 Mar 2023 11:28:12 -0700 Subject: [PATCH 0297/1371] chore: update renovate.json (#1455) --- .github/renovate.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 59232cf091b..d8f651d254d 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -3,8 +3,7 @@ "extends": [ "config:base", ":semanticCommits", - ":preserveSemverRanges", - ":rebaseStalePrs" + ":preserveSemverRanges" ], "stabilityDays":7, "labels": ["dependencies"], @@ -20,7 +19,10 @@ "packageRules": [ { "matchPaths": [".github/**"], - "extends": [":semanticCommitTypeAll(chore)"] + "extends": [ + ":semanticCommitTypeAll(chore)", + ":rebaseStalePrs" + ] }, { "matchDepTypes": ["require"], From 844121c0453a744b4f79effc5fb8e62a5b09c026 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 27 Mar 2023 11:47:28 -0700 Subject: [PATCH 0298/1371] feat: adds autogen for deployment duration (#1452) --- cli/bpmetadata/cmd.go | 10 ++ cli/bpmetadata/markdown.go | 65 +++++++++++++ cli/bpmetadata/markdown_test.go | 96 ++++++++++++++++++++ cli/bpmetadata/schema/bpmetadataschema.json | 5 +- cli/testdata/bpmetadata/md/simple-content.md | 13 +++ 5 files changed, 188 insertions(+), 1 deletion(-) diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index ec0f64ec995..20640ce2a38 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -263,6 +263,16 @@ func (i *BlueprintInfo) create(bpPath string, readmeContent []byte) error { i.Icon = iconFilePath } + d, err := getDeploymentDuration(readmeContent, "Deployment Duration") + if err == nil { + i.DeploymentDuration = *d + } + + c, err := getCostEstimate(readmeContent, "Cost") + if err == nil { + i.CostEstimate = *c + } + return nil } diff --git a/cli/bpmetadata/markdown.go b/cli/bpmetadata/markdown.go index 2ff2be81d56..6aba3d65858 100644 --- a/cli/bpmetadata/markdown.go +++ b/cli/bpmetadata/markdown.go @@ -2,6 +2,8 @@ package bpmetadata import ( "fmt" + "regexp" + "strconv" "strings" "github.com/gomarkdown/markdown" @@ -10,6 +12,7 @@ import ( type mdContent struct { literal string + url string listItems []mdListItem } @@ -18,6 +21,8 @@ type mdListItem struct { url string } +var reTimeEstimate = regexp.MustCompile(`(Configuration|Deployment):\s([0-9]+)\smins`) + // getMdContent accepts 3 types of content requests and return and mdContent object // with the relevant content info. The 3 scenarios are: // 1: get heading literal by (level and/or order) OR by title @@ -39,6 +44,7 @@ func getMdContent(content []byte, headLevel int, headOrder int, headTitle string currLeaf := ast.GetFirstChild(section).AsLeaf() switch sectionType := section.(type) { case *ast.Heading: + foundHead = false if headTitle == string(currLeaf.Literal) { foundHead = true } @@ -55,6 +61,16 @@ func getMdContent(content []byte, headLevel int, headOrder int, headTitle string case *ast.Paragraph: if getContent && (headOrder == orderCtr || foundHead) { + // check if the content is a link + l := ast.GetLastChild(currLeaf.Parent) + lNode, isLink := l.(*ast.Link) + if isLink { + return &mdContent{ + literal: string(ast.GetFirstChild(lNode).AsLeaf().Literal), + url: string(lNode.Destination), + }, nil + } + return &mdContent{ literal: string(currLeaf.Literal), }, nil @@ -98,6 +114,55 @@ func getMdContent(content []byte, headLevel int, headOrder int, headTitle string return nil, fmt.Errorf("unable to find md content") } +// getDeploymentDuration creates the deployment and configuration time +// estimates for the blueprint from README.md +func getDeploymentDuration(content []byte, headTitle string) (*BlueprintTimeEstimate, error) { + durationDetails, err := getMdContent(content, -1, -1, headTitle, true) + if err != nil { + return nil, err + } + + matches := reTimeEstimate.FindAllStringSubmatch(durationDetails.literal, -1) + if len(matches) == 0 { + return nil, fmt.Errorf("unable to find deployment duration") + } + + var timeEstimate BlueprintTimeEstimate + for _, m := range matches { + // each m[2] will have the time in mins + i, err := strconv.Atoi(m[2]) + if err != nil { + continue + } + + if m[1] == "Configuration" { + timeEstimate.ConfigurationSecs = i * 60 + continue + } + + if m[1] == "Deployment" { + timeEstimate.DeploymentSecs = i * 60 + continue + } + } + + return &timeEstimate, nil +} + +// getCostEstimate creates the cost estimates from the cost calculator +// links provided in README.md +func getCostEstimate(content []byte, headTitle string) (*BlueprintCostEstimate, error) { + costDetails, err := getMdContent(content, -1, -1, headTitle, true) + if err != nil { + return nil, err + } + + return &BlueprintCostEstimate{ + Description: costDetails.literal, + URL: costDetails.url, + }, nil +} + // getArchitctureInfo parses and builds Architecture details from README.md func getArchitctureInfo(content []byte, headTitle string) (*BlueprintArchitecture, error) { mdDocument := markdown.Parse(content, nil) diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go index da90861d4fa..0197f0cc351 100644 --- a/cli/bpmetadata/markdown_test.go +++ b/cli/bpmetadata/markdown_test.go @@ -222,3 +222,99 @@ func TestProcessArchitectureContent(t *testing.T) { }) } } + +func TestProcessDeploymentDurationContent(t *testing.T) { + tests := []struct { + name string + fileName string + title string + want *BlueprintTimeEstimate + wantErr bool + }{ + { + name: "Deployment duration details exists as BlueprintTimeEstimate", + fileName: "simple-content.md", + title: "Deployment Duration", + want: &BlueprintTimeEstimate{ + ConfigurationSecs: 120, + DeploymentSecs: 600, + }, + }, + { + name: "Deployment duration details don't exist as BlueprintTimeEstimate", + fileName: "simple-content.md", + title: "Deployment Duration Invalid", + wantErr: true, + }, + { + name: "Deployment duration exists but only for configuration", + fileName: "simple-content.md", + title: "Deployment Duration Only Config", + want: &BlueprintTimeEstimate{ + ConfigurationSecs: 120, + }, + }, + { + name: "md content file path for BlueprintTimeEstimate is invalid", + fileName: "simple-content-bad-file-name.md", + title: "Does not matter", + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + content, err := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) + got, err := getDeploymentDuration(content, tt.title) + if (err != nil) != tt.wantErr { + t.Errorf("getDeploymentDuration() error = %v, wantErr %v", err, tt.wantErr) + return + } + assert.Equal(t, tt.want, got) + }) + } +} + +func TestProcessCostEstimateContent(t *testing.T) { + tests := []struct { + name string + fileName string + title string + want *BlueprintCostEstimate + wantErr bool + }{ + { + name: "Cost estimate details exists as BlueprintCostEstimate", + fileName: "simple-content.md", + title: "Cost", + want: &BlueprintCostEstimate{ + Description: "Solution cost details", + URL: "https://cloud.google.com/products/calculator?id=02fb0c45-cc29-4567-8cc6-f72ac9024add", + }, + }, + { + name: "Cost estimate details don't exist as BlueprintCostEstimate", + fileName: "simple-content.md", + title: "Cost Invalid", + wantErr: true, + }, + { + name: "md content file path for BlueprintCostEstimate is invalid", + fileName: "simple-content-bad-file-name.md", + title: "Does not matter", + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + content, err := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) + got, err := getCostEstimate(content, tt.title) + if (err != nil) != tt.wantErr { + t.Errorf("getCostEstimate() error = %v, wantErr %v", err, tt.wantErr) + return + } + assert.Equal(t, tt.want, got) + }) + } +} diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index e41b932ab19..3b524abc49f 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -21,7 +21,10 @@ "type": "string" }, "description": { - "type": "string" + "items": { + "type": "string" + }, + "type": "array" } }, "additionalProperties": false, diff --git a/cli/testdata/bpmetadata/md/simple-content.md b/cli/testdata/bpmetadata/md/simple-content.md index 28e5bb2db83..afd91de989c 100644 --- a/cli/testdata/bpmetadata/md/simple-content.md +++ b/cli/testdata/bpmetadata/md/simple-content.md @@ -14,3 +14,16 @@ some content sub heading for h3 some more content sub heading for h3 ## Horizontal Rules + +### Deployment Duration +Configuration: 2 mins +Deployment: 10 mins + +### Deployment Duration Only Config +Configuration: 2 mins + +### Deployment Duration Invalid +Configuration or deployment info does not exist as defined + +### Cost +[Solution cost details](https://cloud.google.com/products/calculator?id=02fb0c45-cc29-4567-8cc6-f72ac9024add) From 87ab07a545947e7bc031e0ad2954d1e7e133dd19 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 27 Mar 2023 21:50:40 +0100 Subject: [PATCH 0299/1371] chore(deps): update actions/stale action to v8 (#1458) --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index e46cd34fc1f..271c5ab2475 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -21,7 +21,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v7 + - uses: actions/stale@v8 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' From bf6e1fa47834f014acf71f4a76deb65a2bcac083 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 27 Mar 2023 22:04:42 +0100 Subject: [PATCH 0300/1371] chore(deps): update actions/setup-go action to v4 (#1457) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/test-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 52a67c9ecbb..ffaf3d5d6ca 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v4 with: go-version: '~1.16' diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 41223176272..cc70808baef 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@v3 - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v4 with: go-version: '~1.16' - run: |- From c6dbe2b08cfd82767b6bd82ebc93e0c3fe29d24c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 27 Mar 2023 22:21:25 +0100 Subject: [PATCH 0301/1371] chore(deps): update peter-evans/create-pull-request digest to 495ffbb (#1456) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 84ddf594cbf..659ab1ae84e 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@24b0f8edad74dd5b08956ea2655c6818355ef8a6 + uses: peter-evans/create-pull-request@495ffbb489edc95cad062fefe82c9e05ff9bd91d with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 9cb3b342179555fa90b4f3dc98bec6c3b3749437 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 28 Mar 2023 13:32:03 -0700 Subject: [PATCH 0302/1371] fix: update fbf to GO 1.18 and modules (#1460) --- infra/utils/fbf/go.mod | 38 ++- infra/utils/fbf/go.sum | 597 +++++------------------------------------ 2 files changed, 96 insertions(+), 539 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 7219daee56f..a971ceb5c8d 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -1,10 +1,38 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/utils/fbf -go 1.16 +go 1.18 require ( - github.com/briandowns/spinner v1.18.1 // indirect - github.com/jedib0t/go-pretty/v6 v6.3.1 // indirect - github.com/stretchr/testify v1.7.1 // indirect - google.golang.org/api v0.75.0 + github.com/briandowns/spinner v1.23.0 + github.com/jedib0t/go-pretty/v6 v6.4.6 + github.com/stretchr/testify v1.8.1 + google.golang.org/api v0.114.0 +) + +require ( + cloud.google.com/go/compute v1.19.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.8.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rivo/uniseg v0.4.4 // indirect + go.opencensus.io v0.24.0 // indirect + golang.org/x/net v0.8.0 // indirect + golang.org/x/oauth2 v0.6.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/term v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5 // indirect + google.golang.org/grpc v1.54.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 4162bac593b..4570186f76b 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,604 +1,145 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0 h1:XdQIN5mdPTSBVwSIVDuY5e8ZzVAccsHvD3qTEz4zIps= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= +cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= 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= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/briandowns/spinner v1.18.1 h1:yhQmQtM1zsqFsouh09Bk/jCjd50pC3EOGsh28gLVvwY= -github.com/briandowns/spinner v1.18.1/go.mod h1:mQak9GHqbspjC/5iUx3qMlIho8xBS/ppAL/hX5SmPJU= +github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= +github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -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/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= 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/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -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/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/uuid v1.1.2/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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0 h1:nRJtk3y8Fm770D42QV6T90ZnvFZyk7agSo3Q+Z9p3WI= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -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/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/jedib0t/go-pretty/v6 v6.3.1 h1:aOXiD9oqiuLH8btPQW6SfgtQN5zwhyfzZls8a6sPJ/I= -github.com/jedib0t/go-pretty/v6 v6.3.1/go.mod h1:FMkOpgGD3EZ91cW8g/96RfxoV7bdeJyzXPYgz1L1ln0= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= +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/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= +github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -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/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -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 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -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= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= 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= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= 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= -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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/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/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -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= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -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= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0 h1:0AYh/ae6l9TDUvIQrDw5QRpM100P6oHgD+o3dYHMzJg= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.114.0 h1:1xQPji6cO2E2vLiI+C/XiFAnsn1WV3mjaEwGLhi3grE= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= 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/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= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4 h1:myaecH64R0bIEDjNORIel4iXubqzaHU1K2z8ajBwWcM= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5 h1:Kd6tRRHXw8z4TlPlWi+NaK10gsePL6GdZBQChptOLGA= +google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= 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= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= 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= @@ -607,27 +148,15 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +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= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/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= -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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -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= From ca57f9007a4a480c57c2b90ca376317ab8c13482 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 28 Mar 2023 15:54:40 -0700 Subject: [PATCH 0303/1371] fix: update module-swapper GO 1.18 and modules (#1459) --- .../build/scripts/module-swapper/go.mod | 27 ++- .../build/scripts/module-swapper/go.sum | 167 ++++++++++++------ 2 files changed, 142 insertions(+), 52 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/module-swapper/go.mod b/infra/build/developer-tools/build/scripts/module-swapper/go.mod index b371babc482..18d453c12af 100644 --- a/infra/build/developer-tools/build/scripts/module-swapper/go.mod +++ b/infra/build/developer-tools/build/scripts/module-swapper/go.mod @@ -1,8 +1,31 @@ module github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper -go 1.14 +go 1.18 require ( - github.com/go-git/go-git/v5 v5.3.0 + github.com/go-git/go-git/v5 v5.6.1 github.com/pmezard/go-difflib v1.0.0 ) + +require ( + github.com/Microsoft/go-winio v0.6.0 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310 // indirect + github.com/acomagu/bufpipe v1.0.4 // indirect + github.com/cloudflare/circl v1.3.2 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + github.com/go-git/gcfg v1.5.0 // indirect + github.com/go-git/go-billy/v5 v5.4.1 // indirect + github.com/imdario/mergo v0.3.15 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/sergi/go-diff v1.3.1 // indirect + github.com/skeema/knownhosts v1.1.0 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect + golang.org/x/crypto v0.7.0 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/net v0.8.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/tools v0.7.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect +) diff --git a/infra/build/developer-tools/build/scripts/module-swapper/go.sum b/infra/build/developer-tools/build/scripts/module-swapper/go.sum index 11431b97da2..f2e4f89b6f4 100644 --- a/infra/build/developer-tools/build/scripts/module-swapper/go.sum +++ b/infra/build/developer-tools/build/scripts/module-swapper/go.sum @@ -1,41 +1,46 @@ -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= +github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310 h1:dGAdTcqheKrQ/TW76sAcmO2IorwXplUw2inPkOzykbw= +github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= +github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= +github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= +github.com/cloudflare/circl v1.3.2 h1:VWp8dY3yH69fdM7lM6A1+NhhVoDu9vqK0jOgmkQHFWk= +github.com/cloudflare/circl v1.3.2/go.mod h1:+CauBF6R70Jqcyl8N2hC8pAXYbWkGIezuSbuGLtRhnw= 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/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= -github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.1.0 h1:4pl5BV4o7ZG/lterP4S6WzJ6xr49Ba5ET9ygheTYahk= -github.com/go-git/go-billy/v5 v5.1.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-git-fixtures/v4 v4.0.2-0.20200613231340-f56387b50c12 h1:PbKy9zOy4aAKrJ5pibIRpVO2BXnK1Tlcg+caKI7Ox5M= -github.com/go-git/go-git-fixtures/v4 v4.0.2-0.20200613231340-f56387b50c12/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= -github.com/go-git/go-git/v5 v5.3.0 h1:8WKMtJR2j8RntEXR/uvTKagfEt4GYlwQ7mntE4+0GWc= -github.com/go-git/go-git/v5 v5.3.0/go.mod h1:xdX4bWJ48aOrdhnl2XqHYstHbbp6+LFS4r4X+lNVprw= -github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= +github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= +github.com/go-git/go-git-fixtures/v4 v4.3.1 h1:y5z6dd3qi8Hl+stezc8p3JxDkoTRqMAlKnXHuzrfjTQ= +github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= +github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk= +github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -43,43 +48,101 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= +github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= +github.com/mmcloughlin/avo v0.5.0/go.mod h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= 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/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= +github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= -github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +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/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210326060303-6b1517762897 h1:KrsHThm5nFk34YtATK1LsThyGhGbGe1olrte/HInHvs= -golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/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-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492 h1:Paq34FxTluEPvVyayQqMPgHm+vTOrIifmcYxFBx9TLg= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/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-20220715151400-c0bba94af5f8/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -89,5 +152,9 @@ gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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/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= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= From da9a107b6f2370c3656e61c4d9de2dabdeb5edf5 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 29 Mar 2023 15:36:46 -0700 Subject: [PATCH 0304/1371] chore: update actions/stale@v8 (#1463) --- infra/terraform/test-org/github/resources/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/github/resources/stale.yml b/infra/terraform/test-org/github/resources/stale.yml index c26bb1d3afc..f28f5b6ab4d 100644 --- a/infra/terraform/test-org/github/resources/stale.yml +++ b/infra/terraform/test-org/github/resources/stale.yml @@ -21,7 +21,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v7 + - uses: actions/stale@v8 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' From bba577dbe508f876d9c66846ec02b04a6a39e5e2 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Thu, 30 Mar 2023 15:07:26 -0700 Subject: [PATCH 0305/1371] feat: adds display metadata generation to the cli (#1464) --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 88 ++++++++++++++++++++++------ cli/bpmetadata/display.go | 18 ++++++ cli/bpmetadata/display_test.go | 103 +++++++++++++++++++++++++++++++++ cli/bpmetadata/types_ui.go | 2 +- cli/bpmetadata/validate.go | 27 +++++++-- 6 files changed, 215 insertions(+), 25 deletions(-) create mode 100644 cli/bpmetadata/display.go create mode 100644 cli/bpmetadata/display_test.go diff --git a/cli/Makefile b/cli/Makefile index 8158de140cf..2f43148139a 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.8.0 +VERSION=v0.9.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 20640ce2a38..52f94bdcb76 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -22,16 +22,17 @@ var mdFlags struct { } const ( - readmeFileName = "README.md" - tfVersionsFileName = "versions.tf" - tfRolesFileName = "test/setup/iam.tf" - tfServicesFileName = "test/setup/main.tf" - iconFilePath = "assets/icon.png" - modulesPath = "modules" - examplesPath = "examples" - metadataFileName = "metadata.yaml" - metadataApiVersion = "blueprints.cloud.google.com/v1alpha1" - metadataKind = "BlueprintMetadata" + readmeFileName = "README.md" + tfVersionsFileName = "versions.tf" + tfRolesFileName = "test/setup/iam.tf" + tfServicesFileName = "test/setup/main.tf" + iconFilePath = "assets/icon.png" + modulesPath = "modules" + examplesPath = "examples" + metadataFileName = "metadata.yaml" + metadataDisplayFileName = "metadata.display.yaml" + metadataApiVersion = "blueprints.cloud.google.com/v1alpha1" + metadataKind = "BlueprintMetadata" ) func init() { @@ -126,23 +127,46 @@ func generate(cmd *cobra.Command, args []string) error { func generateMetadataForBpPath(bpPath string) error { //try to read existing metadata.yaml - bpObj, err := UnmarshalMetadata(bpPath) + bpObj, err := UnmarshalMetadata(bpPath, metadataFileName) if err != nil && !mdFlags.force { return err } - // create metadata details + // create core metadata bpMetaObj, err := CreateBlueprintMetadata(bpPath, bpObj) if err != nil { return fmt.Errorf("error creating metadata for blueprint at path: %s. Details: %w", bpPath, err) } - // write metadata to disk - err = WriteMetadata(bpMetaObj, bpPath) + // write core metadata to disk + err = WriteMetadata(bpMetaObj, bpPath, metadataFileName) if err != nil { return fmt.Errorf("error writing metadata to disk for blueprint at path: %s. Details: %w", bpPath, err) } + // continue with creating display metadata if the flag is set, + // else let the command exit + if !mdFlags.display { + return nil + } + + bpDpObj, err := UnmarshalMetadata(bpPath, metadataDisplayFileName) + if err != nil && !mdFlags.force { + return err + } + + // create display metadata + bpMetaDpObj, err := CreateBlueprintDisplayMetadata(bpPath, bpDpObj, bpMetaObj) + if err != nil { + return fmt.Errorf("error creating display metadata for blueprint at path: %s. Details: %w", bpPath, err) + } + + // write display metadata to disk + err = WriteMetadata(bpMetaDpObj, bpPath, metadataDisplayFileName) + if err != nil { + return fmt.Errorf("error writing display metadata to disk for blueprint at path: %s. Details: %w", bpPath, err) + } + return nil } @@ -203,6 +227,34 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return bpMetadataObj, nil } +func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMetadata) (*BlueprintMetadata, error) { + // start creating blueprint metadata + bpDisp.ResourceMeta = yaml.ResourceMeta{ + TypeMeta: yaml.TypeMeta{ + APIVersion: bpCore.ResourceMeta.APIVersion, + Kind: bpCore.ResourceMeta.Kind, + }, + ObjectMeta: yaml.ObjectMeta{ + NameMeta: yaml.NameMeta{ + Name: bpCore.ResourceMeta.ObjectMeta.Name + "-display", + }, + Labels: bpDisp.ResourceMeta.ObjectMeta.Labels, + }, + } + + if bpDisp.Spec.BlueprintInfo.Title == "" { + bpDisp.Spec.BlueprintInfo.Title = bpCore.Spec.BlueprintInfo.Title + } + + if bpDisp.Spec.BlueprintInfo.Source == nil { + bpDisp.Spec.BlueprintInfo.Source = bpCore.Spec.BlueprintInfo.Source + } + + buildUIInputFromVariables(bpCore.Spec.BlueprintInterface.Variables, &bpDisp.Spec.BlueprintUI.Input) + + return bpDisp, nil +} + func (i *BlueprintInfo) create(bpPath string, readmeContent []byte) error { title, err := getMdContent(readmeContent, 1, 1, "", false) if err != nil { @@ -325,19 +377,19 @@ func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent } } -func WriteMetadata(obj *BlueprintMetadata, bpPath string) error { +func WriteMetadata(obj *BlueprintMetadata, bpPath, fileName string) error { // marshal and write the file yFile, err := yaml.Marshal(obj) if err != nil { return err } - return os.WriteFile(path.Join(bpPath, metadataFileName), yFile, 0644) + return os.WriteFile(path.Join(bpPath, fileName), yFile, 0644) } -func UnmarshalMetadata(bpPath string) (*BlueprintMetadata, error) { +func UnmarshalMetadata(bpPath, fileName string) (*BlueprintMetadata, error) { bpObj := BlueprintMetadata{} - metaFilePath := path.Join(bpPath, metadataFileName) + metaFilePath := path.Join(bpPath, fileName) // return empty metadata if file does not exist or if the file is not read if _, err := os.Stat(metaFilePath); errors.Is(err, os.ErrNotExist) { diff --git a/cli/bpmetadata/display.go b/cli/bpmetadata/display.go new file mode 100644 index 00000000000..639d95440bf --- /dev/null +++ b/cli/bpmetadata/display.go @@ -0,0 +1,18 @@ +package bpmetadata + +func buildUIInputFromVariables(vars []BlueprintVariable, input *BlueprintUIInput) { + if input.DisplayVariables == nil { + input.DisplayVariables = make(map[string]*DisplayVariable) + } + + for _, v := range vars { + _, hasDisplayVar := input.DisplayVariables[v.Name] + if hasDisplayVar { + continue + } + + input.DisplayVariables[v.Name] = &DisplayVariable{ + Name: v.Name, + } + } +} diff --git a/cli/bpmetadata/display_test.go b/cli/bpmetadata/display_test.go new file mode 100644 index 00000000000..5b0c23730d3 --- /dev/null +++ b/cli/bpmetadata/display_test.go @@ -0,0 +1,103 @@ +package bpmetadata + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestUIInputFromVariables(t *testing.T) { + tests := []struct { + name string + coreVars []BlueprintVariable + UIinput *BlueprintUIInput + }{ + { + name: "display metadata does not exist", + coreVars: []BlueprintVariable{ + { + Name: "test_var_1", + }, + { + Name: "test_var_2", + }, + { + Name: "test_var_3", + }, + }, + UIinput: &BlueprintUIInput{}, + }, + { + name: "display metadata exists and is in line with core metadata", + coreVars: []BlueprintVariable{ + { + Name: "test_var_1", + }, + { + Name: "test_var_2", + }, + { + Name: "test_var_3", + }, + }, + UIinput: &BlueprintUIInput{ + DisplayVariables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test_var_1", + Visible: true, + }, + "test_var_2": { + Name: "test_var_2", + Visible: true, + }, + "test_var_3": { + Name: "test_var_3", + Visible: true, + }, + }, + }, + }, + { + name: "display metadata exists and is not in line with core metadata", + coreVars: []BlueprintVariable{ + { + Name: "test_var_1", + }, + { + Name: "test_var_2", + }, + { + Name: "test_var_4", + }, + }, + UIinput: &BlueprintUIInput{ + DisplayVariables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test_var_1", + Visible: true, + }, + "test_var_2": { + Name: "test_var_2", + Visible: true, + }, + "test_var_3": { + Name: "test_var_3", + Visible: true, + }, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + buildUIInputFromVariables(tt.coreVars, tt.UIinput) + for _, v := range tt.coreVars { + dispVar := tt.UIinput.DisplayVariables[v.Name] + assert.NotNil(t, dispVar) + assert.Equal(t, v.Name, dispVar.Name) + } + + assert.GreaterOrEqual(t, len(tt.UIinput.DisplayVariables), len(tt.coreVars)) + }) + } +} diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index 81cef247985..4a9edf4a4fa 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -15,7 +15,7 @@ type BlueprintUI struct { type BlueprintUIInput struct { // variables is a map defining all inputs on the UI. - DisplayVariables map[string]DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"` + DisplayVariables map[string]*DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"` // Sections is a generic structure for grouping inputs together. DisplaySections []DisplaySection `json:"sections,omitempty" yaml:"sections,omitempty"` diff --git a/cli/bpmetadata/validate.go b/cli/bpmetadata/validate.go index 42a96f73d92..7e5bba5e361 100644 --- a/cli/bpmetadata/validate.go +++ b/cli/bpmetadata/validate.go @@ -41,19 +41,36 @@ func validateMetadata(bpPath, wdPath string) error { var vErrs []error for _, d := range moduleDirs { - m := path.Join(d, metadataFileName) - _, err := os.Stat(m) + // validate core metadata + core := path.Join(d, metadataFileName) + _, err := os.Stat(core) // log info msg and continue if the file does not exist if err != nil { - Log.Info("metadata for module does not exist", "path", d) + Log.Info("core metadata for module does not exist", "path", core) continue } - err = validateMetadataYaml(m, schemaLoader) + err = validateMetadataYaml(core, schemaLoader) if err != nil { vErrs = append(vErrs, err) - Log.Error("metadata validation failed", "err", err) + Log.Error("core metadata validation failed", "err", err) + } + + // validate display metadata + disp := path.Join(d, metadataDisplayFileName) + _, err = os.Stat(disp) + + // log info msg and continue if the file does not exist + if err != nil { + Log.Info("display metadata for module does not exist", "path", disp) + continue + } + + err = validateMetadataYaml(disp, schemaLoader) + if err != nil { + vErrs = append(vErrs, err) + Log.Error("display metadata validation failed", "err", err) } } From 4b47ba9dacb67e1d03f7ef6a9185c019571cd428 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Fri, 31 Mar 2023 02:01:57 -0400 Subject: [PATCH 0306/1371] chore: onboard ecommerce microservices app repo (#1462) --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index f3e64b303e5..1b9583598d3 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -33,6 +33,7 @@ locals { "docs-samples" = "terraform-docs-samples" "dynamic-python-webapp" = "terraform-dynamic-python-webapp" "deploy-java-multizone" = "terraform-example-deploy-java-multizone" + "ecommerce-microservices" = "terraform-ecommerce-microservices-on-gke" "Migrate-Legacy-Java-App-GKE" = "Migrate-Legacy-Java-App-GKE" } # example foundation has custom test modes diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 50cbff2ecd9..f8b103331fd 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -107,6 +107,13 @@ locals { owners = "@Jberlinsky @ericyz" topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, + { + name = "terraform-ecommerce-microservices-on-gke" + short_name = "ecommerce-microservices" + org = "GoogleCloudPlatform" + description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." + owners = "@NimJay" + }, { name = "terraform-example-foundation" short_name = "example-foundation" From e9291a27bb2839831047bf3698155ae9700adaab Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 31 Mar 2023 10:14:48 -0500 Subject: [PATCH 0307/1371] chore: add alloy db, update maintainers and fmt (#1466) --- infra/terraform/test-org/org/locals.tf | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index f8b103331fd..e1b854960eb 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -108,11 +108,11 @@ locals { topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { - name = "terraform-ecommerce-microservices-on-gke" - short_name = "ecommerce-microservices" - org = "GoogleCloudPlatform" - description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." - owners = "@NimJay" + name = "terraform-ecommerce-microservices-on-gke" + short_name = "ecommerce-microservices" + org = "GoogleCloudPlatform" + description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." + owners = "@NimJay" }, { name = "terraform-example-foundation" @@ -194,6 +194,7 @@ locals { org = "terraform-google-modules" description = "Creates opinionated BigQuery datasets and tables" topics = local.common_topics.da + owners = "@davenportjw" }, { name = "terraform-google-bootstrap" @@ -332,18 +333,21 @@ locals { org = "terraform-google-modules" description = "Creates a regional TCP proxy load balancer for Compute Engine by using target pools and forwarding rules" topics = local.common_topics.net + owners = "@imrannayer" }, { name = "terraform-google-lb-http" org = "terraform-google-modules" description = "Creates a global HTTP load balancer for Compute Engine by using forwarding rules" topics = local.common_topics.net + owners = "@imrannayer" }, { name = "terraform-google-lb-internal" org = "terraform-google-modules" description = "Creates an internal load balancer for Compute Engine by using forwarding rules" topics = local.common_topics.net + owners = "@imrannayer" }, { name = "terraform-google-log-export" @@ -557,5 +561,12 @@ locals { owners = "@stevewalker-de" topics = local.common_topics.da }, + { + name = "terraform-google-alloy-db" + org = "GoogleCloudPlatform" + description = "Creates an Alloy DB instance" + owners = "@anaik91" + topics = local.common_topics.db + }, ] } From 366ae4ad66fe2cdcf5eb9add24d777a3358195c0 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 3 Apr 2023 16:35:13 -0700 Subject: [PATCH 0308/1371] fix: updates the update-tooling-workflow for cft and k8s (#1471) --- .github/workflows/update-tooling.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 659ab1ae84e..28d1d36f709 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -40,10 +40,10 @@ jobs: LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .tag_name | contains("porch/") | not )][0].tag_name' | tr -d "v") elif [ "$tool" == "CFT_CLI" ]; then # get latest CFT_CLI release - LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("CLI Release"))][0].tag_name' | tr -d "v") + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("CLI Release"))][0].tag_name' | tr -d "cli/v") elif [ "$tool" == "KUBECTL" ]; then # get latest KUBECTL_MINOR release - LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name | sub(".*v(?[0-9]\\.[0-9]\\.[0-9])"; .semver)') + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") elif [ "$tool" == "GATOR" ]; then # get latest GATOR_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${GATOR_MINOR}'"))][0].tag_name' | tr -d "v") From 993319ac27b3c30deec56b0140b8d93e21b136fa Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 4 Apr 2023 14:02:51 -0700 Subject: [PATCH 0309/1371] fix: removes repo name validation (#1469) --- cli/Makefile | 2 +- cli/util/git.go | 8 ++------ cli/util/git_test.go | 6 +++--- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 2f43148139a..e490d9b5cc1 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.9.0 +VERSION=v0.9.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/util/git.go b/cli/util/git.go index 8b361b3b07d..e8b72478e08 100644 --- a/cli/util/git.go +++ b/cli/util/git.go @@ -18,13 +18,9 @@ func GetRepoName(repoUrl string) (string, error) { } trimmedRemotePath := strings.TrimSuffix(u.Path, "/") - splitRemotePath := strings.Split(trimmedRemotePath, "/") - // expect path to be /owner/repo - if len(splitRemotePath) != 3 { - return "", fmt.Errorf("expected owner/repo, got %s", trimmedRemotePath) - } + i := strings.LastIndex(trimmedRemotePath, "/") + repoName := strings.TrimSuffix(trimmedRemotePath[i+1:], ".git") - repoName := strings.TrimSuffix(splitRemotePath[len(splitRemotePath)-1], ".git") return repoName, nil } diff --git a/cli/util/git_test.go b/cli/util/git_test.go index 732234d71b1..00ba4b71cdd 100644 --- a/cli/util/git_test.go +++ b/cli/util/git_test.go @@ -84,9 +84,9 @@ func TestGetRepoNameFromUrl(t *testing.T) { want: "bar", }, { - name: "invalid path", - repoUrl: "github.com/foo/bar/baz", - wantErr: true, + name: "gerrit repo", + repoUrl: "sso://team/foo/bar", + want: "bar", }, } for _, tt := range tests { From 03bab589b747f028c5abf0a5e66213fec2b48234 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 4 Apr 2023 14:28:01 -0700 Subject: [PATCH 0310/1371] chore: update install_cft_cli.sh for cli (#1474) Co-authored-by: Awais Malik --- infra/build/developer-tools/build/install_cft_cli.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/install_cft_cli.sh b/infra/build/developer-tools/build/install_cft_cli.sh index 4f0e605652e..ec23fbf45fe 100755 --- a/infra/build/developer-tools/build/install_cft_cli.sh +++ b/infra/build/developer-tools/build/install_cft_cli.sh @@ -1,5 +1,5 @@ #! /bin/bash -# Copyright 2022 Google LLC +# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,5 +20,8 @@ CFT_CLI_VERSION=$1 cd /build -wget "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/v${CFT_CLI_VERSION}/cft-linux-amd64" +if ! wget "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/cli%2Fv${CFT_CLI_VERSION}/cft-linux-amd64"; then + wget "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/v${CFT_CLI_VERSION}/cft-linux-amd64" +fi + install -o 0 -g 0 -m 0755 cft-linux-amd64 /usr/local/bin/cft From af7ab1c1653de66063033b84f0d6bc7f6b2cdbfe Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 4 Apr 2023 15:13:12 -0700 Subject: [PATCH 0311/1371] fix: moves opt-in block for metadata autogen (#1470) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- .../build/scripts/task_helper_functions.sh | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 72a8ec2fb17..2fb8dc0629d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.13.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 70aaaece12f..f5795c3894b 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -306,17 +306,24 @@ function generate_docs() { | compat_xargs -0 -n1 dirname \ | sort -u) - generate_metadata -} - -function generate_metadata() { # disable opt in after https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1353 if [[ "${ENABLE_BPMETADATA:-}" -ne 1 ]]; then echo "ENABLE_BPMETADATA not set to 1. Skipping metadata generation." return 0 fi + generate_metadata +} + +function generate_metadata() { echo "Generating blueprint metadata" - cft blueprint metadata + arg=$1 + # check if metadata.display.yaml was requested + if [ arg -eq "display" ]; then + cft blueprint metadata -d + else + cft blueprint metadata + fi + if [ $? -eq 0 ]; then echo "Success!" else From dbc493cb98f4c7521abb26b49caf10992f1e3f6a Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 4 Apr 2023 15:18:03 -0700 Subject: [PATCH 0312/1371] feat: adds bpmetadata package documentation (#1475) --- cli/bpmetadata/doc.go | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 cli/bpmetadata/doc.go diff --git a/cli/bpmetadata/doc.go b/cli/bpmetadata/doc.go new file mode 100644 index 00000000000..0bcaec6c38c --- /dev/null +++ b/cli/bpmetadata/doc.go @@ -0,0 +1,44 @@ +// The package bpmetadata generates and validates metadata for Terraform blueprint packages. + +// bpmetadata is a tool that generates metatdata for Terraform packages that are structured based +// on the [CFT Module Template/https://github.com/terraform-google-modules/terraform-google-module-template]. +// Executing the cli at the root of a Terraform blueprint package or pointing to one with a `path` +// flag will generate `metadata.yaml`. Additionaly a UI-display specific metadata file can also be +// generated by providing the cli with a `display` flag. + +// Downloading the CFT CLI + +// Download the CFT CLI as `curl https://storage.googleapis.com/cft-cli//cft--amd64 --output cft`. +// - VERSION can be set to "latest" or to a specific semver e.g. "v0.5.0". It is recommended to use the "latest" version. +// - PLATFORM can be set as "linux", "windows" or "darwin". +// e.g. the latest version of the CLI for linux can be download as `curl https://storage.googleapis.com/cft-cli/latest/cft-linux-amd64 --output cft`. +// This will download the the CLI binary to the current working directory. + +// Generating metadata for a Terraform package + +// Prerequisite: The Terraform package should conform to the folder structure defined by the +// [CFT Module Template/https://github.com/terraform-google-modules/terraform-google-module-template]. +// A vanilla package can be generated using `cookiecutter` as explained in the CFT Module Template's +// documentation. + +// Generate metadata using the CLI by pointing the CLI to the root of the Terraform package as +// `cft blueprint metadata -p -d`. +// This will generate two files i.e. metadata.yaml and metadata.display.yaml for each root and sub-modules +// available in the Terraform Blueprint. metadata.yaml is mostly autogenerated while metadata.display.yaml +// is expected to be hand-authored. + +// All fields (autogenerated and manually authored) supported by the metadata schema can be found under the +// the top-level struct type [BlueprintMetadata/https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata] + +// Refer to sample versions of [metadata.yaml/https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.yaml] +// and [metadata.display.yaml/https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.display.yaml] for reference. + +// For all available flags for the CLI, use `cft blueprint metadata -h` for a complete reference. + +// Validating metadata for schema consistencies + +// Validate metadata for your root and sub modules with the CFT CLI as `cft blueprint metadata -v`. +// This will output a success message i.e. "metadata is valid" if all fields in all metadata files +// are consistent with the [BlueprintMetadata/https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata] +// schema. Otherwise, error messages for invalid field names, types or values will be shown. +package bpmetadata From 72dcc059d2b9b722aa7f96c4428080816bda2ee8 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 4 Apr 2023 18:23:43 -0500 Subject: [PATCH 0313/1371] chore: Update Tools to 1.11.1 (#1472) Co-authored-by: Andrew Peabody --- .github/workflows/update-tooling.yml | 2 +- infra/build/Makefile | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 28d1d36f709..6b03afeafa7 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -9,7 +9,7 @@ env: CLOUD_SDK_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases" CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" - KUBECTL_MINOR: "1.23" + KUBECTL_MINOR: "1.25" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" GATOR_MINOR: "3.11" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" diff --git a/infra/build/Makefile b/infra/build/Makefile index 2fb8dc0629d..d8a5bfed5c5 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.3.9 +TERRAFORM_VERSION := 1.4.4 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 419.0.0 +CLOUD_SDK_VERSION := 425.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -30,11 +30,11 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.27 +KPT_VERSION := 1.0.0-beta.30 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 0.5.2 +CFT_CLI_VERSION := 0.9.1 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.23.16 +KUBECTL_VERSION := 1.25.8 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 @@ -47,9 +47,9 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.11.0 OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.13.0 +GCRANE_VERSION := 0.14.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From bdf5563b43eb44c4f710584668f387bbc2cff9eb Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 5 Apr 2023 09:57:15 -0700 Subject: [PATCH 0314/1371] chore: increments the tag for cli to include bpmetadata docs (#1477) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index e490d9b5cc1..d604df0df5e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.9.1 +VERSION=v0.9.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From 3fb93fa795812dc18a3e2d262fd26bbbf59d1ead Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 5 Apr 2023 14:30:40 -0700 Subject: [PATCH 0315/1371] chore: formats docs for bpmetadata (#1478) --- cli/Makefile | 2 +- cli/bpmetadata/doc.go | 40 ++++++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index d604df0df5e..1a2ead57884 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.9.2 +VERSION=v0.9.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/doc.go b/cli/bpmetadata/doc.go index 0bcaec6c38c..33df1384dbf 100644 --- a/cli/bpmetadata/doc.go +++ b/cli/bpmetadata/doc.go @@ -1,44 +1,44 @@ // The package bpmetadata generates and validates metadata for Terraform blueprint packages. - +// // bpmetadata is a tool that generates metatdata for Terraform packages that are structured based -// on the [CFT Module Template/https://github.com/terraform-google-modules/terraform-google-module-template]. +// on the [CFT Module Template](https://github.com/terraform-google-modules/terraform-google-module-template). // Executing the cli at the root of a Terraform blueprint package or pointing to one with a `path` // flag will generate `metadata.yaml`. Additionaly a UI-display specific metadata file can also be // generated by providing the cli with a `display` flag. - -// Downloading the CFT CLI - +// +// # Downloading the CFT CLI +// // Download the CFT CLI as `curl https://storage.googleapis.com/cft-cli//cft--amd64 --output cft`. // - VERSION can be set to "latest" or to a specific semver e.g. "v0.5.0". It is recommended to use the "latest" version. // - PLATFORM can be set as "linux", "windows" or "darwin". // e.g. the latest version of the CLI for linux can be download as `curl https://storage.googleapis.com/cft-cli/latest/cft-linux-amd64 --output cft`. // This will download the the CLI binary to the current working directory. - -// Generating metadata for a Terraform package - +// +// # Generating metadata for a Terraform package +// // Prerequisite: The Terraform package should conform to the folder structure defined by the -// [CFT Module Template/https://github.com/terraform-google-modules/terraform-google-module-template]. +// [CFT Module Template](https://github.com/terraform-google-modules/terraform-google-module-template). // A vanilla package can be generated using `cookiecutter` as explained in the CFT Module Template's // documentation. - +// // Generate metadata using the CLI by pointing the CLI to the root of the Terraform package as // `cft blueprint metadata -p -d`. // This will generate two files i.e. metadata.yaml and metadata.display.yaml for each root and sub-modules // available in the Terraform Blueprint. metadata.yaml is mostly autogenerated while metadata.display.yaml // is expected to be hand-authored. - +// // All fields (autogenerated and manually authored) supported by the metadata schema can be found under the -// the top-level struct type [BlueprintMetadata/https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata] - -// Refer to sample versions of [metadata.yaml/https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.yaml] -// and [metadata.display.yaml/https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.display.yaml] for reference. - +// the top-level struct type [BlueprintMetadata](https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata). +// +// Refer to sample versions of [metadata.yaml](https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.yaml) +// and [metadata.display.yaml](https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.display.yaml) for reference. +// // For all available flags for the CLI, use `cft blueprint metadata -h` for a complete reference. - -// Validating metadata for schema consistencies - +// +// # Validating metadata for schema consistencies +// // Validate metadata for your root and sub modules with the CFT CLI as `cft blueprint metadata -v`. // This will output a success message i.e. "metadata is valid" if all fields in all metadata files -// are consistent with the [BlueprintMetadata/https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata] +// are consistent with the [BlueprintMetadata](https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata) // schema. Otherwise, error messages for invalid field names, types or values will be shown. package bpmetadata From 2e4dbe34a8ca7535911b5b9beba50bea7d156fbe Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Wed, 5 Apr 2023 20:13:45 -0500 Subject: [PATCH 0316/1371] chore: onboard cloud IDS repo (#1468) Co-authored-by: Awais Malik --- .gitignore | 2 +- LICENSE | 3 ++- .../dev-org/dev-project-cleanup/versions.tf | 2 +- .../function_source/main.py | 21 +++++++++++++------ .../versions.tf | 2 +- .../test-org/ci-foundation/reconcile.sh | 12 +++++------ .../terraform/test-org/ci-project/versions.tf | 2 +- .../test-org/ci-triggers/versions.tf | 2 +- infra/terraform/test-org/github/versions.tf | 2 +- .../test-org/org-iam-policy/versions.tf | 2 +- .../test-org/org/external_data/bar.csv | 2 +- .../bigquery-external-table-test.csv | 2 +- .../test-org/org/external_data/foo.csv | 2 +- infra/terraform/test-org/org/locals.tf | 7 +++++++ infra/terraform/test-org/org/versions.tf | 2 +- .../test-org/test-cleanup/versions.tf | 2 +- .../test-org/tf-validator/versions.tf | 2 +- 17 files changed, 43 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index 50b2cdb29a9..ed90cb5fd8f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,4 @@ config-connector/tests/testcases/environments.yaml .DS_Store .vscode *.pyc -schema \ No newline at end of file +schema diff --git a/LICENSE b/LICENSE index 7a4a3ea2424..f4f87bd4ed6 100644 --- a/LICENSE +++ b/LICENSE @@ -199,4 +199,5 @@ 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. \ No newline at end of file + limitations under the License. + \ No newline at end of file diff --git a/infra/terraform/dev-org/dev-project-cleanup/versions.tf b/infra/terraform/dev-org/dev-project-cleanup/versions.tf index 14674a78014..d30b0bdd708 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/versions.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { archive = { version = ">= 1.3, < 3.0" diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py index 44e3bc6d710..c18bffd8f25 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py @@ -20,17 +20,23 @@ import requests from google.cloud.devtools.cloudbuild_v1 import CloudBuildClient as cloudbuild -from google.cloud.devtools.cloudbuild_v1.types import BuildStep, Build, BuildOptions +from google.cloud.devtools.cloudbuild_v1.types import ( + BuildStep, + Build, + BuildOptions) from google.protobuf import duration_pb2 as duration CFT_TOOLS_DEFAULT_IMAGE = 'gcr.io/cloud-foundation-cicd/cft/developer-tools' CFT_TOOLS_DEFAULT_IMAGE_VERSION = '1' # Disable terraform-google-module-template as it uses a cookiecutter template -DISABLED_MODULES = ["terraform-example-foundation", "cloud-foundation-training", "terraform-google-module-template"] +DISABLED_MODULES = ["terraform-example-foundation", + "cloud-foundation-training", + "terraform-google-module-template"] def main(event, context): - """ Triggers a new downstream build based on a PubSub message originating from a parent cloudbuild """ + """ Triggers a new downstream build based on a PubSub message + originating from a parent cloudbuild """ # if cloud build project is not set, exit if not os.getenv('CLOUDBUILD_PROJECT'): logging.warn('Cloud Build project not set') @@ -66,7 +72,8 @@ def main(event, context): CFT_TOOLS_DEFAULT_IMAGE_VERSION = data['substitutions'][ '_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' ] - # Cloud Build seems to have a bug where if a build is re run through Github UI, it will not set _PR_NUMBER or _HEAD_REPO_URL + # Cloud Build seems to have a bug where if a build is re run through + # Github UI, it will not set _PR_NUMBER or _HEAD_REPO_URL # workaround using the GH API to infer PR number and _HEAD_REPO_URL PR_NUMBER = data['substitutions'].get('_PR_NUMBER', False) _HEAD_REPO_URL = data['substitutions'].get('_HEAD_REPO_URL', False) @@ -76,7 +83,8 @@ def main(event, context): 'git clone $$REPO_URL . && git checkout $$COMMIT_SHA && git status', ] if not (PR_NUMBER or _HEAD_REPO_URL): - logging.warn('Unable to infer PR number via Cloud Build. Trying via GH API') + logging.warn( + 'Unable to infer PR number via Cloud Build. Trying via GH API') # get list of github PRs that have this SHA response = requests.get( f'https://api.github.com/search/issues?q={data["substitutions"]["COMMIT_SHA"]}' @@ -88,7 +96,8 @@ def main(event, context): logging.info(f'Multiple associated PRs found. Exiting...') return # if only one PR, its safe to assume that is associated with parent build's PR - logging.info(f'One associated PR found: {response_obj["items"][0]["number"]}') + logging.info( + f'One associated PR found: {response_obj["items"][0]["number"]}') PR_NUMBER = response_obj['items'][0]['number'] # get target repo URL pr_url = response_obj['items'][0]['html_url'] diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf b/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf index 04657c6ce3f..3dd96cf5390 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { google = { version = ">= 3.38, < 5.0" diff --git a/infra/terraform/test-org/ci-foundation/reconcile.sh b/infra/terraform/test-org/ci-foundation/reconcile.sh index b3e98b0a261..906239bcbf4 100755 --- a/infra/terraform/test-org/ci-foundation/reconcile.sh +++ b/infra/terraform/test-org/ci-foundation/reconcile.sh @@ -16,17 +16,17 @@ set -e echo "Reconciling gcp-org in production" -BUILD_ID=$(gcloud beta builds triggers run gcp-org---terraform-apply --branch=production --project ${FOUNDATION_CICD_PROJECT_ID} --format="value(metadata.build.id)") -gcloud beta builds log $BUILD_ID --project ${FOUNDATION_CICD_PROJECT_ID} --stream +BUILD_ID=$(gcloud beta builds triggers run gcp-org---terraform-apply --branch=production --project "${FOUNDATION_CICD_PROJECT_ID}" --format="value(metadata.build.id)") +gcloud beta builds log "$BUILD_ID" --project "${FOUNDATION_CICD_PROJECT_ID}" --stream repos=("gcp-environments" "gcp-networks" "gcp-projects") envs=("development" "non-production" "production") -for repo in ${repos[@]}; do +for repo in "${repos[@]}"; do TRIGGER_NAME="${repo}---terraform-apply" - for env in ${envs[@]}; do + for env in "${envs[@]}"; do echo "Reconciling ${repo} in ${env}" - BUILD_ID=$(gcloud beta builds triggers run ${TRIGGER_NAME} --branch=${env} --project ${FOUNDATION_CICD_PROJECT_ID} --format="value(metadata.build.id)") - gcloud beta builds log $BUILD_ID --project ${FOUNDATION_CICD_PROJECT_ID} --stream + BUILD_ID=$(gcloud beta builds triggers run "${TRIGGER_NAME}" --branch="${env}" --project "${FOUNDATION_CICD_PROJECT_ID}" --format="value(metadata.build.id)") + gcloud beta builds log "$BUILD_ID" --project "${FOUNDATION_CICD_PROJECT_ID}" --stream done done diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf index 1347a1cda37..a5d1b09e657 100644 --- a/infra/terraform/test-org/ci-project/versions.tf +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { github = { source = "integrations/github" diff --git a/infra/terraform/test-org/ci-triggers/versions.tf b/infra/terraform/test-org/ci-triggers/versions.tf index af1ed920f0c..391ff5a0445 100644 --- a/infra/terraform/test-org/ci-triggers/versions.tf +++ b/infra/terraform/test-org/ci-triggers/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { google-beta = ">= 2.18, < 5.0" } diff --git a/infra/terraform/test-org/github/versions.tf b/infra/terraform/test-org/github/versions.tf index f09b213c7a9..8e3589be51e 100644 --- a/infra/terraform/test-org/github/versions.tf +++ b/infra/terraform/test-org/github/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { github = { source = "integrations/github" diff --git a/infra/terraform/test-org/org-iam-policy/versions.tf b/infra/terraform/test-org/org-iam-policy/versions.tf index 8082d07b803..f32914b7e7b 100644 --- a/infra/terraform/test-org/org-iam-policy/versions.tf +++ b/infra/terraform/test-org/org-iam-policy/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { google = { version = ">= 3.39, < 5.0" diff --git a/infra/terraform/test-org/org/external_data/bar.csv b/infra/terraform/test-org/org/external_data/bar.csv index f021349f9d0..80b5b4dab7d 100644 --- a/infra/terraform/test-org/org/external_data/bar.csv +++ b/infra/terraform/test-org/org/external_data/bar.csv @@ -1,3 +1,3 @@ id,name,dept 3,Amy,SC -4,Jacob,SC \ No newline at end of file +4,Jacob,SC diff --git a/infra/terraform/test-org/org/external_data/bigquery-external-table-test.csv b/infra/terraform/test-org/org/external_data/bigquery-external-table-test.csv index be5f7fc8b76..b7d58cb4e3c 100644 --- a/infra/terraform/test-org/org/external_data/bigquery-external-table-test.csv +++ b/infra/terraform/test-org/org/external_data/bigquery-external-table-test.csv @@ -1,2 +1,2 @@ column_a,column_b -foo,bar \ No newline at end of file +foo,bar diff --git a/infra/terraform/test-org/org/external_data/foo.csv b/infra/terraform/test-org/org/external_data/foo.csv index 51a70e286b7..573cbaa462c 100644 --- a/infra/terraform/test-org/org/external_data/foo.csv +++ b/infra/terraform/test-org/org/external_data/foo.csv @@ -1,3 +1,3 @@ id,name,dept 1,Keith,TP -2,Madeline,HR \ No newline at end of file +2,Madeline,HR diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index e1b854960eb..478af194818 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -568,5 +568,12 @@ locals { owners = "@anaik91" topics = local.common_topics.db }, + { + name = "terraform-google-cloud-ids" + org = "GoogleCloudPlatform" + description = "Deploys a Cloud IDS instance and associated resources." + owners = "@gtsorbo @mgaur10" + topics = join(",", [local.common_topics.security, local.common_topics.net]) + }, ] } diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index 85a498ea058..b9e581dfca1 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { external = { version = ">= 1.2, < 3.0" diff --git a/infra/terraform/test-org/test-cleanup/versions.tf b/infra/terraform/test-org/test-cleanup/versions.tf index 2164afda332..5d8d76ec53b 100644 --- a/infra/terraform/test-org/test-cleanup/versions.tf +++ b/infra/terraform/test-org/test-cleanup/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { archive = { version = ">= 1.3, < 3.0" diff --git a/infra/terraform/test-org/tf-validator/versions.tf b/infra/terraform/test-org/tf-validator/versions.tf index 74d28d5eb0f..df04f06bedd 100644 --- a/infra/terraform/test-org/tf-validator/versions.tf +++ b/infra/terraform/test-org/tf-validator/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = "~> 1.3.0" + required_version = ">= 1.4.4" required_providers { google = { source = "hashicorp/google" From e3a7bd6ad67459308fe51abbacf17805d176969c Mon Sep 17 00:00:00 2001 From: Imran Nayer <29933900+imrannayer@users.noreply.github.com> Date: Thu, 6 Apr 2023 10:25:43 -0500 Subject: [PATCH 0317/1371] chore: added owner to alloy-db module (#1479) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 478af194818..6443016ed92 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -565,7 +565,7 @@ locals { name = "terraform-google-alloy-db" org = "GoogleCloudPlatform" description = "Creates an Alloy DB instance" - owners = "@anaik91" + owners = "@anaik91 @imrannayer" topics = local.common_topics.db }, { From bc1eb1d1d16a3c8639159b20b457383e8c086ca4 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 7 Apr 2023 10:33:28 -0500 Subject: [PATCH 0318/1371] chore: Update Tools to 1.11.2 (#1480) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d8a5bfed5c5..f8c05248bb7 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -32,7 +32,7 @@ KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.30 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 0.9.1 +CFT_CLI_VERSION := 0.9.3 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.25.8 TFLINT_VERSION := 0.41.0 @@ -49,7 +49,7 @@ OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.14.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 5f0a79888de1f23469dec6ff426e8cb6c1bc5517 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 7 Apr 2023 11:09:50 -0700 Subject: [PATCH 0319/1371] chore: formatting changes to bpmetadata docs (#1481) --- cli/Makefile | 2 +- cli/bpmetadata/doc.go | 77 +++++++++++++++++++++++++++---------------- 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 1a2ead57884..15a5633cf5c 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.9.3 +VERSION=v0.9.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/doc.go b/cli/bpmetadata/doc.go index 33df1384dbf..ec2e6b3b067 100644 --- a/cli/bpmetadata/doc.go +++ b/cli/bpmetadata/doc.go @@ -1,44 +1,65 @@ -// The package bpmetadata generates and validates metadata for Terraform blueprint packages. +// Package bpmetadata generates and validates metadata for Terraform blueprint packages. // -// bpmetadata is a tool that generates metatdata for Terraform packages that are structured based -// on the [CFT Module Template](https://github.com/terraform-google-modules/terraform-google-module-template). -// Executing the cli at the root of a Terraform blueprint package or pointing to one with a `path` -// flag will generate `metadata.yaml`. Additionaly a UI-display specific metadata file can also be -// generated by providing the cli with a `display` flag. +// bpmetadata is a tool that generates metadata for Terraform packages that are structured based +// on the +// [CFT Module Template]. Executing the cli at the root of a Terraform blueprint package or pointing +// to one with a "path" flag will generate "metadata.yaml". Additionally a UI-display specific +// metadata file can also be generated by providing the cli with a "display" flag. // // # Downloading the CFT CLI // -// Download the CFT CLI as `curl https://storage.googleapis.com/cft-cli//cft--amd64 --output cft`. -// - VERSION can be set to "latest" or to a specific semver e.g. "v0.5.0". It is recommended to use the "latest" version. -// - PLATFORM can be set as "linux", "windows" or "darwin". -// e.g. the latest version of the CLI for linux can be download as `curl https://storage.googleapis.com/cft-cli/latest/cft-linux-amd64 --output cft`. -// This will download the the CLI binary to the current working directory. +// Download the CFT CLI as: +// +// curl https://storage.googleapis.com/cft-cli//cft--amd64 --output cft +// +// Where: +// - VERSION can be set to "latest" or to a specific semver e.g. "v0.5.0". It is recommended to +// use the "latest" version. +// - PLATFORM can be set as "linux", "windows" or "darwin". +// +// e.g. the latest version of the CLI for linux can be downloaded as: +// +// curl https://storage.googleapis.com/cft-cli/latest/cft-linux-amd64 --output cft +// +// This will download the CLI binary to the current working directory. // // # Generating metadata for a Terraform package // -// Prerequisite: The Terraform package should conform to the folder structure defined by the -// [CFT Module Template](https://github.com/terraform-google-modules/terraform-google-module-template). -// A vanilla package can be generated using `cookiecutter` as explained in the CFT Module Template's -// documentation. +// Prerequisite: The Terraform package should conform to the folder structure defined by the +// [CFT Module Template]. A vanilla package can be generated using `cookiecutter` as explained in +// the CFT Module Template's documentation. +// +// Generate metadata using the CLI by pointing the CLI to the root of the Terraform package as: // -// Generate metadata using the CLI by pointing the CLI to the root of the Terraform package as -// `cft blueprint metadata -p -d`. -// This will generate two files i.e. metadata.yaml and metadata.display.yaml for each root and sub-modules -// available in the Terraform Blueprint. metadata.yaml is mostly autogenerated while metadata.display.yaml -// is expected to be hand-authored. +// cft blueprint metadata -p -d // -// All fields (autogenerated and manually authored) supported by the metadata schema can be found under the -// the top-level struct type [BlueprintMetadata](https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata). +// This will generate two files i.e. "metadata.yaml" and "metadata.display.yaml" for each root and +// sub-modules available in the Terraform Blueprint. "metadata.yaml" is mostly auto generated while +// "metadata.display.yaml" is expected to be hand-authored. // -// Refer to sample versions of [metadata.yaml](https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.yaml) -// and [metadata.display.yaml](https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.display.yaml) for reference. +// All fields (auto generated and manually authored) supported by the metadata schema can be found +// under the top-level struct type [BlueprintMetadata]. // -// For all available flags for the CLI, use `cft blueprint metadata -h` for a complete reference. +// Refer to sample versions of [metadata.yaml] and [metadata.display.yaml] for the [canonical] +// Terraform package. +// +// For all available flags for the CLI, use help for cft as: +// +// cft blueprint metadata -h // // # Validating metadata for schema consistencies // -// Validate metadata for your root and sub modules with the CFT CLI as `cft blueprint metadata -v`. +// Validate metadata for your root and sub modules with the CFT CLI as: +// +// cft blueprint metadata -v +// // This will output a success message i.e. "metadata is valid" if all fields in all metadata files -// are consistent with the [BlueprintMetadata](https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata) -// schema. Otherwise, error messages for invalid field names, types or values will be shown. +// are consistent with the [BlueprintMetadata] schema. Otherwise, error messages for invalid field +// names, types or values will be shown. +// +// [BlueprintMetadata]: https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata#BlueprintMetadata +// [metadata.yaml]: https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.yaml +// [metadata.display.yaml]: https://github.com/g-awmalik/terraform-google-canonical-mp/blob/main/metadata.display.yaml +// [CFT Module Template]: https://github.com/terraform-google-modules/terraform-google-module-template +// [canonical]: https://github.com/g-awmalik/terraform-google-canonical-mp/tree/main package bpmetadata From 808eff080e4ab91c80161daec5ae5cdc7a74d73e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 11 Apr 2023 11:14:50 -0700 Subject: [PATCH 0320/1371] fix: correct linter return value and release tools 1.11.3 (#1484) --- infra/build/Makefile | 4 ++-- .../developer-tools/build/scripts/task_helper_functions.sh | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f8c05248bb7..d0a7149a184 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -32,7 +32,7 @@ KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.30 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 0.9.3 +CFT_CLI_VERSION := 0.9.4 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.25.8 TFLINT_VERSION := 0.41.0 @@ -49,7 +49,7 @@ OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.14.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index f5795c3894b..64ae5557dc9 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -339,6 +339,7 @@ function check_tflint() { echo "DISABLE_TFLINT set. Skipping tflint check." return 0 fi + local rval setup_trap_handler rval=0 echo "Checking for tflint" From 645dc5a308205b2d9c60dc773ecc790ce4df9331 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 12 Apr 2023 10:19:11 -0500 Subject: [PATCH 0321/1371] chore: automate repo access for maintainers (#1489) --- .../terraform/modules/codeowners_file/main.tf | 2 +- .../modules/codeowners_file/variables.tf | 11 +++- infra/terraform/modules/repositories/main.tf | 24 ++++++- .../modules/repositories/variables.tf | 11 +++- .../terraform/test-org/ci-triggers/locals.tf | 1 + .../test-org/ci-triggers/triggers.tf | 1 + infra/terraform/test-org/org/locals.tf | 63 ++++++++++--------- infra/terraform/test-org/org/outputs.tf | 4 ++ 8 files changed, 81 insertions(+), 36 deletions(-) diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf index 63f5ff7b105..c9f29bb496c 100644 --- a/infra/terraform/modules/codeowners_file/main.tf +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -17,7 +17,7 @@ locals { commit_author = "CFT Bot" commit_email = "cloud-foundation-bot@google.com" - owners = { for value in var.repos_map : value.name => value.owners if can(value.owners) } + owners = { for value in var.repos_map : value.name => join(" ", formatlist("@%s", value.owners)) if length(value.owners) > 0 } } data "github_repository" "repo" { diff --git a/infra/terraform/modules/codeowners_file/variables.tf b/infra/terraform/modules/codeowners_file/variables.tf index 5906f4b33cb..eb226747aae 100644 --- a/infra/terraform/modules/codeowners_file/variables.tf +++ b/infra/terraform/modules/codeowners_file/variables.tf @@ -31,5 +31,14 @@ variable "owner" { variable "repos_map" { description = "Map of Repos" - type = map(map(string)) + type = map(object({ + name = string + short_name = optional(string) + org = string + description = optional(string) + owners = optional(list(string), []) + homepage_url = optional(string, null) + module = optional(bool, true) + topics = optional(string) + })) } diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index b00e8f43f3a..60c3b9e67f5 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -14,11 +14,22 @@ * limitations under the License. */ +locals { + owners = flatten([ + for repo, val in var.repos_map : [ + for owner in val.owners : { + "repo" : repo + "owner" : owner + } + ] + ]) +} + resource "github_repository" "repo" { for_each = var.repos_map name = each.value.name - description = try(each.value.description, null) - homepage_url = try(each.value.homepage_url, "https://registry.terraform.io/modules/${each.value.org}/${trimprefix(each.value.name, "terraform-google-")}/google") + description = each.value.description + homepage_url = coalesce(each.value.homepage_url, "https://registry.terraform.io/modules/${each.value.org}/${trimprefix(each.value.name, "terraform-google-")}/google") topics = setunion(["cft-terraform"], try(split(",", trimspace(each.value.topics)), [])) allow_merge_commit = false @@ -40,3 +51,12 @@ resource "github_repository_collaborator" "dpebot" { username = "dpebot" permission = "pull" } + +resource "github_repository_collaborator" "owners" { + for_each = { + for v in local.owners : "${v.repo}/${v.owner}" => v + } + repository = each.value.repo + username = each.value.owner + permission = "maintain" +} diff --git a/infra/terraform/modules/repositories/variables.tf b/infra/terraform/modules/repositories/variables.tf index 7f30b7adc91..78950234876 100644 --- a/infra/terraform/modules/repositories/variables.tf +++ b/infra/terraform/modules/repositories/variables.tf @@ -20,5 +20,14 @@ variable "repos_map" { description = "Map of Repos" - type = map(map(string)) + type = map(object({ + name = string + short_name = optional(string) + org = string + description = optional(string) + owners = optional(list(string), []) + homepage_url = optional(string, null) + module = optional(bool, true) + topics = optional(string) + })) } diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 1b9583598d3..be00feda49b 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -43,6 +43,7 @@ locals { repo_folder = { for key, value in data.terraform_remote_state.org.outputs.ci_repos_folders : contains(keys(local.custom_repo_mapping), key) ? local.custom_repo_mapping[key] : "terraform-google-${key}" => value if !contains(local.exclude_folders, value.folder_name) } org_id = data.terraform_remote_state.org.outputs.org_id billing_account = data.terraform_remote_state.org.outputs.billing_account + lr_billing_account = data.terraform_remote_state.org.outputs.lr_billing_account tf_validator_project_id = data.terraform_remote_state.tf-validator.outputs.project_id tf_validator_folder_id = trimprefix(data.terraform_remote_state.org.outputs.folders["ci-terraform-validator"], "folders/") # tf validator "ancestry path" expects non-plural type names for historical reasons diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index d652a6be69c..35999c3fa3c 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -54,6 +54,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { _BILLING_IAM_TEST_ACCOUNT = each.key == "terraform-google-iam" ? local.billing_iam_test_account : null _VOD_TEST_PROJECT_ID = each.key == "terraform-google-media-cdn-vod" ? local.vod_test_project_id : null _FILE_LOGS_BUCKET = lookup(local.enable_file_log, each.key, false) ? module.filelogs_bucket.url : null + _LR_BILLING_ACCOUNT = local.lr_billing_account }, # add sfb substitutions contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 6443016ed92..a680f5178a4 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -18,6 +18,7 @@ locals { org_id = "943740911108" old_billing_account = "01D904-DAF6EC-F34EF7" billing_account = "0138EF-C93849-98B0B5" + lr_billing_account = "01108A-537F1E-A5BFFC" cft_ci_group = "cft-ci-robots@test.blueprints.joonix.net" gcp_admins_group = "gcp-admins@test.blueprints.joonix.net" ci_project_id = "cloud-foundation-cicd" @@ -58,7 +59,7 @@ locals { * short_name = "string" (optional for modules, if not prefixed with 'terraform-google-') * org = "terraform-google-modules" or "GoogleCloudPlatform" (required) * description = "string" (required) - * owners = "@user1 @user2" (optional) + * owners = "list(string)" ["user1", "user2"] (optional) * homepage_url = "string" (optional, overrides default) * module = BOOL (optional, default is true which includes GH repo configuration) * topics = "string1,string2,string3" (one or more of local.common_topics required if module = true) @@ -70,41 +71,41 @@ locals { name = "cloud-foundation-training" org = "terraform-google-modules" description = "" - owners = "@marine675 @zefdelgadillo" + owners = ["marine675", "zefdelgadillo"] }, { name = "terraform-google-healthcare" org = "terraform-google-modules" description = "Handles opinionated Google Cloud Healthcare datasets and stores" - owners = "@yeweidaniel" + owners = ["yeweidaniel"] topics = local.common_topics.hcls }, { name = "terraform-google-cloud-run" org = "GoogleCloudPlatform" description = "Deploys apps to Cloud Run, along with option to map custom domain" - owners = "@prabhu34 @anamer @mitchelljamie" + owners = ["prabhu34", "anamer", "mitchelljamie"] topics = "cloudrun,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" }, { name = "terraform-google-secured-data-warehouse" org = "GoogleCloudPlatform" description = "Deploys a secured BigQuery data warehouse" - owners = "@erlanderlo" + owners = ["erlanderlo"] topics = join(",", [local.common_topics.da, local.common_topics.e2e]) }, { name = "terraform-google-anthos-vm" org = "GoogleCloudPlatform" description = "Creates VMs on Anthos Bare Metal clusters" - owners = "@zhuchenwang" + owners = ["zhuchenwang"] topics = "anthos,kubernetes,terraform-module,vm,${local.common_topics.compute}" }, { name = "terraform-google-kubernetes-engine" org = "terraform-google-modules" description = "Configures opinionated GKE clusters" - owners = "@Jberlinsky @ericyz" + owners = ["Jberlinsky", "ericyz"] topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { @@ -112,14 +113,14 @@ locals { short_name = "ecommerce-microservices" org = "GoogleCloudPlatform" description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." - owners = "@NimJay" + owners = ["NimJay"] }, { name = "terraform-example-foundation" short_name = "example-foundation" org = "terraform-google-modules" description = "Shows how the CFT modules can be composed to build a secure cloud foundation" - owners = "@rjerrems" + owners = ["rjerrems"] homepage_url = "https://cloud.google.com/architecture/security-foundations" topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) }, @@ -127,35 +128,35 @@ locals { name = "terraform-google-log-analysis" org = "GoogleCloudPlatform" description = "Stores and analyzes log data" - owners = "@ryotat7" + owners = ["ryotat7"] topics = local.common_topics.da }, { name = "terraform-google-three-tier-web-app" org = "GoogleCloudPlatform" description = "Deploys a three tier web application using Cloud Run and Cloud SQL" - owners = "@tpryan" + owners = ["tpryan"] topics = join(",", [local.common_topics.serverless, local.common_topics.db]) }, { name = "terraform-google-load-balanced-vms" org = "GoogleCloudPlatform" description = "Creates a Managed Instance Group with a loadbalancer" - owners = "@tpryan" + owners = ["tpryan"] topics = local.common_topics.net }, { name = "terraform-google-secure-cicd" org = "GoogleCloudPlatform" description = "Builds a secure CI/CD pipeline on Google Cloud" - owners = "@gtsorbo" + owners = ["gtsorbo"] topics = join(",", [local.common_topics.security, local.common_topics.devtools, local.common_topics.e2e]) }, { name = "terraform-google-media-cdn-vod" org = "GoogleCloudPlatform" description = "Deploys Media CDN video-on-demand" - owners = "@roddzurcher" + owners = ["roddzurcher"] topics = local.common_topics.ops }, { @@ -168,7 +169,7 @@ locals { name = "terraform-google-network-forensics" org = "GoogleCloudPlatform" description = "Deploys Zeek on Google Cloud" - owners = "@gtsorbo" + owners = ["gtsorbo"] topics = local.common_topics.net }, { @@ -194,7 +195,7 @@ locals { org = "terraform-google-modules" description = "Creates opinionated BigQuery datasets and tables" topics = local.common_topics.da - owners = "@davenportjw" + owners = ["davenportjw"] }, { name = "terraform-google-bootstrap" @@ -333,21 +334,21 @@ locals { org = "terraform-google-modules" description = "Creates a regional TCP proxy load balancer for Compute Engine by using target pools and forwarding rules" topics = local.common_topics.net - owners = "@imrannayer" + owners = ["imrannayer"] }, { name = "terraform-google-lb-http" org = "terraform-google-modules" description = "Creates a global HTTP load balancer for Compute Engine by using forwarding rules" topics = local.common_topics.net - owners = "@imrannayer" + owners = ["imrannayer"] }, { name = "terraform-google-lb-internal" org = "terraform-google-modules" description = "Creates an internal load balancer for Compute Engine by using forwarding rules" topics = local.common_topics.net - owners = "@imrannayer" + owners = ["imrannayer"] }, { name = "terraform-google-log-export" @@ -495,35 +496,35 @@ locals { name = "terraform-google-waap" org = "GoogleCloudPlatform" description = "Deploys the WAAP solution on Google Cloud" - owners = "@gtsorbo" + owners = ["gtsorbo"] topics = local.common_topics.ops }, { name = "terraform-google-cloud-workflows" org = "GoogleCloudPlatform" description = "Manage Workflows with optional Scheduler or Event Arc triggers" - owners = "@anaik91" + owners = ["anaik91"] topics = join(",", [local.common_topics.serverless, local.common_topics.devtools]) }, { name = "terraform-google-cloud-armor" org = "GoogleCloudPlatform" description = "Deploy Cloud Armor security policy" - owners = "@imrannayer" + owners = ["imrannayer"] topics = join(",", [local.common_topics.compute, local.common_topics.net]) }, { name = "terraform-google-cloud-deploy" org = "GoogleCloudPlatform" description = "Create Cloud Deploy pipelines and targets" - owners = "@gtsorbo @niranjankl" + owners = ["gtsorbo", "niranjankl"] topics = join(",", [local.common_topics.devtools]) }, { name = "terraform-google-cloud-functions" org = "GoogleCloudPlatform" description = "Deploys Cloud Functions (Gen 2)" - owners = "@prabhu34" + owners = ["prabhu34"] topics = "cloudfunctions,functions,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" }, { @@ -531,7 +532,7 @@ locals { short_name = "dynamic-python-webapp" org = "GoogleCloudPlatform" description = "Deploy a dynamic python webapp" - owners = "@glasnt @donmccasland" + owners = ["glasnt", "donmccasland"] homepage_url = "avocano.dev" }, { @@ -539,40 +540,40 @@ locals { short_name = "deploy-java-multizone" org = "GoogleCloudPlatform" description = "Deploy a multizone Java application" - owners = "@donmccasland" + owners = ["donmccasland"] }, { name = "terraform-google-itar-architectures" org = "GoogleCloudPlatform" description = "Includes use cases for deploying ITAR-aligned architectures on Google Cloud" - owners = "@gtsorbo" + owners = ["gtsorbo"] topics = join(",", [local.common_topics.compute], ["compliance"]) }, { name = "Migrate-Legacy-Java-App-GKE" org = "HSA-Integration" description = "TODO" - owners = "@donmccasland" + owners = ["donmccasland"] }, { name = "terraform-google-analytics-lakehouse" org = "GoogleCloudPlatform" description = "Deploys a Lakehouse Architecture Solution" - owners = "@stevewalker-de" + owners = ["stevewalker-de"] topics = local.common_topics.da }, { name = "terraform-google-alloy-db" org = "GoogleCloudPlatform" description = "Creates an Alloy DB instance" - owners = "@anaik91 @imrannayer" + owners = ["anaik91", "imrannayer"] topics = local.common_topics.db }, { name = "terraform-google-cloud-ids" org = "GoogleCloudPlatform" description = "Deploys a Cloud IDS instance and associated resources." - owners = "@gtsorbo @mgaur10" + owners = ["gtsorbo", "mgaur10"] topics = join(",", [local.common_topics.security, local.common_topics.net]) }, ] diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index baaa0a45f4f..3011fdb0e86 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -30,6 +30,10 @@ output "billing_account" { value = local.billing_account } +output "lr_billing_account" { + value = local.lr_billing_account +} + output "cft_ci_group" { value = local.cft_ci_group } From ae41c774d4e20e303785ebe1554fb040b154d691 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 12 Apr 2023 10:25:47 -0500 Subject: [PATCH 0322/1371] chore: bump reset IAM to use TF 1.4.x (#1486) --- infra/terraform/test-org/org-iam-policy/cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml b/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml index d8820f9969c..39285731025 100644 --- a/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml +++ b/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml @@ -30,4 +30,4 @@ steps: args: ['apply', '--auto-approve'] substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.10' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.11' From 4b157610c2a330cd1308d8273f3d991aeca563f1 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 18 Apr 2023 12:35:57 -0700 Subject: [PATCH 0323/1371] chore: adds deploy-java-gke to CI (#1491) --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index be00feda49b..96adfb6594e 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -34,6 +34,7 @@ locals { "dynamic-python-webapp" = "terraform-dynamic-python-webapp" "deploy-java-multizone" = "terraform-example-deploy-java-multizone" "ecommerce-microservices" = "terraform-ecommerce-microservices-on-gke" + "deploy-java-gke" = "terraform-example-deploy-java-gke" "Migrate-Legacy-Java-App-GKE" = "Migrate-Legacy-Java-App-GKE" } # example foundation has custom test modes diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index a680f5178a4..56b7969ee07 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -576,5 +576,12 @@ locals { owners = ["gtsorbo", "mgaur10"] topics = join(",", [local.common_topics.security, local.common_topics.net]) }, + { + name = "terraform-example-deploy-java-gke" + short_name = "deploy-java-gke" + org = "GoogleCloudPlatform" + description = "Deploy a Legacy Java App GKE" + owners = ["donmccasland"] + }, ] } From 93a4bebce165656838efa9757712ed1c64db8d70 Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Wed, 19 Apr 2023 22:15:53 -0500 Subject: [PATCH 0324/1371] fix: change codeowners for run and functions (#1490) --- infra/terraform/test-org/org/locals.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 56b7969ee07..e182f4db27e 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -84,7 +84,7 @@ locals { name = "terraform-google-cloud-run" org = "GoogleCloudPlatform" description = "Deploys apps to Cloud Run, along with option to map custom domain" - owners = ["prabhu34", "anamer", "mitchelljamie"] + owners = ["prabhu34", "anamer", "gtsorbo"] topics = "cloudrun,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" }, { @@ -524,7 +524,7 @@ locals { name = "terraform-google-cloud-functions" org = "GoogleCloudPlatform" description = "Deploys Cloud Functions (Gen 2)" - owners = ["prabhu34"] + owners = ["prabhu34", "gtsorbo"] topics = "cloudfunctions,functions,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" }, { From 5f82d15681d1483f604cfc9e8e88740e759889a5 Mon Sep 17 00:00:00 2001 From: Pierre Dulac Date: Thu, 20 Apr 2023 05:18:47 +0200 Subject: [PATCH 0325/1371] chore: Onboard crmint repo (#1465) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index e182f4db27e..41df2706741 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -583,5 +583,12 @@ locals { description = "Deploy a Legacy Java App GKE" owners = ["donmccasland"] }, + { + name = "terraform-google-crmint" + org = "GoogleCloudPlatform" + description = "Deploy the Marketing Analytics application CRMint" + owners = ["dulacp"] + topics = join(",", [local.common_topics.da, local.common_topics.e2e], ["marketing"]) + }, ] } From a2eb1e3bf86f9b6cc484bc82437492159443feb5 Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Wed, 19 Apr 2023 22:21:18 -0500 Subject: [PATCH 0326/1371] fix: add org-level roles for ITAR CI (#1482) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org-iam-policy/iam.tf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index 6643e39faaa..44c76aad9ba 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -49,6 +49,8 @@ locals { "roles/resourcemanager.folderEditor" : ["serviceAccount:${local.project_cleaner}"], "roles/serviceusage.serviceUsageAdmin" : ["serviceAccount:${local.project_cleaner}"], "roles/accesscontextmanager.policyReader" : ["group:${local.cft_ci_group}"], + "roles/assuredworkloads.admin" : ["group:${local.cft_ci_group}"], + "roles/iam.denyAdmin" : ["group:${local.cft_ci_group}"], } billing_policy = { From fe942f5b51e75e4c1a27e31fc6628b7031d984f0 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 21 Apr 2023 09:56:29 -0500 Subject: [PATCH 0327/1371] chore: add additional billing admins (#1492) --- infra/terraform/test-org/org-iam-policy/iam.tf | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index 44c76aad9ba..a25b4bbec87 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -59,6 +59,8 @@ locals { "group:${local.gcp_admins_group_test}", "user:${local.cft_admin}", "group:${local.foundation_leads_group}", + "group:${data.google_secret_manager_secret_version.ba-admin-1.secret_data}", + "group:${data.google_secret_manager_secret_version.ba-admin-2.secret_data}", ], "roles/billing.user" : [ "serviceAccount:${local.ci_gsuite_sa}", @@ -76,6 +78,16 @@ data "google_secret_manager_secret_version" "org-role-admin-sa" { secret = "org-role-admin-sa" } +data "google_secret_manager_secret_version" "ba-admin-1" { + project = "cloud-foundation-cicd" + secret = "ba-admin-1" +} + +data "google_secret_manager_secret_version" "ba-admin-2" { + project = "cloud-foundation-cicd" + secret = "ba-admin-2" +} + resource "google_organization_iam_policy" "organization" { org_id = data.terraform_remote_state.org.outputs.org_id policy_data = data.google_iam_policy.admin.policy_data From 0ba58cb5aae839c7325348e57dfc07894f5d8248 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 24 Apr 2023 20:59:50 -0700 Subject: [PATCH 0328/1371] feat: adds protos for the bpmetadata schema (#1493) --- .gitignore | 1 + cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 20 +- cli/bpmetadata/proto/bpmetadata.proto | 343 ++++++++++++++++++ cli/bpmetadata/proto/bpmetadata_ui.proto | 124 +++++++ cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 180 +++++++++ cli/bpmetadata/schema/bpmetadataschema.json | 224 +++++++----- cli/bpmetadata/types.go | 29 +- cli/bpmetadata/types_ui.go | 24 +- cli/bpmetadata/types_ui_ext.go | 2 +- .../schema/invalid-metadata-w-enum.yaml | 17 +- .../bpmetadata/schema/invalid-metadata.yaml | 4 +- .../schema/valid-metadata-w-enum.yaml | 19 +- .../bpmetadata/schema/valid-metadata.yaml | 11 +- 14 files changed, 856 insertions(+), 144 deletions(-) create mode 100644 cli/bpmetadata/proto/bpmetadata.proto create mode 100644 cli/bpmetadata/proto/bpmetadata_ui.proto create mode 100644 cli/bpmetadata/proto/bpmetadata_ui_ext.proto diff --git a/.gitignore b/.gitignore index ed90cb5fd8f..cc9750e96f3 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ config-connector/tests/testcases/environments.yaml .vscode *.pyc schema +cli/bpmetadata/proto/out* diff --git a/cli/Makefile b/cli/Makefile index 15a5633cf5c..56799bc9f92 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v0.9.4 +VERSION=v1.0.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 52f94bdcb76..643e789accd 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -172,7 +172,7 @@ func generateMetadataForBpPath(bpPath string) error { func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (*BlueprintMetadata, error) { // verfiy that the blueprint path is valid & get repo details - repoDetails, err := getRepoDetailsByPath(bpPath, bpMetadataObj.Spec.Source) + repoDetails, err := getRepoDetailsByPath(bpPath, bpMetadataObj.Spec.Info.Source) if err != nil { return nil, err } @@ -200,13 +200,13 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* } // create blueprint info - err = bpMetadataObj.Spec.BlueprintInfo.create(bpPath, readmeContent) + err = bpMetadataObj.Spec.Info.create(bpPath, readmeContent) if err != nil { return nil, fmt.Errorf("error creating blueprint info: %w", err) } // create blueprint interfaces i.e. variables & outputs - err = bpMetadataObj.Spec.BlueprintInterface.create(bpPath) + err = bpMetadataObj.Spec.Interfaces.create(bpPath) if err != nil { return nil, fmt.Errorf("error creating blueprint interfaces: %w", err) } @@ -219,10 +219,10 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error creating blueprint requirements: %w", err) } - bpMetadataObj.Spec.BlueprintRequirements = *requirements + bpMetadataObj.Spec.Requirements = *requirements // create blueprint content i.e. documentation, icons, etc. - bpMetadataObj.Spec.BlueprintContent.create(bpPath, repoDetails.Source.RootPath, readmeContent) + bpMetadataObj.Spec.Content.create(bpPath, repoDetails.Source.RootPath, readmeContent) return bpMetadataObj, nil } @@ -242,15 +242,15 @@ func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMeta }, } - if bpDisp.Spec.BlueprintInfo.Title == "" { - bpDisp.Spec.BlueprintInfo.Title = bpCore.Spec.BlueprintInfo.Title + if bpDisp.Spec.Info.Title == "" { + bpDisp.Spec.Info.Title = bpCore.Spec.Info.Title } - if bpDisp.Spec.BlueprintInfo.Source == nil { - bpDisp.Spec.BlueprintInfo.Source = bpCore.Spec.BlueprintInfo.Source + if bpDisp.Spec.Info.Source == nil { + bpDisp.Spec.Info.Source = bpCore.Spec.Info.Source } - buildUIInputFromVariables(bpCore.Spec.BlueprintInterface.Variables, &bpDisp.Spec.BlueprintUI.Input) + buildUIInputFromVariables(bpCore.Spec.Interfaces.Variables, &bpDisp.Spec.UI.Input) return bpDisp, nil } diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto new file mode 100644 index 00000000000..10758517906 --- /dev/null +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -0,0 +1,343 @@ +syntax = "proto3"; + +package google.cloud.config.bpmetadata; + +import "bpmetadata_ui.proto"; + +option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; + +message BlueprintMetadataSpec { + + // BlueprintInfo defines the basic information of the blueprint. + BlueprintInfo info = 1; + + // BlueprintContent defines the detail for blueprint related content such as + // related documentation, diagrams, examples etc. + BlueprintContent content = 2; + + // BlueprintInterface defines the input and output variables for the blueprint. + BlueprintInterface interfaces = 3; + + // BlueprintRequirements defines the roles required and the associated services + // that need to be enabled to provision blueprint resources. + BlueprintRequirements requirements = 4; + + // BlueprintUI defines the user interface for the blueprint. + BlueprintUI ui = 5; +} + +// BlueprintInfo defines the basic information of the blueprint. +message BlueprintInfo { + // Title for the blueprint. + // Autogenerated: First H1 text in readme.md. + string title = 1; + + // Blueprint source location and source type. + // Autogen details in BlueprintRepoDetail. + BlueprintRepoDetail source = 2; + + // Last released semantic version for the packaged blueprint. + // Autogenerated: From the `module_name` attribute of the `provider_meta "google"` block. + // E.g. + // provider_meta "google" { + // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" + // } + string version = 3; + + // Actuation tool e.g. Terraform and its required version. + // Autogen details in BlueprintActuationTool. + BlueprintActuationTool actuation_tool = 4; + + // Various types of descriptions associated with the blueprint. + // Autogen details in BlueprintDescription. + BlueprintDescription description = 5; + + // Path to an image representing the icon for the blueprint. + // Will be set as "assets/icon.png", if present. Otherwise, it + // can be manually authored. + string icon = 6; + + // The time estimate for configuring and deploying the blueprint. + // Autogen details in BlueprintTimeEstimate. + BlueprintTimeEstimate deployment_duration = 7; + + // The cost estimate for the blueprint based on preconfigured variables. + // Autogen details in BlueprintCostEstimate. + BlueprintCostEstimate cost_estimate = 8; + + // A list of GCP cloud products used in the blueprint. + // Manually authored. + repeated BlueprintCloudProduct cloud_products = 9; + + // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. + // Manually authored. + repeated BlueprintQuotaDetail quota_details = 10; + + // Details on the author producing the blueprint. + // Manually authored. + BlueprintAuthor author = 11; + + // Details on software installed as part of the blueprint. + // Manually authored. + repeated BlueprintSoftwareGroup software_groups = 12; + + // Support offered, if any for the blueprint. + // Manually authored. + BlueprintSupport support_info = 13; +} + +// BlueprintContent defines the detail for blueprint related content such as +// related documentation, diagrams, examples etc. +message BlueprintContent { + // Diagrams are manually entered. + BlueprintArchitecture architecture = 1; + repeated BlueprintDiagram diagrams = 2; + repeated BlueprintListContent documentation = 3; + repeated BlueprintMiscContent sub_blueprints = 4; + repeated BlueprintMiscContent examples = 5; +} + +// BlueprintInterface defines the input and output variables for the blueprint. +message BlueprintInterface { + repeated BlueprintVariable variables = 1; + // VariableGroups are manually entered. + repeated BlueprintVariableGroup variable_groups = 2; + repeated BlueprintOutput outputs = 3; +} + +// BlueprintRequirements defines the roles required and the associated services +// that need to be enabled to provision blueprint resources. +message BlueprintRequirements { + repeated BlueprintRoles roles = 1; + repeated string services = 2; +} + +// BlueprintUI defines the user interface for the blueprint. +message BlueprintUI { + // The top-level input section that defines the list of variables and + // their sections on the deployment page. + BlueprintUIInput input = 1; + + // The top-level section for listing runtime (or blueprint output) information + // i.e. the console URL for the VM or a button to ssh into the VM etc based on. + BlueprintUIOutput runtime = 2; +} + +message BlueprintRepoDetail { + // Autogenerated: URL from the .git dir. + // Can be manually overridden with a custom URL if needed. + string repo = 1; + + // Set as "git" for now until more types are supported. + string source_type = 2; +} + +// BlueprintActuationTool defines the actuation tool used to provision the blueprint. +message BlueprintActuationTool { + // Set as "Terraform" for now until more flavors are supported. + string flavor = 1; + + // Required version for the actuation tool. + // Autogenerated: For Terraform this is the `required_version` set in + // `terraform` block. E.g. + // terraform { + // required_version = ">= 0.13" + // } + string version = 2; +} + +// BlueprintDescription defines the description of the blueprint. +message BlueprintDescription { + // Autogenerated: All types of descriptions are set with the markdown content + // immediately after each type's heading declaration in readme.md. + + // Autogenerated: Markdown after "### Tagline". + string tagline = 1; + + // Autogenerated: Markdown after "### Detailed". + string detailed = 2; + + // Autogenerated: Markdown after "### PreDeploy". + string pre_deploy = 3; + + // Autogenerated: Markdown after "### Html". + string html = 4; + + // Autogenerated: Markdown after "### EulaUrls". + repeated string eula_urls = 5; + + // Autogenerated: Markdown after "### Architecture" + // Deprecated. Use BlueprintContent.Architecture instead. + repeated string architecture = 6; +} + +// A time estimate in secs required for configuring and deploying the blueprint. +message BlueprintTimeEstimate { + // Autogenerated: Set using the content defined under "### DeploymentTime" E.g. + // ### DeploymentTime + // - Configuration: X secs + // - Deployment: Y secs + int32 configurationSecs = 1; + int32 deploymentSecs = 2; +} + +// The cost estimate for the blueprint based on preconfigured variables. +message BlueprintCostEstimate { + // Autogenerated: Set using the content defined under "### Cost" as a link + // with a description E.g. + // ### Cost + // [View cost details](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) + string description = 1; + string url = 2; +} + +// A GCP cloud product used in the blueprint. +// Manually authored. +message BlueprintCloudProduct { + // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") + // product used in the blueprint. + string product_id = 1; + + // Url for the product. + string page_url = 2; + + // A label string for the product, if it is not an integrated GCP product. + // E.g. "Data Studio" + string label = 3; +} + +// QuotaResourceType defines the type of resource a quota is applied to. +enum QuotaResourceType { + QUOTARESOURCETYPE_UNDEFINED = 0; + GCE_INSTANCE = 1; + GCE_DISK = 2; +} + +// BlueprintQuotaDetail defines the quota details for a blueprint. +message BlueprintQuotaDetail { + // DynamicVariable, if provided, associates the provided input variable + // with the corresponding resource and quota type. In its absence, the quota + // detail is assumed to be fixed. + string dynamic_variable = 1; + + // ResourceType is the type of resource the quota will be applied to i.e. + // GCE Instance or Disk etc. + QuotaResourceType resource_type = 2; + + // QuotaType is a key/value pair of the actual quotas and their corresponding + // values. Valid keys for quota_type can be: + // MACHINE_TYPE, + // CPUs, + // DISK_TYPE OR + // SIZE_GB. + map quota_type = 3; +} + +// BlueprintAuthor defines the author of a blueprint. +message BlueprintAuthor { + // Name of template author or organization. + string title = 1; + + // Description of the author. + string description = 2; + + // Link to the author's website. + string url = 3; +} + +// SoftwareGroupType is a string enum representing the different types of software groups. +enum SoftwareGroupType { + // UNSPECIFIED is the default value for SoftwareGroupType. + UNSPECIFIED = 0; + // OS is a software group that represents an operating system. + OS = 1; +} + +// BlueprintSoftwareGroup is a message that represents a group of related software components for the blueprint. +message BlueprintSoftwareGroup { + // Type is the pre-defined software type for this group. + SoftwareGroupType type = 1; + + // Software is a list of software components that belong to this group. + repeated BlueprintSoftware software = 2; +} + +// BlueprintSoftware is a message that represents a description of a piece of a single software component installed by the blueprint. +message BlueprintSoftware { + // Title is the user-visible title for this software component. + string title = 1; + + // Version is the software version for this software component. + string version = 2; + + // URL is the link to the development site or marketing page for this software component. + string url = 3; + + // LicenseURL is the link to the license page for this software component. + string license_url = 4; +} + +// BlueprintSupport is a message that represents a description of a support option. +message BlueprintSupport { + // Description is the description of the support option. + string description = 1; + + // URL is the link to the page providing this support option. + string url = 2; + + // Entity is the organization or group that provides the support option. + string entity = 3; + + // ShowSupportId indicates whether to show the customer's support ID. + bool show_support_id = 4; +} + +message BlueprintMiscContent { + string name = 1; + string location = 2; +} + +message BlueprintArchitecture { + string diagram_url = 1; + repeated string description = 2; +} + +message BlueprintDiagram { + string name = 1; + string alt_text = 2; + string description = 3; +} + +message BlueprintListContent { + string title = 1; + string url = 2; +} + +message BlueprintVariable { + string name = 1; + string description = 2; + string var_type = 3; + oneof default { + string string_default = 4; + int64 int64_default = 5; + bool bool_default = 6; + } + bool required = 7; +} + +// BlueprintVariableGroup is manually entered. +message BlueprintVariableGroup { + string name = 1; + string description = 2; + repeated string variables = 3; +} + +message BlueprintOutput { + string name = 1; + string description = 2; +} + +message BlueprintRoles { + string level = 1; + repeated string roles = 2; +} diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto new file mode 100644 index 00000000000..e22545420c6 --- /dev/null +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -0,0 +1,124 @@ +syntax = "proto3"; + +package google.cloud.config.bpmetadata; + +import "bpmetadata_ui_ext.proto"; + +option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; + +message BlueprintUIInput { + + // variables is a map defining all inputs on the UI. + map display_variables = 1; + + // Sections is a generic structure for grouping inputs together. + repeated DisplaySection display_sections = 2; +} + +message DisplayVariable { + // The variable name from the corresponding standard metadata file. + string name = 1; + + // Visible title for the variable on the UI. If not present, + // Name will be used for the Title. + string title = 2; + + // A flag to hide or show the variable on the UI. + bool visible = 3; + + // Variable tooltip. + string tooltip = 4; + + // Placeholder text (when there is no default). + string placeholder = 5; + + // Text describing the validation rules for the variable based + // on a regular expression. + // Typically shown after an invalid input. + string regex_validation = 6; + + // Minimum no. of inputs for the input variable. + int32 min_items = 7; + + // Max no. of inputs for the input variable. + int32 max_items = 8; + + // Minimum length for string values. + int32 min_length = 9; + + // Max length for string values. + int32 max_length = 10; + + // Minimum value for numeric types. + int32 min = 11; + + // Max value for numeric types. + int32 max = 12; + + // The name of a section to which this variable belongs. + // variables belong to the root section if this field is + // not set. + string section = 13; + + // UI extension associated with the input variable. + // E.g. for rendering a GCE machine type selector: + // + // x-googleProperty: + // type: GCE_MACHINE_TYPE + // zoneProperty: myZone + // gceMachineType: + // minCpu: 2 + // minRamGb: 6 + GooglePropertyExtension x_google_property = 14; +} + +message DisplaySection { + // The name of the section, referenced by DisplayVariable.Section + // Section names must be unique. + string name = 1; + + // Section title. + // If not provided, name will be used instead. + string title = 2; + + // Section tooltip. + string tooltip = 3; + + // Section subtext. + string subtext = 4; + + // The name of the parent section (if parent is not the root section). + string parent = 5; +} + +message BlueprintUIOutput { + // Short message to be displayed while the blueprint is deploying. + // At most 128 characters. + string output_message = 1; + + // List of suggested actions to take. + repeated UIActionItem suggested_actions = 2; +} + +// An item appearing in a list of required or suggested steps. +message UIActionItem { + // Summary heading for the item. + // Required. Accepts string expressions. At most 64 characters. + string heading = 1; + + // Longer description of the item. + // At least one description or snippet is required. + // Accepts string expressions. HTML <a href> + // tags only. At most 512 characters. + string description = 2; + + // Fixed-width formatted code snippet. + // At least one description or snippet is required. + // Accepts string expressions. UTF-8 text. At most 512 characters. + string snippet = 3; + + // If present, this expression determines whether the item is shown. + // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP + // where `externalIP` is the output. + string show_if = 4; +} diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto new file mode 100644 index 00000000000..27ce57d4aba --- /dev/null +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -0,0 +1,180 @@ +syntax = "proto3"; + +package google.cloud.config.bpmetadata; + +option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; + +// ExtensionType specifies the type of extension. +enum ExtensionType { + // EXTENSIONTYPE_UNDEFINED indicates that the extension type is undefined. + EXTENSIONTYPE_UNDEFINED = 0; + + // General formats. + EMAIL_ADDRESS = 1; + MULTI_LINE_STRING = 2; + + // GCE related. + GCE_DISK_IMAGE = 3; + GCE_DISK_TYPE = 4; + GCE_DISK_SIZE = 5; + GCE_MACHINE_TYPE = 6; + GCE_NETWORK = 7; + GCE_ZONE = 8; + GCE_SUBNETWORK = 9; + GCE_REGION = 10; + GCE_GPU_TYPE = 11; + GCE_GPU_COUNT = 12; + GCE_EXTERNAL_IP = 13; + GCE_IP_FORWARDING = 14; + GCE_FIREWALL = 15; + GCE_FIREWALL_RANGE = 16; + GCE_GENERIC_RESOURCE = 17; + + // GCS related. + GCS_BUCKET = 18; + + // IAM related. + IAM_SERVICE_ACCOUNT = 19; +} + +// An extension for variables defined as part of DisplayVariable. The +// extension defines Google-specifc metadata necessary for choosing an +// appropriate input widget or adding restrictions to GCP-specific resources. +message GooglePropertyExtension { + // Type specifies the type of extension. + ExtensionType type = 1; + + // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to + // determine the set of allowable values. This field references another + // property from the schema, which must have type GCE_ZONE. + string zone_property = 2; + + // Property-specific extensions. + GCEMachineTypeExtension gce_machine_type = 3; + GCEDiskSizeExtension gce_disk_size = 4; + GCESubnetworkExtension gce_subnetwork = 5; + GCEGenericResourceExtension gce_resource = 6; + GCEGPUTypeExtension gce_gpu_type = 7; + GCEGPUCountExtension gce_gpu_count = 8; + GCENetworkExtension gce_network = 9; + GCEExternalIPExtension gce_external_ip = 10; + GCEIPForwardingExtension gce_ip_forwarding = 11; + GCEFirewallExtension gce_firewall = 12; + GCEFirewallRangeExtension gce_firewall_range = 13; + GCELocationExtension gce_zone = 14; + GCELocationExtension gce_region = 15; + IAMServiceAccountExtension iam_service_account = 16; +} + +// GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. +message GCELocationExtension { + // AllowlistedZones is a list of zones that are allowed for the resource. + repeated string allowlisted_zones = 1; + + // AllowlistedRegions is a list of regions that are allowed for the resource. + repeated string allowlisted_regions = 2; +} + +// GCEMachineTypeExtension specifies a machine type extension for a GCE resource. +message GCEMachineTypeExtension { + // Minimum cpu. Used to filter the list of selectable machine types. + int32 min_cpu = 1; + + // Minimum ram. Used to filter the list of selectable machine types. + int32 min_ram_gb = 2; + + // If true, custom machine types will not be selectable. + // More info: + // https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type + bool disallow_custom_machine_types = 3; +} + +// GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. +message GCEGPUTypeExtension { + // MachineType is the name of the machine type that the GPU is attached to. + string machine_type = 1; + + // GPUType is the type of GPU that is attached to the machine. + string gpu_type = 2; +} + +// GCEGPUCountExtension specifies the number of GPUs that should be attached to a machine. +message GCEGPUCountExtension { + // This field references another variable from the schema, + // which must have type GCEMachineType. + string machine_type_variable = 1; +} + +// GCEDiskSizeExtension specifies the size of a disk for a GCE resource. +message GCEDiskSizeExtension { + // The allowable range of disk sizes depends on the disk type. This field + // references another variable from the schema, which must have type GCEDiskType. + string disk_type_variable = 1; +} + +// GCENetworkExtension specifies a network extension for a GCE resource. +message GCENetworkExtension { + // AllowSharedVpcs indicates this solution can receive + // shared VPC selflinks (fully qualified compute links). + bool allow_shared_vpcs = 1; + + // Used to indicate to which machine type this network interface will be + // attached to. + string machine_type_variable = 2; +} + +// ExternalIPType specifies the type of external IP address. +enum ExternalIPType { + // EPHEMERAL indicates that the external IP address is ephemeral. + EPHEMERAL = 0; + // STATIC indicates that the external IP address is static. + STATIC = 1; +} + +message GCEExternalIPExtension { + // NetworkVariable is the name of the network variable that the external IP address belongs to. + string network_variable = 1; + + // Type specifies the type of external IP address. Defaults to EPHEMERAL if not specified. + ExternalIPType type = 2; +} + +// GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. +message GCEIPForwardingExtension { + // NetworkVariable is the name of the network variable that the IP forwarding belongs to. + string network_variable = 1; + + // NotConfigurable specifies whether the IP forwarding is configurable. Defaults to false if not specified. + bool not_configurable = 2; +} + +message GCEFirewallExtension { + // NetworkVariable is used to indicate the network variable in the schema + // this external IP belongs to. + string network_variable = 1; +} + +message GCEFirewallRangeExtension { + // FirewallVariable is used to indicate the firewall variable with the type + // GCEFirewall in the schema to which this firewall range belongs to. + string firewall_variable = 1; +} + +message GCESubnetworkExtension { + // Subnetwork variable requires a network context in order to determine the + // set of available subnetworks. This field references another + // variable from the schema, which must have type GCENetwork. + string network_variable = 1; +} + +message GCEGenericResourceExtension { + // GCE resource type to be fetched. This field references another + // property from the schema, which must have type GCEGenericResource. + string resource_variable = 1; +} + +message IAMServiceAccountExtension { + // List of IAM roles that to grant to a new SA, or the roles to filter + // existing SAs with. + repeated string roles = 1; +} diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index 3b524abc49f..51bca4cfe14 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -70,6 +70,39 @@ "pageUrl" ] }, + "BlueprintContent": { + "properties": { + "architecture": { + "$ref": "#/$defs/BlueprintArchitecture" + }, + "diagrams": { + "items": { + "$ref": "#/$defs/BlueprintDiagram" + }, + "type": "array" + }, + "documentation": { + "items": { + "$ref": "#/$defs/BlueprintListContent" + }, + "type": "array" + }, + "subBlueprints": { + "items": { + "$ref": "#/$defs/BlueprintMiscContent" + }, + "type": "array" + }, + "examples": { + "items": { + "$ref": "#/$defs/BlueprintMiscContent" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, "BlueprintCostEstimate": { "properties": { "description": { @@ -134,43 +167,7 @@ "name" ] }, - "BlueprintListContent": { - "properties": { - "title": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "title" - ] - }, - "BlueprintMetadata": { - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "$ref": "#/$defs/ObjectMeta" - }, - "spec": { - "$ref": "#/$defs/BlueprintMetadataSpec" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "spec" - ] - }, - "BlueprintMetadataSpec": { + "BlueprintInfo": { "properties": { "title": { "type": "string" @@ -219,34 +216,17 @@ }, "supportInfo": { "$ref": "#/$defs/BlueprintSupport" - }, - "architecture": { - "$ref": "#/$defs/BlueprintArchitecture" - }, - "diagrams": { - "items": { - "$ref": "#/$defs/BlueprintDiagram" - }, - "type": "array" - }, - "documentation": { - "items": { - "$ref": "#/$defs/BlueprintListContent" - }, - "type": "array" - }, - "subBlueprints": { - "items": { - "$ref": "#/$defs/BlueprintMiscContent" - }, - "type": "array" - }, - "examples": { - "items": { - "$ref": "#/$defs/BlueprintMiscContent" - }, - "type": "array" - }, + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "title", + "source" + ] + }, + "BlueprintInterface": { + "properties": { "variables": { "items": { "$ref": "#/$defs/BlueprintVariable" @@ -264,33 +244,68 @@ "$ref": "#/$defs/BlueprintOutput" }, "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, + "BlueprintListContent": { + "properties": { + "title": { + "type": "string" }, - "roles": { - "items": { - "$ref": "#/$defs/BlueprintRoles" - }, - "type": "array" + "url": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "title" + ] + }, + "BlueprintMetadata": { + "properties": { + "apiVersion": { + "type": "string" }, - "services": { - "items": { - "type": "string" - }, - "type": "array" + "kind": { + "type": "string" }, - "input": { - "$ref": "#/$defs/BlueprintUIInput" + "metadata": { + "$ref": "#/$defs/ObjectMeta" }, - "runtime": { - "$ref": "#/$defs/BlueprintUIOutput" + "spec": { + "$ref": "#/$defs/BlueprintMetadataSpec" } }, "additionalProperties": false, "type": "object", "required": [ - "title", - "source" + "spec" ] }, + "BlueprintMetadataSpec": { + "properties": { + "info": { + "$ref": "#/$defs/BlueprintInfo" + }, + "content": { + "$ref": "#/$defs/BlueprintContent" + }, + "interfaces": { + "$ref": "#/$defs/BlueprintInterface" + }, + "requirements": { + "$ref": "#/$defs/BlueprintRequirements" + }, + "ui": { + "$ref": "#/$defs/BlueprintUI" + } + }, + "additionalProperties": false, + "type": "object" + }, "BlueprintMiscContent": { "properties": { "name": { @@ -365,6 +380,24 @@ "sourceType" ] }, + "BlueprintRequirements": { + "properties": { + "roles": { + "items": { + "$ref": "#/$defs/BlueprintRoles" + }, + "type": "array" + }, + "services": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, "BlueprintRoles": { "properties": { "level": { @@ -457,6 +490,18 @@ "additionalProperties": false, "type": "object" }, + "BlueprintUI": { + "properties": { + "input": { + "$ref": "#/$defs/BlueprintUIInput" + }, + "runtime": { + "$ref": "#/$defs/BlueprintUIOutput" + } + }, + "additionalProperties": false, + "type": "object" + }, "BlueprintUIInput": { "properties": { "variables": { @@ -562,7 +607,7 @@ "type": "string" }, "title": { - "type": "boolean" + "type": "string" }, "visible": { "type": "boolean" @@ -576,6 +621,18 @@ "regexValidation": { "type": "string" }, + "minItems": { + "type": "integer" + }, + "maxItems": { + "type": "integer" + }, + "minLength": { + "type": "integer" + }, + "maxLength": { + "type": "integer" + }, "min": { "type": "integer" }, @@ -585,9 +642,6 @@ "section": { "type": "string" }, - "resourceImpact": { - "type": "boolean" - }, "x-googleProperty": { "$ref": "#/$defs/GooglePropertyExtension" } diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 16dbe94d184..5f8c8a90299 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -14,11 +14,11 @@ type BlueprintMetadata struct { // All immediate types within BlueprintMetadataSpec are inline and will // not appear as nodes in metadata. type BlueprintMetadataSpec struct { - BlueprintInfo `json:",inline,omitempty" yaml:",inline,omitempty"` - BlueprintContent `json:",inline,omitempty" yaml:",inline,omitempty"` - BlueprintInterface `json:",inline,omitempty" yaml:",inline,omitempty"` - BlueprintRequirements `json:",inline,omitempty" yaml:",inline,omitempty"` - BlueprintUI `json:",inline,omitempty" yaml:",inline,omitempty"` + Info BlueprintInfo `json:"info,omitempty" yaml:"info,omitempty"` + Content BlueprintContent `json:"content,omitempty" yaml:"content,omitempty"` + Interfaces BlueprintInterface `json:"interfaces,omitempty" yaml:"interfaces,omitempty"` + Requirements BlueprintRequirements `json:"requirements,omitempty" yaml:"requirements,omitempty"` + UI BlueprintUI `json:"ui,omitempty" yaml:"ui,omitempty"` } type BlueprintInfo struct { @@ -30,7 +30,7 @@ type BlueprintInfo struct { // Autogen details in BlueprintRepoDetail. Source *BlueprintRepoDetail `json:"source" yaml:"source"` - // Last released semantic version for the packaged blueprint. + // Last released semantic version for the packaged blueprint. // Autogenerated: From the `module_name` attribute of the `provider_meta "google"` block. // E.g. // provider_meta "google" { @@ -63,7 +63,7 @@ type BlueprintInfo struct { // Manually authored. CloudProducts []BlueprintCloudProduct `json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` - // A configuration of fixed and dymanic GCP quotas that apply to the soltuion. + // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. // Manually authored. QuotaDetails []BlueprintQuotaDetail `json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` @@ -71,7 +71,7 @@ type BlueprintInfo struct { // Manually authored. Author BlueprintAuthor `json:"author,omitempty" yaml:"author,omitempty"` - // Details on sotfware installed as part of the blueprint. + // Details on software installed as part of the blueprint. // Manually authored. SoftwareGroups []BlueprintSoftwareGroup `json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` @@ -82,7 +82,7 @@ type BlueprintInfo struct { type BlueprintRepoDetail struct { // Autogenerated: URL from the .git dir. - // Can be manually overriden with a custom URL if needed. + // Can be manually overridden with a custom URL if needed. Repo string `json:"repo" yaml:"repo"` // Set as "git" for now until more types are supported. @@ -104,7 +104,7 @@ type BlueprintActuationTool struct { type BlueprintDescription struct { // Autogenerated: All types of descriptions are set with the markdown content - // immediately after the each type's heading declaration in readme.md. + // immediately after each type's heading declaration in readme.md. // Autogenerated: Markdown after "### Tagline". Tagline string `json:"tagline,omitempty" yaml:"tagline,omitempty"` @@ -164,8 +164,9 @@ type BlueprintCloudProduct struct { type QuotaResourceType string const ( - GCEInstance QuotaResourceType = "GCE_INSTANCE" - GCEDisk QuotaResourceType = "GCE_DISK" + QuotaResTypeUndefined QuotaResourceType = "QUOTARESOURCETYPE_UNDEFINED" + GCEInstance QuotaResourceType = "GCE_INSTANCE" + GCEDisk QuotaResourceType = "GCE_DISK" ) type QuotaType string @@ -187,7 +188,7 @@ type BlueprintQuotaDetail struct { // GCE Instance or Disk etc. ResourceType QuotaResourceType `json:"type" yaml:"type" jsonschema:"enum=GCE_INSTANCE,enum=GCE_DISK"` - // QuotaType is a key/value pair of the actual quotas an their corresponding + // QuotaType is a key/value pair of the actual quotas and their corresponding // values. QuotaType map[QuotaType]string `json:"quotaType" yaml:"quotaType"` } @@ -270,7 +271,7 @@ type BlueprintInterface struct { Outputs []BlueprintOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` } -// BlueprintRequirements defines the roles required and the assocaited services +// BlueprintRequirements defines the roles required and the associated services // that need to be enabled to provision blueprint resources. type BlueprintRequirements struct { Roles []BlueprintRoles `json:"roles,omitempty" yaml:"roles,omitempty"` diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index 4a9edf4a4fa..649a43fbe64 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -29,7 +29,7 @@ type DisplayVariable struct { // Visible title for the variable on the UI. If not present, // Name will be used for the Title. - Title bool `json:"title,omitempty" yaml:"title,omitempty"` + Title string `json:"title,omitempty" yaml:"title,omitempty"` // A flag to hide or show the variable on the UI. Visible bool `json:"visible,omitempty" yaml:"visible,omitempty"` @@ -45,10 +45,22 @@ type DisplayVariable struct { // Typically shown after an invalid input. RegExValidation string `json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` - // Minimum no. of values for the input variable. + // Minimum no. of inputs for the input variable. + MinimumItems int `json:"minItems,omitempty" yaml:"minItems,omitempty"` + + // Max no. of inputs for the input variable. + MaximumItems int `json:"maxItems,omitempty" yaml:"maxItems,omitempty"` + + // Minimum length for string values. + MinimumLength int `json:"minLength,omitempty" yaml:"minLength,omitempty"` + + // Max length for string values. + MaximumLength int `json:"maxLength,omitempty" yaml:"maxLength,omitempty"` + + // Minimum value for numeric types. Minimum int `json:"min,omitempty" yaml:"min,omitempty"` - // Max no. of values for the input variable. + // Max value for numeric types. Maximum int `json:"max,omitempty" yaml:"max,omitempty"` // The name of a section to which this variable belongs. @@ -56,12 +68,6 @@ type DisplayVariable struct { // not set. Section string `json:"section,omitempty" yaml:"section,omitempty"` - // Designates that this variable has no impact on the costs, quotas, or - // permissions associated with the resources in the expanded deployment. - // Typically true for application-specific variables that do not affect the - // size or number of instances in the deployment. - ResourceImpact bool `json:"resourceImpact,omitempty" yaml:"resourceImpact,omitempty"` - // UI extension associated with the input variable. // E.g. for rendering a GCE machine type selector: // diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go index 27fa50b8a72..1c367b53c7c 100644 --- a/cli/bpmetadata/types_ui_ext.go +++ b/cli/bpmetadata/types_ui_ext.go @@ -3,7 +3,7 @@ package bpmetadata type ExtensionType string const ( - Undefined ExtensionType = "UNDEFINED_TYPE" + ExtTypeUndefined ExtensionType = "EXTENSIONTYPE_UNDEFINED" // General formats. EmailAddress ExtensionType = "EMAIL_ADDRESS" diff --git a/cli/testdata/bpmetadata/schema/invalid-metadata-w-enum.yaml b/cli/testdata/bpmetadata/schema/invalid-metadata-w-enum.yaml index 16fa4db3180..bf22d109545 100644 --- a/cli/testdata/bpmetadata/schema/invalid-metadata-w-enum.yaml +++ b/cli/testdata/bpmetadata/schema/invalid-metadata-w-enum.yaml @@ -3,11 +3,12 @@ kind: BlueprintMetadata metadata: name: terraform-google-module spec: - title: Terraform Google Module - source: - repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git - sourceType: git - quotaDetails: - - type: BAD_ENUM - quotaType: - MACHINE_TYPE: "n1-standard-8" \ No newline at end of file + info: + title: Terraform Google Module + source: + repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git + sourceType: git + quotaDetails: + - type: BAD_ENUM + quotaType: + MACHINE_TYPE: "n1-standard-8" diff --git a/cli/testdata/bpmetadata/schema/invalid-metadata.yaml b/cli/testdata/bpmetadata/schema/invalid-metadata.yaml index 7ea69d0c627..a7624008083 100644 --- a/cli/testdata/bpmetadata/schema/invalid-metadata.yaml +++ b/cli/testdata/bpmetadata/schema/invalid-metadata.yaml @@ -3,5 +3,5 @@ kind: BlueprintMetadata metadata: name: terraform-google-module spec: - title: Terraform Google Module - + info: + title: Terraform Google Module diff --git a/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml b/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml index 85f71016df3..51ca34cbbd5 100644 --- a/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml +++ b/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml @@ -1,13 +1,14 @@ apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: - name: terraform-google-module + name: terraform-google-module spec: - title: Terraform Google Module - source: - repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git - sourceType: git - quotaDetails: - - type: GCE_INSTANCE - quotaType: - MACHINE_TYPE: "n1-standard-8" \ No newline at end of file + info: + title: Terraform Google Module + source: + repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git + sourceType: git + quotaDetails: + - type: GCE_INSTANCE + quotaType: + MACHINE_TYPE: "n1-standard-8" diff --git a/cli/testdata/bpmetadata/schema/valid-metadata.yaml b/cli/testdata/bpmetadata/schema/valid-metadata.yaml index ea7d07ac07c..1df71932122 100644 --- a/cli/testdata/bpmetadata/schema/valid-metadata.yaml +++ b/cli/testdata/bpmetadata/schema/valid-metadata.yaml @@ -1,9 +1,10 @@ apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: - name: terraform-google-module + name: terraform-google-module spec: - title: Terraform Google Module - source: - repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git - sourceType: git + info: + title: Terraform Google Module + source: + repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git + sourceType: git From 8b2a0f9c2716e1c7da0de73073d73fc8d6c43e1a Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 25 Apr 2023 09:22:51 -0700 Subject: [PATCH 0329/1371] fix: passes arg to gen_metadata and fixes the comparison (#1494) --- infra/build/Makefile | 2 +- .../developer-tools/build/scripts/task_helper_functions.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d0a7149a184..19fce58c8bb 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.14.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 64ae5557dc9..a2e8a5ed510 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -311,14 +311,14 @@ function generate_docs() { echo "ENABLE_BPMETADATA not set to 1. Skipping metadata generation." return 0 fi - generate_metadata + generate_metadata $1 } function generate_metadata() { echo "Generating blueprint metadata" arg=$1 # check if metadata.display.yaml was requested - if [ arg -eq "display" ]; then + if [ $arg = "display" ]; then cft blueprint metadata -d else cft blueprint metadata From 3610dd8519d107657ad2f3c05bf27a4df9e66a5b Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 25 Apr 2023 15:20:55 -0700 Subject: [PATCH 0330/1371] fix: updates annotation tag for author field (#1495) --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 4 +++ cli/bpmetadata/display_test.go | 18 ++++------- cli/bpmetadata/proto/bpmetadata_ui.proto | 2 +- cli/bpmetadata/repo.go | 11 +++++++ cli/bpmetadata/repo_test.go | 33 +++++++++++++++++++++ cli/bpmetadata/schema/bpmetadataschema.json | 6 ++-- cli/bpmetadata/types.go | 5 +++- cli/bpmetadata/types_ui.go | 2 +- 9 files changed, 64 insertions(+), 19 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 56799bc9f92..d6542734207 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.0.0 +VERSION=v1.0.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 643e789accd..0d7ceffddcc 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -272,6 +272,10 @@ func (i *BlueprintInfo) create(bpPath string, readmeContent []byte) error { SourceType: "git", } + if dir := getBpSubmoduleName(bpPath); dir != "" { + i.Source.dir = dir + } + versionInfo, err := getBlueprintVersion(path.Join(bpPath, tfVersionsFileName)) if err == nil { i.Version = versionInfo.moduleVersion diff --git a/cli/bpmetadata/display_test.go b/cli/bpmetadata/display_test.go index 5b0c23730d3..6fed1303a8d 100644 --- a/cli/bpmetadata/display_test.go +++ b/cli/bpmetadata/display_test.go @@ -43,16 +43,13 @@ func TestUIInputFromVariables(t *testing.T) { UIinput: &BlueprintUIInput{ DisplayVariables: map[string]*DisplayVariable{ "test_var_1": { - Name: "test_var_1", - Visible: true, + Name: "test_var_1", }, "test_var_2": { - Name: "test_var_2", - Visible: true, + Name: "test_var_2", }, "test_var_3": { - Name: "test_var_3", - Visible: true, + Name: "test_var_3", }, }, }, @@ -73,16 +70,13 @@ func TestUIInputFromVariables(t *testing.T) { UIinput: &BlueprintUIInput{ DisplayVariables: map[string]*DisplayVariable{ "test_var_1": { - Name: "test_var_1", - Visible: true, + Name: "test_var_1", }, "test_var_2": { - Name: "test_var_2", - Visible: true, + Name: "test_var_2", }, "test_var_3": { - Name: "test_var_3", - Visible: true, + Name: "test_var_3", }, }, }, diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index e22545420c6..9b2f0971f2b 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -24,7 +24,7 @@ message DisplayVariable { string title = 2; // A flag to hide or show the variable on the UI. - bool visible = 3; + bool invisible = 3; // Variable tooltip. string tooltip = 4; diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 8d102873ea2..6733f4add6f 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -63,3 +63,14 @@ func getBpRootPath(bpPath string) string { return bpPath } + +// getBpSubmoduleName gets the submodule name from the blueprint path +// if it lives under the /modules directory +func getBpSubmoduleName(bpPath string) string { + if strings.Contains(bpPath, nestedBpPath) { + i := strings.Index(bpPath, nestedBpPath) + return bpPath[i+9:] + } + + return "" +} diff --git a/cli/bpmetadata/repo_test.go b/cli/bpmetadata/repo_test.go index 73bdc426244..5329d0e0ca9 100644 --- a/cli/bpmetadata/repo_test.go +++ b/cli/bpmetadata/repo_test.go @@ -51,3 +51,36 @@ func TestGetBpRootPath(t *testing.T) { }) } } + +func TestGetBpSubmoduleName(t *testing.T) { + tests := []struct { + name string + path string + want string + }{ + { + name: "simple - no submodules", + path: "testdata/bpmetadata/terraform-google-bp01", + want: "", + }, + { + name: "simple - valid submodule", + path: "testdata/bpmetadata/terraform-google-bp01/modules/submodule-01", + want: "submodule-01", + }, + { + name: "simple - invalid submodule", + path: "testdata/bpmetadata/terraform-google-bp01/foo/submodule-01", + want: "", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := getBpSubmoduleName(tt.path) + if got != tt.want { + t.Errorf("getBpSubmoduleName() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index 51bca4cfe14..04dd96289c8 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -36,7 +36,7 @@ }, "BlueprintAuthor": { "properties": { - "author": { + "title": { "type": "string" }, "description": { @@ -49,7 +49,7 @@ "additionalProperties": false, "type": "object", "required": [ - "author" + "title" ] }, "BlueprintCloudProduct": { @@ -609,7 +609,7 @@ "title": { "type": "string" }, - "visible": { + "invisible": { "type": "boolean" }, "tooltip": { diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 5f8c8a90299..4bec50f3a0e 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -87,6 +87,9 @@ type BlueprintRepoDetail struct { // Set as "git" for now until more types are supported. SourceType string `json:"sourceType" yaml:"sourceType"` + + // optional directory location for a submodule under modules/ + dir string `json:"dir,omitempty" yaml:"dir,omitempty"` } type BlueprintActuationTool struct { @@ -195,7 +198,7 @@ type BlueprintQuotaDetail struct { type BlueprintAuthor struct { // Name of template author or organization. - Title string `json:"author" yaml:"author"` + Title string `json:"title" yaml:"title"` // Description of the author. Description string `json:"description,omitempty" yaml:"description,omitempty"` diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index 649a43fbe64..b6ad201deb8 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -32,7 +32,7 @@ type DisplayVariable struct { Title string `json:"title,omitempty" yaml:"title,omitempty"` // A flag to hide or show the variable on the UI. - Visible bool `json:"visible,omitempty" yaml:"visible,omitempty"` + Invisible bool `json:"invisible,omitempty" yaml:"invisible,omitempty"` // Variable tooltip. Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` From 4dcdaf6f8231bbd27625b40f39a6ca8060c7122f Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 26 Apr 2023 09:32:27 -0500 Subject: [PATCH 0331/1371] fix: dev user access (#1497) --- infra/terraform/test-org/org-iam-policy/iam.tf | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index a25b4bbec87..87e4362acde 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -62,9 +62,9 @@ locals { "group:${data.google_secret_manager_secret_version.ba-admin-1.secret_data}", "group:${data.google_secret_manager_secret_version.ba-admin-2.secret_data}", ], - "roles/billing.user" : [ + "roles/billing.user" : concat([ "serviceAccount:${local.ci_gsuite_sa}", - ] + ], jsondecode(data.google_storage_bucket_object_content.ba-users.content)) } } @@ -88,6 +88,11 @@ data "google_secret_manager_secret_version" "ba-admin-2" { secret = "ba-admin-2" } +data "google_storage_bucket_object_content" "ba-users" { + name = "ba-users.json" + bucket = "tf-data-199f44ed6f9a7f22" +} + resource "google_organization_iam_policy" "organization" { org_id = data.terraform_remote_state.org.outputs.org_id policy_data = data.google_iam_policy.admin.policy_data From 056bc183303fa3016ca5f00043de0c07d12b9bad Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 26 Apr 2023 13:46:16 -0500 Subject: [PATCH 0332/1371] fix: Export dir for metadata and regenerate schema (#1498) --- cli/bpmetadata/cmd.go | 2 +- cli/bpmetadata/schema/bpmetadataschema.json | 3 +++ cli/bpmetadata/types.go | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 0d7ceffddcc..0498d04af74 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -273,7 +273,7 @@ func (i *BlueprintInfo) create(bpPath string, readmeContent []byte) error { } if dir := getBpSubmoduleName(bpPath); dir != "" { - i.Source.dir = dir + i.Source.Dir = dir } versionInfo, err := getBlueprintVersion(path.Join(bpPath, tfVersionsFileName)) diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index 04dd96289c8..42ae0d3a446 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -371,6 +371,9 @@ }, "sourceType": { "type": "string" + }, + "dir": { + "type": "string" } }, "additionalProperties": false, diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 4bec50f3a0e..977a5b4781d 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -88,8 +88,8 @@ type BlueprintRepoDetail struct { // Set as "git" for now until more types are supported. SourceType string `json:"sourceType" yaml:"sourceType"` - // optional directory location for a submodule under modules/ - dir string `json:"dir,omitempty" yaml:"dir,omitempty"` + // optional directory location for a submodule + Dir string `json:"dir,omitempty" yaml:"dir,omitempty"` } type BlueprintActuationTool struct { From 80757e84b79900a5f90857b74d17ee42471dc57a Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Thu, 27 Apr 2023 15:17:42 -0700 Subject: [PATCH 0333/1371] fix: minor doc typo for bpmetadata (#1496) --- cli/Makefile | 2 +- cli/bpmetadata/doc.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index d6542734207..10896a3383e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.0.1 +VERSION=v1.0.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/doc.go b/cli/bpmetadata/doc.go index ec2e6b3b067..78eab553da1 100644 --- a/cli/bpmetadata/doc.go +++ b/cli/bpmetadata/doc.go @@ -25,9 +25,9 @@ // // # Generating metadata for a Terraform package // -// Prerequisite: The Terraform package should conform to the folder structure defined by the -// [CFT Module Template]. A vanilla package can be generated using `cookiecutter` as explained in -// the CFT Module Template's documentation. +// Prerequisite: The Terraform package should conform to the folder structure defined by the +// [CFT Module Template]. A vanilla package can be generated using `cookiecutter` as explained in +// the CFT Module Template's documentation. // // Generate metadata using the CLI by pointing the CLI to the root of the Terraform package as: // From 57f8aa9e248e2f6632b172dd1dd5a2209a8d7e1a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 27 Apr 2023 16:15:35 -0700 Subject: [PATCH 0334/1371] chore: lint cleanup (#1504) --- LICENSE | 1 - dm/CI/cft_base_contianer/cft_base_container | 1 - .../ci-comment-build-trigger-function/function_source/main.py | 4 +++- 3 files changed, 3 insertions(+), 3 deletions(-) delete mode 120000 dm/CI/cft_base_contianer/cft_base_container diff --git a/LICENSE b/LICENSE index f4f87bd4ed6..d6456956733 100644 --- a/LICENSE +++ b/LICENSE @@ -200,4 +200,3 @@ 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. - \ No newline at end of file diff --git a/dm/CI/cft_base_contianer/cft_base_container b/dm/CI/cft_base_contianer/cft_base_container deleted file mode 120000 index 4760512fe10..00000000000 --- a/dm/CI/cft_base_contianer/cft_base_container +++ /dev/null @@ -1 +0,0 @@ -cft_base_container \ No newline at end of file diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py index c18bffd8f25..cbd2e274f64 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# flake8: noqa + import base64 import sys import os @@ -35,7 +37,7 @@ def main(event, context): - """ Triggers a new downstream build based on a PubSub message + """ Triggers a new downstream build based on a PubSub message originating from a parent cloudbuild """ # if cloud build project is not set, exit if not os.getenv('CLOUDBUILD_PROJECT'): From fe158384321b852d5872ce60b94a7aa73f25e804 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 1 May 2023 09:19:51 -0700 Subject: [PATCH 0335/1371] feat: adds metadata validation to lint tests (#1509) --- .../build/scripts/task_helper_functions.sh | 16 ++++++++++++++++ .../developer-tools/build/scripts/test_lint.sh | 2 ++ 2 files changed, 18 insertions(+) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index a2e8a5ed510..c5690a729d2 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -334,6 +334,22 @@ function generate_metadata() { fix_headers } +function check_metadata() { + if [[ "${ENABLE_BPMETADATA:-}" -ne 1 ]]; then + echo "ENABLE_BPMETADATA not set to 1. Skipping metadata validation." + return 0 + fi + + echo "Validating blueprint metadata" + cft blueprint metadata -v + + if [ $? -eq 0 ]; then + echo "Success!" + else + echo "Warning! Unable to validate metadata." + fi +} + function check_tflint() { if [[ "${DISABLE_TFLINT:-}" ]]; then echo "DISABLE_TFLINT set. Skipping tflint check." diff --git a/infra/build/developer-tools/build/scripts/test_lint.sh b/infra/build/developer-tools/build/scripts/test_lint.sh index 40f02f01df0..a992b109b4e 100755 --- a/infra/build/developer-tools/build/scripts/test_lint.sh +++ b/infra/build/developer-tools/build/scripts/test_lint.sh @@ -38,6 +38,7 @@ messages='{ "check_python": "Failed flake8 Python lint check.", "check_tflint": "Failed TFlint check. More details below.", "check_terraform": "Failed Terraform check. More details below." + "check_metadata": "Failed metadata validation check. More details below." }' rval=0 failed_tests=() @@ -50,6 +51,7 @@ tests=( check_python check_tflint check_terraform + check_metadata ) # parse args From 3bb412f763cbf9df45a721a27b4ba31d7480bb97 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 1 May 2023 13:53:05 -0700 Subject: [PATCH 0336/1371] chore: add owners as repo collaborators for CI (#1503) --- infra/terraform/modules/repositories/main.tf | 7 ++++ .../modules/repositories/variables.tf | 6 ++++ .../modules/repositories/versions.tf | 5 ++- infra/terraform/modules/team/main.tf | 35 +++++++++++++++++++ infra/terraform/modules/team/outputs.tf | 19 ++++++++++ infra/terraform/modules/team/variables.tf | 24 +++++++++++++ infra/terraform/modules/team/versions.tf | 24 +++++++++++++ .../test-org/github/.terraform.lock.hcl | 35 +++++++++---------- infra/terraform/test-org/github/protection.tf | 15 +++++++- 9 files changed, 148 insertions(+), 22 deletions(-) create mode 100644 infra/terraform/modules/team/main.tf create mode 100644 infra/terraform/modules/team/outputs.tf create mode 100644 infra/terraform/modules/team/variables.tf create mode 100644 infra/terraform/modules/team/versions.tf diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index 60c3b9e67f5..54bd5905575 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -60,3 +60,10 @@ resource "github_repository_collaborator" "owners" { username = each.value.owner permission = "maintain" } + +resource "github_team_repository" "collaborators" { + for_each = var.team_id == null ? {} : github_repository.repo + repository = each.value.name + team_id = var.team_id + permission = "pull" +} diff --git a/infra/terraform/modules/repositories/variables.tf b/infra/terraform/modules/repositories/variables.tf index 78950234876..63b567a8870 100644 --- a/infra/terraform/modules/repositories/variables.tf +++ b/infra/terraform/modules/repositories/variables.tf @@ -31,3 +31,9 @@ variable "repos_map" { topics = optional(string) })) } + +variable "team_id" { + description = "Team to add as repo collaborators" + type = string + default = null +} diff --git a/infra/terraform/modules/repositories/versions.tf b/infra/terraform/modules/repositories/versions.tf index 7e3dbefe35d..befca592bce 100644 --- a/infra/terraform/modules/repositories/versions.tf +++ b/infra/terraform/modules/repositories/versions.tf @@ -17,9 +17,8 @@ terraform { required_providers { github = { - source = "integrations/github" - # Hold at 5.7 till https://github.com/integrations/terraform-provider-github/pull/1431 - version = "~> 5.7.0" + source = "integrations/github" + version = "~> 5.15" } } } diff --git a/infra/terraform/modules/team/main.tf b/infra/terraform/modules/team/main.tf new file mode 100644 index 00000000000..8b4e5433007 --- /dev/null +++ b/infra/terraform/modules/team/main.tf @@ -0,0 +1,35 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +resource "github_team" "collaborators_team" { + name = "cft_collaborators_ci" + description = "CFT collaborators team for approved CI" + + create_default_maintainer = true +} + +resource "github_team_members" "collaborators" { + team_id = github_team.collaborators_team.id + + dynamic "members" { + for_each = var.users + content { + username = members.value + role = "member" + } + } + +} diff --git a/infra/terraform/modules/team/outputs.tf b/infra/terraform/modules/team/outputs.tf new file mode 100644 index 00000000000..6f7e25f4b1b --- /dev/null +++ b/infra/terraform/modules/team/outputs.tf @@ -0,0 +1,19 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +output "id" { + value = github_team.collaborators_team.id +} diff --git a/infra/terraform/modules/team/variables.tf b/infra/terraform/modules/team/variables.tf new file mode 100644 index 00000000000..7221f3fcd94 --- /dev/null +++ b/infra/terraform/modules/team/variables.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +/****************************************** + Required variables +*******************************************/ + +variable "users" { + description = "list of github users" + type = list(string) +} diff --git a/infra/terraform/modules/team/versions.tf b/infra/terraform/modules/team/versions.tf new file mode 100644 index 00000000000..dc62627037c --- /dev/null +++ b/infra/terraform/modules/team/versions.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +terraform { + required_providers { + github = { + source = "integrations/github" + version = "~> 5.0" + } + } +} diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 4a7eb0344f2..8b465b382ec 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,24 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "5.7.0" - constraints = "~> 5.0, ~> 5.7.0" + version = "5.23.0" + constraints = "~> 5.0, ~> 5.15" hashes = [ - "h1:it8faA/RfAwPrCktB+AELdhqynSEPzEmWzpgrpYmcXE=", - "h1:yxFoLEBm40d/38RN2JB0Aw7uapOrDnh9m8nsDTgI7UI=", - "zh:10dbf885c13f1ebb0cebaa81da2febcdf1cd2aa6d96506fbae46e79c066bd38c", - "zh:1911db0547a5d8bf299747854dec6ba6d11f0122d1706c772ceb0e59c8129e19", - "zh:1dc4cc6c79a7f07c81e92763eb34a85467e365803636bd88f79bc16a4bc76c7e", - "zh:2f205df9bc955d0998f4c84014b5af3c3930c7be1fa9cb08d91c884629b0508b", - "zh:3c636f0497942b00d68ac68fc7813f438a7e7d56519ce429e9f585ac7c827be9", - "zh:51de8660b062d07d799d867e9096e86295e06d04ccca5b15fe2929be63ed9d98", - "zh:530d3a00053cc82fa80a1bf976079f168c1b513c419ce4c6a20e38088de35ba5", - "zh:adcb31e2dd2a2fe4283e7f2c9ebf31f2579fc7618a009ecae717fed6d1d221c8", - "zh:caff9d1d929a63b3f7a0ee16e7b3c2585e8c0684133774909d3b42f7bfedd8c7", - "zh:cf9043b11fd5466c9e27eaeee6c986ddd6cd18cf10375f02f4dbecca49b299ed", - "zh:d7660fb1863890d2031aaa96eda16313a2606bee7563d1b0a4949eb60cb218af", - "zh:dad49e63f5b97379d74e7d1b52a928c49ed04a5180224c3d2977d037a9c918fe", - "zh:dbb39bd68da549f108fbcb76619d7a33eb161ff1bda2202d6486d4c662a6de7a", - "zh:f716229c1623243b9725121e137d1673743392eb2b48dab872f5b42614deac10", + "h1:FSHiqYsBDKUZi5I9q4ozZ59/sMTTQl1GYXeILLZO6oA=", + "zh:006d889fedb143523e2b634478422643d8979b554ff54e8e14985e2ba1e64a55", + "zh:13af3551f5f13ab5558d4d90e8ca4a43fccd0d09aa7dbf04ed8a599ac9aadbf1", + "zh:142144634d525eff5670ac292fd3ed019f504b51974233ecad852cafcc73e2eb", + "zh:168ad7577bc9f181361e5015642dbb030f33387b4a6284b9855861d81f1ec341", + "zh:45aa1df2ccdf2092597507b72197b8e35b2fa651b2338d8b68248f93267f01d6", + "zh:48209af2abf45ac2a8d45b804e0e6c542c48d8eaac44a31f5f70db402e2dc4e6", + "zh:4da802b73275ea823c6f8325ab2b7b65650d212884d41f0295135e337213fb20", + "zh:6d862eedf87808955eb57376dc4a4029f74ec9281f9612406fff7b9e09796985", + "zh:80efa1ea1d196c1ca35899e88c8935f41af10d955bfce9745994762654549802", + "zh:947016c71515fb7725c2ac201fcd03a8dd08dc2c6e8aa34af398b8d43272d21d", + "zh:a4ae425291ed246e17cff587f7364c813f191ac43917c6a25e32a2137e92f664", + "zh:c962de2984083905d4c6afb3697e800d281b3ba2b042da806b809d3afb8f4a23", + "zh:cd6e49f8967fc59fee76606bf7ad5efe431cc02ee797dc490b644fb774dcb363", + "zh:fc50b9a38f8f6cb4dcb33aa1cef63bc7b706df2f6ae84e1d7db7481170693947", ] } diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 60bfa4d8e0e..68573804dbf 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,11 +17,13 @@ locals { tgm_modules_map = { for value in local.modules : value.name => value if value.org == "terraform-google-modules" } gcp_modules_map = { for value in local.modules : value.name => value if value.org == "GoogleCloudPlatform" } + users = distinct(flatten([for value in local.modules : value.owners if try(value.owners, null) != null])) } module "repos_tgm" { source = "../../modules/repositories" repos_map = local.tgm_modules_map + team_id = module.collaborators_tgm.id providers = { github = github } @@ -30,6 +32,8 @@ module "repos_tgm" { module "repos_gcp" { source = "../../modules/repositories" repos_map = local.gcp_modules_map + # TODO: filter team on users already part of the org + # team_id = module.collaborators_gcp.id providers = { github = github.gcp } @@ -172,3 +176,12 @@ resource "github_branch_protection" "terraform-example-foundation" { ] } + +# collaborator teams for approved CI +module "collaborators_tgm" { + source = "../../modules/team" + users = local.users + providers = { + github = github + } +} From c05396135a47b60e52d4a0472ce859b7c7ddf986 Mon Sep 17 00:00:00 2001 From: Shabir Mohamed Abdul Samadh <7249208+Shabirmean@users.noreply.github.com> Date: Mon, 1 May 2023 16:58:15 -0400 Subject: [PATCH 0337/1371] chore: add the terraform-example-java-dynamic-point-of-sale repo (#1502) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 96adfb6594e..8d7634ca7fe 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -36,6 +36,7 @@ locals { "ecommerce-microservices" = "terraform-ecommerce-microservices-on-gke" "deploy-java-gke" = "terraform-example-deploy-java-gke" "Migrate-Legacy-Java-App-GKE" = "Migrate-Legacy-Java-App-GKE" + "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 41df2706741..8cea990d3b4 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -115,6 +115,13 @@ locals { description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." owners = ["NimJay"] }, + { + name = "terraform-example-java-dynamic-point-of-sale" + short_name = "java-dynamic-point-of-sale" + org = "GoogleCloudPlatform" + description = "Deploys a dynamic Java webapp into a Google Kubernetes Engine cluster." + owners = ["shabirmean", "Mukamik"] + }, { name = "terraform-example-foundation" short_name = "example-foundation" From a759c2411300d0b3108af312122c9c8660598b10 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Mon, 1 May 2023 17:04:52 -0400 Subject: [PATCH 0338/1371] fix: Change owner of ecommerce-microservices (#1501) Co-authored-by: Awais Malik Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 8cea990d3b4..ce5cfc536fc 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -113,7 +113,7 @@ locals { short_name = "ecommerce-microservices" org = "GoogleCloudPlatform" description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." - owners = ["NimJay"] + owners = ["arbrown", "bourgeoisor", "donmccasland", "minherz", "NimJay", "Shabirmean"] }, { name = "terraform-example-java-dynamic-point-of-sale" From 5f8c95dbffd8c53f7e1d7f40a5b85ed9d1874438 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 2 May 2023 10:35:26 -0500 Subject: [PATCH 0339/1371] chore: Update Tools to 1.11.5 (#1483) --- infra/build/Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 19fce58c8bb..38f09da949c 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.4.4 +TERRAFORM_VERSION := 1.4.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 425.0.0 +CLOUD_SDK_VERSION := 428.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -30,11 +30,11 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.30 +KPT_VERSION := 1.0.0-beta.31 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 0.9.4 +CFT_CLI_VERSION := 1.0.2 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.25.8 +KUBECTL_VERSION := 1.25.9 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 @@ -44,12 +44,12 @@ GOLANGCI_VERSION := 1.47.3 ASMCLI_VERSION := 1.12 KIND_VERSION := 0.17.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.11.0 +GATOR_VERSION := 3.11.1 OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.14.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From f1334857157f33435daaa0588b93500ae7143901 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 2 May 2023 08:53:39 -0700 Subject: [PATCH 0340/1371] chore: add lint.yaml (#1511) --- .github/workflows/lint.yaml | 38 +++++++++++++++++++ .../lint-infra-terraform.cloudbuild.yaml | 28 -------------- 2 files changed, 38 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/lint.yaml delete mode 100644 infra/cloudbuild/lint-infra-terraform.cloudbuild.yaml diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 00000000000..a3b6f4f9970 --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,38 @@ +# Copyright 2023 Google LLC +# +# 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. + +name: 'lint' + +on: + pull_request: + branches: + - 'master' + paths: + - "infra/terraform/**" + - ".github/workflows/lint.yaml" + +concurrency: + group: '${{ github.workflow }}-${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + lint: + name: 'lint-infra-terraform' + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v3' + - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh + env: + EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs' + EXCLUDE_HEADER_CHECK: '.*' diff --git a/infra/cloudbuild/lint-infra-terraform.cloudbuild.yaml b/infra/cloudbuild/lint-infra-terraform.cloudbuild.yaml deleted file mode 100644 index e00578f1a73..00000000000 --- a/infra/cloudbuild/lint-infra-terraform.cloudbuild.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2019-2022 Google LLC -# -# 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 -# -# https://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. - -steps: -- name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' - id: 'lint' - args: ['/usr/local/bin/test_lint.sh'] - env: - # negative lookahead regex isn't currently supported - - 'EXCLUDE_LINT_DIRS=\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs' - - 'EXCLUDE_HEADER_CHECK=.*' -tags: -- 'ci' -- 'lint' -substitutions: - _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1' From dddc6544d2f043be51f4c3738af82faca89d1e36 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 2 May 2023 09:15:34 -0700 Subject: [PATCH 0341/1371] chore: add groups to test-org repos (#1513) --- .../terraform/modules/codeowners_file/main.tf | 3 ++- .../modules/codeowners_file/variables.tf | 12 ++++------- infra/terraform/modules/repositories/main.tf | 20 ++++++++++++++++++- .../modules/repositories/variables.tf | 1 + infra/terraform/test-org/org/locals.tf | 3 +++ 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf index c9f29bb496c..51652340cf6 100644 --- a/infra/terraform/modules/codeowners_file/main.tf +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -18,6 +18,7 @@ locals { commit_author = "CFT Bot" commit_email = "cloud-foundation-bot@google.com" owners = { for value in var.repos_map : value.name => join(" ", formatlist("@%s", value.owners)) if length(value.owners) > 0 } + groups = { for value in var.repos_map : value.name => join(" ", formatlist("@${value.org}/%s", value.groups)) if length(value.groups) > 0 } } data "github_repository" "repo" { @@ -34,5 +35,5 @@ resource "github_repository_file" "CODEOWNERS" { commit_author = local.commit_author commit_email = local.commit_email overwrite_on_create = true - content = "${trimspace("* @${var.org}/${var.owner} ${try(local.owners[each.value.name], "")}")}\n" + content = "${trimspace("* @${var.org}/${var.owner} ${try(local.owners[each.value.name], "")} ${try(local.groups[each.value.name], "")}")}\n" } diff --git a/infra/terraform/modules/codeowners_file/variables.tf b/infra/terraform/modules/codeowners_file/variables.tf index eb226747aae..553c4f7f39a 100644 --- a/infra/terraform/modules/codeowners_file/variables.tf +++ b/infra/terraform/modules/codeowners_file/variables.tf @@ -32,13 +32,9 @@ variable "owner" { variable "repos_map" { description = "Map of Repos" type = map(object({ - name = string - short_name = optional(string) - org = string - description = optional(string) - owners = optional(list(string), []) - homepage_url = optional(string, null) - module = optional(bool, true) - topics = optional(string) + name = string + org = string + owners = optional(list(string), []) + groups = optional(list(string), []) })) } diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index 54bd5905575..e41809e2672 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,15 @@ locals { } ] ]) + + groups = flatten([ + for repo, val in var.repos_map : [ + for group in val.groups : { + "repo" : repo + "group" : group + } + ] + ]) } resource "github_repository" "repo" { @@ -61,6 +70,15 @@ resource "github_repository_collaborator" "owners" { permission = "maintain" } +resource "github_team_repository" "groups" { + for_each = { + for v in local.groups : "${v.repo}/${v.group}" => v + } + repository = each.value.repo + team_id = each.value.group + permission = "maintain" +} + resource "github_team_repository" "collaborators" { for_each = var.team_id == null ? {} : github_repository.repo repository = each.value.name diff --git a/infra/terraform/modules/repositories/variables.tf b/infra/terraform/modules/repositories/variables.tf index 63b567a8870..87492e39a3e 100644 --- a/infra/terraform/modules/repositories/variables.tf +++ b/infra/terraform/modules/repositories/variables.tf @@ -29,6 +29,7 @@ variable "repos_map" { homepage_url = optional(string, null) module = optional(bool, true) topics = optional(string) + groups = optional(list(string), []) })) } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index ce5cfc536fc..39831dd7aae 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -60,6 +60,7 @@ locals { * org = "terraform-google-modules" or "GoogleCloudPlatform" (required) * description = "string" (required) * owners = "list(string)" ["user1", "user2"] (optional) + * groups = "list(string)" ["group1", "group1"] (optional) * homepage_url = "string" (optional, overrides default) * module = BOOL (optional, default is true which includes GH repo configuration) * topics = "string1,string2,string3" (one or more of local.common_topics required if module = true) @@ -114,6 +115,7 @@ locals { org = "GoogleCloudPlatform" description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." owners = ["arbrown", "bourgeoisor", "donmccasland", "minherz", "NimJay", "Shabirmean"] + groups = ["dee-platform-ops"] }, { name = "terraform-example-java-dynamic-point-of-sale" @@ -121,6 +123,7 @@ locals { org = "GoogleCloudPlatform" description = "Deploys a dynamic Java webapp into a Google Kubernetes Engine cluster." owners = ["shabirmean", "Mukamik"] + groups = ["dee-platform-ops"] }, { name = "terraform-example-foundation" From da16ed75d60160f914c5b966b7a5f87b4a851ed5 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 2 May 2023 10:50:17 -0700 Subject: [PATCH 0342/1371] feat: onboards two JSS repos for large data sharing webapps (#1510) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/ci-triggers/locals.tf | 2 ++ infra/terraform/test-org/org/locals.tf | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 8d7634ca7fe..7574a4b202d 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -36,6 +36,8 @@ locals { "ecommerce-microservices" = "terraform-ecommerce-microservices-on-gke" "deploy-java-gke" = "terraform-example-deploy-java-gke" "Migrate-Legacy-Java-App-GKE" = "Migrate-Legacy-Java-App-GKE" + "large-data-sharing-java-app" = "terraform-large-data-sharing-java-webapp" + "large-data-sharing-go-app" = "terraform-large-data-sharing-golang-webapp" "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" } # example foundation has custom test modes diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 39831dd7aae..fa0d316cc8b 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -600,5 +600,19 @@ locals { owners = ["dulacp"] topics = join(",", [local.common_topics.da, local.common_topics.e2e], ["marketing"]) }, + { + name = "terraform-large-data-sharing-java-webapp" + short_name = "large-data-sharing-java-app" + org = "GoogleCloudPlatform" + description = "Deploys a large data sharing Java web app" + owners = ["donmccasland"] + }, + { + name = "terraform-large-data-sharing-golang-webapp" + short_name = "large-data-sharing-go-app" + org = "GoogleCloudPlatform" + description = "Deploys a large data sharing Golang web app" + owners = ["donmccasland"] + }, ] } From c7e06fcdc13dd430d462a3aa863e8f5ae7a7f280 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 2 May 2023 20:03:28 +0200 Subject: [PATCH 0343/1371] chore(deps): update google-github-actions/setup-gcloud action to v1.1.0 (#1408) --- .github/workflows/build-push-cft-devtools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 0a5b8d7e9ff..31efec64458 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -28,7 +28,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@v1.0.1 + - uses: google-github-actions/setup-gcloud@v1.1.0 with: version: "410.0.0" project_id: ${{ env.PROJECT_ID }} From 700f207e688896518ea0787f4177fa75be35da22 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 3 May 2023 00:53:21 +0200 Subject: [PATCH 0344/1371] chore(deps): update peter-evans/create-pull-request digest to 0183f33 (#1514) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 6b03afeafa7..f2e4a528abd 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@495ffbb489edc95cad062fefe82c9e05ff9bd91d + uses: peter-evans/create-pull-request@0183f3349069eb3b3580942d7782e96905765f6a with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 975c0599481eb8a92bec8634e89f1afc8af62820 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 3 May 2023 01:53:54 +0200 Subject: [PATCH 0345/1371] chore(deps): update actions/github-script action to v6.4.1 (#1515) --- .github/workflows/build-push-cft-devtools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 31efec64458..1a051a30e7e 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -44,7 +44,7 @@ jobs: - name: Open issue if failed if: ${{ failure() }} - uses: actions/github-script@v6.4.0 + uses: actions/github-script@v6.4.1 with: script: |- github.rest.issues.create({ From 465adf2cc06cf9311d6f33679b08d4f0e86bcaa2 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 2 May 2023 20:29:47 -0500 Subject: [PATCH 0346/1371] chore: gcloud disable remote flags (#1518) --- infra/build/developer-tools/build/install_cloud_sdk.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/build/developer-tools/build/install_cloud_sdk.sh b/infra/build/developer-tools/build/install_cloud_sdk.sh index 516e7f499df..e36a09b1e83 100755 --- a/infra/build/developer-tools/build/install_cloud_sdk.sh +++ b/infra/build/developer-tools/build/install_cloud_sdk.sh @@ -31,6 +31,7 @@ ln -s /lib /lib64 gcloud config set core/disable_usage_reporting true gcloud config set component_manager/disable_update_check true gcloud config set survey/disable_prompts true +gcloud config set enable_feature_flags false gcloud components install beta --quiet gcloud components install alpha --quiet From 7b7753fd41c7109734c3d770115de315a1079779 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 3 May 2023 17:27:57 +0200 Subject: [PATCH 0347/1371] chore(deps): update google-github-actions/auth action to v1.1.0 (#1516) --- .github/workflows/build-push-cft-devtools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 1a051a30e7e..0efb8e138ab 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -23,7 +23,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@v1.0.0' + uses: 'google-github-actions/auth@v1.1.0' with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From 687effdb25d7106cc7f98775e5a96569101c4116 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 3 May 2023 09:05:46 -0700 Subject: [PATCH 0348/1371] fix: renames bpmetadata fields for consistency (#1519) --- cli/Makefile | 2 +- cli/bpmetadata/display.go | 8 ++-- cli/bpmetadata/display_test.go | 8 ++-- cli/bpmetadata/proto/bpmetadata.proto | 22 ++++----- cli/bpmetadata/proto/bpmetadata_ui.proto | 6 +-- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 44 +++++++++--------- cli/bpmetadata/schema/bpmetadataschema.json | 28 +++++------ cli/bpmetadata/tfconfig.go | 10 ++-- cli/bpmetadata/tfconfig_test.go | 10 ++-- cli/bpmetadata/types.go | 32 ++++++------- cli/bpmetadata/types_ui.go | 8 ++-- cli/bpmetadata/types_ui_ext.go | 46 +++++++++---------- .../schema/valid-metadata-w-enum.yaml | 2 +- 13 files changed, 111 insertions(+), 115 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 10896a3383e..50124a80d09 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.0.2 +VERSION=v1.0.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/display.go b/cli/bpmetadata/display.go index 639d95440bf..2f129c92950 100644 --- a/cli/bpmetadata/display.go +++ b/cli/bpmetadata/display.go @@ -1,17 +1,17 @@ package bpmetadata func buildUIInputFromVariables(vars []BlueprintVariable, input *BlueprintUIInput) { - if input.DisplayVariables == nil { - input.DisplayVariables = make(map[string]*DisplayVariable) + if input.Variables == nil { + input.Variables = make(map[string]*DisplayVariable) } for _, v := range vars { - _, hasDisplayVar := input.DisplayVariables[v.Name] + _, hasDisplayVar := input.Variables[v.Name] if hasDisplayVar { continue } - input.DisplayVariables[v.Name] = &DisplayVariable{ + input.Variables[v.Name] = &DisplayVariable{ Name: v.Name, } } diff --git a/cli/bpmetadata/display_test.go b/cli/bpmetadata/display_test.go index 6fed1303a8d..da51ac5a40c 100644 --- a/cli/bpmetadata/display_test.go +++ b/cli/bpmetadata/display_test.go @@ -41,7 +41,7 @@ func TestUIInputFromVariables(t *testing.T) { }, }, UIinput: &BlueprintUIInput{ - DisplayVariables: map[string]*DisplayVariable{ + Variables: map[string]*DisplayVariable{ "test_var_1": { Name: "test_var_1", }, @@ -68,7 +68,7 @@ func TestUIInputFromVariables(t *testing.T) { }, }, UIinput: &BlueprintUIInput{ - DisplayVariables: map[string]*DisplayVariable{ + Variables: map[string]*DisplayVariable{ "test_var_1": { Name: "test_var_1", }, @@ -86,12 +86,12 @@ func TestUIInputFromVariables(t *testing.T) { t.Run(tt.name, func(t *testing.T) { buildUIInputFromVariables(tt.coreVars, tt.UIinput) for _, v := range tt.coreVars { - dispVar := tt.UIinput.DisplayVariables[v.Name] + dispVar := tt.UIinput.Variables[v.Name] assert.NotNil(t, dispVar) assert.Equal(t, v.Name, dispVar.Name) } - assert.GreaterOrEqual(t, len(tt.UIinput.DisplayVariables), len(tt.coreVars)) + assert.GreaterOrEqual(t, len(tt.UIinput.Variables), len(tt.coreVars)) }) } } diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index 10758517906..06b6a0fd43a 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -177,8 +177,8 @@ message BlueprintTimeEstimate { // ### DeploymentTime // - Configuration: X secs // - Deployment: Y secs - int32 configurationSecs = 1; - int32 deploymentSecs = 2; + int32 configuration_secs = 1; + int32 deployment_secs = 2; } // The cost estimate for the blueprint based on preconfigured variables. @@ -208,9 +208,9 @@ message BlueprintCloudProduct { // QuotaResourceType defines the type of resource a quota is applied to. enum QuotaResourceType { - QUOTARESOURCETYPE_UNDEFINED = 0; - GCE_INSTANCE = 1; - GCE_DISK = 2; + QRT_UNDEFINED = 0; + QRT_RESOURCE_TYPE_GCE_INSTANCE = 1; + QRT_RESOURCE_TYPE_GCE_DISK = 2; } // BlueprintQuotaDetail defines the quota details for a blueprint. @@ -248,9 +248,9 @@ message BlueprintAuthor { // SoftwareGroupType is a string enum representing the different types of software groups. enum SoftwareGroupType { // UNSPECIFIED is the default value for SoftwareGroupType. - UNSPECIFIED = 0; + SG_UNSPECIFIED = 0; // OS is a software group that represents an operating system. - OS = 1; + SG_OS = 1; } // BlueprintSoftwareGroup is a message that represents a group of related software components for the blueprint. @@ -317,12 +317,8 @@ message BlueprintVariable { string name = 1; string description = 2; string var_type = 3; - oneof default { - string string_default = 4; - int64 int64_default = 5; - bool bool_default = 6; - } - bool required = 7; + string default_value = 4; + bool required = 5; } // BlueprintVariableGroup is manually entered. diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 9b2f0971f2b..c58b13292fe 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -9,10 +9,10 @@ option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli message BlueprintUIInput { // variables is a map defining all inputs on the UI. - map display_variables = 1; + map variables = 1; // Sections is a generic structure for grouping inputs together. - repeated DisplaySection display_sections = 2; + repeated DisplaySection sections = 2; } message DisplayVariable { @@ -63,7 +63,7 @@ message DisplayVariable { // UI extension associated with the input variable. // E.g. for rendering a GCE machine type selector: // - // x-googleProperty: + // xGoogleProperty: // type: GCE_MACHINE_TYPE // zoneProperty: myZone // gceMachineType: diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index 27ce57d4aba..cdbd5f5affd 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -7,34 +7,34 @@ option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli // ExtensionType specifies the type of extension. enum ExtensionType { // EXTENSIONTYPE_UNDEFINED indicates that the extension type is undefined. - EXTENSIONTYPE_UNDEFINED = 0; + ET_UNDEFINED = 0; // General formats. - EMAIL_ADDRESS = 1; - MULTI_LINE_STRING = 2; + ET_EMAIL_ADDRESS = 1; + ET_MULTI_LINE_STRING = 2; // GCE related. - GCE_DISK_IMAGE = 3; - GCE_DISK_TYPE = 4; - GCE_DISK_SIZE = 5; - GCE_MACHINE_TYPE = 6; - GCE_NETWORK = 7; - GCE_ZONE = 8; - GCE_SUBNETWORK = 9; - GCE_REGION = 10; - GCE_GPU_TYPE = 11; - GCE_GPU_COUNT = 12; - GCE_EXTERNAL_IP = 13; - GCE_IP_FORWARDING = 14; - GCE_FIREWALL = 15; - GCE_FIREWALL_RANGE = 16; - GCE_GENERIC_RESOURCE = 17; + ET_GCE_DISK_IMAGE = 3; + ET_GCE_DISK_TYPE = 4; + ET_GCE_DISK_SIZE = 5; + ET_GCE_MACHINE_TYPE = 6; + ET_GCE_NETWORK = 7; + ET_GCE_ZONE = 8; + ET_GCE_SUBNETWORK = 9; + ET_GCE_REGION = 10; + ET_GCE_GPU_TYPE = 11; + ET_GCE_GPU_COUNT = 12; + ET_GCE_EXTERNAL_IP = 13; + ET_GCE_IP_FORWARDING = 14; + ET_GCE_FIREWALL = 15; + ET_GCE_FIREWALL_RANGE = 16; + ET_GCE_GENERIC_RESOURCE = 17; // GCS related. - GCS_BUCKET = 18; + ET_GCS_BUCKET = 18; // IAM related. - IAM_SERVICE_ACCOUNT = 19; + ET_IAM_SERVICE_ACCOUNT = 19; } // An extension for variables defined as part of DisplayVariable. The @@ -126,9 +126,9 @@ message GCENetworkExtension { // ExternalIPType specifies the type of external IP address. enum ExternalIPType { // EPHEMERAL indicates that the external IP address is ephemeral. - EPHEMERAL = 0; + IP_EPHEMERAL = 0; // STATIC indicates that the external IP address is static. - STATIC = 1; + IP_STATIC = 1; } message GCEExternalIPExtension { diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index 42ae0d3a446..6763c1f6c63 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -5,7 +5,7 @@ "$defs": { "BlueprintActuationTool": { "properties": { - "type": { + "flavor": { "type": "string" }, "version": { @@ -17,7 +17,7 @@ }, "BlueprintArchitecture": { "properties": { - "diagram": { + "diagramUrl": { "type": "string" }, "description": { @@ -30,7 +30,7 @@ "additionalProperties": false, "type": "object", "required": [ - "diagram", + "diagramUrl", "description" ] }, @@ -338,14 +338,14 @@ }, "BlueprintQuotaDetail": { "properties": { - "variable": { + "dynamicVariable": { "type": "string" }, - "type": { + "resourceType": { "type": "string", "enum": [ - "GCE_INSTANCE", - "GCE_DISK" + "QRT_GCE_INSTANCE", + "QRT_GCE_DISK" ] }, "quotaType": { @@ -360,7 +360,7 @@ "additionalProperties": false, "type": "object", "required": [ - "type", + "resourceType", "quotaType" ] }, @@ -483,10 +483,10 @@ }, "BlueprintTimeEstimate": { "properties": { - "configuration": { + "configurationSecs": { "type": "integer" }, - "deployment": { + "deploymentSecs": { "type": "integer" } }, @@ -548,10 +548,10 @@ "description": { "type": "string" }, - "type": { + "varType": { "type": "string" }, - "default": true, + "defaultValue": true, "required": { "type": "boolean" } @@ -645,7 +645,7 @@ "section": { "type": "string" }, - "x-googleProperty": { + "xGoogleProperty": { "$ref": "#/$defs/GooglePropertyExtension" } }, @@ -672,7 +672,7 @@ "networkVariable": { "type": "string" }, - "externalIpType": { + "type": { "type": "string" } }, diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index d8dd1aeaa47..dc7e44fb757 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -220,11 +220,11 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { // build variable func getBlueprintVariable(modVar *tfconfig.Variable) BlueprintVariable { return BlueprintVariable{ - Name: modVar.Name, - Description: modVar.Description, - Default: modVar.Default, - Required: modVar.Required, - VarType: modVar.Type, + Name: modVar.Name, + Description: modVar.Description, + DefaultValue: modVar.Default, + Required: modVar.Required, + VarType: modVar.Type, } } diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index dd9096fea27..28f4885b0f2 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -69,11 +69,11 @@ func TestTFInterfaces(t *testing.T) { for _, tt := range varTests { t.Run(tt.name, func(t *testing.T) { assert.Contains(t, got.Variables, BlueprintVariable{ - Name: tt.varName, - Description: tt.wantDescription, - Default: tt.wantDefault, - Required: tt.wantRequired, - VarType: tt.wantVarType, + Name: tt.varName, + Description: tt.wantDescription, + DefaultValue: tt.wantDefault, + Required: tt.wantRequired, + VarType: tt.wantVarType, }) }) } diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 977a5b4781d..d51f9473669 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -94,7 +94,7 @@ type BlueprintRepoDetail struct { type BlueprintActuationTool struct { // Set as "Terraform" for now until more flavors are supported. - Flavor string `json:"type,omitempty" yaml:"type,omitempty"` + Flavor string `json:"flavor,omitempty" yaml:"flavor,omitempty"` // Required version for the actuation tool. // Autogenerated: For Terraform this is the `required_version` set in @@ -135,8 +135,8 @@ type BlueprintTimeEstimate struct { // ### DeploymentTime // - Configuration: X secs // - Deployment: Y secs - ConfigurationSecs int `json:"configuration,omitempty" yaml:"configuration,omitempty"` - DeploymentSecs int `json:"deployment,omitempty" yaml:"deployment,omitempty"` + ConfigurationSecs int `json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` + DeploymentSecs int `json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` } // The cost estimate for the blueprint based on preconfigured variables. @@ -167,9 +167,9 @@ type BlueprintCloudProduct struct { type QuotaResourceType string const ( - QuotaResTypeUndefined QuotaResourceType = "QUOTARESOURCETYPE_UNDEFINED" - GCEInstance QuotaResourceType = "GCE_INSTANCE" - GCEDisk QuotaResourceType = "GCE_DISK" + QuotaResTypeUndefined QuotaResourceType = "QRT_UNDEFINED" + QuotaResTypeGCEInstance QuotaResourceType = "QRT_GCE_INSTANCE" + QuotaResTypeGCEDisk QuotaResourceType = "QRT_GCE_DISK" ) type QuotaType string @@ -185,11 +185,11 @@ type BlueprintQuotaDetail struct { // DynamicVariable, if provided, associates the provided input variable // with the corresponding resource and quota type. In its absence, the quota // detail is assumed to be fixed. - DynamicVariable string `json:"variable,omitempty" yaml:"variable,omitempty"` + DynamicVariable string `json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty"` // ResourceType is the type of resource the quota will be applied to i.e. // GCE Instance or Disk etc. - ResourceType QuotaResourceType `json:"type" yaml:"type" jsonschema:"enum=GCE_INSTANCE,enum=GCE_DISK"` + ResourceType QuotaResourceType `json:"resourceType" yaml:"resourceType" jsonschema:"enum=QRT_GCE_INSTANCE,enum=QRT_GCE_DISK"` // QuotaType is a key/value pair of the actual quotas and their corresponding // values. @@ -210,8 +210,8 @@ type BlueprintAuthor struct { type SoftwareGroupType string const ( - UnspecifiedSG SoftwareGroupType = "UNSPECIFIED" - OS SoftwareGroupType = "OS" + SG_Unspecified SoftwareGroupType = "SG_UNSPECIFIED" + SG_OS SoftwareGroupType = "SG_OS" ) // A group of related software components for the blueprint. @@ -287,7 +287,7 @@ type BlueprintMiscContent struct { } type BlueprintArchitecture struct { - DiagramURL string `json:"diagram" yaml:"diagram"` + DiagramURL string `json:"diagramUrl" yaml:"diagramUrl"` Description []string `json:"description" yaml:"description"` } @@ -304,11 +304,11 @@ type BlueprintListContent struct { } type BlueprintVariable struct { - Name string `json:"name,omitempty" yaml:"name,omitempty"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` - VarType string `json:"type,omitempty" yaml:"type,omitempty"` - Default interface{} `json:"default,omitempty" yaml:"default,omitempty"` - Required bool `json:"required,omitempty" yaml:"required,omitempty"` + Name string `json:"name,omitempty" yaml:"name,omitempty"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` + VarType string `json:"varType,omitempty" yaml:"varType,omitempty"` + DefaultValue interface{} `json:"defaultValue,omitempty" yaml:"defaultValue,omitempty"` + Required bool `json:"required,omitempty" yaml:"required,omitempty"` } // BlueprintVariableGroup is manually entered. diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index b6ad201deb8..8b2e5ffec5f 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -15,10 +15,10 @@ type BlueprintUI struct { type BlueprintUIInput struct { // variables is a map defining all inputs on the UI. - DisplayVariables map[string]*DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"` + Variables map[string]*DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"` // Sections is a generic structure for grouping inputs together. - DisplaySections []DisplaySection `json:"sections,omitempty" yaml:"sections,omitempty"` + Sections []DisplaySection `json:"sections,omitempty" yaml:"sections,omitempty"` } // Additional display specific metadata pertaining to a particular @@ -71,13 +71,13 @@ type DisplayVariable struct { // UI extension associated with the input variable. // E.g. for rendering a GCE machine type selector: // - // x-googleProperty: + // xGoogleProperty: // type: GCE_MACHINE_TYPE // zoneProperty: myZone // gceMachineType: // minCpu: 2 // minRamGb: 6 - UIDisplayVariableExtension GooglePropertyExtension `json:"x-googleProperty,omitempty" yaml:"x-googleProperty,omitempty"` + XGoogleProperty GooglePropertyExtension `json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty"` } // A logical group of variables. [Section][]s may also be grouped into diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go index 1c367b53c7c..e25465a3bf2 100644 --- a/cli/bpmetadata/types_ui_ext.go +++ b/cli/bpmetadata/types_ui_ext.go @@ -3,34 +3,34 @@ package bpmetadata type ExtensionType string const ( - ExtTypeUndefined ExtensionType = "EXTENSIONTYPE_UNDEFINED" + ExtTypeUndefined ExtensionType = "ET_UNDEFINED" // General formats. - EmailAddress ExtensionType = "EMAIL_ADDRESS" - MultiLineString ExtensionType = "MULTI_LINE_STRING" + EmailAddress ExtensionType = "ET_EMAIL_ADDRESS" + MultiLineString ExtensionType = "ET_MULTI_LINE_STRING" // GCE related. - GCEDiskImage ExtensionType = "GCE_DISK_IMAGE" - GCEDiskType ExtensionType = "GCE_DISK_TYPE" - GCEDiskSize ExtensionType = "GCE_DISK_SIZE" - GCEMachineType ExtensionType = "GCE_MACHINE_TYPE" - GCENetwork ExtensionType = "GCE_NETWORK" - GCEZone ExtensionType = "GCE_ZONE" - GCESubnetwork ExtensionType = "GCE_SUBNETWORK" - GCERegion ExtensionType = "GCE_REGION" - GCEGPUType ExtensionType = "GCE_GPU_TYPE" - GCEGPUCount ExtensionType = "GCE_GPU_COUNT" - GCEExternalIP ExtensionType = "GCE_EXTERNAL_IP" - GCEIPForwarding ExtensionType = "GCE_IP_FORWARDING" - GCEFirewall ExtensionType = "GCE_FIREWALL" - GCEFirewallRange ExtensionType = "GCE_FIREWALL_RANGE" - GCEGenericResource ExtensionType = "GCE_GENERIC_RESOURCE" + GCEDiskImage ExtensionType = "ET_GCE_DISK_IMAGE" + GCEDiskType ExtensionType = "ET_GCE_DISK_TYPE" + GCEDiskSize ExtensionType = "ET_GCE_DISK_SIZE" + GCEMachineType ExtensionType = "ET_GCE_MACHINE_TYPE" + GCENetwork ExtensionType = "ET_GCE_NETWORK" + GCEZone ExtensionType = "ET_GCE_ZONE" + GCESubnetwork ExtensionType = "ET_GCE_SUBNETWORK" + GCERegion ExtensionType = "ET_GCE_REGION" + GCEGPUType ExtensionType = "ET_GCE_GPU_TYPE" + GCEGPUCount ExtensionType = "ET_GCE_GPU_COUNT" + GCEExternalIP ExtensionType = "ET_GCE_EXTERNAL_IP" + GCEIPForwarding ExtensionType = "ET_GCE_IP_FORWARDING" + GCEFirewall ExtensionType = "ET_GCE_FIREWALL" + GCEFirewallRange ExtensionType = "ET_GCE_FIREWALL_RANGE" + GCEGenericResource ExtensionType = "ET_GCE_GENERIC_RESOURCE" // GCS related. - GCSBucket ExtensionType = "GCS_BUCKET" + GCSBucket ExtensionType = "ET_GCS_BUCKET" // IAM related. - IAMServiceAccount ExtensionType = "IAM_SERVICE_ACCOUNT" + IAMServiceAccount ExtensionType = "ET_IAM_SERVICE_ACCOUNT" ) // An extension for variables defined as part of DisplayVariable. The @@ -108,8 +108,8 @@ type GCENetworkExtension struct { type ExternalIPType string const ( - IPEphemeral ExternalIPType = "EPHEMERAL" - IPStaic ExternalIPType = "STATIC" + IPEphemeral ExternalIPType = "IP_EPHEMERAL" + IPStatic ExternalIPType = "IP_STATIC" ) type GCEExternalIPExtension struct { @@ -119,7 +119,7 @@ type GCEExternalIPExtension struct { // Type specifies if the external IP is ephemeral or static. // Defaults to ephemeral if not specified. - Type ExternalIPType `json:"externalIpType,omitempty" yaml:"externalIpType,omitempty"` + Type ExternalIPType `json:"type,omitempty" yaml:"type,omitempty"` } type GCEIPForwardingExtension struct { diff --git a/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml b/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml index 51ca34cbbd5..53194345c8d 100644 --- a/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml +++ b/cli/testdata/bpmetadata/schema/valid-metadata-w-enum.yaml @@ -9,6 +9,6 @@ spec: repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git sourceType: git quotaDetails: - - type: GCE_INSTANCE + - resourceType: QRT_GCE_INSTANCE quotaType: MACHINE_TYPE: "n1-standard-8" From 16493037ebae2458da5fa8301d06c866266ea532 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 3 May 2023 18:03:52 -0500 Subject: [PATCH 0349/1371] chore: Update Tools to 1.11.6 (#1517) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 38f09da949c..496a1816dd8 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.4.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 428.0.0 +CLOUD_SDK_VERSION := 429.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -49,7 +49,7 @@ OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.14.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From a7e10422279c3bbdea336b66a1575cf151711cf7 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 5 May 2023 09:54:43 -0700 Subject: [PATCH 0350/1371] fix: updates enums for jsonschema for bpmetadata (#1524) --- cli/Makefile | 2 +- cli/bpmetadata/schema/bpmetadataschema.json | 51 +++++++++++---------- cli/bpmetadata/types.go | 4 +- cli/bpmetadata/types_ui_ext.go | 4 +- 4 files changed, 33 insertions(+), 28 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 50124a80d09..165487e4f6e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.0.3 +VERSION=v1.0.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index 6763c1f6c63..05186996eb6 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -345,7 +345,8 @@ "type": "string", "enum": [ "QRT_GCE_INSTANCE", - "QRT_GCE_DISK" + "QRT_GCE_DISK", + "QRT_UNDEFINED" ] }, "quotaType": { @@ -446,8 +447,8 @@ "type": { "type": "string", "enum": [ - "UNSPECIFIED", - "OS" + "SG_UNSPECIFIED", + "SG_OS" ] }, "software": { @@ -673,7 +674,11 @@ "type": "string" }, "type": { - "type": "string" + "type": "string", + "enum": [ + "IP_EPHEMERAL", + "IP_STATIC" + ] } }, "additionalProperties": false, @@ -825,25 +830,25 @@ "type": { "type": "string", "enum": [ - "EMAIL_ADDRESS", - "MULTI_LINE_STRING", - "GCE_DISK_IMAGE", - "GCE_DISK_TYPE", - "GCE_DISK_SIZE", - "GCE_MACHINE_TYPE", - "GCE_NETWORK", - "GCE_ZONE", - "GCE_SUBNETWORK", - "GCE_REGION", - "GCE_GPU_TYPE", - "GCE_GPU_COUNT", - "GCE_EXTERNAL_IP", - "GCE_IP_FORWARDING", - "GCE_FIREWALL", - "GCE_FIREWALL_RANGE", - "GCE_GENERIC_RESOURCE", - "GCS_BUCKET", - "IAM_SERVICE_ACCOUNT" + "ET_EMAIL_ADDRESS", + "ET_MULTI_LINE_STRING", + "ET_GCE_DISK_IMAGE", + "ET_GCE_DISK_TYPE", + "ET_GCE_DISK_SIZE", + "ET_GCE_MACHINE_TYPE", + "ET_GCE_NETWORK", + "ET_GCE_ZONE", + "ET_GCE_SUBNETWORK", + "ET_GCE_REGION", + "ET_GCE_GPU_TYPE", + "ET_GCE_GPU_COUNT", + "ET_GCE_EXTERNAL_IP", + "ET_GCE_IP_FORWARDING", + "ET_GCE_FIREWALL", + "ET_GCE_FIREWALL_RANGE", + "ET_GCE_GENERIC_RESOURCE", + "ET_GCS_BUCKET", + "ET_IAM_SERVICE_ACCOUNT" ] }, "zoneProperty": { diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index d51f9473669..d6ff0b5ecfc 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -189,7 +189,7 @@ type BlueprintQuotaDetail struct { // ResourceType is the type of resource the quota will be applied to i.e. // GCE Instance or Disk etc. - ResourceType QuotaResourceType `json:"resourceType" yaml:"resourceType" jsonschema:"enum=QRT_GCE_INSTANCE,enum=QRT_GCE_DISK"` + ResourceType QuotaResourceType `json:"resourceType" yaml:"resourceType" jsonschema:"enum=QRT_GCE_INSTANCE,enum=QRT_GCE_DISK,enum=QRT_UNDEFINED"` // QuotaType is a key/value pair of the actual quotas and their corresponding // values. @@ -217,7 +217,7 @@ const ( // A group of related software components for the blueprint. type BlueprintSoftwareGroup struct { // Pre-defined software types. - Type SoftwareGroupType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=UNSPECIFIED,enum=OS"` + Type SoftwareGroupType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=SG_UNSPECIFIED,enum=SG_OS"` // Software components belonging to this group. Software []BlueprintSoftware `json:"software,omitempty" yaml:"software,omitempty"` diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go index e25465a3bf2..1e8e66c0e42 100644 --- a/cli/bpmetadata/types_ui_ext.go +++ b/cli/bpmetadata/types_ui_ext.go @@ -37,7 +37,7 @@ const ( // extension defines Google-specifc metadata necessary for choosing an // appropriate input widget or adding restrictions to GCP-specific resources. type GooglePropertyExtension struct { - Type ExtensionType `json:"type" yaml:"type" jsonschema:"enum=EMAIL_ADDRESS,enum=MULTI_LINE_STRING,enum=GCE_DISK_IMAGE,enum=GCE_DISK_TYPE,enum=GCE_DISK_SIZE,enum=GCE_MACHINE_TYPE,enum=GCE_NETWORK,enum=GCE_ZONE,enum=GCE_SUBNETWORK,enum=GCE_REGION,enum=GCE_GPU_TYPE,enum=GCE_GPU_COUNT,enum=GCE_EXTERNAL_IP,enum=GCE_IP_FORWARDING,enum=GCE_FIREWALL,enum=GCE_FIREWALL_RANGE,enum=GCE_GENERIC_RESOURCE,enum=GCS_BUCKET,enum=IAM_SERVICE_ACCOUNT"` + Type ExtensionType `json:"type" yaml:"type" jsonschema:"enum=ET_EMAIL_ADDRESS,enum=ET_MULTI_LINE_STRING,enum=ET_GCE_DISK_IMAGE,enum=ET_GCE_DISK_TYPE,enum=ET_GCE_DISK_SIZE,enum=ET_GCE_MACHINE_TYPE,enum=ET_GCE_NETWORK,enum=ET_GCE_ZONE,enum=ET_GCE_SUBNETWORK,enum=ET_GCE_REGION,enum=ET_GCE_GPU_TYPE,enum=ET_GCE_GPU_COUNT,enum=ET_GCE_EXTERNAL_IP,enum=ET_GCE_IP_FORWARDING,enum=ET_GCE_FIREWALL,enum=ET_GCE_FIREWALL_RANGE,enum=ET_GCE_GENERIC_RESOURCE,enum=ET_GCS_BUCKET,enum=ET_IAM_SERVICE_ACCOUNT"` // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to // determine the set of allowable values. This field references another @@ -119,7 +119,7 @@ type GCEExternalIPExtension struct { // Type specifies if the external IP is ephemeral or static. // Defaults to ephemeral if not specified. - Type ExternalIPType `json:"type,omitempty" yaml:"type,omitempty"` + Type ExternalIPType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=IP_EPHEMERAL,enum=IP_STATIC"` } type GCEIPForwardingExtension struct { From e846a71584e4cba515c916edd002d06c3fc0d156 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 5 May 2023 11:43:54 -0700 Subject: [PATCH 0351/1371] chore: add go linter (#1523) --- .github/workflows/go-lint.yaml | 44 ++++++++++++++++++++++++++++++++++ cli/Makefile | 6 ++++- infra/blueprint-test/Makefile | 5 ++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/go-lint.yaml create mode 100644 infra/blueprint-test/Makefile diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml new file mode 100644 index 00000000000..0e49c1f235d --- /dev/null +++ b/.github/workflows/go-lint.yaml @@ -0,0 +1,44 @@ +name: lint +on: + pull_request: + branches: + - master + paths: + - ".github/workflows/go-lint.yaml" + - "cli" + - "infra/blueprint-test" +permissions: + contents: read + +concurrency: + group: '$${{ github.workflow }}-$${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + folder: [cli, infra/blueprint-test] + steps: + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + with: + go-version: '1.18' + cache: false + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1 + id: changes + with: + filters: | + src: + - ${{ matrix.folder }} + - ".github/workflows/go-lint.yaml" + - if: steps.changes.outputs.src == 'true' + name: golangci-lint + uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5 # v3.4.0 + with: + version: latest + working-directory: ${{ matrix.folder }} + args: --timeout=5m diff --git a/cli/Makefile b/cli/Makefile index 165487e4f6e..f02ed18b317 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -18,7 +18,7 @@ LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" build: go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} - + .PHONY: publish publish: gcloud alpha storage cp "${BUILD_DIR}/*" "${BUCKET}/${VERSION}" @@ -37,3 +37,7 @@ go_test: .PHONY: test test: build go_test + +.PHONY: docker_go_lint +docker_go_lint: + docker run --rm -v $(PWD):/cli -w /cli golangci/golangci-lint:v1.52.2 golangci-lint --timeout=5m -v run diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile new file mode 100644 index 00000000000..9ecf0e44ff9 --- /dev/null +++ b/infra/blueprint-test/Makefile @@ -0,0 +1,5 @@ +SHELL := /bin/bash + +.PHONY: docker_go_lint +docker_go_lint: + docker run --rm -v $(PWD):/blueprint-test -w /blueprint-test golangci/golangci-lint:v1.52.2 golangci-lint --timeout=5m -v run From 2d34ae95002d23db01a5de7ea1bfd40db0bea339 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 5 May 2023 18:01:54 -0700 Subject: [PATCH 0352/1371] feat: adds e2e integration test for bpmetadata (#1526) --- .gitignore | 1 + cli/Makefile | 9 +- cli/bpmetadata/int-test/README.md | 0 .../goldens/golden-metadata.display.yaml | 89 +++++++ .../int-test/goldens/golden-metadata.yaml | 251 ++++++++++++++++++ cli/bpmetadata/int-test/workflow.sh | 73 +++++ 6 files changed, 421 insertions(+), 2 deletions(-) create mode 100644 cli/bpmetadata/int-test/README.md create mode 100644 cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml create mode 100644 cli/bpmetadata/int-test/goldens/golden-metadata.yaml create mode 100755 cli/bpmetadata/int-test/workflow.sh diff --git a/.gitignore b/.gitignore index cc9750e96f3..c06ba7e1302 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ config-connector/tests/testcases/environments.yaml *.pyc schema cli/bpmetadata/proto/out* +cli/bpmetadata/int-test/.working diff --git a/cli/Makefile b/cli/Makefile index f02ed18b317..7fe498b0214 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.0.4 +VERSION=v1.1.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin @@ -9,6 +9,7 @@ BUILD_DIR=./bin SCHEMA_DIR=./bpmetadata/schema NAME=cft BUCKET=gs://cft-cli +INT_TEST_DIR=./bpmetadata/int-test # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" @@ -31,12 +32,16 @@ release: $(PLATFORMS) $(PLATFORMS): GO111MODULE=on GOOS=$@ GOARCH=amd64 CGO_ENABLED=0 go build ${LDFLAGS} -o "${BUILD_DIR}/${NAME}-$@-amd64" +.PHONY: int_test +int_test: + ${INT_TEST_DIR}/workflow.sh ${INT_TEST_DIR} + .PHONY: go_test go_test: go test ./... .PHONY: test -test: build go_test +test: build go_test int_test .PHONY: docker_go_lint docker_go_lint: diff --git a/cli/bpmetadata/int-test/README.md b/cli/bpmetadata/int-test/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml new file mode 100644 index 00000000000..0a3e29310a7 --- /dev/null +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml @@ -0,0 +1,89 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: cloud-foundation-toolkit-display +spec: + info: + title: Terraform Google Cloud Storage Module + source: + repo: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit + sourceType: git + ui: + input: + variables: + admins: + name: admins + bucket_admins: + name: bucket_admins + bucket_creators: + name: bucket_creators + bucket_hmac_key_admins: + name: bucket_hmac_key_admins + bucket_lifecycle_rules: + name: bucket_lifecycle_rules + bucket_policy_only: + name: bucket_policy_only + bucket_storage_admins: + name: bucket_storage_admins + bucket_viewers: + name: bucket_viewers + cors: + name: cors + creators: + name: creators + custom_placement_config: + name: custom_placement_config + default_event_based_hold: + name: default_event_based_hold + encryption_key_names: + name: encryption_key_names + folders: + name: folders + force_destroy: + name: force_destroy + hmac_key_admins: + name: hmac_key_admins + hmac_service_accounts: + name: hmac_service_accounts + labels: + name: labels + lifecycle_rules: + name: lifecycle_rules + location: + name: location + logging: + name: logging + names: + name: names + prefix: + name: prefix + project_id: + name: project_id + public_access_prevention: + name: public_access_prevention + randomize_suffix: + name: randomize_suffix + retention_policy: + name: retention_policy + set_admin_roles: + name: set_admin_roles + set_creator_roles: + name: set_creator_roles + set_hmac_access: + name: set_hmac_access + set_hmac_key_admin_roles: + name: set_hmac_key_admin_roles + set_storage_admin_roles: + name: set_storage_admin_roles + set_viewer_roles: + name: set_viewer_roles + storage_admins: + name: storage_admins + storage_class: + name: storage_class + versioning: + name: versioning + viewers: + name: viewers + website: + name: website diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml new file mode 100644 index 00000000000..f3935810c2d --- /dev/null +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -0,0 +1,251 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: cloud-foundation-toolkit + annotations: + config.kubernetes.io/local-config: "true" +spec: + info: + title: Terraform Google Cloud Storage Module + source: + repo: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit + sourceType: git + version: 4.0.0 + actuationTool: + flavor: Terraform + version: '>= 0.13' + description: {} + content: + subBlueprints: + - name: simple_bucket + location: modules/simple_bucket + examples: + - name: multiple_buckets + location: examples/multiple_buckets + - name: simple_bucket + location: examples/simple_bucket + interfaces: + variables: + - name: admins + description: IAM-style members who will be granted roles/storage.objectAdmin on all buckets. + varType: list(string) + defaultValue: [] + - name: bucket_admins + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket admins. + varType: map(string) + defaultValue: {} + - name: bucket_creators + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket creators. + varType: map(string) + defaultValue: {} + - name: bucket_hmac_key_admins + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket HMAC Key admins. + varType: map(string) + defaultValue: {} + - name: bucket_lifecycle_rules + description: Additional lifecycle_rules for specific buckets. Map of lowercase unprefixed name => list of lifecycle rules to configure. + varType: |- + map(set(object({ + # Object with keys: + # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. + # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. + action = map(string) + + # Object with keys: + # - age - (Optional) Minimum age of an object in days to satisfy this condition. + # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. + # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". + # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. + # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. + # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. + # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. + # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. + # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. + condition = map(string) + }))) + defaultValue: {} + - name: bucket_policy_only + description: Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean + varType: map(bool) + defaultValue: {} + - name: bucket_storage_admins + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket storage admins. + varType: map(string) + defaultValue: {} + - name: bucket_viewers + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket viewers. + varType: map(string) + defaultValue: {} + - name: cors + description: 'Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors' + varType: set(any) + defaultValue: [] + - name: creators + description: IAM-style members who will be granted roles/storage.objectCreators on all buckets. + varType: list(string) + defaultValue: [] + - name: custom_placement_config + description: Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config + varType: any + defaultValue: {} + - name: default_event_based_hold + description: Enable event based hold to new objects added to specific bucket. Defaults to false. Map of lowercase unprefixed name => boolean + varType: map(bool) + defaultValue: {} + - name: encryption_key_names + description: Optional map of lowercase unprefixed name => string, empty strings are ignored. + varType: map(string) + defaultValue: {} + - name: folders + description: Map of lowercase unprefixed name => list of top level folder objects. + varType: map(list(string)) + defaultValue: {} + - name: force_destroy + description: Optional map of lowercase unprefixed name => boolean, defaults to false. + varType: map(bool) + defaultValue: {} + - name: hmac_key_admins + description: IAM-style members who will be granted roles/storage.hmacKeyAdmin on all buckets. + varType: list(string) + defaultValue: [] + - name: hmac_service_accounts + description: List of HMAC service accounts to grant access to GCS. + varType: map(string) + defaultValue: {} + - name: labels + description: Labels to be attached to the buckets + varType: map(string) + defaultValue: {} + - name: lifecycle_rules + description: List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string. + varType: |- + set(object({ + # Object with keys: + # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. + # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. + action = map(string) + + # Object with keys: + # - age - (Optional) Minimum age of an object in days to satisfy this condition. + # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. + # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". + # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. + # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition. + # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition. + # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. + # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. + # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. + # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. + # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. + condition = map(string) + })) + defaultValue: [] + - name: location + description: Bucket location. + varType: string + defaultValue: EU + - name: logging + description: Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging + varType: any + defaultValue: {} + - name: names + description: Bucket name suffixes. + varType: list(string) + required: true + - name: prefix + description: Prefix used to generate the bucket name. + varType: string + defaultValue: "" + - name: project_id + description: Bucket project id. + varType: string + required: true + - name: public_access_prevention + description: Prevents public access to a bucket. Acceptable values are inherited or enforced. If inherited, the bucket uses public access prevention, only if the bucket is subject to the public access prevention organization policy constraint. + varType: string + defaultValue: inherited + - name: randomize_suffix + description: Adds an identical, but randomized 4-character suffix to all bucket names + varType: bool + defaultValue: false + - name: retention_policy + description: Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy + varType: any + defaultValue: {} + - name: set_admin_roles + description: Grant roles/storage.objectAdmin role to admins and bucket_admins. + varType: bool + defaultValue: false + - name: set_creator_roles + description: Grant roles/storage.objectCreator role to creators and bucket_creators. + varType: bool + defaultValue: false + - name: set_hmac_access + description: Set S3 compatible access to GCS. + varType: bool + defaultValue: false + - name: set_hmac_key_admin_roles + description: Grant roles/storage.hmacKeyAdmin role to hmac_key_admins and bucket_hmac_key_admins. + varType: bool + defaultValue: false + - name: set_storage_admin_roles + description: Grant roles/storage.admin role to storage_admins and bucket_storage_admins. + varType: bool + defaultValue: false + - name: set_viewer_roles + description: Grant roles/storage.objectViewer role to viewers and bucket_viewers. + varType: bool + defaultValue: false + - name: storage_admins + description: IAM-style members who will be granted roles/storage.admin on all buckets. + varType: list(string) + defaultValue: [] + - name: storage_class + description: Bucket storage class. + varType: string + defaultValue: STANDARD + - name: versioning + description: Optional map of lowercase unprefixed name => boolean, defaults to false. + varType: map(bool) + defaultValue: {} + - name: viewers + description: IAM-style members who will be granted roles/storage.objectViewer on all buckets. + varType: list(string) + defaultValue: [] + - name: website + description: 'Map of website values. Supported attributes: main_page_suffix, not_found_page' + varType: map(any) + defaultValue: {} + outputs: + - name: bucket + description: Bucket resource (for single use). + - name: buckets + description: Bucket resources as list. + - name: buckets_map + description: Bucket resources by name. + - name: hmac_keys + description: List of HMAC keys. + - name: name + description: Bucket name (for single use). + - name: names + description: Bucket names. + - name: names_list + description: List of bucket names. + - name: url + description: Bucket URL (for single use). + - name: urls + description: Bucket URLs. + - name: urls_list + description: List of bucket URLs. + requirements: + roles: + - level: Project + roles: + - roles/storage.admin + - roles/iam.serviceAccountUser + services: + - iam.googleapis.com + - storage-api.googleapis.com + - cloudresourcemanager.googleapis.com + - compute.googleapis.com + - serviceusage.googleapis.com diff --git a/cli/bpmetadata/int-test/workflow.sh b/cli/bpmetadata/int-test/workflow.sh new file mode 100755 index 00000000000..64fefd38ada --- /dev/null +++ b/cli/bpmetadata/int-test/workflow.sh @@ -0,0 +1,73 @@ +#! /bin/bash +# Copyright 2023 Google LLC +# +# 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. + +CURRENT_DIR=$1 +WORKING_FOLDER=".working" +BLUPRINT_FOLDER=".blueprint" +GIT_FOLDER="git" +GOLDENS_FOLDER="goldens" +GOLDEN_METADATA="golden-metadata.yaml" +GOLDEN_DISPLAY_METADATA="golden-metadata.display.yaml" +WORKING_METADATA="metadata.yaml" +WORKING_DISPLAY_METADATA="metadata.display.yaml" + +if [[ -n $CURRENT_DIR ]]; then + WORKING_FOLDER="$CURRENT_DIR/.working" +fi + +if [ -d $WORKING_FOLDER ] +then + rm -r -f $WORKING_FOLDER +fi + +mkdir $WORKING_FOLDER && pushd $WORKING_FOLDER +kpt pkg get https://github.com/terraform-google-modules/terraform-google-cloud-storage.git/@v4.0.0 "./$BLUPRINT_FOLDER/" +../../../bin/cft blueprint metadata -d -p "$BLUPRINT_FOLDER/" + +mkdir $GIT_FOLDER +cp "../$GOLDENS_FOLDER/$GOLDEN_METADATA" "../$WORKING_FOLDER/$GIT_FOLDER/$WORKING_METADATA" +cp "../$GOLDENS_FOLDER/$GOLDEN_DISPLAY_METADATA" "../$WORKING_FOLDER/$GIT_FOLDER/$WORKING_DISPLAY_METADATA" + +pushd "$GIT_FOLDER" + +# Confirm if the goldens are still valid with the blueprint schema +../../../../bin/cft blueprint metadata -v +rval=$? + +if [ $rval -ne 0 ]; then + echo "Error! Unable to validate the golden metadata(s)." + exit $rval +fi + +git init +git add . + +cp "../$BLUPRINT_FOLDER/$WORKING_METADATA" "$WORKING_METADATA" +cp "../$BLUPRINT_FOLDER/$WORKING_DISPLAY_METADATA" "$WORKING_DISPLAY_METADATA" + +git diff --exit-code --quiet +rval=$? + +if [ $rval -eq 1 ]; then + echo "Error! Generated metadata(s) do not match the golden(s)." + git diff > diff.txt + cat diff.txt + exit $rval +elif [ $rval -gt 1 ]; then + echo "Error occurred while comparaing metadata(s) to golden." + exit $rval +fi + +echo "Success: generated metadata(s) match the golden(s)." From a5b4176152acae283306eaa34d54bc26eeba503f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 5 May 2023 20:43:02 -0700 Subject: [PATCH 0353/1371] chore: add linter as workflow (#1508) --- .github/workflows/go-lint.yaml | 4 +- .../modules/branch_protection/main.tf | 4 +- .../modules/lint_file/lint.yaml.tftpl | 45 +++++++++++++++++ infra/terraform/modules/lint_file/main.tf | 37 ++++++++++++++ .../terraform/modules/lint_file/variables.tf | 28 +++++++++++ infra/terraform/modules/lint_file/versions.tf | 24 ++++++++++ infra/terraform/test-org/github/protection.tf | 18 ++++++- infra/terraform/test-org/org/locals.tf | 48 ++++++++++--------- 8 files changed, 181 insertions(+), 27 deletions(-) create mode 100644 infra/terraform/modules/lint_file/lint.yaml.tftpl create mode 100644 infra/terraform/modules/lint_file/main.tf create mode 100644 infra/terraform/modules/lint_file/variables.tf create mode 100644 infra/terraform/modules/lint_file/versions.tf diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 0e49c1f235d..2b2afcb7b38 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -5,8 +5,8 @@ on: - master paths: - ".github/workflows/go-lint.yaml" - - "cli" - - "infra/blueprint-test" + - "cli/**" + - "infra/blueprint-test/**" permissions: contents: read diff --git a/infra/terraform/modules/branch_protection/main.tf b/infra/terraform/modules/branch_protection/main.tf index 47859f6d46b..aaaed300a03 100644 --- a/infra/terraform/modules/branch_protection/main.tf +++ b/infra/terraform/modules/branch_protection/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,7 +42,7 @@ resource "github_branch_protection" "default" { contexts = [ "cla/google", "${each.value.name}-int-trigger (cloud-foundation-cicd)", - "${each.value.name}-lint-trigger (cloud-foundation-cicd)", + "lint", "conventionalcommits.org" ] } diff --git a/infra/terraform/modules/lint_file/lint.yaml.tftpl b/infra/terraform/modules/lint_file/lint.yaml.tftpl new file mode 100644 index 00000000000..f7fc57d0e1a --- /dev/null +++ b/infra/terraform/modules/lint_file/lint.yaml.tftpl @@ -0,0 +1,45 @@ +# Copyright 2023 Google LLC +# +# 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. + +name: 'lint' + +on: + pull_request: + branches: + - ${branch} + +concurrency: + group: '$${{ github.workflow }}-$${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + lint: + name: 'lint' + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v3' + - id: variables + run: | + MAKEFILE=$(find . -name Makefile -print -quit) + if [ ! -f $MAKEFILE ]; then + echo dev-tools=gcr.io/cloud-foundation-cicd/cft/developer-tools:1 >> "$GITHUB_OUTPUT" + else + VERSION=$(grep "DOCKER_TAG_VERSION_DEVELOPER_TOOLS := " $MAKEFILE | cut -d\ -f3) + IMAGE=$(grep "DOCKER_IMAGE_DEVELOPER_TOOLS := " $MAKEFILE | cut -d\ -f3) + REGISTRY=$(grep "REGISTRY_URL := " $MAKEFILE | cut -d\ -f3) + echo dev-tools=$${REGISTRY}/$${IMAGE}:$${VERSION} >> "$GITHUB_OUTPUT" + fi + - run: docker run --rm -e EXCLUDE_LINT_DIRS -v $${{ github.workspace }}:/workspace $${{ steps.variables.outputs.dev-tools }} /usr/local/bin/test_lint.sh%{if exclude_lint_dirs != null } + env: + EXCLUDE_LINT_DIRS: ${exclude_lint_dirs}%{ endif } diff --git a/infra/terraform/modules/lint_file/main.tf b/infra/terraform/modules/lint_file/main.tf new file mode 100644 index 00000000000..ff2f8dab527 --- /dev/null +++ b/infra/terraform/modules/lint_file/main.tf @@ -0,0 +1,37 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +locals { + commit_author = "CFT Bot" + commit_email = "cloud-foundation-bot@google.com" +} + +data "github_repository" "repo" { + for_each = toset(flatten([for value in var.repos_map : value.name if value.disable_lint_yaml != true])) + name = each.value +} + +resource "github_repository_file" "file" { + for_each = data.github_repository.repo + repository = each.value.name + branch = each.value.default_branch + file = ".github/workflows/lint.yaml" + commit_message = "chore: update .github/workflows/lint.yaml" + commit_author = local.commit_author + commit_email = local.commit_email + overwrite_on_create = true + content = templatefile("${path.module}/lint.yaml.tftpl", { branch = each.value.default_branch, exclude_lint_dirs = var.repos_map[each.value.name].exclude_lint_dirs }) +} diff --git a/infra/terraform/modules/lint_file/variables.tf b/infra/terraform/modules/lint_file/variables.tf new file mode 100644 index 00000000000..609c112c4ea --- /dev/null +++ b/infra/terraform/modules/lint_file/variables.tf @@ -0,0 +1,28 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +/****************************************** + Required variables +*******************************************/ + +variable "repos_map" { + description = "Map of Repos" + type = map(object({ + name = string + exclude_lint_dirs = optional(string) + disable_lint_yaml = optional(bool) + })) +} diff --git a/infra/terraform/modules/lint_file/versions.tf b/infra/terraform/modules/lint_file/versions.tf new file mode 100644 index 00000000000..dc62627037c --- /dev/null +++ b/infra/terraform/modules/lint_file/versions.tf @@ -0,0 +1,24 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +terraform { + required_providers { + github = { + source = "integrations/github" + version = "~> 5.0" + } + } +} diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 68573804dbf..66dcda3b886 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -139,6 +139,22 @@ module "codeowners_gcp" { repos_map = local.gcp_modules_map } +module "lint_yaml_tgm" { + source = "../../modules/lint_file" + repos_map = local.tgm_modules_map + providers = { + github = github + } +} + +module "lint_yaml_gcp" { + source = "../../modules/lint_file" + repos_map = local.gcp_modules_map + providers = { + github = github.gcp + } +} + # Special CI/branch protection case data "github_team" "cft-admins" { @@ -164,7 +180,7 @@ resource "github_branch_protection" "terraform-example-foundation" { "cla/google", "terraform-example-foundation-int-trigger-default (cloud-foundation-cicd)", "terraform-example-foundation-int-trigger-HubAndSpoke (cloud-foundation-cicd)", - "terraform-example-foundation-lint-trigger (cloud-foundation-cicd)", + "lint", "conventionalcommits.org" ] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index fa0d316cc8b..439cee3c564 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -55,15 +55,17 @@ locals { /* * repos schema - * name = "string" (required for modules) - * short_name = "string" (optional for modules, if not prefixed with 'terraform-google-') - * org = "terraform-google-modules" or "GoogleCloudPlatform" (required) - * description = "string" (required) - * owners = "list(string)" ["user1", "user2"] (optional) - * groups = "list(string)" ["group1", "group1"] (optional) - * homepage_url = "string" (optional, overrides default) - * module = BOOL (optional, default is true which includes GH repo configuration) - * topics = "string1,string2,string3" (one or more of local.common_topics required if module = true) + * name = "string" (required for modules) + * short_name = "string" (optional for modules, if not prefixed with 'terraform-google-') + * org = "terraform-google-modules" or "GoogleCloudPlatform" (required) + * description = "string" (required) + * owners = "list(string)" ["user1", "user2"] (optional) + * groups = "list(string)" ["group1", "group1"] (optional) + * homepage_url = "string" (optional, overrides default) + * module = BOOL (optional, default is true which includes GH repo configuration) + * topics = "string1,string2,string3" (one or more of local.common_topics required if module = true) + * exclude_lint_dirs = "string" + * disable_lint_yaml = BOOL (optional, default is true) * */ @@ -126,13 +128,14 @@ locals { groups = ["dee-platform-ops"] }, { - name = "terraform-example-foundation" - short_name = "example-foundation" - org = "terraform-google-modules" - description = "Shows how the CFT modules can be composed to build a secure cloud foundation" - owners = ["rjerrems"] - homepage_url = "https://cloud.google.com/architecture/security-foundations" - topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) + name = "terraform-example-foundation" + short_name = "example-foundation" + org = "terraform-google-modules" + description = "Shows how the CFT modules can be composed to build a secure cloud foundation" + owners = ["rjerrems"] + homepage_url = "https://cloud.google.com/architecture/security-foundations" + topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) + exclude_lint_dirs = "\\./3-networks/modules/transitivity/assets" }, { name = "terraform-google-log-analysis" @@ -292,10 +295,11 @@ locals { topics = local.common_topics.devtools }, { - name = "terraform-google-gcloud" - org = "terraform-google-modules" - description = "Executes Google Cloud CLI commands within Terraform" - topics = local.common_topics.devtools + name = "terraform-google-gcloud" + org = "terraform-google-modules" + description = "Executes Google Cloud CLI commands within Terraform" + topics = local.common_topics.devtools + exclude_lint_dirs = "\\./cache" }, { name = "terraform-google-github-actions-runners" @@ -605,14 +609,14 @@ locals { short_name = "large-data-sharing-java-app" org = "GoogleCloudPlatform" description = "Deploys a large data sharing Java web app" - owners = ["donmccasland"] + groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai"] }, { name = "terraform-large-data-sharing-golang-webapp" short_name = "large-data-sharing-go-app" org = "GoogleCloudPlatform" description = "Deploys a large data sharing Golang web app" - owners = ["donmccasland"] + groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai"] }, ] } From f25bd87187108e73a2c28b1bb72ad4a133751964 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Sun, 7 May 2023 21:27:43 -0700 Subject: [PATCH 0354/1371] feat: metadata schema change and int test fixes (#1528) Co-authored-by: Andrew Peabody --- cli/Makefile | 10 ++++- cli/bpmetadata/display.go | 15 +++++++- cli/bpmetadata/display_test.go | 33 ++++++++++++++++ cli/bpmetadata/int-test/README.md | 0 .../goldens/golden-metadata.display.yaml | 38 +++++++++++++++++++ cli/bpmetadata/int-test/workflow.sh | 4 +- cli/bpmetadata/proto/bpmetadata.proto | 20 +++++++++- cli/bpmetadata/proto/bpmetadata_ui.proto | 2 +- cli/bpmetadata/schema/bpmetadataschema.json | 30 ++++++++++++++- cli/bpmetadata/types.go | 18 +++++++++ cli/bpmetadata/types_ui.go | 2 +- 11 files changed, 163 insertions(+), 9 deletions(-) delete mode 100644 cli/bpmetadata/int-test/README.md diff --git a/cli/Makefile b/cli/Makefile index 7fe498b0214..83ac65aa685 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,15 +1,16 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.0 +VERSION=v1.1.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin BUILD_DIR=./bin -SCHEMA_DIR=./bpmetadata/schema NAME=cft BUCKET=gs://cft-cli INT_TEST_DIR=./bpmetadata/int-test +SCHEMA_DIR=./bpmetadata/schema +PROTO_DIR=./bpmetadata/proto # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" @@ -20,6 +21,11 @@ build: go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} +.PHONY: protoc +protoc: + protoc --go_out=${PROTO_DIR}/out --go_opt=paths=source_relative ${PROTO_DIR}/*.proto + go build ${PROTO_DIR}/out/... + .PHONY: publish publish: gcloud alpha storage cp "${BUILD_DIR}/*" "${BUCKET}/${VERSION}" diff --git a/cli/bpmetadata/display.go b/cli/bpmetadata/display.go index 2f129c92950..62910202fad 100644 --- a/cli/bpmetadata/display.go +++ b/cli/bpmetadata/display.go @@ -1,5 +1,7 @@ package bpmetadata +import "strings" + func buildUIInputFromVariables(vars []BlueprintVariable, input *BlueprintUIInput) { if input.Variables == nil { input.Variables = make(map[string]*DisplayVariable) @@ -12,7 +14,18 @@ func buildUIInputFromVariables(vars []BlueprintVariable, input *BlueprintUIInput } input.Variables[v.Name] = &DisplayVariable{ - Name: v.Name, + Name: v.Name, + Title: createTitleFromName(v.Name), } } } + +func createTitleFromName(name string) string { + nameSplit := strings.Split(name, "_") + var titleSplit []string + for _, n := range nameSplit { + titleSplit = append(titleSplit, strings.Title(n)) + } + + return strings.Join(titleSplit, " ") +} diff --git a/cli/bpmetadata/display_test.go b/cli/bpmetadata/display_test.go index da51ac5a40c..414d02c03e9 100644 --- a/cli/bpmetadata/display_test.go +++ b/cli/bpmetadata/display_test.go @@ -95,3 +95,36 @@ func TestUIInputFromVariables(t *testing.T) { }) } } + +func TestCreateTitleFromName(t *testing.T) { + tests := []struct { + name string + inputName string + wantTitle string + }{ + { + name: "name with underscores", + inputName: "foo_bar_baz", + wantTitle: "Foo Bar Baz", + }, + { + name: "name with underscores w/ numbers", + inputName: "foo_bar_baz_01", + wantTitle: "Foo Bar Baz 01", + }, + { + name: "name w/o underscores", + inputName: "FooBarBaz", + wantTitle: "FooBarBaz", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := createTitleFromName(tt.inputName) + if got != tt.wantTitle { + t.Errorf("createTitleFromName() = %v, want %v", got, tt.wantTitle) + } + }) + } +} diff --git a/cli/bpmetadata/int-test/README.md b/cli/bpmetadata/int-test/README.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml index 0a3e29310a7..26c1f4d803a 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml @@ -13,77 +13,115 @@ spec: variables: admins: name: admins + title: Admins bucket_admins: name: bucket_admins + title: Bucket Admins bucket_creators: name: bucket_creators + title: Bucket Creators bucket_hmac_key_admins: name: bucket_hmac_key_admins + title: Bucket Hmac Key Admins bucket_lifecycle_rules: name: bucket_lifecycle_rules + title: Bucket Lifecycle Rules bucket_policy_only: name: bucket_policy_only + title: Bucket Policy Only bucket_storage_admins: name: bucket_storage_admins + title: Bucket Storage Admins bucket_viewers: name: bucket_viewers + title: Bucket Viewers cors: name: cors + title: Cors creators: name: creators + title: Creators custom_placement_config: name: custom_placement_config + title: Custom Placement Config default_event_based_hold: name: default_event_based_hold + title: Default Event Based Hold encryption_key_names: name: encryption_key_names + title: Encryption Key Names folders: name: folders + title: Folders force_destroy: name: force_destroy + title: Force Destroy hmac_key_admins: name: hmac_key_admins + title: Hmac Key Admins hmac_service_accounts: name: hmac_service_accounts + title: Hmac Service Accounts labels: name: labels + title: Labels lifecycle_rules: name: lifecycle_rules + title: Lifecycle Rules location: name: location + title: Location logging: name: logging + title: Logging names: name: names + title: Names prefix: name: prefix + title: Prefix project_id: name: project_id + title: Project Id public_access_prevention: name: public_access_prevention + title: Public Access Prevention randomize_suffix: name: randomize_suffix + title: Randomize Suffix retention_policy: name: retention_policy + title: Retention Policy set_admin_roles: name: set_admin_roles + title: Set Admin Roles set_creator_roles: name: set_creator_roles + title: Set Creator Roles set_hmac_access: name: set_hmac_access + title: Set Hmac Access set_hmac_key_admin_roles: name: set_hmac_key_admin_roles + title: Set Hmac Key Admin Roles set_storage_admin_roles: name: set_storage_admin_roles + title: Set Storage Admin Roles set_viewer_roles: name: set_viewer_roles + title: Set Viewer Roles storage_admins: name: storage_admins + title: Storage Admins storage_class: name: storage_class + title: Storage Class versioning: name: versioning + title: Versioning viewers: name: viewers + title: Viewers website: name: website + title: Website diff --git a/cli/bpmetadata/int-test/workflow.sh b/cli/bpmetadata/int-test/workflow.sh index 64fefd38ada..a39fb8433bf 100755 --- a/cli/bpmetadata/int-test/workflow.sh +++ b/cli/bpmetadata/int-test/workflow.sh @@ -37,8 +37,8 @@ kpt pkg get https://github.com/terraform-google-modules/terraform-google-cloud-s ../../../bin/cft blueprint metadata -d -p "$BLUPRINT_FOLDER/" mkdir $GIT_FOLDER -cp "../$GOLDENS_FOLDER/$GOLDEN_METADATA" "../$WORKING_FOLDER/$GIT_FOLDER/$WORKING_METADATA" -cp "../$GOLDENS_FOLDER/$GOLDEN_DISPLAY_METADATA" "../$WORKING_FOLDER/$GIT_FOLDER/$WORKING_DISPLAY_METADATA" +cp "../$GOLDENS_FOLDER/$GOLDEN_METADATA" "$GIT_FOLDER/$WORKING_METADATA" +cp "../$GOLDENS_FOLDER/$GOLDEN_DISPLAY_METADATA" "$GIT_FOLDER/$WORKING_DISPLAY_METADATA" pushd "$GIT_FOLDER" diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index 06b6a0fd43a..b4e82945c7c 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; -import "bpmetadata_ui.proto"; +import "bpmetadata/proto/bpmetadata_ui.proto"; option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; @@ -84,6 +84,9 @@ message BlueprintInfo { // Support offered, if any for the blueprint. // Manually authored. BlueprintSupport support_info = 13; + + // A list of GCP org policies to be checked for successful deployment. + repeated BlueprintOrgPolicyCheck org_policy_checks = 14; } // BlueprintContent defines the detail for blueprint related content such as @@ -204,6 +207,21 @@ message BlueprintCloudProduct { // A label string for the product, if it is not an integrated GCP product. // E.g. "Data Studio" string label = 3; + + // Is the product's landing page external to the GCP console e.g. + // lookerstudio.google.com + bool is_external = 4; +} + +// BlueprintOrgPolicyCheck defines GCP org policies to be checked +// for successful deployment +message BlueprintOrgPolicyCheck { + // Id for the policy e.g. "compute-vmExternalIpAccess" + string policy_id = 1; + + // If not set, it is assumed any version of this org policy + // prevents successful deployment of this solution. + repeated string required_values = 2; } // QuotaResourceType defines the type of resource a quota is applied to. diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index c58b13292fe..3a6a5112bfa 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; -import "bpmetadata_ui_ext.proto"; +import "bpmetadata/proto/bpmetadata_ui_ext.proto"; option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index 05186996eb6..fb2a5e37a4e 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -62,6 +62,9 @@ }, "label": { "type": "string" + }, + "isExternal": { + "type": "boolean" } }, "additionalProperties": false, @@ -199,6 +202,12 @@ }, "type": "array" }, + "orgPolicyChecks": { + "items": { + "$ref": "#/$defs/BlueprintOrgPolicyCheck" + }, + "type": "array" + }, "quotaDetails": { "items": { "$ref": "#/$defs/BlueprintQuotaDetail" @@ -321,6 +330,24 @@ "name" ] }, + "BlueprintOrgPolicyCheck": { + "properties": { + "policyId": { + "type": "string" + }, + "requiredValues": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "policyId" + ] + }, "BlueprintOutput": { "properties": { "name": { @@ -653,7 +680,8 @@ "additionalProperties": false, "type": "object", "required": [ - "name" + "name", + "title" ] }, "GCEDiskSizeExtension": { diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index d6ff0b5ecfc..91137c61381 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -63,6 +63,9 @@ type BlueprintInfo struct { // Manually authored. CloudProducts []BlueprintCloudProduct `json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` + // A list of GCP org policies to be checked for successful deployment. + OrgPolicyChecks []BlueprintOrgPolicyCheck `json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty"` + // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. // Manually authored. QuotaDetails []BlueprintQuotaDetail `json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` @@ -162,6 +165,21 @@ type BlueprintCloudProduct struct { // A label string for the product, if it is not an integrated GCP product. // E.g. "Data Studio" Label string `json:"label,omitempty" yaml:"label,omitempty"` + + // Is the product's landing page external to the GCP console e.g. + // lookerstudio.google.com + IsExternal bool `json:"isExternal,omitempty" yaml:"isExternal,omitempty"` +} + +// BlueprintOrgPolicyCheck defines GCP org policies to be checked +// for successful deployment +type BlueprintOrgPolicyCheck struct { + // Id for the policy e.g. "compute-vmExternalIpAccess" + PolicyId string `json:"policyId" yaml:"policyId"` + + // If not set, it is assumed any version of this org policy + // prevents successful deployment of this solution. + RequiredValues []string `json:"requiredValues,omitempty" yaml:"requiredValues,omitempty"` } type QuotaResourceType string diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index 8b2e5ffec5f..41b473dd833 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -29,7 +29,7 @@ type DisplayVariable struct { // Visible title for the variable on the UI. If not present, // Name will be used for the Title. - Title string `json:"title,omitempty" yaml:"title,omitempty"` + Title string `json:"title" yaml:"title"` // A flag to hide or show the variable on the UI. Invisible bool `json:"invisible,omitempty" yaml:"invisible,omitempty"` From be0eeeacaa196df4b83a8679b9d10bfe70b3e8c8 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 8 May 2023 11:22:30 -0500 Subject: [PATCH 0355/1371] chore: Update Tools to 1.11.7 (#1522) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 496a1816dd8..f9f7bd9513f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -32,7 +32,7 @@ KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.31 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.0.2 +CFT_CLI_VERSION := 1.1.0 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.25.9 TFLINT_VERSION := 0.41.0 @@ -47,9 +47,9 @@ KIND_VERSION := 0.17.0 GATOR_VERSION := 3.11.1 OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.14.0 +GCRANE_VERSION := 0.15.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 655772044433f58c652ad09b60a992196048d948 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 8 May 2023 09:51:59 -0700 Subject: [PATCH 0356/1371] chore: support any linter ENVs (#1531) --- .../modules/lint_file/lint.yaml.tftpl | 11 +++++-- infra/terraform/modules/lint_file/main.tf | 2 +- .../terraform/modules/lint_file/variables.tf | 2 +- infra/terraform/test-org/org/locals.tf | 32 +++++++++++-------- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/infra/terraform/modules/lint_file/lint.yaml.tftpl b/infra/terraform/modules/lint_file/lint.yaml.tftpl index f7fc57d0e1a..7105dcb34fb 100644 --- a/infra/terraform/modules/lint_file/lint.yaml.tftpl +++ b/infra/terraform/modules/lint_file/lint.yaml.tftpl @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# NOTE: This file is automatically generated from values at: +# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/org/locals.tf + name: 'lint' on: @@ -32,7 +35,7 @@ jobs: - id: variables run: | MAKEFILE=$(find . -name Makefile -print -quit) - if [ ! -f $MAKEFILE ]; then + if [ ! -z "$MAKEFILE" ]; then echo dev-tools=gcr.io/cloud-foundation-cicd/cft/developer-tools:1 >> "$GITHUB_OUTPUT" else VERSION=$(grep "DOCKER_TAG_VERSION_DEVELOPER_TOOLS := " $MAKEFILE | cut -d\ -f3) @@ -40,6 +43,8 @@ jobs: REGISTRY=$(grep "REGISTRY_URL := " $MAKEFILE | cut -d\ -f3) echo dev-tools=$${REGISTRY}/$${IMAGE}:$${VERSION} >> "$GITHUB_OUTPUT" fi - - run: docker run --rm -e EXCLUDE_LINT_DIRS -v $${{ github.workspace }}:/workspace $${{ steps.variables.outputs.dev-tools }} /usr/local/bin/test_lint.sh%{if exclude_lint_dirs != null } + - run: docker run --rm %{if lint_env != null }%{ for key, value in lint_env ~}-e ${key} %{ endfor ~}%{ endif }-v $${{ github.workspace }}:/workspace $${{ steps.variables.outputs.dev-tools }} /usr/local/bin/test_lint.sh%{if lint_env != null } env: - EXCLUDE_LINT_DIRS: ${exclude_lint_dirs}%{ endif } +%{ for key, value in lint_env ~} + ${key}: ${value} +%{ endfor ~}%{ endif } diff --git a/infra/terraform/modules/lint_file/main.tf b/infra/terraform/modules/lint_file/main.tf index ff2f8dab527..34626a0976e 100644 --- a/infra/terraform/modules/lint_file/main.tf +++ b/infra/terraform/modules/lint_file/main.tf @@ -33,5 +33,5 @@ resource "github_repository_file" "file" { commit_author = local.commit_author commit_email = local.commit_email overwrite_on_create = true - content = templatefile("${path.module}/lint.yaml.tftpl", { branch = each.value.default_branch, exclude_lint_dirs = var.repos_map[each.value.name].exclude_lint_dirs }) + content = templatefile("${path.module}/lint.yaml.tftpl", { branch = each.value.default_branch, lint_env = var.repos_map[each.value.name].lint_env }) } diff --git a/infra/terraform/modules/lint_file/variables.tf b/infra/terraform/modules/lint_file/variables.tf index 609c112c4ea..ac9cff5115f 100644 --- a/infra/terraform/modules/lint_file/variables.tf +++ b/infra/terraform/modules/lint_file/variables.tf @@ -22,7 +22,7 @@ variable "repos_map" { description = "Map of Repos" type = map(object({ name = string - exclude_lint_dirs = optional(string) + lint_env = optional(map(string)) disable_lint_yaml = optional(bool) })) } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 439cee3c564..3d3bf16922a 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -64,7 +64,7 @@ locals { * homepage_url = "string" (optional, overrides default) * module = BOOL (optional, default is true which includes GH repo configuration) * topics = "string1,string2,string3" (one or more of local.common_topics required if module = true) - * exclude_lint_dirs = "string" + * lint_env = "map(string)" (optional) * disable_lint_yaml = BOOL (optional, default is true) * */ @@ -128,14 +128,18 @@ locals { groups = ["dee-platform-ops"] }, { - name = "terraform-example-foundation" - short_name = "example-foundation" - org = "terraform-google-modules" - description = "Shows how the CFT modules can be composed to build a secure cloud foundation" - owners = ["rjerrems"] - homepage_url = "https://cloud.google.com/architecture/security-foundations" - topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) - exclude_lint_dirs = "\\./3-networks/modules/transitivity/assets" + name = "terraform-example-foundation" + short_name = "example-foundation" + org = "terraform-google-modules" + description = "Shows how the CFT modules can be composed to build a secure cloud foundation" + owners = ["rjerrems"] + homepage_url = "https://cloud.google.com/architecture/security-foundations" + topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) + lint_env = { + "EXCLUDE_LINT_DIRS" = "\\./3-networks/modules/transitivity/assets", + "ENABLE_PARALLEL" = "0", + "DISABLE_TFLINT" = "1" + } }, { name = "terraform-google-log-analysis" @@ -295,11 +299,11 @@ locals { topics = local.common_topics.devtools }, { - name = "terraform-google-gcloud" - org = "terraform-google-modules" - description = "Executes Google Cloud CLI commands within Terraform" - topics = local.common_topics.devtools - exclude_lint_dirs = "\\./cache" + name = "terraform-google-gcloud" + org = "terraform-google-modules" + description = "Executes Google Cloud CLI commands within Terraform" + topics = local.common_topics.devtools + lint_env = { "EXCLUDE_LINT_DIRS" = "\\./cache" } }, { name = "terraform-google-github-actions-runners" From 047e785730400865fb85af63f8ea5850b1c18997 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 8 May 2023 09:55:14 -0700 Subject: [PATCH 0357/1371] chore: remove TF data elements (#1529) --- .../modules/branch_protection/main.tf | 19 +--- .../modules/branch_protection/variables.tf | 9 +- .../terraform/modules/codeowners_file/main.tf | 13 +-- .../modules/codeowners_file/variables.tf | 7 +- infra/terraform/modules/lint_file/main.tf | 9 +- .../terraform/modules/lint_file/variables.tf | 5 + infra/terraform/modules/repo_file/main.tf | 15 +-- .../terraform/modules/repo_file/variables.tf | 9 +- .../terraform/modules/repositories/outputs.tf | 4 +- infra/terraform/test-org/github/labels.tf | 6 +- infra/terraform/test-org/github/outputs.tf | 4 +- infra/terraform/test-org/github/protection.tf | 96 +++++++++---------- 12 files changed, 78 insertions(+), 118 deletions(-) diff --git a/infra/terraform/modules/branch_protection/main.tf b/infra/terraform/modules/branch_protection/main.tf index aaaed300a03..98ef472b15a 100644 --- a/infra/terraform/modules/branch_protection/main.tf +++ b/infra/terraform/modules/branch_protection/main.tf @@ -14,21 +14,8 @@ * limitations under the License. */ -provider "github" { - owner = var.org -} - -data "github_team" "admin" { - slug = var.admin -} - -data "github_repository" "repo" { - for_each = toset(var.repo_list) - name = each.value -} - resource "github_branch_protection" "default" { - for_each = data.github_repository.repo + for_each = var.repo_list repository_id = each.value.node_id pattern = each.value.default_branch @@ -41,7 +28,7 @@ resource "github_branch_protection" "default" { strict = true contexts = [ "cla/google", - "${each.value.name}-int-trigger (cloud-foundation-cicd)", + "${each.key}-int-trigger (cloud-foundation-cicd)", "lint", "conventionalcommits.org" ] @@ -51,7 +38,7 @@ resource "github_branch_protection" "default" { blocks_creations = false push_restrictions = [ - data.github_team.admin.node_id + var.admin ] } diff --git a/infra/terraform/modules/branch_protection/variables.tf b/infra/terraform/modules/branch_protection/variables.tf index 562a1118d45..118a1f88904 100644 --- a/infra/terraform/modules/branch_protection/variables.tf +++ b/infra/terraform/modules/branch_protection/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,14 +18,9 @@ Required variables *******************************************/ -variable "org" { - description = "GitHub Org" - type = string -} - variable "repo_list" { description = "List of Repos" - type = list(any) + type = map(any) } variable "admin" { diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf index 51652340cf6..2ca5fd6cf1a 100644 --- a/infra/terraform/modules/codeowners_file/main.tf +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,19 +21,14 @@ locals { groups = { for value in var.repos_map : value.name => join(" ", formatlist("@${value.org}/%s", value.groups)) if length(value.groups) > 0 } } -data "github_repository" "repo" { - for_each = var.repos_map - name = each.value.name -} - resource "github_repository_file" "CODEOWNERS" { - for_each = data.github_repository.repo - repository = each.value.name + for_each = var.repo_list + repository = each.key branch = each.value.default_branch file = "CODEOWNERS" commit_message = "chore: update CODEOWNERS" commit_author = local.commit_author commit_email = local.commit_email overwrite_on_create = true - content = "${trimspace("* @${var.org}/${var.owner} ${try(local.owners[each.value.name], "")} ${try(local.groups[each.value.name], "")}")}\n" + content = "${trimspace("* @${var.org}/${var.owner} ${try(local.owners[each.key], "")} ${try(local.groups[each.key], "")}")}\n" } diff --git a/infra/terraform/modules/codeowners_file/variables.tf b/infra/terraform/modules/codeowners_file/variables.tf index 553c4f7f39a..5ff1020742a 100644 --- a/infra/terraform/modules/codeowners_file/variables.tf +++ b/infra/terraform/modules/codeowners_file/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,3 +38,8 @@ variable "repos_map" { groups = optional(list(string), []) })) } + +variable "repo_list" { + description = "List of Repos" + type = map(any) +} diff --git a/infra/terraform/modules/lint_file/main.tf b/infra/terraform/modules/lint_file/main.tf index 34626a0976e..0508d1f658e 100644 --- a/infra/terraform/modules/lint_file/main.tf +++ b/infra/terraform/modules/lint_file/main.tf @@ -19,14 +19,9 @@ locals { commit_email = "cloud-foundation-bot@google.com" } -data "github_repository" "repo" { - for_each = toset(flatten([for value in var.repos_map : value.name if value.disable_lint_yaml != true])) - name = each.value -} - resource "github_repository_file" "file" { - for_each = data.github_repository.repo - repository = each.value.name + for_each = { for k, v in var.repo_list : k => v if var.repos_map[k].disable_lint_yaml != true } + repository = each.key branch = each.value.default_branch file = ".github/workflows/lint.yaml" commit_message = "chore: update .github/workflows/lint.yaml" diff --git a/infra/terraform/modules/lint_file/variables.tf b/infra/terraform/modules/lint_file/variables.tf index ac9cff5115f..a711c810798 100644 --- a/infra/terraform/modules/lint_file/variables.tf +++ b/infra/terraform/modules/lint_file/variables.tf @@ -26,3 +26,8 @@ variable "repos_map" { disable_lint_yaml = optional(bool) })) } + +variable "repo_list" { + description = "List of Repos" + type = map(any) +} diff --git a/infra/terraform/modules/repo_file/main.tf b/infra/terraform/modules/repo_file/main.tf index 84eef481506..0a8f3b52869 100644 --- a/infra/terraform/modules/repo_file/main.tf +++ b/infra/terraform/modules/repo_file/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,23 +14,14 @@ * limitations under the License. */ -provider "github" { - owner = var.org -} - locals { commit_author = "CFT Bot" commit_email = "cloud-foundation-bot@google.com" } -data "github_repository" "repo" { - for_each = toset(var.repo_list) - name = each.value -} - resource "github_repository_file" "file" { - for_each = data.github_repository.repo - repository = each.value.name + for_each = var.repo_list + repository = each.key branch = each.value.default_branch file = var.filename commit_message = "chore: update ${var.filename}" diff --git a/infra/terraform/modules/repo_file/variables.tf b/infra/terraform/modules/repo_file/variables.tf index 915372da53a..01fb28ed7bb 100644 --- a/infra/terraform/modules/repo_file/variables.tf +++ b/infra/terraform/modules/repo_file/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,14 +18,9 @@ Required variables *******************************************/ -variable "org" { - description = "GitHub Org" - type = string -} - variable "repo_list" { description = "List of Repos" - type = list(any) + type = map(any) } variable "filename" { diff --git a/infra/terraform/modules/repositories/outputs.tf b/infra/terraform/modules/repositories/outputs.tf index 0a126e4045c..2fb4140f6a8 100644 --- a/infra/terraform/modules/repositories/outputs.tf +++ b/infra/terraform/modules/repositories/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,5 +15,5 @@ */ output "repos" { - value = [for value in github_repository.repo : value.name] + value = { for value in github_repository.repo : value.name => value } } diff --git a/infra/terraform/test-org/github/labels.tf b/infra/terraform/test-org/github/labels.tf index f4468134426..435dd60d4e7 100644 --- a/infra/terraform/test-org/github/labels.tf +++ b/infra/terraform/test-org/github/labels.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC + * Copyright 2019-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -122,13 +122,13 @@ locals { module "repo_labels_gcp" { source = "../../modules/repo_labels" org = "GoogleCloudPlatform" - repo_list = module.repos_gcp.repos + repo_list = [for k, v in module.repos_gcp.repos : k] labels = local.labels } module "repo_labels_tgm" { source = "../../modules/repo_labels" org = "terraform-google-modules" - repo_list = setunion(module.repos_tgm.repos, ["terraform-docs-samples"]) + repo_list = setunion([for k, v in module.repos_tgm.repos : k], ["terraform-docs-samples"]) labels = local.labels } diff --git a/infra/terraform/test-org/github/outputs.tf b/infra/terraform/test-org/github/outputs.tf index 9330530bc2b..7ad95a067c3 100644 --- a/infra/terraform/test-org/github/outputs.tf +++ b/infra/terraform/test-org/github/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC + * Copyright 2019-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,5 +19,5 @@ output "labels" { } output "protected_repos" { - value = setunion(module.repos_gcp.repos, module.repos_tgm.repos) + value = setunion([for k, v in module.repos_gcp.repos : k], [for k, v in module.repos_tgm.repos : k]) } diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 66dcda3b886..44cbaf17fb7 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -20,13 +20,21 @@ locals { users = distinct(flatten([for value in local.modules : value.owners if try(value.owners, null) != null])) } +data "github_team" "cft-admins" { + slug = "cft-admins" + provider = github +} + +data "github_team" "blueprint-solutions" { + slug = "blueprint-solutions" + provider = github.gcp +} + module "repos_tgm" { source = "../../modules/repositories" repos_map = local.tgm_modules_map team_id = module.collaborators_tgm.id - providers = { - github = github - } + providers = { github = github } } module "repos_gcp" { @@ -34,140 +42,126 @@ module "repos_gcp" { repos_map = local.gcp_modules_map # TODO: filter team on users already part of the org # team_id = module.collaborators_gcp.id - providers = { - github = github.gcp - } + providers = { github = github.gcp } } // terraform-example-foundation CI is a special case - below module "branch_protection_tgm" { source = "../../modules/branch_protection" - org = "terraform-google-modules" - repo_list = setsubtract(module.repos_tgm.repos, ["terraform-example-foundation"]) - admin = "cft-admins" + repo_list = { for k, v in module.repos_tgm.repos : k => v if k != "terraform-example-foundation" } + admin = data.github_team.cft-admins.node_id + providers = { github = github } } module "branch_protection_gcp" { source = "../../modules/branch_protection" - org = "GoogleCloudPlatform" repo_list = module.repos_gcp.repos - admin = "blueprint-solutions" + admin = data.github_team.blueprint-solutions.node_id + providers = { github = github.gcp } } -// terraform-example-foundation renovate is a special case - manual +// terraform-example-foundation renovate is a special case - below module "renovate_json_tgm" { source = "../../modules/repo_file" - org = "terraform-google-modules" - repo_list = setsubtract(module.repos_tgm.repos, ["terraform-example-foundation"]) + repo_list = { for k, v in module.repos_tgm.repos : k => v if k != "terraform-example-foundation" } filename = ".github/renovate.json" content = file("${path.module}/resources/renovate.json") + providers = { github = github } } module "renovate_json_gcp" { source = "../../modules/repo_file" - org = "GoogleCloudPlatform" repo_list = module.repos_gcp.repos filename = ".github/renovate.json" content = file("${path.module}/resources/renovate.json") + providers = { github = github.gcp } } module "stale_yml_tgm" { source = "../../modules/repo_file" - org = "terraform-google-modules" repo_list = module.repos_tgm.repos filename = ".github/workflows/stale.yml" content = file("${path.module}/resources/stale.yml") + providers = { github = github } } module "stale_yml_gcp" { source = "../../modules/repo_file" - org = "GoogleCloudPlatform" repo_list = module.repos_gcp.repos filename = ".github/workflows/stale.yml" content = file("${path.module}/resources/stale.yml") + providers = { github = github.gcp } } module "conventional-commit-lint_yaml_tgm" { source = "../../modules/repo_file" - org = "terraform-google-modules" repo_list = module.repos_tgm.repos filename = ".github/conventional-commit-lint.yaml" content = file("${path.module}/resources/conventional-commit-lint.yaml") + providers = { github = github } } module "conventional-commit-lint_yaml_gcp" { source = "../../modules/repo_file" - org = "GoogleCloudPlatform" repo_list = module.repos_gcp.repos filename = ".github/conventional-commit-lint.yaml" content = file("${path.module}/resources/conventional-commit-lint.yaml") + providers = { github = github.gcp } } module "trusted-contribution_yml_tgm" { source = "../../modules/repo_file" - org = "terraform-google-modules" repo_list = module.repos_tgm.repos filename = ".github/trusted-contribution.yml" content = file("${path.module}/resources/trusted-contribution.yml") + providers = { github = github } } module "trusted-contribution_yml_gcp" { source = "../../modules/repo_file" - org = "GoogleCloudPlatform" repo_list = module.repos_gcp.repos filename = ".github/trusted-contribution.yml" content = file("${path.module}/resources/trusted-contribution.yml") + providers = { github = github.gcp } } module "codeowners_tgm" { - source = "../../modules/codeowners_file" - org = "terraform-google-modules" - providers = { - github = github - } + source = "../../modules/codeowners_file" + org = "terraform-google-modules" + providers = { github = github } owner = "cft-admins" repos_map = local.tgm_modules_map + repo_list = module.repos_tgm.repos } module "codeowners_gcp" { - source = "../../modules/codeowners_file" - org = "GoogleCloudPlatform" - providers = { - github = github.gcp - } + source = "../../modules/codeowners_file" + org = "GoogleCloudPlatform" + providers = { github = github.gcp } owner = "blueprint-solutions" repos_map = local.gcp_modules_map + repo_list = module.repos_gcp.repos } module "lint_yaml_tgm" { source = "../../modules/lint_file" repos_map = local.tgm_modules_map - providers = { - github = github - } + repo_list = module.repos_tgm.repos + providers = { github = github } } module "lint_yaml_gcp" { source = "../../modules/lint_file" repos_map = local.gcp_modules_map - providers = { - github = github.gcp - } + repo_list = module.repos_gcp.repos + providers = { github = github.gcp } } # Special CI/branch protection case -data "github_team" "cft-admins" { - slug = "cft-admins" -} - -data "github_repository" "terraform-example-foundation" { - name = "terraform-example-foundation" -} - resource "github_branch_protection" "terraform-example-foundation" { - repository_id = data.github_repository.terraform-example-foundation.node_id - pattern = data.github_repository.terraform-example-foundation.default_branch + repository_id = module.repos_tgm.repos["terraform-example-foundation"].node_id + pattern = module.repos_tgm.repos["terraform-example-foundation"].default_branch required_pull_request_reviews { required_approving_review_count = 1 @@ -195,9 +189,7 @@ resource "github_branch_protection" "terraform-example-foundation" { # collaborator teams for approved CI module "collaborators_tgm" { - source = "../../modules/team" - users = local.users - providers = { - github = github - } + source = "../../modules/team" + users = local.users + providers = { github = github } } From 4cbadb55d4f854494495da7f3396eb15e6069a9e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 8 May 2023 10:03:01 -0700 Subject: [PATCH 0358/1371] chore: add go-lint globs (#1530) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 2b2afcb7b38..20452c428ee 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -33,7 +33,7 @@ jobs: with: filters: | src: - - ${{ matrix.folder }} + - ${{ matrix.folder }}/** - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint From da00cc5f066739bfece154197947a01d9acc47e0 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 8 May 2023 10:38:29 -0700 Subject: [PATCH 0359/1371] fix: adds unspecified enum value for IP type for bpmetadata (#1534) --- cli/Makefile | 2 +- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 5 +++-- cli/bpmetadata/schema/bpmetadataschema.json | 1 + cli/bpmetadata/types_ui_ext.go | 7 ++++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 83ac65aa685..76a7802c7d1 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.1 +VERSION=v1.1.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index cdbd5f5affd..76feac08338 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -125,10 +125,11 @@ message GCENetworkExtension { // ExternalIPType specifies the type of external IP address. enum ExternalIPType { + IP_UNSPECIFIED = 0; // EPHEMERAL indicates that the external IP address is ephemeral. - IP_EPHEMERAL = 0; + IP_EPHEMERAL = 1; // STATIC indicates that the external IP address is static. - IP_STATIC = 1; + IP_STATIC = 2; } message GCEExternalIPExtension { diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index fb2a5e37a4e..255c1f6ed6c 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -704,6 +704,7 @@ "type": { "type": "string", "enum": [ + "IP_UNSPECIFIED", "IP_EPHEMERAL", "IP_STATIC" ] diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go index 1e8e66c0e42..ae072c365b5 100644 --- a/cli/bpmetadata/types_ui_ext.go +++ b/cli/bpmetadata/types_ui_ext.go @@ -108,8 +108,9 @@ type GCENetworkExtension struct { type ExternalIPType string const ( - IPEphemeral ExternalIPType = "IP_EPHEMERAL" - IPStatic ExternalIPType = "IP_STATIC" + IPUnspecified ExternalIPType = "IP_UNSPECIFIED" + IPEphemeral ExternalIPType = "IP_EPHEMERAL" + IPStatic ExternalIPType = "IP_STATIC" ) type GCEExternalIPExtension struct { @@ -119,7 +120,7 @@ type GCEExternalIPExtension struct { // Type specifies if the external IP is ephemeral or static. // Defaults to ephemeral if not specified. - Type ExternalIPType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=IP_EPHEMERAL,enum=IP_STATIC"` + Type ExternalIPType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=IP_UNSPECIFIED,enum=IP_EPHEMERAL,enum=IP_STATIC"` } type GCEIPForwardingExtension struct { From 763956469b081b3169d992817932e0ac9ebc18fa Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 8 May 2023 11:43:52 -0700 Subject: [PATCH 0360/1371] chore: retire comment bot and lint trigger (#1532) --- .../function.tf | 72 ++++++++++--------- .../terraform/test-org/ci-triggers/outputs.tf | 5 -- .../test-org/ci-triggers/triggers.tf | 18 ----- 3 files changed, 37 insertions(+), 58 deletions(-) diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf b/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf index b59ca2502ad..8441a7a45d8 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf @@ -14,43 +14,45 @@ * limitations under the License. */ -locals { - project_id = "cloud-foundation-cicd" -} +# TODO: no longer in-use, remove per https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1537 -module "gcf_service_account" { - source = "terraform-google-modules/service-accounts/google" - version = "~> 4.1" - project_id = local.project_id - names = ["pr-comment-cf-sa"] - project_roles = [ - "${local.project_id}=>roles/cloudbuild.builds.editor" - ] -} +# locals { +# project_id = "cloud-foundation-cicd" +# } -resource "random_id" "suffix" { - byte_length = 4 -} +# module "gcf_service_account" { +# source = "terraform-google-modules/service-accounts/google" +# version = "~> 4.1" +# project_id = local.project_id +# names = ["pr-comment-cf-sa"] +# project_roles = [ +# "${local.project_id}=>roles/cloudbuild.builds.editor" +# ] +# } -module "pr_comment_build_function" { - source = "terraform-google-modules/event-function/google" - version = "~> 2.3" - name = "pr-comment-downstream-builder-${random_id.suffix.hex}" - project_id = local.project_id - region = "us-central1" - description = "Launches a downstream build that comments on a PR." - entry_point = "main" - runtime = "python37" - source_directory = "${path.module}/function_source" - service_account_email = module.gcf_service_account.email - bucket_force_destroy = true +# resource "random_id" "suffix" { +# byte_length = 4 +# } - environment_variables = { - CLOUDBUILD_PROJECT = local.project_id - } +# module "pr_comment_build_function" { +# source = "terraform-google-modules/event-function/google" +# version = "~> 2.3" +# name = "pr-comment-downstream-builder-${random_id.suffix.hex}" +# project_id = local.project_id +# region = "us-central1" +# description = "Launches a downstream build that comments on a PR." +# entry_point = "main" +# runtime = "python37" +# source_directory = "${path.module}/function_source" +# service_account_email = module.gcf_service_account.email +# bucket_force_destroy = true - event_trigger = { - event_type = "google.pubsub.topic.publish" - resource = "projects/${local.project_id}/topics/cloud-builds" - } -} +# environment_variables = { +# CLOUDBUILD_PROJECT = local.project_id +# } + +# event_trigger = { +# event_type = "google.pubsub.topic.publish" +# resource = "projects/${local.project_id}/topics/cloud-builds" +# } +# } diff --git a/infra/terraform/test-org/ci-triggers/outputs.tf b/infra/terraform/test-org/ci-triggers/outputs.tf index 4a6a31d0bd7..3849801aa21 100644 --- a/infra/terraform/test-org/ci-triggers/outputs.tf +++ b/infra/terraform/test-org/ci-triggers/outputs.tf @@ -18,11 +18,6 @@ output "repo_folder" { value = { for k, v in local.repo_folder : k => v.folder_id } } - -output "lint_triggers" { - value = google_cloudbuild_trigger.lint_trigger.* -} - output "int_triggers" { value = google_cloudbuild_trigger.int_trigger.* } diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 35999c3fa3c..1db519c5242 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -14,24 +14,6 @@ * limitations under the License. */ -resource "google_cloudbuild_trigger" "lint_trigger" { - provider = google-beta - project = local.project_id - name = "${each.key}-lint-trigger" - description = "Lint tests on pull request for ${each.key}" - for_each = merge(local.repo_folder, local.example_foundation) - github { - owner = each.value.gh_org - name = each.key - pull_request { - branch = ".*" - comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" - } - } - - filename = "build/lint.cloudbuild.yaml" -} - resource "google_cloudbuild_trigger" "int_trigger" { provider = google-beta project = local.project_id From 2e0a895d85e4be33bfbf3b723705ab84b83cfb5b Mon Sep 17 00:00:00 2001 From: Shabir Mohamed Abdul Samadh <7249208+Shabirmean@users.noreply.github.com> Date: Mon, 8 May 2023 20:06:39 -0400 Subject: [PATCH 0361/1371] chore: exclude spanner ddl from header lint (#1538) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 3d3bf16922a..7ac21175943 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -126,6 +126,9 @@ locals { description = "Deploys a dynamic Java webapp into a Google Kubernetes Engine cluster." owners = ["shabirmean", "Mukamik"] groups = ["dee-platform-ops"] + lint_env = { + "EXCLUDE_HEADER_CHECK" = "\\./infra/modules/spanner/sql-schema" + } }, { name = "terraform-example-foundation" From 97b8ebdc323af7c018507bcdb9a69b502e81e2ab Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 8 May 2023 17:24:44 -0700 Subject: [PATCH 0362/1371] chore: fix repo permissions (#1539) --- infra/terraform/modules/repositories/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index e41809e2672..e03a7dfbe4c 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -67,7 +67,7 @@ resource "github_repository_collaborator" "owners" { } repository = each.value.repo username = each.value.owner - permission = "maintain" + permission = "admin" } resource "github_team_repository" "groups" { @@ -76,7 +76,7 @@ resource "github_team_repository" "groups" { } repository = each.value.repo team_id = each.value.group - permission = "maintain" + permission = "admin" } resource "github_team_repository" "collaborators" { From 9754dd9309c80bb4046ac36cfd078b0a4cb9006e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 10 May 2023 19:14:28 -0700 Subject: [PATCH 0363/1371] chore: update CODEOWNERS (#1542) --- CODEOWNERS | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index b8f1f2205e5..1807a648023 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,11 +1,8 @@ # Main team administering overall repo -* @bharathkkb @ocsig @kaariger @g-awmalik @apeabody +* @bharathkkb @g-awmalik @apeabody # Deployment Manager Reviewers /dm/ @ocsig @sjvanrossum -# CLI owners -/cli/ @bharathkkb @kaariger @g-awmalik @apeabody - # Config Connector team /config-connector/ @ocsig @AlexBulankou @maqiuyujoyce From aba89001ba965106988b51fd9df8df3f8a5c624f Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 10 May 2023 21:15:00 -0500 Subject: [PATCH 0364/1371] chore: Update Tools to 1.11.8 (#1540) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f9f7bd9513f..0daa797075a 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.4.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 429.0.0 +CLOUD_SDK_VERSION := 430.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.6 @@ -30,9 +30,9 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.31 +KPT_VERSION := 1.0.0-beta.32 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.1.0 +CFT_CLI_VERSION := 1.1.2 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.25.9 TFLINT_VERSION := 0.41.0 @@ -49,7 +49,7 @@ OPA_VERSION := 0.42.2 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 6b76dc17db4e64a6aff52b980d5c3ac01b2a901a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 11 May 2023 10:03:04 -0700 Subject: [PATCH 0365/1371] fix: bump GO modules and address lint (#1541) --- infra/blueprint-test/go.mod | 61 ++++---- infra/blueprint-test/go.sum | 148 +++++++++---------- infra/blueprint-test/pkg/benchmark/krm.go | 4 +- infra/blueprint-test/pkg/discovery/config.go | 8 +- infra/blueprint-test/pkg/kpt/kpt.go | 5 +- infra/blueprint-test/pkg/krmt/krm.go | 12 +- infra/blueprint-test/pkg/tft/terraform.go | 6 +- 7 files changed, 121 insertions(+), 123 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index c0043c7a6b7..ccdea00e744 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -3,26 +3,26 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.18 require ( - github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230224220849-babdb61f37fe - github.com/gruntwork-io/terratest v0.41.11 + github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d + github.com/gruntwork-io/terratest v0.41.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/otiai10/copy v1.9.0 - github.com/stretchr/testify v1.8.1 + github.com/otiai10/copy v1.11.0 + github.com/stretchr/testify v1.8.2 github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.8.0 - sigs.k8s.io/kustomize/kyaml v0.14.0 + golang.org/x/mod v0.10.0 + sigs.k8s.io/kustomize/kyaml v0.14.2 ) require ( - cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.18.0 // indirect + cloud.google.com/go v0.110.2 // indirect + cloud.google.com/go/compute v1.19.2 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.12.0 // indirect - cloud.google.com/go/storage v1.29.0 // indirect + cloud.google.com/go/iam v1.0.1 // indirect + cloud.google.com/go/storage v1.30.1 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/aws/aws-sdk-go v1.44.209 // indirect + github.com/aws/aws-sdk-go v1.44.260 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-errors/errors v1.4.2 // indirect @@ -30,25 +30,26 @@ require ( github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/google/gnostic v0.6.9 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.2.0 // indirect + github.com/google/s2a-go v0.1.3 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.7.0 // indirect + github.com/googleapis/gax-go/v2 v2.8.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.0 // indirect + github.com/hashicorp/go-getter v1.7.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/hcl/v2 v2.16.1 // indirect - github.com/hashicorp/terraform-json v0.15.0 // indirect + github.com/hashicorp/hcl/v2 v2.16.2 // indirect + github.com/hashicorp/terraform-json v0.16.0 // indirect github.com/jinzhu/copier v0.3.5 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/klauspost/compress v1.15.15 // indirect + github.com/klauspost/compress v1.16.5 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-zglob v0.0.4 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -57,23 +58,23 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - github.com/tmccombs/hcl2json v0.4.0 // indirect + github.com/tmccombs/hcl2json v0.5.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect - github.com/xlab/treeprint v1.1.0 // indirect - github.com/zclconf/go-cty v1.13.0 // indirect + github.com/xlab/treeprint v1.2.0 // indirect + github.com/zclconf/go-cty v1.13.1 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/oauth2 v0.5.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.9.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/oauth2 v0.8.0 // indirect + golang.org/x/sys v0.8.0 // indirect + golang.org/x/text v0.9.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.110.0 // indirect + google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 // indirect - google.golang.org/grpc v1.53.0 // indirect - google.golang.org/protobuf v1.28.1 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.55.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/kube-openapi v0.0.0-20230224204730-66828de6f33b // indirect + k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 67c4ffba2bd..3aba7dd3c6e 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= +cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -68,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.2 h1:GbJtPo8OKVHbVep8jvM57KidbYHxeE68LOVqouNLrDY= +cloud.google.com/go/compute v1.19.2/go.mod h1:5f5a+iC1IriXYauaQ0EyQmEAEq9CGRnV5xJSQSlTV08= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -109,13 +109,13 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v1.0.1 h1:lyeCAU6jpnVNrE9zGQkTl3WgNgK/X+uWwaw0kynZJMU= +cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= +cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= @@ -172,8 +172,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.29.0 h1:6weCgzRvMg7lzuUurI4697AqIRPU1SvzHhynwpW31jI= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -188,18 +188,17 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS 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= -github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230224220849-babdb61f37fe h1:1xI0kTkm4j3cYzBJc1hNOmWfFnO03FI6EHvb7x73G1Y= -github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230224220849-babdb61f37fe/go.mod h1:prNhhUAODrB2VqHVead9tB8nLU9ffY4e4jjBwLMNO1M= +github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d h1:NQFVnLXevDG7Ht9B/46X3FWHg+gEQc8Q68PlAnY0XsM= +github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d/go.mod h1:prNhhUAODrB2VqHVead9tB8nLU9ffY4e4jjBwLMNO1M= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.209 h1:wZuiaA4eaqYZmoZXqGgNHqVD7y7kUGFvACDGBgowTps= -github.com/aws/aws-sdk-go v1.44.209/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.260 h1:78IJkDpDPXvLXvIkNAKDP/i3z8Vj+3sTAtQYw/v/2o8= +github.com/aws/aws-sdk-go v1.44.260/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= @@ -265,7 +264,6 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -282,8 +280,9 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 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= @@ -328,6 +327,8 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= 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= @@ -345,19 +346,19 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gruntwork-io/terratest v0.41.11 h1:EAHiK6PFWJCVkgW2yUompjSsZQzA0CfBcuqIaXtZdpk= -github.com/gruntwork-io/terratest v0.41.11/go.mod h1:qH1xkPTTGx30XkMHw8jAVIbzqheSjIa5IyiTwSV2vKI= +github.com/gruntwork-io/terratest v0.41.23 h1:GqwK0Nh6IQze3hka6iwuOd1V3wX7/y/85W25d1zpAnE= +github.com/gruntwork-io/terratest v0.41.23/go.mod h1:O6gajNBjO1wvc7Wl9WtbO+ORcdnhAV2GQiBE71ycwIk= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.0 h1:bzrYP+qu/gMrL1au7/aDvkoOVGUJpeKBgbqRHACAFDY= -github.com/hashicorp/go-getter v1.7.0/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= +github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -366,10 +367,10 @@ github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mO github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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/hcl/v2 v2.16.1 h1:BwuxEMD/tsYgbhIW7UuI3crjovf3MzuFWiVgiv57iHg= -github.com/hashicorp/hcl/v2 v2.16.1/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= -github.com/hashicorp/terraform-json v0.15.0 h1:/gIyNtR6SFw6h5yzlbDbACyGvIhKtQi8mTsbkNd79lE= -github.com/hashicorp/terraform-json v0.15.0/go.mod h1:+L1RNzjDU5leLFZkHTFTbJXaoqUC6TqXlFgDoOXrtvk= +github.com/hashicorp/hcl/v2 v2.16.2 h1:mpkHZh/Tv+xet3sy3F9Ld4FyI2tUpWe9x3XtPx9f1a0= +github.com/hashicorp/hcl/v2 v2.16.2/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= +github.com/hashicorp/terraform-json v0.16.0 h1:UKkeWRWb23do5LNAFlh/K3N0ymn1qTOO8c+85Albo3s= +github.com/hashicorp/terraform-json v0.16.0/go.mod h1:v0Ufk9jJnk6tcIZvScHvetlKfiNTC+WS21mnXIlc0B0= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= @@ -384,8 +385,8 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= +github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= 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 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= @@ -394,7 +395,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= @@ -403,31 +403,25 @@ github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= -github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= -github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.4.0 h1:umwcf7gbpEwf7WFzqmWwSv0CzbeMsae2u9ZvpP8j2q4= -github.com/otiai10/mint v1.4.0/go.mod h1:gifjb2MYOoULtKLqUAEILUG/9KONW6f7YsJ6vQLTlFI= +github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= +github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= 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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= 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= @@ -441,8 +435,9 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -453,30 +448,24 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tmccombs/hcl2json v0.4.0 h1:U4NsBBHsAh7lU0vIC6IwmRYwXWMG6dEWHVu4JTjpj1A= -github.com/tmccombs/hcl2json v0.4.0/go.mod h1:B0ZpBthAKbQur6yZRKrtaqDmYLCvgnwHOBApE0faCpU= +github.com/tmccombs/hcl2json v0.5.0 h1:cT2sXStOzKL06c8ZTf9vh+0N8GKGzV7+9RUaY5/iUP8= +github.com/tmccombs/hcl2json v0.5.0/go.mod h1:B0ZpBthAKbQur6yZRKrtaqDmYLCvgnwHOBApE0faCpU= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= -github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= +github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= 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= -github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.13.0 h1:It5dfKTTZHe9aeppbNOda3mN7Ag7sg6QkBNm6TkyFa0= -github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty v1.13.1 h1:0a6bRwuiSHtAmqCqNOE+c2oHgepv0ctoxU4FUe43kwc= +github.com/zclconf/go-cty v1.13.1/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -493,8 +482,9 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -531,10 +521,9 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180811021610-c39426892332/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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -570,6 +559,7 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -582,8 +572,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 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= @@ -609,8 +599,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +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/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= @@ -625,6 +615,7 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ 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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= 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= @@ -685,16 +676,15 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.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.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= +golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= 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= @@ -704,9 +694,10 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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= @@ -819,8 +810,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= 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= @@ -931,8 +922,8 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 h1:znp6mq/drrY+6khTAlJUDNFFcDGV2ENLYKpMq8SyCds= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +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/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= @@ -968,8 +959,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -985,8 +976,9 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +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= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1010,12 +1002,12 @@ 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/kube-openapi v0.0.0-20230224204730-66828de6f33b h1:4dkmFEDQj0ZBLKCxJ0R+qzhvZmEvRdRaaZAE06tR/Lg= -k8s.io/kube-openapi v0.0.0-20230224204730-66828de6f33b/go.mod h1:y5VtZWM9sHHc2ZodIH/6SHzXj+TPU5USoA8lcIeKEKY= +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= 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/kustomize/kyaml v0.14.0 h1:uzH0MzMtYypHW09LbMDk8k/lT/LSsUuCoZIuEGhIBNE= -sigs.k8s.io/kustomize/kyaml v0.14.0/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= +sigs.k8s.io/kustomize/kyaml v0.14.2 h1:9WSwztbzwGszG1bZTziQUmVMrJccnyrLb5ZMKpJGvXw= +sigs.k8s.io/kustomize/kyaml v0.14.2/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= diff --git a/infra/blueprint-test/pkg/benchmark/krm.go b/infra/blueprint-test/pkg/benchmark/krm.go index f9400357043..3a669cd65e9 100644 --- a/infra/blueprint-test/pkg/benchmark/krm.go +++ b/infra/blueprint-test/pkg/benchmark/krm.go @@ -53,7 +53,9 @@ func CreateVariant(b testing.TB, baseDir string, buildDir string, variantName st if err != nil { b.Fatalf("unable to read resources in %s :%v", variantPath, err) } - kpt.UpsertSetters(rs, setters) + if err := kpt.UpsertSetters(rs, setters); err != nil { + b.Fatalf("unable to upsert setters in %s :%v", variantPath, err) + } err = kpt.WritePkgResources(variantPath, rs) if err != nil { b.Fatalf("unable to write resources in %s :%v", variantPath, err) diff --git a/infra/blueprint-test/pkg/discovery/config.go b/infra/blueprint-test/pkg/discovery/config.go index dd7ab873d76..73229a6b8e6 100644 --- a/infra/blueprint-test/pkg/discovery/config.go +++ b/infra/blueprint-test/pkg/discovery/config.go @@ -49,11 +49,11 @@ func GetTestConfig(path string) (BlueprintTestConfig, error) { // isValidTestConfig validates a given BlueprintTestConfig func isValidTestConfig(b BlueprintTestConfig) error { - if b.APIVersion != blueprintTestAPIVersion { - return fmt.Errorf("invalid APIVersion %s expected %s", b.APIVersion, blueprintTestAPIVersion) + if b.ResourceMeta.APIVersion != blueprintTestAPIVersion { + return fmt.Errorf("invalid APIVersion %s expected %s", b.ResourceMeta.APIVersion, blueprintTestAPIVersion) } - if b.Kind != blueprintTestKind { - return fmt.Errorf("invalid Kind %s expected %s", b.Kind, blueprintTestKind) + if b.ResourceMeta.Kind != blueprintTestKind { + return fmt.Errorf("invalid Kind %s expected %s", b.ResourceMeta.Kind, blueprintTestKind) } return nil } diff --git a/infra/blueprint-test/pkg/kpt/kpt.go b/infra/blueprint-test/pkg/kpt/kpt.go index 6e736dc891b..be89f878c8e 100644 --- a/infra/blueprint-test/pkg/kpt/kpt.go +++ b/infra/blueprint-test/pkg/kpt/kpt.go @@ -91,7 +91,10 @@ func findKptfile(nodes []*yaml.RNode) (*kptfilev1.KptFile, error) { return nil, fmt.Errorf("unable to read Kptfile: %v", err) } kf, err := kptutil.DecodeKptfile(s) - return kf, fmt.Errorf("unable to read Kptfile: %v", err) + if err != nil { + return nil, fmt.Errorf("unable to decode Kptfile: %v", err) + } + return kf, nil } } return nil, fmt.Errorf("unable to find Kptfile, please include --include-meta-resources flag if a Kptfile is present") diff --git a/infra/blueprint-test/pkg/krmt/krm.go b/infra/blueprint-test/pkg/krmt/krm.go index 12ee893b51d..b03f43a6ad4 100644 --- a/infra/blueprint-test/pkg/krmt/krm.go +++ b/infra/blueprint-test/pkg/krmt/krm.go @@ -61,9 +61,7 @@ func WithDir(dir string) krmtOption { func WithAdditionalResources(rscs ...string) krmtOption { return func(f *KRMBlueprintTest) { - for _, dir := range rscs { - f.additionalResources = append(f.additionalResources, dir) - } + f.additionalResources = append(f.additionalResources, rscs...) } } @@ -235,7 +233,9 @@ func (b *KRMBlueprintTest) updateSetters() { if err != nil { b.t.Fatalf("unable to read resources in %s :%v", b.buildDir, err) } - kpt.UpsertSetters(rs, b.setters) + if err := kpt.UpsertSetters(rs, b.setters); err != nil { + b.t.Fatalf("unable to upsert setters in %s :%v", b.buildDir, err) + } err = kpt.WritePkgResources(b.buildDir, rs) if err != nil { b.t.Fatalf("unable to write resources in %s :%v", b.buildDir, err) @@ -304,7 +304,7 @@ func (b *KRMBlueprintTest) DefaultTeardown(assert *assert.Assertions) { // ShouldSkip checks if a test should be skipped func (b *KRMBlueprintTest) ShouldSkip() bool { - return b.Spec.Skip + return b.BlueprintTestConfig.Spec.Skip } // AutoDiscoverAndTest discovers KRM config from examples/fixtures and runs tests. @@ -361,7 +361,7 @@ func (b *KRMBlueprintTest) Teardown(assert *assert.Assertions) { // Test runs init, apply, verify, teardown in order for the blueprint. func (b *KRMBlueprintTest) Test() { if b.ShouldSkip() { - b.logger.Logf(b.t, "Skipping test due to config %s", b.Path) + b.logger.Logf(b.t, "Skipping test due to config %s", b.BlueprintTestConfig.Path) b.t.SkipNow() return } diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 5cdcd794f68..4e90ff11226 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -306,7 +306,7 @@ func loadTFEnvVar(m map[string]string, new map[string]string) { // ShouldSkip checks if a test should be skipped func (b *TFBlueprintTest) ShouldSkip() bool { - return b.Spec.Skip + return b.BlueprintTestConfig.Spec.Skip } // shouldRunTerraformVet checks if terraform vet should be executed @@ -416,7 +416,7 @@ func (b *TFBlueprintTest) Teardown(assert *assert.Assertions) { // Test runs init, apply, verify, teardown in order for the blueprint. func (b *TFBlueprintTest) Test() { if b.ShouldSkip() { - b.logger.Logf(b.t, "Skipping test due to config %s", b.Path) + b.logger.Logf(b.t, "Skipping test due to config %s", b.BlueprintTestConfig.Path) b.t.SkipNow() return } @@ -434,7 +434,7 @@ func (b *TFBlueprintTest) RedeployTest(n int, nVars map[int]map[string]interface b.t.Fatalf("n should be 2 or greater but got: %d", n) } if b.ShouldSkip() { - b.logger.Logf(b.t, "Skipping test due to config %s", b.Path) + b.logger.Logf(b.t, "Skipping test due to config %s", b.BlueprintTestConfig.Path) b.t.SkipNow() return } From dffddab5a1f6a4328aaa49684424527a1bcbdb9b Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 11 May 2023 14:19:48 -0700 Subject: [PATCH 0366/1371] chore(master): release blueprint-test 0.5.2 (#1544) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d3b9c9d0bac..ffa1b7ec3f6 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.5.1" + "infra/blueprint-test": "0.5.2" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 915c1219346..bf4d0e9e8fa 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.5.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.5.1...infra/blueprint-test/v0.5.2) (2023-05-11) + + +### Bug Fixes + +* bump GO modules and address lint ([#1541](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1541)) ([6b76dc1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6b76dc17db4e64a6aff52b980d5c3ac01b2a901a)) + ## [0.5.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.5.0...infra/blueprint-test/v0.5.1) (2023-03-20) From fea769eb18ac8d819ca4498fe5dbdf1cabba41a2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 May 2023 03:58:21 +0200 Subject: [PATCH 0367/1371] chore(deps): update dependency google-cloud-build to v3 (#1520) --- .../function_source/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt index b072df4254e..4cf67f77735 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt @@ -1,2 +1,2 @@ - google-cloud-build==1.0.0 + google-cloud-build==3.16.0 protobuf3==0.2.1 From 8edac58a103d668f8b96422ecfed21996a7eff27 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 May 2023 03:58:44 +0200 Subject: [PATCH 0368/1371] chore(deps): update dependency google-api-python-client to v2.86.0 (#1443) --- infra/utils/delete-projects/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/utils/delete-projects/requirements.txt b/infra/utils/delete-projects/requirements.txt index 231759ff0e9..4511de24fa6 100644 --- a/infra/utils/delete-projects/requirements.txt +++ b/infra/utils/delete-projects/requirements.txt @@ -1,4 +1,4 @@ google-cloud==0.34.0 google-cloud-resource-manager==0.30.2 oauth2client==4.1.3 -google-api-python-client==2.80.0 +google-api-python-client==2.86.0 From 007cc87392e8452e6f4fcd7756f68831c8612ec9 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 12 May 2023 09:55:06 -0500 Subject: [PATCH 0369/1371] chore: remove unused scripts (#1550) --- docs/meta/generate-index.py | 146 ---- docs/meta/index.yaml | 697 ------------------ docs/meta/requirements.txt | 3 - docs/meta/terraform.md.tmpl | 19 - docs/terraform.md | 4 - infra/concourse/Makefile | 25 - infra/concourse/Makefile.BUILD | 80 -- .../build/Dockerfile.kitchen-terraform | 80 -- infra/concourse/build/Dockerfile.lint | 49 -- infra/concourse/build/Dockerfile.terraform | 100 --- infra/concourse/build/Dockerfile.unit | 11 - infra/concourse/build/data/Gemfile | 19 - infra/concourse/build/data/Gemfile.lock | 328 --------- infra/concourse/build/data/requirements.txt | 2 - infra/concourse/build/scripts/gcloud_auth.sh | 6 - infra/concourse/pipelines/README.md | 17 - .../pipelines/terraform-google-address.yml | 131 ---- .../pipelines/terraform-google-jenkins.yml | 134 ---- .../pipelines/terraform-google-sql-db.yml | 134 ---- .../pipelines/terraform-google-vpn.yml | 128 ---- infra/concourse/vars/phoogle.yml | 7 - .../utils/delete-projects/delete-projects.py | 102 --- infra/utils/delete-projects/requirements.txt | 4 - 23 files changed, 2226 deletions(-) delete mode 100755 docs/meta/generate-index.py delete mode 100644 docs/meta/index.yaml delete mode 100644 docs/meta/requirements.txt delete mode 100644 docs/meta/terraform.md.tmpl delete mode 100644 docs/terraform.md delete mode 100644 infra/concourse/Makefile delete mode 100644 infra/concourse/Makefile.BUILD delete mode 100644 infra/concourse/build/Dockerfile.kitchen-terraform delete mode 100644 infra/concourse/build/Dockerfile.lint delete mode 100644 infra/concourse/build/Dockerfile.terraform delete mode 100644 infra/concourse/build/Dockerfile.unit delete mode 100644 infra/concourse/build/data/Gemfile delete mode 100644 infra/concourse/build/data/Gemfile.lock delete mode 100644 infra/concourse/build/data/requirements.txt delete mode 100644 infra/concourse/build/scripts/gcloud_auth.sh delete mode 100644 infra/concourse/pipelines/README.md delete mode 100644 infra/concourse/pipelines/terraform-google-address.yml delete mode 100644 infra/concourse/pipelines/terraform-google-jenkins.yml delete mode 100644 infra/concourse/pipelines/terraform-google-sql-db.yml delete mode 100644 infra/concourse/pipelines/terraform-google-vpn.yml delete mode 100644 infra/concourse/vars/phoogle.yml delete mode 100755 infra/utils/delete-projects/delete-projects.py delete mode 100644 infra/utils/delete-projects/requirements.txt diff --git a/docs/meta/generate-index.py b/docs/meta/generate-index.py deleted file mode 100755 index 8d4b65d0d43..00000000000 --- a/docs/meta/generate-index.py +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright 2020 Google LLC -# -# 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 -# -# https://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. - -import os -import sys -import argparse -import yaml - -import requests -from collections import OrderedDict -from jinja2 import Environment, FileSystemLoader - -TERRAFORM_REGISTRY_BASE = "https://registry.terraform.io/v1/" - -class IndexItem(yaml.YAMLObject): - yaml_tag = u'!module' - - def __init__(self, data): - self.children = {} - self.data = data - - def name(self): - return self.data.get("name") - - def url(self): - if "source" in self.data: - return self.data.get("source") - path = self.data.get("path") - return f"{self.parent.url()}/tree/master/{path}" - - def should_display(self): - return not self.data.get('exclude', False) - - def description(self): - return self.data.get("description") - - def add_child_data(self, data): - child = self.add_child(IndexItem(data)) - child.data = {**child.data, **data} - return child - - def add_child(self, child): - if child.name() not in self.children: - self.children[child.name()] = child - child.parent = self - return self.children[child.name()] - - @classmethod - def to_yaml(cls, representer, node): - rep = OrderedDict() - rep_keys = ["name", "description", "source", "path", "exclude"] - for key in rep_keys: - if key in node.data: - rep[key] = node.data[key] - if len(node.children) >= 1: - rep["children"] = sorted(node.children.values(), key=lambda mod: mod.name()) - return representer.represent_mapping(cls.yaml_tag, rep) - - @classmethod - def from_yaml(cls, constructor, node): - data = constructor.construct_mapping(node, deep=True) - children = data.pop("children", []) - item = cls(data) - for child in children: - item.add_child(child) - return item - -def generate_index(root, org_name): - url = f"{TERRAFORM_REGISTRY_BASE}/modules/{org_name}" - r = requests.get(url, params={"limit": 100}) - data = r.json() - - for module in data.get("modules", []): - item = root.add_child_data(module) - id = module.get("id") - r = requests.get(f"{TERRAFORM_REGISTRY_BASE}/modules/{id}") - data = r.json() - for child in data.get("submodules", []): - item.add_child_data(child) - -def render_index(index, templates_dir, docs_dir): - env = Environment( - keep_trailing_newline=True, - loader=FileSystemLoader(templates_dir), - trim_blocks=True, - lstrip_blocks=True, - ) - templates = env.list_templates() - - for template_file in templates: - if not template_file.endswith(".tmpl"): - continue - output_file = os.path.basename(template_file.replace(".tmpl", "")) - - template = env.get_template(template_file) - modules = [mod for mod in index.children.values() if mod.should_display()] - rendered = template.render(modules=modules) - - with open(os.path.join(docs_dir, output_file), "w") as f: - f.write(rendered) - -def main(argv): - parser = argparser() - args = parser.parse_args(argv[1:]) - docs_dir = args.docs_dir - meta_dir = os.path.join(docs_dir, "meta") - - index_file = os.path.join(meta_dir, "index.yaml") - if os.path.isfile(index_file): - with open(index_file, "r") as f: - root = yaml.load(f, Loader=yaml.Loader) - else: - root = IndexItem({"name": "terraform"}) - - if not args.skip_refresh: - generate_index(root, "terraform-google-modules") - generate_index(root, "googlecloudplatform") - - with open(index_file, "w") as f: - yaml.dump(root, f) - - render_index(root, meta_dir, docs_dir) - -def argparser(): - parser = argparse.ArgumentParser(description='Generate index of blueprints') - parser.add_argument('docs_dir', nargs="?", default="docs/") - - parser.add_argument('--skip-refresh', default=False, action='store_true') - - return parser - -if __name__ == "__main__": - main(sys.argv) diff --git a/docs/meta/index.yaml b/docs/meta/index.yaml deleted file mode 100644 index 045dd95793c..00000000000 --- a/docs/meta/index.yaml +++ /dev/null @@ -1,697 +0,0 @@ -!module -children: -- !module - description: A Terraform module for managing Google Cloud IP addresses. - name: address - source: https://github.com/terraform-google-modules/terraform-google-address -- !module - children: - - !module - name: bastion-group - path: modules/bastion-group - - !module - name: iap-tunneling - path: modules/iap-tunneling - description: This module will generate a bastion host vm compatible with OS Login - and IAP Tunneling that can be used to access internal VMs. - name: bastion-host - source: https://github.com/terraform-google-modules/terraform-google-bastion-host -- !module - children: - - !module - name: authorization - path: modules/authorization - - !module - name: udf - path: modules/udf - description: This module allows you to create opinionated Google Cloud Platform - BigQuery datasets and tables. - name: bigquery - source: https://github.com/terraform-google-modules/terraform-google-bigquery -- !module - children: - - !module - name: cloudbuild - path: modules/cloudbuild - description: A module for bootstrapping Terraform usage in a new GCP organization. - name: bootstrap - source: https://github.com/terraform-google-modules/terraform-google-bootstrap -- !module - description: A Terraform module to help you to manage Google Cloud Datastore. - name: cloud-datastore - source: https://github.com/terraform-google-modules/terraform-google-cloud-datastore -- !module - description: This module makes it easy to create and manage Google Cloud DNS public - or private zones, and their records. - name: cloud-dns - source: https://github.com/terraform-google-modules/terraform-google-cloud-dns -- !module - description: This module handles opinionated Google Cloud Platform Cloud NAT creation - and configuration. - name: cloud-nat - source: https://github.com/terraform-google-modules/terraform-google-cloud-nat -- !module - children: - - !module - name: agent-policy - path: modules/agent-policy - description: This module is a collection of submodules related to Google Cloud Operations - (Logging and Monitoring). - name: cloud-operations - source: https://github.com/terraform-google-modules/terraform-google-cloud-operations -- !module - children: - - !module - name: interconnect_attachment - path: modules/interconnect_attachment - - !module - name: interface - path: modules/interface - description: Manage a Cloud Router on GCP - name: cloud-router - source: https://github.com/terraform-google-modules/terraform-google-cloud-router -- !module - description: Terraform Module for deploying apps to Cloud Run, along with option - to map custom domain - name: cloud-run - source: https://github.com/GoogleCloudPlatform/terraform-google-cloud-run -- !module - children: - - !module - name: simple_bucket - path: modules/simple_bucket - description: This module makes it easy to create one or more GCS buckets, and assign - basic permissions on them to arbitrary users. - name: cloud-storage - source: https://github.com/terraform-google-modules/terraform-google-cloud-storage -- !module - children: - - !module - name: create_environment - path: modules/create_environment - description: Terraform Module for managing Cloud Composer - name: composer - source: https://github.com/terraform-google-modules/terraform-google-composer -- !module - children: - - !module - name: cos-coredns - path: modules/cos-coredns - - !module - name: cos-generic - path: modules/cos-generic - - !module - name: cos-mysql - path: modules/cos-mysql - description: This module simplifies deploying containers on GCE instances. - name: container-vm - source: https://github.com/terraform-google-modules/terraform-google-container-vm -- !module - children: - - !module - name: dataproc_profile - path: modules/dataproc_profile - - !module - name: hub_artifact - path: modules/hub_artifact - - !module - name: instance - path: modules/instance - - !module - name: namespace - path: modules/namespace - - !module - name: private_network - path: modules/private_network - - !module - name: wait_healthy - path: modules/wait_healthy - description: '[ALPHA] Terraform module for managing Cloud Data Fusion' - name: data-fusion - source: https://github.com/terraform-google-modules/terraform-google-data-fusion -- !module - children: - - !module - name: dataflow_bucket - path: modules/dataflow_bucket - description: This module handles opiniated Dataflow job configuration and deployments. - name: dataflow - source: https://github.com/terraform-google-modules/terraform-google-dataflow -- !module - children: - - !module - name: iap_firewall - path: modules/iap_firewall - - !module - name: instance - path: modules/instance - - !module - name: template_files - path: modules/template_files - description: 'This module will create DataLab instances with support for GPU instances. ' - name: datalab - source: https://github.com/terraform-google-modules/terraform-google-datalab -- !module - description: '' - name: endpoints-dns - source: https://github.com/terraform-google-modules/terraform-google-endpoints-dns -- !module - children: - - !module - name: event-folder-log-entry - path: modules/event-folder-log-entry - - !module - name: event-project-log-entry - path: modules/event-project-log-entry - - !module - name: repository-function - path: modules/repository-function - description: Terraform module for responding to logging events with a function - name: event-function - source: https://github.com/terraform-google-modules/terraform-google-event-function -- !module - description: This module helps create several folders under the same parent - name: folders - source: https://github.com/terraform-google-modules/terraform-google-folders -- !module - children: - - !module - name: client - path: modules/client - - !module - name: client_config - path: modules/client_config - - !module - name: client_gcs - path: modules/client_gcs - - !module - name: client_iam - path: modules/client_iam - - !module - name: cloudsql - path: modules/cloudsql - - !module - name: on_gke - path: modules/on_gke - - !module - name: real_time_enforcer - path: modules/real_time_enforcer - - !module - name: real_time_enforcer_organization_sink - path: modules/real_time_enforcer_organization_sink - - !module - name: real_time_enforcer_project_sink - path: modules/real_time_enforcer_project_sink - - !module - name: real_time_enforcer_roles - path: modules/real_time_enforcer_roles - - !module - name: rules - path: modules/rules - - !module - name: server - path: modules/server - - !module - name: server_config - path: modules/server_config - - !module - name: server_gcs - path: modules/server_gcs - - !module - name: server_iam - path: modules/server_iam - description: A Terraform module for installing Forseti on GCP - name: forseti - source: https://github.com/terraform-google-modules/terraform-google-forseti -- !module - children: - - !module - name: kubectl-wrapper - path: modules/kubectl-wrapper - description: A module for executing gcloud commands within Terraform. - name: gcloud - source: https://github.com/terraform-google-modules/terraform-google-gcloud -- !module - children: - - !module - name: gh-runner-gke - path: modules/gh-runner-gke - - !module - name: gh-runner-mig-container-vm - path: modules/gh-runner-mig-container-vm - - !module - name: gh-runner-mig-vm - path: modules/gh-runner-mig-vm - description: '[ALPHA] Module to create self-hosted GitHub Actions Runners on GCP' - name: github-actions-runners - source: https://github.com/terraform-google-modules/terraform-google-github-actions-runners -- !module - description: Installs GitLab on Kubernetes Engine - name: gke-gitlab - source: https://github.com/terraform-google-modules/terraform-google-gke-gitlab -- !module - description: A Terraform module for managing Google Groups - name: group - source: https://github.com/terraform-google-modules/terraform-google-group -- !module - description: '' - name: gsuite-export - source: https://github.com/terraform-google-modules/terraform-google-gsuite-export -- !module - description: This module handles opinionated Google Cloud Platform Healthcare datasets - and stores. - name: healthcare - source: https://github.com/terraform-google-modules/terraform-google-healthcare -- !module - children: - - !module - name: artifact_registry_iam - path: modules/artifact_registry_iam - - !module - name: audit_config - path: modules/audit_config - - !module - name: billing_accounts_iam - path: modules/billing_accounts_iam - - !module - name: custom_role_iam - path: modules/custom_role_iam - - !module - name: folders_iam - path: modules/folders_iam - - !module - name: helper - path: modules/helper - - !module - name: kms_crypto_keys_iam - path: modules/kms_crypto_keys_iam - - !module - name: kms_key_rings_iam - path: modules/kms_key_rings_iam - - !module - name: member_iam - path: modules/member_iam - - !module - name: organizations_iam - path: modules/organizations_iam - - !module - name: projects_iam - path: modules/projects_iam - - !module - name: pubsub_subscriptions_iam - path: modules/pubsub_subscriptions_iam - - !module - name: pubsub_topics_iam - path: modules/pubsub_topics_iam - - !module - name: secret_manager_iam - path: modules/secret_manager_iam - - !module - name: service_accounts_iam - path: modules/service_accounts_iam - - !module - name: storage_buckets_iam - path: modules/storage_buckets_iam - - !module - name: subnets_iam - path: modules/subnets_iam - description: This Terraform module makes it easier to non-destructively manage multiple - IAM roles for resources on Google Cloud Platform. - name: iam - source: https://github.com/terraform-google-modules/terraform-google-iam -- !module - children: - - !module - name: artifact_storage - path: modules/artifact_storage - description: '' - name: jenkins - source: https://github.com/terraform-google-modules/terraform-google-jenkins -- !module - description: Simple Cloud KMS module that allows managing a keyring, zero or more - keys in the keyring, and IAM role bindings on individual keys. - name: kms - source: https://github.com/terraform-google-modules/terraform-google-kms -- !module - children: - - !module - name: acm - path: modules/acm - - !module - name: asm - path: modules/asm - - !module - name: auth - path: modules/auth - - !module - name: beta-private-cluster - path: modules/beta-private-cluster - - !module - name: beta-private-cluster-update-variant - path: modules/beta-private-cluster-update-variant - - !module - name: beta-public-cluster - path: modules/beta-public-cluster - - !module - name: beta-public-cluster-update-variant - path: modules/beta-public-cluster-update-variant - - !module - name: binary-authorization - path: modules/binary-authorization - - !module - name: config-sync - path: modules/config-sync - - !module - name: hub - path: modules/hub - - !module - name: k8s-operator-crd-support - path: modules/k8s-operator-crd-support - - !module - name: private-cluster - path: modules/private-cluster - - !module - name: private-cluster-update-variant - path: modules/private-cluster-update-variant - - !module - name: safer-cluster - path: modules/safer-cluster - - !module - name: safer-cluster-update-variant - path: modules/safer-cluster-update-variant - - !module - name: services - path: modules/services - - !module - name: workload-identity - path: modules/workload-identity - description: A Terraform module for configuring GKE clusters. - name: kubernetes-engine - source: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine -- !module - description: Modular Regional TCP Load Balancer for GCE using target pool and forwarding - rule. - name: lb - source: https://github.com/GoogleCloudPlatform/terraform-google-lb -- !module - children: - - !module - name: dynamic_backends - path: modules/dynamic_backends - - !module - name: serverless_negs - path: modules/serverless_negs - description: Modular Global HTTP Load Balancer for GCE using forwarding rules. - name: lb-http - source: https://github.com/GoogleCloudPlatform/terraform-google-lb-http -- !module - description: Modular Internal Load Balancer for GCE using forwarding rules. - name: lb-internal - source: https://github.com/GoogleCloudPlatform/terraform-google-lb-internal -- !module - children: - - !module - name: bigquery - path: modules/bigquery - - !module - name: bq-log-alerting - path: modules/bq-log-alerting - - !module - name: pubsub - path: modules/pubsub - - !module - name: storage - path: modules/storage - description: This module allows you to create log exports at the project, folder, - or organization level. - name: log-export - source: https://github.com/terraform-google-modules/terraform-google-log-export -- !module - description: Modular Google Compute Engine managed instance group for Terraform. - exclude: true - name: managed-instance-group - source: https://github.com/GoogleCloudPlatform/terraform-google-managed-instance-group -- !module - children: - - !module - name: memcache - path: modules/memcache - description: A Terraform module for creating a fully functional Google Memorystore - (redis) instance. - name: memorystore - source: https://github.com/terraform-google-modules/terraform-google-memorystore -- !module - description: Modular NAT Gateway on Google Compute Engine for Terraform. - exclude: true - name: nat-gateway - source: https://github.com/GoogleCloudPlatform/terraform-google-nat-gateway -- !module - children: - - !module - name: fabric-net-firewall - path: modules/fabric-net-firewall - - !module - name: fabric-net-svpc-access - path: modules/fabric-net-svpc-access - - !module - name: firewall-rules - path: modules/firewall-rules - - !module - name: network-peering - path: modules/network-peering - - !module - name: routes - path: modules/routes - - !module - name: routes-beta - path: modules/routes-beta - - !module - name: subnets - path: modules/subnets - - !module - name: subnets-beta - path: modules/subnets-beta - - !module - name: vpc - path: modules/vpc - - !module - name: vpc-serverless-connector-beta - path: modules/vpc-serverless-connector-beta - description: A Terraform module that makes it easy to set up a new VPC Network in - GCP. - name: network - source: https://github.com/terraform-google-modules/terraform-google-network -- !module - children: - - !module - name: bucket_policy_only - path: modules/bucket_policy_only - - !module - name: domain_restricted_sharing - path: modules/domain_restricted_sharing - - !module - name: restrict_vm_external_ips - path: modules/restrict_vm_external_ips - - !module - name: skip_default_network - path: modules/skip_default_network - description: A Terraform module for managing GCP org policies. - name: org-policy - source: https://github.com/terraform-google-modules/terraform-google-org-policy -- !module - children: - - !module - name: app_engine - path: modules/app_engine - - !module - name: budget - path: modules/budget - - !module - name: core_project_factory - path: modules/core_project_factory - - !module - name: fabric-project - path: modules/fabric-project - - !module - name: gsuite_enabled - path: modules/gsuite_enabled - - !module - name: gsuite_group - path: modules/gsuite_group - - !module - name: project_services - path: modules/project_services - - !module - name: quota_manager - path: modules/quota_manager - - !module - name: shared_vpc - path: modules/shared_vpc - - !module - name: shared_vpc_access - path: modules/shared_vpc_access - - !module - name: svpc_service_project - path: modules/svpc_service_project - description: Opinionated Google Cloud Platform project creation and configuration - with Shared VPC, IAM, APIs, etc. - name: project-factory - source: https://github.com/terraform-google-modules/terraform-google-project-factory -- !module - children: - - !module - name: cloudiot - path: modules/cloudiot - description: This module makes it easy to create Google Cloud Pub/Sub topic and - subscriptions associated with the topic. - name: pubsub - source: https://github.com/terraform-google-modules/terraform-google-pubsub -- !module - children: - - !module - name: netweaver - path: modules/netweaver - - !module - name: sap_hana - path: modules/sap_hana - - !module - name: sap_hana_ha - path: modules/sap_hana_ha - - !module - name: sap_hana_python - path: modules/sap_hana/sap_hana_python - description: This module is a collection of multiple opinionated submodules to deploy - SAP Products. - name: sap - source: https://github.com/terraform-google-modules/terraform-google-sap -- !module - children: - - !module - name: project_cleanup - path: modules/project_cleanup - description: This modules makes it easy to set up a scheduled job to trigger events/run - functions. - name: scheduled-function - source: https://github.com/terraform-google-modules/terraform-google-scheduled-function -- !module - children: - - !module - name: gcs-object - path: modules/gcs-object - - !module - name: secret-infrastructure - path: modules/secret-infrastructure - description: '' - name: secret - source: https://github.com/terraform-google-modules/terraform-google-secret -- !module - children: - - !module - name: key-distributor - path: modules/key-distributor - description: This module allows easy creation of one or more service accounts, and - granting them basic roles. - name: service-accounts - source: https://github.com/terraform-google-modules/terraform-google-service-accounts -- !module - children: - - !module - name: slo - path: modules/slo - - !module - name: slo-native - path: modules/slo-native - - !module - name: slo-pipeline - path: modules/slo-pipeline - description: Create SLOs on GCP from custom Stackdriver metrics. Capability to export - SLOs to GCP services and other systems. - name: slo - source: https://github.com/terraform-google-modules/terraform-google-slo -- !module - children: - - !module - name: mssql - path: modules/mssql - - !module - name: mysql - path: modules/mysql - - !module - name: postgresql - path: modules/postgresql - - !module - name: private_service_access - path: modules/private_service_access - - !module - name: safer_mysql - path: modules/safer_mysql - description: Modular Cloud SQL database instance for Terraform. - name: sql-db - source: https://github.com/GoogleCloudPlatform/terraform-google-sql-db -- !module - description: A library of useful startup scripts to embed in VMs created by Terraform - name: startup-scripts - source: https://github.com/terraform-google-modules/terraform-google-startup-scripts -- !module - description: This module provides a way to get the shortnames for a given GCP region. - name: utils - source: https://github.com/terraform-google-modules/terraform-google-utils -- !module - children: - - !module - name: cluster - path: modules/cluster - description: Modular deployment of Vault on Google Compute Engine with Terraform - name: vault - source: https://github.com/terraform-google-modules/terraform-google-vault -- !module - children: - - !module - name: compute_disk_snapshot - path: modules/compute_disk_snapshot - - !module - name: compute_instance - path: modules/compute_instance - - !module - name: instance_template - path: modules/instance_template - - !module - name: mig - path: modules/mig - - !module - name: mig_with_percent - path: modules/mig_with_percent - - !module - name: preemptible_and_regular_instance_templates - path: modules/preemptible_and_regular_instance_templates - - !module - name: umig - path: modules/umig - description: This is a collection of opinionated submodules that can be used to - provision VMs in GCP. - name: vm - source: https://github.com/terraform-google-modules/terraform-google-vm -- !module - children: - - !module - name: access_level - path: modules/access_level - - !module - name: bridge_service_perimeter - path: modules/bridge_service_perimeter - - !module - name: regular_service_perimeter - path: modules/regular_service_perimeter - description: This module handles opinionated VPC Service Controls and Access Context - Manager configuration and deployments. - name: vpc-service-controls - source: https://github.com/terraform-google-modules/terraform-google-vpc-service-controls -- !module - children: - - !module - name: vpn_ha - path: modules/vpn_ha - description: A Terraform Module for setting up Google Cloud VPN - name: vpn - source: https://github.com/terraform-google-modules/terraform-google-vpn -name: terraform diff --git a/docs/meta/requirements.txt b/docs/meta/requirements.txt deleted file mode 100644 index 0d85a723f91..00000000000 --- a/docs/meta/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -Jinja2==2.11.3 -PyYAML==5.4 -requests==2.23.0 diff --git a/docs/meta/terraform.md.tmpl b/docs/meta/terraform.md.tmpl deleted file mode 100644 index 89e9c2ed726..00000000000 --- a/docs/meta/terraform.md.tmpl +++ /dev/null @@ -1,19 +0,0 @@ - - -# Terraform -The Cloud Foundation Toolkit includes over **{{ modules|length }}** Terraform modules. -There are also two end-to-end [examples](#examples) available. - -## Examples -These end-to-end examples are designed to be forked as a starting point: - -- [Example Foundation](https://github.com/terraform-google-modules/terraform-example-foundation) - Example repo showing how the CFT modules can be composed to build a secure cloud foundation. -- [CFT Fabric](https://github.com/terraform-google-modules/cloud-foundation-fabric) - This repo includes an advanced examples designed for prototyping. - -## Modules -{% for module in modules %} -* [{{ module.name() }}]({{ module.url() }}) - {{ module.description() }} -{% for child in module.children.values() %} - * [{{ child.name() }}]({{ child.url() }}) -{% endfor %} -{% endfor %} diff --git a/docs/terraform.md b/docs/terraform.md deleted file mode 100644 index 8349b304605..00000000000 --- a/docs/terraform.md +++ /dev/null @@ -1,4 +0,0 @@ -# Terraform - -The complete list of Google Cloud Platform Terraform blueprints -can now be found on the [Google Cloud website](https://g.co/dev/terraformfoundation). diff --git a/infra/concourse/Makefile b/infra/concourse/Makefile deleted file mode 100644 index eea12731efa..00000000000 --- a/infra/concourse/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -FLY_CMD := "fly" -PIPELINE_CONFS := $(wildcard ./pipelines/*.yml) -PIPELINES := $(foreach CONF, $(PIPELINE_CONFS), $(subst terraform-google-,,$(basename $(notdir $(CONF))))) - -.PHONY: $(PIPELINES) -$(PIPELINES): - $(FLY_CMD) -t cft set-pipeline \ - -p terraform-google-$@ \ - -c pipelines/terraform-google-$@.yml \ - -l vars/phoogle.yml - -check-%: - $(FLY_CMD) -t cft validate-pipeline -s \ - -c pipelines/terraform-google-$*.yml \ - -l vars/phoogle.yml - -POSTGRES_IP := 10.45.0.3 - -.PHONY: psql -psql: - kubectl run -i --tty --attach psql --image=postgres:9.6-alpine -- \ - psql -h ${POSTGRES_IP} -U concourse -d atc - kubectl delete deployment psql - -include ./Makefile.BUILD diff --git a/infra/concourse/Makefile.BUILD b/infra/concourse/Makefile.BUILD deleted file mode 100644 index 14cd0a12098..00000000000 --- a/infra/concourse/Makefile.BUILD +++ /dev/null @@ -1,80 +0,0 @@ -SHELL := /usr/bin/env bash # Make will use bash instead of sh - -BUILD_TERRAFORM_VERSION := 0.12.3 -BUILD_CLOUD_SDK_VERSION := 239.0.0 -BUILD_PROVIDER_GOOGLE_VERSION := 2.7.0 -BUILD_PROVIDER_GSUITE_VERSION := 0.1.22 -BUILD_RUBY_VERSION := 2.6.3 -# Make sure you update DOCKER_TAG_VERSION_TERRAFORM or DOCKER_TAG_VERSION_KITCHEN_TERRAFORM independently: -# If you make changes to the Docker.terraform file, update DOCKER_TAG_VERSION_TERRAFORM -# If you make changes to the Docker.kitchen-terraform file, update DOCKER_TAG_VERSION_KITCHEN_TERRAFORM -# Also make sure to update the version appropriately as described below -# Removing software components or upgrading a component to a backwards incompatible release should constitute a major release. -# Adding a component or upgrading a component to a backwards compatible release should constitute a minor release. -# Fixing bugs or making trivial changes should be considered a patch release. - -DOCKER_TAG_VERSION_TERRAFORM := 2.1.0 -DOCKER_TAG_VERSION_KITCHEN_TERRAFORM := 2.3.0 - -REGISTRY_URL := gcr.io/cloud-foundation-cicd - -DOCKER_IMAGE_LINT := cft/lint -DOCKER_TAG_LINT := 2.4.0 - -DOCKER_IMAGE_UNIT := cft/unit -DOCKER_TAG_UNIT := latest - -DOCKER_IMAGE_TERRAFORM := cft/terraform -DOCKER_IMAGE_KITCHEN_TERRAFORM := cft/kitchen-terraform - -.PHONY: build-image-lint -build-image-lint: - docker build -f build/Dockerfile.lint \ - --build-arg BUILD_TERRAFORM_VERSION=${BUILD_TERRAFORM_VERSION} \ - --build-arg BUILD_PROVIDER_GSUITE_VERSION=${BUILD_PROVIDER_GSUITE_VERSION} \ - -t ${DOCKER_IMAGE_LINT}:${DOCKER_TAG_LINT} . - -.PHONY: build-image-unit -build-image-unit: - docker build -f build/Dockerfile.unit \ - -t ${DOCKER_IMAGE_UNIT}:${DOCKER_TAG_UNIT} . - -.PHONY: build-image-terraform -build-image-terraform: - docker build -f build/Dockerfile.terraform \ - --build-arg BUILD_TERRAFORM_VERSION=${BUILD_TERRAFORM_VERSION} \ - --build-arg BUILD_CLOUD_SDK_VERSION=${BUILD_CLOUD_SDK_VERSION} \ - --build-arg BUILD_PROVIDER_GOOGLE_VERSION=${BUILD_PROVIDER_GOOGLE_VERSION} \ - --build-arg BUILD_PROVIDER_GSUITE_VERSION=${BUILD_PROVIDER_GSUITE_VERSION} \ - -t ${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_VERSION_TERRAFORM} . - -.PHONY: build-image-kitchen-terraform -build-image-kitchen-terraform: - docker build -f build/Dockerfile.kitchen-terraform \ - --build-arg BUILD_TERRAFORM_IMAGE=${REGISTRY_URL}/${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_VERSION_TERRAFORM} \ - --build-arg BUILD_RUBY_VERSION=${BUILD_RUBY_VERSION} \ - -t ${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_VERSION_KITCHEN_TERRAFORM} . - -.PHONY: release-image-lint -release-image-lint: - docker tag ${DOCKER_IMAGE_LINT}:${DOCKER_TAG_LINT} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_LINT}:${DOCKER_TAG_LINT} - docker push ${REGISTRY_URL}/${DOCKER_IMAGE_LINT}:${DOCKER_TAG_LINT} - -.PHONY: release-image-unit -release-image-unit: - docker tag ${DOCKER_IMAGE_UNIT}:${DOCKER_TAG_UNIT} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_UNIT}:${DOCKER_TAG_UNIT} - docker push ${REGISTRY_URL}/${DOCKER_IMAGE_UNIT}:${DOCKER_TAG_UNIT} - -.PHONY: release-image-terraform -release-image-terraform: - docker tag ${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_VERSION_TERRAFORM} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_VERSION_TERRAFORM} - docker push ${REGISTRY_URL}/${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_VERSION_TERRAFORM} - -.PHONY: release-image-kitchen-terraform -release-image-kitchen-terraform: - docker tag ${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_VERSION_KITCHEN_TERRAFORM} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_VERSION_KITCHEN_TERRAFORM} - docker push ${REGISTRY_URL}/${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_VERSION_KITCHEN_TERRAFORM} diff --git a/infra/concourse/build/Dockerfile.kitchen-terraform b/infra/concourse/build/Dockerfile.kitchen-terraform deleted file mode 100644 index 3faddd88fef..00000000000 --- a/infra/concourse/build/Dockerfile.kitchen-terraform +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright 2018 Google LLC -# -# 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 -# -# https://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. - -ARG BUILD_TERRAFORM_IMAGE -ARG BUILD_RUBY_VERSION -FROM $BUILD_TERRAFORM_IMAGE as cft-terraform - -FROM ruby:$BUILD_RUBY_VERSION-alpine - -RUN apk add --no-cache \ - bash \ - coreutils \ - curl \ - git \ - g++ \ - jq \ - make \ - musl-dev \ - openssh \ - python \ - python3 \ - ca-certificates - -SHELL ["/bin/bash", "-c"] - -ENV APP_BASE_DIR="/cft" - -RUN cd /tmp && \ - wget https://releases.hashicorp.com/packer/1.4.1/packer_1.4.1_linux_amd64.zip && \ - unzip packer_1.4.1_linux_amd64.zip && \ - rm -rf packer_1.4.1_linux_amd64.zip && \ - mv packer /bin/ - -ADD https://storage.googleapis.com/kubernetes-release/release/v1.12.2/bin/linux/amd64/kubectl /usr/local/bin/kubectl -RUN chmod +x /usr/local/bin/kubectl - -COPY --from=cft-terraform $APP_BASE_DIR $APP_BASE_DIR - -ENV HOME="$APP_BASE_DIR/home" -ENV PATH $APP_BASE_DIR/bin:$APP_BASE_DIR/google-cloud-sdk/bin:$PATH -ENV GOOGLE_APPLICATION_CREDENTIALS="$CREDENTIALS_PATH" \ - CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE="$CREDENTIALS_PATH" - -# Fix base64 inconsistency -SHELL ["/bin/bash", "-c"] -RUN echo 'base64() { if [[ $@ == "--decode" ]]; then command base64 -d | more; else command base64 "$@"; fi; }' >> $APP_BASE_DIR/home/.bashrc - -RUN terraform --version && \ - gcloud --version && \ - ruby --version && \ - bundle --version && \ - packer --version && \ - kubectl version --client=true - -WORKDIR /opt/kitchen -ADD ./build/data/Gemfile . -ADD ./build/data/Gemfile.lock . -ADD ./build/data/requirements.txt . -RUN bundle install && pip3 install -r requirements.txt - -WORKDIR $APP_BASE_DIR/workdir - -RUN gcloud components install beta --quiet -RUN gcloud components install alpha --quiet - -# Authenticate gcloud with service account credentials key to allow gsutil authentication -ADD ./build/scripts/gcloud_auth.sh $HOME/entrypoint_scripts/ -RUN chmod +x $HOME/entrypoint_scripts/gcloud_auth.sh -ENTRYPOINT ["/cft/home/entrypoint_scripts/gcloud_auth.sh"] diff --git a/infra/concourse/build/Dockerfile.lint b/infra/concourse/build/Dockerfile.lint deleted file mode 100644 index e36a2ded852..00000000000 --- a/infra/concourse/build/Dockerfile.lint +++ /dev/null @@ -1,49 +0,0 @@ -FROM alpine:3.8 - -RUN apk add --no-cache --update \ - bash \ - coreutils \ - findutils \ - make \ - go=1.10.8-r0 \ - python=2.7.15-r1 \ - python3 \ - py-pip=10.0.1-r0 \ - grep \ - git \ - perl - -RUN pip install flake8 jinja2 - -RUN wget https://shellcheck.storage.googleapis.com/shellcheck-v0.6.0.linux.x86_64.tar.xz && \ - tar -xf shellcheck-v0.6.0.linux.x86_64.tar.xz && \ - mv shellcheck-v0.6.0/shellcheck /usr/local/bin/ && \ - rm -r shellcheck-v0.6.0 shellcheck-v0.6.0.linux.x86_64.tar.xz -ARG BUILD_TERRAFORM_VERSION -ENV TERRAFORM_VERSION="${BUILD_TERRAFORM_VERSION}" - -RUN wget "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" && \ - unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \ - rm terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \ - mv terraform /usr/local/bin/ - -RUN wget https://github.com/hadolint/hadolint/releases/download/v1.15.0/hadolint-Linux-x86_64 && \ - chmod +x hadolint-Linux-x86_64 && \ - mv hadolint-Linux-x86_64 /usr/local/bin/hadolint - -RUN wget https://github.com/segmentio/terraform-docs/releases/download/v0.6.0/terraform-docs-v0.6.0-linux-amd64 && \ - mv terraform-docs* /usr/local/bin/terraform-docs && \ - chmod 0755 /usr/local/bin/terraform-docs - -RUN wget https://raw.githubusercontent.com/antonbabenko/pre-commit-terraform/master/terraform_docs.sh && \ - mv terraform_docs.sh /usr/local/bin/terraform_docs.sh && \ - chmod 0755 /usr/local/bin/terraform_docs.sh - -ARG BUILD_PROVIDER_GSUITE_VERSION -ENV PROVIDER_GSUITE_VERSION="${BUILD_PROVIDER_GSUITE_VERSION}" - -RUN wget "https://github.com/DeviaVir/terraform-provider-gsuite/releases/download/v${PROVIDER_GSUITE_VERSION}/terraform-provider-gsuite_${PROVIDER_GSUITE_VERSION}_linux_amd64.tgz" && \ - tar xzf terraform-provider-gsuite_${PROVIDER_GSUITE_VERSION}_linux_amd64.tgz && \ - rm terraform-provider-gsuite_${PROVIDER_GSUITE_VERSION}_linux_amd64.tgz && \ - install -m 0755 -d ~/.terraform.d/plugins/ && \ - mv terraform-provider-gsuite_v${PROVIDER_GSUITE_VERSION} ~/.terraform.d/plugins/ diff --git a/infra/concourse/build/Dockerfile.terraform b/infra/concourse/build/Dockerfile.terraform deleted file mode 100644 index 9455e93cefa..00000000000 --- a/infra/concourse/build/Dockerfile.terraform +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright 2018 Google LLC -# -# 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 -# -# https://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. - -FROM alpine:3.8 as builder - -RUN apk add --no-cache \ - bash \ - git \ - go \ - make \ - musl-dev - -ENV APP_BASE_DIR="/cft" - -RUN mkdir -p $APP_BASE_DIR/home && \ - mkdir -p $APP_BASE_DIR/bin && \ - mkdir -p $APP_BASE_DIR/workdir - -ENV GOPATH="/root/go" - -ARG BUILD_PROVIDER_GOOGLE_VERSION -ENV PROVIDER_GOOGLE_VERSION="${BUILD_PROVIDER_GOOGLE_VERSION}" - -RUN mkdir -p $APP_BASE_DIR/home/.terraform.d/plugins && \ - mkdir -p $GOPATH/src/github.com/terraform-providers && \ - cd $GOPATH/src/github.com/terraform-providers && \ - git clone https://github.com/terraform-providers/terraform-provider-google.git && \ - cd terraform-provider-google && \ - git fetch --all --tags --prune && \ - git checkout tags/v${PROVIDER_GOOGLE_VERSION} -b v${PROVIDER_GOOGLE_VERSION} && \ - make fmt && \ - make build && \ - mv $GOPATH/bin/terraform-provider-google \ - $APP_BASE_DIR/home/.terraform.d/plugins/terraform-provider-google_v${PROVIDER_GOOGLE_VERSION} - -FROM alpine:3.8 - -RUN apk add --no-cache \ - bash \ - curl \ - git \ - jq \ - make \ - python2 - -ENV APP_BASE_DIR="/cft" - -COPY --from=builder $APP_BASE_DIR $APP_BASE_DIR - -ENV HOME="$APP_BASE_DIR/home" -ENV PATH $APP_BASE_DIR/bin:$APP_BASE_DIR/google-cloud-sdk/bin:$PATH -ENV GOOGLE_APPLICATION_CREDENTIALS="$CREDENTIALS_PATH" \ - CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE="$CREDENTIALS_PATH" - -# Fix base64 inconsistency -SHELL ["/bin/bash", "-c"] -RUN echo 'base64() { if [[ $@ == "--decode" ]]; then command base64 -d | more; else command base64 "$@"; fi; }' >> $APP_BASE_DIR/home/.bashrc - -ARG BUILD_CLOUD_SDK_VERSION -ENV CLOUD_SDK_VERSION="${BUILD_CLOUD_SDK_VERSION}" - -RUN cd cft && \ - curl -LO https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-${CLOUD_SDK_VERSION}-linux-x86_64.tar.gz && \ - tar xzf google-cloud-sdk-${CLOUD_SDK_VERSION}-linux-x86_64.tar.gz && \ - rm google-cloud-sdk-${CLOUD_SDK_VERSION}-linux-x86_64.tar.gz && \ - ln -s /lib /lib64 && \ - gcloud config set core/disable_usage_reporting true && \ - gcloud config set component_manager/disable_update_check true && \ - gcloud config set metrics/environment github_docker_image && \ - gcloud --version - -ARG BUILD_TERRAFORM_VERSION -ENV TERRAFORM_VERSION="${BUILD_TERRAFORM_VERSION}" - -RUN curl -LO https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \ - unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \ - rm terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \ - mv terraform $APP_BASE_DIR/bin && \ - terraform --version - -ARG BUILD_PROVIDER_GSUITE_VERSION -ENV PROVIDER_GSUITE_VERSION="${BUILD_PROVIDER_GSUITE_VERSION}" - -RUN curl -LO https://github.com/DeviaVir/terraform-provider-gsuite/releases/download/v${PROVIDER_GSUITE_VERSION}/terraform-provider-gsuite_${PROVIDER_GSUITE_VERSION}_linux_amd64.tgz && \ - tar xzf terraform-provider-gsuite_${PROVIDER_GSUITE_VERSION}_linux_amd64.tgz && \ - rm terraform-provider-gsuite_${PROVIDER_GSUITE_VERSION}_linux_amd64.tgz && \ - mv terraform-provider-gsuite_v${PROVIDER_GSUITE_VERSION} $APP_BASE_DIR/home/.terraform.d/plugins/ - -WORKDIR $APP_BASE_DIR/workdir diff --git a/infra/concourse/build/Dockerfile.unit b/infra/concourse/build/Dockerfile.unit deleted file mode 100644 index 64221c52570..00000000000 --- a/infra/concourse/build/Dockerfile.unit +++ /dev/null @@ -1,11 +0,0 @@ -FROM alpine:3.8 - -RUN apk add --no-cache --update \ - bash \ - make \ - python=2.7.15-r1 \ - py-pip=10.0.1-r0 - -ADD ./build/data/requirements.txt . - -RUN pip install -r requirements.txt diff --git a/infra/concourse/build/data/Gemfile b/infra/concourse/build/data/Gemfile deleted file mode 100644 index 36950f9c63a..00000000000 --- a/infra/concourse/build/data/Gemfile +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2018 Google LLC -# -# 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. - -source 'https://rubygems.org/' do - gem "kitchen-terraform", "~> 4.9" - gem "kubeclient", "~> 4.9" - gem "rest-client", "~> 2.0" -end diff --git a/infra/concourse/build/data/Gemfile.lock b/infra/concourse/build/data/Gemfile.lock deleted file mode 100644 index 4fdf348a007..00000000000 --- a/infra/concourse/build/data/Gemfile.lock +++ /dev/null @@ -1,328 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) - aws-eventstream (1.0.3) - aws-sdk (2.11.283) - aws-sdk-resources (= 2.11.283) - aws-sdk-core (2.11.283) - aws-sigv4 (~> 1.0) - jmespath (~> 1.0) - aws-sdk-resources (2.11.283) - aws-sdk-core (= 2.11.283) - aws-sigv4 (1.1.0) - aws-eventstream (~> 1.0, >= 1.0.2) - azure_graph_rbac (0.17.1) - ms_rest_azure (~> 0.11.0) - azure_mgmt_key_vault (0.17.4) - ms_rest_azure (~> 0.11.0) - azure_mgmt_resources (0.17.5) - ms_rest_azure (~> 0.11.1) - builder (3.2.3) - coderay (1.1.2) - concurrent-ruby (1.1.5) - declarative (0.0.10) - declarative-option (0.1.0) - diff-lcs (1.3) - docker-api (1.34.2) - excon (>= 0.47.0) - multi_json - domain_name (0.5.20190701) - unf (>= 0.0.5, < 1.0.0) - dry-configurable (0.8.3) - concurrent-ruby (~> 1.0) - dry-core (~> 0.4, >= 0.4.7) - dry-container (0.7.0) - concurrent-ruby (~> 1.0) - dry-configurable (~> 0.1, >= 0.1.3) - dry-core (0.4.7) - concurrent-ruby (~> 1.0) - dry-equalizer (0.2.2) - dry-inflector (0.1.2) - dry-logic (0.6.1) - concurrent-ruby (~> 1.0) - dry-core (~> 0.2) - dry-equalizer (~> 0.2) - dry-types (0.14.1) - concurrent-ruby (~> 1.0) - dry-container (~> 0.3) - dry-core (~> 0.4, >= 0.4.4) - dry-equalizer (~> 0.2) - dry-inflector (~> 0.1, >= 0.1.2) - dry-logic (~> 0.5, >= 0.5) - dry-validation (0.13.0) - concurrent-ruby (~> 1.0) - dry-configurable (~> 0.1, >= 0.1.3) - dry-core (~> 0.2, >= 0.2.1) - dry-equalizer (~> 0.2) - dry-logic (~> 0.5, >= 0.5.0) - dry-types (~> 0.14, >= 0.14) - equatable (0.5.0) - erubis (2.7.0) - excon (0.71.0) - faraday (0.15.4) - multipart-post (>= 1.2, < 3) - faraday-cookie_jar (0.0.6) - faraday (>= 0.7.4) - http-cookie (~> 1.0.0) - faraday_middleware (0.12.2) - faraday (>= 0.7.4, < 1.0) - ffi (1.11.1) - ffi-compiler (1.0.1) - ffi (>= 1.0.0) - rake - google-api-client (0.23.9) - addressable (~> 2.5, >= 2.5.1) - googleauth (>= 0.5, < 0.7.0) - httpclient (>= 2.8.1, < 3.0) - mime-types (~> 3.0) - representable (~> 3.0) - retriable (>= 2.0, < 4.0) - signet (~> 0.9) - googleauth (0.6.7) - faraday (~> 0.12) - jwt (>= 1.4, < 3.0) - memoist (~> 0.16) - multi_json (~> 1.11) - os (>= 0.9, < 2.0) - signet (~> 0.7) - gssapi (1.3.0) - ffi (>= 1.0.1) - gyoku (1.3.1) - builder (>= 2.1.2) - hashie (3.6.0) - htmlentities (4.3.4) - http (4.4.1) - addressable (~> 2.3) - http-cookie (~> 1.0) - http-form_data (~> 2.2) - http-parser (~> 1.2.0) - http-accept (1.7.0) - http-cookie (1.0.4) - domain_name (~> 0.5) - http-form_data (2.3.0) - http-parser (1.2.3) - ffi-compiler (>= 1.0, < 2.0) - httpclient (2.8.3) - inifile (3.0.0) - inspec (3.9.3) - addressable (~> 2.4) - faraday (>= 0.9.0) - faraday_middleware (~> 0.12.2) - hashie (~> 3.4) - htmlentities - json (>= 1.8, < 3.0) - method_source (~> 0.8) - mixlib-log - multipart-post - parallel (~> 1.9) - parslet (~> 1.5) - pry (~> 0) - rspec (~> 3) - rspec-its (~> 1.2) - rubyzip (~> 1.2, >= 1.2.2) - semverse - sslshake (~> 1.2) - term-ansicolor - thor (~> 0.20) - tomlrb (~> 1.2) - train (~> 1.5, >= 1.7.2) - train-habitat (~> 0.1) - tty-prompt (~> 0.17) - tty-table (~> 0.10) - jmespath (1.6.1) - json (2.1.0) - jsonpath (1.1.0) - multi_json - jwt (2.2.1) - kitchen-terraform (4.9.0) - dry-types (~> 0.14.0) - dry-validation (= 0.13.0) - inspec (~> 3.0) - json (~> 2.1.0) - mixlib-shellout (~> 2.2) - test-kitchen (~> 1.23) - tty-which (~> 0.4.0) - kubeclient (4.9.3) - http (>= 3.0, < 5.0) - jsonpath (~> 1.0) - recursive-open-struct (~> 1.1, >= 1.1.1) - rest-client (~> 2.0) - little-plugger (1.1.4) - logging (2.2.2) - little-plugger (~> 1.1) - multi_json (~> 1.10) - memoist (0.16.0) - method_source (0.9.2) - mime-types (3.4.1) - mime-types-data (~> 3.2015) - mime-types-data (3.2022.0105) - mixlib-install (3.11.18) - mixlib-shellout - mixlib-versioning - thor - mixlib-log (3.0.1) - mixlib-shellout (2.4.4) - mixlib-versioning (1.2.7) - ms_rest (0.7.4) - concurrent-ruby (~> 1.0) - faraday (~> 0.9) - timeliness (~> 0.3.10) - ms_rest_azure (0.11.1) - concurrent-ruby (~> 1.0) - faraday (~> 0.9) - faraday-cookie_jar (~> 0.0.6) - ms_rest (~> 0.7.4) - unf_ext (= 0.0.7.2) - multi_json (1.13.1) - multipart-post (2.1.1) - necromancer (0.4.0) - net-scp (1.2.1) - net-ssh (>= 2.6.5) - net-ssh (4.2.0) - net-ssh-gateway (1.3.0) - net-ssh (>= 2.6.5) - netrc (0.11.0) - nori (2.6.0) - os (1.0.1) - parallel (1.17.0) - parslet (1.8.2) - pastel (0.7.2) - equatable (~> 0.5.0) - tty-color (~> 0.4.0) - pry (0.12.2) - coderay (~> 1.1.0) - method_source (~> 0.9.0) - public_suffix (4.0.6) - rake (13.0.6) - recursive-open-struct (1.1.3) - representable (3.0.4) - declarative (< 0.1.0) - declarative-option (< 0.2.0) - uber (< 0.2.0) - rest-client (2.1.0) - http-accept (>= 1.7.0, < 2.0) - http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 4.0) - netrc (~> 0.8) - retriable (3.1.2) - rspec (3.8.0) - rspec-core (~> 3.8.0) - rspec-expectations (~> 3.8.0) - rspec-mocks (~> 3.8.0) - rspec-core (3.8.0) - rspec-support (~> 3.8.0) - rspec-expectations (3.8.3) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.8.0) - rspec-its (1.3.0) - rspec-core (>= 3.0.0) - rspec-expectations (>= 3.0.0) - rspec-mocks (3.8.0) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.8.0) - rspec-support (3.8.0) - rubyntlm (0.6.2) - rubyzip (1.3.0) - semverse (3.0.0) - signet (0.11.0) - addressable (~> 2.3) - faraday (~> 0.9) - jwt (>= 1.5, < 3.0) - multi_json (~> 1.10) - sslshake (1.3.0) - strings (0.1.5) - strings-ansi (~> 0.1) - unicode-display_width (~> 1.5) - unicode_utils (~> 1.4) - strings-ansi (0.1.0) - term-ansicolor (1.7.1) - tins (~> 1.0) - test-kitchen (1.24.0) - mixlib-install (~> 3.6) - mixlib-shellout (>= 1.2, < 3.0) - net-scp (~> 1.1) - net-ssh (>= 2.9, < 5.0) - net-ssh-gateway (~> 1.2) - thor (~> 0.19) - winrm (~> 2.0) - winrm-elevated (~> 1.0) - winrm-fs (~> 1.1) - thor (0.20.3) - timeliness (0.3.10) - timers (4.3.0) - tins (1.20.2) - tomlrb (1.2.8) - train (1.7.6) - aws-sdk (~> 2) - azure_graph_rbac (~> 0.16) - azure_mgmt_key_vault (~> 0.17) - azure_mgmt_resources (~> 0.15) - docker-api (~> 1.26) - google-api-client (~> 0.23.9) - googleauth (~> 0.6.6) - inifile - json (>= 1.8, < 3.0) - mixlib-shellout (>= 2.0) - net-scp (~> 1.2) - net-ssh (>= 2.9, < 6.0) - winrm (~> 2.0) - winrm-fs (~> 1.0) - train-habitat (0.1.1) - train (>= 1.7.5, < 3.0) - tty-color (0.4.3) - tty-cursor (0.6.1) - tty-prompt (0.18.1) - necromancer (~> 0.4.0) - pastel (~> 0.7.0) - timers (~> 4.0) - tty-cursor (~> 0.6.0) - tty-reader (~> 0.5.0) - tty-reader (0.5.0) - tty-cursor (~> 0.6.0) - tty-screen (~> 0.6.4) - wisper (~> 2.0.0) - tty-screen (0.6.5) - tty-table (0.10.0) - equatable (~> 0.5.0) - necromancer (~> 0.4.0) - pastel (~> 0.7.2) - strings (~> 0.1.0) - tty-screen (~> 0.6.4) - tty-which (0.4.0) - uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.7.2) - unicode-display_width (1.6.0) - unicode_utils (1.4.0) - winrm (2.3.2) - builder (>= 2.1.2) - erubis (~> 2.7) - gssapi (~> 1.2) - gyoku (~> 1.0) - httpclient (~> 2.2, >= 2.2.0.2) - logging (>= 1.6.1, < 3.0) - nori (~> 2.0) - rubyntlm (~> 0.6.0, >= 0.6.1) - winrm-elevated (1.1.1) - winrm (~> 2.0) - winrm-fs (~> 1.0) - winrm-fs (1.3.2) - erubis (~> 2.7) - logging (>= 1.6.1, < 3.0) - rubyzip (~> 1.1) - winrm (~> 2.0) - wisper (2.0.0) - -PLATFORMS - ruby - -DEPENDENCIES - kitchen-terraform (~> 4.9)! - kubeclient (~> 4.9)! - rest-client (~> 2.0)! - -BUNDLED WITH - 1.17.2 diff --git a/infra/concourse/build/data/requirements.txt b/infra/concourse/build/data/requirements.txt deleted file mode 100644 index b11234d92ba..00000000000 --- a/infra/concourse/build/data/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -google-api-python-client~=1.7 -google-auth~=1.6 diff --git a/infra/concourse/build/scripts/gcloud_auth.sh b/infra/concourse/build/scripts/gcloud_auth.sh deleted file mode 100644 index 63748591a26..00000000000 --- a/infra/concourse/build/scripts/gcloud_auth.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -e - -gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS - -exec "$@" \ No newline at end of file diff --git a/infra/concourse/pipelines/README.md b/infra/concourse/pipelines/README.md deleted file mode 100644 index 0cb6d3100e6..00000000000 --- a/infra/concourse/pipelines/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Apply these pipelines - -See full document at [go/cft-module-ci][cft-module-ci] - -Take care to log in using: - - fly login --target cft -n cft -c https://concourse.infra.cft.tips - -Validate the pipeline: - - fly -t cft validate-pipeline -c pipelines/.yml - -Enforce the pipeline: - - make startup-scripts - -[cft-module-ci]: http://goto.google.com/cft-module-ci diff --git a/infra/concourse/pipelines/terraform-google-address.yml b/infra/concourse/pipelines/terraform-google-address.yml deleted file mode 100644 index 7f1fb2fe0e9..00000000000 --- a/infra/concourse/pipelines/terraform-google-address.yml +++ /dev/null @@ -1,131 +0,0 @@ -resource_types: - -- name: pull-request - type: docker-image - source: - repository: teliaoss/github-pr-resource - -resources: - -- name: pull-request - type: pull-request - webhook_token: ((address.github_webhook_token)) - source: - repository: terraform-google-modules/terraform-google-address - access_token: ((github.pr-access-token)) - -- name: lint-test-image - type: docker-image - source: - repository: gcr.io/cloud-foundation-cicd/cft/lint - tag: 2.4.0 - username: _json_key - password: ((sa.google)) - -- name: integration-test-image - type: docker-image - source: - repository: gcr.io/cloud-foundation-cicd/cft/kitchen-terraform - tag: 2.3.0 - username: _json_key - password: ((sa.google)) - -jobs: - -- name: lint-tests - public: true - plan: - - get: pull-request - trigger: true - version: every - - put: notify-lint-test-pending - resource: pull-request - params: - path: pull-request - context: lint-tests - status: pending - - get: lint-test-image - - task: run - image: lint-test-image - config: - platform: linux - inputs: - - name: pull-request - path: terraform-google-address - - name: lint-test-image - run: - path: make - args: ['-s'] - dir: terraform-google-address - on_success: - put: notify-lint-test-success - resource: pull-request - params: - path: pull-request - context: lint-tests - status: success - on_failure: - put: notify-lint-test-failure - resource: pull-request - params: - path: pull-request - context: lint-tests - status: failure - on_abort: - put: notify-lint-test-error - resource: pull-request - params: - path: pull-request - context: lint-tests - status: error - -- name: integration-tests - public: true - plan: - - get: pull-request - trigger: true - version: every - - put: notify-integration-test-pending - resource: pull-request - params: - path: pull-request - context: integration-tests - status: pending - - get: integration-test-image - trigger: true - - task: run-tests - image: integration-test-image - config: - platform: linux - inputs: - - name: pull-request - path: terraform-google-address - run: - path: make - args: ['test_integration'] - dir: terraform-google-address - params: - PROJECT_ID: ((address.phoogle_project_id)) - REGION: "us-east4" - SERVICE_ACCOUNT_JSON: ((address.phoogle_sa)) - on_success: - put: notify-integration-test-success - resource: pull-request - params: - path: pull-request - context: integration-tests - status: success - on_failure: - put: notify-integration-test-failure - resource: pull-request - params: - path: pull-request - context: integration-tests - status: failure - on_abort: - put: notify-integration-test-error - resource: pull-request - params: - path: pull-request - context: integration-tests - status: error diff --git a/infra/concourse/pipelines/terraform-google-jenkins.yml b/infra/concourse/pipelines/terraform-google-jenkins.yml deleted file mode 100644 index 0650912646d..00000000000 --- a/infra/concourse/pipelines/terraform-google-jenkins.yml +++ /dev/null @@ -1,134 +0,0 @@ -resource_types: - - - name: pull-request - type: docker-image - source: - repository: teliaoss/github-pr-resource - -resources: - - name: pull-request - type: pull-request - webhook_token: ((jenkins.github_webhook_token)) - source: - repository: terraform-google-modules/terraform-google-jenkins - access_token: ((github.pr-access-token)) - - - name: lint-test-image - type: docker-image - source: - repository: gcr.io/cloud-foundation-cicd/cft/lint - tag: 2.4.0 - username: _json_key - password: ((sa.google)) - - - name: integration-test-image - type: docker-image - source: - repository: gcr.io/cloud-foundation-cicd/cft/kitchen-terraform - tag: 2.3.0 - username: _json_key - password: ((sa.google)) - -jobs: - - - name: lint-tests - public: true - plan: - - get: pull-request - trigger: true - version: every - - put: notify-lint-test-pending - resource: pull-request - params: - path: pull-request - context: lint-tests - status: pending - - get: lint-test-image - trigger: true - - task: run - image: lint-test-image - config: - platform: linux - inputs: - - name: pull-request - path: terraform-google-jenkins - - name: lint-test-image - run: - path: make - args: - - '-s' - - check - dir: terraform-google-jenkins - on_success: - put: notify-lint-test-success - resource: pull-request - params: - path: pull-request - context: lint-tests - status: success - on_failure: - put: notify-lint-test-failure - resource: pull-request - params: - path: pull-request - context: lint-tests - status: failure - on_abort: - put: notify-lint-test-error - resource: pull-request - params: - path: pull-request - context: lint-tests - status: error - - - name: integration-tests - public: true - plan: - - get: pull-request - trigger: true - version: every - - put: notify-integration-test-pending - resource: pull-request - params: - path: pull-request - context: integration-tests - status: pending - - get: integration-test-image - trigger: true - - task: run-tests - image: integration-test-image - config: - platform: linux - inputs: - - name: pull-request - path: terraform-google-jenkins - run: - path: make - args: - - '-s' - - test_integration - dir: terraform-google-jenkins - params: - PROJECT_ID: ((jenkins.phoogle_project_id)) - SERVICE_ACCOUNT_JSON: ((jenkins.phoogle_sa)) - on_success: - put: notify-integration-test-success - resource: pull-request - params: - path: pull-request - context: integration-tests - status: success - on_failure: - put: notify-integration-test-failure - resource: pull-request - params: - path: pull-request - context: integration-tests - status: failure - on_abort: - put: notify-integration-test-error - resource: pull-request - params: - path: pull-request - context: integration-tests - status: error diff --git a/infra/concourse/pipelines/terraform-google-sql-db.yml b/infra/concourse/pipelines/terraform-google-sql-db.yml deleted file mode 100644 index fed4a34f34c..00000000000 --- a/infra/concourse/pipelines/terraform-google-sql-db.yml +++ /dev/null @@ -1,134 +0,0 @@ -resource_types: - - - name: pull-request - type: docker-image - source: - repository: teliaoss/github-pr-resource - -resources: - - name: pull-request - type: pull-request - webhook_token: ((sql_db.github_webhook_token)) - source: - repository: GoogleCloudPlatform/terraform-google-sql-db - access_token: ((github.pr-access-token)) - - - name: lint-test-image - type: docker-image - source: - repository: gcr.io/cloud-foundation-cicd/cft/lint - tag: 2.1.0 - username: _json_key - password: ((sa.google)) - - - name: integration-test-image - type: docker-image - source: - repository: gcr.io/cloud-foundation-cicd/cft/kitchen-terraform - tag: 2.0.0 - username: _json_key - password: ((sa.google)) - -jobs: - - - name: lint-tests - public: true - plan: - - get: pull-request - trigger: true - version: every - - put: notify-lint-test-pending - resource: pull-request - params: - path: pull-request - context: lint-tests - status: pending - - get: lint-test-image - trigger: true - - task: run - image: lint-test-image - config: - platform: linux - inputs: - - name: pull-request - path: terraform-google-sql-db - - name: lint-test-image - run: - path: make - args: - - '-s' - - check - dir: terraform-google-sql-db - on_success: - put: notify-lint-test-success - resource: pull-request - params: - path: pull-request - context: lint-tests - status: success - on_failure: - put: notify-lint-test-failure - resource: pull-request - params: - path: pull-request - context: lint-tests - status: failure - on_abort: - put: notify-lint-test-error - resource: pull-request - params: - path: pull-request - context: lint-tests - status: error - - - name: integration-tests - public: true - plan: - - get: pull-request - trigger: true - version: every - - put: notify-integration-test-pending - resource: pull-request - params: - path: pull-request - context: integration-tests - status: pending - - get: integration-test-image - trigger: true - - task: run-tests - image: integration-test-image - config: - platform: linux - inputs: - - name: pull-request - path: terraform-google-sql-db - run: - path: make - args: - - '-s' - - test_integration - dir: terraform-google-sql-db - params: - PROJECT_ID: ((sql_db.phoogle_project_id)) - SERVICE_ACCOUNT_JSON: ((sql_db.phoogle_sa)) - on_success: - put: notify-integration-test-success - resource: pull-request - params: - path: pull-request - context: integration-tests - status: success - on_failure: - put: notify-integration-test-failure - resource: pull-request - params: - path: pull-request - context: integration-tests - status: failure - on_abort: - put: notify-integration-test-error - resource: pull-request - params: - path: pull-request - context: integration-tests - status: error \ No newline at end of file diff --git a/infra/concourse/pipelines/terraform-google-vpn.yml b/infra/concourse/pipelines/terraform-google-vpn.yml deleted file mode 100644 index aabe22c3221..00000000000 --- a/infra/concourse/pipelines/terraform-google-vpn.yml +++ /dev/null @@ -1,128 +0,0 @@ -resource_types: - -- name: pull-request - type: docker-image - source: - repository: teliaoss/github-pr-resource - -resources: - -- name: pull-request - type: pull-request - webhook_token: ((vpn.github_webhook_token)) - source: - repository: terraform-google-modules/terraform-google-vpn - access_token: ((github.pr-access-token)) - -- name: lint-test-image - type: docker-image - source: - repository: gcr.io/cloud-foundation-cicd/cft/lint - tag: 2.4.0 - username: _json_key - password: ((sa.google)) - -- name: integration-test-image - type: docker-image - source: - repository: gcr.io/cloud-foundation-cicd/cft/kitchen-terraform - tag: 2.3.0 - username: _json_key - password: ((sa.google)) - -jobs: -- name: lint-tests - public: true - plan: - - get: pull-request - trigger: true - version: every - - put: notify-lint-test-pending - resource: pull-request - params: - path: pull-request - context: lint-tests - status: pending - - get: lint-test-image - - task: run - image: lint-test-image - config: - platform: linux - inputs: - - name: pull-request - path: terraform-google-vpn - - name: lint-test-image - run: - path: /bin/bash - args: ['-c', 'exec make check'] - dir: terraform-google-vpn - on_success: - put: notify-lint-test-success - resource: pull-request - params: - path: pull-request - context: lint-tests - status: success - on_failure: - put: notify-lint-test-failure - resource: pull-request - params: - path: pull-request - context: lint-tests - status: failure - on_abort: - put: notify-lint-tests-abort - resource: pull-request - params: - path: pull-request - context: lint-tests - status: error - -- name: integration-tests - public: true - plan: - - get: pull-request - trigger: true - version: every - - put: notify-integration-test-pending - resource: pull-request - params: - path: pull-request - context: integration-tests - status: pending - - get: integration-test-image - - task: run-tests - image: integration-test-image - config: - platform: linux - inputs: - - name: pull-request - path: terraform-google-vpn - run: - path: /bin/bash - args: ['-c', 'exec make test_integration'] - dir: terraform-google-vpn - params: - PROJECT_ID: ((vpn.phoogle_project_id)) - SERVICE_ACCOUNT_JSON: ((vpn.phoogle_sa)) - on_success: - put: notify-integration-tests-success - resource: pull-request - params: - path: pull-request - context: integration-tests - status: success - on_failure: - put: notify-integration-tests-failure - resource: pull-request - params: - path: pull-request - context: integration-tests - status: failure - on_abort: - put: notify-integration-tests-abort - resource: pull-request - params: - path: pull-request - context: integration-tests - status: error diff --git a/infra/concourse/vars/phoogle.yml b/infra/concourse/vars/phoogle.yml deleted file mode 100644 index 7d3f06540e3..00000000000 --- a/infra/concourse/vars/phoogle.yml +++ /dev/null @@ -1,7 +0,0 @@ -phoogle: - admin_account_email: admin@phoogle.net - billing_account_id: 01E8A0-35F760-5CF02A - domain: phoogle.net - folder_id: 853002531658 - group_name: pf-ci-test-fixture - org_id: 826592752744 diff --git a/infra/utils/delete-projects/delete-projects.py b/infra/utils/delete-projects/delete-projects.py deleted file mode 100755 index 76cfced96a2..00000000000 --- a/infra/utils/delete-projects/delete-projects.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright 2018 Google LLC -# -# 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 -# -# https://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. - -import google.api_core -from google.cloud import resource_manager -from googleapiclient.discovery import build -import sys -from pprint import pprint -import argparse -from googleapiclient import discovery -from oauth2client.client import GoogleCredentials - -client = resource_manager.Client() -credentials = GoogleCredentials.get_application_default() -client2 = build('cloudresourcemanager', 'v2', credentials=credentials) - -def delete_liens(project_id): - service = discovery.build('cloudresourcemanager', 'v1', credentials=credentials) - - parent = 'projects/{}'.format(project_id) - request = service.liens().list(parent=parent) - response = request.execute() - - liens_deleted = 0 - - for lien in response.get('liens', []): - print("Deleting lien:", lien) - d_request = service.liens().delete(name=lien.get('name')) - d_request.execute() - liens_deleted += 1 - - return liens_deleted - -def delete_project(project): - try: - project.delete() - except google.api_core.exceptions.BadRequest as e: - liens_deleted = delete_liens(project.project_id) - if liens_deleted >= 1: - delete_project(project) - else: - print("Bad request and no liens found.") - print(e) - except (google.api_core.exceptions.Forbidden) as e: - print("Failed to delete {}".format(project.project_id)) - print(e) - -def delete_children(parent_type, parent_id, delete_root=True): - print("Deleting children of {} {}".format(parent_type, parent_id)) - - project_filter = { - 'parent.type': parent_type, - 'parent.id': parent_id - } - for project in client.list_projects(project_filter): - if (project.status != "ACTIVE"): - print(" Skipping deletion of inactive project {}...".format(project.project_id)) - continue - print(" Deleting project {} (status={})...".format(project.project_id, project.status)) - delete_project(project) - - name = "{}s/{}".format(parent_type, parent_id) - res = client2.folders().list(parent=name).execute() - for folder in res.get('folders', []): - delete_children("folder", folder.get('name').split('/')[-1]) - - if delete_root: - deletion = client2.folders().delete(name=name).execute() - if deletion.get('lifecycleState') == 'DELETE_REQUESTED': - print("Deleted {}".format(name)) - else: - print(deletion) - -def main(argv): - parser = argparser() - args = parser.parse_args(argv[1:]) - - (parent_type, parent_id) = args.parent_id.split('/') - - delete_children(parent_type.strip('s'), parent_id, delete_root=False) - -def argparser(): - parser = argparse.ArgumentParser(description='Delete projects within a folder') - parser.add_argument('parent_id') - return parser - - -if __name__ == "__main__": - main(sys.argv) diff --git a/infra/utils/delete-projects/requirements.txt b/infra/utils/delete-projects/requirements.txt deleted file mode 100644 index 4511de24fa6..00000000000 --- a/infra/utils/delete-projects/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -google-cloud==0.34.0 -google-cloud-resource-manager==0.30.2 -oauth2client==4.1.3 -google-api-python-client==2.86.0 From 6c928123f8d6564baeb03f253fd4e1f2d317489f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 May 2023 17:18:10 +0200 Subject: [PATCH 0370/1371] chore(deps): update peter-evans/create-pull-request digest to 8fbd83c (#1548) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index f2e4a528abd..671adec7b21 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@0183f3349069eb3b3580942d7782e96905765f6a + uses: peter-evans/create-pull-request@8fbd83c22f75399752e97774e7b0b8ad245f55ca with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From af3fb816d423e0cf420afa6a9de17fe09afadb12 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 12 May 2023 13:59:06 -0700 Subject: [PATCH 0371/1371] chore: update dev-tools 1.12.0 (#1553) --- infra/build/Makefile | 17 +- infra/build/developer-tools-light/Dockerfile | 5 +- infra/build/developer-tools/Dockerfile | 2 +- infra/build/developer-tools/README.md | 2 +- .../build/developer-tools/build/data/Gemfile | 8 +- .../developer-tools/build/data/Gemfile.lock | 377 +++++++++--------- .../build/scripts/module-swapper/go.mod | 2 +- .../build/scripts/module-swapper/go.sum | 4 +- 8 files changed, 212 insertions(+), 205 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 0daa797075a..8747e62594e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -1,4 +1,4 @@ -# Copyright 2019 Google LLC +# Copyright 2019-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,9 +20,9 @@ TERRAFORM_VALIDATOR_VERSION := 0.13.0 CLOUD_SDK_VERSION := 430.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 -RUBY_VERSION := 2.7.6 +RUBY_VERSION := 2.7.8 BATS_VERSION := 0.4.0 -GOLANG_VERSION := 1.18 +GOLANG_VERSION := 1.20 BATS_SUPPORT_VERSION := 0.3.0 BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 @@ -40,16 +40,16 @@ TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 # For developer-tools-krm -GOLANGCI_VERSION := 1.47.3 -ASMCLI_VERSION := 1.12 -KIND_VERSION := 0.17.0 +GOLANGCI_VERSION := 1.52.2 +ASMCLI_VERSION := 1.15 +KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow GATOR_VERSION := 3.11.1 -OPA_VERSION := 0.42.2 +OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.11.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -90,6 +90,7 @@ build-image-developer-tools: docker build . \ --build-arg TERRAFORM_VERSION=${TERRAFORM_VERSION} \ --build-arg CLOUD_SDK_VERSION=${CLOUD_SDK_VERSION} \ + --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} -f "./developer-tools-light/Dockerfile" docker build \ --build-arg GOLANGCI_VERSION=${GOLANGCI_VERSION} \ diff --git a/infra/build/developer-tools-light/Dockerfile b/infra/build/developer-tools-light/Dockerfile index 77b5a345dd5..94afb1d40c7 100644 --- a/infra/build/developer-tools-light/Dockerfile +++ b/infra/build/developer-tools-light/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2021 Google LLC +# Copyright 2021-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,8 @@ # limitations under the License. # Download and verify the integrity of the download first -FROM alpine:3.16.2 +ARG ALPINE_VERSION +FROM alpine:$ALPINE_VERSION RUN apk update && apk add --no-cache \ bash \ git \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index d4beda2c5c4..a1f27d0d3c6 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2019 Google LLC +# Copyright 2019-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/infra/build/developer-tools/README.md b/infra/build/developer-tools/README.md index 54fb74c949b..5f0e3db3c9d 100644 --- a/infra/build/developer-tools/README.md +++ b/infra/build/developer-tools/README.md @@ -15,7 +15,7 @@ Review the `Makefile` to identify other variable inputs to the build and release ## Environment Variables The following environment variables are inputs to the running container. -Enviornment variables also implement feature flags to enable or disable +Environment variables also implement feature flags to enable or disable behavior. These variables are considered a public API and interface into the running container instance. diff --git a/infra/build/developer-tools/build/data/Gemfile b/infra/build/developer-tools/build/data/Gemfile index 4723a685fc4..5ba4ff8a6c0 100644 --- a/infra/build/developer-tools/build/data/Gemfile +++ b/infra/build/developer-tools/build/data/Gemfile @@ -1,4 +1,4 @@ -# Copyright 2018 Google LLC +# Copyright 2018-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,9 +13,9 @@ # limitations under the License. source 'https://rubygems.org/' do - gem "kitchen-terraform", "~> 5.8" + gem "kitchen-terraform", "~> 6.0" gem "kubeclient", "~> 4.9" gem "rest-client", "~> 2.0" - gem 'nokogiri', '~> 1.13' + gem 'nokogiri', '~> 1.14' end -ruby '~> 2.7.6' +ruby '~> 2.7.8' diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index e67d443c353..7153dfc4d83 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -1,33 +1,33 @@ GEM remote: https://rubygems.org/ specs: - activesupport (7.0.3.1) + activesupport (7.0.4.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) tzinfo (~> 2.0) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.4) + public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) aws-eventstream (1.2.0) - aws-partitions (1.610.0) - aws-sdk-alexaforbusiness (1.56.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-partitions (1.763.0) + aws-sdk-alexaforbusiness (1.58.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-amplify (1.32.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-apigateway (1.78.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-apigateway (1.81.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-apigatewayv2 (1.42.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-apigatewayv2 (1.44.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-applicationautoscaling (1.51.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-athena (1.56.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-athena (1.65.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-autoscaling (1.63.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -35,41 +35,41 @@ GEM aws-sdk-batch (1.47.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-budgets (1.50.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-budgets (1.52.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudformation (1.70.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudformation (1.77.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudfront (1.65.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudfront (1.76.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsm (1.39.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudhsm (1.41.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsmv2 (1.42.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudhsmv2 (1.44.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudtrail (1.49.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudtrail (1.58.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatch (1.65.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudwatch (1.73.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-cloudwatchevents (1.46.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchlogs (1.53.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudwatchlogs (1.62.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-codecommit (1.51.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-codecommit (1.53.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-codedeploy (1.49.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-codedeploy (1.52.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-codepipeline (1.53.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-codepipeline (1.55.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-cognitoidentity (1.31.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -77,55 +77,55 @@ GEM aws-sdk-cognitoidentityprovider (1.53.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-configservice (1.79.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-configservice (1.90.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-core (3.131.3) + aws-sdk-core (3.172.0) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.525.0) - aws-sigv4 (~> 1.1) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-costandusagereportservice (1.40.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-costandusagereportservice (1.43.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-databasemigrationservice (1.53.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-dynamodb (1.75.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-dynamodb (1.84.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-ec2 (1.324.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ec2 (1.379.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-ecr (1.56.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ecr (1.58.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-ecrpublic (1.12.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ecrpublic (1.16.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-ecs (1.100.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ecs (1.118.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-efs (1.54.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-efs (1.60.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-eks (1.75.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-eks (1.83.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticache (1.79.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticache (1.85.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticbeanstalk (1.51.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticbeanstalk (1.54.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancing (1.40.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticloadbalancing (1.42.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancingv2 (1.78.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticloadbalancingv2 (1.84.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticsearchservice (1.65.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticsearchservice (1.70.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-emr (1.53.0) aws-sdk-core (~> 3, >= 3.121.2) @@ -133,38 +133,38 @@ GEM aws-sdk-eventbridge (1.24.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-firehose (1.48.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-firehose (1.51.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-glue (1.88.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-guardduty (1.58.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-guardduty (1.70.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-iam (1.69.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-iam (1.77.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-kafka (1.50.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kafka (1.55.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesis (1.41.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kinesis (1.45.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-kms (1.58.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (1.64.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-lambda (1.84.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-lambda (1.96.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-mq (1.40.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-networkfirewall (1.18.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-networkfirewall (1.28.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-networkmanager (1.24.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-networkmanager (1.30.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-organizations (1.59.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -172,23 +172,23 @@ GEM aws-sdk-ram (1.26.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-rds (1.150.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-rds (1.178.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-redshift (1.84.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-redshift (1.91.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-route53 (1.63.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-route53 (1.71.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-route53domains (1.40.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-route53domains (1.43.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-route53resolver (1.37.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-route53resolver (1.41.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.114.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-s3 (1.122.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) aws-sdk-s3control (1.43.0) @@ -197,8 +197,8 @@ GEM aws-sdk-secretsmanager (1.46.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-securityhub (1.67.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-securityhub (1.81.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-servicecatalog (1.60.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -206,8 +206,8 @@ GEM aws-sdk-ses (1.41.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-shield (1.48.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-shield (1.51.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-signer (1.32.0) aws-sdk-core (~> 3, >= 3.120.0) @@ -215,17 +215,17 @@ GEM aws-sdk-simpledb (1.29.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv2 (~> 1.0) - aws-sdk-sms (1.40.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-sms (1.43.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-sns (1.53.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-sns (1.60.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-sqs (1.51.1) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-sqs (1.55.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-ssm (1.137.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ssm (1.150.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) aws-sdk-states (1.39.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -240,7 +240,7 @@ GEM aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) aws-sigv2 (1.1.0) - aws-sigv4 (1.5.1) + aws-sigv4 (1.5.2) aws-eventstream (~> 1, >= 1.0.2) azure_graph_rbac (0.17.2) ms_rest_azure (~> 0.12.0) @@ -252,12 +252,12 @@ GEM ms_rest_azure (~> 0.12.0) azure_mgmt_storage (0.23.0) ms_rest_azure (~> 0.12.0) - bcrypt_pbkdf (1.0.1) + bcrypt_pbkdf (1.1.0) bson (4.15.0) builder (3.2.4) - chef-config (17.10.0) + chef-config (18.2.7) addressable - chef-utils (= 17.10.0) + chef-utils (= 18.2.7) fuzzyurl mixlib-config (>= 2.2.12, < 4.0) mixlib-shellout (>= 2.0, < 4.0) @@ -265,52 +265,55 @@ GEM chef-telemetry (1.1.1) chef-config concurrent-ruby (~> 1.0) - chef-utils (17.10.0) + chef-utils (18.2.7) concurrent-ruby coderay (1.1.3) - concurrent-ruby (1.1.10) - cookstyle (7.32.1) + concurrent-ruby (1.2.2) + cookstyle (7.32.2) rubocop (= 1.25.1) declarative (0.0.20) - delegate (0.1.0) + delegate (0.2.0) diff-lcs (1.5.0) docker-api (2.2.0) excon (>= 0.47.0) multi_json domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - dry-configurable (0.11.6) - concurrent-ruby (~> 1.0) - dry-core (~> 0.4, >= 0.4.7) - dry-equalizer (~> 0.2) - dry-container (0.7.2) + dry-configurable (1.0.1) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-core (1.0.0) concurrent-ruby (~> 1.0) - dry-configurable (~> 0.1, >= 0.1.3) - dry-core (0.4.9) + zeitwerk (~> 2.6) + dry-inflector (1.0.0) + dry-initializer (3.1.1) + dry-logic (1.5.0) concurrent-ruby (~> 1.0) - dry-equalizer (0.3.0) - dry-inflector (0.2.0) - dry-logic (0.6.1) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-schema (1.13.1) concurrent-ruby (~> 1.0) - dry-core (~> 0.2) - dry-equalizer (~> 0.2) - dry-types (0.14.1) + dry-configurable (~> 1.0, >= 1.0.1) + dry-core (~> 1.0, < 2) + dry-initializer (~> 3.0) + dry-logic (>= 1.4, < 2) + dry-types (>= 1.7, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.1) concurrent-ruby (~> 1.0) - dry-container (~> 0.3) - dry-core (~> 0.4, >= 0.4.4) - dry-equalizer (~> 0.2) - dry-inflector (~> 0.1, >= 0.1.2) - dry-logic (~> 0.5, >= 0.5) - dry-validation (0.13.3) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) + dry-validation (1.10.0) concurrent-ruby (~> 1.0) - dry-configurable (~> 0.1, >= 0.1.3) - dry-core (~> 0.2, >= 0.2.1) - dry-equalizer (~> 0.2) - dry-logic (~> 0.5, >= 0.5.0) - dry-types (~> 0.14.0) - ed25519 (1.2.4) - erubi (1.10.0) - excon (0.92.4) + dry-core (~> 1.0, < 2) + dry-initializer (~> 3.0) + dry-schema (>= 1.12, < 2) + zeitwerk (~> 2.6) + ed25519 (1.3.0) + erubi (1.12.0) + excon (0.99.0) faraday (1.4.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -368,7 +371,7 @@ GEM http-parser (1.2.3) ffi-compiler (>= 1.0, < 2.0) httpclient (2.8.3) - i18n (1.12.0) + i18n (1.13.0) concurrent-ruby (~> 1.0) inifile (3.0.0) inspec (4.56.20) @@ -404,19 +407,19 @@ GEM train-core (~> 3.0) tty-prompt (~> 0.17) tty-table (~> 0.10) - jmespath (1.6.1) - json (2.6.2) + jmespath (1.6.2) + json (2.6.3) jsonpath (1.1.0) multi_json - jwt (2.4.1) - kitchen-terraform (5.8.0) - delegate (~> 0.1.0) - dry-validation (~> 0.13) + jwt (2.7.0) + kitchen-terraform (6.1.0) + delegate (>= 0.1.0, < 0.3.0) + dry-validation (~> 1.6) inspec (>= 3, < 5, != 4.24.32, != 4.24.28, != 4.24.26) json (~> 2.3) mixlib-shellout (~> 3.0) - test-kitchen (~> 2.1) - tty-which (~> 0.4.0) + test-kitchen (>= 2.1, < 4.0) + tty-which (~> 0.5.0) kubeclient (4.9.3) http (>= 3.0, < 5.0) jsonpath (~> 1.0) @@ -437,11 +440,11 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) mini_mime (1.1.2) - mini_portile2 (2.8.0) - minitest (5.16.2) + mini_portile2 (2.8.2) + minitest (5.18.0) mixlib-config (3.0.27) tomlrb - mixlib-install (3.12.3) + mixlib-install (3.12.27) mixlib-shellout mixlib-versioning thor @@ -461,33 +464,33 @@ GEM faraday-cookie_jar (~> 0.0.6) ms_rest (~> 0.7.6) multi_json (1.15.0) - multipart-post (2.2.3) - net-scp (3.0.0) - net-ssh (>= 2.6.5, < 7.0.0) - net-ssh (6.1.0) + multipart-post (2.3.0) + net-scp (4.0.0) + net-ssh (>= 2.6.5, < 8.0.0) + net-ssh (7.1.0) net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.13.10) + nokogiri (1.14.4) mini_portile2 (~> 2.8.0) racc (~> 1.4) nori (2.6.0) os (1.1.4) - parallel (1.22.1) - parser (3.1.2.0) + parallel (1.23.0) + parser (3.2.2.1) ast (~> 2.4.1) parslet (1.8.2) pastel (0.8.0) tty-color (~> 0.5) - pry (0.14.1) + pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (4.0.7) - racc (1.6.1) + public_suffix (5.0.1) + racc (1.6.2) rainbow (3.1.1) rake (13.0.6) recursive-open-struct (1.1.3) - regexp_parser (2.5.0) + regexp_parser (2.8.0) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) @@ -505,16 +508,16 @@ GEM rspec-mocks (~> 3.11.0) rspec-core (3.11.0) rspec-support (~> 3.11.0) - rspec-expectations (3.11.0) + rspec-expectations (3.11.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) rspec-its (1.3.0) rspec-core (>= 3.0.0) rspec-expectations (>= 3.0.0) - rspec-mocks (3.11.1) + rspec-mocks (3.11.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) - rspec-support (3.11.0) + rspec-support (3.11.1) rubocop (1.25.1) parallel (~> 1.10) parser (>= 3.1.0.0) @@ -524,9 +527,9 @@ GEM rubocop-ast (>= 1.15.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.19.1) - parser (>= 3.1.1.0) - ruby-progressbar (1.11.0) + rubocop-ast (1.28.1) + parser (>= 3.2.1.0) + ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) rubyntlm (0.6.3) rubyzip (2.3.2) @@ -542,24 +545,25 @@ GEM unicode-display_width (>= 1.5, < 3.0) unicode_utils (~> 1.4) strings-ansi (0.2.0) - test-kitchen (2.7.2) + test-kitchen (3.5.0) bcrypt_pbkdf (~> 1.0) + chef-utils (>= 16.4.35) ed25519 (~> 1.2) license-acceptance (>= 1.0.11, < 3.0) mixlib-install (~> 3.6) mixlib-shellout (>= 1.2, < 4.0) - net-scp (>= 1.1, < 4.0) - net-ssh (>= 2.9, < 7.0) + net-scp (>= 1.1, < 5.0) + net-ssh (>= 2.9, < 8.0) net-ssh-gateway (>= 1.2, < 3.0) thor (>= 0.19, < 2.0) winrm (~> 2.0) winrm-elevated (~> 1.0) winrm-fs (~> 1.1) - thor (1.2.1) + thor (1.2.2) timeliness (0.3.10) tomlrb (1.3.0) trailblazer-option (0.1.2) - train (3.10.1) + train (3.10.7) activesupport (>= 6.0.3.1) azure_graph_rbac (~> 0.16) azure_mgmt_key_vault (~> 0.17) @@ -570,7 +574,7 @@ GEM google-api-client (>= 0.23.9, <= 0.52.0) googleauth (>= 0.6.6, <= 0.14.0) inifile (~> 3.0) - train-core (= 3.10.1) + train-core (= 3.10.7) train-winrm (~> 0.2) train-aws (0.2.24) aws-sdk-alexaforbusiness (~> 1.0) @@ -648,13 +652,13 @@ GEM aws-sdk-synthetics (~> 1.19.0) aws-sdk-transfer (>= 1.26, < 1.35) aws-sdk-waf (~> 1.43.0) - train-core (3.10.1) + train-core (3.10.7) addressable (~> 2.5) ffi (!= 1.13.0) json (>= 1.8, < 3.0) mixlib-shellout (>= 2.0, < 4.0) - net-scp (>= 1.2, < 4.0) - net-ssh (>= 2.9, < 7.0) + net-scp (>= 1.2, < 5.0) + net-ssh (>= 2.9, < 8.0) train-habitat (0.2.22) train-winrm (0.2.13) winrm (>= 2.3.6, < 3.0) @@ -678,14 +682,14 @@ GEM pastel (~> 0.8) strings (~> 0.2.0) tty-screen (~> 0.8) - tty-which (0.4.2) - tzinfo (2.0.5) + tty-which (0.5.0) + tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) unf (0.1.4) unf_ext unf_ext (0.0.8.2) - unicode-display_width (2.2.0) + unicode-display_width (2.4.2) unicode_utils (1.4.0) winrm (2.3.6) builder (>= 2.1.2) @@ -706,18 +710,19 @@ GEM rubyzip (~> 2.0) winrm (~> 2.0) wisper (2.0.1) + zeitwerk (2.6.8) PLATFORMS ruby DEPENDENCIES - kitchen-terraform (~> 5.8)! + kitchen-terraform (~> 6.0)! kubeclient (~> 4.9)! - nokogiri (~> 1.13)! + nokogiri (~> 1.14)! rest-client (~> 2.0)! RUBY VERSION - ruby 2.7.6p219 + ruby 2.7.8p225 BUNDLED WITH 2.1.4 diff --git a/infra/build/developer-tools/build/scripts/module-swapper/go.mod b/infra/build/developer-tools/build/scripts/module-swapper/go.mod index 18d453c12af..1f7c03ec271 100644 --- a/infra/build/developer-tools/build/scripts/module-swapper/go.mod +++ b/infra/build/developer-tools/build/scripts/module-swapper/go.mod @@ -11,7 +11,7 @@ require ( github.com/Microsoft/go-winio v0.6.0 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect - github.com/cloudflare/circl v1.3.2 // indirect + github.com/cloudflare/circl v1.3.3 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect diff --git a/infra/build/developer-tools/build/scripts/module-swapper/go.sum b/infra/build/developer-tools/build/scripts/module-swapper/go.sum index f2e4f89b6f4..f1165d2bd19 100644 --- a/infra/build/developer-tools/build/scripts/module-swapper/go.sum +++ b/infra/build/developer-tools/build/scripts/module-swapper/go.sum @@ -12,8 +12,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= -github.com/cloudflare/circl v1.3.2 h1:VWp8dY3yH69fdM7lM6A1+NhhVoDu9vqK0jOgmkQHFWk= -github.com/cloudflare/circl v1.3.2/go.mod h1:+CauBF6R70Jqcyl8N2hC8pAXYbWkGIezuSbuGLtRhnw= +github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= 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= From 8b578e092f6d4d3abc8f6418e51d657f7579ac91 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Fri, 12 May 2023 17:09:27 -0400 Subject: [PATCH 0372/1371] fix: Remove owners of ecommerce-microservices (#1543) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 1 - 1 file changed, 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 7ac21175943..588ff2e931d 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -116,7 +116,6 @@ locals { short_name = "ecommerce-microservices" org = "GoogleCloudPlatform" description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." - owners = ["arbrown", "bourgeoisor", "donmccasland", "minherz", "NimJay", "Shabirmean"] groups = ["dee-platform-ops"] }, { From 05d6d1568727ee6cd23647489bb8261b82cd4042 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 12 May 2023 14:11:45 -0700 Subject: [PATCH 0373/1371] chore: update renovate.json with alpine (#1554) --- .github/renovate.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/renovate.json b/.github/renovate.json index d8f651d254d..6d0f89166a6 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -34,5 +34,13 @@ "allowedVersions": "<1.19.0", "postUpdateOptions": ["gomodTidy"] } + ], + "regexManagers": [ + { + "fileMatch": ["(^|/)Makefile$"], + "matchStrings": ["ALPINE_VERSION := (?.*?)\\n"], + "datasourceTemplate": "docker", + "depNameTemplate": "alpine" + } ] } From 382f0c206f6475f6b0898f5cdb73b2c12ae242f4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 May 2023 23:28:40 +0200 Subject: [PATCH 0374/1371] chore(deps): update google-github-actions/auth action to v1.1.1 (#1559) --- .github/workflows/build-push-cft-devtools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 0efb8e138ab..5b9a9f59f0b 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -23,7 +23,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@v1.1.0' + uses: 'google-github-actions/auth@v1.1.1' with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From 9a07f990e1cf0444d6394f5098fbd93f15b54d4f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 May 2023 23:33:41 +0200 Subject: [PATCH 0375/1371] chore(deps): update google-github-actions/setup-gcloud action to v1.1.1 (#1560) --- .github/workflows/build-push-cft-devtools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 5b9a9f59f0b..aff62097725 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -28,7 +28,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@v1.1.0 + - uses: google-github-actions/setup-gcloud@v1.1.1 with: version: "410.0.0" project_id: ${{ env.PROJECT_ID }} From 664ce1cc7adcd4b5532a7b01ff181ba96d5bb6b9 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 12 May 2023 22:52:51 -0500 Subject: [PATCH 0376/1371] feat: add support for int periodic and common owners (#1562) --- .../terraform/test-org/ci-triggers/outputs.tf | 4 +++ .../test-org/ci-triggers/scheduler.tf | 36 +++++++++++++++++++ .../test-org/ci-triggers/triggers.tf | 34 ++++++++++++++++++ .../test-org/github/.terraform.lock.hcl | 32 ++++++++--------- infra/terraform/test-org/org/locals.tf | 29 ++++++++++----- 5 files changed, 110 insertions(+), 25 deletions(-) create mode 100644 infra/terraform/test-org/ci-triggers/scheduler.tf diff --git a/infra/terraform/test-org/ci-triggers/outputs.tf b/infra/terraform/test-org/ci-triggers/outputs.tf index 3849801aa21..b354bb26b46 100644 --- a/infra/terraform/test-org/ci-triggers/outputs.tf +++ b/infra/terraform/test-org/ci-triggers/outputs.tf @@ -21,3 +21,7 @@ output "repo_folder" { output "int_triggers" { value = google_cloudbuild_trigger.int_trigger.* } + +output "int_periodic_triggers" { + value = google_cloudbuild_trigger.periodic_int_trigger.* +} diff --git a/infra/terraform/test-org/ci-triggers/scheduler.tf b/infra/terraform/test-org/ci-triggers/scheduler.tf new file mode 100644 index 00000000000..83aa18baac6 --- /dev/null +++ b/infra/terraform/test-org/ci-triggers/scheduler.tf @@ -0,0 +1,36 @@ +locals { + periodic_repos = toset([for m in data.terraform_remote_state.org.outputs.modules : m.name if lookup(m, "enable_periodic", false)]) +} + +resource "google_service_account" "periodic_sa" { + project = local.project_id + account_id = "periodic-test-trigger-sa" + display_name = "SA used by Cloud Scheduler to trigger periodics" +} + +resource "google_project_iam_member" "periodic_role" { + # custom role we created in ci-project/cleaner for scheduled cleaner builds + project = local.project_id + role = "projects/${local.project_id}/roles/CreateBuild" + member = "serviceAccount:${google_service_account.periodic_sa.email}" +} + +resource "google_cloud_scheduler_job" "job" { + for_each = local.periodic_repos + name = "periodic-${each.value}" + project = local.project_id + description = "Trigger periodic build for ${each.value}" + region = "us-central1" + # run every day at 3:00 + # todo(bharathkkb): likely need to stagger run times once number of repos increase + schedule = "0 3 * * *" + + http_target { + http_method = "POST" + uri = "https://cloudbuild.googleapis.com/v1/projects/${local.project_id}/triggers/${google_cloudbuild_trigger.periodic_int_trigger[each.value].trigger_id}:run" + body = base64encode("{\"branchName\": \"main\"}") + oauth_token { + service_account_email = google_service_account.periodic_sa.email + } + } +} diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 1db519c5242..64c903d718c 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -46,6 +46,40 @@ resource "google_cloudbuild_trigger" "int_trigger" { ignored_files = ["**/*.md", ".gitignore", ".github/**", "**/metadata.yaml"] } +# pull_request triggers do not support run trigger, so we have a shadow periodic trigger +resource "google_cloudbuild_trigger" "periodic_int_trigger" { + provider = google-beta + project = local.project_id + name = "${each.key}-periodic-int-trigger" + description = "Periodic integration tests on pull request for ${each.key}" + for_each = { for k, v in local.repo_folder : k => v if contains(local.periodic_repos, k) } + github { + owner = each.value.gh_org + name = each.key + # this will be invoked via cloud scheduler, hence using a regex that will not match any branch + push { + branch = ".^" + } + } + substitutions = merge( + { + _BILLING_ACCOUNT = local.billing_account + _FOLDER_ID = each.value.folder_id + _ORG_ID = local.org_id + _BILLING_IAM_TEST_ACCOUNT = each.key == "terraform-google-iam" ? local.billing_iam_test_account : null + _VOD_TEST_PROJECT_ID = each.key == "terraform-google-media-cdn-vod" ? local.vod_test_project_id : null + _FILE_LOGS_BUCKET = lookup(local.enable_file_log, each.key, false) ? module.filelogs_bucket.url : null + _LR_BILLING_ACCOUNT = local.lr_billing_account + }, + # add sfb substitutions + contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} + ) + + filename = "build/int.cloudbuild.yaml" + ignored_files = ["**/*.md", ".gitignore", ".github/**", "**/metadata.yaml"] +} + + resource "google_cloudbuild_trigger" "tf_validator_main_integration_tests" { for_each = { tf12 = "0.12.31" diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 8b465b382ec..d0b56a7220d 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,23 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "5.23.0" + version = "5.25.0" constraints = "~> 5.0, ~> 5.15" hashes = [ - "h1:FSHiqYsBDKUZi5I9q4ozZ59/sMTTQl1GYXeILLZO6oA=", - "zh:006d889fedb143523e2b634478422643d8979b554ff54e8e14985e2ba1e64a55", - "zh:13af3551f5f13ab5558d4d90e8ca4a43fccd0d09aa7dbf04ed8a599ac9aadbf1", - "zh:142144634d525eff5670ac292fd3ed019f504b51974233ecad852cafcc73e2eb", - "zh:168ad7577bc9f181361e5015642dbb030f33387b4a6284b9855861d81f1ec341", - "zh:45aa1df2ccdf2092597507b72197b8e35b2fa651b2338d8b68248f93267f01d6", - "zh:48209af2abf45ac2a8d45b804e0e6c542c48d8eaac44a31f5f70db402e2dc4e6", - "zh:4da802b73275ea823c6f8325ab2b7b65650d212884d41f0295135e337213fb20", - "zh:6d862eedf87808955eb57376dc4a4029f74ec9281f9612406fff7b9e09796985", - "zh:80efa1ea1d196c1ca35899e88c8935f41af10d955bfce9745994762654549802", - "zh:947016c71515fb7725c2ac201fcd03a8dd08dc2c6e8aa34af398b8d43272d21d", - "zh:a4ae425291ed246e17cff587f7364c813f191ac43917c6a25e32a2137e92f664", - "zh:c962de2984083905d4c6afb3697e800d281b3ba2b042da806b809d3afb8f4a23", - "zh:cd6e49f8967fc59fee76606bf7ad5efe431cc02ee797dc490b644fb774dcb363", - "zh:fc50b9a38f8f6cb4dcb33aa1cef63bc7b706df2f6ae84e1d7db7481170693947", + "h1:PV5RT2TVZIoaw9gLRM9iVMz1kKOoVYRz5AEsJ8OaXDM=", + "zh:15e6e652b10f225b1d2a6c675e38e7e119b0a19a3009a88e5c6a478d65f02fc5", + "zh:1a875d13507eca65d64bdac0f62910f6ce26fb1ef746bbf5f7b2bbe86c78441b", + "zh:1f41a0053d13971d7c8fd2eb0b3ce263f65d7c2a393580f72ad83a28d562a45e", + "zh:274fa0c49b3ef20f968cefd01d5e40af76437868ff7accc8430c0407b9f9d4b6", + "zh:2b30f8de0f5e0f3157e368ae034fb62ee92798329afc5bf239d384e393ef6860", + "zh:53e0da4b92ed389c766042fc60e72629896a2f6050ed3b7c036cc8fde8a22858", + "zh:5a9e3900a0e7b62c7769e8c7e993e0f87229b0a0cc4fa3064fc79bfe73fa1ec9", + "zh:7fa4a46ec94f6e1da93399955e8571ba0b20100e1bd7e34b5e75fbed7d43ae72", + "zh:bc2f75e40c8743539199f09f0fc54ff091d1bb05398539642c3f75d869a251c5", + "zh:d80a7bdfc4be101559c0bec516a73239291d18be522a2fa872fa8e07a65a3966", + "zh:ea230531bb0fe2f778a72edb6bc6a80983a7a2c82a1c5f255a6ae11d45f714f2", + "zh:f649cd014748ef498ccb8c07c4de1d55b736daeaeb8591395cd6b80a8502612a", + "zh:fb94e009e8348bb016cde0b39b8e0968f60d5fd9cbc0be82bdb3ab498e5dea46", + "zh:fbc119a51967c497d24a728d5afad72fb5f49494ef3645816336f898ac031661", ] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 588ff2e931d..c0d83be2ada 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -36,6 +36,7 @@ locals { gh_org = repo.org } } + jss_common_group = "jump-start-solution-owners" common_topics = { hcls = "healthcare-life-sciences", @@ -66,6 +67,7 @@ locals { * topics = "string1,string2,string3" (one or more of local.common_topics required if module = true) * lint_env = "map(string)" (optional) * disable_lint_yaml = BOOL (optional, default is true) + * enable_periodic = BOOL (optional, if enabled runs a daily periodic test. Defaults to false ) * */ @@ -116,7 +118,7 @@ locals { short_name = "ecommerce-microservices" org = "GoogleCloudPlatform" description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." - groups = ["dee-platform-ops"] + groups = ["dee-platform-ops", local.jss_common_group] }, { name = "terraform-example-java-dynamic-point-of-sale" @@ -124,7 +126,7 @@ locals { org = "GoogleCloudPlatform" description = "Deploys a dynamic Java webapp into a Google Kubernetes Engine cluster." owners = ["shabirmean", "Mukamik"] - groups = ["dee-platform-ops"] + groups = ["dee-platform-ops", local.jss_common_group] lint_env = { "EXCLUDE_HEADER_CHECK" = "\\./infra/modules/spanner/sql-schema" } @@ -149,6 +151,7 @@ locals { description = "Stores and analyzes log data" owners = ["ryotat7"] topics = local.common_topics.da + groups = [local.jss_common_group] }, { name = "terraform-google-three-tier-web-app" @@ -156,6 +159,7 @@ locals { description = "Deploys a three tier web application using Cloud Run and Cloud SQL" owners = ["tpryan"] topics = join(",", [local.common_topics.serverless, local.common_topics.db]) + groups = [local.jss_common_group] }, { name = "terraform-google-load-balanced-vms" @@ -165,11 +169,13 @@ locals { topics = local.common_topics.net }, { - name = "terraform-google-secure-cicd" - org = "GoogleCloudPlatform" - description = "Builds a secure CI/CD pipeline on Google Cloud" - owners = ["gtsorbo"] - topics = join(",", [local.common_topics.security, local.common_topics.devtools, local.common_topics.e2e]) + name = "terraform-google-secure-cicd" + org = "GoogleCloudPlatform" + description = "Builds a secure CI/CD pipeline on Google Cloud" + owners = ["gtsorbo"] + topics = join(",", [local.common_topics.security, local.common_topics.devtools, local.common_topics.e2e]) + enable_periodic = true + groups = [local.jss_common_group] }, { name = "terraform-google-media-cdn-vod" @@ -177,6 +183,7 @@ locals { description = "Deploys Media CDN video-on-demand" owners = ["roddzurcher"] topics = local.common_topics.ops + groups = [local.jss_common_group] }, { name = "terraform-example-foundation-app" @@ -554,6 +561,7 @@ locals { description = "Deploy a dynamic python webapp" owners = ["glasnt", "donmccasland"] homepage_url = "avocano.dev" + groups = [local.jss_common_group] }, { name = "terraform-example-deploy-java-multizone" @@ -561,6 +569,7 @@ locals { org = "GoogleCloudPlatform" description = "Deploy a multizone Java application" owners = ["donmccasland"] + groups = [local.jss_common_group] }, { name = "terraform-google-itar-architectures" @@ -581,6 +590,7 @@ locals { description = "Deploys a Lakehouse Architecture Solution" owners = ["stevewalker-de"] topics = local.common_topics.da + groups = [local.jss_common_group] }, { name = "terraform-google-alloy-db" @@ -602,6 +612,7 @@ locals { org = "GoogleCloudPlatform" description = "Deploy a Legacy Java App GKE" owners = ["donmccasland"] + groups = [local.jss_common_group] }, { name = "terraform-google-crmint" @@ -615,14 +626,14 @@ locals { short_name = "large-data-sharing-java-app" org = "GoogleCloudPlatform" description = "Deploys a large data sharing Java web app" - groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai"] + groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] }, { name = "terraform-large-data-sharing-golang-webapp" short_name = "large-data-sharing-go-app" org = "GoogleCloudPlatform" description = "Deploys a large data sharing Golang web app" - groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai"] + groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] }, ] } From 74d0f8532ae8d024aa9efc75c902e35eb1707522 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 12 May 2023 20:54:55 -0700 Subject: [PATCH 0377/1371] chore: update renovate.json (#1561) Co-authored-by: Bharath KKB --- .github/renovate.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index 6d0f89166a6..17ee22f3832 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -14,7 +14,7 @@ "stabilityDays":0 }, "separateMajorMinor":false, - "ignorePaths": ["infra/concourse/**", "config-connector/**", "docs/**"], + "ignorePaths": ["config-connector/**"], "additionalBranchPrefix": "{{parentDir}}-", "packageRules": [ { @@ -24,6 +24,10 @@ ":rebaseStalePrs" ] }, + { + "matchPackageNames": ["google", "google-beta"], + "groupName": "terraform google provider" + }, { "matchDepTypes": ["require"], "postUpdateOptions": ["gomodTidy"], From a5324e229310b7f82302a99900164f1de34370a8 Mon Sep 17 00:00:00 2001 From: Jan Van Bruggen Date: Mon, 15 May 2023 09:43:02 -0600 Subject: [PATCH 0378/1371] chore: remove dead links from #1550 (#1566) --- .github/ISSUE_TEMPLATE/issue-template.md | 2 +- .github/issue_template.md | 2 +- .gitignore | 1 - dm/README.md | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/issue-template.md b/.github/ISSUE_TEMPLATE/issue-template.md index cc20b140c19..7b666487880 100644 --- a/.github/ISSUE_TEMPLATE/issue-template.md +++ b/.github/ISSUE_TEMPLATE/issue-template.md @@ -11,7 +11,7 @@ assignees: '' Dear CFT User! -If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/docs/terraform.md) +If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://g.co/dev/terraformfoundation) Terraform CFT supports the most recent GCP resources, reflects GCP best practices can be used off-the-shelf to quickly build a repeatable enterprise-ready foundation. Additionally, if you are a looking to manage your GCP resources through Kubernetes, consider using [Config Connector CFT solutions](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/config-connector/solutions). diff --git a/.github/issue_template.md b/.github/issue_template.md index db2b29393fb..68ef89ad9b3 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -1,5 +1,5 @@ Dear CFT User! -If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/docs/terraform.md) +If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://g.co/dev/terraformfoundation) Terraform CFT supports the most recent GCP resources, reflects GCP best practices can be used off-the-shelf to quickly build a repeatable enterprise-ready foundation. Additionally, if you are a looking to manage your GCP resources through Kubernetes, consider using [Config Connector CFT solutions](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/config-connector/solutions). diff --git a/.gitignore b/.gitignore index c06ba7e1302..71d8d6002f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ *.iml .idea credentials.json -docs/meta/env config-connector/tests/testcases/environments.yaml .DS_Store .vscode diff --git a/dm/README.md b/dm/README.md index 548e0e4f6c7..5c1dc0c9e24 100644 --- a/dm/README.md +++ b/dm/README.md @@ -1,6 +1,6 @@ # Dear CFT User! -If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/docs/terraform.md) +If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://g.co/dev/terraformfoundation) Terraform CFT supports the most recent GCP resources, reflects GCP best practices can be used off-the-shelf to quickly build a repeatable enterprise-ready foundation. Additionally, if you are a looking to manage your GCP resources through Kubernetes, consider using [Config Connector CFT solutions](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/config-connector/solutions). From 0bb0056d9ea1ba944bae83c727244babc0564642 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 15 May 2023 09:41:38 -0700 Subject: [PATCH 0379/1371] fix: sets default arg for generate_metadata to avoid unbound errors (#1565) --- .../developer-tools/build/scripts/task_helper_functions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index c5690a729d2..31d9471559a 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -311,7 +311,7 @@ function generate_docs() { echo "ENABLE_BPMETADATA not set to 1. Skipping metadata generation." return 0 fi - generate_metadata $1 + generate_metadata "${1-core}" } function generate_metadata() { From 73676577920dc6989035e71815f1fed7e6079d7f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 15 May 2023 12:18:53 -0700 Subject: [PATCH 0380/1371] chore: update github provider (#1558) --- .../test-org/ci-project/.terraform.lock.hcl | 105 ++++++++---------- .../terraform/test-org/ci-project/versions.tf | 2 +- 2 files changed, 45 insertions(+), 62 deletions(-) diff --git a/infra/terraform/test-org/ci-project/.terraform.lock.hcl b/infra/terraform/test-org/ci-project/.terraform.lock.hcl index 907ceea8037..60534d9c42c 100644 --- a/infra/terraform/test-org/ci-project/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-project/.terraform.lock.hcl @@ -2,80 +2,63 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "4.23.0" + version = "4.64.0" constraints = ">= 3.39.0, >= 3.53.0, >= 3.64.0, < 5.0.0" hashes = [ - "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", - "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", - "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", - "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", - "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", - "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", - "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", - "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", - "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", - "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", - "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "h1:e9YVOqH5JQTR0LbT+VkOlJb1pDoZEvzXkqaA0Xsn5Mo=", + "zh:097fcb0a45fa41c2476deeb7a9adeadf5142e35e4d1a9eeb7b1720900a06807c", + "zh:177e6e34f10efb5cec16b4106af5aef5240f20c33d91d40f3ea73fdc6ce9a24a", + "zh:3331b0f62f900f8f1447e654a7318f3db03723739ac5dcdc446f1a1b1bf5fd0b", + "zh:39e5a19693f8d598d35968660837d1b55ca82d7c314cd433fd957d1c2a5b6616", + "zh:44d09cb871e7ec242610d84f93367755d0c532f744e5871a032cdba430e39ec7", + "zh:77769c0f8ace0be3f85b702b7d4cc0fd43d89bfbea1493166c4f288338222f0a", + "zh:a83ca3e204a85d1d04ee7a6432fdabc7b7e2ef7f46513b6309d8e30ea9e855a3", + "zh:bbf1e983d24877a690886aacd48085b37c8c61dc65e128707f36b7ae6de11abf", + "zh:c359fcf8694af0ec490a1784575eeb355d6e5a922b225f49d5307a06e9715ad0", + "zh:f0df551e19cf8cc9a021a4148518a610b856a50a55938710837fa55b4fbd252f", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + "zh:fb171d37178d46d711f3e09107492343f8356c1237bc6df23114920dc23c4528", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.23.0" - constraints = ">= 3.39.0, < 5.0.0" + version = "4.64.0" + constraints = ">= 3.39.0, >= 3.64.0, < 5.0.0" hashes = [ - "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", - "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", - "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", - "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", - "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", - "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", - "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", - "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", - "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", - "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", - "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "h1:3zF6A6S2KP79AIWHflNmbdz2v3aitZvr3iE5jH3IY4M=", + "zh:3a84df072e75042c7445d3cc9fd220a2f58199b01b0b936e220554b4e9b59b3c", + "zh:60e8a5f5824415859bc847f69f8d48e83126dbe7c440c51fd1a6d1b1df5a3ba9", + "zh:6e95c14646cd9c9c8d3f806d05911806830b513769ce32ececf26501f8e77b61", + "zh:7757bf4535219be1e8a127fada8e9f3d188c11babd7c2b8bf308a705e81c0261", + "zh:78c1b91d93259b90a48519a85bfcc127aa4a46e8180400169e76fe8976f1965f", + "zh:85dedb9aaaa4d9c95270a08edf212e1f07f253a6da6934052f6e6e5c352ac84d", + "zh:8dff151ba3dece2d12270216253f12ec9c550f437ebbb90daf5e1fb628da30d9", + "zh:b3d2797f06d97d1c85e94e5fda04d6c4191211dba954a6c45dcc6441d32bd409", + "zh:b68102e435b4071d4aa26c415a787d259373f97a9049e68844e97504672695f9", + "zh:c865728116c3ebc9b4c6bd7d942b17d5640c368eb50574a2e7edfa15cc7b2c9b", + "zh:eb550d69402a201c805f078756f4102449ce8a04620db31ab5e964d93846eb5f", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", - ] -} - -provider "registry.terraform.io/hashicorp/template" { - version = "2.2.0" - hashes = [ - "h1:94qn780bi1qjrbC3uQtjJh3Wkfwd5+tTtJHOb7KTg9w=", - "zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386", - "zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53", - "zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603", - "zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16", - "zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776", - "zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451", - "zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae", - "zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde", - "zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d", - "zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2", ] } provider "registry.terraform.io/integrations/github" { - version = "4.26.0" - constraints = "~> 4.0" + version = "5.25.0" + constraints = "~> 5.0" hashes = [ - "h1:eNvbfw3jxqfIq8dvUFSp4pUtKqCS3lrHV+oE9PQQDqc=", - "zh:054cd4788849352476e3f08a794a5ea7429d5c69b6946db1d0c09f879d622e5d", - "zh:0f0fbe979c79087e8265459b698ed78a067d4616947c3732eb4a64f219a2d8c6", - "zh:298eaa16bbddc0801c6ccb59cb381d102d89b9ff385c3f5b5bb8d1098ff63405", - "zh:330cde23d4265819f34fdb86657313114cee24d70e31c1d97e2e8e06c0145306", - "zh:3f28f3ac5a6c1058df5ca68818616dcc8a467912160e209a0cf67b3324030e75", - "zh:5021bd1c2eec7bf45c31e870ff3ff6ba41ae74322fd2368cb58d41e62c035c8a", - "zh:5d292c3f4e8fad1a2f56be918c2d06ececc2a0eaf086b062f1be752463127f17", - "zh:737e96810cf0d9bd50db7129e04e0d611231ad5cce0cf8da3126cda2fa9a0da0", - "zh:8bc6ffaf4ad9521fb1e629c5cef3f27cbcfea10405146ab2c8c89a4eeeb71a8f", - "zh:c62a553e3dff7a5bb68b5af427d296bffeb5e0cb0796351d5c61814ad044b8ef", - "zh:ce3fa79a68dad071de5e2fa63ede1ec74dd1ae4967149dd8f47cb0859c6bf2d5", - "zh:d7b37d992d6648082006850e9adf847db430a250281db7a28dbb2f3b73e0ae86", - "zh:efd545178375a6fe4c6026765f2ad6698b06474b2f493479ba5be0d653e60b8b", - "zh:f71c11d127b194cefacdba0949c93c8e8b9c2045e3a723bd47f8fc1b7ba262b6", + "h1:PV5RT2TVZIoaw9gLRM9iVMz1kKOoVYRz5AEsJ8OaXDM=", + "zh:15e6e652b10f225b1d2a6c675e38e7e119b0a19a3009a88e5c6a478d65f02fc5", + "zh:1a875d13507eca65d64bdac0f62910f6ce26fb1ef746bbf5f7b2bbe86c78441b", + "zh:1f41a0053d13971d7c8fd2eb0b3ce263f65d7c2a393580f72ad83a28d562a45e", + "zh:274fa0c49b3ef20f968cefd01d5e40af76437868ff7accc8430c0407b9f9d4b6", + "zh:2b30f8de0f5e0f3157e368ae034fb62ee92798329afc5bf239d384e393ef6860", + "zh:53e0da4b92ed389c766042fc60e72629896a2f6050ed3b7c036cc8fde8a22858", + "zh:5a9e3900a0e7b62c7769e8c7e993e0f87229b0a0cc4fa3064fc79bfe73fa1ec9", + "zh:7fa4a46ec94f6e1da93399955e8571ba0b20100e1bd7e34b5e75fbed7d43ae72", + "zh:bc2f75e40c8743539199f09f0fc54ff091d1bb05398539642c3f75d869a251c5", + "zh:d80a7bdfc4be101559c0bec516a73239291d18be522a2fa872fa8e07a65a3966", + "zh:ea230531bb0fe2f778a72edb6bc6a80983a7a2c82a1c5f255a6ae11d45f714f2", + "zh:f649cd014748ef498ccb8c07c4de1d55b736daeaeb8591395cd6b80a8502612a", + "zh:fb94e009e8348bb016cde0b39b8e0968f60d5fd9cbc0be82bdb3ab498e5dea46", + "zh:fbc119a51967c497d24a728d5afad72fb5f49494ef3645816336f898ac031661", ] } diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf index a5d1b09e657..25377d7e4b9 100644 --- a/infra/terraform/test-org/ci-project/versions.tf +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -19,7 +19,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 4.0" + version = "~> 5.0" } google = { version = ">= 3.39, < 5.0" From 2777333d69ddb2625b266b488bfbae8335f774e1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 15 May 2023 21:34:09 +0200 Subject: [PATCH 0381/1371] chore(deps): update actions/setup-go action to v4.0.1 (#1569) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 20452c428ee..a353eaf5451 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -23,7 +23,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test] steps: - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: '1.18' cache: false From e62b3e931a68e6d9be9cd2465baae37579e4ba4a Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 15 May 2023 16:55:39 -0700 Subject: [PATCH 0382/1371] feat: go lint issues and metadata schema updates (#1572) --- cli/Makefile | 2 +- cli/bpcatalog/render.go | 5 +- cli/bpmetadata/markdown_test.go | 29 ++++++---- cli/bpmetadata/proto/bpmetadata.proto | 4 ++ cli/bpmetadata/proto/bpmetadata_ui.proto | 4 +- cli/bpmetadata/schema/bpmetadataschema.json | 7 ++- cli/bpmetadata/tfconfig.go | 15 ++++- cli/bpmetadata/types.go | 6 +- cli/bpmetadata/types_ui.go | 4 +- cli/bptest/list.go | 24 ++++++-- cli/cmd/blueprint.go | 2 +- cli/cmd/launchpad.go | 4 +- cli/cmd/root.go | 7 ++- cli/go.mod | 2 +- cli/launchpad/generic.go | 2 +- cli/report/cmd.go | 25 +++++++-- cli/report/report.go | 17 +++++- cli/scorecard/cmd.go | 10 +++- cli/scorecard/proto.go | 4 +- cli/scorecard/proto_test.go | 15 +++-- cli/scorecard/score.go | 62 ++++++++++++++++----- cli/scorecard/score_test.go | 6 +- 22 files changed, 191 insertions(+), 65 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 76a7802c7d1..59e2d261148 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.2 +VERSION=v1.1.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/render.go b/cli/bpcatalog/render.go index e21719c1999..c91c5059cf6 100644 --- a/cli/bpcatalog/render.go +++ b/cli/bpcatalog/render.go @@ -135,7 +135,10 @@ type displayMeta struct { func render(r repos, w io.Writer, format renderFormat, verbose bool) error { dm := reposToDisplayMeta(r) if format == renderHTML { - w.Write([]byte(renderDocHTML(append(dm, staticDM...)))) + _, err := w.Write([]byte(renderDocHTML(append(dm, staticDM...)))) + if err != nil { + return err + } return nil } diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go index 0197f0cc351..634b9b2b764 100644 --- a/cli/bpmetadata/markdown_test.go +++ b/cli/bpmetadata/markdown_test.go @@ -177,11 +177,12 @@ func TestProcessMarkdownContent(t *testing.T) { func TestProcessArchitectureContent(t *testing.T) { tests := []struct { - name string - fileName string - title string - want *BlueprintArchitecture - wantErr bool + name string + fileName string + title string + want *BlueprintArchitecture + wantErr bool + wantFileErr bool }{ { name: "Architecture details exists as BlueprintArchitecture", @@ -203,16 +204,22 @@ func TestProcessArchitectureContent(t *testing.T) { wantErr: true, }, { - name: "md content file path for BlueprintArchitecture is invalid", - fileName: "list-content-bad-file-name.md", - title: "Architecture", - wantErr: true, + name: "md content file path for BlueprintArchitecture is invalid", + fileName: "list-content-bad-file-name.md", + title: "Architecture", + wantErr: true, + wantFileErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { content, err := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) + if (err != nil) != tt.wantFileErr { + t.Errorf("ReadFile() = %v, wantErr %v", err, tt.wantFileErr) + return + } + got, err := getArchitctureInfo(content, tt.title) if (err != nil) != tt.wantErr { t.Errorf("getArchitctureInfo() error = %v, wantErr %v", err, tt.wantErr) @@ -264,7 +271,7 @@ func TestProcessDeploymentDurationContent(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - content, err := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) + content, _ := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) got, err := getDeploymentDuration(content, tt.title) if (err != nil) != tt.wantErr { t.Errorf("getDeploymentDuration() error = %v, wantErr %v", err, tt.wantErr) @@ -308,7 +315,7 @@ func TestProcessCostEstimateContent(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - content, err := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) + content, _ := os.ReadFile(path.Join(mdTestdataPath, tt.fileName)) got, err := getCostEstimate(content, tt.title) if (err != nil) != tt.wantErr { t.Errorf("getCostEstimate() error = %v, wantErr %v", err, tt.wantErr) diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index b4e82945c7c..77de9eba993 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -87,6 +87,10 @@ message BlueprintInfo { // A list of GCP org policies to be checked for successful deployment. repeated BlueprintOrgPolicyCheck org_policy_checks = 14; + + // Specifies if the blueprint supports single or multiple deployments per GCP project. + // If set to true, the blueprint can not be deployed more than once in the same GCP project. + bool single_deployment = 15; } // BlueprintContent defines the detail for blueprint related content such as diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 3a6a5112bfa..f9fd13dfaea 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -50,10 +50,10 @@ message DisplayVariable { int32 max_length = 10; // Minimum value for numeric types. - int32 min = 11; + float min = 11; // Max value for numeric types. - int32 max = 12; + float max = 12; // The name of a section to which this variable belongs. // variables belong to the root section if this field is diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index 255c1f6ed6c..c6aa30cf240 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -225,6 +225,9 @@ }, "supportInfo": { "$ref": "#/$defs/BlueprintSupport" + }, + "singleDeployment": { + "type": "boolean" } }, "additionalProperties": false, @@ -665,10 +668,10 @@ "type": "integer" }, "min": { - "type": "integer" + "type": "number" }, "max": { - "type": "integer" + "type": "number" }, "section": { "type": "string" diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index dc7e44fb757..c0928edc3e1 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -167,7 +167,12 @@ func parseBlueprintVersion(versionsFile *hcl.File, diags hcl.Diagnostics) (strin // get the module name from the version attribute and extract the // version name only var modName string - gohcl.DecodeExpression(versionAttr.Expr, nil, &modName) + diags := gohcl.DecodeExpression(versionAttr.Expr, nil, &modName) + err = hasHclErrors(diags) + if err != nil { + return "", err + } + m := re.FindStringSubmatch(modName) if len(m) > 0 { return m[len(m)-1], nil @@ -290,7 +295,7 @@ func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { return nil, err } - for k, _ := range iamAttrs { + for k := range iamAttrs { var iamRoles []string attrValue, _ := iamAttrs[k].Expr.Value(nil) if !attrValue.Type().IsTupleType() { @@ -346,7 +351,11 @@ func parseBlueprintServices(servicesFile *hcl.File) ([]string, error) { return nil, fmt.Errorf("activate_apis not defined for project module") } - gohcl.DecodeExpression(apisAttr.Expr, nil, &s) + diags = gohcl.DecodeExpression(apisAttr.Expr, nil, &s) + err = hasHclErrors(diags) + if err != nil { + return nil, err + } // because we're only interested in the top-level modules block break diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 91137c61381..035797ab2fc 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -81,6 +81,10 @@ type BlueprintInfo struct { // Support offered, if any for the blueprint. // Manually authored. SupportInfo BlueprintSupport `json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` + + // Specifies if the blueprint supports single or multiple deployments per GCP project. + // If set to true, the blueprint can not be deployed more than once in the same GCP project. + SingleDeployment bool `json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty"` } type BlueprintRepoDetail struct { @@ -318,7 +322,7 @@ type BlueprintDiagram struct { type BlueprintListContent struct { Title string `json:"title" yaml:"title"` - URL string `json:"url,omitempty" yaml:url,omitempty"` + URL string `json:"url,omitempty" yaml:"url,omitempty"` } type BlueprintVariable struct { diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index 41b473dd833..3c4319e5b73 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -58,10 +58,10 @@ type DisplayVariable struct { MaximumLength int `json:"maxLength,omitempty" yaml:"maxLength,omitempty"` // Minimum value for numeric types. - Minimum int `json:"min,omitempty" yaml:"min,omitempty"` + Minimum float32 `json:"min,omitempty" yaml:"min,omitempty"` // Max value for numeric types. - Maximum int `json:"max,omitempty" yaml:"max,omitempty"` + Maximum float32 `json:"max,omitempty" yaml:"max,omitempty"` // The name of a section to which this variable belongs. // variables belong to the root section if this field is diff --git a/cli/bptest/list.go b/cli/bptest/list.go index cb3907f24e6..112b6cabb72 100644 --- a/cli/bptest/list.go +++ b/cli/bptest/list.go @@ -84,12 +84,16 @@ func getDiscoveredTests(intTestDir string) ([]bpTest, error) { func getExplicitTests(intTestDir string) ([]bpTest, error) { // find all explicit test files ending with *_test.go excluding discover_test.go within intTestDir - testFiles := findFiles(intTestDir, + testFiles, err := findFiles(intTestDir, func(d fs.DirEntry) bool { return strings.HasSuffix(d.Name(), "_test.go") && d.Name() != discoverTestFilename }, ) + if err != nil { + Log.Warn(fmt.Sprintf("walking file path: %s : details: %v", intTestDir, err)) + } + eTests := []bpTest{} for _, testFile := range testFiles { // testDir name maps to a matching example/fixture @@ -136,11 +140,16 @@ func getDiscoverTestName(dFileName string) (string, error) { // If not found, it returns current working directory. func discoverIntTestDir(cwd string) (string, error) { // search for discover_test.go - discoverTestFiles := findFiles(cwd, + discoverTestFiles, err := findFiles(cwd, func(d fs.DirEntry) bool { return d.Name() == discoverTestFilename }, ) + + if err != nil { + Log.Warn(fmt.Sprintf("walking file path: %s : details: %v", cwd, err)) + } + if len(discoverTestFiles) > 1 { return "", fmt.Errorf("found multiple %s files: %+q. Exactly one file was expected", discoverTestFilename, discoverTestFiles) } @@ -170,9 +179,9 @@ func getIntTestDir(intTestDir string) (string, error) { } // findFiles returns a slice of file paths matching matchFn -func findFiles(dir string, matchFn func(d fs.DirEntry) bool) []string { +func findFiles(dir string, matchFn func(d fs.DirEntry) bool) ([]string, error) { files := []string{} - filepath.WalkDir(dir, func(fpath string, d fs.DirEntry, err error) error { + err := filepath.WalkDir(dir, func(fpath string, d fs.DirEntry, err error) error { if err != nil { return err } @@ -186,5 +195,10 @@ func findFiles(dir string, matchFn func(d fs.DirEntry) bool) []string { } return nil }) - return files + + if err != nil { + return nil, err + } + + return files, nil } diff --git a/cli/cmd/blueprint.go b/cli/cmd/blueprint.go index c08449065f0..dbd22688ee5 100644 --- a/cli/cmd/blueprint.go +++ b/cli/cmd/blueprint.go @@ -23,7 +23,7 @@ var blueprintCmd = &cobra.Command{ Long: `The CFT blueprint CLI is used to execute commands specific to blueprints such as test, builds & metadata`, Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { - if args == nil || len(args) == 0 { + if len(args) == 0 { cmd.HelpFunc()(cmd, args) } }, diff --git a/cli/cmd/launchpad.go b/cli/cmd/launchpad.go index 1754ea3c9ff..193264f8b26 100644 --- a/cli/cmd/launchpad.go +++ b/cli/cmd/launchpad.go @@ -25,7 +25,7 @@ var launchpadCmd = &cobra.Command{ Cloud Foundation Ecosystem Convention. Taking YAML and generate opinionated infrastructure resources ready to be deployed in Infrastructure as Code style`, Run: func(cmd *cobra.Command, args []string) { - if args == nil || len(args) == 0 { + if len(args) == 0 { cmd.HelpFunc()(cmd, args) } }, @@ -38,7 +38,7 @@ var launchpadGenerateCmd = &cobra.Command{ Long: `Generate infrastructure foundation via defined YAML`, Args: cobra.MinimumNArgs(1), Run: func(cmd *cobra.Command, args []string) { - if args == nil || len(args) == 0 { + if len(args) == 0 { cmd.HelpFunc()(cmd, args) } else { launchpad.NewGenerate(args, launchpad.NewOutputFlavor(launchpadOutputFlavor), launchpadOutputDirectory) diff --git a/cli/cmd/root.go b/cli/cmd/root.go index b7194f878d4..b97b8507639 100644 --- a/cli/cmd/root.go +++ b/cli/cmd/root.go @@ -20,7 +20,7 @@ var rootCmd = &cobra.Command{ Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { // no params means same as -h flag - if args == nil || len(args) == 0 { + if len(args) == 0 { cmd.HelpFunc()(cmd, args) } }, @@ -71,7 +71,10 @@ Use "{{.CommandPath}} [command] --help" for more information about a command.{{e } rootCmd.PersistentFlags().BoolVar(&flags.verbose, "verbose", false, "Log output to stdout") - viper.BindPFlag("verbose", rootCmd.PersistentFlags().Lookup("verbose")) + err := viper.BindPFlag("verbose", rootCmd.PersistentFlags().Lookup("verbose")) + if err != nil { + panic(err) + } rootCmd.AddCommand(scorecard.Cmd) rootCmd.AddCommand(report.Cmd) diff --git a/cli/go.mod b/cli/go.mod index 826c0b58e3e..3b704c1cf44 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -37,7 +37,7 @@ require ( golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 google.golang.org/api v0.58.0 google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 - google.golang.org/protobuf v1.28.1 // indirect + google.golang.org/protobuf v1.28.1 gopkg.in/yaml.v2 v2.4.0 sigs.k8s.io/kustomize/kyaml v0.13.9 sigs.k8s.io/yaml v1.2.0 diff --git a/cli/launchpad/generic.go b/cli/launchpad/generic.go index 50aa064d793..136c7e10760 100644 --- a/cli/launchpad/generic.go +++ b/cli/launchpad/generic.go @@ -30,7 +30,7 @@ var ( errMissingRequiredField = errors.New("missing required field") errInvalidParent = errors.New("invalid parent reference") errInvalidInput = errors.New("invalid input") - tfNameRegex = regexp.MustCompile("^[a-zA-Z][a-zA-Z\\d\\-\\_]*$") + tfNameRegex = regexp.MustCompile(`^[a-zA-Z][a-zA-Z\d\-\_]*$`) ) // resourceHandler represents a resource that can be processed by launchpad. diff --git a/cli/report/cmd.go b/cli/report/cmd.go index 5fa6db5a411..23ef8f64e15 100644 --- a/cli/report/cmd.go +++ b/cli/report/cmd.go @@ -31,22 +31,37 @@ func init() { viper.AutomaticEnv() Cmd.Flags().StringVar(&flags.queryPath, "query-path", "", "Path to directory containing inventory queries") - Cmd.MarkFlagRequired("query-path") + err := Cmd.MarkFlagRequired("query-path") + if err != nil { + panic(err) + } Cmd.Flags().StringVar(&flags.outputPath, "output-path", "", "Path to directory to contain report outputs") - Cmd.MarkFlagRequired("output-path") + err = Cmd.MarkFlagRequired("output-path") + if err != nil { + panic(err) + } //Cmd.Flags().StringVar(&flags.bucketName, "bucket", "", "GCS bucket name for storing inventory (conflicts with --dir-path)") Cmd.Flags().StringVar(&flags.dirName, "dir-path", "", "Local directory path for storing inventory ") - Cmd.MarkFlagRequired("dir-path") + err = Cmd.MarkFlagRequired("dir-path") + if err != nil { + panic(err) + } Cmd.Flags().StringVar(&flags.reportFormat, "report-format", "", "Format of inventory report outputs, can be json or csv, default is csv") viper.SetDefault("report-format", "csv") - viper.BindPFlag("report-format", Cmd.Flags().Lookup("report-format")) + err = viper.BindPFlag("report-format", Cmd.Flags().Lookup("report-format")) + if err != nil { + panic(err) + } Cmd.AddCommand(listCmd) listCmd.Flags().StringVar(&flags.queryPath, "query-path", "", "Path to directory containing inventory queries") - listCmd.MarkFlagRequired("query-path") + err = listCmd.MarkFlagRequired("query-path") + if err != nil { + panic(err) + } } diff --git a/cli/report/report.go b/cli/report/report.go index ce607cd11a4..69e412067b2 100644 --- a/cli/report/report.go +++ b/cli/report/report.go @@ -43,7 +43,11 @@ func GenerateReports(dirPath string, queryPath string, outputPath string, report if err != nil { return err } - printReports(results, outputPath, reportFormat, fileSuffix) + err = printReports(results, outputPath, reportFormat, fileSuffix) + if err != nil { + return err + } + return nil } @@ -128,7 +132,11 @@ func printReports(results interface{}, reportOutputPath string, format string, f keys = append(keys, key) } sort.Strings(keys) - w.Write(keys) + err := w.Write(keys) + if err != nil { + return err + } + w.Flush() for _, record := range contentSlice { recordMap := record.(map[string]interface{}) @@ -136,7 +144,10 @@ func printReports(results interface{}, reportOutputPath string, format string, f for _, key := range keys { record = append(record, recordMap[key].(string)) } - w.Write(record) + err = w.Write(record) + if err != nil { + return err + } } w.Flush() } diff --git a/cli/scorecard/cmd.go b/cli/scorecard/cmd.go index 78ce6c6ca52..2849fe494ff 100644 --- a/cli/scorecard/cmd.go +++ b/cli/scorecard/cmd.go @@ -27,13 +27,19 @@ func init() { viper.AutomaticEnv() Cmd.Flags().StringVar(&flags.policyPath, "policy-path", "", "Path to directory containing validation policies") - Cmd.MarkFlagRequired("policy-path") + err := Cmd.MarkFlagRequired("policy-path") + if err != nil { + panic(err) + } Cmd.Flags().StringVar(&flags.outputPath, "output-path", "", "Path to directory to contain scorecard outputs. Output to console if not specified") Cmd.Flags().StringVar(&flags.outputFormat, "output-format", "txt", "Format of scorecard outputs, can be txt, json or csv") viper.SetDefault("output-format", "txt") - viper.BindPFlag("output-format", Cmd.Flags().Lookup("output-format")) + err = viper.BindPFlag("output-format", Cmd.Flags().Lookup("output-format")) + if err != nil { + panic(err) + } Cmd.Flags().StringSliceVar(&flags.metadataFields, "output-metadata-fields", []string{}, "List of comma delimited violation metadata fields to include in output. By default no metadata fields in output when --output-format is txt or csv. All metadata will be in output when --output-format is json.") diff --git a/cli/scorecard/proto.go b/cli/scorecard/proto.go index 9a4cf8fd3e8..55e0246a555 100644 --- a/cli/scorecard/proto.go +++ b/cli/scorecard/proto.go @@ -19,8 +19,8 @@ import ( "strconv" "strings" - "github.com/golang/protobuf/jsonpb" - "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/jsonpb" //nolint //https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1571 + "github.com/golang/protobuf/proto" //nolint //https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1571 "github.com/pkg/errors" ) diff --git a/cli/scorecard/proto_test.go b/cli/scorecard/proto_test.go index 235ccc1962f..2404a3fa98c 100644 --- a/cli/scorecard/proto_test.go +++ b/cli/scorecard/proto_test.go @@ -23,10 +23,14 @@ import ( "github.com/google/go-cmp/cmp" ) -func jsonToInterface(jsonStr string) map[string]interface{} { +func jsonToInterface(jsonStr string) (map[string]interface{}, error) { var interfaceVar map[string]interface{} - json.Unmarshal([]byte(jsonStr), &interfaceVar) - return interfaceVar + err := json.Unmarshal([]byte(jsonStr), &interfaceVar) + if err != nil { + return nil, err + } + + return interfaceVar, nil } func TestDataTypeTransformation(t *testing.T) { @@ -34,7 +38,10 @@ func TestDataTypeTransformation(t *testing.T) { if err != nil { t.Fatal("unexpected error", err) } - asset := jsonToInterface(string(fileContent)) + asset, err := jsonToInterface(string(fileContent)) + if err != nil { + t.Fatal("unexpected error", err) + } wantedName := "//cloudresourcemanager.googleapis.com/projects/23456" pbAsset := &validator.Asset{} diff --git a/cli/scorecard/score.go b/cli/scorecard/score.go index bf187d528e9..f6e8900dc2b 100644 --- a/cli/scorecard/score.go +++ b/cli/scorecard/score.go @@ -200,15 +200,21 @@ func writeResults(config *ScoringConfig, dest io.Writer, outputFormat string, ou if err != nil { return err } - io.WriteString(dest, string(byteContent)+"\n") + _, err = io.WriteString(dest, string(byteContent)+"\n") + if err != nil { + return err + } + return nil case "csv": w := csv.NewWriter(dest) header := []string{"Category", "Constraint", "Resource", "Message", "Parent"} - for _, field := range outputMetadataFields { - header = append(header, field) + header = append(header, outputMetadataFields...) + err := w.Write(header) + if err != nil { + return err } - w.Write(header) + w.Flush() for _, category := range config.categories { for _, cv := range category.constraints { @@ -223,7 +229,11 @@ func writeResults(config *ScoringConfig, dest io.Writer, outputFormat string, ou value, _ := stringViaJSON(metadata) record = append(record, value) } - w.Write(record) + err := w.Write(record) + if err != nil { + return err + } + w.Flush() Log.Debug("Violation metadata", "metadata", v.GetMetadata()) } @@ -231,22 +241,44 @@ func writeResults(config *ScoringConfig, dest io.Writer, outputFormat string, ou } return nil case "txt": - io.WriteString(dest, fmt.Sprintf("\n\n%v total issues found\n", config.CountViolations())) + _, err := io.WriteString(dest, fmt.Sprintf("\n\n%v total issues found\n", config.CountViolations())) + if err != nil { + return err + } + for _, category := range config.categories { - io.WriteString(dest, fmt.Sprintf("\n\n%v: %v issues found\n", category.Name, category.Count())) - io.WriteString(dest, fmt.Sprintf("----------\n")) + _, err = io.WriteString(dest, fmt.Sprintf("\n\n%v: %v issues found\n", category.Name, category.Count())) + if err != nil { + return err + } + _, err = io.WriteString(dest, "----------\n") + if err != nil { + return err + } for _, cv := range category.constraints { - io.WriteString(dest, fmt.Sprintf("%v: %v issues\n", getConstraintShortName(cv.constraint), cv.Count())) + _, err = io.WriteString(dest, fmt.Sprintf("%v: %v issues\n", getConstraintShortName(cv.constraint), cv.Count())) + if err != nil { + return err + } for _, v := range cv.Violations { - io.WriteString(dest, fmt.Sprintf("- %v\n", v.Message)) + _, err = io.WriteString(dest, fmt.Sprintf("- %v\n", v.Message)) + if err != nil { + return err + } for _, field := range outputMetadataFields { metadata := v.Metadata.GetStructValue().Fields["details"].GetStructValue().Fields[field] value, _ := stringViaJSON(metadata) if value != "" { - io.WriteString(dest, fmt.Sprintf(" %v: %v\n", field, value)) + _, err = io.WriteString(dest, fmt.Sprintf(" %v: %v\n", field, value)) + if err != nil { + return err + } } } - io.WriteString(dest, "\n") + _, err = io.WriteString(dest, "\n") + if err != nil { + return err + } Log.Debug("Violation metadata", "metadata", v.GetMetadata()) } } @@ -289,7 +321,11 @@ func (inventory *InventoryConfig) Score(config *ScoringConfig, outputPath string } } // Code to measure - writeResults(config, dest, outputFormat, outputMetadataFields) + err := writeResults(config, dest, outputFormat, outputMetadataFields) + if err != nil { + return err + } + } else { fmt.Println("No issues found found! You have a perfect score.") } diff --git a/cli/scorecard/score_test.go b/cli/scorecard/score_test.go index d25fc6a5169..b8d2f13f974 100644 --- a/cli/scorecard/score_test.go +++ b/cli/scorecard/score_test.go @@ -84,7 +84,11 @@ func TestWriteViolations(t *testing.T) { } expected := tc.listMaker(fileContent) - writeResults(config, output, tc.format, nil) + err = writeResults(config, output, tc.format, nil) + if err != nil { + t.Fatal("unexpected error", err) + } + actual := tc.listMaker(output.Bytes()) assert.ElementsMatch(t, expected, actual, tc.message) From 65d01e40e94e6ee47f9c3f22e6f26accb8cf54cd Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 15 May 2023 19:25:46 -0500 Subject: [PATCH 0383/1371] chore: fix common group (#1573) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index c0d83be2ada..a247563540f 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -36,7 +36,7 @@ locals { gh_org = repo.org } } - jss_common_group = "jump-start-solution-owners" + jss_common_group = "jump-start-solutions-admins" common_topics = { hcls = "healthcare-life-sciences", From 50b679852282ec9bca008bae2e85a88c5ae7781b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 15 May 2023 20:37:38 -0700 Subject: [PATCH 0384/1371] chore: exempt dependencies from stale (#1567) --- infra/terraform/test-org/github/resources/stale.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/resources/stale.yml b/infra/terraform/test-org/github/resources/stale.yml index f28f5b6ab4d..3db17c00bc3 100644 --- a/infra/terraform/test-org/github/resources/stale.yml +++ b/infra/terraform/test-org/github/resources/stale.yml @@ -1,4 +1,4 @@ -# Copyright 2022 Google LLC +# Copyright 2022-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# NOTE: This file is automatically generated from: +# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/github + name: "Close stale issues" on: schedule: @@ -26,4 +29,4 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' stale-pr-message: 'This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' - exempt-issue-labels: triaged + exempt-issue-labels: triaged,dependencies From cba8630a217d9a6b3cfd699361038602b75bae49 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 16 May 2023 15:08:29 +1000 Subject: [PATCH 0385/1371] fix: add torus-dpe as owners of terraform-dynamic-python-webapp (#1575) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index a247563540f..e9a6e53f3f8 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -561,7 +561,7 @@ locals { description = "Deploy a dynamic python webapp" owners = ["glasnt", "donmccasland"] homepage_url = "avocano.dev" - groups = [local.jss_common_group] + groups = [local.jss_common_group, "torus-dpe"] }, { name = "terraform-example-deploy-java-multizone" From 6f3581ac937cab76fbab2630620490c794c589c7 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 16 May 2023 09:52:53 -0700 Subject: [PATCH 0386/1371] chore: update codeowners and add headers note (#1577) --- infra/terraform/modules/codeowners_file/main.tf | 7 ++++--- .../github/resources/conventional-commit-lint.yaml | 5 ++++- .../test-org/github/resources/trusted-contribution.yml | 3 +++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf index 2ca5fd6cf1a..5dc1dc7744d 100644 --- a/infra/terraform/modules/codeowners_file/main.tf +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -17,8 +17,9 @@ locals { commit_author = "CFT Bot" commit_email = "cloud-foundation-bot@google.com" - owners = { for value in var.repos_map : value.name => join(" ", formatlist("@%s", value.owners)) if length(value.owners) > 0 } - groups = { for value in var.repos_map : value.name => join(" ", formatlist("@${value.org}/%s", value.groups)) if length(value.groups) > 0 } + owners = { for value in var.repos_map : value.name => "${join(" ", formatlist("@%s", value.owners))} " if length(value.owners) > 0 } + groups = { for value in var.repos_map : value.name => "${join(" ", formatlist("@${value.org}/%s", value.groups))} " if length(value.groups) > 0 } + header = "# NOTE: This file is automatically generated from values at:\n# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/org/locals.tf\n" } resource "github_repository_file" "CODEOWNERS" { @@ -30,5 +31,5 @@ resource "github_repository_file" "CODEOWNERS" { commit_author = local.commit_author commit_email = local.commit_email overwrite_on_create = true - content = "${trimspace("* @${var.org}/${var.owner} ${try(local.owners[each.key], "")} ${try(local.groups[each.key], "")}")}\n" + content = "${trimspace("${local.header}\n* @${var.org}/${var.owner} ${try(local.owners[each.key], "")}${try(local.groups[each.key], "")}")}\n" } diff --git a/infra/terraform/test-org/github/resources/conventional-commit-lint.yaml b/infra/terraform/test-org/github/resources/conventional-commit-lint.yaml index 2aabd6eb428..ee8e163717f 100644 --- a/infra/terraform/test-org/github/resources/conventional-commit-lint.yaml +++ b/infra/terraform/test-org/github/resources/conventional-commit-lint.yaml @@ -1,4 +1,4 @@ -# Copyright 2022 Google LLC +# Copyright 2022-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,5 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# NOTE: This file is automatically generated from: +# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/github + enabled: true always_check_pr_title: true diff --git a/infra/terraform/test-org/github/resources/trusted-contribution.yml b/infra/terraform/test-org/github/resources/trusted-contribution.yml index f44b8a84752..a3b4ff268ba 100644 --- a/infra/terraform/test-org/github/resources/trusted-contribution.yml +++ b/infra/terraform/test-org/github/resources/trusted-contribution.yml @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# NOTE: This file is automatically generated from: +# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/github + annotations: - type: comment text: "/gcbrun" From b069526caea6d58c0636946c6c66189a0caddd99 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 16 May 2023 14:20:50 -0500 Subject: [PATCH 0387/1371] chore: Update Tools to 1.12.1 (#1576) Co-authored-by: Awais Malik --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 8747e62594e..1945e06005f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -32,7 +32,7 @@ KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.32 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.1.2 +CFT_CLI_VERSION := 1.1.3 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.25.9 TFLINT_VERSION := 0.41.0 @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 4dff29a521c096bf2700d529c1c3a2ab02cba729 Mon Sep 17 00:00:00 2001 From: Balaji Subramaniam Date: Tue, 16 May 2023 13:33:33 -0700 Subject: [PATCH 0388/1371] chore: add terraform-ml-image-annotation-gcf repo (#1579) Co-authored-by: Balaji Subramaniam Co-authored-by: Awais Malik --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 7574a4b202d..d4c7c78910e 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -39,6 +39,7 @@ locals { "large-data-sharing-java-app" = "terraform-large-data-sharing-java-webapp" "large-data-sharing-go-app" = "terraform-large-data-sharing-golang-webapp" "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" + "ml-image-annotation-gcf" = "terraform-ml-image-annotation-gcf" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index e9a6e53f3f8..82f0aa80506 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -635,5 +635,13 @@ locals { description = "Deploys a large data sharing Golang web app" groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] }, + { + name = "terraform-ml-image-annotation-gcf" + short_name = "ml-image-annotation-gcf" + org = "GoogleCloudPlatform" + description = "Deploys an app for ml image annotation using gcf" + owners = ["xsxm", "ivanmkc", "balajismaniam", "donmccasland"] + groups = ["dee-data-ai", local.jss_common_group] + }, ] } From 306c51ebc45f913dadda88e0b87cc62451550dcc Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 16 May 2023 15:18:33 -0700 Subject: [PATCH 0389/1371] feat: bpmetadata extentions for ui (#1580) --- cli/Makefile | 2 +- cli/bpmetadata/proto/bpmetadata_ui.proto | 9 +++++--- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 17 +++++++++++--- cli/bpmetadata/schema/bpmetadataschema.json | 24 +++++++++++++++++--- cli/bpmetadata/types_ui.go | 9 +++++--- cli/bpmetadata/types_ui_ext.go | 18 +++++++++++---- 6 files changed, 61 insertions(+), 18 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 59e2d261148..3a401498e32 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.3 +VERSION=v1.1.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index f9fd13dfaea..8f0f3820be5 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -32,9 +32,7 @@ message DisplayVariable { // Placeholder text (when there is no default). string placeholder = 5; - // Text describing the validation rules for the variable based - // on a regular expression. - // Typically shown after an invalid input. + // Regex based validation rules for the variable. string regex_validation = 6; // Minimum no. of inputs for the input variable. @@ -70,6 +68,11 @@ message DisplayVariable { // minCpu: 2 // minRamGb: 6 GooglePropertyExtension x_google_property = 14; + + // Text describing the validation rules for the property. Typically shown + // after an invalid input. + // Optional. UTF-8 text. No markup. At most 128 characters. + string validation = 15; } message DisplaySection { diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index 76feac08338..e63f3397ed9 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -81,7 +81,7 @@ message GCEMachineTypeExtension { int32 min_cpu = 1; // Minimum ram. Used to filter the list of selectable machine types. - int32 min_ram_gb = 2; + float min_ram_gb = 2; // If true, custom machine types will not be selectable. // More info: @@ -94,8 +94,8 @@ message GCEGPUTypeExtension { // MachineType is the name of the machine type that the GPU is attached to. string machine_type = 1; - // GPUType is the type of GPU that is attached to the machine. - string gpu_type = 2; + // GPUType is the type(s) of GPU that is attached to the machine. + repeated string gpu_type = 2; } // GCEGPUCountExtension specifies the number of GPUs that should be attached to a machine. @@ -121,6 +121,9 @@ message GCENetworkExtension { // Used to indicate to which machine type this network interface will be // attached to. string machine_type_variable = 2; + + // Label that will be in front of each Network Interface. + repeated string labels = 3; } // ExternalIPType specifies the type of external IP address. @@ -130,6 +133,8 @@ enum ExternalIPType { IP_EPHEMERAL = 1; // STATIC indicates that the external IP address is static. IP_STATIC = 2; + // NONE indicates that an external IP is not assigned. + IP_NONE = 3; } message GCEExternalIPExtension { @@ -138,6 +143,12 @@ message GCEExternalIPExtension { // Type specifies the type of external IP address. Defaults to EPHEMERAL if not specified. ExternalIPType type = 2; + + // Flag to denote if an external IP should be configurable. + bool not_configurable = 3; + + // Flag to denote if static IPs are allowed for the external IP. + bool allow_static_ips = 4; } // GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/bpmetadataschema.json index c6aa30cf240..f4c88ad2a15 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/bpmetadataschema.json @@ -652,6 +652,9 @@ "placeholder": { "type": "string" }, + "validation": { + "type": "string" + }, "regexValidation": { "type": "string" }, @@ -709,8 +712,14 @@ "enum": [ "IP_UNSPECIFIED", "IP_EPHEMERAL", - "IP_STATIC" + "NONE" ] + }, + "notConfigurable": { + "type": "boolean" + }, + "allowStaticIPs": { + "type": "boolean" } }, "additionalProperties": false, @@ -761,7 +770,10 @@ "type": "string" }, "gpuType": { - "type": "string" + "items": { + "type": "string" + }, + "type": "array" } }, "additionalProperties": false, @@ -821,7 +833,7 @@ "type": "integer" }, "minRamGb": { - "type": "integer" + "type": "number" }, "disallowCustomMachineTypes": { "type": "boolean" @@ -837,6 +849,12 @@ }, "machineTypeVariable": { "type": "string" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" } }, "additionalProperties": false, diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index 3c4319e5b73..59a1b36b9be 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -40,9 +40,12 @@ type DisplayVariable struct { // Placeholder text (when there is no default). Placeholder string `json:"placeholder,omitempty" yaml:"placeholder,omitempty"` - // Text describing the validation rules for the variable based - // on a regular expression. - // Typically shown after an invalid input. + // Text describing the validation rules for the property. Typically shown + // after an invalid input. + // Optional. UTF-8 text. No markup. At most 128 characters. + Validation string `json:"validation,omitempty" yaml:"validation,omitempty"` + + // Regex based validation rules for the variable. RegExValidation string `json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` // Minimum no. of inputs for the input variable. diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go index ae072c365b5..e66afdfa4b7 100644 --- a/cli/bpmetadata/types_ui_ext.go +++ b/cli/bpmetadata/types_ui_ext.go @@ -71,7 +71,7 @@ type GCEMachineTypeExtension struct { MinCPU int `json:"minCpu,omitempty" yaml:"minCpu,omitempty"` // Minimum ram. Used to filter the list of selectable machine types. - MinRAMGB int `json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"` + MinRAMGB float32 `json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"` // If true, custom machine types will not be selectable. // More info: @@ -80,8 +80,8 @@ type GCEMachineTypeExtension struct { } type GCEGPUTypeExtension struct { - MachineType string `json:"machineType" yaml:"machineType"` - GPUType string `json:"gpuType,omitempty" yaml:"gpuType,omitempty"` + MachineType string `json:"machineType" yaml:"machineType"` + GPUType []string `json:"gpuType,omitempty" yaml:"gpuType,omitempty"` } type GCEGPUCountExtension struct { @@ -103,6 +103,8 @@ type GCENetworkExtension struct { // Used to indicate to which machine type this network interface will be // attached to. MachineTypeVariable string `json:"machineTypeVariable" yaml:"machineTypeVariable"` + // Label that will be in front of each Network Interface. + Labels []string `json:"labels,omitempty" yaml:"labels,omitempty"` } type ExternalIPType string @@ -110,7 +112,7 @@ type ExternalIPType string const ( IPUnspecified ExternalIPType = "IP_UNSPECIFIED" IPEphemeral ExternalIPType = "IP_EPHEMERAL" - IPStatic ExternalIPType = "IP_STATIC" + IPNone ExternalIPType = "NONE" ) type GCEExternalIPExtension struct { @@ -120,7 +122,13 @@ type GCEExternalIPExtension struct { // Type specifies if the external IP is ephemeral or static. // Defaults to ephemeral if not specified. - Type ExternalIPType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=IP_UNSPECIFIED,enum=IP_EPHEMERAL,enum=IP_STATIC"` + Type ExternalIPType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=IP_UNSPECIFIED,enum=IP_EPHEMERAL,enum=NONE"` + + // Flag to denote if an external IP should be configurable. + NotConfigurable bool `json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` + + // Flag to denote if static IPs are allowed for the external IP. + AllowStaticIPs bool `json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty"` } type GCEIPForwardingExtension struct { From f8107c787755d9ae0ef3b0e811e8b4bfd6009a7a Mon Sep 17 00:00:00 2001 From: Shabir Mohamed Abdul Samadh <7249208+Shabirmean@users.noreply.github.com> Date: Tue, 16 May 2023 18:24:29 -0400 Subject: [PATCH 0390/1371] chore: update path to exclude (#1581) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 82f0aa80506..f0affa8cc83 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -128,7 +128,7 @@ locals { owners = ["shabirmean", "Mukamik"] groups = ["dee-platform-ops", local.jss_common_group] lint_env = { - "EXCLUDE_HEADER_CHECK" = "\\./infra/modules/spanner/sql-schema" + "EXCLUDE_HEADER_CHECK" = "\\./infra/sql-schema" } }, { From d9b7bac0bd58ed28bbdd78c996b0070d1f453610 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 17 May 2023 10:56:21 -0500 Subject: [PATCH 0391/1371] chore: enable periodics on three-tier (#1582) --- infra/terraform/test-org/org/locals.tf | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index f0affa8cc83..19106feb1c7 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -154,12 +154,13 @@ locals { groups = [local.jss_common_group] }, { - name = "terraform-google-three-tier-web-app" - org = "GoogleCloudPlatform" - description = "Deploys a three tier web application using Cloud Run and Cloud SQL" - owners = ["tpryan"] - topics = join(",", [local.common_topics.serverless, local.common_topics.db]) - groups = [local.jss_common_group] + name = "terraform-google-three-tier-web-app" + org = "GoogleCloudPlatform" + description = "Deploys a three tier web application using Cloud Run and Cloud SQL" + owners = ["tpryan"] + topics = join(",", [local.common_topics.serverless, local.common_topics.db]) + groups = [local.jss_common_group] + enable_periodic = true }, { name = "terraform-google-load-balanced-vms" From f67d36cf137f826535e8737af4849631f8d504f2 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 18 May 2023 11:42:32 -0700 Subject: [PATCH 0392/1371] chore: add blueprint-contributors team (#1568) --- infra/terraform/modules/repositories/main.tf | 20 ++++++++--- .../modules/repositories/variables.tf | 8 ++--- infra/terraform/modules/team/main.tf | 35 ------------------- infra/terraform/modules/team/outputs.tf | 19 ---------- infra/terraform/modules/team/variables.tf | 24 ------------- infra/terraform/modules/team/versions.tf | 24 ------------- infra/terraform/test-org/github/protection.tf | 13 ++----- 7 files changed, 22 insertions(+), 121 deletions(-) delete mode 100644 infra/terraform/modules/team/main.tf delete mode 100644 infra/terraform/modules/team/outputs.tf delete mode 100644 infra/terraform/modules/team/variables.tf delete mode 100644 infra/terraform/modules/team/versions.tf diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index e03a7dfbe4c..d7417840bc1 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -32,6 +32,16 @@ locals { } ] ]) + + teams = flatten([ + for repo, val in var.repos_map : [ + for team in var.ci_teams : { + "repo" : repo + "team" : team + } + ] + ]) + } resource "github_repository" "repo" { @@ -79,9 +89,11 @@ resource "github_team_repository" "groups" { permission = "admin" } -resource "github_team_repository" "collaborators" { - for_each = var.team_id == null ? {} : github_repository.repo - repository = each.value.name - team_id = var.team_id +resource "github_team_repository" "ci_teams" { + for_each = { + for v in local.teams : "${v.repo}/${v.team}" => v + } + repository = each.value.repo + team_id = each.value.team permission = "pull" } diff --git a/infra/terraform/modules/repositories/variables.tf b/infra/terraform/modules/repositories/variables.tf index 87492e39a3e..63653369e61 100644 --- a/infra/terraform/modules/repositories/variables.tf +++ b/infra/terraform/modules/repositories/variables.tf @@ -33,8 +33,8 @@ variable "repos_map" { })) } -variable "team_id" { - description = "Team to add as repo collaborators" - type = string - default = null +variable "ci_teams" { + description = "Repo collaborator teams for approved CI" + type = list(string) + default = [] } diff --git a/infra/terraform/modules/team/main.tf b/infra/terraform/modules/team/main.tf deleted file mode 100644 index 8b4e5433007..00000000000 --- a/infra/terraform/modules/team/main.tf +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * 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. - */ - -resource "github_team" "collaborators_team" { - name = "cft_collaborators_ci" - description = "CFT collaborators team for approved CI" - - create_default_maintainer = true -} - -resource "github_team_members" "collaborators" { - team_id = github_team.collaborators_team.id - - dynamic "members" { - for_each = var.users - content { - username = members.value - role = "member" - } - } - -} diff --git a/infra/terraform/modules/team/outputs.tf b/infra/terraform/modules/team/outputs.tf deleted file mode 100644 index 6f7e25f4b1b..00000000000 --- a/infra/terraform/modules/team/outputs.tf +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * 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. - */ - -output "id" { - value = github_team.collaborators_team.id -} diff --git a/infra/terraform/modules/team/variables.tf b/infra/terraform/modules/team/variables.tf deleted file mode 100644 index 7221f3fcd94..00000000000 --- a/infra/terraform/modules/team/variables.tf +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * 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. - */ - -/****************************************** - Required variables -*******************************************/ - -variable "users" { - description = "list of github users" - type = list(string) -} diff --git a/infra/terraform/modules/team/versions.tf b/infra/terraform/modules/team/versions.tf deleted file mode 100644 index dc62627037c..00000000000 --- a/infra/terraform/modules/team/versions.tf +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * 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. - */ - -terraform { - required_providers { - github = { - source = "integrations/github" - version = "~> 5.0" - } - } -} diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 44cbaf17fb7..0beac669547 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -17,7 +17,6 @@ locals { tgm_modules_map = { for value in local.modules : value.name => value if value.org == "terraform-google-modules" } gcp_modules_map = { for value in local.modules : value.name => value if value.org == "GoogleCloudPlatform" } - users = distinct(flatten([for value in local.modules : value.owners if try(value.owners, null) != null])) } data "github_team" "cft-admins" { @@ -33,15 +32,14 @@ data "github_team" "blueprint-solutions" { module "repos_tgm" { source = "../../modules/repositories" repos_map = local.tgm_modules_map - team_id = module.collaborators_tgm.id + ci_teams = ["blueprint-contributors"] providers = { github = github } } module "repos_gcp" { source = "../../modules/repositories" repos_map = local.gcp_modules_map - # TODO: filter team on users already part of the org - # team_id = module.collaborators_gcp.id + ci_teams = ["blueprint-contributors"] providers = { github = github.gcp } } @@ -186,10 +184,3 @@ resource "github_branch_protection" "terraform-example-foundation" { ] } - -# collaborator teams for approved CI -module "collaborators_tgm" { - source = "../../modules/team" - users = local.users - providers = { github = github } -} From e8a84f32bcab0944053de6f1f5937fe06828a88e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 19 May 2023 09:26:34 -0700 Subject: [PATCH 0393/1371] chore: add tf modules and bump GO version (#1578) --- .github/renovate.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index 17ee22f3832..1968e12847b 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -28,6 +28,10 @@ "matchPackageNames": ["google", "google-beta"], "groupName": "terraform google provider" }, + { + "matchDepTypes": ["module"], + "groupName": "terraform modules" + }, { "matchDepTypes": ["require"], "postUpdateOptions": ["gomodTidy"], @@ -35,7 +39,7 @@ }, { "matchPackageNames": ["go"], - "allowedVersions": "<1.19.0", + "allowedVersions": "<1.21.0", "postUpdateOptions": ["gomodTidy"] } ], From afbb28a6e3196408447a5a7e0adbd68f43a2ea5b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 19 May 2023 18:34:16 +0200 Subject: [PATCH 0394/1371] chore(deps): update peter-evans/create-pull-request digest to efbb6ba (#1587) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 671adec7b21..e23bccc4511 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@8fbd83c22f75399752e97774e7b0b8ad245f55ca + uses: peter-evans/create-pull-request@efbb6ba75d718110dc7d3bd08cb98ebd247adc68 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 79ba7dd2c206bd8f599c08e245b5f280eacc55cc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 19 May 2023 19:10:36 +0200 Subject: [PATCH 0395/1371] fix(deps): update go modules (#1412) --- infra/utils/fbf/go.mod | 18 +++++---- infra/utils/fbf/go.sum | 88 +++++++++++++++++++++++++++++++++++------- 2 files changed, 84 insertions(+), 22 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index a971ceb5c8d..065c4c86bf3 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -5,8 +5,8 @@ go 1.18 require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 - github.com/stretchr/testify v1.8.1 - google.golang.org/api v0.114.0 + github.com/stretchr/testify v1.8.3 + google.golang.org/api v0.122.0 ) require ( @@ -16,6 +16,7 @@ require ( github.com/fatih/color v1.15.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/s2a-go v0.1.3 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.8.0 // indirect @@ -25,13 +26,14 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/oauth2 v0.6.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/term v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/crypto v0.1.0 // indirect + golang.org/x/net v0.9.0 // indirect + golang.org/x/oauth2 v0.7.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/term v0.7.0 // indirect + golang.org/x/text v0.9.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.54.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 4570186f76b..c0edfee1e6e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,4 +1,5 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= @@ -6,20 +7,30 @@ cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGB cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= 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/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -28,14 +39,17 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -46,6 +60,8 @@ github.com/google/go-cmp v0.5.0/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.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= 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= @@ -53,6 +69,7 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9 github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -70,74 +87,115 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +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.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.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.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.114.0 h1:1xQPji6cO2E2vLiI+C/XiFAnsn1WV3mjaEwGLhi3grE= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5 h1:Kd6tRRHXw8z4TlPlWi+NaK10gsePL6GdZBQChptOLGA= -google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +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/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -155,6 +213,8 @@ google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cn google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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= From 99848e08bd483d74ea621ee642851124501b51b8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 19 May 2023 20:58:29 +0200 Subject: [PATCH 0396/1371] fix(deps): update module google.golang.org/api to v0.123.0 (#1589) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 065c4c86bf3..da76be8d04f 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.3 - google.golang.org/api v0.122.0 + google.golang.org/api v0.123.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index c0edfee1e6e..51a9cec3cf9 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -176,8 +176,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.123.0 h1:yHVU//vA+qkOhm4reEC9LtzHVUCN/IqqNRl1iQ9xE20= +google.golang.org/api v0.123.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= From 77fce31ceffe6590483dbdfeaa45eeb840e254a1 Mon Sep 17 00:00:00 2001 From: Saipriyavk Date: Fri, 19 May 2023 19:56:03 +0000 Subject: [PATCH 0397/1371] chore: onboard out of band security (#1586) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 19106feb1c7..c919fd2390f 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -644,5 +644,12 @@ locals { owners = ["xsxm", "ivanmkc", "balajismaniam", "donmccasland"] groups = ["dee-data-ai", local.jss_common_group] }, + { + name = "terraform-google-out-of-band-security" + org = "GoogleCloudPlatform" + description = "Creates a 3P out-of-band security appliance deployment" + owners = ["Saipriyavk", "ChrisBarefoot"] + topics = local.common_topics.net + }, ] } From 4900bdc391045159ae302bb0cac66f2ecbc79360 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 19 May 2023 15:29:48 -0700 Subject: [PATCH 0398/1371] fix: manual prompts for setting repo source (#1585) --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 48 ++++++++++++------- .../goldens/golden-metadata.display.yaml | 4 +- .../int-test/goldens/golden-metadata.yaml | 4 +- cli/bpmetadata/int-test/workflow.sh | 27 ++++++++--- cli/bpmetadata/proto/bpmetadata.proto | 4 +- cli/bpmetadata/repo.go | 22 ++++++--- cli/util/git.go | 4 ++ cli/util/git_test.go | 5 ++ .../build/scripts/task_helper_functions.sh | 18 +++---- 10 files changed, 91 insertions(+), 47 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 3a401498e32..79cb12c68ad 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.4 +VERSION=v1.1.5 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 0498d04af74..293bc7cf4fe 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -19,6 +19,7 @@ var mdFlags struct { force bool display bool validate bool + quiet bool } const ( @@ -43,6 +44,7 @@ func init() { Cmd.Flags().StringVarP(&mdFlags.path, "path", "p", ".", "Path to the blueprint for generating metadata.") Cmd.Flags().BoolVar(&mdFlags.nested, "nested", true, "Flag for generating metadata for nested blueprint, if any.") Cmd.Flags().BoolVarP(&mdFlags.validate, "validate", "v", false, "Validate metadata against the schema definition.") + Cmd.Flags().BoolVarP(&mdFlags.quiet, "quiet", "q", false, "Run in quiet mode suppressing all prompts.") } var Cmd = &cobra.Command{ @@ -171,10 +173,31 @@ func generateMetadataForBpPath(bpPath string) error { } func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (*BlueprintMetadata, error) { - // verfiy that the blueprint path is valid & get repo details - repoDetails, err := getRepoDetailsByPath(bpPath, bpMetadataObj.Spec.Info.Source) + // Verify that readme is present. + readmeContent, err := os.ReadFile(path.Join(bpPath, readmeFileName)) if err != nil { - return nil, err + return nil, fmt.Errorf("error reading blueprint readme markdown: %w", err) + } + + // verify that the blueprint path is valid & get repo details + repoDetails := getRepoDetailsByPath(bpPath, + bpMetadataObj.Spec.Info.Source, + bpMetadataObj.ResourceMeta.ObjectMeta.NameMeta.Name, + readmeContent) + if repoDetails.Name == "" && !mdFlags.quiet { + fmt.Printf("Provide a name for the blueprint at path [%s]: ", bpPath) + _, err := fmt.Scan(&repoDetails.Name) + if err != nil { + fmt.Println("Unable to scan the name for the blueprint.") + } + } + + if repoDetails.Source.Path == "" && !mdFlags.quiet { + fmt.Printf("Provide a URL for the blueprint source at path [%s]: ", bpPath) + _, err := fmt.Scan(&repoDetails.Source.Path) + if err != nil { + fmt.Println("Unable to scan the URL for the blueprint.") + } } // start creating blueprint metadata @@ -193,14 +216,8 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* }, } - // start creating the Spec node - readmeContent, err := os.ReadFile(path.Join(bpPath, readmeFileName)) - if err != nil { - return nil, fmt.Errorf("error reading blueprint readme markdown: %w", err) - } - // create blueprint info - err = bpMetadataObj.Spec.Info.create(bpPath, readmeContent) + err = bpMetadataObj.Spec.Info.create(bpPath, repoDetails, readmeContent) if err != nil { return nil, fmt.Errorf("error creating blueprint info: %w", err) } @@ -255,20 +272,15 @@ func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMeta return bpDisp, nil } -func (i *BlueprintInfo) create(bpPath string, readmeContent []byte) error { +func (i *BlueprintInfo) create(bpPath string, r *repoDetail, readmeContent []byte) error { title, err := getMdContent(readmeContent, 1, 1, "", false) if err != nil { return err } i.Title = title.literal - repoDetails, err := getRepoDetailsByPath(bpPath, i.Source) - if err != nil { - return err - } - i.Source = &BlueprintRepoDetail{ - Repo: repoDetails.Source.Path, + Repo: r.Source.Path, SourceType: "git", } @@ -313,7 +325,7 @@ func (i *BlueprintInfo) create(bpPath string, readmeContent []byte) error { } // create icon - iPath := path.Join(repoDetails.Source.RootPath, iconFilePath) + iPath := path.Join(r.Source.RootPath, iconFilePath) exists, _ := fileExists(iPath) if exists { i.Icon = iconFilePath diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml index 26c1f4d803a..1a5da98e25d 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml @@ -1,12 +1,12 @@ apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: - name: cloud-foundation-toolkit-display + name: terraform-google-cloud-storage-display spec: info: title: Terraform Google Cloud Storage Module source: - repo: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit + repo: https://github.com/terraform-google-modules/terraform-google-cloud-storage.git sourceType: git ui: input: diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml index f3935810c2d..d05fc1e1716 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -1,14 +1,14 @@ apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: - name: cloud-foundation-toolkit + name: terraform-google-cloud-storage annotations: config.kubernetes.io/local-config: "true" spec: info: title: Terraform Google Cloud Storage Module source: - repo: https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit + repo: https://github.com/terraform-google-modules/terraform-google-cloud-storage.git sourceType: git version: 4.0.0 actuationTool: diff --git a/cli/bpmetadata/int-test/workflow.sh b/cli/bpmetadata/int-test/workflow.sh index a39fb8433bf..5ba029b1b92 100755 --- a/cli/bpmetadata/int-test/workflow.sh +++ b/cli/bpmetadata/int-test/workflow.sh @@ -13,6 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +# This intergration test does the following: +# 1. Pulls downs a blueprint package with a specific version tag for metadata generation & validation +# 2. Generates metadata using the `metadata` subcommand on the blueprint version pulled from Github +# 3. Runs metadata validation on golden blueprints stored under goldens/. This is to ensure that the +# latest schema hasn't caused any regressions to the existing/live metadata format. This is most +# benenificial for validating hand-authored fields. +# 4. Runs `git diff` to compare the golden metadata to the generated metadata to expose any changes in +# schema for the autogenerated fields. + CURRENT_DIR=$1 WORKING_FOLDER=".working" BLUPRINT_FOLDER=".blueprint" @@ -27,21 +36,26 @@ if [[ -n $CURRENT_DIR ]]; then WORKING_FOLDER="$CURRENT_DIR/.working" fi +# Create a temporary working folder to create assets for +# the integration test. If the temp folder already exists, remove it. if [ -d $WORKING_FOLDER ] then rm -r -f $WORKING_FOLDER fi -mkdir $WORKING_FOLDER && pushd $WORKING_FOLDER -kpt pkg get https://github.com/terraform-google-modules/terraform-google-cloud-storage.git/@v4.0.0 "./$BLUPRINT_FOLDER/" -../../../bin/cft blueprint metadata -d -p "$BLUPRINT_FOLDER/" +mkdir $WORKING_FOLDER && cd $WORKING_FOLDER + +# Get the blueprint package for v4.0.0 specifically because the golden metadata +# to be validated is for that version. +git config --global advice.detachedHead false +git clone -b v4.0.0 --single-branch https://github.com/terraform-google-modules/terraform-google-cloud-storage.git "./$BLUPRINT_FOLDER/" +../../../bin/cft blueprint metadata -p $BLUPRINT_FOLDER -d -q mkdir $GIT_FOLDER cp "../$GOLDENS_FOLDER/$GOLDEN_METADATA" "$GIT_FOLDER/$WORKING_METADATA" cp "../$GOLDENS_FOLDER/$GOLDEN_DISPLAY_METADATA" "$GIT_FOLDER/$WORKING_DISPLAY_METADATA" -pushd "$GIT_FOLDER" - +cd "$GIT_FOLDER" # Confirm if the goldens are still valid with the blueprint schema ../../../../bin/cft blueprint metadata -v rval=$? @@ -51,12 +65,11 @@ if [ $rval -ne 0 ]; then exit $rval fi +# Compare golden metadata to the generated metadata. git init git add . - cp "../$BLUPRINT_FOLDER/$WORKING_METADATA" "$WORKING_METADATA" cp "../$BLUPRINT_FOLDER/$WORKING_DISPLAY_METADATA" "$WORKING_DISPLAY_METADATA" - git diff --exit-code --quiet rval=$? diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index 77de9eba993..a18ff87664a 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -86,10 +86,10 @@ message BlueprintInfo { BlueprintSupport support_info = 13; // A list of GCP org policies to be checked for successful deployment. - repeated BlueprintOrgPolicyCheck org_policy_checks = 14; + repeated BlueprintOrgPolicyCheck org_policy_checks = 14; // Specifies if the blueprint supports single or multiple deployments per GCP project. - // If set to true, the blueprint can not be deployed more than once in the same GCP project. + // If set to true, the blueprint can not be deployed more than once in the same GCP project. bool single_deployment = 15; } diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 6733f4add6f..fe0cf8a069d 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -1,10 +1,10 @@ package bpmetadata import ( - "fmt" "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" + "github.com/iancoleman/strcase" ) type repoDetail struct { @@ -24,13 +24,13 @@ const ( // getRepoDetailsByPath takes a local path for a blueprint and tries // to get repo details that include its name, path and type -func getRepoDetailsByPath(bpPath string, sourceUrl *BlueprintRepoDetail) (*repoDetail, error) { +func getRepoDetailsByPath(bpPath string, sourceUrl *BlueprintRepoDetail, repoName string, readmeContent []byte) *repoDetail { rootRepoPath := getBpRootPath(bpPath) if sourceUrl == nil { bpPath = strings.TrimSuffix(bpPath, "/") repoUrl, err := util.GetRepoUrl(bpPath) if err != nil { - return nil, fmt.Errorf("error getting the repo URL from the provided local repo path: %w", err) + repoUrl = "" } sourceUrl = &BlueprintRepoDetail{ @@ -38,9 +38,17 @@ func getRepoDetailsByPath(bpPath string, sourceUrl *BlueprintRepoDetail) (*repoD } } - repoName, err := util.GetRepoName(sourceUrl.Repo) - if err != nil { - return nil, fmt.Errorf("error getting the repo name from the provided local repo path: %w", err) + if repoName == "" { + n, err := util.GetRepoName(sourceUrl.Repo) + if err != nil { + // Try to get the repo name from readme instead. + title, err := getMdContent(readmeContent, 1, 1, "", false) + if err == nil { + n = strcase.ToKebab(title.literal) + } + } + + repoName = n } return &repoDetail{ @@ -50,7 +58,7 @@ func getRepoDetailsByPath(bpPath string, sourceUrl *BlueprintRepoDetail) (*repoD SourceType: "git", RootPath: rootRepoPath, }, - }, nil + } } // getBpRootPath determines if the provided bpPath is for a submodule diff --git a/cli/util/git.go b/cli/util/git.go index e8b72478e08..0f75b77e5a4 100644 --- a/cli/util/git.go +++ b/cli/util/git.go @@ -12,6 +12,10 @@ const defaultRemote = "origin" // getRepoName finds upstream repo name from a given repo directory func GetRepoName(repoUrl string) (string, error) { + if repoUrl == "" { + return "", fmt.Errorf("empty URL") + } + u, err := url.Parse(repoUrl) if err != nil { return "", fmt.Errorf("malformed repo URL: %w", err) diff --git a/cli/util/git_test.go b/cli/util/git_test.go index 00ba4b71cdd..d77ffcc270b 100644 --- a/cli/util/git_test.go +++ b/cli/util/git_test.go @@ -88,6 +88,11 @@ func TestGetRepoNameFromUrl(t *testing.T) { repoUrl: "sso://team/foo/bar", want: "bar", }, + { + name: "empty Url", + repoUrl: "", + wantErr: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 31d9471559a..b93d5df7abe 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -311,19 +311,21 @@ function generate_docs() { echo "ENABLE_BPMETADATA not set to 1. Skipping metadata generation." return 0 fi - generate_metadata "${1-core}" + generate_metadata "${1-default}" } function generate_metadata() { echo "Generating blueprint metadata" - arg=$1 - # check if metadata.display.yaml was requested - if [ $arg = "display" ]; then + arg=${1-default} + # check if metadata was request with parameters + if [ $arg = "default" ]; then + cft blueprint metadata + elif [ $arg = "display" ]; then cft blueprint metadata -d else - cft blueprint metadata + eval "cft blueprint metadata $arg" fi - + if [ $? -eq 0 ]; then echo "Success!" else @@ -342,7 +344,7 @@ function check_metadata() { echo "Validating blueprint metadata" cft blueprint metadata -v - + if [ $? -eq 0 ]; then echo "Success!" else @@ -434,7 +436,7 @@ function generate_modules() { # formatting the generated modules since formatting does not apply # to jinja templates echo "Running terraform fmt" - terraform fmt -recursive + terraform fmt -recursive fi } From d328104c171f6ab6060086a7658cf6bcc649e42b Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 19 May 2023 17:40:53 -0500 Subject: [PATCH 0399/1371] chore: add periodic reporter workflow (#1596) --- .../lint.yaml.tftpl | 0 .../{lint_file => workflow_files}/main.tf | 12 ++ .../workflow_files/periodic-reporter.yaml | 154 ++++++++++++++++++ .../variables.tf | 1 + .../{lint_file => workflow_files}/versions.tf | 0 infra/terraform/test-org/github/protection.tf | 4 +- 6 files changed, 169 insertions(+), 2 deletions(-) rename infra/terraform/modules/{lint_file => workflow_files}/lint.yaml.tftpl (100%) rename infra/terraform/modules/{lint_file => workflow_files}/main.tf (69%) create mode 100644 infra/terraform/modules/workflow_files/periodic-reporter.yaml rename infra/terraform/modules/{lint_file => workflow_files}/variables.tf (96%) rename infra/terraform/modules/{lint_file => workflow_files}/versions.tf (100%) diff --git a/infra/terraform/modules/lint_file/lint.yaml.tftpl b/infra/terraform/modules/workflow_files/lint.yaml.tftpl similarity index 100% rename from infra/terraform/modules/lint_file/lint.yaml.tftpl rename to infra/terraform/modules/workflow_files/lint.yaml.tftpl diff --git a/infra/terraform/modules/lint_file/main.tf b/infra/terraform/modules/workflow_files/main.tf similarity index 69% rename from infra/terraform/modules/lint_file/main.tf rename to infra/terraform/modules/workflow_files/main.tf index 0508d1f658e..b6cbc8d112a 100644 --- a/infra/terraform/modules/lint_file/main.tf +++ b/infra/terraform/modules/workflow_files/main.tf @@ -30,3 +30,15 @@ resource "github_repository_file" "file" { overwrite_on_create = true content = templatefile("${path.module}/lint.yaml.tftpl", { branch = each.value.default_branch, lint_env = var.repos_map[each.value.name].lint_env }) } + +resource "github_repository_file" "reporter" { + for_each = { for k, v in var.repo_list : k => v if var.repos_map[k].enable_periodic == true } + repository = each.key + branch = each.value.default_branch + file = ".github/workflows/periodic-reporter.yaml" + commit_message = "chore: update .github/workflows/periodic-reporter.yaml" + commit_author = local.commit_author + commit_email = local.commit_email + overwrite_on_create = true + content = file("${path.module}/periodic-reporter.yaml") +} diff --git a/infra/terraform/modules/workflow_files/periodic-reporter.yaml b/infra/terraform/modules/workflow_files/periodic-reporter.yaml new file mode 100644 index 00000000000..747a3e12fac --- /dev/null +++ b/infra/terraform/modules/workflow_files/periodic-reporter.yaml @@ -0,0 +1,154 @@ +# Copyright 2023 Google LLC +# +# 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. + +name: 'reporter' + +on: + schedule: + # 2 hours after scheduled periodic and once again in the evening + - cron: '0 5,17 * * *' + workflow_dispatch: + +jobs: + report: + permissions: + issues: 'write' + + runs-on: 'ubuntu-latest' + + steps: + - uses: 'actions/github-script@v6' + with: + script: |- + // label for all issues opened by reporter + const periodicLabel = 'periodic-failure'; + + // check if any reporter opened any issues previously + const prevIssues = await github.paginate(github.rest.issues.listForRepo, { + ...context.repo, + state: 'open', + creator: 'github-actions[bot]', + labels: [periodicLabel] + }); + // createOrCommentIssue creates a new issue or comments on an existing issue. + const createOrCommentIssue = async function (title, txt) { + if (prevIssues.length < 1) { + console.log('no previous issues found, creating one'); + await github.rest.issues.create({ + ...context.repo, + title: title, + body: txt, + labels: [periodicLabel] + }); + return; + } + if (prevIssues.length > 1) { + console.warn( + `found ${prevIssues.length} issues but only adding comment to ${prevIssues[0].html_url}` + ); + } + console.log( + `found previous issue ${prevIssues[0].html_url}, adding comment` + ); + await github.rest.issues.createComment({ + ...context.repo, + issue_number: prevIssues[0].number, + body: txt + }); + }; + + // updateAndCloseIssues comments on any existing issues and closes them. No-op if no issue exists. + const updateAndCloseIssues = async function (txt) { + if (prevIssues.length < 1) { + console.log('no previous issues found, skipping close'); + return; + } + for (const prevIssue of prevIssues) { + console.log(`found previous issue ${prevIssue.html_url}, adding comment`); + await github.rest.issues.createComment({ + ...context.repo, + issue_number: prevIssue.number, + body: txt + }); + console.log(`closing ${prevIssue.html_url}`); + await github.rest.issues.update({ + ...context.repo, + issue_number: prevIssue.number, + body: txt, + state: 'closed' + }); + } + }; + + // Find status of check runs. + // We will find check runs for each commit and then filter for the periodic. + // Checks API only allows for ref and if we use main there could be edge cases where + // the check run happened on a SHA that is different from head. + const commits = await github.paginate(github.rest.repos.listCommits, { + ...context.repo + }); + + var foundCheck = false; + let periodicCheck = {}; + + for (const commit of commits) { + console.log( + `checking runs at ${commit.html_url}: ${commit.commit.message}` + ); + const checks = await github.rest.checks.listForRef({ + ...context.repo, + ref: commit.sha + }); + // find runs for this commit + for (const check of checks.data.check_runs) { + console.log(`found run ${check.name} for ${commit.html_url}`); + if (check.name.includes('periodic-int-trigger')) { + foundCheck = true; + periodicCheck = check; + break; + } + } + + if (foundCheck) { + if ( + periodicCheck.status === 'completed' && + periodicCheck.conclusion === 'success' + ) { + updateAndCloseIssues( + `[Passing periodic](${periodicCheck.html_url}) at ${commit.html_url}. Closing this issue.` + ); + } else if (periodicCheck.status === 'in_progress') { + console.log( + `Check is pending ${periodicCheck.html_url} for ${commit.html_url}. Retry again later.` + ); + } + // error case + else { + createOrCommentIssue( + 'Failing periodic', + `[Failing periodic](${periodicCheck.html_url}) at ${commit.html_url}.` + ); + } + // exit early as check was found + return; + } + } + + // no periodic-int-trigger checks found across all commits, report it + createOrCommentIssue( + 'Missing periodic', + `Periodic test has not run in the past 24hrs. Last checked from ${ + commits[0].html_url + } to ${commits[commits.length - 1].html_url}.` + ); diff --git a/infra/terraform/modules/lint_file/variables.tf b/infra/terraform/modules/workflow_files/variables.tf similarity index 96% rename from infra/terraform/modules/lint_file/variables.tf rename to infra/terraform/modules/workflow_files/variables.tf index a711c810798..9ff772e5729 100644 --- a/infra/terraform/modules/lint_file/variables.tf +++ b/infra/terraform/modules/workflow_files/variables.tf @@ -24,6 +24,7 @@ variable "repos_map" { name = string lint_env = optional(map(string)) disable_lint_yaml = optional(bool) + enable_periodic = optional(bool) })) } diff --git a/infra/terraform/modules/lint_file/versions.tf b/infra/terraform/modules/workflow_files/versions.tf similarity index 100% rename from infra/terraform/modules/lint_file/versions.tf rename to infra/terraform/modules/workflow_files/versions.tf diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 0beac669547..97c9e789cbe 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -142,14 +142,14 @@ module "codeowners_gcp" { } module "lint_yaml_tgm" { - source = "../../modules/lint_file" + source = "../../modules/workflow_files" repos_map = local.tgm_modules_map repo_list = module.repos_tgm.repos providers = { github = github } } module "lint_yaml_gcp" { - source = "../../modules/lint_file" + source = "../../modules/workflow_files" repos_map = local.gcp_modules_map repo_list = module.repos_gcp.repos providers = { github = github.gcp } From 7536aadd73f6d5334f03aed64075b1bd5428dfa0 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 19 May 2023 19:00:41 -0500 Subject: [PATCH 0400/1371] chore: Update Tools to 1.12.2 (#1583) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 1945e06005f..87a4a23e151 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.4.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 430.0.0 +CLOUD_SDK_VERSION := 431.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.8 @@ -30,11 +30,11 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.32 +KPT_VERSION := 1.0.0-beta.33 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.1.3 +CFT_CLI_VERSION := 1.1.5 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.25.9 +KUBECTL_VERSION := 1.25.10 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 @@ -47,9 +47,9 @@ KIND_VERSION := 0.18.0 GATOR_VERSION := 3.11.1 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.15.1 +GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 7c240c8a66391270443bec61bd97898aa735a498 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 19 May 2023 18:33:57 -0700 Subject: [PATCH 0401/1371] chore: use local linter for terraform-google-module-template (#1594) --- infra/terraform/test-org/org/locals.tf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index c919fd2390f..5134fc3d5fe 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -391,9 +391,10 @@ locals { topics = local.common_topics.db }, { - name = "terraform-google-module-template" - org = "terraform-google-modules" - description = "Provides a template for creating a Cloud Foundation Toolkit Terraform module" + name = "terraform-google-module-template" + org = "terraform-google-modules" + description = "Provides a template for creating a Cloud Foundation Toolkit Terraform module" + disable_lint_yaml = true }, { name = "terraform-google-network" From ffdf0385fc96bec903942a93868355a156a01d9c Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Sat, 20 May 2023 16:13:44 -0700 Subject: [PATCH 0402/1371] fix: encapsulated the arg variable in curly braces (#1597) Co-authored-by: Andrew Peabody --- .../developer-tools/build/scripts/task_helper_functions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index b93d5df7abe..1b5ce1a4684 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -318,9 +318,9 @@ function generate_metadata() { echo "Generating blueprint metadata" arg=${1-default} # check if metadata was request with parameters - if [ $arg = "default" ]; then + if [ "${arg}" = "default" ]; then cft blueprint metadata - elif [ $arg = "display" ]; then + elif [ "${arg}" = "display" ]; then cft blueprint metadata -d else eval "cft blueprint metadata $arg" From f780264a9131be3acf81a74a7fcea84b3f7db10e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 24 May 2023 12:01:21 -0700 Subject: [PATCH 0403/1371] feat: update cli to GO 1.18, config-validator ff3a6b2, OPA v0.47.1 (#1593) --- .github/workflows/test-cli.yml | 2 +- cli/Makefile | 2 +- cli/bpbuild/git.go | 2 +- cli/bpbuild/git_test.go | 2 +- cli/bpmetadata/display.go | 9 +- .../init/test/integration/bar/bar_test.go | 1 + cli/go.mod | 184 ++- cli/go.sum | 1034 +++++------------ cli/launchpad/doc.go | 38 +- cli/launchpad/folder_test.go | 2 +- cli/launchpad/root.go | 5 +- cli/launchpad/statics.go | 3 +- cli/report/convert.go | 4 +- cli/scorecard/inventory.go | 2 +- cli/scorecard/main.go | 2 +- cli/scorecard/proto_test.go | 2 +- cli/scorecard/score.go | 24 +- cli/scorecard/violations.go | 2 +- cli/scorecard/violations_test.go | 4 +- cli/util/git.go | 2 +- cli/util/git_test.go | 2 +- 21 files changed, 538 insertions(+), 790 deletions(-) diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index cc70808baef..c94247386eb 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -34,6 +34,6 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 with: - go-version: '~1.16' + go-version: '~1.18' - run: |- go test ./... -v diff --git a/cli/Makefile b/cli/Makefile index 79cb12c68ad..ad7beb54f21 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.5 +VERSION=v1.1.6 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpbuild/git.go b/cli/bpbuild/git.go index 0076a62f91a..85543bca7b7 100644 --- a/cli/bpbuild/git.go +++ b/cli/bpbuild/git.go @@ -5,7 +5,7 @@ import ( "net/url" "strings" - "github.com/go-git/go-git/v5" + git "github.com/go-git/go-git/v5" ) const defaultRemote = "origin" diff --git a/cli/bpbuild/git_test.go b/cli/bpbuild/git_test.go index 30d5e89efe1..7583f8d25fa 100644 --- a/cli/bpbuild/git_test.go +++ b/cli/bpbuild/git_test.go @@ -3,7 +3,7 @@ package bpbuild import ( "testing" - "github.com/go-git/go-git/v5" + git "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/config" ) diff --git a/cli/bpmetadata/display.go b/cli/bpmetadata/display.go index 62910202fad..537e7120c19 100644 --- a/cli/bpmetadata/display.go +++ b/cli/bpmetadata/display.go @@ -1,6 +1,11 @@ package bpmetadata -import "strings" +import ( + "strings" + + "golang.org/x/text/cases" + "golang.org/x/text/language" +) func buildUIInputFromVariables(vars []BlueprintVariable, input *BlueprintUIInput) { if input.Variables == nil { @@ -24,7 +29,7 @@ func createTitleFromName(name string) string { nameSplit := strings.Split(name, "_") var titleSplit []string for _, n := range nameSplit { - titleSplit = append(titleSplit, strings.Title(n)) + titleSplit = append(titleSplit, cases.Title(language.Und, cases.NoLower).String(n)) } return strings.Join(titleSplit, " ") diff --git a/cli/bptest/testdata/init/test/integration/bar/bar_test.go b/cli/bptest/testdata/init/test/integration/bar/bar_test.go index e69de29bb2d..43a64da7184 100644 --- a/cli/bptest/testdata/init/test/integration/bar/bar_test.go +++ b/cli/bptest/testdata/init/test/integration/bar/bar_test.go @@ -0,0 +1 @@ +package bptest diff --git a/cli/go.mod b/cli/go.mod index 3b704c1cf44..d7be28b7a6f 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -1,12 +1,22 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli -go 1.16 +go 1.18 + +// workaround for otel dependencies +replace ( + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp => go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 + go.opentelemetry.io/otel => go.opentelemetry.io/otel v0.20.0 + go.opentelemetry.io/otel/metric => go.opentelemetry.io/otel/metric v0.20.0 + go.opentelemetry.io/otel/sdk => go.opentelemetry.io/otel/sdk v0.20.0 + go.opentelemetry.io/otel/trace => go.opentelemetry.io/otel/trace v0.20.0 + go.opentelemetry.io/proto/otlp => go.opentelemetry.io/proto/otlp v0.7.0 +) require ( - cloud.google.com/go/asset v1.0.1 - cloud.google.com/go/storage v1.18.2 + cloud.google.com/go/asset v1.10.0 + cloud.google.com/go/storage v1.27.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea - github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355 + github.com/GoogleCloudPlatform/config-validator v0.0.0-20230328162739-ff3a6b2846d9 github.com/briandowns/spinner v1.16.0 github.com/fatih/color v1.13.0 github.com/gammazero/workerpool v1.1.2 @@ -25,20 +35,166 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.12 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e // indirect - github.com/open-policy-agent/opa v0.34.2 + github.com/open-policy-agent/opa v0.47.1 github.com/otiai10/copy v1.6.0 github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.4.0 + github.com/spf13/cobra v1.6.1 github.com/spf13/viper v1.9.0 - github.com/stretchr/testify v1.8.0 + github.com/stretchr/testify v1.8.1 github.com/xeipuuv/gojsonschema v1.2.0 - github.com/zclconf/go-cty v1.10.0 // indirect - golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 - google.golang.org/api v0.58.0 - google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 - google.golang.org/protobuf v1.28.1 + golang.org/x/oauth2 v0.5.0 + golang.org/x/text v0.7.0 + google.golang.org/api v0.110.0 gopkg.in/yaml.v2 v2.4.0 sigs.k8s.io/kustomize/kyaml v0.13.9 - sigs.k8s.io/yaml v1.2.0 + sigs.k8s.io/yaml v1.3.0 +) + +require ( + cloud.google.com/go v0.107.0 // indirect + cloud.google.com/go/accesscontextmanager v1.4.0 // indirect + cloud.google.com/go/compute v1.18.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v0.8.0 // indirect + cloud.google.com/go/longrunning v0.3.0 // indirect + cloud.google.com/go/orgpolicy v1.10.0 // indirect + cloud.google.com/go/osconfig v1.10.0 // indirect + github.com/Microsoft/go-winio v0.4.16 // indirect + github.com/OneOfOne/xxhash v1.2.8 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect + github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/agext/levenshtein v1.2.2 // indirect + github.com/agnivade/levenshtein v1.1.1 // indirect + github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e // indirect + github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/emicklei/go-restful v2.16.0+incompatible // indirect + github.com/emirpasic/gods v1.12.0 // indirect + github.com/evanphx/json-patch v5.6.0+incompatible // indirect + github.com/felixge/httpsnoop v1.0.3 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gammazero/deque v0.1.0 // indirect + github.com/ghodss/yaml v1.0.0 // indirect + github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 // indirect + github.com/go-git/gcfg v1.5.0 // indirect + github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-openapi/analysis v0.19.5 // indirect + github.com/go-openapi/errors v0.19.2 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/loads v0.19.4 // indirect + github.com/go-openapi/runtime v0.19.4 // indirect + github.com/go-openapi/spec v0.19.3 // indirect + github.com/go-openapi/strfmt v0.19.3 // indirect + github.com/go-openapi/swag v0.21.1 // indirect + github.com/go-openapi/validate v0.19.2 // indirect + github.com/go-stack/stack v1.8.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.0.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/google/cel-go v0.10.2 // indirect + github.com/google/gnostic v0.6.9 // indirect + github.com/google/go-github/v41 v41.0.0 // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.7.0 // indirect + github.com/gorilla/mux v1.8.0 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect + github.com/gruntwork-io/terratest v0.35.6 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-multierror v1.1.0 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect + github.com/magiconair/properties v1.8.5 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.9 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-policy-agent/frameworks/constraint v0.0.0-20221006234738-a3d297b3152f // indirect + github.com/open-policy-agent/gatekeeper v0.0.0-20221019225957-0484f99d8857 // indirect + github.com/pelletier/go-toml v1.9.4 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.37.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/sergi/go-diff v1.1.0 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.4.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/stoewer/go-strcase v1.2.0 // indirect + github.com/subosito/gotenv v1.2.0 // indirect + github.com/tchap/go-patricia/v2 v2.3.1 // indirect + github.com/tidwall/gjson v1.10.2 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + github.com/xanzy/ssh-agent v0.3.0 // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect + github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect + github.com/yashtewari/glob-intersection v0.1.0 // indirect + github.com/zclconf/go-cty v1.10.0 // indirect + go.mongodb.org/mongo-driver v1.1.2 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib v0.20.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 // indirect + go.opentelemetry.io/otel v1.7.0 // indirect + go.opentelemetry.io/otel/exporters/otlp v0.20.0 // indirect + go.opentelemetry.io/otel/metric v0.30.0 // indirect + go.opentelemetry.io/otel/sdk v1.7.0 // indirect + go.opentelemetry.io/otel/sdk/export/metric v0.20.0 // indirect + go.opentelemetry.io/otel/sdk/metric v0.20.0 // indirect + go.opentelemetry.io/otel/trace v1.7.0 // indirect + go.opentelemetry.io/proto/otlp v0.16.0 // indirect + golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 // indirect + golang.org/x/net v0.6.0 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/term v0.5.0 // indirect + golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc // indirect + google.golang.org/grpc v1.53.0 // indirect + google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/ini.v1 v1.63.2 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/api v0.24.6 // indirect + k8s.io/apiextensions-apiserver v0.24.6 // indirect + k8s.io/apimachinery v0.24.6 // indirect + k8s.io/apiserver v0.24.6 // indirect + k8s.io/client-go v0.24.6 // indirect + k8s.io/component-base v0.24.6 // indirect + k8s.io/klog/v2 v2.70.1 // indirect + k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6 // indirect + k8s.io/kubectl v0.23.5 // indirect + k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30 // indirect + sigs.k8s.io/controller-runtime v0.12.3 // indirect + sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 436fa2ef776..20729da7852 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,5 +1,3 @@ -4d63.com/gochecknoglobals v0.0.0-20201008074935-acfc0b28355a/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= -bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -14,7 +12,6 @@ cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6 cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= @@ -27,53 +24,66 @@ cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSU cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0 h1:3DXvAyifywvq64LfkKaMOmkWPS1CikIQdMe2lY9vxU8= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go/asset v1.0.1 h1:itBmxPI2oR9RLN3ADFLyYkdMa/ro1RZ4ySEQkFO5H7Q= -cloud.google.com/go/asset v1.0.1/go.mod h1:666udTyY1NrBD3w0yWiLViXFQ/w3kPQ43lrjY3RbeNI= +cloud.google.com/go v0.107.0 h1:qkj22L7bgkl6vIeZDlOY2po43Mx/TIa2Wsa7VR+PEww= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go/accesscontextmanager v1.4.0 h1:CFhNhU7pcD11cuDkQdrE6PQJgv0EXNKNv06jIzbLlCU= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/asset v1.10.0 h1:aCrlaLGJWTODJX4G56ZYzJefITKEWNfbjjtHSzWpxW0= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= +cloud.google.com/go/iam v0.8.0 h1:E2osAkZzxI/+8pZcxVLcDtAQx/u+hZXVryUaYQ5O0Kk= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/orgpolicy v1.10.0 h1:XDriMWug7sd0kYT1QKofRpRHzjad0bK8Q8uA9q+XrU4= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= +cloud.google.com/go/osconfig v1.10.0 h1:NO0RouqCOM7M2S85Eal6urMSSipWwHU8evzwS+siqUI= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.5.0/go.mod h1:ZEwJccE3z93Z2HWvstpri00jOg7oO4UZDtKhwDwqF0w= -cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.18.2 h1:5NQw6tOn3eMm0oE8vTkfjau18kjL79FlMjy/CHTpmoY= -cloud.google.com/go/storage v1.18.2/go.mod h1:AiIj7BWXyhO5gGVmYJ+S8tbkCx3yb0IMjua8Aw4naVM= -contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= -contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= +cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v46.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest v0.11.0/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.5/go.mod h1:foo3aIXRQ90zFve3r0QiDsrjGDUwWhKl0ZOQy1CT14k= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/azure/auth v0.5.1/go.mod h1:ea90/jvmnAwDrSooLH4sRIehEPtG/EPUXavDh31MnA4= github.com/Azure/go-autorest/autorest/azure/cli v0.4.0/go.mod h1:JljT387FplPzBA31vUcvsetLKF3pec5bdAxjVU4kI2s= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= @@ -90,75 +100,57 @@ github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQ github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea h1:Pbtaoh7g+3FNtyUoEeLEhFuw/Nfa35zFU4Bc+WgnC3Q= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea/go.mod h1:cdqqfBObgqdv4oyKGBS8Lwan5XVisYV9RvZ7JuXTx44= -github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355 h1:UQQJmJl5aZNwLISiq/YqEEFXxv042cYY6wD49TOzrco= -github.com/GoogleCloudPlatform/config-validator v0.0.0-20211122204404-f3fd77c5c355/go.mod h1:MHzWJNkQiBhSRuWAOxdMBBR+acz6g+jXGDtZp5S7vzU= +github.com/GoogleCloudPlatform/config-validator v0.0.0-20230328162739-ff3a6b2846d9 h1:68ytYEjlURQtZiyP4geOPhZ45KPbEG0fGB8ERee1rrw= +github.com/GoogleCloudPlatform/config-validator v0.0.0-20230328162739-ff3a6b2846d9/go.mod h1:VD5GFB4dmkCSLTGUUYiAMOmRiyE6DtzANaSgHhaFewI= github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2/go.mod h1:lJYiqfBOl6AOiefK9kmkhinbffIysu+nnclOBwKEPlQ= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.3/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.7/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= +github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/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/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e h1:GCzyKMDDjSGnlpl3clrdAK7I1AaVoaiKDOYkUzChZzg= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -166,25 +158,17 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= -github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= -github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef h1:46PFijGLmAjMPwCCCo7Jf0W6f9slllCkkv7vyc1yOSg= -github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/ashanbrown/forbidigo v1.1.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI= -github.com/ashanbrown/makezero v0.0.0-20210308000810-4155955488a0/go.mod h1:oG9Dnez7/ESBqc4EdrdNlryeo7d0KcW1ftXHm7nU/UU= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= -github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.28/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 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= @@ -192,57 +176,50 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= -github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/briandowns/spinner v1.16.0 h1:DFmp6hEaIx2QXXuqSJmtfSBSAjRmpGiKG6ip2Wm/yOs= github.com/briandowns/spinner v1.16.0/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/bytecodealliance/wasmtime-go v0.27.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= -github.com/bytecodealliance/wasmtime-go v0.30.0 h1:WfYpr4WdqInt8m5/HvYinf+HrSEAIhItKIcth+qb1h4= -github.com/bytecodealliance/wasmtime-go v0.30.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= 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/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= -github.com/charithe/durationcheck v0.0.6/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= -github.com/chavacava/garif v0.0.0-20210405163807-87a70f3d418b/go.mod h1:Qjyv4H3//PWVzTeCezG2b9IRn6myJxJSr4TD/xo6ojU= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= @@ -251,24 +228,21 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= -github.com/denis-tingajkin/go-header v0.4.2/go.mod h1:eLRHAVXzE5atsKAnNRDB90WHCFFnBUn4RN0nRcs1LJA= -github.com/dgraph-io/badger/v3 v3.2103.2 h1:dpyM5eCJAtQCBcMCZcT4UBZchuTJgCywerHHgmxfxM8= -github.com/dgraph-io/badger/v3 v3.2103.2/go.mod h1:RHo4/GmYcKKh5Lxu63wLEMHJ70Pac2JqZRYGhlyAo2M= -github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= -github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= +github.com/dgraph-io/badger/v3 v3.2103.4 h1:WE1B07YNTTJTtG9xjBcSW2wn0RJLyiV99h959RKZqM4= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= +github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= @@ -286,19 +260,16 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.16.0+incompatible h1:rgqiKNjTnFQA6kkhFe16D8epTksy9HQ1MyrbDXSdYhM= +github.com/emicklei/go-restful v2.16.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -306,47 +277,48 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/esimonov/ifshort v1.0.2/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= -github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= +github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897 h1:E52jfcE64UG42SwLmrW0QByONfGynWuzBvm86BoB9z8= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/fzipp/gocyclo v0.3.1/go.mod h1:DJHO6AUmbdqj2ET4Z9iArSuwWgYDRryYt2wASxc7x3E= github.com/gammazero/deque v0.1.0 h1:f9LnNmq66VDeuAlSAapemq/U7hJ2jpIWa4c09q8Dlik= github.com/gammazero/deque v0.1.0/go.mod h1:KQw7vFau1hHuM8xmI9RbgKFbAsQFWmBpqQ2KenFLk6M= github.com/gammazero/workerpool v1.1.2 h1:vuioDQbgrz4HoaCi2q1HLlOXdpbap5AET7xu5/qj87g= github.com/gammazero/workerpool v1.1.2/go.mod h1:UelbXcO0zCIGFcufcirHhq2/xtLXJdQ29qZNlXG9OjQ= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-critic/go-critic v0.5.6/go.mod h1:cVjj0DfqewQVIlIAGexPCaGaZDAqGE29PYDDADIVNEo= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -364,7 +336,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= 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-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -373,31 +344,21 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= -github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= -github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= +github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5 h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI= github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/analysis v0.19.10/go.mod h1:qmhS3VNFxBlquFJ0RGoDtylO9y4pgTAUNE9AEEMdlJQ= -github.com/go-openapi/analysis v0.19.16/go.mod h1:GLInF007N83Ad3m8a/CbQ5TPzdnGT7workfHwuVjNVk= -github.com/go-openapi/analysis v0.20.0 h1:UN09o0kNhleunxW7LR+KnltD0YrJ8FF03pSqvAN3Vro= -github.com/go-openapi/analysis v0.20.0/go.mod h1:BMchjvaHDykmRMsK40iPtvyOfFdMMxlOmQr9FBZk+Og= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.9 h1:9SnKdGhiPZHF3ttwFMiCBEb8jQ4IDdrK+5+a0oTygA4= -github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= @@ -410,126 +371,52 @@ github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3Hfo github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI= +github.com/go-openapi/loads v0.19.4 h1:5I4CCSqoWzT+82bBkNIvmLc0UOsoKKQ4Fz+3VxOB7SY= github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= -github.com/go-openapi/loads v0.19.5/go.mod h1:dswLCAdonkRufe/gSUC3gN8nTSaB9uaS2es0x5/IbjY= -github.com/go-openapi/loads v0.19.6/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc= -github.com/go-openapi/loads v0.19.7/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc= -github.com/go-openapi/loads v0.20.0/go.mod h1:2LhKquiE513rN5xC6Aan6lYOSddlL8Mp20AW9kpviM4= -github.com/go-openapi/loads v0.20.2 h1:z5p5Xf5wujMxS1y8aP+vxwW5qYT2zdJBbXKmQUG3lcc= -github.com/go-openapi/loads v0.20.2/go.mod h1:hTVUotJ+UonAMMZsvakEgmWKgtulweO9vYP2bQYKA/o= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4 h1:csnOgcgAiuGoM/Po7PEpKDoNulCcF3FGbSnbHfxgjMI= github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= -github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= -github.com/go-openapi/runtime v0.19.24 h1:TqagMVlRAOTwllE/7hNKx6rQ10O6T8ZzeJdMjSTKaD4= -github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.19.8/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.19.15/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= -github.com/go-openapi/spec v0.20.0/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= -github.com/go-openapi/spec v0.20.1/go.mod h1:93x7oh+d+FQsmsieroS4cmR3u0p/ywH649a3qwC9OsQ= -github.com/go-openapi/spec v0.20.3 h1:uH9RQ6vdyPSs2pSy9fL8QPspDF2AMIMPtmK5coSSjtQ= -github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.3 h1:eRfyY5SkaNJCAwmmMcADjY31ow9+N7MCLW7oRkbsINA= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-openapi/strfmt v0.19.11/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= -github.com/go-openapi/strfmt v0.20.0 h1:l2omNtmNbMc39IGptl9BuXBEKcZfS8zjrTsPKTiJiDM= -github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= -github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= -github.com/go-openapi/swag v0.19.12/go.mod h1:eFdyEBkTdoAf/9RXBvj4cr1nH7GD8Kzo5HTt47gr72M= -github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU= +github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2 h1:ky5l57HjyVRrsJfd2+Ro5Z9PjGuKbsmftwyMtk8H7js= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo= -github.com/go-openapi/validate v0.19.4/go.mod h1:BkJ0ZmXui7yB0bJXWSXgLPNTmbLVeX/3D1xn/N9mMUM= -github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= -github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8= -github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= -github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9GA7monOmWBbeCI= -github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= -github.com/go-openapi/validate v0.20.2 h1:AhqDegYV3J3iQkMPJSXkvzymHKMTw0BST3RK3hTT4ts= -github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= -github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= -github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= -github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= -github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= -github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= -github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.5/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -537,12 +424,12 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -553,8 +440,6 @@ github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71 github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v0.0.0-20181025225059-d3de96c4c28e/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -574,34 +459,21 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/golangci-lint v1.40.1/go.mod h1:OyFTr1muxaWeGTcHQcL3B7C4rETnDphTKYenZDgH2/g= -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= -github.com/golangci/revgrep v0.0.0-20210208091834-cd28932614b5/go.mod h1:LK+zW4MpyytAWQRz0M4xnzEk50lSvqDQKfx304apFkY= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= -github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= -github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb h1:7h+tPfwoUE+qLvWYmsvKSiRlXv6WGorb6PUKaZUclwc= github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= -github.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs= -github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= -github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.10.2 h1:fJtfqBC/zg/+M0W32IemohwB6u5oFWv1iVGNpgUxan0= +github.com/google/cel-go v0.10.2/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= +github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= +github.com/google/flatbuffers v2.0.6+incompatible h1:XHFReMv7nFFusa+CEokzWbzaYocKXI6C7hdU5Kgh9Lw= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= +github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= 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= @@ -625,8 +497,9 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -639,7 +512,6 @@ github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= 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-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -649,68 +521,47 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw= -github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= 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/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= 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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1 h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/gnostic v0.5.1 h1:A8Yhf6EtqTv9RMsU6MQTyrtV1TjWlR6xU9BsZIwuTCM= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/gookit/color v1.3.8/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= -github.com/gordonklaus/ineffassign v0.0.0-20210225214923-2e10b2664254/go.mod h1:M9mZEtGIsR1oDaZagNPNG9iq9n2HrhZ17dsXk73V3Lw= -github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v0.0.0-20181024020800-521ea7b17d02/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= -github.com/gostaticanalysis/analysisutil v0.4.1/go.mod h1:18U/DLpRgIUd459wGxVHE0fRgmo1UgHDcbw7F5idXu0= -github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= -github.com/gostaticanalysis/forcetypeassert v0.0.0-20200621232751-01d4955beaa5/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= -github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.8.0/go.mod h1:gtp0yTtIBExIZp7vyIV9I0XQkVwiQZze678hvDXof78= github.com/gruntwork-io/terratest v0.35.6 h1:Q7pUd3JI4i5mmR/KgYkZJJ4q9ZbV8ru9KydwjA/ohaA= github.com/gruntwork-io/terratest v0.35.6/go.mod h1:GIVJGBV1WIv1vxIG31Ycy0CuHYfXuvvkilNQuC9Wi+o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -719,22 +570,18 @@ github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39 github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= @@ -753,28 +600,22 @@ github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f/go.mod h1:Z0Nnk4+3Cy89smEbrq+sl1bxc9198gIP4I7wcQF6Kqs= github.com/hashicorp/terraform-json v0.9.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= -github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -784,19 +625,13 @@ github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4Fw github.com/jedib0t/go-pretty/v6 v6.2.4 h1:wdaj2KHD2W+mz8JgJ/Q6L/T5dB7kyqEFI16eLq7GEmk= github.com/jedib0t/go-pretty/v6 v6.2.4/go.mod h1:+nE9fyyHGil+PuISTCrp7avEdo6bqoMwqZnuiK2r2a0= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jgautheron/goconst v1.4.0/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= -github.com/jingyugao/rowserrcheck v0.0.0-20210315055705-d907ca737bb1/go.mod h1:TOQpc2SLx6huPfoFGK3UOnEG+u02D3C1GeosjupAKCA= github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= 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= @@ -805,31 +640,21 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/julz/importas v0.0.0-20210419104244-841f0c0fe66d/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= -github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.6.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.5 h1:9O69jUPDcsT9fEm74W92rZL9FQY7rCdaXVneq+yyzl4= -github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -844,24 +669,11 @@ github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.4.0/go.mod h1:vMu2Cizjy/grP+jmsvOFDx1kYP6+PD1lqg4Yu5exl2U= -github.com/kunwardeep/paralleltest v1.0.2/go.mod h1:ZPqNm1fVHPllh5LPVujzbVz1JN2GhLxSfY+oqUsvG30= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= -github.com/ldez/gomoddirectives v0.2.1/go.mod h1:sGicqkRgBOg//JfpXwkB9Hj0X5RyJ7mlACM5B9f6Me4= -github.com/ldez/tagliatelle v0.2.0/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= -github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= -github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= @@ -872,22 +684,17 @@ github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -898,38 +705,27 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-runewidth v0.0.0-20181025052659-b20a3daf6a39/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= -github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= -github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= -github.com/mgechev/revive v1.0.6/go.mod h1:Lj5gIVxjBlH8REa3icEOkdfchwYc291nShzZ4QYWyMo= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= github.com/migueleliasweb/go-github-mock v0.0.12 h1:z9Qd82YRA2+LbVDefRG+4PKRgaB3NYtjlv+eNtREWY4= github.com/migueleliasweb/go-github-mock v0.0.12/go.mod h1:mD5w+9J3oBBMLr7uD6owEYlYBAL8tZd+BA7iGjI4EU8= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= @@ -940,106 +736,59 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mna/pigeon v0.0.0-20180808201053-bb0192cfc2ae/go.mod h1:Iym28+kJVnC1hfQvv5MUtI6AiFFzvQjHcvI4RFTG/04= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= -github.com/mozilla/tls-observatory v0.0.0-20210209181001-cf43108d6880/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= -github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nakabonne/nestif v0.3.0/go.mod h1:dI314BppzXjJ4HsCnbo7XzrJHPszZsjnk5wEBSYHI2c= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nishanths/exhaustive v0.1.0/go.mod h1:S1j9110vxV1ECdCudXRkeMnFQ/DQk9ajLT0Uf2MYZQQ= -github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= -github.com/nishanths/predeclared v0.2.1/go.mod h1:HvkGJcA3naj4lOwnFXFDkFxVtSqQMB9sbB1usJ+xjQE= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.15.0 h1:1V1NfVQR87RtWAgp1lv9JZJ5Jap+XFGKPi00andXGi4= -github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.5 h1:7n6FEkpFmfCoo2t+YYqXH0evK+a9ICQz0xcAy9dYcaQ= -github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/open-policy-agent/cert-controller v0.1.1-0.20210129015139-6ff9721a1c47/go.mod h1:vZFB1b92JmUOIDEWHGO/lCnrKqrCQA5jCZkwPlF2nmc= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20200127222620-69dff9b895a2/go.mod h1:RYtG2t6a5nly9IWFMNgq/K29YzYMV9ftA7XlGOM75bs= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20210121003109-e55b2bb4cf1c/go.mod h1:vvhkBONv7Uah2fvS/bQ/N1u0rSLvxZOs2ErR6m+4QtQ= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20210422220901-804ff2ee8b4f h1:oEq3M/aUJbcx9LVuL+UQXhOl3xDwhbNB7WFQtWZdh4o= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20210422220901-804ff2ee8b4f/go.mod h1:vvhkBONv7Uah2fvS/bQ/N1u0rSLvxZOs2ErR6m+4QtQ= -github.com/open-policy-agent/gatekeeper v0.0.0-20200130050101-a7990e5bc83a/go.mod h1:KUnD20sANxG0aZ58e0juTnkdGsVUzWclPiIcprso5gk= -github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e h1:7AjJcXJi5RGYZBwZBB9XwuERztGzKMTH1OBfW3OqnD4= -github.com/open-policy-agent/gatekeeper v0.0.0-20210409021048-9b5e4cfe5d7e/go.mod h1:nNKQEtZ5dn3aqxeNWYQV9ZO89zwLJfANPfgm3XE7NNk= -github.com/open-policy-agent/opa v0.16.2/go.mod h1:P0xUE/GQAAgnvV537GzA0Ikw4+icPELRT327QJPkaKY= -github.com/open-policy-agent/opa v0.24.0/go.mod h1:qEyD/i8j+RQettHGp4f86yjrjvv+ZYia+JHCMv2G7wA= -github.com/open-policy-agent/opa v0.29.3/go.mod h1:ZCOTD3yyFR8JvF8ETdWdiSPn9WcF1dXeQWOv7VoPorU= -github.com/open-policy-agent/opa v0.34.2 h1:asRmfDRUSd8gwPNRrpUsDxwOUkxLgc1x1FYkwjcnag4= -github.com/open-policy-agent/opa v0.34.2/go.mod h1:buysXn+6zB/b+6JgLkP4WgKZ9+UgUtFAgtemYGrL9Ik= +github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= +github.com/open-policy-agent/frameworks/constraint v0.0.0-20221006234738-a3d297b3152f h1:Sp58oU+EdDJ3JqsIhASHUatz3S5Vx7OJyu2HfiEOWBk= +github.com/open-policy-agent/frameworks/constraint v0.0.0-20221006234738-a3d297b3152f/go.mod h1:SZoM5OFrXcEf4w4Tkei/1z2LYwyQbj39NbOoEqxRPYc= +github.com/open-policy-agent/gatekeeper v0.0.0-20221019225957-0484f99d8857 h1:b/b2V4luiou2xemEmLx+TOPxa3MUMXCnUylqGNUxgIk= +github.com/open-policy-agent/gatekeeper v0.0.0-20221019225957-0484f99d8857/go.mod h1:FBhEDoWSthx5j28b/QK/eiJehuh3/UwiObsPVYOTjdw= +github.com/open-policy-agent/opa v0.47.1 h1:4Nf8FwguZeE5P83akiwaaoWx1XkmSkRcKmCEskiD/1c= +github.com/open-policy-agent/opa v0.47.1/go.mod h1:cM7ngEoEdAIfyu9mOHaVcgLAHYkY6amrYfotm+BSkYQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= @@ -1048,22 +797,13 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/peterh/liner v0.0.0-20170211195444-bf27d3ba8e1d/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.0.0-20181023235946-059132a15dd0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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= @@ -1073,113 +813,74 @@ github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZ github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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/polyfloyd/go-errorlint v0.0.0-20210418123303-74da32850375/go.mod h1:wi9BfjxjF/bwiZ701TzmfKu6UKC357IOAtNr0Td0Lvw= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= -github.com/prometheus/client_golang v0.0.0-20181025174421-f30f42803563/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-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.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.29.0 h1:3jqPBvKT4OHAbje2Ql7KeaaSicDBCxMYwEJU1zRJceE= -github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= -github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= -github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= -github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= -github.com/quasilyte/go-ruleguard v0.3.4/go.mod h1:57FZgMnoo6jqxkYKmVj5Fc8vOt0rVzoE/UNAmFFIPqA= -github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/dsl v0.3.2/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20210203162857-b223e0831f88/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 h1:MkV+77GLUNo5oJ0jf870itWm3D0Sjh7+Za9gazKc5LQ= -github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ= -github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sanposhiho/wastedassign v1.0.0/go.mod h1:LGpq5Hsv74QaqM47WtIsRSF/ik9kqk07kchgv66tLVE= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/securego/gosec/v2 v2.7.0/go.mod h1:xNbGArrGUspJLuz3LS5XCY1EBW/0vABAl/LWfSklmiM= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= -github.com/shirou/gopsutil/v3 v3.21.4/go.mod h1:ghfMypLDrFSWN2c9cDYFLHyynQ+QUht0cv/18ZqVczw= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smallfish/simpleyaml v0.0.0-20170911015856-a32031077861 h1:9z0Ip656Pc+3cj/BpHkErOVg4iE0xcAdvJwfA3hMVzU= -github.com/smallfish/simpleyaml v0.0.0-20170911015856-a32031077861/go.mod h1:eGZ1jp5PTJ+XVhTErUmw0xyPbgctPFlixWPypUrDkSs= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= @@ -1188,20 +889,18 @@ github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.0-20181021141114-fe5e611709b0/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v0.0.0-20181024212040-082b515c9490/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -1210,22 +909,17 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= -github.com/ssgreg/nlreturn/v2 v2.1.0/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -1234,12 +928,13 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/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 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= -github.com/tetafro/godot v1.4.6/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= +github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= +github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -1247,38 +942,21 @@ github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JT github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/tklauser/go-sysconf v0.3.4/go.mod h1:Cl2c8ZRWfHD5IrfHo9VN+FX9kCFjIOyVklgXycLB6ek= -github.com/tklauser/numcpus v0.2.1/go.mod h1:9aU+wOc6WjUIZEwWMP62PL/41d65P+iks1gBkr4QyP8= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tomarrell/wrapcheck/v2 v2.1.0/go.mod h1:crK5eI4RGSUrb9duDTQ5GqcukbKZvi85vX6nbhsBAeI= -github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= -github.com/tommy-muehle/go-mnd/v2 v2.3.2/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.16.0/go.mod h1:YOKImeEosDdBPnxc0gy7INqi3m1zK6A+xl6TwOBhHCA= -github.com/valyala/quicktemplate v1.6.3/go.mod h1:fwPzK2fHuYEODzJ9pkw0ipCPNHZ2tD5KW4lOuSdPKzY= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= -github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -1286,85 +964,87 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b h1:vVRagRXf67ESqAb72hG2C/ZwI8NtJF2u2V76EsuOHGY= -github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b/go.mod h1:HptNXiXVDcJjXe9SqMd0v2FsL9f8dz4GnXgltU6q/co= -github.com/yeya24/promlinter v0.1.0/go.mod h1:rs5vtZzeBHqqMwXqFScncpCF6u06lezhZepno9AB1Oc= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= +github.com/yashtewari/glob-intersection v0.1.0 h1:6gJvMYQlTDOL3dMsPF6J0+26vwX9MB8/1q3uAdhmTrg= +github.com/yashtewari/glob-intersection v0.1.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= 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.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.2 h1:jxcFYjlkl8xaERsgLo+RNquI0epW6zuy/ZRQs6jnrFA= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= -go.mongodb.org/mongo-driver v1.3.4/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= -go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= -go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= -go.mongodb.org/mongo-driver v1.4.6 h1:rh7GdYmDrb8AQSkF8yteAus8qYOgOASWDOv1BWqBXkU= -go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= -go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= 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.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 h1:Q3C9yzW6I9jqEc8sawxzxZmY48fs9u220KXq6d5s3XU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/metric v0.20.0 h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0 h1:JsxtGXd06J8jrnya7fdI/U/MR6yXA5DtbZy+qoHQlr8= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0 h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0 h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0 h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= -go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.8.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1372,24 +1052,23 @@ golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/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-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 h1:O8uGbHCqlTp2P6QJSLmCojM4mN6UemYv8K+dCnmHmu0= golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1404,10 +1083,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-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= 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-20181023182221-1baf3a9d7d67/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1431,8 +1108,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1443,7 +1120,6 @@ golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1456,11 +1132,9 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1469,24 +1143,19 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200927032502-5d4f70055728/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201016165138-7b1cca2348c0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= @@ -1494,10 +1163,15 @@ golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5o golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= +golang.org/x/net v0.0.0-20211209124913-491a49abca63/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.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 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= @@ -1514,13 +1188,14 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 h1:B333XXssMuKQeBwiNODx4TupZy7bf4sxFZnN2ZOcvUE= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1529,7 +1204,6 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ 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/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1545,14 +1219,11 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1571,7 +1242,6 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1584,29 +1254,25 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210217105451-b926d437f341/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1623,62 +1289,58 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/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-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.20171227012246-e19ae1496984/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= -golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -1688,14 +1350,9 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1707,9 +1364,7 @@ golang.org/x/tools v0.0.0-20191205215504-7b8c8591a921/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1719,75 +1374,46 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200630154851-b2d8b0336632/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201011145850-ed2f50202694/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201017001424-6003fad69a88/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201028025901-8cd080b735b3/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110201400-7099162a900a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201118003311-bd56c0adb394/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210101214203-2dba1e4ea05c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210104081019-d8d6ddbec6ee/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2-0.20210512205948-8287d5da45e4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= +golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= 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 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= -gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= 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= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= @@ -1811,34 +1437,25 @@ google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtuk google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.58.0 h1:MDkAbYIB1JpSgCTOCYYoIec/coMlKK4oVbpnBLLcyT0= -google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= +google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.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.2/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/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/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= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -1859,13 +1476,12 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= 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-20200904004341-0bd0a958aa1d/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-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1888,21 +1504,13 @@ google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwy google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211016002631-37fc39342514/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 h1:DN5b3HU13J4sMd/QjDx34U6afpaexKTDdop+26pdjdk= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc h1:ijGwO+0vL2hJt5gaygqP2j6PfflOBrRot0IczKbmtio= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= @@ -1911,7 +1519,6 @@ google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= 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= @@ -1927,8 +1534,9 @@ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -1943,7 +1551,6 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -1954,12 +1561,9 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -1975,27 +1579,24 @@ gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.6/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/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-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/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.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/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= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= 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= @@ -2003,117 +1604,100 @@ 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= -honnef.co/go/tools v0.1.4/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -k8s.io/api v0.0.0-20190918155943-95b840bb6a1f/go.mod h1:uWuOHnjmNrtQomJrvEBg0c0HRNyQ+8KTEERVsK0PW48= -k8s.io/api v0.16.4/go.mod h1:AtzMnsR45tccQss5q8RnF+W8L81DH6XwXwo/joEx9u0= k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= -k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= -k8s.io/api v0.19.3 h1:GN6ntFnv44Vptj/b+OnMW7FmzkpDoIDLZRvKX3XH9aU= k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= -k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783/go.mod h1:xvae1SZB3E17UpV59AWc271W/Ph25N+bjPyR63X6tPY= -k8s.io/apiextensions-apiserver v0.16.4/go.mod h1:HYQwjujEkXmQNhap2C9YDdIVOSskGZ3et0Mvjcyjbto= -k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs= -k8s.io/apiextensions-apiserver v0.19.2 h1:oG84UwiDsVDu7dlsGQs5GySmQHCzMhknfhFExJMz9tA= -k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg= -k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT68DBI8uEePRt89cSvoXUVqbkWHq4= -k8s.io/apimachinery v0.16.4/go.mod h1:llRdnznGEAqC3DcNm6yEj472xaFVfLM7hnYofMb12tQ= +k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= +k8s.io/api v0.24.6 h1:9EZhqZv4Ct++e6XMh3f5bmP4XMxsuxf4c7WOCCjYvF8= +k8s.io/api v0.24.6/go.mod h1:eoAZTnLglpwBajOxAusPL3xfVW5tUn3Y3gQv8e1XHBA= +k8s.io/apiextensions-apiserver v0.24.6 h1:XgOhyeTIKUiw1qupOtx3x3xyfeaGsCBQYwPR11wYFwk= +k8s.io/apiextensions-apiserver v0.24.6/go.mod h1:0DMt8ahXcD3uQuB80mQN3l8fbQ9s93iRVhoUZRp4KqA= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.19.2/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= -k8s.io/apimachinery v0.19.3 h1:bpIQXlKjB4cB/oNpnNnV+BybGPR7iP5oYpsOTEJ4hgc= k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= -k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg= -k8s.io/apiserver v0.16.4/go.mod h1:kbLJOak655g6W7C+muqu1F76u9wnEycfKMqbVaXIdAc= +k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= +k8s.io/apimachinery v0.24.6 h1:Sp4EHDrBtm0V1z/8poY52HhP79dAIcI9lb9DUG54XPc= +k8s.io/apimachinery v0.24.6/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= -k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo= -k8s.io/apiserver v0.19.2 h1:xq2dXAzsAoHv7S4Xc/p7PKhiowdHV/PgdePWo3MxIYM= -k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA= -k8s.io/cli-runtime v0.17.2/go.mod h1:aa8t9ziyQdbkuizkNLAw3qe3srSyWh9zlSB7zTqRNPI= -k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90/go.mod h1:J69/JveO6XESwVgG53q3Uz5OSfgsv4uxpScmmyYOOlk= -k8s.io/client-go v0.16.4/go.mod h1:ZgxhFDxSnoKY0J0U2/Y1C8obKDdlhGPZwA7oHH863Ok= +k8s.io/apiserver v0.24.6 h1:LEVuJb3bwjbZSIA8Ltm6iNBJiFawJtEGmAP7bgMljIE= +k8s.io/apiserver v0.24.6/go.mod h1:ZmMXlYsNUhWzEOMJv01JqjL/psUzmvcIF70yDnzen/A= +k8s.io/cli-runtime v0.23.5/go.mod h1:oY6QDF2qo9xndSq32tqcmRp2UyXssdGrLfjAVymgbx4= k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= -k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= -k8s.io/client-go v0.19.2/go.mod h1:S5wPhCqyDNAlzM9CnEdgTGV4OqhsW3jGO1UM1epwfJA= -k8s.io/client-go v0.19.3 h1:ctqR1nQ52NUs6LpI0w+a5U+xjYwflFwA13OJKcicMxg= k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= +k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= +k8s.io/client-go v0.24.6 h1:q7gZYyGL0Iv9zynYOFi5DHc3NFZ2aA0P56QpWFXbEyE= +k8s.io/client-go v0.24.6/go.mod h1:qaJRTFlI24ONWGplf+j8IgTyb6ztpwS6SGfjcNCRpQ8= k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE= -k8s.io/code-generator v0.0.0-20190912054826-cd179ad6a269/go.mod h1:V5BD6M4CyaN5m+VthcclXWsVcT1Hu+glwa1bi3MIsyE= k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/code-generator v0.16.4/go.mod h1:mJUgkl06XV4kstAnLHAIzJPVCOzVR+ZcfPIv4fUsFCY= -k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/code-generator v0.19.2/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= -k8s.io/component-base v0.0.0-20190918160511-547f6c5d7090/go.mod h1:933PBGtQFJky3TEwYx4aEPZ4IxqhWh3R6DCmzqIn1hA= -k8s.io/component-base v0.16.4/go.mod h1:GYQ+4hlkEwdlpAp59Ztc4gYuFhdoZqiAJD1unYDJ3FM= +k8s.io/code-generator v0.23.5/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk= +k8s.io/code-generator v0.24.6/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= -k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs= -k8s.io/component-base v0.19.2 h1:jW5Y9RcZTb79liEhW3XDVTW7MuvEGP0tQZnfSX6/+gs= -k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= +k8s.io/component-base v0.23.5/go.mod h1:c5Nq44KZyt1aLl0IpHX82fhsn84Sb0jjzwjpcA42bY0= +k8s.io/component-base v0.24.6 h1:LqSZunOeX1l6BpsMaD+iiJJSxZYl7IlVFW6qQu52ikA= +k8s.io/component-base v0.24.6/go.mod h1:YwPBIsm9c6VONDa6vBW4WjDMyvQgrLMHNoUokOkOdzU= +k8s.io/component-helpers v0.23.5/go.mod h1:5riXJgjTIs+ZB8xnf5M2anZ8iQuq37a0B/0BgoPQuSM= k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.70.1 h1:7aaoSdahviPmR+XkS7FyxlkkXs6tHISSG03RxleQAVQ= +k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20220401212409-b28bf2818661 h1:nqYOUleKLC/0P1zbU29F5q6aoezM6MOAVz+iyfQbZ5M= -k8s.io/kube-openapi v0.0.0-20220401212409-b28bf2818661/go.mod h1:daOouuuwd9JXpv1L7Y34iV3yf6nxzipkKMWWlqlvK9M= -k8s.io/kubectl v0.17.2 h1:QZR8Q6lWiVRjwKslekdbN5WPMp53dS/17j5e+oi5XVU= -k8s.io/kubectl v0.17.2/go.mod h1:y4rfLV0n6aPmvbRCqZQjvOp3ezxsFgpqL+zF5jH/lxk= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= +k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= +k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6 h1:nBQrWPlrNIiw0BsX6a6MKr1itkm0ZS0Nl97kNLitFfI= +k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6/go.mod h1:daOouuuwd9JXpv1L7Y34iV3yf6nxzipkKMWWlqlvK9M= +k8s.io/kubectl v0.23.5 h1:DmDULqCaF4qstj0Im143XmncvqWtJxHzK8IrW2BzlU0= +k8s.io/kubectl v0.23.5/go.mod h1:lLgw7cVY8xbd7o637vOXPca/w6HC205KsPCRDYRCxwE= k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= -k8s.io/metrics v0.17.2/go.mod h1:3TkNHET4ROd+NfzNxkjoVfQ0Ob4iZnaHmSEA4vYpwLw= -k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/metrics v0.23.5/go.mod h1:WNAtV2a5BYbmDS8+7jSqYYV6E3efuGTpIwJ8PTD1wgs= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= +k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed h1:jAne/RjBTyawwAy0utX5eqigAwz/lQhTmy+Hr/Cpue4= +k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -mvdan.cc/gofumpt v0.1.1/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20210104141923-aac4ce9116a7/go.mod h1:hBpJkZE8H/sb+VRFvw2+rBpHNsTBcvSpk61hr8mzXZE= 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/apiserver-network-proxy/konnectivity-client v0.0.9 h1:rusRLrDhjBp6aYtl9sGEvQJr6faoHoDLd0YcUBTZguI= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= -sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= -sigs.k8s.io/controller-runtime v0.7.0 h1:bU20IBBEPccWz5+zXpLnpVsgBYxqclaHu1pVDl/gEt8= -sigs.k8s.io/controller-runtime v0.7.0/go.mod h1:pJ3YBrJiAqMAZKi6UVGuE98ZrroV1p+pIhoHsMm9wdU= -sigs.k8s.io/controller-tools v0.2.2/go.mod h1:8SNGuj163x/sMwydREj7ld5mIMJu1cDanIfnx6xsU70= -sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= -sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30 h1:dUk62HQ3ZFhD48Qr8MIXCiKA8wInBQCtuE4QGfFW7yA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw= +sigs.k8s.io/controller-runtime v0.12.3 h1:FCM8xeY/FI8hoAfh/V4XbbYMY20gElh9yh+A98usMio= +sigs.k8s.io/controller-runtime v0.12.3/go.mod h1:qKsk4WE6zW2Hfj0G4v10EnNB2jMG1C+NTb8h+DwCoU0= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 h1:2sgAQQcY0dEW2SsQwTXhQV4vO6+rSslYx8K3XmM5hqQ= +sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= +sigs.k8s.io/kustomize/cmd/config v0.10.2/go.mod h1:K2aW7nXJ0AaT+VA/eO0/dzFLxmpFcTzudmAgDwPY1HQ= +sigs.k8s.io/kustomize/kustomize/v4 v4.4.1/go.mod h1:qOKJMMz2mBP+vcS7vK+mNz4HBLjaQSWRY22EF6Tb7Io= sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= +sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= sigs.k8s.io/kustomize/kyaml v0.13.9 h1:Qz53EAaFFANyNgyOEJbT/yoIHygK40/ZcvU3rgry2Tk= sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ85/nOXac4= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff v1.0.1 h1:LOs1LZWMsz1xs77Phr/pkB4LFaavH7IVq/3+WTN9XTA= -sigs.k8s.io/structured-merge-diff v1.0.1/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2 h1:YHQV7Dajm86OuqnIR6zAelnDWBRjo+YhYV9PmGrh1s8= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +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/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/cli/launchpad/doc.go b/cli/launchpad/doc.go index 90c382fa7ef..e7c178b5d80 100644 --- a/cli/launchpad/doc.go +++ b/cli/launchpad/doc.go @@ -1,7 +1,7 @@ // Package launchpad contains libraries for reading Cloud Foundation Toolkit custom // resource definitions and output Infrastructure as Code ready scripts. // -// Supported resources can be found in generic.go +// # Supported resources can be found in generic.go // // All resources implements resourceHandler interface and are expected // to have a full YAML representation with name {resource}YAML and additional @@ -12,12 +12,12 @@ // Implementer of a resource type should aim to track sub resources as an addition // field, as oppose to manipulating the parsed YAML directly. For example, // -// kind: Folder -// spec: -// id: X -// folders: -// - id: Y -// - id: Z +// kind: Folder +// spec: +// id: X +// folders: +// - id: Y +// - id: Z // // Folder X have Y, Z folders as sub resources. In the evaluation hierarchy, folder X // is a folderYAML representation with folderSpecYAML spec. Subdirectories Y, Z are @@ -38,26 +38,26 @@ // // An implicit reference occurs if a resource is nested under another resource. // -// kind: Folder -// spec: -// id: X -// folders: -// - id: Y +// kind: Folder +// spec: +// id: X +// folders: +// - id: Y // // Folder Y have an implicit reference of Folder X as a parent. // // An explicit reference occurs if a resource specified referenced type and id. // -// kind: Folder -// spec: -// id: Y -// parentRef: -// type: Folder -// id: X +// kind: Folder +// spec: +// id: Y +// parentRef: +// type: Folder +// id: X // // Folder Y have an explicit reference of Folder X as a parent. // // As references can have multiple use cases, all YAML definition will use `Ref` // as suffix for referenced fields. For example, `parentRef` to specify // parent-child relationship such as organization/folder, folder/folder. -package launchpad \ No newline at end of file +package launchpad diff --git a/cli/launchpad/folder_test.go b/cli/launchpad/folder_test.go index f3c59c8f423..acc848093e2 100644 --- a/cli/launchpad/folder_test.go +++ b/cli/launchpad/folder_test.go @@ -36,7 +36,7 @@ func TestFolders_add(t *testing.T) { t.Run(tc.name, func(t *testing.T) { fs := folders{} for _, newF := range tc.input { - _ = fs.add(newF) // silently ignore existing resource + _ = fs.add(newF) // silently ignore existing resource } assert.Equal(t, tc.output, fs, "expected folders to be the same") }) diff --git a/cli/launchpad/root.go b/cli/launchpad/root.go index 53b98993eda..cc009dd7350 100644 --- a/cli/launchpad/root.go +++ b/cli/launchpad/root.go @@ -15,8 +15,9 @@ import ( // Code ready scripts based on specified output flavor. // // NewGenerate can be triggered by -// $ cft launchpad generate *.yaml -// $ cft lp g *.yaml +// +// $ cft launchpad generate *.yaml +// $ cft lp g *.yaml func NewGenerate(rawPaths []string, outFlavor OutputFlavor, outputDir string) { // attempt to load all configs with best effort log.Println("debug: output location", outputDir) // Remove after generate code is written diff --git a/cli/launchpad/statics.go b/cli/launchpad/statics.go index 2b3f2521f5d..18cc88decb9 100644 --- a/cli/launchpad/statics.go +++ b/cli/launchpad/statics.go @@ -1,7 +1,8 @@ package launchpad + // WARNING: Generated file, do not modify directly! -var statics = map[string]string { +var statics = map[string]string{ "static/tmpl/tf/license.tf.tmpl": `/** * Copyright 2019 Google LLC * diff --git a/cli/report/convert.go b/cli/report/convert.go index 2d247c26863..50b8b1e9eb4 100644 --- a/cli/report/convert.go +++ b/cli/report/convert.go @@ -27,7 +27,7 @@ import ( // and concats all objects into one single array func ReadFilesAndConcat(dir string) (results []interface{}, err error) { files, err := listFiles(dir) - const maxCapacity = 1024*1024 + const maxCapacity = 1024 * 1024 if err != nil { return nil, err } @@ -41,7 +41,7 @@ func ReadFilesAndConcat(dir string) (results []interface{}, err error) { s := bufio.NewScanner(f) buf := make([]byte, maxCapacity) s.Buffer(buf, maxCapacity) - + for s.Scan() { var row map[string]interface{} err = json.Unmarshal(s.Bytes(), &row) diff --git a/cli/scorecard/inventory.go b/cli/scorecard/inventory.go index c3736675afb..d20deec5335 100644 --- a/cli/scorecard/inventory.go +++ b/cli/scorecard/inventory.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" asset "cloud.google.com/go/asset/apiv1" - assetpb "google.golang.org/genproto/googleapis/cloud/asset/v1" + assetpb "cloud.google.com/go/asset/apiv1/assetpb" ) // InventoryConfig manages a CAI inventory diff --git a/cli/scorecard/main.go b/cli/scorecard/main.go index 49f16e6313e..38541484e49 100644 --- a/cli/scorecard/main.go +++ b/cli/scorecard/main.go @@ -18,5 +18,5 @@ import ( log "github.com/inconshreveable/log15" ) -// Log (log15) handler for Scorecard +// Log (log15) handler for Scorecard var Log = log.New() diff --git a/cli/scorecard/proto_test.go b/cli/scorecard/proto_test.go index 2404a3fa98c..3b9d220a0a8 100644 --- a/cli/scorecard/proto_test.go +++ b/cli/scorecard/proto_test.go @@ -79,7 +79,7 @@ func TestDataTypeTransformation(t *testing.T) { t.Fatalf("failed to parse JSON string %v: %v", gotStr, err) } - wantStr := `{"name":"//cloudresourcemanager.googleapis.com/projects/23456","assetType":"cloudresourcemanager.googleapis.com/Project","iamPolicy":{"version":1,"bindings":[{"role":"roles/owner","members":["user:user@example.com"]}]},"ancestors":["projects/1234","organizations/56789"]}` + wantStr := `{"name":"//cloudresourcemanager.googleapis.com/projects/23456","assetType":"cloudresourcemanager.googleapis.com/Project","iamPolicy":{"version":1,"bindings":[{"role":"roles/owner","members":["user:user@example.com"]}],"auditConfigs":[{"service":"storage.googleapis.com","auditLogConfigs":[{"logType":"ADMIN_READ"},{"logType":"DATA_READ"},{"logType":"DATA_WRITE"}]}]},"ancestors":["projects/1234","organizations/56789"]}` var wantJSON map[string]interface{} if err := json.Unmarshal([]byte(wantStr), &wantJSON); err != nil { t.Fatalf("failed to parse JSON string %v: %v", wantStr, err) diff --git a/cli/scorecard/score.go b/cli/scorecard/score.go index f6e8900dc2b..42386094aab 100644 --- a/cli/scorecard/score.go +++ b/cli/scorecard/score.go @@ -100,12 +100,12 @@ func getConstraintShortName(constraintName string) string { // RichViolation holds a violation with its category type RichViolation struct { - validator.Violation `json:"-"` - Category string // category of violation - Resource string - Message string - Metadata *_struct.Value `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` - asset *validator.Asset `json:"-"` + *validator.Violation `json:"-"` + Category string // category of violation + Resource string + Message string + Metadata *_struct.Value `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` + asset *validator.Asset `json:"-"` } var availableCategories = map[string]string{ @@ -116,7 +116,7 @@ var availableCategories = map[string]string{ } func (config *ScoringConfig) getConstraintForViolation(violation *RichViolation) (*constraintViolations, error) { - key := violation.GetConstraint() + key := violation.Violation.GetConstraint() cv, found := config.constraints[key] if !found { constraint := key @@ -125,7 +125,7 @@ func (config *ScoringConfig) getConstraintForViolation(violation *RichViolation) } config.constraints[key] = cv - metadata := violation.GetMetadata().GetStructValue().GetFields()["constraint"] + metadata := violation.Violation.GetMetadata().GetStructValue().GetFields()["constraint"] annotations := metadata.GetStructValue().GetFields()["annotations"].GetStructValue().GetFields() categoryKey := otherCategoryKey categoryValue, found := annotations["bundles.validator.forsetisecurity.org/scorecard-v1"] @@ -192,7 +192,7 @@ func writeResults(config *ScoringConfig, dest io.Writer, outputFormat string, ou } } richViolations = append(richViolations, v) - Log.Debug("Violation metadata", "metadata", v.GetMetadata()) + Log.Debug("Violation metadata", "metadata", v.Violation.GetMetadata()) } } } @@ -223,7 +223,7 @@ func writeResults(config *ScoringConfig, dest io.Writer, outputFormat string, ou if len(v.asset.Ancestors) > 0 { parent = v.asset.Ancestors[0] } - record := []string{category.Name, getConstraintShortName(v.Constraint), v.Resource, v.Message, parent} + record := []string{category.Name, getConstraintShortName(v.Violation.Constraint), v.Resource, v.Message, parent} for _, field := range outputMetadataFields { metadata := v.Metadata.GetStructValue().Fields["details"].GetStructValue().Fields[field] value, _ := stringViaJSON(metadata) @@ -235,7 +235,7 @@ func writeResults(config *ScoringConfig, dest io.Writer, outputFormat string, ou } w.Flush() - Log.Debug("Violation metadata", "metadata", v.GetMetadata()) + Log.Debug("Violation metadata", "metadata", v.Violation.GetMetadata()) } } } @@ -279,7 +279,7 @@ func writeResults(config *ScoringConfig, dest io.Writer, outputFormat string, ou if err != nil { return err } - Log.Debug("Violation metadata", "metadata", v.GetMetadata()) + Log.Debug("Violation metadata", "metadata", v.Violation.GetMetadata()) } } } diff --git a/cli/scorecard/violations.go b/cli/scorecard/violations.go index a43062be77f..58685728361 100644 --- a/cli/scorecard/violations.go +++ b/cli/scorecard/violations.go @@ -137,7 +137,7 @@ func getViolations(inventory *InventoryConfig, config *ScoringConfig) ([]*RichVi wp.Stop() } for _, violation := range violations { - richViolation := RichViolation{*violation, "", violation.Resource, violation.Message, violation.Metadata, asset} + richViolation := RichViolation{violation, "", violation.Resource, violation.Message, violation.Metadata, asset} mu.Lock() richViolations = append(richViolations, &richViolation) mu.Unlock() diff --git a/cli/scorecard/violations_test.go b/cli/scorecard/violations_test.go index 21814c9a8a1..c4c63260541 100644 --- a/cli/scorecard/violations_test.go +++ b/cli/scorecard/violations_test.go @@ -113,8 +113,8 @@ func TestGetViolations(t *testing.T) { } violationMap := make(map[string]int) for _, v := range violations { - violationMap[v.Constraint+"-"+v.Resource] = 1 - Log.Debug("Found violation", "constraint", v.Constraint, "resource", v.Resource) + violationMap[v.Violation.Constraint+"-"+v.Resource] = 1 + Log.Debug("Found violation", "constraint", v.Violation.Constraint, "resource", v.Resource) } for _, tc := range testCases { diff --git a/cli/util/git.go b/cli/util/git.go index 0f75b77e5a4..978cd8d3627 100644 --- a/cli/util/git.go +++ b/cli/util/git.go @@ -5,7 +5,7 @@ import ( "net/url" "strings" - "github.com/go-git/go-git/v5" + git "github.com/go-git/go-git/v5" ) const defaultRemote = "origin" diff --git a/cli/util/git_test.go b/cli/util/git_test.go index d77ffcc270b..2daf6f0fbda 100644 --- a/cli/util/git_test.go +++ b/cli/util/git_test.go @@ -5,7 +5,7 @@ import ( "path" "testing" - "github.com/go-git/go-git/v5" + git "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/config" ) From 7f9b4bcbf620e2f2c3afb2f35cf821fa8efe3a02 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 24 May 2023 21:10:55 +0200 Subject: [PATCH 0404/1371] chore(deps): update peter-evans/create-pull-request digest to 4ddb8c8 (#1603) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index e23bccc4511..c57c8ef60f4 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@efbb6ba75d718110dc7d3bd08cb98ebd247adc68 + uses: peter-evans/create-pull-request@4ddb8c8fe7f58d02d4d1d62359fd91fe4d54361d with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 08c1dc435f9f94bddfe57c54e67c8bc680479a86 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 24 May 2023 15:03:36 -0700 Subject: [PATCH 0405/1371] chore: update release-cli to GO 1.18 (#1607) --- .github/workflows/release-cli.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index ffaf3d5d6ca..c5db3169a66 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 with: - go-version: '~1.16' + go-version: '~1.18' - id: 'auth' name: 'Authenticate to Google Cloud' From c5adfb3cc95260757b9edfdc26dba6e9463ae4e7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 25 May 2023 20:32:25 +0200 Subject: [PATCH 0406/1371] fix(deps): update module google.golang.org/api to v0.124.0 (#1615) --- infra/utils/fbf/go.mod | 14 +++++++------- infra/utils/fbf/go.sum | 30 +++++++++++++++--------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index da76be8d04f..bd97477a3ea 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.3 - google.golang.org/api v0.123.0 + google.golang.org/api v0.124.0 ) require ( @@ -16,7 +16,7 @@ require ( github.com/fatih/color v1.15.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/s2a-go v0.1.3 // indirect + github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.8.0 // indirect @@ -27,14 +27,14 @@ require ( github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.1.0 // indirect - golang.org/x/net v0.9.0 // indirect - golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.7.0 // indirect - golang.org/x/term v0.7.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/oauth2 v0.8.0 // indirect + golang.org/x/sys v0.8.0 // indirect + golang.org/x/term v0.8.0 // indirect golang.org/x/text v0.9.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.54.0 // indirect + google.golang.org/grpc v1.55.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 51a9cec3cf9..4cd86c8bc24 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -60,8 +60,8 @@ github.com/google/go-cmp v0.5.0/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.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= 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= @@ -127,18 +127,18 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +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/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -152,12 +152,12 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.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.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -176,8 +176,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.123.0 h1:yHVU//vA+qkOhm4reEC9LtzHVUCN/IqqNRl1iQ9xE20= -google.golang.org/api v0.123.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.124.0 h1:dP6Ef1VgOGqQ8eiv4GiY8RhmeyqzovcXBYPDUYG8Syo= +google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -196,8 +196,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= 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= From d0f511d0f6ea3ab072c639607e29b61378e5795b Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 26 May 2023 17:56:41 -0700 Subject: [PATCH 0407/1371] feat: updates metadata validation to walk a path (#1618) --- cli/Makefile | 2 +- cli/bpmetadata/validate.go | 46 ++--------- .../terraform/metadata.yaml | 0 .../examples/acm/metadata.display.yaml | 0 .../content/examples/acm/metadata.yaml | 0 cli/util/file.go | 47 +++++++++++ cli/util/file_test.go | 82 ++++++++++++++++++- 7 files changed, 136 insertions(+), 41 deletions(-) create mode 100644 cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform/metadata.yaml create mode 100644 cli/testdata/bpmetadata/content/examples/acm/metadata.display.yaml create mode 100644 cli/testdata/bpmetadata/content/examples/acm/metadata.yaml diff --git a/cli/Makefile b/cli/Makefile index ad7beb54f21..a0787d0dee6 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.6 +VERSION=v1.1.7 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/validate.go b/cli/bpmetadata/validate.go index 7e5bba5e361..7e929bd91cf 100644 --- a/cli/bpmetadata/validate.go +++ b/cli/bpmetadata/validate.go @@ -4,7 +4,6 @@ import ( _ "embed" "fmt" "io/ioutil" - "os" "path" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" @@ -27,51 +26,20 @@ func validateMetadata(bpPath, wdPath string) error { bpPath = path.Join(wdPath, bpPath) } - moduleDirs := []string{bpPath} - modulesPath := path.Join(bpPath, modulesPath) - _, err := os.Stat(modulesPath) - if err == nil { - subModuleDirs, err := util.WalkTerraformDirs(modulesPath) - if err != nil { - Log.Warn("unable to read the submodules i.e. modules/ folder", "err", err) - } - - moduleDirs = append(moduleDirs, subModuleDirs...) + // We don't need to validate metadata under .terraform folders + skipDirsToValidate := []string{".terraform"} + metadataFiles, err := util.FindFilesWithPattern(bpPath, `.*/metadata(?:.display)?.yaml$`, skipDirsToValidate) + if err != nil { + Log.Error("unable to read at: %s", bpPath, "err", err) } var vErrs []error - for _, d := range moduleDirs { - // validate core metadata - core := path.Join(d, metadataFileName) - _, err := os.Stat(core) - - // log info msg and continue if the file does not exist - if err != nil { - Log.Info("core metadata for module does not exist", "path", core) - continue - } - - err = validateMetadataYaml(core, schemaLoader) + for _, f := range metadataFiles { + err = validateMetadataYaml(f, schemaLoader) if err != nil { vErrs = append(vErrs, err) Log.Error("core metadata validation failed", "err", err) } - - // validate display metadata - disp := path.Join(d, metadataDisplayFileName) - _, err = os.Stat(disp) - - // log info msg and continue if the file does not exist - if err != nil { - Log.Info("display metadata for module does not exist", "path", disp) - continue - } - - err = validateMetadataYaml(disp, schemaLoader) - if err != nil { - vErrs = append(vErrs, err) - Log.Error("display metadata validation failed", "err", err) - } } if len(vErrs) > 0 { diff --git a/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform/metadata.yaml b/cli/testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform/metadata.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/acm/metadata.display.yaml b/cli/testdata/bpmetadata/content/examples/acm/metadata.display.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/acm/metadata.yaml b/cli/testdata/bpmetadata/content/examples/acm/metadata.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/util/file.go b/cli/util/file.go index fdca8976c78..8f671fcdbfb 100644 --- a/cli/util/file.go +++ b/cli/util/file.go @@ -6,6 +6,7 @@ import ( "io/fs" "os" "path/filepath" + "regexp" "strings" ) @@ -47,6 +48,52 @@ func WalkTerraformDirs(topLevelPath string) ([]string, error) { return tfDirs, nil } +func FindFilesWithPattern(dir string, pattern string, skipPaths []string) ([]string, error) { + f, err := os.Stat(dir) + if err != nil { + return nil, fmt.Errorf("no such dir: %v", err) + } + if !f.IsDir() { + return nil, fmt.Errorf("expected dir %s: got file", dir) + } + + re, err := regexp.Compile(pattern) + if err != nil { + return nil, fmt.Errorf("invalid regex: %v", err) + } + + filePaths := []string{} + + err = filepath.WalkDir(dir, func(path string, file fs.DirEntry, err error) error { + if err != nil { + return err + } + + if !re.MatchString(path) { + return nil + } + + for _, p := range skipPaths { + if strings.Contains(path, p) { + return nil + } + } + + if !file.IsDir() { + filePaths = append(filePaths, path) + } + + return nil + }) + + if err != nil { + fmt.Printf("error accessing the path: %q. error: %v\n", dir, err) + return nil, err + } + + return filePaths, nil +} + func Exists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { diff --git a/cli/util/file_test.go b/cli/util/file_test.go index 592392384eb..8da1bce0f9f 100644 --- a/cli/util/file_test.go +++ b/cli/util/file_test.go @@ -1,9 +1,10 @@ package util import ( - "github.com/stretchr/testify/assert" "path" "testing" + + "github.com/stretchr/testify/assert" ) const ( @@ -53,3 +54,82 @@ func TestTFDirectories(t *testing.T) { }) } } + +func TestFindFilesWithPattern(t *testing.T) { + tests := []struct { + name string + path string + pattern string + skipPaths []string + want []string + wantErr bool + }{ + { + name: "pattern for metadata files", + path: "", + pattern: `.*/metadata(?:.display)?.yaml$`, + want: []string{ + "../testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform/metadata.yaml", + "../testdata/bpmetadata/content/examples/acm/metadata.display.yaml", + "../testdata/bpmetadata/content/examples/acm/metadata.yaml", + }, + }, + { + name: "pattern for tf files", + path: "content/examples/simple_regional", + pattern: `.+.tf$`, + want: []string{ + "../testdata/bpmetadata/content/examples/simple_regional/main.tf", + }, + }, + { + name: "pattern for tf files skipping a path", + path: "content/examples", + skipPaths: []string{ + "examples/acm", + }, + pattern: `.+.tf$`, + want: []string{ + "../testdata/bpmetadata/content/examples/simple_regional/main.tf", + "../testdata/bpmetadata/content/examples/simple_regional_beta/main.tf", + "../testdata/bpmetadata/content/examples/simple_regional_beta/variables.tf", + }, + }, + { + name: "pattern for tf files skipping multiple paths", + path: "content/examples", + skipPaths: []string{ + "examples/acm", + "examples/simple_regional_beta", + }, + pattern: `.+.tf$`, + want: []string{ + "../testdata/bpmetadata/content/examples/simple_regional/main.tf", + }, + }, + { + name: "pattern for avoiding non-metadata yaml files", + path: "schema", + pattern: `.*/metadata(?:.display)?.yaml$`, + want: []string{}, + }, + { + name: "invalid pattern", + pattern: `*.txt`, + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + path := path.Join(testContentPath, tt.path) + got, err := FindFilesWithPattern(path, tt.pattern, tt.skipPaths) + if (err != nil) != tt.wantErr { + t.Errorf("FindFilesWithPattern() error = %v, wantErr %v", err, tt.wantErr) + return + } + + assert.Equal(t, tt.want, got) + }) + } +} From 8b250e0ed41a89460d6f8d63c47342991a2f3913 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 30 May 2023 13:38:25 -0700 Subject: [PATCH 0408/1371] chore: add go-module-swapper test (#1620) --- .github/workflows/go-module-swapper.yml | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/go-module-swapper.yml diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml new file mode 100644 index 00000000000..de3092246dc --- /dev/null +++ b/.github/workflows/go-module-swapper.yml @@ -0,0 +1,33 @@ +name: Module Swapper Tests + +on: + pull_request: + branches: + - 'master' + paths: + - 'infra/build/developer-tools/build/scripts/module-swapper/**' + - '.github/workflows/go-module-swapper.yml' + +concurrency: + group: '${{github.workflow}}-${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + unit: + name: Module Swapper Unit Tests + runs-on: ${{ matrix.operating-system }} + defaults: + run: + shell: bash + working-directory: 'infra/build/developer-tools/build/scripts/module-swapper' + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version: '~1.18' + - run: |- + go test ./... -v From 949bd2c443cfc1900d3f240215157a4cbf3dfb77 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 May 2023 23:26:49 +0200 Subject: [PATCH 0409/1371] fix(deps): update module github.com/go-git/go-git/v5 to v5.7.0 (#1614) --- .../build/scripts/module-swapper/go.mod | 15 ++-- .../build/scripts/module-swapper/go.sum | 72 ++++++------------- 2 files changed, 30 insertions(+), 57 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/module-swapper/go.mod b/infra/build/developer-tools/build/scripts/module-swapper/go.mod index 1f7c03ec271..ceaae74e773 100644 --- a/infra/build/developer-tools/build/scripts/module-swapper/go.mod +++ b/infra/build/developer-tools/build/scripts/module-swapper/go.mod @@ -3,29 +3,30 @@ module github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module go 1.18 require ( - github.com/go-git/go-git/v5 v5.6.1 + github.com/go-git/go-git/v5 v5.7.0 github.com/pmezard/go-difflib v1.0.0 ) require ( github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/emirpasic/gods v1.18.1 // indirect - github.com/go-git/gcfg v1.5.0 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/imdario/mergo v0.3.15 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/sergi/go-diff v1.3.1 // indirect - github.com/skeema/knownhosts v1.1.0 // indirect + github.com/skeema/knownhosts v1.1.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.7.0 // indirect + golang.org/x/crypto v0.9.0 // indirect golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/sys v0.6.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect golang.org/x/tools v0.7.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/infra/build/developer-tools/build/scripts/module-swapper/go.sum b/infra/build/developer-tools/build/scripts/module-swapper/go.sum index f1165d2bd19..a81c648988d 100644 --- a/infra/build/developer-tools/build/scripts/module-swapper/go.sum +++ b/infra/build/developer-tools/build/scripts/module-swapper/go.sum @@ -1,15 +1,12 @@ github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310 h1:dGAdTcqheKrQ/TW76sAcmO2IorwXplUw2inPkOzykbw= -github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= +github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek= +github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= @@ -18,27 +15,24 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 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/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= -github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= -github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= -github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= -github.com/go-git/go-git-fixtures/v4 v4.3.1 h1:y5z6dd3qi8Hl+stezc8p3JxDkoTRqMAlKnXHuzrfjTQ= -github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= -github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk= -github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= +github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= +github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -50,7 +44,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= -github.com/mmcloughlin/avo v0.5.0/go.mod h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= @@ -58,32 +51,25 @@ 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/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= 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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= -github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= +github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= +github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -91,70 +77,56 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/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-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/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-20220715151400-c0bba94af5f8/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.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.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.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/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= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= From 01a109c987ae6a9bab6c117f8d5de2102bc3646f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 May 2023 23:34:27 +0200 Subject: [PATCH 0410/1371] chore(deps): update peter-evans/create-pull-request digest to 9ef70ee (#1621) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index c57c8ef60f4..0bfa708e7d4 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@4ddb8c8fe7f58d02d4d1d62359fd91fe4d54361d + uses: peter-evans/create-pull-request@9ef70ee495af6d0ff9825b3e6050f304a290283a with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 30f11d9659c32705af87018a28a90d94307ff462 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 31 May 2023 08:03:15 -0700 Subject: [PATCH 0411/1371] chore: add go-fbf-test (#1623) --- .github/workflows/go-fbf-test.yml | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/go-fbf-test.yml diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml new file mode 100644 index 00000000000..2d48cb88f44 --- /dev/null +++ b/.github/workflows/go-fbf-test.yml @@ -0,0 +1,34 @@ +name: Flaky Build Finder Tests + +on: + pull_request: + branches: + - 'master' + paths: + - 'infra/utils/fbf/**' + - '.github/workflows/go-fbf-test.yml' + +concurrency: + group: '${{github.workflow}}-${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + unit: + name: ${{ matrix.operating-system }} unit tests + runs-on: ${{ matrix.operating-system }} + defaults: + run: + shell: bash + working-directory: 'infra/utils/fbf' + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest, macos-latest] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version-file: infra/utils/fbf/go.mod + cache-dependency-path: infra/utils/fbf/go.sum + - run: |- + go test ./... -v From 50c2ab3165ab5eb159a8569ec90cd1518d427b7c Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 31 May 2023 08:35:39 -0700 Subject: [PATCH 0412/1371] feat: update to bpt GO 1.20 and rework krm test (#1619) Co-authored-by: Bharath KKB --- .github/workflows/go-lint.yaml | 2 +- .../examples/simple_krm_blueprint/Kptfile | 18 +-- .../examples/simple_krm_blueprint/README.md | 69 ---------- .../{vpc.yaml => namespace.yaml} | 18 +-- .../simple_krm_blueprint/setters.yaml | 8 +- infra/blueprint-test/go.mod | 53 ++++++-- infra/blueprint-test/go.sum | 120 ++++++++++++++---- .../pkg/discovery/config_test.go | 5 +- .../blueprint-test/pkg/discovery/discover.go | 3 +- .../blueprint-test/pkg/gcloud/gcloud_test.go | 3 +- infra/blueprint-test/pkg/golden/golden.go | 3 +- .../blueprint-test/pkg/golden/golden_test.go | 3 +- .../blueprint-test/pkg/tft/terraform_test.go | 5 +- infra/blueprint-test/pkg/utils/files.go | 8 +- infra/blueprint-test/pkg/utils/jsonresult.go | 4 +- infra/blueprint-test/pkg/utils/rand.go | 2 +- infra/blueprint-test/test/README.md | 4 - .../test/krm_simple_blueprint_test.go | 18 ++- .../test/setup/simple_tf_module/main.tf | 16 ++- .../test/setup/simple_tf_module/outputs.tf | 10 +- 20 files changed, 197 insertions(+), 175 deletions(-) delete mode 100644 infra/blueprint-test/examples/simple_krm_blueprint/README.md rename infra/blueprint-test/examples/simple_krm_blueprint/{vpc.yaml => namespace.yaml} (52%) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index a353eaf5451..aee38110908 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -25,7 +25,7 @@ jobs: steps: - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: - go-version: '1.18' + go-version: '1.20' cache: false - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1 diff --git a/infra/blueprint-test/examples/simple_krm_blueprint/Kptfile b/infra/blueprint-test/examples/simple_krm_blueprint/Kptfile index 4b653fbb1b2..6122071789a 100644 --- a/infra/blueprint-test/examples/simple_krm_blueprint/Kptfile +++ b/infra/blueprint-test/examples/simple_krm_blueprint/Kptfile @@ -3,23 +3,9 @@ kind: Kptfile metadata: name: simple_krm_blueprint annotations: - blueprints.cloud.google.com/title: Virtual Private Cloud blueprint -upstream: - type: git - git: - repo: https://github.com/GoogleCloudPlatform/blueprints - directory: /catalog/networking/network/vpc - ref: main - updateStrategy: resource-merge -upstreamLock: - type: git - git: - repo: https://github.com/GoogleCloudPlatform/blueprints - directory: /catalog/networking/network/vpc - ref: main - commit: 1a24e4cdae0b16883657888b8165f282469dcd79 + config.kubernetes.io/local-config: "true" info: - description: A Virtual Private Cloud (VPC) + description: simple krm blueprint pipeline: mutators: - image: gcr.io/kpt-fn/apply-setters:v0.1 diff --git a/infra/blueprint-test/examples/simple_krm_blueprint/README.md b/infra/blueprint-test/examples/simple_krm_blueprint/README.md deleted file mode 100644 index c775a744fad..00000000000 --- a/infra/blueprint-test/examples/simple_krm_blueprint/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Virtual Private Cloud blueprint - -A Virtual Private Cloud (VPC) - -## Setters - -``` -Setter Usages -namespace 1 -network-name 1 -project-id 3 -``` - -## Sub-packages - -This package has no sub-packages. - -## Resources - -``` -File APIVersion Kind Name Namespace -services.yaml serviceusage.cnrm.cloud.google.com/v1beta1 Service project-id-compute projects -vpc.yaml compute.cnrm.cloud.google.com/v1beta1 ComputeNetwork network-name networking -``` - -## Resource References - -- [ComputeNetwork](https://cloud.google.com/config-connector/docs/reference/resource-docs/compute/computenetwork) -- [Service](https://cloud.google.com/config-connector/docs/reference/resource-docs/serviceusage/service) - -## Usage - -1. Clone the package: - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/blueprints.git/catalog/networking/network/vpc@${VERSION} - ``` - Replace `${VERSION}` with the desired repo branch or tag - (for example, `main`). - -1. Move into the local package: - ``` - cd "./vpc/" - ``` - -1. Edit the function config file(s): - - setters.yaml - -1. Execute the function pipeline - ``` - kpt fn render - ``` - -1. Initialize the resource inventory - ``` - kpt live init --namespace ${NAMESPACE}" - ``` - Replace `${NAMESPACE}` with the namespace in which to manage - the inventory ResourceGroup (for example, `config-control`). - -1. Apply the package resources to your cluster - ``` - kpt live apply - ``` - -1. Wait for the resources to be ready - ``` - kpt live status --output table --poll-until current - ``` - diff --git a/infra/blueprint-test/examples/simple_krm_blueprint/vpc.yaml b/infra/blueprint-test/examples/simple_krm_blueprint/namespace.yaml similarity index 52% rename from infra/blueprint-test/examples/simple_krm_blueprint/vpc.yaml rename to infra/blueprint-test/examples/simple_krm_blueprint/namespace.yaml index 4e3484f362c..7b6bec0cbc9 100644 --- a/infra/blueprint-test/examples/simple_krm_blueprint/vpc.yaml +++ b/infra/blueprint-test/examples/simple_krm_blueprint/namespace.yaml @@ -1,4 +1,4 @@ -# Copyright 2021 Google LLC +# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,15 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeNetwork -metadata: # kpt-merge: networking/network-name - name: network-name # kpt-set: ${network-name} - namespace: networking # kpt-set: ${namespace} - annotations: - cnrm.cloud.google.com/blueprint: cnrm/landing-zone:networking/v0.3.0 - cnrm.cloud.google.com/project-id: project-id # kpt-set: ${project-id} -spec: - autoCreateSubnetworks: false - deleteDefaultRoutesOnCreate: false - routingMode: GLOBAL +apiVersion: v1 +kind: Namespace +metadata: + name: default-namespace # kpt-set: ${namespace} diff --git a/infra/blueprint-test/examples/simple_krm_blueprint/setters.yaml b/infra/blueprint-test/examples/simple_krm_blueprint/setters.yaml index 5e3e61466c9..9260aed2e9f 100644 --- a/infra/blueprint-test/examples/simple_krm_blueprint/setters.yaml +++ b/infra/blueprint-test/examples/simple_krm_blueprint/setters.yaml @@ -1,4 +1,4 @@ -# Copyright 2021 Google LLC +# Copyright 2021-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ apiVersion: v1 kind: ConfigMap metadata: # kpt-merge: /setters name: setters + annotations: + config.kubernetes.io/local-config: "true" data: - namespace: config-control - network-name: custom-network - project-id: project-id + namespace: simple-krm-blueprint diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index ccdea00e744..23c622df9fe 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -1,13 +1,13 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test -go 1.18 +go 1.20 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.41.23 + github.com/gruntwork-io/terratest v0.42.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/otiai10/copy v1.11.0 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.3 github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.10.0 @@ -16,28 +16,35 @@ require ( require ( cloud.google.com/go v0.110.2 // indirect - cloud.google.com/go/compute v1.19.2 // indirect + cloud.google.com/go/compute v1.19.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.0.1 // indirect cloud.google.com/go/storage v1.30.1 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/aws/aws-sdk-go v1.44.260 // indirect + github.com/aws/aws-sdk-go v1.44.271 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/boombuler/barcode v1.0.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/emicklei/go-restful/v3 v3.10.2 // indirect github.com/go-errors/errors v1.4.2 // indirect + github.com/go-logr/logr v1.2.4 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-sql-driver/mysql v1.7.1 // 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.6.9 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/s2a-go v0.1.3 // indirect + github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.8.0 // indirect + github.com/googleapis/gax-go/v2 v2.9.1 // indirect + github.com/gruntwork-io/go-commons v0.16.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.1 // indirect @@ -46,35 +53,59 @@ require ( github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl/v2 v2.16.2 // indirect github.com/hashicorp/terraform-json v0.16.0 // indirect + github.com/imdario/mergo v0.3.15 // indirect github.com/jinzhu/copier v0.3.5 // 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 github.com/klauspost/compress v1.16.5 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-zglob v0.0.4 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/moby/spdystream v0.2.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pquerna/otp v1.4.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tmccombs/hcl2json v0.5.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect + github.com/urfave/cli/v2 v2.25.3 // indirect github.com/xlab/treeprint v1.2.0 // indirect - github.com/zclconf/go-cty v1.13.1 // indirect + github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + github.com/zclconf/go-cty v1.13.2 // indirect go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.9.0 // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sys v0.8.0 // indirect + golang.org/x/term v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect + golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.122.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/genproto v0.0.0-20230526203410-71b5a4ffd15e // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e // indirect google.golang.org/grpc v1.55.0 // indirect google.golang.org/protobuf v1.30.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/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect + k8s.io/api v0.27.2 // indirect + k8s.io/apimachinery v0.27.2 // indirect + k8s.io/client-go v0.27.2 // indirect + k8s.io/klog/v2 v2.100.1 // indirect + k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 // indirect + k8s.io/utils v0.0.0-20230505201702-9f6742963106 // 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/yaml v1.3.0 // indirect ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 3aba7dd3c6e..d1326133fd4 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -68,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.19.2 h1:GbJtPo8OKVHbVep8jvM57KidbYHxeE68LOVqouNLrDY= -cloud.google.com/go/compute v1.19.2/go.mod h1:5f5a+iC1IriXYauaQ0EyQmEAEq9CGRnV5xJSQSlTV08= +cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -115,7 +115,6 @@ cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= @@ -196,11 +195,15 @@ github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.260 h1:78IJkDpDPXvLXvIkNAKDP/i3z8Vj+3sTAtQYw/v/2o8= -github.com/aws/aws-sdk-go v1.44.260/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.271 h1:aa+Nu2JcnFmW1TLIz/67SS7KPq1I1Adl4RmExSMjGVo= +github.com/aws/aws-sdk-go v1.44.271/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -219,11 +222,15 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +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.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= +github.com/emicklei/go-restful/v3 v3.10.2/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= @@ -242,13 +249,21 @@ github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3Bop github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +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-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= 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 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -304,6 +319,7 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/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= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= @@ -325,10 +341,11 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= 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= @@ -346,12 +363,15 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.9.1 h1:DpTpJqzZ3NvX9zqjhIuI1oVzYZMvboZe+3LoeEIJjHM= +github.com/googleapis/gax-go/v2 v2.9.1/go.mod h1:4FG3gMrVZlyMp5itSYKMU9z/lBE7+SbnUOvzH2HqbEY= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gruntwork-io/terratest v0.41.23 h1:GqwK0Nh6IQze3hka6iwuOd1V3wX7/y/85W25d1zpAnE= -github.com/gruntwork-io/terratest v0.41.23/go.mod h1:O6gajNBjO1wvc7Wl9WtbO+ORcdnhAV2GQiBE71ycwIk= +github.com/gruntwork-io/go-commons v0.16.2 h1:EmkS8344ggtQopFq6YJ5Nh3ohBF03AB7cxrgDiJ7C3Q= +github.com/gruntwork-io/go-commons v0.16.2/go.mod h1:/nnLMhO4HpItt43K+8ACM66g67iMy3oo2nnwq59n3wg= +github.com/gruntwork-io/terratest v0.42.0 h1:j3HKRzZ7p4f1iweP2stDSYz+am4+JIbraTehiEWc77s= +github.com/gruntwork-io/terratest v0.42.0/go.mod h1:O6gajNBjO1wvc7Wl9WtbO+ORcdnhAV2GQiBE71ycwIk= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -373,6 +393,8 @@ github.com/hashicorp/terraform-json v0.16.0 h1:UKkeWRWb23do5LNAFlh/K3N0ymn1qTOO8 github.com/hashicorp/terraform-json v0.16.0/go.mod h1:v0Ufk9jJnk6tcIZvScHvetlKfiNTC+WS21mnXIlc0B0= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -381,16 +403,19 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGw github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= 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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= 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 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -405,24 +430,41 @@ github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= +github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= 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/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg= +github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +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.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -436,8 +478,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -453,19 +495,23 @@ github.com/tmccombs/hcl2json v0.5.0/go.mod h1:B0ZpBthAKbQur6yZRKrtaqDmYLCvgnwHOB github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli/v2 v2.25.3 h1:VJkt6wvEBOoSjPFQvOkv6iWIrsJyCrKGtCtxXWwmGeY= +github.com/urfave/cli/v2 v2.25.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= 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= -github.com/zclconf/go-cty v1.13.1 h1:0a6bRwuiSHtAmqCqNOE+c2oHgepv0ctoxU4FUe43kwc= -github.com/zclconf/go-cty v1.13.1/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= +github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= +github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -615,7 +661,7 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ 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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= 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= @@ -685,6 +731,7 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn 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.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= 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= @@ -701,6 +748,8 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -738,6 +787,7 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= 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= @@ -746,6 +796,7 @@ golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -753,6 +804,7 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= 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= @@ -810,8 +862,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.124.0 h1:dP6Ef1VgOGqQ8eiv4GiY8RhmeyqzovcXBYPDUYG8Syo= +google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= 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= @@ -922,8 +974,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -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-20230526203410-71b5a4ffd15e h1:Ao9GzfUMPH3zjVfzXG5rlWlk+Q8MXWKwWpwVQE1MXfw= +google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e h1:AZX1ra8YbFMSb7+1pI8S9v4rrgRR7jU1FmuFSSjTVcQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e h1:NumxXLPfHSndr3wBBdeKiVHjGVFzi9RX2HwwQke94iY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= 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= @@ -986,6 +1042,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1002,12 +1060,26 @@ 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/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/api v0.27.2 h1:+H17AJpUMvl+clT+BPnKf0E3ksMAzoBBg7CntpSuADo= +k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4= +k8s.io/apimachinery v0.27.2 h1:vBjGaKKieaIreI+oQwELalVG4d8f3YAMNpWLzDXkxeg= +k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= +k8s.io/client-go v0.27.2 h1:vDLSeuYvCHKeoQRhCXjxXO45nHVv2Ip4Fe0MfioMrhE= +k8s.io/client-go v0.27.2/go.mod h1:tY0gVmUsHrAmjzHX9zs7eCjxcBsf8IiNe7KQ52biTcQ= +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-20230525220651-2546d827e515 h1:OmK1d0WrkD3IPfkskvroRykOulHVHf0s0ZIFRjyt+UI= +k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ= +k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= +k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/kustomize/kyaml v0.14.2 h1:9WSwztbzwGszG1bZTziQUmVMrJccnyrLb5ZMKpJGvXw= sigs.k8s.io/kustomize/kyaml v0.14.2/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= +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/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/infra/blueprint-test/pkg/discovery/config_test.go b/infra/blueprint-test/pkg/discovery/config_test.go index b7301439c0d..2ff73e42f2d 100644 --- a/infra/blueprint-test/pkg/discovery/config_test.go +++ b/infra/blueprint-test/pkg/discovery/config_test.go @@ -1,7 +1,6 @@ package discovery import ( - "io/ioutil" "os" "path" "testing" @@ -66,10 +65,10 @@ spec: func setupTestCfg(t *testing.T, data string) string { t.Helper() assert := assert.New(t) - baseDir, err := ioutil.TempDir("", "") + baseDir, err := os.MkdirTemp("", "") assert.NoError(err) fPath := path.Join(baseDir, "test.yaml") - err = ioutil.WriteFile(fPath, []byte(data), 0644) + err = os.WriteFile(fPath, []byte(data), 0644) assert.NoError(err) return fPath } diff --git a/infra/blueprint-test/pkg/discovery/discover.go b/infra/blueprint-test/pkg/discovery/discover.go index 769ef7c42ee..bb6995c0f0e 100644 --- a/infra/blueprint-test/pkg/discovery/discover.go +++ b/infra/blueprint-test/pkg/discovery/discover.go @@ -19,7 +19,6 @@ package discovery import ( "fmt" - "io/ioutil" "os" "path" @@ -111,7 +110,7 @@ func GetKnownDirInParents(dir string, max int) (string, error) { // findDirs returns a map of directories in path func findDirs(path string) (map[string]bool, error) { dirs := make(map[string]bool) - files, err := ioutil.ReadDir(path) + files, err := os.ReadDir(path) if err != nil { return dirs, err } diff --git a/infra/blueprint-test/pkg/gcloud/gcloud_test.go b/infra/blueprint-test/pkg/gcloud/gcloud_test.go index ac61dd2d6f7..e40d7317fdb 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud_test.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud_test.go @@ -18,7 +18,6 @@ package gcloud import ( - "io/ioutil" "os" "testing" @@ -48,7 +47,7 @@ func TestActivateCredsAndEnvVars(t *testing.T) { assert.Equal(os.Getenv("GOOGLE_CREDENTIALS"), creds) pathEnvVars := []string{"CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE", "GOOGLE_APPLICATION_CREDENTIALS"} for _, v := range pathEnvVars { - c, err := ioutil.ReadFile(os.Getenv(v)) + c, err := os.ReadFile(os.Getenv(v)) assert.NoError(err) assert.Equal(string(c), creds) } diff --git a/infra/blueprint-test/pkg/golden/golden.go b/infra/blueprint-test/pkg/golden/golden.go index 2d7a93a8396..59f2bf11461 100644 --- a/infra/blueprint-test/pkg/golden/golden.go +++ b/infra/blueprint-test/pkg/golden/golden.go @@ -19,7 +19,6 @@ package golden import ( "fmt" - "io/ioutil" "os" "path" "strings" @@ -119,7 +118,7 @@ func (g *GoldenFile) update(data string) { // apply sanitizers on data data = g.ApplySanitizers(data) - err = ioutil.WriteFile(fp, []byte(data), gfPerms) + err = os.WriteFile(fp, []byte(data), gfPerms) if err != nil { g.t.Fatalf("error updating result: %v", err) } diff --git a/infra/blueprint-test/pkg/golden/golden_test.go b/infra/blueprint-test/pkg/golden/golden_test.go index 17fe8064ccb..9529194f379 100644 --- a/infra/blueprint-test/pkg/golden/golden_test.go +++ b/infra/blueprint-test/pkg/golden/golden_test.go @@ -18,7 +18,6 @@ package golden import ( "fmt" - "io/ioutil" "os" "strings" "testing" @@ -62,7 +61,7 @@ func TestUpdate(t *testing.T) { if !tt.skipUpdate { defer os.Remove(got.GetName()) } - j, err := ioutil.ReadFile(got.GetName()) + j, err := os.ReadFile(got.GetName()) assert.NoError(err) assert.Equal(tt.want, string(j)) diff --git a/infra/blueprint-test/pkg/tft/terraform_test.go b/infra/blueprint-test/pkg/tft/terraform_test.go index 1f5fa41f092..150123e1572 100644 --- a/infra/blueprint-test/pkg/tft/terraform_test.go +++ b/infra/blueprint-test/pkg/tft/terraform_test.go @@ -17,7 +17,6 @@ package tft import ( - "io/ioutil" "os" "path" "testing" @@ -81,11 +80,11 @@ func getTFOutputMap(t *testing.T, tf string) map[string]interface{} { assert := assert.New(t) // setup tf file - tfDir, err := ioutil.TempDir("", "") + tfDir, err := os.MkdirTemp("", "") assert.NoError(err) defer os.RemoveAll(tfDir) tfFilePath := path.Join(tfDir, "test.tf") - err = ioutil.WriteFile(tfFilePath, []byte(tf), 0644) + err = os.WriteFile(tfFilePath, []byte(tf), 0644) assert.NoError(err) // apply tf and get outputs diff --git a/infra/blueprint-test/pkg/utils/files.go b/infra/blueprint-test/pkg/utils/files.go index 4191ccf03e2..8a549ef33c3 100644 --- a/infra/blueprint-test/pkg/utils/files.go +++ b/infra/blueprint-test/pkg/utils/files.go @@ -1,12 +1,10 @@ package utils -import ( - "io/ioutil" -) +import "os" // WriteTmpFile writes data to a temp file and returns the path. func WriteTmpFile(data string) (string, error) { - f, err := ioutil.TempFile("", "*") + f, err := os.CreateTemp("", "*") if err != nil { return "", err } @@ -20,7 +18,7 @@ func WriteTmpFile(data string) (string, error) { // WriteTmpFileWithExtension writes data to a temp file with given extension and returns the path. func WriteTmpFileWithExtension(data string, extension string) (string, error) { - f, err := ioutil.TempFile("", "*."+extension) + f, err := os.CreateTemp("", "*."+extension) if err != nil { return "", err } diff --git a/infra/blueprint-test/pkg/utils/jsonresult.go b/infra/blueprint-test/pkg/utils/jsonresult.go index 82d9cfee05a..dc699e12568 100644 --- a/infra/blueprint-test/pkg/utils/jsonresult.go +++ b/infra/blueprint-test/pkg/utils/jsonresult.go @@ -17,7 +17,7 @@ package utils import ( - "io/ioutil" + "os" "github.com/mitchellh/go-testing-interface" "github.com/tidwall/gjson" @@ -26,7 +26,7 @@ import ( // LoadJSON reads and parses a json file into a gjson.Result. // It fails test if not unable to parse. func LoadJSON(t testing.TB, path string) gjson.Result { - j, err := ioutil.ReadFile(path) + j, err := os.ReadFile(path) if err != nil { t.Fatalf("Error reading json file %s", path) } diff --git a/infra/blueprint-test/pkg/utils/rand.go b/infra/blueprint-test/pkg/utils/rand.go index 8743ce2b6f6..322b3679ae5 100644 --- a/infra/blueprint-test/pkg/utils/rand.go +++ b/infra/blueprint-test/pkg/utils/rand.go @@ -24,7 +24,7 @@ import ( // RandStr generates rand lowercase strings of length l func RandStr(l int) string { charSet := "abcdefghijklmnopqrstuvwxyz" - rand.Seed(time.Now().UnixNano()) + rand.New(rand.NewSource(time.Now().UnixNano())) lenCharSet := len(charSet) bytes := make([]byte, l) for i := range bytes { diff --git a/infra/blueprint-test/test/README.md b/infra/blueprint-test/test/README.md index a35d6d842d7..a0a85f1dba5 100644 --- a/infra/blueprint-test/test/README.md +++ b/infra/blueprint-test/test/README.md @@ -26,7 +26,3 @@ Cleanup test project: ```bash terraform -chdir=setup/simple_tf_module destroy ``` - -Note: - -* `krm_simple_blueprint_test.go` will need a GKE cluster with [config-connector](https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall) diff --git a/infra/blueprint-test/test/krm_simple_blueprint_test.go b/infra/blueprint-test/test/krm_simple_blueprint_test.go index ad855f552a3..f9672b14391 100644 --- a/infra/blueprint-test/test/krm_simple_blueprint_test.go +++ b/infra/blueprint-test/test/krm_simple_blueprint_test.go @@ -1,26 +1,32 @@ package test import ( - "fmt" "testing" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/krmt" - "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/gruntwork-io/terratest/modules/k8s" "github.com/stretchr/testify/assert" ) func TestKRMSimpleBlueprint(t *testing.T) { + tfBlueprint := tft.NewTFBlueprintTest(t, + tft.WithTFDir("setup/simple_tf_module"), + ) + gcloud.Runf(t, "container clusters get-credentials %s --region=%s --project %s -q", tfBlueprint.GetStringOutput("cluster_name"), tfBlueprint.GetStringOutput("cluster_region"), tfBlueprint.GetStringOutput("project_id")) + networkBlueprint := krmt.NewKRMBlueprintTest(t, krmt.WithDir("../examples/simple_krm_blueprint"), - krmt.WithUpdateCommit("2b93fd6d4f1a3eabdf4dfce05b93ccb1f9f671c5"), + krmt.WithUpdatePkgs(false), ) networkBlueprint.DefineVerify( func(assert *assert.Assertions) { networkBlueprint.DefaultVerify(assert) - op := gcloud.Run(t, fmt.Sprintf("compute networks describe custom-network --project %s", utils.ValFromEnv(t, "PROJECT_ID"))) - assert.Equal("GLOBAL", op.Get("routingConfig.routingMode").String(), "should be GLOBAL") - assert.Equal("false", op.Get("autoCreateSubnetworks").String(), "autoCreateSubnetworks should not be enabled") + k8sOpts := k8s.KubectlOptions{} + op, err := k8s.RunKubectlAndGetOutputE(t, &k8sOpts, "get", "namespaces", "simple-krm-blueprint", "--no-headers", "-o", "custom-columns=:metadata.name") + assert.NoError(err) + assert.Equal("simple-krm-blueprint", op) }) networkBlueprint.Test() } diff --git a/infra/blueprint-test/test/setup/simple_tf_module/main.tf b/infra/blueprint-test/test/setup/simple_tf_module/main.tf index 950021134fa..0f46477fab4 100644 --- a/infra/blueprint-test/test/setup/simple_tf_module/main.tf +++ b/infra/blueprint-test/test/setup/simple_tf_module/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2021 Google LLC + * Copyright 2021-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,13 +20,14 @@ locals { "roles/compute.securityAdmin", "roles/iam.serviceAccountUser", "roles/vpcaccess.admin", - "roles/serviceusage.serviceUsageAdmin" + "roles/serviceusage.serviceUsageAdmin", + "roles/container.admin" ] } module "project" { source = "terraform-google-modules/project-factory/google" - version = "~> 11.0" + version = "~> 14.0" name = "ci-bptest" random_project_id = "true" @@ -38,7 +39,8 @@ module "project" { "cloudresourcemanager.googleapis.com", "compute.googleapis.com", "serviceusage.googleapis.com", - "vpcaccess.googleapis.com" + "vpcaccess.googleapis.com", + "container.googleapis.com" ] } @@ -59,3 +61,9 @@ resource "google_project_iam_member" "roles" { resource "google_service_account_key" "key" { service_account_id = google_service_account.sa.id } + +module "kubernetes-engine_example_simple_autopilot_public" { + source = "terraform-google-modules/kubernetes-engine/google//examples/simple_autopilot_public" + version = "~> 26.0" + project_id = module.project.project_id +} diff --git a/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf b/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf index 718ce253e3e..00e71caeecf 100644 --- a/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf +++ b/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2021 Google LLC + * Copyright 2021-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,3 +22,11 @@ output "sa_key" { value = google_service_account_key.key.private_key sensitive = true } + +output "cluster_name" { + value = module.kubernetes-engine_example_simple_autopilot_public.cluster_name +} + +output "cluster_region" { + value = module.kubernetes-engine_example_simple_autopilot_public.region +} From a4ab5d7ab7883a83199b1f7e6d427959fe706f35 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 May 2023 20:15:47 +0200 Subject: [PATCH 0413/1371] fix(deps): update fbf go modules (#1622) --- infra/utils/fbf/go.mod | 12 ++++++------ infra/utils/fbf/go.sum | 28 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index bd97477a3ea..cac7e628ca8 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -5,12 +5,12 @@ go 1.18 require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 - github.com/stretchr/testify v1.8.3 - google.golang.org/api v0.124.0 + github.com/stretchr/testify v1.8.4 + google.golang.org/api v0.125.0 ) require ( - cloud.google.com/go/compute v1.19.0 // indirect + cloud.google.com/go/compute v1.19.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect @@ -19,21 +19,21 @@ require ( github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.8.0 // indirect + github.com/googleapis/gax-go/v2 v2.10.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.1.0 // indirect + golang.org/x/crypto v0.9.0 // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sys v0.8.0 // indirect golang.org/x/term v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/grpc v1.55.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 4cd86c8bc24..e3cf2376747 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,11 +1,9 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= -cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= @@ -67,8 +65,8 @@ 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/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.10.0 h1:ebSgKfMxynOdxw8QQuFOKMgomqeLGPqNLQox2bo42zg= +github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= @@ -97,8 +95,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 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.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +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/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= @@ -107,8 +105,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -176,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -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.125.0 h1:7xGvEY4fyWbhWMHf3R2/4w7L4fXyfpRGE9g6lp8+DCk= +google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -186,8 +184,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -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-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 217607b9e5b2b293afe92351d714b99fa8e31445 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 1 Jun 2023 09:34:28 -0500 Subject: [PATCH 0414/1371] chore: enable periodics on all jss repos (#1630) --- .../test-org/ci-triggers/triggers.tf | 2 +- infra/terraform/test-org/org/locals.tf | 127 ++++++++++-------- 2 files changed, 70 insertions(+), 59 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 64c903d718c..26449d5e07f 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -50,7 +50,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { resource "google_cloudbuild_trigger" "periodic_int_trigger" { provider = google-beta project = local.project_id - name = "${each.key}-periodic-int-trigger" + name = substr("${each.key}-periodic-int-trigger", 0, 64) description = "Periodic integration tests on pull request for ${each.key}" for_each = { for k, v in local.repo_folder : k => v if contains(local.periodic_repos, k) } github { diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 5134fc3d5fe..9a6f2c07619 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -114,11 +114,12 @@ locals { topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { - name = "terraform-ecommerce-microservices-on-gke" - short_name = "ecommerce-microservices" - org = "GoogleCloudPlatform" - description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." - groups = ["dee-platform-ops", local.jss_common_group] + name = "terraform-ecommerce-microservices-on-gke" + short_name = "ecommerce-microservices" + org = "GoogleCloudPlatform" + description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." + groups = ["dee-platform-ops", local.jss_common_group] + enable_periodic = true }, { name = "terraform-example-java-dynamic-point-of-sale" @@ -130,6 +131,7 @@ locals { lint_env = { "EXCLUDE_HEADER_CHECK" = "\\./infra/sql-schema" } + enable_periodic = true }, { name = "terraform-example-foundation" @@ -146,12 +148,13 @@ locals { } }, { - name = "terraform-google-log-analysis" - org = "GoogleCloudPlatform" - description = "Stores and analyzes log data" - owners = ["ryotat7"] - topics = local.common_topics.da - groups = [local.jss_common_group] + name = "terraform-google-log-analysis" + org = "GoogleCloudPlatform" + description = "Stores and analyzes log data" + owners = ["ryotat7"] + topics = local.common_topics.da + groups = [local.jss_common_group] + enable_periodic = true }, { name = "terraform-google-three-tier-web-app" @@ -179,12 +182,13 @@ locals { groups = [local.jss_common_group] }, { - name = "terraform-google-media-cdn-vod" - org = "GoogleCloudPlatform" - description = "Deploys Media CDN video-on-demand" - owners = ["roddzurcher"] - topics = local.common_topics.ops - groups = [local.jss_common_group] + name = "terraform-google-media-cdn-vod" + org = "GoogleCloudPlatform" + description = "Deploys Media CDN video-on-demand" + owners = ["roddzurcher"] + topics = local.common_topics.ops + groups = [local.jss_common_group] + enable_periodic = true }, { name = "terraform-example-foundation-app" @@ -557,21 +561,23 @@ locals { topics = "cloudfunctions,functions,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" }, { - name = "terraform-dynamic-python-webapp" - short_name = "dynamic-python-webapp" - org = "GoogleCloudPlatform" - description = "Deploy a dynamic python webapp" - owners = ["glasnt", "donmccasland"] - homepage_url = "avocano.dev" - groups = [local.jss_common_group, "torus-dpe"] + name = "terraform-dynamic-python-webapp" + short_name = "dynamic-python-webapp" + org = "GoogleCloudPlatform" + description = "Deploy a dynamic python webapp" + owners = ["glasnt", "donmccasland"] + homepage_url = "avocano.dev" + groups = [local.jss_common_group, "torus-dpe"] + enable_periodic = true }, { - name = "terraform-example-deploy-java-multizone" - short_name = "deploy-java-multizone" - org = "GoogleCloudPlatform" - description = "Deploy a multizone Java application" - owners = ["donmccasland"] - groups = [local.jss_common_group] + name = "terraform-example-deploy-java-multizone" + short_name = "deploy-java-multizone" + org = "GoogleCloudPlatform" + description = "Deploy a multizone Java application" + owners = ["donmccasland"] + groups = [local.jss_common_group] + enable_periodic = true }, { name = "terraform-google-itar-architectures" @@ -587,12 +593,13 @@ locals { owners = ["donmccasland"] }, { - name = "terraform-google-analytics-lakehouse" - org = "GoogleCloudPlatform" - description = "Deploys a Lakehouse Architecture Solution" - owners = ["stevewalker-de"] - topics = local.common_topics.da - groups = [local.jss_common_group] + name = "terraform-google-analytics-lakehouse" + org = "GoogleCloudPlatform" + description = "Deploys a Lakehouse Architecture Solution" + owners = ["stevewalker-de"] + topics = local.common_topics.da + groups = [local.jss_common_group] + enable_periodic = true }, { name = "terraform-google-alloy-db" @@ -609,12 +616,13 @@ locals { topics = join(",", [local.common_topics.security, local.common_topics.net]) }, { - name = "terraform-example-deploy-java-gke" - short_name = "deploy-java-gke" - org = "GoogleCloudPlatform" - description = "Deploy a Legacy Java App GKE" - owners = ["donmccasland"] - groups = [local.jss_common_group] + name = "terraform-example-deploy-java-gke" + short_name = "deploy-java-gke" + org = "GoogleCloudPlatform" + description = "Deploy a Legacy Java App GKE" + owners = ["donmccasland"] + groups = [local.jss_common_group] + enable_periodic = true }, { name = "terraform-google-crmint" @@ -624,26 +632,29 @@ locals { topics = join(",", [local.common_topics.da, local.common_topics.e2e], ["marketing"]) }, { - name = "terraform-large-data-sharing-java-webapp" - short_name = "large-data-sharing-java-app" - org = "GoogleCloudPlatform" - description = "Deploys a large data sharing Java web app" - groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] + name = "terraform-large-data-sharing-java-webapp" + short_name = "large-data-sharing-java-app" + org = "GoogleCloudPlatform" + description = "Deploys a large data sharing Java web app" + groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] + enable_periodic = true }, { - name = "terraform-large-data-sharing-golang-webapp" - short_name = "large-data-sharing-go-app" - org = "GoogleCloudPlatform" - description = "Deploys a large data sharing Golang web app" - groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] + name = "terraform-large-data-sharing-golang-webapp" + short_name = "large-data-sharing-go-app" + org = "GoogleCloudPlatform" + description = "Deploys a large data sharing Golang web app" + groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] + enable_periodic = true }, { - name = "terraform-ml-image-annotation-gcf" - short_name = "ml-image-annotation-gcf" - org = "GoogleCloudPlatform" - description = "Deploys an app for ml image annotation using gcf" - owners = ["xsxm", "ivanmkc", "balajismaniam", "donmccasland"] - groups = ["dee-data-ai", local.jss_common_group] + name = "terraform-ml-image-annotation-gcf" + short_name = "ml-image-annotation-gcf" + org = "GoogleCloudPlatform" + description = "Deploys an app for ml image annotation using gcf" + owners = ["xsxm", "ivanmkc", "balajismaniam", "donmccasland"] + groups = ["dee-data-ai", local.jss_common_group] + enable_periodic = true }, { name = "terraform-google-out-of-band-security" From 27717b6ac8dfd983a2b93dcede3cbc4594a7f696 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 1 Jun 2023 10:06:27 -0700 Subject: [PATCH 0415/1371] chore: improve test-cli tests (#1624) --- .github/workflows/test-cli.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index c94247386eb..c676d7700e8 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -6,13 +6,13 @@ on: - 'master' paths: - 'cli/**' - - '.github/workflows/**' + - '.github/workflows/test-cli.yml' pull_request: branches: - 'master' paths: - 'cli/**' - - '.github/workflows/**' + - '.github/workflows/test-cli.yml' concurrency: group: '${{github.workflow}}-${{ github.head_ref || github.ref }}' @@ -20,7 +20,7 @@ concurrency: jobs: unit: - name: CLI unit tests + name: ${{ matrix.operating-system }} unit tests runs-on: ${{ matrix.operating-system }} defaults: run: @@ -34,6 +34,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 with: - go-version: '~1.18' + go-version-file: cli/go.mod + cache-dependency-path: cli/go.sum - run: |- go test ./... -v From ea87ae070fdf672e1d9612f919cc75e078552ed7 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Thu, 1 Jun 2023 13:12:28 -0400 Subject: [PATCH 0416/1371] feat: Ignore assets/ in int_triggers (#1609) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/ci-triggers/triggers.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 26449d5e07f..64e0814da78 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -43,7 +43,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { ) filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", ".gitignore", ".github/**", "**/metadata.yaml"] + ignored_files = ["**/*.md", ".gitignore", ".github/**", "**/metadata.yaml", "assets/**", "infra/assets/**"] } # pull_request triggers do not support run trigger, so we have a shadow periodic trigger From f16c20404592c3f61eb2499e68e5ade7d0f08ad6 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 1 Jun 2023 10:23:50 -0700 Subject: [PATCH 0417/1371] chore: fix lint.yaml.tftpl (#1616) --- infra/terraform/modules/workflow_files/lint.yaml.tftpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/modules/workflow_files/lint.yaml.tftpl b/infra/terraform/modules/workflow_files/lint.yaml.tftpl index 7105dcb34fb..beb48263f75 100644 --- a/infra/terraform/modules/workflow_files/lint.yaml.tftpl +++ b/infra/terraform/modules/workflow_files/lint.yaml.tftpl @@ -35,7 +35,7 @@ jobs: - id: variables run: | MAKEFILE=$(find . -name Makefile -print -quit) - if [ ! -z "$MAKEFILE" ]; then + if [ -z "$MAKEFILE" ]; then echo dev-tools=gcr.io/cloud-foundation-cicd/cft/developer-tools:1 >> "$GITHUB_OUTPUT" else VERSION=$(grep "DOCKER_TAG_VERSION_DEVELOPER_TOOLS := " $MAKEFILE | cut -d\ -f3) From 6074adf39fd744afe8c53a274b7a1415bb28b30f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 1 Jun 2023 12:22:31 -0700 Subject: [PATCH 0418/1371] chore: update renovate for GO (#1635) --- infra/terraform/test-org/github/resources/renovate.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index bccd0c174a3..bb2b4788571 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -16,6 +16,9 @@ "stabilityDays":0 }, "separateMajorMinor":false, + "constraints": { + "go": "1.18" + }, "packageRules": [ { "matchPaths": ["examples/**", "test/**", ".github/**"], @@ -35,7 +38,8 @@ "postUpdateOptions": ["gomodTidy"] }, { - "matchPackageNames": ["go"], + "matchDatasources": ["golang-version"], + "rangeStrategy": "bump", "allowedVersions": "<1.19.0", "postUpdateOptions": ["gomodTidy"] }, From feefe1c05c54079c8db88569343b58c2fc9d80f6 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 1 Jun 2023 15:34:33 -0500 Subject: [PATCH 0419/1371] chore: skip favicon files in lint (#1632) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- .../developer-tools/build/scripts/task_helper_functions.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 87a4a23e151..44f299cafec 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 1b5ce1a4684..eed766773bb 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -74,6 +74,7 @@ find_files() { ".*/.*\.jpg" ".*/.*\.jpeg" ".*/.*\.svg" + ".*/.*\.ico" "\./autogen" "\./test/fixtures/all_examples" "\./test/fixtures/shared" @@ -232,7 +233,7 @@ check_whitespace() { local rc echo "Checking for trailing whitespace" find_files . -print \ - | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip)$' \ + | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip|ico)$' \ | compat_xargs grep -H -n '[[:blank:]]$' rc=$? if [[ ${rc} -eq 0 ]]; then @@ -243,7 +244,7 @@ check_whitespace() { fi echo "Checking for missing newline at end of file" find_files . -print \ - | grep -v -E '\.(png|gz|tfvars|mp4|zip)$' \ + | grep -v -E '\.(png|gz|tfvars|mp4|zip|ico)$' \ | compat_xargs check_eof_newline return $((rc+$?)) } From 8c645d10bffca31f3e2e842beff927aa95f0fa4f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 1 Jun 2023 17:05:21 -0700 Subject: [PATCH 0420/1371] chore: improve go-module-swapper tests (#1627) --- .github/workflows/go-module-swapper.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index de3092246dc..ba206713740 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -14,7 +14,7 @@ concurrency: jobs: unit: - name: Module Swapper Unit Tests + name: ${{ matrix.operating-system }} unit tests runs-on: ${{ matrix.operating-system }} defaults: run: @@ -28,6 +28,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 with: - go-version: '~1.18' + go-version-file: infra/build/developer-tools/build/scripts/module-swapper/go.mod + cache-dependency-path: infra/build/developer-tools/build/scripts/module-swapper/go.sum - run: |- go test ./... -v From 8b8ff2d8d92da8dbab26cbd2474f56e908cf5a86 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 1 Jun 2023 22:26:12 -0500 Subject: [PATCH 0421/1371] chore: setup CI for test framework (#1631) Co-authored-by: Andrew Peabody --- infra/blueprint-test/.gitignore | 2 +- infra/blueprint-test/README.md | 2 +- .../blueprint-test/build/int.cloudbuild.yaml | 31 +++++++++++++++++++ infra/blueprint-test/test/README.md | 6 ++-- .../test/krm_simple_blueprint_test.go | 4 +-- .../blueprint-test/test/retry_errors_test.go | 2 +- .../test/setup/{simple_tf_module => }/main.tf | 0 .../setup/{simple_tf_module => }/outputs.tf | 0 .../setup/{simple_tf_module => }/variables.tf | 0 .../terraform_simple_base_api_module_test.go | 8 ++--- .../test/terraform_simple_bpt_test.go | 10 +++--- infra/blueprint-test/test/tfvet_test.go | 4 +-- .../test-org/ci-triggers/triggers.tf | 24 ++++++++++++++ infra/terraform/test-org/org/folders.tf | 9 ++++++ infra/terraform/test-org/org/outputs.tf | 4 +++ 15 files changed, 87 insertions(+), 19 deletions(-) create mode 100644 infra/blueprint-test/build/int.cloudbuild.yaml rename infra/blueprint-test/test/setup/{simple_tf_module => }/main.tf (100%) rename infra/blueprint-test/test/setup/{simple_tf_module => }/outputs.tf (100%) rename infra/blueprint-test/test/setup/{simple_tf_module => }/variables.tf (100%) diff --git a/infra/blueprint-test/.gitignore b/infra/blueprint-test/.gitignore index 73816b2b97f..60c3f20a4c6 100644 --- a/infra/blueprint-test/.gitignore +++ b/infra/blueprint-test/.gitignore @@ -44,7 +44,7 @@ crash.log **/Gemfile.lock test/fixtures/shared/terraform.tfvars -test/setup/simple_tf_module/terraform.tfvars +test/setup/terraform.tfvars test/integration/gcloud/config.sh test/integration/tmp diff --git a/infra/blueprint-test/README.md b/infra/blueprint-test/README.md index b1c9bd14b8d..ee094922344 100644 --- a/infra/blueprint-test/README.md +++ b/infra/blueprint-test/README.md @@ -133,7 +133,7 @@ the environment variable with “TF_VAR”. E.g. to set the project_id variable (above), setting the value in a “TF_VAR_project_id” environment variable would automatically populate its value upon execution. This is illustrated the file -`test/setup/simple_tf_module/outputs.tf` where the `project_id` is being exported as an env variable. +`test/setup/outputs.tf` where the `project_id` is being exported as an env variable. ``` #### 3.1.1.2 Output variables for the test diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml new file mode 100644 index 00000000000..789d11f4628 --- /dev/null +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -0,0 +1,31 @@ +# Copyright 2023 Google LLC +# +# 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 +# +# https://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. + +steps: +- id: prepare + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && prepare_environment'] + dir: 'infra/blueprint-test' +- id: teardown + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && cleanup_environment'] + dir: 'infra/blueprint-test' +substitutions: + _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.12' +options: + env: + - 'TF_VAR_org_id=$_ORG_ID' + - 'TF_VAR_folder_id=$_FOLDER_ID' + - 'TF_VAR_billing_account=$_BILLING_ACCOUNT' diff --git a/infra/blueprint-test/test/README.md b/infra/blueprint-test/test/README.md index a0a85f1dba5..5ce946d32ec 100644 --- a/infra/blueprint-test/test/README.md +++ b/infra/blueprint-test/test/README.md @@ -11,8 +11,8 @@ export TF_VAR_billing_account="your_billing_account_id" Create test project: ```bash -terraform -chdir=setup/simple_tf_module init -terraform -chdir=setup/simple_tf_module apply +terraform -chdir=setup init +terraform -chdir=setup apply ``` Run tests: @@ -24,5 +24,5 @@ go test [-v] Cleanup test project: ```bash -terraform -chdir=setup/simple_tf_module destroy +terraform -chdir=setup destroy ``` diff --git a/infra/blueprint-test/test/krm_simple_blueprint_test.go b/infra/blueprint-test/test/krm_simple_blueprint_test.go index f9672b14391..99eec0c0974 100644 --- a/infra/blueprint-test/test/krm_simple_blueprint_test.go +++ b/infra/blueprint-test/test/krm_simple_blueprint_test.go @@ -12,9 +12,9 @@ import ( func TestKRMSimpleBlueprint(t *testing.T) { tfBlueprint := tft.NewTFBlueprintTest(t, - tft.WithTFDir("setup/simple_tf_module"), + tft.WithTFDir("setup"), ) - gcloud.Runf(t, "container clusters get-credentials %s --region=%s --project %s -q", tfBlueprint.GetStringOutput("cluster_name"), tfBlueprint.GetStringOutput("cluster_region"), tfBlueprint.GetStringOutput("project_id")) + gcloud.Runf(t, "container clusters get-credentials %s --region=%s --project %s -q", tfBlueprint.GetStringOutput("cluster_name"), tfBlueprint.GetStringOutput("cluster_region"), tfBlueprint.GetStringOutput("project_id")) networkBlueprint := krmt.NewKRMBlueprintTest(t, krmt.WithDir("../examples/simple_krm_blueprint"), diff --git a/infra/blueprint-test/test/retry_errors_test.go b/infra/blueprint-test/test/retry_errors_test.go index 98a4bd1d04c..5e695e39b4c 100644 --- a/infra/blueprint-test/test/retry_errors_test.go +++ b/infra/blueprint-test/test/retry_errors_test.go @@ -28,7 +28,7 @@ import ( func TestRetryErrors(t *testing.T) { bpt := tft.NewTFBlueprintTest(t, tft.WithTFDir("../examples/retry_errors"), - tft.WithSetupPath("./setup/simple_tf_module"), + tft.WithSetupPath("./setup"), tft.WithRetryableTerraformErrors(tft.CommonRetryableErrors, 2, 3*time.Second), ) bpt.DefineVerify(func(assert *assert.Assertions) {}) diff --git a/infra/blueprint-test/test/setup/simple_tf_module/main.tf b/infra/blueprint-test/test/setup/main.tf similarity index 100% rename from infra/blueprint-test/test/setup/simple_tf_module/main.tf rename to infra/blueprint-test/test/setup/main.tf diff --git a/infra/blueprint-test/test/setup/simple_tf_module/outputs.tf b/infra/blueprint-test/test/setup/outputs.tf similarity index 100% rename from infra/blueprint-test/test/setup/simple_tf_module/outputs.tf rename to infra/blueprint-test/test/setup/outputs.tf diff --git a/infra/blueprint-test/test/setup/simple_tf_module/variables.tf b/infra/blueprint-test/test/setup/variables.tf similarity index 100% rename from infra/blueprint-test/test/setup/simple_tf_module/variables.tf rename to infra/blueprint-test/test/setup/variables.tf diff --git a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go index 35d49d71e1f..b315047997f 100644 --- a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go +++ b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go @@ -18,8 +18,8 @@ package test import ( "fmt" - "testing" "os" + "testing" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" @@ -29,13 +29,13 @@ import ( func TestSimpleTFModule(t *testing.T) { path, _ := os.Getwd() - statePath:= fmt.Sprintf("%s/../examples/simple_tf_module/local_backend.tfstate", path) + statePath := fmt.Sprintf("%s/../examples/local_backend.tfstate", path) nt := tft.NewTFBlueprintTest(t, - tft.WithTFDir("../examples/simple_tf_module"), + tft.WithTFDir("../examples"), tft.WithBackendConfig(map[string]interface{}{ "path": statePath, }), - tft.WithSetupPath("setup/simple_tf_module"), + tft.WithSetupPath("setup"), tft.WithEnvVars(map[string]string{"network_name": fmt.Sprintf("foo-%s", utils.RandStr(5))}), ) diff --git a/infra/blueprint-test/test/terraform_simple_bpt_test.go b/infra/blueprint-test/test/terraform_simple_bpt_test.go index 5986cbf9073..fa918df06ba 100644 --- a/infra/blueprint-test/test/terraform_simple_bpt_test.go +++ b/infra/blueprint-test/test/terraform_simple_bpt_test.go @@ -18,8 +18,8 @@ package test import ( "fmt" - "testing" "os" + "testing" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" @@ -28,13 +28,13 @@ import ( func TestCFTSimpleModule(t *testing.T) { path, _ := os.Getwd() - statePath:= fmt.Sprintf("%s/../examples/simple_tf_module/local_backend.tfstate", path) + statePath := fmt.Sprintf("%s/../examples/local_backend.tfstate", path) networkBlueprint := tft.NewTFBlueprintTest(t, - tft.WithTFDir("../examples/simple_tf_module"), + tft.WithTFDir("../examples"), tft.WithBackendConfig(map[string]interface{}{ "path": statePath, }), - tft.WithSetupPath("setup/simple_tf_module"), + tft.WithSetupPath("setup"), ) networkBlueprint.DefineVerify( func(assert *assert.Assertions) { @@ -45,7 +45,7 @@ func TestCFTSimpleModule(t *testing.T) { assert.FileExists(statePath) //test for GetTFSetupStringOutput - assert.Contains(networkBlueprint.GetTFSetupStringOutput("project_id"),"ci-bptest") + assert.Contains(networkBlueprint.GetTFSetupStringOutput("project_id"), "ci-bptest") }) networkBlueprint.Test() } diff --git a/infra/blueprint-test/test/tfvet_test.go b/infra/blueprint-test/test/tfvet_test.go index a492f50ae6e..141a801c388 100644 --- a/infra/blueprint-test/test/tfvet_test.go +++ b/infra/blueprint-test/test/tfvet_test.go @@ -59,13 +59,13 @@ func TestTerraformVet(t *testing.T) { temp := tft.NewTFBlueprintTest(fakeT, tft.WithVars(vars), tft.WithTFDir("../examples/tf_vet"), - tft.WithSetupPath("./setup/simple_tf_module"), + tft.WithSetupPath("./setup"), ) bpt := tft.NewTFBlueprintTest(fakeT, tft.WithVars(vars), tft.WithTFDir("../examples/tf_vet"), - tft.WithSetupPath("./setup/simple_tf_module"), + tft.WithSetupPath("./setup"), tft.WithPolicyLibraryPath(libraryPath, temp.GetTFSetupStringOutput("project_id"))) bpt.DefineVerify( func(assert *assert.Assertions) { diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 64e0814da78..b2aa0ab7cc6 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -420,3 +420,27 @@ resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { filename = "build/int.cloudbuild.yaml" ignored_files = ["**/*.md", ".gitignore", ".github/**"] } + + +resource "google_cloudbuild_trigger" "bpt_int_trigger" { + provider = google-beta + project = local.project_id + name = "bpt-int-trigger" + description = "Integration tests on pull request for blueprint test framework" + github { + owner = "GoogleCloudPlatform" + name = "cloud-foundation-toolkit" + pull_request { + branch = ".*" + comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY" + } + } + substitutions = { + _BILLING_ACCOUNT = local.billing_account + _FOLDER_ID = data.terraform_remote_state.org.outputs.bpt_folder + _ORG_ID = local.org_id + } + + filename = "infra/blueprint-test/build/int.cloudbuild.yaml" + included_files = ["infra/blueprint-test/**"] +} diff --git a/infra/terraform/test-org/org/folders.tf b/infra/terraform/test-org/org/folders.tf index e0833130fad..32fb4703b01 100644 --- a/infra/terraform/test-org/org/folders.tf +++ b/infra/terraform/test-org/org/folders.tf @@ -38,3 +38,12 @@ module "folders-ci" { set_roles = false } + +module "bpt_ci_folder" { + source = "terraform-google-modules/folders/google" + version = "~> 3.1" + + parent = "folders/${replace(local.folders["ci-projects"], "folders/", "")}" + names = ["ci-bpt"] + set_roles = false +} diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index 3011fdb0e86..f5e8151ab17 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -103,3 +103,7 @@ output "ci_media_cdn_vod_project_id" { output "modules" { value = [for value in local.repos : value if try(value.module, true)] } + +output "bpt_folder" { + value = module.bpt_ci_folder.id +} From 805bdbb8a412aa017dffb54dc83c5502a2c3e2d3 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 2 Jun 2023 11:19:54 -0700 Subject: [PATCH 0422/1371] chore: enable go cache and ver for release-cli (#1637) --- .github/workflows/release-cli.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index c5db3169a66..e1368e5f0f3 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -23,7 +23,8 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 with: - go-version: '~1.18' + go-version-file: cli/go.mod + cache-dependency-path: cli/go.sum - id: 'auth' name: 'Authenticate to Google Cloud' From 18d18e8a18ef49c0b7196a7f6a9c0c978c66716a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 2 Jun 2023 11:24:22 -0700 Subject: [PATCH 0423/1371] chore: use sha for renovate GHA (#1636) --- .github/renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index 1968e12847b..76860ae5d26 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -3,7 +3,8 @@ "extends": [ "config:base", ":semanticCommits", - ":preserveSemverRanges" + ":preserveSemverRanges", + "helpers:pinGitHubActionDigests" ], "stabilityDays":7, "labels": ["dependencies"], From 61ba4b0859589803b93eba3bacc0dd4ddeb9b1b6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 2 Jun 2023 20:51:41 +0200 Subject: [PATCH 0424/1371] chore(deps): update golangci/golangci-lint-action action to v3.5.0 (#1639) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index aee38110908..c48f14122ad 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -37,7 +37,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5 # v3.4.0 + uses: golangci/golangci-lint-action@5f1fec7010f6ae3b84ea4f7b2129beb8639b564f # v3.5.0 with: version: latest working-directory: ${{ matrix.folder }} From 09687fa555ce81657fed82b8c28fdc8654105a4e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 2 Jun 2023 21:22:28 +0200 Subject: [PATCH 0425/1371] chore(deps): pin dependencies (#1638) --- .github/workflows/build-push-cft-devtools.yml | 8 ++++---- .github/workflows/go-fbf-test.yml | 4 ++-- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/release-cli.yml | 18 +++++++++--------- .github/workflows/stale.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 4 ++-- .github/workflows/update-tooling.yml | 2 +- 9 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index aff62097725..47cd0aad242 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -19,16 +19,16 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@v1.1.1' + uses: 'google-github-actions/auth@35b0e87d162680511bf346c299f71c9c5c379033' # v1.1.1 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@v1.1.1 + - uses: google-github-actions/setup-gcloud@e30db14379863a8c79331b04a9969f4c1e225e0b # v1.1.1 with: version: "410.0.0" project_id: ${{ env.PROJECT_ID }} @@ -44,7 +44,7 @@ jobs: - name: Open issue if failed if: ${{ failure() }} - uses: actions/github-script@v6.4.1 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: script: |- github.rest.issues.create({ diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 2d48cb88f44..4d398205874 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,8 +25,8 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 with: go-version-file: infra/utils/fbf/go.mod cache-dependency-path: infra/utils/fbf/go.sum diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index ba206713740..e0fb69c2588 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,8 +25,8 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 with: go-version-file: infra/build/developer-tools/build/scripts/module-swapper/go.mod cache-dependency-path: infra/build/developer-tools/build/scripts/module-swapper/go.sum diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index a3b6f4f9970..135ba328f78 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@v3' + - uses: 'actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab' # v3 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index e1368e5f0f3..a785db98350 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -20,20 +20,20 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@v1' + uses: 'google-github-actions/auth@35b0e87d162680511bf346c299f71c9c5c379033' # v1 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@v1 + - uses: google-github-actions/setup-gcloud@e30db14379863a8c79331b04a9969f4c1e225e0b # v1 with: version: "410.0.0" @@ -54,7 +54,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3 with: name: bin path: cli/bin @@ -74,7 +74,7 @@ jobs: - name: Create Release if: env.LAST_VERSION != env.CURRENT_VERSION id: create_release - uses: actions/create-release@v1 + uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -85,7 +85,7 @@ jobs: - name: Upload Linux Release if: env.LAST_VERSION != env.CURRENT_VERSION - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -96,7 +96,7 @@ jobs: - name: Upload Darwin Release if: env.LAST_VERSION != env.CURRENT_VERSION - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -107,7 +107,7 @@ jobs: - name: Upload Windows Release if: env.LAST_VERSION != env.CURRENT_VERSION - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 271c5ab2475..2652cf3d2b8 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -21,7 +21,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v8 + - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # v8 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index a7c2000ef9f..0b6d5c2b0d5 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index c676d7700e8..7552ab0b93a 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,8 +31,8 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 0bfa708e7d4..6ec87588719 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -19,7 +19,7 @@ jobs: update-tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 - name: Update Tools run: | PR_UPDATE_BODY="" From bf1fe46a912e3056f590f765a6e0d6b352f839f2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 3 Jun 2023 00:19:00 +0200 Subject: [PATCH 0426/1371] chore(deps): update terraform modules (#1592) --- infra/terraform/test-org/org/bigquery_external_data.tf | 2 +- infra/terraform/test-org/org/gsuite.tf | 2 +- infra/terraform/test-org/org/projects.tf | 2 +- infra/terraform/test-org/org/prow.tf | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/terraform/test-org/org/bigquery_external_data.tf b/infra/terraform/test-org/org/bigquery_external_data.tf index 3bfc464804c..ea7cd36a3a4 100644 --- a/infra/terraform/test-org/org/bigquery_external_data.tf +++ b/infra/terraform/test-org/org/bigquery_external_data.tf @@ -21,7 +21,7 @@ resource "google_folder" "ci_bq_external_data_folder" { module "ci_bq_external_data_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" + version = "~> 14.0" name = "ci-bq-external-data-project" project_id = "ci-bq-external-data-project" diff --git a/infra/terraform/test-org/org/gsuite.tf b/infra/terraform/test-org/org/gsuite.tf index 2cf2cf4c61e..56928b92b92 100644 --- a/infra/terraform/test-org/org/gsuite.tf +++ b/infra/terraform/test-org/org/gsuite.tf @@ -50,7 +50,7 @@ resource "google_folder" "ci_gsuite_sa_folder" { module "ci_gsuite_sa_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" + version = "~> 14.0" name = "ci-gsuite-sa-project" project_id = "ci-gsuite-sa-project" diff --git a/infra/terraform/test-org/org/projects.tf b/infra/terraform/test-org/org/projects.tf index 99dc4c26576..4919c8bf45f 100644 --- a/infra/terraform/test-org/org/projects.tf +++ b/infra/terraform/test-org/org/projects.tf @@ -16,7 +16,7 @@ module "ci_media_cdn_vod_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" + version = "~> 14.0" name = "ci-media-cdn-vod-project" project_id = "ci-media-cdn-vod-project" diff --git a/infra/terraform/test-org/org/prow.tf b/infra/terraform/test-org/org/prow.tf index 873b59d0303..5747de22243 100644 --- a/infra/terraform/test-org/org/prow.tf +++ b/infra/terraform/test-org/org/prow.tf @@ -36,7 +36,7 @@ provider "kubernetes" { module "prow-int-sa-wi" { source = "terraform-google-modules/kubernetes-engine/google//modules/workload-identity" - version = "~> 21.0" + version = "~> 26.0" name = "int-test-sa" namespace = local.test_ns project_id = local.prow_project_id From 42367d140e18aa4e0eedbe46c66783c9f0902809 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 3 Jun 2023 01:16:03 +0200 Subject: [PATCH 0427/1371] chore(deps): update terraform null to >= 2.1 (#1641) Co-authored-by: Andrew Peabody --- .../blueprint-test/examples/simple_tf_module_with_test/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf b/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf index 62e14a6ce68..b7060947fc8 100644 --- a/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf +++ b/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf @@ -19,7 +19,7 @@ provider "google" { } provider "null" { - version = "~> 2.1" + version = ">= 2.1" } module "test-vpc-module" { From c6ed639ee0a02a751f726060990ce8248e1be03a Mon Sep 17 00:00:00 2001 From: davenportjw Date: Mon, 5 Jun 2023 10:49:50 -0600 Subject: [PATCH 0428/1371] chore: update analytics-lakehouse owners (#1651) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 9a6f2c07619..a080f1e66ff 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -596,7 +596,7 @@ locals { name = "terraform-google-analytics-lakehouse" org = "GoogleCloudPlatform" description = "Deploys a Lakehouse Architecture Solution" - owners = ["stevewalker-de"] + owners = ["jasondavenport"] topics = local.common_topics.da groups = [local.jss_common_group] enable_periodic = true From 868019ca1c56e95c61a9c63e057ee83cd59b8575 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 5 Jun 2023 11:39:24 -0700 Subject: [PATCH 0429/1371] feat: updates bpmetadata schema and fixes a few issues (#1617) --- .gitignore | 1 - cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 79 +++--- .../goldens/golden-metadata.display.yaml | 2 + cli/bpmetadata/proto/bpmetadata.proto | 240 +++++++++++++----- cli/bpmetadata/proto/bpmetadata_ui.proto | 56 +++- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 3 + cli/bpmetadata/repo.go | 133 +++++++--- cli/bpmetadata/repo_test.go | 67 ++++- ...chema.json => gcp-blueprint-metadata.json} | 25 +- cli/bpmetadata/schema/generate.go | 3 +- cli/bpmetadata/types.go | 187 +++++++++----- cli/bpmetadata/types_ui.go | 51 +++- cli/bpmetadata/types_ui_ext.go | 3 + cli/bpmetadata/validate.go | 6 +- cli/bpmetadata/validate_test.go | 4 +- .../content/examples/acm/metadata.yaml | 7 + .../acm/modules/submodule-01/README.md | 1 + .../examples/simple_regional/README.md | 3 + .../examples/simple_regional/metadata.yaml | 10 + .../modules/submodule-01/main.tf | 0 .../modules/submodule-01/README.md | 1 + .../bpmetadata/schema/invalid-metadata.yaml | 5 +- cli/util/file.go | 2 +- cli/util/file_test.go | 8 +- cli/util/git.go | 37 ++- cli/util/git_test.go | 81 ++++-- 27 files changed, 760 insertions(+), 257 deletions(-) rename cli/bpmetadata/schema/{bpmetadataschema.json => gcp-blueprint-metadata.json} (97%) create mode 100644 cli/testdata/bpmetadata/content/examples/acm/modules/submodule-01/README.md create mode 100644 cli/testdata/bpmetadata/content/examples/simple_regional/metadata.yaml create mode 100644 cli/testdata/bpmetadata/content/examples/simple_regional/modules/submodule-01/main.tf create mode 100644 cli/testdata/bpmetadata/content/examples/simple_regional_beta/modules/submodule-01/README.md diff --git a/.gitignore b/.gitignore index 71d8d6002f9..30a1026b3d3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,5 @@ config-connector/tests/testcases/environments.yaml .DS_Store .vscode *.pyc -schema cli/bpmetadata/proto/out* cli/bpmetadata/int-test/.working diff --git a/cli/Makefile b/cli/Makefile index a0787d0dee6..d5134612547 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.7 +VERSION=v1.1.8 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 293bc7cf4fe..ac18803108a 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -28,12 +28,13 @@ const ( tfRolesFileName = "test/setup/iam.tf" tfServicesFileName = "test/setup/main.tf" iconFilePath = "assets/icon.png" - modulesPath = "modules" + modulesPath = "modules/" examplesPath = "examples" metadataFileName = "metadata.yaml" metadataDisplayFileName = "metadata.display.yaml" metadataApiVersion = "blueprints.cloud.google.com/v1alpha1" metadataKind = "BlueprintMetadata" + localConfigAnnotation = "config.kubernetes.io/local-config" ) func init() { @@ -49,12 +50,14 @@ func init() { var Cmd = &cobra.Command{ Use: "metadata", - Short: "Generates blueprint metatda", + Short: "Generates blueprint metadata", Long: `Generates metadata.yaml for specified blueprint`, Args: cobra.NoArgs, RunE: generate, } +var repoDetails repoDetail + // The top-level command function that generates metadata based on the provided flags func generate(cmd *cobra.Command, args []string) error { wdPath, err := os.Getwd() @@ -81,7 +84,7 @@ func generate(cmd *cobra.Command, args []string) error { // throw an error and exit if root level readme.md doesn't exist if err != nil { - return fmt.Errorf("Top-level module does not have a readme. Details: %w\n", err) + return fmt.Errorf("top-level module does not have a readme. Details: %w\n", err) } allBpPaths = append(allBpPaths, currBpPath) @@ -110,7 +113,7 @@ func generate(cmd *cobra.Command, args []string) error { // log info if a sub-module doesn't have a readme.md and continue if err != nil { - Log.Info("Skipping metadata for sub-module identified as an internal module", "Path:", modPath) + Log.Info("skipping metadata for sub-module identified as an internal module", "Path:", modPath) continue } @@ -130,7 +133,7 @@ func generate(cmd *cobra.Command, args []string) error { func generateMetadataForBpPath(bpPath string) error { //try to read existing metadata.yaml bpObj, err := UnmarshalMetadata(bpPath, metadataFileName) - if err != nil && !mdFlags.force { + if err != nil && !errors.Is(err, os.ErrNotExist) && !mdFlags.force { return err } @@ -153,7 +156,7 @@ func generateMetadataForBpPath(bpPath string) error { } bpDpObj, err := UnmarshalMetadata(bpPath, metadataDisplayFileName) - if err != nil && !mdFlags.force { + if err != nil && !errors.Is(err, os.ErrNotExist) && !mdFlags.force { return err } @@ -180,21 +183,18 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* } // verify that the blueprint path is valid & get repo details - repoDetails := getRepoDetailsByPath(bpPath, - bpMetadataObj.Spec.Info.Source, - bpMetadataObj.ResourceMeta.ObjectMeta.NameMeta.Name, - readmeContent) - if repoDetails.Name == "" && !mdFlags.quiet { + getRepoDetailsByPath(bpPath, &repoDetails, readmeContent) + if repoDetails.ModuleName == "" && !mdFlags.quiet { fmt.Printf("Provide a name for the blueprint at path [%s]: ", bpPath) - _, err := fmt.Scan(&repoDetails.Name) + _, err := fmt.Scan(&repoDetails.ModuleName) if err != nil { fmt.Println("Unable to scan the name for the blueprint.") } } - if repoDetails.Source.Path == "" && !mdFlags.quiet { + if repoDetails.Source.URL == "" && !mdFlags.quiet { fmt.Printf("Provide a URL for the blueprint source at path [%s]: ", bpPath) - _, err := fmt.Scan(&repoDetails.Source.Path) + _, err := fmt.Scan(&repoDetails.Source.URL) if err != nil { fmt.Println("Unable to scan the URL for the blueprint.") } @@ -208,11 +208,11 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* }, ObjectMeta: yaml.ObjectMeta{ NameMeta: yaml.NameMeta{ - Name: repoDetails.Name, + Name: repoDetails.ModuleName, Namespace: "", }, Labels: bpMetadataObj.ResourceMeta.ObjectMeta.Labels, - Annotations: map[string]string{"config.kubernetes.io/local-config": "true"}, + Annotations: map[string]string{localConfigAnnotation: "true"}, }, } @@ -229,18 +229,17 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* } // get blueprint requirements - rolesCfgPath := path.Join(repoDetails.Source.RootPath, tfRolesFileName) - svcsCfgPath := path.Join(repoDetails.Source.RootPath, tfServicesFileName) + rolesCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfRolesFileName) + svcsCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfServicesFileName) requirements, err := getBlueprintRequirements(rolesCfgPath, svcsCfgPath) if err != nil { - return nil, fmt.Errorf("error creating blueprint requirements: %w", err) + Log.Warn(fmt.Sprintf("Blueprint requirements could not be created. Details: %s", err.Error())) + } else { + bpMetadataObj.Spec.Requirements = *requirements } - bpMetadataObj.Spec.Requirements = *requirements - // create blueprint content i.e. documentation, icons, etc. - bpMetadataObj.Spec.Content.create(bpPath, repoDetails.Source.RootPath, readmeContent) - + bpMetadataObj.Spec.Content.create(bpPath, repoDetails.Source.BlueprintRootPath, readmeContent) return bpMetadataObj, nil } @@ -255,37 +254,35 @@ func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMeta NameMeta: yaml.NameMeta{ Name: bpCore.ResourceMeta.ObjectMeta.Name + "-display", }, - Labels: bpDisp.ResourceMeta.ObjectMeta.Labels, + Labels: bpDisp.ResourceMeta.ObjectMeta.Labels, + Annotations: map[string]string{localConfigAnnotation: "true"}, }, } - if bpDisp.Spec.Info.Title == "" { - bpDisp.Spec.Info.Title = bpCore.Spec.Info.Title - } - - if bpDisp.Spec.Info.Source == nil { - bpDisp.Spec.Info.Source = bpCore.Spec.Info.Source - } - + bpDisp.Spec.Info.Title = bpCore.Spec.Info.Title + bpDisp.Spec.Info.Source = bpCore.Spec.Info.Source buildUIInputFromVariables(bpCore.Spec.Interfaces.Variables, &bpDisp.Spec.UI.Input) return bpDisp, nil } -func (i *BlueprintInfo) create(bpPath string, r *repoDetail, readmeContent []byte) error { +func (i *BlueprintInfo) create(bpPath string, r repoDetail, readmeContent []byte) error { title, err := getMdContent(readmeContent, 1, 1, "", false) if err != nil { - return err + return fmt.Errorf("title tag missing in markdown, err: %w", err) } i.Title = title.literal - i.Source = &BlueprintRepoDetail{ - Repo: r.Source.Path, - SourceType: "git", + rootPath := r.Source.RepoRootPath + if rootPath == "" { + rootPath = r.Source.BlueprintRootPath } - if dir := getBpSubmoduleName(bpPath); dir != "" { - i.Source.Dir = dir + bpDir := strings.ReplaceAll(bpPath, rootPath, "") + i.Source = &BlueprintRepoDetail{ + Repo: r.Source.URL, + SourceType: r.Source.SourceType, + Dir: bpDir, } versionInfo, err := getBlueprintVersion(path.Join(bpPath, tfVersionsFileName)) @@ -325,7 +322,7 @@ func (i *BlueprintInfo) create(bpPath string, r *repoDetail, readmeContent []byt } // create icon - iPath := path.Join(r.Source.RootPath, iconFilePath) + iPath := path.Join(r.Source.BlueprintRootPath, iconFilePath) exists, _ := fileExists(iPath) if exists { i.Icon = iconFilePath @@ -409,7 +406,7 @@ func UnmarshalMetadata(bpPath, fileName string) (*BlueprintMetadata, error) { // return empty metadata if file does not exist or if the file is not read if _, err := os.Stat(metaFilePath); errors.Is(err, os.ErrNotExist) { - return &bpObj, nil + return &bpObj, err } f, err := os.ReadFile(metaFilePath) diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml index 1a5da98e25d..3b391c64aaa 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.display.yaml @@ -2,6 +2,8 @@ apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: name: terraform-google-cloud-storage-display + annotations: + config.kubernetes.io/local-config: "true" spec: info: title: Terraform Google Cloud Storage Module diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index a18ff87664a..759628e3c9d 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -6,38 +6,85 @@ import "bpmetadata/proto/bpmetadata_ui.proto"; option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; -message BlueprintMetadataSpec { +// BlueprintMetadata defines the overall structure for blueprint metadata. +// The cli command i.e. `cft blueprint metadata` attempts at auto-generating +// metadata if the blueprint is structured based on the TF blueprint template +// i.e. https://github.com/terraform-google-modules/terraform-google-module-template +// All fields within BlueprintMetadata and its children are denoted as: +// - Gen: auto-generated - +// - Gen: manually-authored +// - Gen: partial (contains nested messages that can include both auto-generated and manually authored) +message BlueprintMetadata { + // APIVersion is the apiVersion field of a metadata file + // Gen: auto-generated + string api_version = 1; + + // Kind is the kind field of a metadata file + // Gen: auto-generated + string kind = 2; + + // ResourceTypeMeta is the metadata field of a metadata file + // Gen: partial + ResourceTypeMeta metadata = 3; + + // BlueprintMetadataSpec is the metadata specification for the blueprint + // Gen: partial + BlueprintMetadataSpec spec = 4; +} + +message ResourceTypeMeta { + // Name is the metadata.name field of a Resource + // Gen: auto-generated + string name = 1; + // Labels is the metadata.labels field of a Resource + // Gen: manually-authored + map labels = 2; + + // Annotations is the metadata.annotations field of a Resource. + // Gen: auto-generated + map annotations = 3; +} + +// BlueprintMetadataSpec defines the spec portion of the blueprint metadata. +message BlueprintMetadataSpec { // BlueprintInfo defines the basic information of the blueprint. + // Gen: partial BlueprintInfo info = 1; // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. + // Gen: partial BlueprintContent content = 2; // BlueprintInterface defines the input and output variables for the blueprint. + // Gen: partial BlueprintInterface interfaces = 3; // BlueprintRequirements defines the roles required and the associated services // that need to be enabled to provision blueprint resources. + // Gen: auto-generated BlueprintRequirements requirements = 4; // BlueprintUI defines the user interface for the blueprint. + // Gen: partial BlueprintUI ui = 5; } // BlueprintInfo defines the basic information of the blueprint. message BlueprintInfo { // Title for the blueprint. - // Autogenerated: First H1 text in readme.md. + // Gen: auto-generated - First H1 text in readme.md. string title = 1; // Blueprint source location and source type. - // Autogen details in BlueprintRepoDetail. + // Gen: auto-generated - user will be prompted if repo information can not + // be determined from the blueprint path. BlueprintRepoDetail source = 2; // Last released semantic version for the packaged blueprint. - // Autogenerated: From the `module_name` attribute of the `provider_meta "google"` block. + // Gen: auto-generated - From the `module_name` attribute of + // the `provider_meta "google"` block. // E.g. // provider_meta "google" { // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" @@ -45,142 +92,174 @@ message BlueprintInfo { string version = 3; // Actuation tool e.g. Terraform and its required version. - // Autogen details in BlueprintActuationTool. + // Gen: auto-generated BlueprintActuationTool actuation_tool = 4; // Various types of descriptions associated with the blueprint. - // Autogen details in BlueprintDescription. + // Gen: auto-generated BlueprintDescription description = 5; // Path to an image representing the icon for the blueprint. - // Will be set as "assets/icon.png", if present. Otherwise, it - // can be manually authored. + // Will be set as "assets/icon.png", if present. + // Gen: auto-generated string icon = 6; // The time estimate for configuring and deploying the blueprint. - // Autogen details in BlueprintTimeEstimate. + // Gen: auto-generated BlueprintTimeEstimate deployment_duration = 7; // The cost estimate for the blueprint based on preconfigured variables. - // Autogen details in BlueprintCostEstimate. + // Gen: auto-generated BlueprintCostEstimate cost_estimate = 8; // A list of GCP cloud products used in the blueprint. - // Manually authored. + // Gen: manually-authored repeated BlueprintCloudProduct cloud_products = 9; // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. - // Manually authored. + // Gen: manually-authored repeated BlueprintQuotaDetail quota_details = 10; // Details on the author producing the blueprint. - // Manually authored. + // Gen: manually-authored BlueprintAuthor author = 11; // Details on software installed as part of the blueprint. - // Manually authored. + // Gen: manually-authored repeated BlueprintSoftwareGroup software_groups = 12; // Support offered, if any for the blueprint. - // Manually authored. + // Gen: manually-authored BlueprintSupport support_info = 13; // A list of GCP org policies to be checked for successful deployment. + // Gen: manually-authored repeated BlueprintOrgPolicyCheck org_policy_checks = 14; // Specifies if the blueprint supports single or multiple deployments per GCP project. // If set to true, the blueprint can not be deployed more than once in the same GCP project. + // Gen: manually-authored bool single_deployment = 15; } // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. message BlueprintContent { - // Diagrams are manually entered. + // Gen: auto-generated BlueprintArchitecture architecture = 1; + + // Gen: manually-authored repeated BlueprintDiagram diagrams = 2; + + // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. + // ## Documentation + // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) repeated BlueprintListContent documentation = 3; + + // Gen: auto-generated - blueprints under the modules/ folder. repeated BlueprintMiscContent sub_blueprints = 4; + + // Gen: auto-generated - examples under the examples/ folder. repeated BlueprintMiscContent examples = 5; } // BlueprintInterface defines the input and output variables for the blueprint. message BlueprintInterface { + // Gen: auto-generated - all defined variables for the blueprint repeated BlueprintVariable variables = 1; - // VariableGroups are manually entered. + + // Gen: manually-authored repeated BlueprintVariableGroup variable_groups = 2; + + // Gen: auto-generated - all defined outputs for the blueprint repeated BlueprintOutput outputs = 3; } // BlueprintRequirements defines the roles required and the associated services // that need to be enabled to provision blueprint resources. message BlueprintRequirements { + // Gen: auto-generated - all roles required for the blueprint in test/setup/iam.tf + // as the "int_required_roles" local. E.g. + // locals { + // int_required_roles = [ + // "roles/compute.admin", + // ] + // } repeated BlueprintRoles roles = 1; + + // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf + // as "activate_apis" in the project module. repeated string services = 2; } -// BlueprintUI defines the user interface for the blueprint. +// BlueprintUI is the top-level structure for holding UI specific metadata. message BlueprintUI { // The top-level input section that defines the list of variables and // their sections on the deployment page. + // Gen: partial BlueprintUIInput input = 1; // The top-level section for listing runtime (or blueprint output) information // i.e. the console URL for the VM or a button to ssh into the VM etc based on. + // Gen: manually-authored BlueprintUIOutput runtime = 2; } message BlueprintRepoDetail { - // Autogenerated: URL from the .git dir. + // Gen: auto-generated - URL from the .git dir. // Can be manually overridden with a custom URL if needed. string repo = 1; - // Set as "git" for now until more types are supported. + // Gen: auto-generated - set as "git" for now until more + // types are supported. string source_type = 2; + + // Gen: auto-generated - not set for root modules but + // set as the module name for submodules, if found. + string dir = 3; } // BlueprintActuationTool defines the actuation tool used to provision the blueprint. message BlueprintActuationTool { - // Set as "Terraform" for now until more flavors are supported. + // Gen: auto-generated - set as "Terraform" for now until + //more flavors are supported. string flavor = 1; // Required version for the actuation tool. - // Autogenerated: For Terraform this is the `required_version` set in - // `terraform` block. E.g. + // Gen: auto-generated - For Terraform this is the `required_version` + // set in `terraform` block. E.g. // terraform { // required_version = ">= 0.13" // } string version = 2; } -// BlueprintDescription defines the description of the blueprint. +// All descriptions are set with the markdown content immediately +// after each type's heading declaration in readme.md. message BlueprintDescription { - // Autogenerated: All types of descriptions are set with the markdown content - // immediately after each type's heading declaration in readme.md. - - // Autogenerated: Markdown after "### Tagline". + // Gen: auto-generated - Markdown after "### Tagline". string tagline = 1; - // Autogenerated: Markdown after "### Detailed". + // Gen: auto-generated - Markdown after "### Detailed". string detailed = 2; - // Autogenerated: Markdown after "### PreDeploy". + // Gen: auto-generated - Markdown after "### PreDeploy". string pre_deploy = 3; - // Autogenerated: Markdown after "### Html". + // Gen: auto-generated - Markdown after "### Html". string html = 4; - // Autogenerated: Markdown after "### EulaUrls". + // Gen: auto-generated - Markdown after "### EulaUrls". repeated string eula_urls = 5; - // Autogenerated: Markdown after "### Architecture" + // Gen: auto-generated - Markdown after "### Architecture" // Deprecated. Use BlueprintContent.Architecture instead. repeated string architecture = 6; } // A time estimate in secs required for configuring and deploying the blueprint. message BlueprintTimeEstimate { - // Autogenerated: Set using the content defined under "### DeploymentTime" E.g. + // Gen: auto-generated - Set using the content defined under "### DeploymentTime" E.g. // ### DeploymentTime // - Configuration: X secs // - Deployment: Y secs @@ -188,44 +267,49 @@ message BlueprintTimeEstimate { int32 deployment_secs = 2; } -// The cost estimate for the blueprint based on preconfigured variables. +// The cost estimate for the blueprint based on pre-configured variables. message BlueprintCostEstimate { - // Autogenerated: Set using the content defined under "### Cost" as a link + // Gen: auto-generated - Set using the content defined under "### Cost" as a link // with a description E.g. // ### Cost - // [View cost details](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) + // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) string description = 1; string url = 2; } -// A GCP cloud product used in the blueprint. -// Manually authored. +// GCP cloud product(s) used in the blueprint. message BlueprintCloudProduct { // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") // product used in the blueprint. + // Gen: manually-authored string product_id = 1; // Url for the product. + // Gen: manually-authored string page_url = 2; // A label string for the product, if it is not an integrated GCP product. // E.g. "Data Studio" + // Gen: manually-authored string label = 3; // Is the product's landing page external to the GCP console e.g. - // lookerstudio.google.com - bool is_external = 4; + // lookerstudio.google.com + // Gen: manually-authored + bool is_external = 4; } // BlueprintOrgPolicyCheck defines GCP org policies to be checked // for successful deployment message BlueprintOrgPolicyCheck { - // Id for the policy e.g. "compute-vmExternalIpAccess" - string policy_id = 1; - - // If not set, it is assumed any version of this org policy - // prevents successful deployment of this solution. - repeated string required_values = 2; + // Id for the policy e.g. "compute-vmExternalIpAccess" + // Gen: manually-authored + string policy_id = 1; + + // If not set, it is assumed any version of this org policy + // prevents successful deployment of this solution. + // Gen: manually-authored + repeated string required_values = 2; } // QuotaResourceType defines the type of resource a quota is applied to. @@ -240,10 +324,12 @@ message BlueprintQuotaDetail { // DynamicVariable, if provided, associates the provided input variable // with the corresponding resource and quota type. In its absence, the quota // detail is assumed to be fixed. + // Gen: manually-authored string dynamic_variable = 1; // ResourceType is the type of resource the quota will be applied to i.e. // GCE Instance or Disk etc. + // Gen: manually-authored QuotaResourceType resource_type = 2; // QuotaType is a key/value pair of the actual quotas and their corresponding @@ -252,18 +338,22 @@ message BlueprintQuotaDetail { // CPUs, // DISK_TYPE OR // SIZE_GB. + // Gen: manually-authored map quota_type = 3; } // BlueprintAuthor defines the author of a blueprint. message BlueprintAuthor { // Name of template author or organization. + // Gen: manually-authored string title = 1; // Description of the author. + // Gen: manually-authored string description = 2; // Link to the author's website. + // Gen: manually-authored string url = 3; } @@ -275,55 +365,75 @@ enum SoftwareGroupType { SG_OS = 1; } -// BlueprintSoftwareGroup is a message that represents a group of related software components for the blueprint. +// A group of related software components for the blueprint. message BlueprintSoftwareGroup { - // Type is the pre-defined software type for this group. + // Pre-defined software types. + // Gen: manually-authored SoftwareGroupType type = 1; - // Software is a list of software components that belong to this group. + // Software components belonging to this group. + // Gen: manually-authored repeated BlueprintSoftware software = 2; } -// BlueprintSoftware is a message that represents a description of a piece of a single software component installed by the blueprint. +// A description of a piece of a single software component +// installed by the blueprint. message BlueprintSoftware { - // Title is the user-visible title for this software component. + // User-visible title. + // Gen: manually-authored string title = 1; - // Version is the software version for this software component. + // Software version. + // Gen: manually-authored string version = 2; - // URL is the link to the development site or marketing page for this software component. + // Link to development site or marketing page for this software. + // Gen: manually-authored string url = 3; - // LicenseURL is the link to the license page for this software component. + // Link to license page. + // Gen: manually-authored string license_url = 4; } -// BlueprintSupport is a message that represents a description of a support option. +// A description of a support option message BlueprintSupport { - // Description is the description of the support option. + // Description of the support option. + // Gen: manually-authored string description = 1; - // URL is the link to the page providing this support option. + // Link to the page providing this support option. + // Gen: manually-authored string url = 2; - // Entity is the organization or group that provides the support option. + // The organization or group that provides the support option (e.g.: + // "Community", "Google"). + // Gen: manually-authored string entity = 3; - // ShowSupportId indicates whether to show the customer's support ID. + // Whether to show the customer's support ID. + // Gen: manually-authored bool show_support_id = 4; } -message BlueprintMiscContent { - string name = 1; - string location = 2; -} - message BlueprintArchitecture { + // Gen: auto-generated - the URL & list content following the "## Architecture" tag e.g. + // ## Architecture + // ![Blueprint Architecture](assets/architecture.png) + // 1. Step no. 1 + // 2. Step no. 2 + // 3. Step no. 3 string diagram_url = 1; + + // Gen: auto-generated - the list items following the "## Architecture" tag. repeated string description = 2; } +message BlueprintMiscContent { + string name = 1; + string location = 2; +} + message BlueprintDiagram { string name = 1; string alt_text = 2; diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 8f0f3820be5..81d57d45c7f 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -6,56 +6,74 @@ import "bpmetadata/proto/bpmetadata_ui_ext.proto"; option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; +// BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. message BlueprintUIInput { - // variables is a map defining all inputs on the UI. + // Gen: partial map variables = 1; // Sections is a generic structure for grouping inputs together. + // Gen: manually-authored repeated DisplaySection sections = 2; } +// Additional display specific metadata pertaining to a particular +// input variable. message DisplayVariable { // The variable name from the corresponding standard metadata file. + // Gen: auto-generated - the Terraform variable name string name = 1; // Visible title for the variable on the UI. If not present, // Name will be used for the Title. + // Gen: auto-generated - the Terraform variable converted to title case e.g. + // variable "bucket_admins" will convert to "Bucket Admins" as the title. string title = 2; // A flag to hide or show the variable on the UI. + // Gen: manually-authored bool invisible = 3; // Variable tooltip. + // Gen: manually-authored string tooltip = 4; // Placeholder text (when there is no default). + // Gen: manually-authored string placeholder = 5; // Regex based validation rules for the variable. + // Gen: manually-authored string regex_validation = 6; // Minimum no. of inputs for the input variable. + // Gen: manually-authored int32 min_items = 7; // Max no. of inputs for the input variable. + // Gen: manually-authored int32 max_items = 8; // Minimum length for string values. + // Gen: manually-authored int32 min_length = 9; // Max length for string values. + // Gen: manually-authored int32 max_length = 10; // Minimum value for numeric types. + // Gen: manually-authored float min = 11; // Max value for numeric types. + // Gen: manually-authored float max = 12; // The name of a section to which this variable belongs. // variables belong to the root section if this field is // not set. + // Gen: manually-authored string section = 13; // UI extension associated with the input variable. @@ -66,62 +84,96 @@ message DisplayVariable { // zoneProperty: myZone // gceMachineType: // minCpu: 2 - // minRamGb: 6 + // minRamGb: + // Gen: manually-authored GooglePropertyExtension x_google_property = 14; // Text describing the validation rules for the property. Typically shown // after an invalid input. // Optional. UTF-8 text. No markup. At most 128 characters. + // Gen: manually-authored string validation = 15; } +// A logical group of variables. [Section][]s may also be grouped into +// sub-sections. message DisplaySection { // The name of the section, referenced by DisplayVariable.Section // Section names must be unique. + // Gen: manually-authored string name = 1; // Section title. // If not provided, name will be used instead. + // Gen: manually-authored string title = 2; // Section tooltip. + // Gen: manually-authored string tooltip = 3; // Section subtext. + // Gen: manually-authored string subtext = 4; // The name of the parent section (if parent is not the root section). + // Gen: manually-authored string parent = 5; } message BlueprintUIOutput { // Short message to be displayed while the blueprint is deploying. // At most 128 characters. + // Gen: manually-authored string output_message = 1; // List of suggested actions to take. + // Gen: manually-authored repeated UIActionItem suggested_actions = 2; + + // outputs is a map defining a subset of Terraform outputs on the UI + // that may need additional UI configuration. + // Gen: manually-authored + map outputs = 3; } // An item appearing in a list of required or suggested steps. message UIActionItem { // Summary heading for the item. // Required. Accepts string expressions. At most 64 characters. + // Gen: manually-authored string heading = 1; // Longer description of the item. // At least one description or snippet is required. // Accepts string expressions. HTML <a href> // tags only. At most 512 characters. + // Gen: manually-authored string description = 2; // Fixed-width formatted code snippet. // At least one description or snippet is required. // Accepts string expressions. UTF-8 text. At most 512 characters. + // Gen: manually-authored string snippet = 3; // If present, this expression determines whether the item is shown. // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP // where `externalIP` is the output. + // Gen: manually-authored string show_if = 4; } + +// Additional display specific metadata pertaining to a particular +// Terraform output. +message DisplayOutput { + // open_in_new_tab defines if the Output action should be opened + // in a new tab. + // Gen: manually-authored + bool open_in_new_tab = 1; + + // show_in_notification defines if the Output should shown in + // notification for the deployment. + // Gen: manually-authored + bool show_in_notification = 2; +} diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index e63f3397ed9..784dfd76b83 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -42,14 +42,17 @@ enum ExtensionType { // appropriate input widget or adding restrictions to GCP-specific resources. message GooglePropertyExtension { // Type specifies the type of extension. + // Gen: manually-authored ExtensionType type = 1; // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to // determine the set of allowable values. This field references another // property from the schema, which must have type GCE_ZONE. + // Gen: manually-authored string zone_property = 2; // Property-specific extensions. + // Gen: manually-authored (all property extensions and their child properties) GCEMachineTypeExtension gce_machine_type = 3; GCEDiskSizeExtension gce_disk_size = 4; GCESubnetworkExtension gce_subnetwork = 5; diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index fe0cf8a069d..25e4c4dc87d 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -1,6 +1,8 @@ package bpmetadata import ( + "errors" + "os" "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" @@ -8,14 +10,16 @@ import ( ) type repoDetail struct { - Name string - Source *repoSource + RepoName string + ModuleName string + Source *repoSource } type repoSource struct { - Path string - RootPath string - SourceType string + URL string + BlueprintRootPath string + RepoRootPath string + SourceType string } const ( @@ -24,46 +28,102 @@ const ( // getRepoDetailsByPath takes a local path for a blueprint and tries // to get repo details that include its name, path and type -func getRepoDetailsByPath(bpPath string, sourceUrl *BlueprintRepoDetail, repoName string, readmeContent []byte) *repoDetail { - rootRepoPath := getBpRootPath(bpPath) - if sourceUrl == nil { - bpPath = strings.TrimSuffix(bpPath, "/") - repoUrl, err := util.GetRepoUrl(bpPath) - if err != nil { - repoUrl = "" +func getRepoDetailsByPath(bpPath string, r *repoDetail, readme []byte) { + // For a submodule, we'll try to get repo details from the + // root blueprint or just return the current repoDetail object + // if it's still in memory. + if strings.Contains(bpPath, nestedBpPath) { + // try to parse the module name from MD which will get + // overriden with "["repoName-submoduleName" if repoName is available + r.ModuleName = parseRepoNameFromMd(readme) + if r.RepoName != "" { + r.ModuleName = r.RepoName + "-" + getBpSubmoduleNameInKebabCase(bpPath) } - sourceUrl = &BlueprintRepoDetail{ - Repo: repoUrl, - } + return + } + + s := "git" + bpRootPath := getBlueprintRootPath(bpPath) + currentRootRepoDetails := getRepoDetailsFromRootBp(bpRootPath) + bpPath = strings.TrimSuffix(bpPath, "/") + repoUrl, repoRoot, err := util.GetRepoUrlAndRootPath(bpPath) + if err != nil { + repoUrl = "" + s = "" + } + + if currentRootRepoDetails.Source.URL != "" { + repoUrl = currentRootRepoDetails.Source.URL } - if repoName == "" { - n, err := util.GetRepoName(sourceUrl.Repo) - if err != nil { - // Try to get the repo name from readme instead. - title, err := getMdContent(readmeContent, 1, 1, "", false) - if err == nil { - n = strcase.ToKebab(title.literal) - } + n, err := util.GetRepoName(repoUrl) + if err != nil { + n = parseRepoNameFromMd(readme) + } + + *r = repoDetail{ + RepoName: n, + ModuleName: n, + Source: &repoSource{ + URL: repoUrl, + SourceType: s, + BlueprintRootPath: bpRootPath, + RepoRootPath: repoRoot, + }, + } +} + +// getRepoDetailsFromRootBp tries to parse repo details from the +// root blueprint metadata.yaml. This is specially useful when +// metadata is generated for a submodule that +func getRepoDetailsFromRootBp(bpPath string) repoDetail { + rootBp := getBlueprintRootPath(bpPath) + b, err := UnmarshalMetadata(rootBp, metadataFileName) + if errors.Is(err, os.ErrNotExist) { + return repoDetail{ + Source: &repoSource{ + BlueprintRootPath: rootBp, + }, } + } - repoName = n + // There is metadata for root but does not have source info + // which means this is a non-git hosted blueprint + if b.Spec.Info.Source == nil { + return repoDetail{ + RepoName: b.ResourceMeta.ObjectMeta.NameMeta.Name, + Source: &repoSource{ + BlueprintRootPath: rootBp, + }, + } } - return &repoDetail{ - Name: repoName, + // If we get here, root metadata exists and has git info + return repoDetail{ + RepoName: b.ResourceMeta.ObjectMeta.NameMeta.Name, Source: &repoSource{ - Path: sourceUrl.Repo, - SourceType: "git", - RootPath: rootRepoPath, + URL: b.Spec.Info.Source.Repo, + SourceType: "git", + BlueprintRootPath: rootBp, + RepoRootPath: strings.Replace(rootBp, b.Spec.Info.Source.Dir, "", 1), }, } } +func parseRepoNameFromMd(readme []byte) string { + n := "" + title, err := getMdContent(readme, 1, 1, "", false) + if err == nil { + n = strcase.ToKebab(title.literal) + } + + return n +} + // getBpRootPath determines if the provided bpPath is for a submodule // and resolves it to the root module path if necessary -func getBpRootPath(bpPath string) string { +func getBlueprintRootPath(bpPath string) string { if strings.Contains(bpPath, nestedBpPath) { i := strings.Index(bpPath, nestedBpPath) bpPath = bpPath[0:i] @@ -72,13 +132,14 @@ func getBpRootPath(bpPath string) string { return bpPath } -// getBpSubmoduleName gets the submodule name from the blueprint path +// getBpSubmoduleNameInKebabCase gets the submodule name from the blueprint path // if it lives under the /modules directory -func getBpSubmoduleName(bpPath string) string { - if strings.Contains(bpPath, nestedBpPath) { - i := strings.Index(bpPath, nestedBpPath) - return bpPath[i+9:] +func getBpSubmoduleNameInKebabCase(bpPath string) string { + i := strings.Index(bpPath, nestedBpPath) + if i == -1 { + return "" } - return "" + // 9 is the length for "/modules" after which the submodule name starts + return strcase.ToKebab(bpPath[i+9:]) } diff --git a/cli/bpmetadata/repo_test.go b/cli/bpmetadata/repo_test.go index 5329d0e0ca9..b4204a85bf6 100644 --- a/cli/bpmetadata/repo_test.go +++ b/cli/bpmetadata/repo_test.go @@ -44,9 +44,9 @@ func TestGetBpRootPath(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got := getBpRootPath(tt.path) + got := getBlueprintRootPath(tt.path) if got != tt.want { - t.Errorf("getBpRootPath() = %v, want %v", got, tt.want) + t.Errorf("getBlueprintRootPath() = %v, want %v", got, tt.want) } }) } @@ -73,13 +73,72 @@ func TestGetBpSubmoduleName(t *testing.T) { path: "testdata/bpmetadata/terraform-google-bp01/foo/submodule-01", want: "", }, + { + name: "simple - submodule with underscores", + path: "testdata/bpmetadata/terraform-google-bp01/modules/submodule_01", + want: "submodule-01", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got := getBpSubmoduleName(tt.path) + got := getBpSubmoduleNameInKebabCase(tt.path) if got != tt.want { - t.Errorf("getBpSubmoduleName() = %v, want %v", got, tt.want) + t.Errorf("getBpSubmoduleNameInKebabCase() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestGetRepoDetailsFromRootBp(t *testing.T) { + tests := []struct { + name string + path string + wantRepoDetails repoDetail + }{ + { + name: "root metadata does not exist", + path: "../testdata/bpmetadata/content/examples/simple_regional_beta/modules/submodule-01", + wantRepoDetails: repoDetail{ + Source: &repoSource{ + BlueprintRootPath: "../testdata/bpmetadata/content/examples/simple_regional_beta", + }, + }, + }, + { + name: "root metadata exists but does not have source info", + path: "../testdata/bpmetadata/content/examples/acm/modules/submodule-01", + wantRepoDetails: repoDetail{ + RepoName: "terraform-google-acm", + Source: &repoSource{ + BlueprintRootPath: "../testdata/bpmetadata/content/examples/acm", + }, + }, + }, + { + name: "root metadata exists and has source info", + path: "../testdata/bpmetadata/content/examples/simple_regional/modules/submodule-01", + wantRepoDetails: repoDetail{ + RepoName: "simple-regional", + Source: &repoSource{ + URL: "https://github.com/GoogleCloudPlatform/simple-regional", + SourceType: "git", + BlueprintRootPath: "../testdata/bpmetadata/content/examples/simple_regional", + RepoRootPath: "../testdata/bpmetadata/content/examples/simple_regional", + }, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := getRepoDetailsFromRootBp(tt.path) + if got.Source != nil && *got.Source != *tt.wantRepoDetails.Source { + t.Errorf("getRepoDetailsFromRootBp() - Source = %v, want %v", *got.Source, *tt.wantRepoDetails.Source) + } + + if got.RepoName != tt.wantRepoDetails.RepoName { + t.Errorf("getRepoDetailsFromRootBp() - RepoName = %v, want %v", got.RepoName, tt.wantRepoDetails.RepoName) } }) } diff --git a/cli/bpmetadata/schema/bpmetadataschema.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json similarity index 97% rename from cli/bpmetadata/schema/bpmetadataschema.json rename to cli/bpmetadata/schema/gcp-blueprint-metadata.json index f4c88ad2a15..54d39c19b3b 100644 --- a/cli/bpmetadata/schema/bpmetadataschema.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -1,5 +1,5 @@ { - "$schema": "https://json-schema.org/draft/2020-12/schema", + "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata/blueprint-metadata", "$ref": "#/$defs/BlueprintMetadata", "$defs": { @@ -233,8 +233,7 @@ "additionalProperties": false, "type": "object", "required": [ - "title", - "source" + "title" ] }, "BlueprintInterface": { @@ -566,6 +565,14 @@ "$ref": "#/$defs/UIActionItem" }, "type": "array" + }, + "outputs": { + "patternProperties": { + ".*": { + "$ref": "#/$defs/DisplayOutput" + } + }, + "type": "object" } }, "additionalProperties": false, @@ -611,6 +618,18 @@ "name" ] }, + "DisplayOutput": { + "properties": { + "openInNewTab": { + "type": "boolean" + }, + "showInNotification": { + "type": "boolean" + } + }, + "additionalProperties": false, + "type": "object" + }, "DisplaySection": { "properties": { "name": { diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go index 874faf0b40d..50fc47a22a2 100644 --- a/cli/bpmetadata/schema/generate.go +++ b/cli/bpmetadata/schema/generate.go @@ -9,7 +9,7 @@ import ( "github.com/invopop/jsonschema" ) -const schemaFileName = "bpmetadataschema.json" +const schemaFileName = "gcp-blueprint-metadata.json" // generateSchema creates a JSON Schema based on the types // defined in the type BlueprintMetadata and it's recursive @@ -40,6 +40,7 @@ func generateSchemaFile(o, wdPath string) error { func GenerateSchema() ([]byte, error) { r := &jsonschema.Reflector{} s := r.Reflect(&bpmetadata.BlueprintMetadata{}) + s.Version = "http://json-schema.org/draft-07/schema#" sData, err := json.MarshalIndent(s, "", " ") if err != nil { return nil, err diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go index 035797ab2fc..7933dda37f8 100644 --- a/cli/bpmetadata/types.go +++ b/cli/bpmetadata/types.go @@ -5,33 +5,47 @@ import ( ) // BlueprintMetadata defines the overall structure for blueprint metadata. +// The cli command i.e. `cft blueprint metadata` attempts at auto-generating +// metadata if the blueprint is structured based on the TF blueprint template +// i.e. https://github.com/terraform-google-modules/terraform-google-module-template +// All fields within BlueprintMetadata and its children are denoted as: +// - Gen: auto-generated - +// - Gen: manually-authored +// - Gen: partial (contains child nodes that can be both auto-generated and manually authored) type BlueprintMetadata struct { + // Gen: auto-generated yaml.ResourceMeta `json:",inline" yaml:",inline"` - Spec BlueprintMetadataSpec `json:"spec" yaml:"spec"` + // Gen: partial + Spec BlueprintMetadataSpec `json:"spec" yaml:"spec"` } // BlueprintMetadataSpec defines the spec portion of the blueprint metadata. -// All immediate types within BlueprintMetadataSpec are inline and will -// not appear as nodes in metadata. type BlueprintMetadataSpec struct { - Info BlueprintInfo `json:"info,omitempty" yaml:"info,omitempty"` - Content BlueprintContent `json:"content,omitempty" yaml:"content,omitempty"` - Interfaces BlueprintInterface `json:"interfaces,omitempty" yaml:"interfaces,omitempty"` + // Gen: partial + Info BlueprintInfo `json:"info,omitempty" yaml:"info,omitempty"` + // Gen: partial + Content BlueprintContent `json:"content,omitempty" yaml:"content,omitempty"` + // Gen: partial + Interfaces BlueprintInterface `json:"interfaces,omitempty" yaml:"interfaces,omitempty"` + // Gen: auto-generated Requirements BlueprintRequirements `json:"requirements,omitempty" yaml:"requirements,omitempty"` - UI BlueprintUI `json:"ui,omitempty" yaml:"ui,omitempty"` + // Gen: partial + UI BlueprintUI `json:"ui,omitempty" yaml:"ui,omitempty"` } type BlueprintInfo struct { // Title for the blueprint. - // Autogenerated: First H1 text in readme.md. + // Gen: auto-generated - First H1 text in readme.md. Title string `json:"title" yaml:"title"` // Blueprint source location and source type. - // Autogen details in BlueprintRepoDetail. - Source *BlueprintRepoDetail `json:"source" yaml:"source"` + // Gen: auto-generated - user will be prompted if repo information can not + // be determined from the blueprint path. + Source *BlueprintRepoDetail `json:"source,omitempty" yaml:"source,omitempty"` // Last released semantic version for the packaged blueprint. - // Autogenerated: From the `module_name` attribute of the `provider_meta "google"` block. + // Gen: auto-generated - From the `module_name` attribute of + // the `provider_meta "google"` block. // E.g. // provider_meta "google" { // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" @@ -39,106 +53,110 @@ type BlueprintInfo struct { Version string `json:"version,omitempty" yaml:"version,omitempty"` // Actuation tool e.g. Terraform and its required version. - // Autogen details in BlueprintActuationTool. + // Gen: auto-generated ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` // Various types of descriptions associated with the blueprint. - // Autogen details in BlueprintDescription. + // Gen: auto-generated Description *BlueprintDescription `json:"description,omitempty" yaml:"description,omitempty"` // Path to an image representing the icon for the blueprint. - // Will be set as "assets/icon.png", if present. Otherwise, it - // can be manually authored. + // Will be set as "assets/icon.png", if present. + // Gen: auto-generated Icon string `json:"icon,omitempty" yaml:"icon,omitempty"` // The time estimate for configuring and deploying the blueprint. - // Autogen details in BlueprintTimeEstimate. + // Gen: auto-generated DeploymentDuration BlueprintTimeEstimate `json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"` // The cost estimate for the blueprint based on preconfigured variables. - // Autogen details in BlueprintCostEstimate. + // Gen: auto-generated CostEstimate BlueprintCostEstimate `json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"` // A list of GCP cloud products used in the blueprint. - // Manually authored. + // Gen: manually-authored CloudProducts []BlueprintCloudProduct `json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` // A list of GCP org policies to be checked for successful deployment. + // Gen: manually-authored OrgPolicyChecks []BlueprintOrgPolicyCheck `json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty"` // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. - // Manually authored. + // Gen: manually-authored QuotaDetails []BlueprintQuotaDetail `json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` // Details on the author producing the blueprint. - // Manually authored. + // Gen: manually-authored Author BlueprintAuthor `json:"author,omitempty" yaml:"author,omitempty"` // Details on software installed as part of the blueprint. - // Manually authored. + // Gen: manually-authored SoftwareGroups []BlueprintSoftwareGroup `json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` // Support offered, if any for the blueprint. - // Manually authored. + // Gen: manually-authored SupportInfo BlueprintSupport `json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` // Specifies if the blueprint supports single or multiple deployments per GCP project. // If set to true, the blueprint can not be deployed more than once in the same GCP project. + // Gen: manually-authored SingleDeployment bool `json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty"` } type BlueprintRepoDetail struct { - // Autogenerated: URL from the .git dir. + // Gen: auto-generated - URL from the .git dir. // Can be manually overridden with a custom URL if needed. Repo string `json:"repo" yaml:"repo"` - // Set as "git" for now until more types are supported. + // Gen: auto-generated - set as "git" for now until more + // types are supported. SourceType string `json:"sourceType" yaml:"sourceType"` - // optional directory location for a submodule + // Gen: auto-generated - not set for root modules but + // set as the module name for submodules, if found. Dir string `json:"dir,omitempty" yaml:"dir,omitempty"` } type BlueprintActuationTool struct { - // Set as "Terraform" for now until more flavors are supported. + // Gen: auto-generated - set as "Terraform" for now until + //more flavors are supported. Flavor string `json:"flavor,omitempty" yaml:"flavor,omitempty"` // Required version for the actuation tool. - // Autogenerated: For Terraform this is the `required_version` set in - // `terraform` block. E.g. + // Gen: auto-generated - For Terraform this is the `required_version` + // set in `terraform` block. E.g. // terraform { // required_version = ">= 0.13" // } Version string `json:"version,omitempty" yaml:"version,omitempty"` } +// All descriptions are set with the markdown content immediately +// after each type's heading declaration in readme.md. type BlueprintDescription struct { - // Autogenerated: All types of descriptions are set with the markdown content - // immediately after each type's heading declaration in readme.md. - - // Autogenerated: Markdown after "### Tagline". + // Gen: auto-generated - Markdown after "### Tagline". Tagline string `json:"tagline,omitempty" yaml:"tagline,omitempty"` - // Autogenerated: Markdown after "### Detailed". + // Gen: auto-generated - Markdown after "### Detailed". Detailed string `json:"detailed,omitempty" yaml:"detailed,omitempty"` - // Autogenerated: Markdown after "### PreDeploy". + // Gen: auto-generated - Markdown after "### PreDeploy". PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` - // Autogenerated: Markdown after "### Html". + // Gen: auto-generated - Markdown after "### Html". HTML string `json:"html,omitempty" yaml:"html,omitempty"` - // Autogenerated: Markdown after "### EulaUrls". + // Gen: auto-generated - Markdown after "### EulaUrls". EulaURLs []string `json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"` - // Autogenerated: Markdown after "### Architecture" + // Gen: auto-generated - Markdown after "### Architecture" // Deprecated. Use BlueprintContent.Architecture instead. Architecture []string `json:"architecture,omitempty" yaml:"architecture,omitempty"` } // A time estimate in secs required for configuring and deploying the blueprint. type BlueprintTimeEstimate struct { - // Autogenerated: Set using the content defined under "### DeploymentTime" E.g. + // Gen: auto-generated - Set using the content defined under "### DeploymentTime" E.g. // ### DeploymentTime // - Configuration: X secs // - Deployment: Y secs @@ -146,32 +164,35 @@ type BlueprintTimeEstimate struct { DeploymentSecs int `json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` } -// The cost estimate for the blueprint based on preconfigured variables. +// The cost estimate for the blueprint based on pre-configured variables. type BlueprintCostEstimate struct { - // Autogenerated: Set using the content defined under "### Cost" as a link + // Gen: auto-generated - Set using the content defined under "### Cost" as a link // with a description E.g. // ### Cost - // [View cost details](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) + // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) Description string `json:"description" yaml:"description"` URL string `json:"url" yaml:"url"` } -// A GCP cloud product used in the blueprint. -// Manually authored. +// GCP cloud product(s) used in the blueprint. type BlueprintCloudProduct struct { // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") // product used in the blueprint. + // Gen: manually-authored ProductId string `json:"productId,omitempty" yaml:"productId,omitempty"` // Url for the product. + // Gen: manually-authored PageURL string `json:"pageUrl" yaml:"pageUrl"` // A label string for the product, if it is not an integrated GCP product. // E.g. "Data Studio" + // Gen: manually-authored Label string `json:"label,omitempty" yaml:"label,omitempty"` // Is the product's landing page external to the GCP console e.g. // lookerstudio.google.com + // Gen: manually-authored IsExternal bool `json:"isExternal,omitempty" yaml:"isExternal,omitempty"` } @@ -179,10 +200,12 @@ type BlueprintCloudProduct struct { // for successful deployment type BlueprintOrgPolicyCheck struct { // Id for the policy e.g. "compute-vmExternalIpAccess" + // Gen: manually-authored PolicyId string `json:"policyId" yaml:"policyId"` // If not set, it is assumed any version of this org policy // prevents successful deployment of this solution. + // Gen: manually-authored RequiredValues []string `json:"requiredValues,omitempty" yaml:"requiredValues,omitempty"` } @@ -207,25 +230,31 @@ type BlueprintQuotaDetail struct { // DynamicVariable, if provided, associates the provided input variable // with the corresponding resource and quota type. In its absence, the quota // detail is assumed to be fixed. + // Gen: manually-authored DynamicVariable string `json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty"` // ResourceType is the type of resource the quota will be applied to i.e. // GCE Instance or Disk etc. + // Gen: manually-authored ResourceType QuotaResourceType `json:"resourceType" yaml:"resourceType" jsonschema:"enum=QRT_GCE_INSTANCE,enum=QRT_GCE_DISK,enum=QRT_UNDEFINED"` // QuotaType is a key/value pair of the actual quotas and their corresponding // values. + // Gen: manually-authored QuotaType map[QuotaType]string `json:"quotaType" yaml:"quotaType"` } type BlueprintAuthor struct { // Name of template author or organization. + // Gen: manually-authored Title string `json:"title" yaml:"title"` // Description of the author. + // Gen: manually-authored Description string `json:"description,omitempty" yaml:"description,omitempty"` // Link to the author's website. + // Gen: manually-authored URL string `json:"url,omitempty" yaml:"url,omitempty"` } @@ -239,9 +268,11 @@ const ( // A group of related software components for the blueprint. type BlueprintSoftwareGroup struct { // Pre-defined software types. + // Gen: manually-authored Type SoftwareGroupType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=SG_UNSPECIFIED,enum=SG_OS"` // Software components belonging to this group. + // Gen: manually-authored Software []BlueprintSoftware `json:"software,omitempty" yaml:"software,omitempty"` } @@ -249,77 +280,116 @@ type BlueprintSoftwareGroup struct { // installed by the blueprint. type BlueprintSoftware struct { // User-visible title. + // Gen: manually-authored Title string `json:"title" yaml:"title"` // Software version. + // Gen: manually-authored Version string `json:"version,omitempty" yaml:"version,omitempty"` // Link to development site or marketing page for this software. + // Gen: manually-authored URL string `json:"url,omitempty" yaml:"url,omitempty"` // Link to license page. + // Gen: manually-authored LicenseURL string `json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"` } // A description of a support option type BlueprintSupport struct { - //Description of the support option. + // Description of the support option. + // Gen: manually-authored Description string `json:"description" yaml:"description"` // Link to the page providing this support option. + // Gen: manually-authored URL string `json:"url,omitempty" yaml:"url,omitempty"` // The organization or group that provides the support option (e.g.: // "Community", "Google"). + // Gen: manually-authored Entity string `json:"entity,omitempty" yaml:"entity,omitempty"` // Whether to show the customer's support ID. + // Gen: manually-authored ShowSupportId bool `json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"` } // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. type BlueprintContent struct { - // Diagrams are manually entered. - Architecture BlueprintArchitecture `json:"architecture,omitempty" yaml:"architecture,omitempty"` - Diagrams []BlueprintDiagram `json:"diagrams,omitempty" yaml:"diagrams,omitempty"` + // Gen: auto-generated + Architecture BlueprintArchitecture `json:"architecture,omitempty" yaml:"architecture,omitempty"` + + // Gen: manually-authored + Diagrams []BlueprintDiagram `json:"diagrams,omitempty" yaml:"diagrams,omitempty"` + + // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. + // ## Documentation + // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) Documentation []BlueprintListContent `json:"documentation,omitempty" yaml:"documentation,omitempty"` + + // Gen: auto-generated - blueprints under the modules/ folder. SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` - Examples []BlueprintMiscContent `json:"examples,omitempty" yaml:"examples,omitempty"` + + // Gen: auto-generated - examples under the examples/ folder. + Examples []BlueprintMiscContent `json:"examples,omitempty" yaml:"examples,omitempty"` } // BlueprintInterface defines the input and output variables for the blueprint. type BlueprintInterface struct { + // Gen: auto-generated - all defined variables for the blueprint Variables []BlueprintVariable `json:"variables,omitempty" yaml:"variables,omitempty"` - // VariableGroups are manually entered. + + // Gen: manually-authored VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` - Outputs []BlueprintOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` + + // Gen: auto-generated - all defined outputs for the blueprint + Outputs []BlueprintOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` } // BlueprintRequirements defines the roles required and the associated services // that need to be enabled to provision blueprint resources. type BlueprintRequirements struct { - Roles []BlueprintRoles `json:"roles,omitempty" yaml:"roles,omitempty"` - Services []string `json:"services,omitempty" yaml:"services,omitempty"` -} + // Gen: auto-generated - all roles required for the blueprint in test/setup/iam.tf + // as the "int_required_roles" local. E.g. + // locals { + // int_required_roles = [ + // "roles/compute.admin", + // ] + // } + Roles []BlueprintRoles `json:"roles,omitempty" yaml:"roles,omitempty"` -type BlueprintMiscContent struct { - Name string `json:"name" yaml:"name"` - Location string `json:"location,omitempty" yaml:"location,omitempty"` + // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf + // as "activate_apis" in the project module. + Services []string `json:"services,omitempty" yaml:"services,omitempty"` } type BlueprintArchitecture struct { - DiagramURL string `json:"diagramUrl" yaml:"diagramUrl"` + // Gen: auto-generated - the URL & list content following the "## Architecture" tag e.g. + // ## Architecture + // ![Blueprint Architecture](assets/architecture.png) + // 1. Step no. 1 + // 2. Step no. 2 + // 3. Step no. 3 + DiagramURL string `json:"diagramUrl" yaml:"diagramUrl"` + + // Gen: auto-generated - the list items following the "## Architecture" tag. Description []string `json:"description" yaml:"description"` } -// BlueprintDiagram is manually entered. type BlueprintDiagram struct { Name string `json:"name" yaml:"name"` AltText string `json:"altText,omitempty" yaml:"altText,omitempty"` Description string `json:"description,omitempty" yaml:"description,omitempty"` } +type BlueprintMiscContent struct { + Name string `json:"name" yaml:"name"` + Location string `json:"location,omitempty" yaml:"location,omitempty"` +} + type BlueprintListContent struct { Title string `json:"title" yaml:"title"` URL string `json:"url,omitempty" yaml:"url,omitempty"` @@ -333,7 +403,6 @@ type BlueprintVariable struct { Required bool `json:"required,omitempty" yaml:"required,omitempty"` } -// BlueprintVariableGroup is manually entered. type BlueprintVariableGroup struct { Name string `json:"name" yaml:"name"` Description string `json:"description,omitempty" yaml:"description,omitempty"` diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go index 59a1b36b9be..957fab7f6d4 100644 --- a/cli/bpmetadata/types_ui.go +++ b/cli/bpmetadata/types_ui.go @@ -4,20 +4,23 @@ package bpmetadata type BlueprintUI struct { // The top-level input section that defines the list of variables and // their sections on the deployment page. + // Gen: partial Input BlueprintUIInput `json:"input,omitempty" yaml:"input,omitempty"` // The top-level section for listing runtime (or blueprint output) information // i.e. the console URL for the VM or a button to ssh into the VM etc based on. + // Gen: manually-authored Runtime BlueprintUIOutput `json:"runtime,omitempty" yaml:"runtime,omitempty"` } // BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. type BlueprintUIInput struct { - // variables is a map defining all inputs on the UI. + // Gen: partial Variables map[string]*DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"` // Sections is a generic structure for grouping inputs together. + // Gen: manually-authored Sections []DisplaySection `json:"sections,omitempty" yaml:"sections,omitempty"` } @@ -25,50 +28,65 @@ type BlueprintUIInput struct { // input variable. type DisplayVariable struct { // The variable name from the corresponding standard metadata file. + // Gen: auto-generated - the Terraform variable name Name string `json:"name" yaml:"name"` // Visible title for the variable on the UI. If not present, // Name will be used for the Title. + // Gen: auto-generated - the Terraform variable converted to title case e.g. + // variable "bucket_admins" will convert to "Bucket Admins" as the title. Title string `json:"title" yaml:"title"` // A flag to hide or show the variable on the UI. + // Gen: manually-authored Invisible bool `json:"invisible,omitempty" yaml:"invisible,omitempty"` // Variable tooltip. + // Gen: manually-authored Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // Placeholder text (when there is no default). + // Gen: manually-authored Placeholder string `json:"placeholder,omitempty" yaml:"placeholder,omitempty"` // Text describing the validation rules for the property. Typically shown // after an invalid input. // Optional. UTF-8 text. No markup. At most 128 characters. + // Gen: manually-authored Validation string `json:"validation,omitempty" yaml:"validation,omitempty"` // Regex based validation rules for the variable. + // Gen: manually-authored RegExValidation string `json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` // Minimum no. of inputs for the input variable. + // Gen: manually-authored MinimumItems int `json:"minItems,omitempty" yaml:"minItems,omitempty"` // Max no. of inputs for the input variable. + // Gen: manually-authored MaximumItems int `json:"maxItems,omitempty" yaml:"maxItems,omitempty"` // Minimum length for string values. + // Gen: manually-authored MinimumLength int `json:"minLength,omitempty" yaml:"minLength,omitempty"` // Max length for string values. + // Gen: manually-authored MaximumLength int `json:"maxLength,omitempty" yaml:"maxLength,omitempty"` // Minimum value for numeric types. + // Gen: manually-authored Minimum float32 `json:"min,omitempty" yaml:"min,omitempty"` // Max value for numeric types. + // Gen: manually-authored Maximum float32 `json:"max,omitempty" yaml:"max,omitempty"` // The name of a section to which this variable belongs. // variables belong to the root section if this field is // not set. + // Gen: manually-authored Section string `json:"section,omitempty" yaml:"section,omitempty"` // UI extension associated with the input variable. @@ -80,6 +98,7 @@ type DisplayVariable struct { // gceMachineType: // minCpu: 2 // minRamGb: 6 + // Gen: manually-authored XGoogleProperty GooglePropertyExtension `json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty"` } @@ -88,50 +107,80 @@ type DisplayVariable struct { type DisplaySection struct { // The name of the section, referenced by DisplayVariable.Section // Section names must be unique. + // Gen: manually-authored Name string `json:"name" yaml:"name"` // Section title. // If not provided, name will be used instead. + // Gen: manually-authored Title string `json:"title,omitempty" yaml:"title,omitempty"` // Section tooltip. + // Gen: manually-authored Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // Section subtext. + // Gen: manually-authored Subtext string `json:"subtext,omitempty" yaml:"subtext,omitempty"` // The name of the parent section (if parent is not the root section). + // Gen: manually-authored Parent string `json:"parent,omitempty" yaml:"parent,omitempty"` } type BlueprintUIOutput struct { // Short message to be displayed while the blueprint is deploying. // At most 128 characters. + // Gen: manually-authored OutputMessage string `json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"` // List of suggested actions to take. + // Gen: manually-authored SuggestedActions []UIActionItem `json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"` + + // Outputs is a map defining a subset of Terraform outputs on the UI + // that may need additional UI configuration. + // Gen: manually-authored + Outputs map[string]DisplayOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` } // An item appearing in a list of required or suggested steps. type UIActionItem struct { // Summary heading for the item. // Required. Accepts string expressions. At most 64 characters. + // Gen: manually-authored Heading string `json:"heading" yaml:"heading"` // Longer description of the item. // At least one description or snippet is required. // Accepts string expressions. HTML <a href> // tags only. At most 512 characters. + // Gen: manually-authored Description string `json:"description,omitempty" yaml:"description,omitempty"` // Fixed-width formatted code snippet. // At least one description or snippet is required. // Accepts string expressions. UTF-8 text. At most 512 characters. + // Gen: manually-authored Snippet string `json:"snippet,omitempty" yaml:"snippet,omitempty"` // If present, this expression determines whether the item is shown. // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP // where `externalIP` is the output. + // Gen: manually-authored ShowIf string `json:"showIf,omitempty" yaml:"showIf,omitempty"` } + +// Additional display specific metadata pertaining to a particular +// Terraform output. +type DisplayOutput struct { + // OpenInNewTab defines if the Output action should be opened + // in a new tab. + // Gen: manually-authored + OpenInNewTab bool `json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty"` + + // ShowInNotification defines if the Output should shown in + // notification for the deployment. + // Gen: manually-authored + ShowInNotification bool `json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` +} diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go index e66afdfa4b7..e949205adba 100644 --- a/cli/bpmetadata/types_ui_ext.go +++ b/cli/bpmetadata/types_ui_ext.go @@ -37,14 +37,17 @@ const ( // extension defines Google-specifc metadata necessary for choosing an // appropriate input widget or adding restrictions to GCP-specific resources. type GooglePropertyExtension struct { + // Gen: manually-authored Type ExtensionType `json:"type" yaml:"type" jsonschema:"enum=ET_EMAIL_ADDRESS,enum=ET_MULTI_LINE_STRING,enum=ET_GCE_DISK_IMAGE,enum=ET_GCE_DISK_TYPE,enum=ET_GCE_DISK_SIZE,enum=ET_GCE_MACHINE_TYPE,enum=ET_GCE_NETWORK,enum=ET_GCE_ZONE,enum=ET_GCE_SUBNETWORK,enum=ET_GCE_REGION,enum=ET_GCE_GPU_TYPE,enum=ET_GCE_GPU_COUNT,enum=ET_GCE_EXTERNAL_IP,enum=ET_GCE_IP_FORWARDING,enum=ET_GCE_FIREWALL,enum=ET_GCE_FIREWALL_RANGE,enum=ET_GCE_GENERIC_RESOURCE,enum=ET_GCS_BUCKET,enum=ET_IAM_SERVICE_ACCOUNT"` // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to // determine the set of allowable values. This field references another // property from the schema, which must have type GCE_ZONE. + // Gen: manually-authored ZoneProperty string `json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"` // Property-specific extensions. + // Gen: manually-authored (all property extensions and their child properties) GCEMachineType GCEMachineTypeExtension `json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty"` GCEDiskSize GCEDiskSizeExtension `json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty"` GCESubnetwork GCESubnetworkExtension `json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty"` diff --git a/cli/bpmetadata/validate.go b/cli/bpmetadata/validate.go index 7e929bd91cf..714947aa953 100644 --- a/cli/bpmetadata/validate.go +++ b/cli/bpmetadata/validate.go @@ -11,7 +11,7 @@ import ( "sigs.k8s.io/yaml" ) -//go:embed schema/bpmetadataschema.json +//go:embed schema/gcp-blueprint-metadata.json var s []byte // validateMetadata validates the metadata files for the provided @@ -27,8 +27,8 @@ func validateMetadata(bpPath, wdPath string) error { } // We don't need to validate metadata under .terraform folders - skipDirsToValidate := []string{".terraform"} - metadataFiles, err := util.FindFilesWithPattern(bpPath, `.*/metadata(?:.display)?.yaml$`, skipDirsToValidate) + skipDirsToValidate := []string{".terraform/"} + metadataFiles, err := util.FindFilesWithPattern(bpPath, `^metadata(?:.display)?.yaml$`, skipDirsToValidate) if err != nil { Log.Error("unable to read at: %s", bpPath, "err", err) } diff --git a/cli/bpmetadata/validate_test.go b/cli/bpmetadata/validate_test.go index 53cc22636a8..785b85ef0e0 100644 --- a/cli/bpmetadata/validate_test.go +++ b/cli/bpmetadata/validate_test.go @@ -28,7 +28,7 @@ func TestValidateMetadata(t *testing.T) { wantErr: false, }, { - name: "invalid metadata - source missing", + name: "invalid metadata - title missing", path: "invalid-metadata.yaml", wantErr: true, }, @@ -44,7 +44,7 @@ func TestValidateMetadata(t *testing.T) { } // load schema from the binary - s := gojsonschema.NewReferenceLoader("file://schema/bpmetadataschema.json") + s := gojsonschema.NewReferenceLoader("file://schema/gcp-blueprint-metadata.json") for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/cli/testdata/bpmetadata/content/examples/acm/metadata.yaml b/cli/testdata/bpmetadata/content/examples/acm/metadata.yaml index e69de29bb2d..27ac3f5ca8a 100644 --- a/cli/testdata/bpmetadata/content/examples/acm/metadata.yaml +++ b/cli/testdata/bpmetadata/content/examples/acm/metadata.yaml @@ -0,0 +1,7 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-acm +spec: + info: + title: Terraform Google Module ACM diff --git a/cli/testdata/bpmetadata/content/examples/acm/modules/submodule-01/README.md b/cli/testdata/bpmetadata/content/examples/acm/modules/submodule-01/README.md new file mode 100644 index 00000000000..b904c60be62 --- /dev/null +++ b/cli/testdata/bpmetadata/content/examples/acm/modules/submodule-01/README.md @@ -0,0 +1 @@ +# ACM - Submodule 01 diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional/README.md b/cli/testdata/bpmetadata/content/examples/simple_regional/README.md index e69de29bb2d..35e173a0e14 100644 --- a/cli/testdata/bpmetadata/content/examples/simple_regional/README.md +++ b/cli/testdata/bpmetadata/content/examples/simple_regional/README.md @@ -0,0 +1,3 @@ +# Simple Regional + +This is a simple blueprint diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional/metadata.yaml b/cli/testdata/bpmetadata/content/examples/simple_regional/metadata.yaml new file mode 100644 index 00000000000..b82a85e7d27 --- /dev/null +++ b/cli/testdata/bpmetadata/content/examples/simple_regional/metadata.yaml @@ -0,0 +1,10 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: simple-regional +spec: + info: + title: Simple Regional + source: + repo: https://github.com/GoogleCloudPlatform/simple-regional + sourceType: git diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional/modules/submodule-01/main.tf b/cli/testdata/bpmetadata/content/examples/simple_regional/modules/submodule-01/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cli/testdata/bpmetadata/content/examples/simple_regional_beta/modules/submodule-01/README.md b/cli/testdata/bpmetadata/content/examples/simple_regional_beta/modules/submodule-01/README.md new file mode 100644 index 00000000000..e7ff51f3a09 --- /dev/null +++ b/cli/testdata/bpmetadata/content/examples/simple_regional_beta/modules/submodule-01/README.md @@ -0,0 +1 @@ +# Simple Regional Beta - Submodule 01 diff --git a/cli/testdata/bpmetadata/schema/invalid-metadata.yaml b/cli/testdata/bpmetadata/schema/invalid-metadata.yaml index a7624008083..afae8314b17 100644 --- a/cli/testdata/bpmetadata/schema/invalid-metadata.yaml +++ b/cli/testdata/bpmetadata/schema/invalid-metadata.yaml @@ -1,7 +1,4 @@ apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: - name: terraform-google-module -spec: - info: - title: Terraform Google Module + name: terraform-google-module diff --git a/cli/util/file.go b/cli/util/file.go index 8f671fcdbfb..33163876ec7 100644 --- a/cli/util/file.go +++ b/cli/util/file.go @@ -69,7 +69,7 @@ func FindFilesWithPattern(dir string, pattern string, skipPaths []string) ([]str return err } - if !re.MatchString(path) { + if !re.MatchString(filepath.Base(path)) { return nil } diff --git a/cli/util/file_test.go b/cli/util/file_test.go index 8da1bce0f9f..70c55912b36 100644 --- a/cli/util/file_test.go +++ b/cli/util/file_test.go @@ -67,11 +67,12 @@ func TestFindFilesWithPattern(t *testing.T) { { name: "pattern for metadata files", path: "", - pattern: `.*/metadata(?:.display)?.yaml$`, + pattern: `^metadata(?:.display)?.yaml$`, want: []string{ "../testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform/metadata.yaml", "../testdata/bpmetadata/content/examples/acm/metadata.display.yaml", "../testdata/bpmetadata/content/examples/acm/metadata.yaml", + "../testdata/bpmetadata/content/examples/simple_regional/metadata.yaml", }, }, { @@ -80,6 +81,7 @@ func TestFindFilesWithPattern(t *testing.T) { pattern: `.+.tf$`, want: []string{ "../testdata/bpmetadata/content/examples/simple_regional/main.tf", + "../testdata/bpmetadata/content/examples/simple_regional/modules/submodule-01/main.tf", }, }, { @@ -91,6 +93,7 @@ func TestFindFilesWithPattern(t *testing.T) { pattern: `.+.tf$`, want: []string{ "../testdata/bpmetadata/content/examples/simple_regional/main.tf", + "../testdata/bpmetadata/content/examples/simple_regional/modules/submodule-01/main.tf", "../testdata/bpmetadata/content/examples/simple_regional_beta/main.tf", "../testdata/bpmetadata/content/examples/simple_regional_beta/variables.tf", }, @@ -105,12 +108,13 @@ func TestFindFilesWithPattern(t *testing.T) { pattern: `.+.tf$`, want: []string{ "../testdata/bpmetadata/content/examples/simple_regional/main.tf", + "../testdata/bpmetadata/content/examples/simple_regional/modules/submodule-01/main.tf", }, }, { name: "pattern for avoiding non-metadata yaml files", path: "schema", - pattern: `.*/metadata(?:.display)?.yaml$`, + pattern: `^metadata(?:.display)?.yaml$`, want: []string{}, }, { diff --git a/cli/util/git.go b/cli/util/git.go index 978cd8d3627..312af618444 100644 --- a/cli/util/git.go +++ b/cli/util/git.go @@ -3,6 +3,7 @@ package util import ( "fmt" "net/url" + "regexp" "strings" git "github.com/go-git/go-git/v5" @@ -10,6 +11,8 @@ import ( const defaultRemote = "origin" +var githubSSHRemoteRegex = regexp.MustCompile(`git@github.com:`) + // getRepoName finds upstream repo name from a given repo directory func GetRepoName(repoUrl string) (string, error) { if repoUrl == "" { @@ -28,23 +31,41 @@ func GetRepoName(repoUrl string) (string, error) { return repoName, nil } -// getRepoName finds upstream repo name from a given repo directory -func GetRepoUrl(dir string) (string, error) { +// GetRepoUrlAndRootPath finds upstream repo URL and the root local path +func GetRepoUrlAndRootPath(dir string) (string, string, error) { opt := &git.PlainOpenOptions{DetectDotGit: true} r, err := git.PlainOpenWithOptions(dir, opt) if err != nil { - return "", fmt.Errorf("error opening git dir %s: %w", dir, err) + return "", "", fmt.Errorf("error opening git dir %s: %w", dir, err) } + + repoRootPath := "" + repoURL := "" rm, err := r.Remote(defaultRemote) if err != nil { - return "", fmt.Errorf("error finding remote %s in git dir %s: %w", defaultRemote, dir, err) + return repoURL, repoRootPath, fmt.Errorf("error finding remote %s in git dir %s: %w", defaultRemote, dir, err) + } + + if len(rm.Config().URLs) > 0 { + repoURL = resolveRemoteGitHubSSHURLToHTTPS(rm.Config().URLs[0]) } - // validate remote URL - remoteURL, err := url.Parse(rm.Config().URLs[0]) + if repoURL == "" { + return repoURL, repoRootPath, fmt.Errorf("no remote urls") + } + + w, err := r.Worktree() if err != nil { - return "", fmt.Errorf("error parsing remote URL: %w", err) + return repoURL, repoRootPath, fmt.Errorf("unable to parse worktree for git: %w", err) + } + repoRootPath = w.Filesystem.Root() + return repoURL, repoRootPath, nil +} + +func resolveRemoteGitHubSSHURLToHTTPS(URL string) string { + if !githubSSHRemoteRegex.MatchString(URL) { + return URL } - return remoteURL.String(), nil + return githubSSHRemoteRegex.ReplaceAllString(URL, "https://github.com/") } diff --git a/cli/util/git_test.go b/cli/util/git_test.go index 2daf6f0fbda..4bbf9b6a2f5 100644 --- a/cli/util/git_test.go +++ b/cli/util/git_test.go @@ -3,38 +3,39 @@ package util import ( "os" "path" + "strings" "testing" git "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/config" ) -func TestGetRepoUrl(t *testing.T) { +func TestGetRepoUrlAndRootPath(t *testing.T) { tests := []struct { name string repo string subDir string remote string - want string + wantURL string wantErr bool }{ { - name: "simple", - repo: "https://github.com/foo/bar", - remote: defaultRemote, - want: "https://github.com/foo/bar", + name: "simple", + repo: "https://github.com/foo/bar", + remote: defaultRemote, + wantURL: "https://github.com/foo/bar", }, { - name: "simple trailing", - repo: "https://gitlab.com/foo/bar/", - remote: defaultRemote, - want: "https://gitlab.com/foo/bar/", + name: "simple trailing", + repo: "https://gitlab.com/foo/bar/", + remote: defaultRemote, + wantURL: "https://gitlab.com/foo/bar/", }, { - name: "no scheme", - repo: "github.com/foo/bar", - remote: defaultRemote, - want: "github.com/foo/bar", + name: "no scheme", + repo: "github.com/foo/bar", + remote: defaultRemote, + wantURL: "github.com/foo/bar", }, { name: "invalid remote", @@ -43,24 +44,58 @@ func TestGetRepoUrl(t *testing.T) { wantErr: true, }, { - name: "simple w/ module sub directory", - repo: "https://github.com/foo/bar", - subDir: "modules/bp1", - remote: defaultRemote, - want: "https://github.com/foo/bar", + name: "simple w/ module sub directory", + repo: "https://github.com/foo/bar", + subDir: "modules/bp1", + remote: defaultRemote, + wantURL: "https://github.com/foo/bar", + }, + { + name: "simple w/ ssh remote", + repo: "git@github.com:foo/bar.git", + remote: defaultRemote, + wantURL: "https://github.com/foo/bar.git", + }, + { + name: "simple w/ module sub directory w/ ssh remote", + repo: "git@github.com:foo/bar.git", + remote: defaultRemote, + subDir: "modules/bp1", + wantURL: "https://github.com/foo/bar.git", + }, + { + name: "gitlab repo url should not be modified", + repo: "git@gitlab.com:foo/bar.git", + remote: defaultRemote, + wantURL: "git@gitlab.com:foo/bar.git", + }, + { + name: "empty repo url", + repo: "", + remote: defaultRemote, + wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { dir := tempGitRepoWithRemote(t, tt.repo, tt.remote, tt.subDir) - got, err := GetRepoUrl(dir) + gotURL, gotPath, err := GetRepoUrlAndRootPath(dir) if (err != nil) != tt.wantErr { - t.Errorf("GetRepoUrl() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf("GetRepoUrlAndRootPath() error = %v, wantErr %v", err, tt.wantErr) return } - if got != tt.want { - t.Errorf("GetRepoUrl() = %v, want %v", got, tt.want) + if gotURL != tt.wantURL { + t.Errorf("URL - GetRepoUrlAndRootPath() = %v, want %v", gotURL, tt.wantURL) + } + + wantPath := strings.TrimSuffix(strings.ReplaceAll(dir, tt.subDir, ""), "/") + if tt.wantErr { + wantPath = "" + } + + if gotPath != wantPath { + t.Errorf("RootPath - GetRepoUrlAndRootPath() = %v, want %v", gotPath, wantPath) } }) } From 8e9a1da5dba3eeea19e15e2e644532a4548f82c6 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 5 Jun 2023 14:31:37 -0500 Subject: [PATCH 0430/1371] chore: Update Tools to 1.12.4 (#1601) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 44f299cafec..420ac982a3d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.4.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 431.0.0 +CLOUD_SDK_VERSION := 433.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.8 @@ -30,9 +30,9 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.33 +KPT_VERSION := 1.0.0-beta.35 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.1.5 +CFT_CLI_VERSION := 1.1.8 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.25.10 TFLINT_VERSION := 0.41.0 @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 207d32bcc712c9835b65942134a5481070e24d64 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 7 Jun 2023 11:57:35 -0500 Subject: [PATCH 0431/1371] chore: Update Tools to 1.12.5 (#1653) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 420ac982a3d..d7c52581f68 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.4.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 433.0.1 +CLOUD_SDK_VERSION := 434.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.8 @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From df6107ab4c3ac7921a083c81c254ead70189d632 Mon Sep 17 00:00:00 2001 From: Imran Nayer Date: Thu, 8 Jun 2023 18:14:36 -0500 Subject: [PATCH 0432/1371] chore: added owner in modules: dns, nat, router, log-export , vpn, vpc-sc (#1655) --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index a080f1e66ff..018d0c31e45 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -245,12 +245,14 @@ locals { org = "terraform-google-modules" description = "Creates and manages Cloud DNS public or private zones and their records" topics = local.common_topics.net + owners = ["imrannayer"] }, { name = "terraform-google-cloud-nat" org = "terraform-google-modules" description = "Creates and configures Cloud NAT" topics = local.common_topics.net + owners = ["imrannayer"] }, { name = "terraform-google-cloud-operations" @@ -263,6 +265,7 @@ locals { org = "terraform-google-modules" description = "Manages a Cloud Router on Google Cloud" topics = local.common_topics.net + owners = ["imrannayer"] }, { name = "terraform-google-cloud-storage" @@ -387,6 +390,7 @@ locals { org = "terraform-google-modules" description = "Creates log exports at the project, folder, or organization level" topics = local.common_topics.ops + owners = ["imrannayer"] }, { name = "terraform-google-memorystore" @@ -405,6 +409,7 @@ locals { org = "terraform-google-modules" description = "Sets up a new VPC network on Google Cloud" topics = local.common_topics.net + owners = ["imrannayer"] }, { name = "terraform-google-org-policy" @@ -483,12 +488,14 @@ locals { org = "terraform-google-modules" description = "Handles opinionated VPC Service Controls and Access Context Manager configuration and deployments" topics = local.common_topics.net + owners = ["imrannayer"] }, { name = "terraform-google-vpn" org = "terraform-google-modules" description = "Sets up a Cloud VPN gateway" topics = local.common_topics.net + owners = ["imrannayer"] }, { short_name = "anthos-platform" From 773ff29bebee5c131c7d03ddb90ec43226519f7d Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Thu, 8 Jun 2023 17:00:01 -0700 Subject: [PATCH 0433/1371] chore: adding enable metadata env var for lint testing (#1599) --- infra/terraform/test-org/org/locals.tf | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 018d0c31e45..c23dfdbdb50 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -120,6 +120,9 @@ locals { description = "Deploys a web-based ecommerce app into a multi-cluster Google Kubernetes Engine setup." groups = ["dee-platform-ops", local.jss_common_group] enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-example-java-dynamic-point-of-sale" @@ -164,6 +167,9 @@ locals { topics = join(",", [local.common_topics.serverless, local.common_topics.db]) groups = [local.jss_common_group] enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-load-balanced-vms" @@ -171,6 +177,9 @@ locals { description = "Creates a Managed Instance Group with a loadbalancer" owners = ["tpryan"] topics = local.common_topics.net + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-secure-cicd" @@ -180,6 +189,9 @@ locals { topics = join(",", [local.common_topics.security, local.common_topics.devtools, local.common_topics.e2e]) enable_periodic = true groups = [local.jss_common_group] + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-media-cdn-vod" @@ -227,6 +239,9 @@ locals { description = "Creates opinionated BigQuery datasets and tables" topics = local.common_topics.da owners = ["davenportjw"] + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-bootstrap" @@ -576,6 +591,9 @@ locals { homepage_url = "avocano.dev" groups = [local.jss_common_group, "torus-dpe"] enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-example-deploy-java-multizone" @@ -585,6 +603,9 @@ locals { owners = ["donmccasland"] groups = [local.jss_common_group] enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-itar-architectures" @@ -607,6 +628,9 @@ locals { topics = local.common_topics.da groups = [local.jss_common_group] enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-alloy-db" @@ -630,6 +654,10 @@ locals { owners = ["donmccasland"] groups = [local.jss_common_group] enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } + }, { name = "terraform-google-crmint" @@ -645,6 +673,9 @@ locals { description = "Deploys a large data sharing Java web app" groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-large-data-sharing-golang-webapp" @@ -653,6 +684,9 @@ locals { description = "Deploys a large data sharing Golang web app" groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-ml-image-annotation-gcf" From 4a5dd8f6a7ccf5699bf6133eaa5d0d6f560ce956 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 9 Jun 2023 05:40:54 +0200 Subject: [PATCH 0434/1371] chore(deps): update terraform terraform-google-modules/project-factory/google to v14 (#1648) Co-authored-by: Awais Malik --- infra/modules/seed_project/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/modules/seed_project/main.tf b/infra/modules/seed_project/main.tf index a22abe762ad..a4cc6b4d9dc 100644 --- a/infra/modules/seed_project/main.tf +++ b/infra/modules/seed_project/main.tf @@ -27,7 +27,7 @@ locals { module "project_factory" { source = "terraform-google-modules/project-factory/google" - version = "~> 2.0" + version = "~> 14.0" random_project_id = "true" name = "${var.username}-seed" From 1b5cd8c2b45897ce803a7f021bc85aa2618261bd Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 13 Jun 2023 10:21:52 -0700 Subject: [PATCH 0435/1371] chore: change ci_team to triage (#1658) --- infra/terraform/modules/repositories/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index d7417840bc1..080422f38ad 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -95,5 +95,5 @@ resource "github_team_repository" "ci_teams" { } repository = each.value.repo team_id = each.value.team - permission = "pull" + permission = "triage" } From a8261e82ea284e97432c00015592650f0a05e358 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 13 Jun 2023 15:16:18 -0500 Subject: [PATCH 0436/1371] chore: Update Tools to 1.13.0 (#1660) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d7c52581f68..e4c71823907 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.4.6 +TERRAFORM_VERSION := 1.5.0 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 434.0.0 @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.12.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From e9f184e574f898af21d56769750642508e866ec9 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:20:08 -0700 Subject: [PATCH 0437/1371] chore(master): release blueprint-test 0.6.0 (#1629) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ffa1b7ec3f6..c6a9c133c71 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.5.2" + "infra/blueprint-test": "0.6.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index bf4d0e9e8fa..62775c4da53 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.6.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.5.2...infra/blueprint-test/v0.6.0) (2023-06-13) + + +### Features + +* update to bpt GO 1.20 and rework krm test ([#1619](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1619)) ([50c2ab3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/50c2ab3165ab5eb159a8569ec90cd1518d427b7c)) + ## [0.5.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.5.1...infra/blueprint-test/v0.5.2) (2023-05-11) From 8d9f0325bbd6a22c6e2975612ce2e46632c79512 Mon Sep 17 00:00:00 2001 From: davenportjw Date: Wed, 14 Jun 2023 22:29:23 -0600 Subject: [PATCH 0438/1371] fix: analytics-lakehouse owner (#1661) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index c23dfdbdb50..762643c66b1 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -624,7 +624,7 @@ locals { name = "terraform-google-analytics-lakehouse" org = "GoogleCloudPlatform" description = "Deploys a Lakehouse Architecture Solution" - owners = ["jasondavenport"] + owners = ["davenportjw"] topics = local.common_topics.da groups = [local.jss_common_group] enable_periodic = true From 5de21de8cf37d85e19bdefde7ae28c2995319d65 Mon Sep 17 00:00:00 2001 From: Don McCasland Date: Wed, 14 Jun 2023 21:53:46 -0700 Subject: [PATCH 0439/1371] chore: add terraform-dynamic-javascript-webapp repo (#1662) --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index d4c7c78910e..10135235038 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -32,6 +32,7 @@ locals { "anthos-samples" = "anthos-samples" "docs-samples" = "terraform-docs-samples" "dynamic-python-webapp" = "terraform-dynamic-python-webapp" + "dynamic-javascript-webapp" = "terraform-dynamic-javascript-webapp" "deploy-java-multizone" = "terraform-example-deploy-java-multizone" "ecommerce-microservices" = "terraform-ecommerce-microservices-on-gke" "deploy-java-gke" = "terraform-example-deploy-java-gke" diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 762643c66b1..1c3b61a79a2 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -595,6 +595,19 @@ locals { ENABLE_BPMETADATA = "1" } }, + { + name = "terraform-dynamic-javascript-webapp" + short_name = "dynamic-javascript-webapp" + org = "GoogleCloudPlatform" + description = "Deploy a dynamic javascript webapp" + owners = ["glasnt", "donmccasland"] + homepage_url = "avocano.dev" + groups = [local.jss_common_group, "torus-dpe"] + enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } + }, { name = "terraform-example-deploy-java-multizone" short_name = "deploy-java-multizone" From 7ce0cf58a870596612360fe6d2023c908ece1def Mon Sep 17 00:00:00 2001 From: Don McCasland Date: Wed, 14 Jun 2023 21:56:32 -0700 Subject: [PATCH 0440/1371] chore: removing deprecated private repos in HSAIntegration org (#1663) --- infra/terraform/test-org/ci-triggers/locals.tf | 1 - infra/terraform/test-org/org/locals.tf | 6 ------ 2 files changed, 7 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 10135235038..a2b76f296fe 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -36,7 +36,6 @@ locals { "deploy-java-multizone" = "terraform-example-deploy-java-multizone" "ecommerce-microservices" = "terraform-ecommerce-microservices-on-gke" "deploy-java-gke" = "terraform-example-deploy-java-gke" - "Migrate-Legacy-Java-App-GKE" = "Migrate-Legacy-Java-App-GKE" "large-data-sharing-java-app" = "terraform-large-data-sharing-java-webapp" "large-data-sharing-go-app" = "terraform-large-data-sharing-golang-webapp" "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 1c3b61a79a2..11e32e61129 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -627,12 +627,6 @@ locals { owners = ["gtsorbo"] topics = join(",", [local.common_topics.compute], ["compliance"]) }, - { - name = "Migrate-Legacy-Java-App-GKE" - org = "HSA-Integration" - description = "TODO" - owners = ["donmccasland"] - }, { name = "terraform-google-analytics-lakehouse" org = "GoogleCloudPlatform" From b9319ef8d8538a7b3c393315c9ea0ee935561df0 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 15 Jun 2023 08:25:49 -0700 Subject: [PATCH 0441/1371] chore: update test-org repos to GO 1.20 (#1664) --- infra/terraform/test-org/github/resources/renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index bb2b4788571..5d9e0435ea7 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -17,7 +17,7 @@ }, "separateMajorMinor":false, "constraints": { - "go": "1.18" + "go": "1.20" }, "packageRules": [ { @@ -40,7 +40,7 @@ { "matchDatasources": ["golang-version"], "rangeStrategy": "bump", - "allowedVersions": "<1.19.0", + "allowedVersions": "<1.21.0", "postUpdateOptions": ["gomodTidy"] }, { From a863984eb4aa391f32964d20e12b73a299816705 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 16 Jun 2023 07:57:25 -0700 Subject: [PATCH 0442/1371] chore: validate owners against gcp and tgm members (#1666) --- .../test-org/org/.terraform.lock.hcl | 22 +++++++++++ infra/terraform/test-org/org/github.tf | 38 +++++++++++++++++++ infra/terraform/test-org/org/outputs.tf | 8 +++- infra/terraform/test-org/org/versions.tf | 6 ++- 4 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 infra/terraform/test-org/org/github.tf diff --git a/infra/terraform/test-org/org/.terraform.lock.hcl b/infra/terraform/test-org/org/.terraform.lock.hcl index 10feafb3f0c..dfc2f5e5472 100644 --- a/infra/terraform/test-org/org/.terraform.lock.hcl +++ b/infra/terraform/test-org/org/.terraform.lock.hcl @@ -139,3 +139,25 @@ provider "registry.terraform.io/hashicorp/time" { "zh:fd59fa73074805c3575f08cd627eef7acda14ab6dac2c135a66e7a38d262201c", ] } + +provider "registry.terraform.io/integrations/github" { + version = "5.27.0" + constraints = "~> 5.0" + hashes = [ + "h1:mpeG01ZUNfC6Cjl7E93U9YTruRK7j49GgtQtTxy6Kik=", + "zh:06479e069d764b5ddf3380bb86c82bdd525bd8e4e53d3feae8c4ca97ceb14458", + "zh:0d3ee01b39c218c91999139b09a60d528e816968de1f86cfc08bf9010d696803", + "zh:233614291a6b76cb34966233ace8da50dd7dae539098837db7f108e3986e68d2", + "zh:3f3c864b3823954945fc44ca3f2ccfae5c0517d61b73e1fb2116f65a3ea550e4", + "zh:5e10c73a8f31af8350018ebfcca4272dd9f4790c01329c5bcd9b1d460e6e382c", + "zh:5ffaa077625a49166ef830a7dd4e55ad7cb83db24d9e97dda2258ce788380212", + "zh:6ff4565b53b23b45ae32ac0061a4949e9e648f4a55d31614b40d1c336a5c2b7a", + "zh:98de43fd2959c053f84ab4692ecf3f7ecb8e4936d7be3523701ffc18c6a4db45", + "zh:b99382b1cbe8bbb8c7dde4db58209403fa44f2128b6d955d242fcf8eb37a2d99", + "zh:ccc8b8086073ba1d139ef7003c85cff1d476ce018b0f42340ae6d0ba433bbaef", + "zh:cce3dcbd3b97382d7bea51a30bbede508b3e4e034a42efa856a1dcbdb361fbbf", + "zh:e7302ad2ab030ff77e0c2c3c62bf28fddd732a759b985a535fa4f0e030dd8eaf", + "zh:eaa6d6105bf5a62e945d3307cedac8a10ef8735aafc1b4842ea28cac398c5521", + "zh:f10f6173ce442bd78278c4ba4a8b8b48d7e66124657b478c2ae82b73035fc954", + ] +} diff --git a/infra/terraform/test-org/org/github.tf b/infra/terraform/test-org/org/github.tf new file mode 100644 index 00000000000..0465dcd1a80 --- /dev/null +++ b/infra/terraform/test-org/org/github.tf @@ -0,0 +1,38 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +locals { + owners = distinct( + flatten( + [for repo, val in local.repos : [for owner in val.owners : lower(owner)] if try(val.owners != null, false)] + ) + ) + + org_members = setunion( + [for login in data.github_organization.tgm.users[*].login : lower(login)], + [for login in data.github_organization.gcp.users[*].login : lower(login)] + ) + + invalid_owners = setsubtract(local.owners, local.org_members) +} + +data "github_organization" "tgm" { + name = "terraform-google-modules" +} + +data "github_organization" "gcp" { + name = "GoogleCloudPlatform" +} diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index f5e8151ab17..353a84d7409 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC + * Copyright 2019-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -102,6 +102,12 @@ output "ci_media_cdn_vod_project_id" { output "modules" { value = [for value in local.repos : value if try(value.module, true)] + + precondition { + condition = length(local.invalid_owners) == 0 + error_message = "Provided Repo Owners are not currently members of GCP or TGM Orgs: ${join(", ", local.invalid_owners)}" + } + } output "bpt_folder" { diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index b9e581dfca1..39a7bc08094 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC + * Copyright 2019-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,5 +32,9 @@ terraform { random = { version = ">= 2.3.1, < 4.0" } + github = { + source = "integrations/github" + version = "~> 5.0" + } } } From 0d05c48c9530741bd693655c31afbbe95b530851 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 18:18:26 +0200 Subject: [PATCH 0443/1371] chore(deps): update terraform terraform-google-modules/network/google to v7 (#1588) --- infra/blueprint-test/examples/simple_tf_module/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/examples/simple_tf_module/main.tf b/infra/blueprint-test/examples/simple_tf_module/main.tf index 9c0ba1e5f21..78e1378fd78 100644 --- a/infra/blueprint-test/examples/simple_tf_module/main.tf +++ b/infra/blueprint-test/examples/simple_tf_module/main.tf @@ -20,7 +20,7 @@ terraform { module "test-vpc-module" { source = "terraform-google-modules/network/google" - version = "~> 6.0" + version = "~> 7.0" project_id = var.project_id # Replace this with your project ID in quotes network_name = var.network_name mtu = 1460 From 5b588bed5b105ada5c2e431dd05cf756ab06d8b1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 18:33:11 +0200 Subject: [PATCH 0444/1371] chore(deps): update golangci/golangci-lint-action action to v3.6.0 (#1671) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index c48f14122ad..4b769136839 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -37,7 +37,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@5f1fec7010f6ae3b84ea4f7b2129beb8639b564f # v3.5.0 + uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0 with: version: latest working-directory: ${{ matrix.folder }} From b6ec4acf71582f4472fa803d85147269d62e5875 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 18:58:22 +0200 Subject: [PATCH 0445/1371] chore(deps): update actions/checkout digest to c85c95e (#1668) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- .github/workflows/lint.yaml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 47cd0aad242..6313fb20864 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -19,7 +19,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 4d398205874..9dde459d488 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index e0fb69c2588..f48ef3e9855 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 with: go-version-file: infra/build/developer-tools/build/scripts/module-swapper/go.mod diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 135ba328f78..dfc16658dfb 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab' # v3 + - uses: 'actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9' # v3 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index a785db98350..43d954a6a68 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 0b6d5c2b0d5..b4cba288813 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 7552ab0b93a..2dfe35ac407 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 6ec87588719..a5780aecda5 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -19,7 +19,7 @@ jobs: update-tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - name: Update Tools run: | PR_UPDATE_BODY="" From a90625723248deb57660230efff071f2aea66c10 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 19:20:56 +0200 Subject: [PATCH 0446/1371] chore(deps): update peter-evans/create-pull-request digest to eebb6cc (#1669) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index a5780aecda5..efc50254ac3 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@9ef70ee495af6d0ff9825b3e6050f304a290283a + uses: peter-evans/create-pull-request@eebb6ccce1e609378f84426acf60c49144cf2d3a with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From fd650b2565ab9fc7cdb4d7b8562a4309d7ef4576 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 19:22:38 +0200 Subject: [PATCH 0447/1371] chore(deps): update actions/checkout action to v3.5.3 (#1670) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 4b769136839..62a898db69e 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -27,7 +27,7 @@ jobs: with: go-version: '1.20' cache: false - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1 id: changes with: From b6ad2a2cdf86fc980462cb4c5087ff5d36de5c8b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 19:50:02 +0200 Subject: [PATCH 0448/1371] chore(deps): update terraform google to >= 3.45.0 (#1564) Co-authored-by: Andrew Peabody --- .../blueprint-test/examples/simple_tf_module_with_test/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf b/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf index b7060947fc8..cc1418d8fc1 100644 --- a/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf +++ b/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf @@ -15,7 +15,7 @@ */ provider "google" { - version = "~> 3.45.0" + version = ">= 3.45.0" } provider "null" { From 49fbdc42c35312ebb03fe186009e3012b9bc284a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 20:23:16 +0200 Subject: [PATCH 0449/1371] chore(deps): update terraform google to >= 3.0 (#1570) Co-authored-by: Andrew Peabody --- .../testdata/example-module-simple/examples/example-one/main.tf | 2 +- .../example-module-simple/examples/example-one/main.tf.good | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf index 443b8d53821..6ef2331ce7b 100644 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf +++ b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf @@ -15,7 +15,7 @@ */ provider "google" { - version = "~> 3.0" + version = ">= 3.0" } # [START cloudrouter_create] diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good index 2bc99efedda..88a72c1c5a8 100644 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good +++ b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good @@ -15,7 +15,7 @@ */ provider "google" { - version = "~> 3.0" + version = ">= 3.0" } # [START cloudrouter_create] From d4b3b89396a26c0438cb19bc3d57d50a71a1a18f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 21:02:51 +0200 Subject: [PATCH 0450/1371] chore(deps): update terraform terraform-google-modules/network/google to v7 (#1643) --- .../blueprint-test/examples/simple_tf_module_with_test/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf b/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf index cc1418d8fc1..08676de1fd8 100644 --- a/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf +++ b/infra/blueprint-test/examples/simple_tf_module_with_test/main.tf @@ -24,7 +24,7 @@ provider "null" { module "test-vpc-module" { source = "terraform-google-modules/network/google" - version = "~> 3.2.0" + version = "~> 7.0.0" project_id = var.project_id network_name = var.network_name mtu = 1460 From 68b4e6328023bfae93441cb56a2427df486180d2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 21:41:07 +0200 Subject: [PATCH 0451/1371] chore(deps): update terraform terraform-google-modules/cloud-storage/google to v4 (#1642) --- infra/terraform/test-org/ci-triggers/logs.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/logs.tf b/infra/terraform/test-org/ci-triggers/logs.tf index b081d67e6dd..d49d101f40a 100644 --- a/infra/terraform/test-org/ci-triggers/logs.tf +++ b/infra/terraform/test-org/ci-triggers/logs.tf @@ -16,7 +16,7 @@ module "filelogs_bucket" { source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket" - version = "~> 3.3" + version = "~> 4.0" name = "${local.project_id}-filelogs" project_id = local.project_id From 3d8fb932fcc19132a3d140caa00d6ceccb17bf88 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Jun 2023 23:59:40 +0200 Subject: [PATCH 0452/1371] fix(deps): update module google.golang.org/api to v0.127.0 (#1673) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index e4c71823907..51d42a16f7e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index cac7e628ca8..8518df3ef77 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.125.0 + google.golang.org/api v0.127.0 ) require ( @@ -18,7 +18,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect github.com/googleapis/gax-go/v2 v2.10.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index e3cf2376747..3b9d20e9c04 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -63,8 +63,8 @@ github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkj 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/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.10.0 h1:ebSgKfMxynOdxw8QQuFOKMgomqeLGPqNLQox2bo42zg= github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.125.0 h1:7xGvEY4fyWbhWMHf3R2/4w7L4fXyfpRGE9g6lp8+DCk= -google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.127.0 h1:v7rj0vA0imM3Ou81k1eyFxQNScLzn71EyGnJDr+V/XI= +google.golang.org/api v0.127.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= From 6ed538548fb9fd91a81663796efecb5e53c8a66e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 26 Jun 2023 16:39:00 -0700 Subject: [PATCH 0453/1371] fix: blueprint-test tests (#1675) --- infra/blueprint-test/build/int.cloudbuild.yaml | 6 +++++- .../test/terraform_simple_base_api_module_test.go | 4 ++-- infra/blueprint-test/test/terraform_simple_bpt_test.go | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 789d11f4628..389fc4a0a20 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -17,12 +17,16 @@ steps: name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && prepare_environment'] dir: 'infra/blueprint-test' +- id: test + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'git config --global user.name "cft-test"; git config --global user.email "<>"; go test'] + dir: 'infra/blueprint-test/test' - id: teardown name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && cleanup_environment'] dir: 'infra/blueprint-test' substitutions: - _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' + _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.12' options: env: diff --git a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go index b315047997f..b3b3f5d8c22 100644 --- a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go +++ b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go @@ -29,9 +29,9 @@ import ( func TestSimpleTFModule(t *testing.T) { path, _ := os.Getwd() - statePath := fmt.Sprintf("%s/../examples/local_backend.tfstate", path) + statePath := fmt.Sprintf("%s/../examples/simple_tf_module/local_backend.tfstate", path) nt := tft.NewTFBlueprintTest(t, - tft.WithTFDir("../examples"), + tft.WithTFDir("../examples/simple_tf_module"), tft.WithBackendConfig(map[string]interface{}{ "path": statePath, }), diff --git a/infra/blueprint-test/test/terraform_simple_bpt_test.go b/infra/blueprint-test/test/terraform_simple_bpt_test.go index fa918df06ba..488243487a2 100644 --- a/infra/blueprint-test/test/terraform_simple_bpt_test.go +++ b/infra/blueprint-test/test/terraform_simple_bpt_test.go @@ -28,9 +28,9 @@ import ( func TestCFTSimpleModule(t *testing.T) { path, _ := os.Getwd() - statePath := fmt.Sprintf("%s/../examples/local_backend.tfstate", path) + statePath := fmt.Sprintf("%s/../examples/simple_tf_module/local_backend.tfstate", path) networkBlueprint := tft.NewTFBlueprintTest(t, - tft.WithTFDir("../examples"), + tft.WithTFDir("../examples/simple_tf_module"), tft.WithBackendConfig(map[string]interface{}{ "path": statePath, }), From bd4734e5802c4d977eb6ab32f693434cf918a74d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 26 Jun 2023 17:12:32 -0700 Subject: [PATCH 0454/1371] chore: disable renovate terraform modules (#1676) --- .github/renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index 76860ae5d26..a25b5adcfa7 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -30,8 +30,9 @@ "groupName": "terraform google provider" }, { + "matchManagers": ["terraform"], "matchDepTypes": ["module"], - "groupName": "terraform modules" + "enabled": false }, { "matchDepTypes": ["require"], From 4c9aaeca68db7198165d52227b3d03752d8f817d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 26 Jun 2023 19:27:00 -0700 Subject: [PATCH 0455/1371] fix: update bpt go modules (#1677) --- infra/blueprint-test/go.mod | 10 +++++----- infra/blueprint-test/go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 23c622df9fe..f3d676aee02 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,13 +4,13 @@ go 1.20 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.42.0 - github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/otiai10/copy v1.11.0 - github.com/stretchr/testify v1.8.3 + github.com/gruntwork-io/terratest v0.43.3 + github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 + github.com/otiai10/copy v1.12.0 + github.com/stretchr/testify v1.8.4 github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.10.0 + golang.org/x/mod v0.11.0 sigs.k8s.io/kustomize/kyaml v0.14.2 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index d1326133fd4..c15fb5a3eed 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -370,8 +370,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.16.2 h1:EmkS8344ggtQopFq6YJ5Nh3ohBF03AB7cxrgDiJ7C3Q= github.com/gruntwork-io/go-commons v0.16.2/go.mod h1:/nnLMhO4HpItt43K+8ACM66g67iMy3oo2nnwq59n3wg= -github.com/gruntwork-io/terratest v0.42.0 h1:j3HKRzZ7p4f1iweP2stDSYz+am4+JIbraTehiEWc77s= -github.com/gruntwork-io/terratest v0.42.0/go.mod h1:O6gajNBjO1wvc7Wl9WtbO+ORcdnhAV2GQiBE71ycwIk= +github.com/gruntwork-io/terratest v0.43.3 h1:5m8muuUH/84vfahX1GM8yeTTfNY9oFAVcqqEAvjAt+w= +github.com/gruntwork-io/terratest v0.43.3/go.mod h1:BaiZSbupsU6AmCuds8qLcoUOG8gcykW/IvWf4TtAUyU= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -431,8 +431,8 @@ github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5w github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= -github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= +github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= @@ -448,8 +448,8 @@ 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/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= -github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= -github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= +github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -478,8 +478,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +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/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -567,8 +567,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From a221f711029fc043966f540bd1e747b64d37cb13 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 26 Jun 2023 19:58:04 -0700 Subject: [PATCH 0456/1371] fix: update cli go modules and go 1.20 (#1678) --- cli/Makefile | 2 +- cli/bpmetadata/validate.go | 4 +- cli/bptest/ast_test.go | 3 +- cli/bptest/convert.go | 9 +- cli/bptest/convert_test.go | 4 +- cli/bptest/init_test.go | 3 +- cli/bptest/list_test.go | 3 +- cli/go.mod | 181 ++++---- cli/go.sum | 754 +++++++++++-------------------- cli/launchpad/root.go | 8 +- cli/report/report.go | 5 +- cli/scorecard/proto_test.go | 4 +- cli/scorecard/score_test.go | 4 +- cli/scorecard/violations_test.go | 4 +- 14 files changed, 389 insertions(+), 599 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index d5134612547..b981dbebce0 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.8 +VERSION=v1.1.9 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/validate.go b/cli/bpmetadata/validate.go index 714947aa953..48f1b42e277 100644 --- a/cli/bpmetadata/validate.go +++ b/cli/bpmetadata/validate.go @@ -3,7 +3,7 @@ package bpmetadata import ( _ "embed" "fmt" - "io/ioutil" + "os" "path" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" @@ -82,7 +82,7 @@ func validateMetadataYaml(m string, schema gojsonschema.JSONLoader) error { // validation of YAML is not possible func convertYamlToJson(m string) ([]byte, error) { // read metadata for validation - b, err := ioutil.ReadFile(m) + b, err := os.ReadFile(m) if err != nil { return nil, fmt.Errorf("unable to read metadata at path %s. error: %s", m, err) } diff --git a/cli/bptest/ast_test.go b/cli/bptest/ast_test.go index 1c0ef627cbb..ac67b84bc86 100644 --- a/cli/bptest/ast_test.go +++ b/cli/bptest/ast_test.go @@ -1,7 +1,6 @@ package bptest import ( - "io/ioutil" "os" "testing" @@ -71,7 +70,7 @@ func OtherHelper(t *testing.T) { func writeTmpFile(t *testing.T, data string) (string, func()) { assert := assert.New(t) - f, err := ioutil.TempFile("", "*.go") + f, err := os.CreateTemp("", "*.go") assert.NoError(err) cleanup := func() { os.Remove(f.Name()) } _, err = f.Write([]byte(data)) diff --git a/cli/bptest/convert.go b/cli/bptest/convert.go index 2cfa3a47dc6..0426654b512 100644 --- a/cli/bptest/convert.go +++ b/cli/bptest/convert.go @@ -6,7 +6,6 @@ import ( "encoding/json" "fmt" "html/template" - "io/ioutil" "os" "path" "strings" @@ -98,7 +97,7 @@ func convertKitchenTests() error { // getCurrentTestDirs returns current test dirs in intTestPath func getCurrentTestDirs() ([]string, error) { - files, err := ioutil.ReadDir(intTestPath) + files, err := os.ReadDir(intTestPath) if err != nil { return nil, err } @@ -114,7 +113,7 @@ func getCurrentTestDirs() ([]string, error) { // convertTest converts a kitchen test in dir to blueprint test func convertTest(dir string) error { // read inspec.yaml - f, err := ioutil.ReadFile(path.Join(dir, inspecInputsFile)) + f, err := os.ReadFile(path.Join(dir, inspecInputsFile)) if err != nil { return fmt.Errorf("error reading inspec file: %s", err) } @@ -193,7 +192,7 @@ func getBPTestFromTmpl(testName string, inputs []string) (string, error) { // writeFile writes content to file path func writeFile(p string, content string) error { - return ioutil.WriteFile(p, []byte(content), os.ModePerm) + return os.WriteFile(p, []byte(content), os.ModePerm) } // transformBuild transforms cloudbuild file contents with kitchen commands to CFT cli commands @@ -245,7 +244,7 @@ func getCFTCmd(kitchenCmd string) (string, error) { // getBuildFromFile unmarshalls a cloudbuild file func getBuildFromFile(fp string) (*cb.Build, string, error) { - f, err := ioutil.ReadFile(fp) + f, err := os.ReadFile(fp) if err != nil { return nil, "", err } diff --git a/cli/bptest/convert_test.go b/cli/bptest/convert_test.go index de6069a2cdb..b47c735647e 100644 --- a/cli/bptest/convert_test.go +++ b/cli/bptest/convert_test.go @@ -1,7 +1,7 @@ package bptest import ( - "io/ioutil" + "os" "path" "testing" @@ -151,7 +151,7 @@ func TestSimpleExample(t *testing.T) { for name, expectedContent := range tt.expectedFilesContents { pth := path.Join(tmpDir, name) assert.FileExists(pth) - gotContents, err := ioutil.ReadFile(pth) + gotContents, err := os.ReadFile(pth) assert.NoError(err) assert.Equal(expectedContent, string(gotContents)) } diff --git a/cli/bptest/init_test.go b/cli/bptest/init_test.go index db441781bd2..b35a6a7ad94 100644 --- a/cli/bptest/init_test.go +++ b/cli/bptest/init_test.go @@ -1,7 +1,6 @@ package bptest import ( - "io/ioutil" "os" "path" "testing" @@ -136,7 +135,7 @@ require ( for name, expectedContent := range tt.expectedFilesContents { pth := path.Join(tmpDir, name) assert.FileExists(pth) - gotContents, err := ioutil.ReadFile(pth) + gotContents, err := os.ReadFile(pth) assert.NoError(err) assert.Equal(expectedContent, string(gotContents)) } diff --git a/cli/bptest/list_test.go b/cli/bptest/list_test.go index ade3e181f61..59ed336a7cb 100644 --- a/cli/bptest/list_test.go +++ b/cli/bptest/list_test.go @@ -1,7 +1,6 @@ package bptest import ( - "io/ioutil" "os" "path" "testing" @@ -249,7 +248,7 @@ func Test_discoverIntTestDir(t *testing.T) { func createFilesInTmpDir(t *testing.T, files []string) (string, func()) { assert := assert.New(t) - tempDir, err := ioutil.TempDir("", "bpt-") + tempDir, err := os.MkdirTemp("", "bpt-") assert.NoError(err) cleanup := func() { os.RemoveAll(tempDir) } diff --git a/cli/go.mod b/cli/go.mod index d7be28b7a6f..0654ef77494 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -1,31 +1,21 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli -go 1.18 - -// workaround for otel dependencies -replace ( - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp => go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 - go.opentelemetry.io/otel => go.opentelemetry.io/otel v0.20.0 - go.opentelemetry.io/otel/metric => go.opentelemetry.io/otel/metric v0.20.0 - go.opentelemetry.io/otel/sdk => go.opentelemetry.io/otel/sdk v0.20.0 - go.opentelemetry.io/otel/trace => go.opentelemetry.io/otel/trace v0.20.0 - go.opentelemetry.io/proto/otlp => go.opentelemetry.io/proto/otlp v0.7.0 -) +go 1.20 require ( - cloud.google.com/go/asset v1.10.0 - cloud.google.com/go/storage v1.27.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea - github.com/GoogleCloudPlatform/config-validator v0.0.0-20230328162739-ff3a6b2846d9 + cloud.google.com/go/asset v1.13.0 + cloud.google.com/go/storage v1.30.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.5.2 + github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200 github.com/briandowns/spinner v1.16.0 github.com/fatih/color v1.13.0 github.com/gammazero/workerpool v1.1.2 github.com/go-git/go-git/v5 v5.4.2 - github.com/golang/protobuf v1.5.2 + github.com/golang/protobuf v1.5.3 github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb github.com/google/go-cmp v0.5.9 github.com/google/go-github/v47 v47.1.0 - github.com/hashicorp/hcl/v2 v2.14.0 + github.com/hashicorp/hcl/v2 v2.16.2 github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f github.com/iancoleman/strcase v0.2.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac @@ -35,83 +25,85 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.12 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/open-policy-agent/opa v0.47.1 - github.com/otiai10/copy v1.6.0 + github.com/open-policy-agent/opa v0.49.2 + github.com/otiai10/copy v1.11.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.6.1 github.com/spf13/viper v1.9.0 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.2 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/oauth2 v0.5.0 - golang.org/x/text v0.7.0 - google.golang.org/api v0.110.0 + golang.org/x/oauth2 v0.8.0 + golang.org/x/text v0.9.0 + google.golang.org/api v0.122.0 gopkg.in/yaml.v2 v2.4.0 - sigs.k8s.io/kustomize/kyaml v0.13.9 + sigs.k8s.io/kustomize/kyaml v0.14.2 sigs.k8s.io/yaml v1.3.0 ) require ( - cloud.google.com/go v0.107.0 // indirect - cloud.google.com/go/accesscontextmanager v1.4.0 // indirect - cloud.google.com/go/compute v1.18.0 // indirect + cloud.google.com/go v0.110.2 // indirect + cloud.google.com/go/accesscontextmanager v1.7.0 // indirect + cloud.google.com/go/compute v1.19.2 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.8.0 // indirect - cloud.google.com/go/longrunning v0.3.0 // indirect + cloud.google.com/go/iam v1.0.1 // indirect + cloud.google.com/go/longrunning v0.4.1 // indirect cloud.google.com/go/orgpolicy v1.10.0 // indirect - cloud.google.com/go/osconfig v1.10.0 // indirect + cloud.google.com/go/osconfig v1.11.0 // indirect github.com/Microsoft/go-winio v0.4.16 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect - github.com/agext/levenshtein v1.2.2 // indirect + github.com/agext/levenshtein v1.2.3 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect - github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e // indirect + github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful v2.16.0+incompatible // indirect + github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect - github.com/evanphx/json-patch v5.6.0+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gammazero/deque v0.1.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect - github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 // indirect + github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/go-openapi/analysis v0.19.5 // indirect - github.com/go-openapi/errors v0.19.2 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect - github.com/go-openapi/loads v0.19.4 // indirect - github.com/go-openapi/runtime v0.19.4 // indirect - github.com/go-openapi/spec v0.19.3 // indirect - github.com/go-openapi/strfmt v0.19.3 // indirect - github.com/go-openapi/swag v0.21.1 // indirect - github.com/go-openapi/validate v0.19.2 // indirect - github.com/go-stack/stack v1.8.0 // indirect + github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-openapi/analysis v0.21.2 // indirect + github.com/go-openapi/errors v0.20.2 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/loads v0.21.1 // indirect + github.com/go-openapi/spec v0.20.4 // indirect + github.com/go-openapi/strfmt v0.21.2 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-openapi/validate v0.21.0 // indirect + github.com/go-stack/stack v1.8.1 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.0.0 // indirect + github.com/golang/glog v1.1.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/cel-go v0.10.2 // indirect + github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic v0.6.9 // indirect github.com/google/go-github/v41 v41.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect + github.com/google/s2a-go v0.1.3 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.7.0 // indirect + github.com/googleapis/gax-go/v2 v2.8.0 // indirect github.com/gorilla/mux v1.8.0 // indirect - github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/gruntwork-io/terratest v0.35.6 // indirect - github.com/hashicorp/errwrap v1.0.0 // indirect - github.com/hashicorp/go-multierror v1.1.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect + github.com/gruntwork-io/terratest v0.41.23 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect github.com/imdario/mergo v0.3.13 // indirect @@ -125,15 +117,16 @@ require ( github.com/mattn/go-colorable v0.1.9 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-wordwrap v1.0.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.4.3 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/open-policy-agent/frameworks/constraint v0.0.0-20221006234738-a3d297b3152f // indirect - github.com/open-policy-agent/gatekeeper v0.0.0-20221019225957-0484f99d8857 // indirect + github.com/oklog/ulid v1.3.1 // indirect + github.com/open-policy-agent/frameworks/constraint v0.0.0-20230304011918-d82cbe189211 // indirect + github.com/open-policy-agent/gatekeeper v0.0.0-20230406045040-effa347e75b5 // indirect github.com/pelletier/go-toml v1.9.4 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.14.0 // indirect @@ -149,52 +142,56 @@ require ( github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect - github.com/tidwall/gjson v1.10.2 // indirect + github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect + github.com/tidwall/sjson v1.2.5 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/yashtewari/glob-intersection v0.1.0 // indirect - github.com/zclconf/go-cty v1.10.0 // indirect - go.mongodb.org/mongo-driver v1.1.2 // indirect + github.com/zclconf/go-cty v1.13.1 // indirect + go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib v0.20.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 // indirect - go.opentelemetry.io/otel v1.7.0 // indirect - go.opentelemetry.io/otel/exporters/otlp v0.20.0 // indirect - go.opentelemetry.io/otel/metric v0.30.0 // indirect - go.opentelemetry.io/otel/sdk v1.7.0 // indirect - go.opentelemetry.io/otel/sdk/export/metric v0.20.0 // indirect - go.opentelemetry.io/otel/sdk/metric v0.20.0 // indirect - go.opentelemetry.io/otel/trace v1.7.0 // indirect - go.opentelemetry.io/proto/otlp v0.16.0 // indirect - golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 // indirect - golang.org/x/net v0.6.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/term v0.5.0 // indirect - golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.0 // indirect + go.opentelemetry.io/otel v1.10.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0 // indirect + go.opentelemetry.io/otel/metric v0.31.0 // indirect + go.opentelemetry.io/otel/sdk v1.10.0 // indirect + go.opentelemetry.io/otel/trace v1.10.0 // indirect + go.opentelemetry.io/proto/otlp v0.19.0 // indirect + golang.org/x/crypto v0.9.0 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect + golang.org/x/term v0.8.0 // indirect + golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc // indirect - google.golang.org/grpc v1.53.0 // indirect - google.golang.org/protobuf v1.28.1 // indirect + google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e // indirect + google.golang.org/grpc v1.55.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.63.2 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.24.6 // indirect - k8s.io/apiextensions-apiserver v0.24.6 // indirect - k8s.io/apimachinery v0.24.6 // indirect - k8s.io/apiserver v0.24.6 // indirect - k8s.io/client-go v0.24.6 // indirect - k8s.io/component-base v0.24.6 // indirect - k8s.io/klog/v2 v2.70.1 // indirect - k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6 // indirect + k8s.io/api v0.26.3 // indirect + k8s.io/apiextensions-apiserver v0.26.3 // indirect + k8s.io/apimachinery v0.26.3 // indirect + k8s.io/apiserver v0.26.3 // indirect + k8s.io/client-go v0.26.3 // indirect + k8s.io/component-base v0.26.3 // indirect + k8s.io/klog/v2 v2.80.1 // indirect + k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect k8s.io/kubectl v0.23.5 // indirect - k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30 // indirect - sigs.k8s.io/controller-runtime v0.12.3 // indirect - sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 // indirect + k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.36 // indirect + sigs.k8s.io/controller-runtime v0.14.6 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 20729da7852..cdccdaa4b1b 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -6,7 +6,6 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -24,34 +23,34 @@ cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSU cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.107.0 h1:qkj22L7bgkl6vIeZDlOY2po43Mx/TIa2Wsa7VR+PEww= -cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go/accesscontextmanager v1.4.0 h1:CFhNhU7pcD11cuDkQdrE6PQJgv0EXNKNv06jIzbLlCU= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/asset v1.10.0 h1:aCrlaLGJWTODJX4G56ZYzJefITKEWNfbjjtHSzWpxW0= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= +cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= +cloud.google.com/go/accesscontextmanager v1.7.0 h1:MG60JgnEoawHJrbWw0jGdv6HLNSf6gQvYRiXpuzqgEA= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= +cloud.google.com/go/asset v1.13.0 h1:YAsssO08BqZ6mncbb6FPlj9h6ACS7bJQUOlzciSfbNk= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.2 h1:GbJtPo8OKVHbVep8jvM57KidbYHxeE68LOVqouNLrDY= +cloud.google.com/go/compute v1.19.2/go.mod h1:5f5a+iC1IriXYauaQ0EyQmEAEq9CGRnV5xJSQSlTV08= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= -cloud.google.com/go/iam v0.8.0 h1:E2osAkZzxI/+8pZcxVLcDtAQx/u+hZXVryUaYQ5O0Kk= -cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/iam v1.0.1 h1:lyeCAU6jpnVNrE9zGQkTl3WgNgK/X+uWwaw0kynZJMU= +cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= +cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= cloud.google.com/go/orgpolicy v1.10.0 h1:XDriMWug7sd0kYT1QKofRpRHzjad0bK8Q8uA9q+XrU4= cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= -cloud.google.com/go/osconfig v1.10.0 h1:NO0RouqCOM7M2S85Eal6urMSSipWwHU8evzwS+siqUI= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0 h1:PkSQx4OHit5xz2bNyr11KGcaFccL5oqglFPdTboyqwQ= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -61,77 +60,42 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v46.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= -github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.11.0/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest v0.11.5/go.mod h1:foo3aIXRQ90zFve3r0QiDsrjGDUwWhKl0ZOQy1CT14k= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= -github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.1/go.mod h1:ea90/jvmnAwDrSooLH4sRIehEPtG/EPUXavDh31MnA4= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.0/go.mod h1:JljT387FplPzBA31vUcvsetLKF3pec5bdAxjVU4kI2s= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= -github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= -github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= -github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea h1:Pbtaoh7g+3FNtyUoEeLEhFuw/Nfa35zFU4Bc+WgnC3Q= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.0.0-20220307174651-21d0dee0c8ea/go.mod h1:cdqqfBObgqdv4oyKGBS8Lwan5XVisYV9RvZ7JuXTx44= -github.com/GoogleCloudPlatform/config-validator v0.0.0-20230328162739-ff3a6b2846d9 h1:68ytYEjlURQtZiyP4geOPhZ45KPbEG0fGB8ERee1rrw= -github.com/GoogleCloudPlatform/config-validator v0.0.0-20230328162739-ff3a6b2846d9/go.mod h1:VD5GFB4dmkCSLTGUUYiAMOmRiyE6DtzANaSgHhaFewI= -github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= -github.com/GoogleContainerTools/kpt-functions-sdk/go v0.0.0-20220301220754-6964a09d6cd2/go.mod h1:lJYiqfBOl6AOiefK9kmkhinbffIysu+nnclOBwKEPlQ= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.5.2 h1:TCNdkah8IpwK6/OTOg+9RugCK+xQl1XA+k2cKOGCrvs= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.5.2/go.mod h1:EmHnUgCoUO6o8zOb3pWmA6NPqpsIGUT7G1EJ7yW/hkM= +github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200 h1:Gq7/IgcOdkxlDsYvREf7fNSBLI/ABl0IrZFVvnG6wUw= +github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200/go.mod h1:ypZtzw2mHkKCk9sx+4RDg5z0qjw+Il0SD2MfFUjt7ak= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -142,11 +106,10 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5 github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e h1:GCzyKMDDjSGnlpl3clrdAK7I1AaVoaiKDOYkUzChZzg= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= +github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= @@ -158,36 +121,28 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.38.28/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/briandowns/spinner v1.16.0 h1:DFmp6hEaIx2QXXuqSJmtfSBSAjRmpGiKG6ip2Wm/yOs= github.com/briandowns/spinner v1.16.0/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -205,69 +160,40 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= -github.com/dgraph-io/badger/v3 v3.2103.4 h1:WE1B07YNTTJTtG9xjBcSW2wn0RJLyiV99h959RKZqM4= +github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v0.0.0-20200109221225-a4f60165b7a3/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= -github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.16.0+incompatible h1:rgqiKNjTnFQA6kkhFe16D8epTksy9HQ1MyrbDXSdYhM= -github.com/emicklei/go-restful v2.16.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +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/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -277,13 +203,14 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= -github.com/evanphx/json-patch v5.6.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/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -311,17 +238,13 @@ github.com/gammazero/deque v0.1.0/go.mod h1:KQw7vFau1hHuM8xmI9RbgKFbAsQFWmBpqQ2K github.com/gammazero/workerpool v1.1.2 h1:vuioDQbgrz4HoaCi2q1HLlOXdpbap5AET7xu5/qj87g= github.com/gammazero/workerpool v1.1.2/go.mod h1:UelbXcO0zCIGFcufcirHhq2/xtLXJdQ29qZNlXG9OjQ= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= -github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= @@ -345,85 +268,85 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/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/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= -github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= -github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5 h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/analysis v0.21.2 h1:hXFrOYFHUAMQdu6zwAiKKJHJQ8kqZs1ux/ru1P1wLJU= +github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= +github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.20.2 h1:dxy7PGTqEh94zj2E3h1cUmQQWiM1+aeCROfAr02EmK8= +github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4 h1:5I4CCSqoWzT+82bBkNIvmLc0UOsoKKQ4Fz+3VxOB7SY= -github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4 h1:csnOgcgAiuGoM/Po7PEpKDoNulCcF3FGbSnbHfxgjMI= -github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.3 h1:eRfyY5SkaNJCAwmmMcADjY31ow9+N7MCLW7oRkbsINA= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +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/loads v0.21.1 h1:Wb3nVZpdEzDTcly8S4HMkey6fjARRzb7iEaySimlDW0= +github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= +github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= +github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= +github.com/go-openapi/strfmt v0.21.2 h1:5NDNgadiX1Vhemth/TH4gCGopWSTdDjxl60H3B7f+os= +github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2 h1:ky5l57HjyVRrsJfd2+Ro5Z9PjGuKbsmftwyMtk8H7js= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/validate v0.21.0 h1:+Wqk39yKOhfpLqNLEC0/eViCkzM5FVXVqrvt526+wcI= +github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= +github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= +github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= +github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= +github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= +github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= +github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= +github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= +github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= +github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= +github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= +github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -439,7 +362,6 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -457,8 +379,10 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= @@ -467,11 +391,9 @@ github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb/go.mod h1:JDGc 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/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/cel-go v0.10.2 h1:fJtfqBC/zg/+M0W32IemohwB6u5oFWv1iVGNpgUxan0= -github.com/google/cel-go v0.10.2/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= -github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= -github.com/google/flatbuffers v2.0.6+incompatible h1:XHFReMv7nFFusa+CEokzWbzaYocKXI6C7hdU5Kgh9Lw= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= +github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -488,14 +410,12 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.0.0-20200110202235-f4fb41bf00a3/go.mod h1:2wIuQute9+hhWqvL3vEI7YB0EKluF4WcPzI1eAliazk= github.com/google/go-github/v41 v41.0.0 h1:HseJrM2JFf2vfiZJ8anY2hqBjdfY1Vlj/K27ueww4gg= github.com/google/go-github/v41 v41.0.0/go.mod h1:XgmCA5H323A9rtgExdTcnDkcqp6S30AVACCBDOonIxg= github.com/google/go-github/v47 v47.1.0 h1:Cacm/WxQBOa9lF0FT0EMjZ2BWMetQ1TQfyurn4yF1z8= github.com/google/go-github/v47 v47.1.0/go.mod h1:VPZBXNbFSJGjyjFRUKo9vZGawTajnWzC/YjGw/oFKi0= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -504,8 +424,8 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -520,9 +440,11 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -532,46 +454,40 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5 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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gruntwork-io/go-commons v0.8.0/go.mod h1:gtp0yTtIBExIZp7vyIV9I0XQkVwiQZze678hvDXof78= -github.com/gruntwork-io/terratest v0.35.6 h1:Q7pUd3JI4i5mmR/KgYkZJJ4q9ZbV8ru9KydwjA/ohaA= -github.com/gruntwork-io/terratest v0.35.6/go.mod h1:GIVJGBV1WIv1vxIG31Ycy0CuHYfXuvvkilNQuC9Wi+o= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +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/gruntwork-io/terratest v0.41.23 h1:GqwK0Nh6IQze3hka6iwuOd1V3wX7/y/85W25d1zpAnE= +github.com/gruntwork-io/terratest v0.41.23/go.mod h1:O6gajNBjO1wvc7Wl9WtbO+ORcdnhAV2GQiBE71ycwIk= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -581,14 +497,12 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= -github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= -github.com/hashicorp/hcl/v2 v2.14.0 h1:jX6+Q38Ly9zaAJlAjnFVyeNSNCKKW8D0wvyg7vij5Wc= -github.com/hashicorp/hcl/v2 v2.14.0/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= +github.com/hashicorp/hcl/v2 v2.16.2 h1:mpkHZh/Tv+xet3sy3F9Ld4FyI2tUpWe9x3XtPx9f1a0= +github.com/hashicorp/hcl/v2 v2.16.2/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= @@ -598,7 +512,6 @@ github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/J github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f h1:R8UIC07Ha9jZYkdcJ51l4ownCB8xYwfJtrgZSMvqjWI= github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f/go.mod h1:Z0Nnk4+3Cy89smEbrq+sl1bxc9198gIP4I7wcQF6Kqs= -github.com/hashicorp/terraform-json v0.9.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= @@ -607,7 +520,6 @@ github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= @@ -624,21 +536,15 @@ github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PH github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= github.com/jedib0t/go-pretty/v6 v6.2.4 h1:wdaj2KHD2W+mz8JgJ/Q6L/T5dB7kyqEFI16eLq7GEmk= github.com/jedib0t/go-pretty/v6 v6.2.4/go.mod h1:+nE9fyyHGil+PuISTCrp7avEdo6bqoMwqZnuiK2r2a0= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= 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= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -648,13 +554,15 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= +github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -665,7 +573,6 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -675,12 +582,8 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= @@ -689,6 +592,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -698,27 +603,22 @@ github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= -github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= +github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= github.com/migueleliasweb/go-github-mock v0.0.12 h1:z9Qd82YRA2+LbVDefRG+4PKRgaB3NYtjlv+eNtREWY4= github.com/migueleliasweb/go-github-mock v0.0.12/go.mod h1:mD5w+9J3oBBMLr7uD6owEYlYBAL8tZd+BA7iGjI4EU8= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -730,29 +630,29 @@ github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eI github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -761,45 +661,32 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20221006234738-a3d297b3152f h1:Sp58oU+EdDJ3JqsIhASHUatz3S5Vx7OJyu2HfiEOWBk= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20221006234738-a3d297b3152f/go.mod h1:SZoM5OFrXcEf4w4Tkei/1z2LYwyQbj39NbOoEqxRPYc= -github.com/open-policy-agent/gatekeeper v0.0.0-20221019225957-0484f99d8857 h1:b/b2V4luiou2xemEmLx+TOPxa3MUMXCnUylqGNUxgIk= -github.com/open-policy-agent/gatekeeper v0.0.0-20221019225957-0484f99d8857/go.mod h1:FBhEDoWSthx5j28b/QK/eiJehuh3/UwiObsPVYOTjdw= -github.com/open-policy-agent/opa v0.47.1 h1:4Nf8FwguZeE5P83akiwaaoWx1XkmSkRcKmCEskiD/1c= -github.com/open-policy-agent/opa v0.47.1/go.mod h1:cM7ngEoEdAIfyu9mOHaVcgLAHYkY6amrYfotm+BSkYQ= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/open-policy-agent/frameworks/constraint v0.0.0-20230304011918-d82cbe189211 h1:Ma5rn7r3rPwyP9OXi6zNKjNDsCHYccjcno9M83SHgO0= +github.com/open-policy-agent/frameworks/constraint v0.0.0-20230304011918-d82cbe189211/go.mod h1:jggTVbseMnEQmCSgMRXByS4P7ykSBz6pLlxsbncSALM= +github.com/open-policy-agent/gatekeeper v0.0.0-20230406045040-effa347e75b5 h1:PcusWo4V3WKTmm8clDcdN4esH3pxdeykFj8xd/Azc6s= +github.com/open-policy-agent/gatekeeper v0.0.0-20230406045040-effa347e75b5/go.mod h1:VfOGFct/w2m56hwaUzZLGSxmGriF9ewWGqei5wovPxo= +github.com/open-policy-agent/opa v0.49.2 h1:n8ntRq/yDWy+cmYaqSLrHXmrT3tX8WlK28vjFQdC6W8= +github.com/open-policy-agent/opa v0.49.2/go.mod h1:7L3lN5qe8xboRmEHxC5lGjo5KsRMdK+CCLiFoOCP7rU= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= -github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= -github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= -github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= +github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= @@ -810,13 +697,10 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -851,35 +735,30 @@ github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0ua github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -890,25 +769,19 @@ github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= @@ -919,7 +792,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -929,34 +801,32 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= -github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= -github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= +github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -969,36 +839,25 @@ github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6Ut github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yashtewari/glob-intersection v0.1.0 h1:6gJvMYQlTDOL3dMsPF6J0+26vwX9MB8/1q3uAdhmTrg= github.com/yashtewari/glob-intersection v0.1.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= 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.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= -github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= -github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.13.1 h1:0a6bRwuiSHtAmqCqNOE+c2oHgepv0ctoxU4FUe43kwc= +github.com/zclconf/go-cty v1.13.1/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q= -go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2 h1:jxcFYjlkl8xaERsgLo+RNquI0epW6zuy/ZRQs6jnrFA= -go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= +go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= +go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= +go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1008,73 +867,72 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= 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.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 h1:Q3C9yzW6I9jqEc8sawxzxZmY48fs9u220KXq6d5s3XU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.0 h1:Ajldaqhxqw/gNzQA45IKFWLdG7jZuXX/wBW1d5qvbUI= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.0/go.mod h1:9NiG9I2aHTKkcxqCILhjtyNA1QEiCjdBACv4IvrFQ+c= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= +go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4= +go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.20.0 h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0 h1:TaB+1rQhddO1sF71MpZOZAuSPW1klK2M8XxfrBMfK7Y= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0 h1:pDDYmo0QadUPal5fwXoY1pmMpFcdyhXOmL5drCrI3vU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0/go.mod h1:Krqnjl22jUJ0HgMzw5eveuCvFDXY4nSYb4F8t5gdrag= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0 h1:KtiUEhQmj/Pa874bVYKGNVdq8NPKiacPbaRRtgXi+t4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0/go.mod h1:OfUCyyIiDvNXHWpcWgbF+MWvqPZiNa3YDEnivcnYsV0= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= +go.opentelemetry.io/otel/metric v0.31.0 h1:6SiklT+gfWAwWUR0meEMxQBtihpiEs4c+vL9spDTqUs= +go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0 h1:JsxtGXd06J8jrnya7fdI/U/MR6yXA5DtbZy+qoHQlr8= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0 h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g= +go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY= +go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0 h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0 h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= +go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E= +go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/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-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 h1:O8uGbHCqlTp2P6QJSLmCojM4mN6UemYv8K+dCnmHmu0= -golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= @@ -1108,13 +966,13 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1122,7 +980,6 @@ golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1132,10 +989,8 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1154,24 +1009,23 @@ 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-20201031054903-ff519b6c9102/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-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/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.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 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= @@ -1190,12 +1044,13 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +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/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1203,7 +1058,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ 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/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1213,23 +1069,20 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/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-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1238,7 +1091,6 @@ golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1260,12 +1112,10 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1279,6 +1129,7 @@ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1292,21 +1143,19 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/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-20220209214540-3681064d5158/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-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.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= 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= @@ -1316,42 +1165,37 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/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.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1360,8 +1204,6 @@ golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191205215504-7b8c8591a921/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1386,7 +1228,6 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201110201400-7099162a900a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1398,7 +1239,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= -golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= 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= @@ -1406,11 +1248,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= +gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= 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= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1438,8 +1277,8 @@ google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNe google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= 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= @@ -1469,7 +1308,6 @@ google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1481,7 +1319,6 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/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-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1504,16 +1341,19 @@ google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwy google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc h1:ijGwO+0vL2hJt5gaygqP2j6PfflOBrRot0IczKbmtio= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e h1:AZX1ra8YbFMSb7+1pI8S9v4rrgRR7jU1FmuFSSjTVcQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e h1:NumxXLPfHSndr3wBBdeKiVHjGVFzi9RX2HwwQke94iY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= 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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1535,8 +1375,10 @@ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -1551,8 +1393,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +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= 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= @@ -1560,22 +1402,15 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -1589,12 +1424,12 @@ 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-20200605160147-a5ece683394c/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.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/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= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1604,100 +1439,63 @@ 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.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= -k8s.io/api v0.24.6 h1:9EZhqZv4Ct++e6XMh3f5bmP4XMxsuxf4c7WOCCjYvF8= -k8s.io/api v0.24.6/go.mod h1:eoAZTnLglpwBajOxAusPL3xfVW5tUn3Y3gQv8e1XHBA= -k8s.io/apiextensions-apiserver v0.24.6 h1:XgOhyeTIKUiw1qupOtx3x3xyfeaGsCBQYwPR11wYFwk= -k8s.io/apiextensions-apiserver v0.24.6/go.mod h1:0DMt8ahXcD3uQuB80mQN3l8fbQ9s93iRVhoUZRp4KqA= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= +k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= +k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= +k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE= +k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ= k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= -k8s.io/apimachinery v0.24.6 h1:Sp4EHDrBtm0V1z/8poY52HhP79dAIcI9lb9DUG54XPc= -k8s.io/apimachinery v0.24.6/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= -k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= -k8s.io/apiserver v0.24.6 h1:LEVuJb3bwjbZSIA8Ltm6iNBJiFawJtEGmAP7bgMljIE= -k8s.io/apiserver v0.24.6/go.mod h1:ZmMXlYsNUhWzEOMJv01JqjL/psUzmvcIF70yDnzen/A= +k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= +k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/apiserver v0.26.3 h1:blBpv+yOiozkPH2aqClhJmJY+rp53Tgfac4SKPDJnU4= +k8s.io/apiserver v0.26.3/go.mod h1:CJe/VoQNcXdhm67EvaVjYXxR3QyfwpceKPuPaeLibTA= k8s.io/cli-runtime v0.23.5/go.mod h1:oY6QDF2qo9xndSq32tqcmRp2UyXssdGrLfjAVymgbx4= -k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= -k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= -k8s.io/client-go v0.24.6 h1:q7gZYyGL0Iv9zynYOFi5DHc3NFZ2aA0P56QpWFXbEyE= -k8s.io/client-go v0.24.6/go.mod h1:qaJRTFlI24ONWGplf+j8IgTyb6ztpwS6SGfjcNCRpQ8= -k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE= -k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= +k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s= +k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ= k8s.io/code-generator v0.23.5/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk= -k8s.io/code-generator v0.24.6/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= -k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= k8s.io/component-base v0.23.5/go.mod h1:c5Nq44KZyt1aLl0IpHX82fhsn84Sb0jjzwjpcA42bY0= -k8s.io/component-base v0.24.6 h1:LqSZunOeX1l6BpsMaD+iiJJSxZYl7IlVFW6qQu52ikA= -k8s.io/component-base v0.24.6/go.mod h1:YwPBIsm9c6VONDa6vBW4WjDMyvQgrLMHNoUokOkOdzU= +k8s.io/component-base v0.26.3 h1:oC0WMK/ggcbGDTkdcqefI4wIZRYdK3JySx9/HADpV0g= +k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= k8s.io/component-helpers v0.23.5/go.mod h1:5riXJgjTIs+ZB8xnf5M2anZ8iQuq37a0B/0BgoPQuSM= -k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.70.1 h1:7aaoSdahviPmR+XkS7FyxlkkXs6tHISSG03RxleQAVQ= -k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= +k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= -k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6 h1:nBQrWPlrNIiw0BsX6a6MKr1itkm0ZS0Nl97kNLitFfI= -k8s.io/kube-openapi v0.0.0-20220413171646-5e7f5fdc6da6/go.mod h1:daOouuuwd9JXpv1L7Y34iV3yf6nxzipkKMWWlqlvK9M= +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/kubectl v0.23.5 h1:DmDULqCaF4qstj0Im143XmncvqWtJxHzK8IrW2BzlU0= k8s.io/kubectl v0.23.5/go.mod h1:lLgw7cVY8xbd7o637vOXPca/w6HC205KsPCRDYRCxwE= -k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= k8s.io/metrics v0.23.5/go.mod h1:WNAtV2a5BYbmDS8+7jSqYYV6E3efuGTpIwJ8PTD1wgs= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed h1:jAne/RjBTyawwAy0utX5eqigAwz/lQhTmy+Hr/Cpue4= -k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y= +k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 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/apiserver-network-proxy/konnectivity-client v0.0.30 h1:dUk62HQ3ZFhD48Qr8MIXCiKA8wInBQCtuE4QGfFW7yA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw= -sigs.k8s.io/controller-runtime v0.12.3 h1:FCM8xeY/FI8hoAfh/V4XbbYMY20gElh9yh+A98usMio= -sigs.k8s.io/controller-runtime v0.12.3/go.mod h1:qKsk4WE6zW2Hfj0G4v10EnNB2jMG1C+NTb8h+DwCoU0= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.36 h1:PUuX1qIFv309AT8hF/CdPKDmsG/hn/L8zRX7VvISM3A= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.36/go.mod h1:WxjusMwXlKzfAs4p9km6XJRndVt2FROgMVCE4cdohFo= +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/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124 h1:2sgAQQcY0dEW2SsQwTXhQV4vO6+rSslYx8K3XmM5hqQ= -sigs.k8s.io/json v0.0.0-20220525155127-227cbc7cc124/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +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/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= sigs.k8s.io/kustomize/cmd/config v0.10.2/go.mod h1:K2aW7nXJ0AaT+VA/eO0/dzFLxmpFcTzudmAgDwPY1HQ= sigs.k8s.io/kustomize/kustomize/v4 v4.4.1/go.mod h1:qOKJMMz2mBP+vcS7vK+mNz4HBLjaQSWRY22EF6Tb7Io= -sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= -sigs.k8s.io/kustomize/kyaml v0.13.9 h1:Qz53EAaFFANyNgyOEJbT/yoIHygK40/ZcvU3rgry2Tk= -sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ85/nOXac4= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/kustomize/kyaml v0.14.2 h1:9WSwztbzwGszG1bZTziQUmVMrJccnyrLb5ZMKpJGvXw= +sigs.k8s.io/kustomize/kyaml v0.14.2/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= 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/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/cli/launchpad/root.go b/cli/launchpad/root.go index cc009dd7350..f385dc2c528 100644 --- a/cli/launchpad/root.go +++ b/cli/launchpad/root.go @@ -2,13 +2,13 @@ package launchpad import ( "fmt" - "github.com/pkg/errors" - "gopkg.in/yaml.v2" - "io/ioutil" "log" "os" "path/filepath" "strings" + + "github.com/pkg/errors" + "gopkg.in/yaml.v2" ) // NewGenerate takes file patterns as input YAMLs and output Infrastructure as @@ -105,7 +105,7 @@ func loadResources(rawPaths []string) []resourceHandler { // can in theory place their own file in matching relative path and overwrite the binary // default. func loadFile(fp string) (string, error) { - if content, err := ioutil.ReadFile(fp); err == nil { + if content, err := os.ReadFile(fp); err == nil { return string(content), nil } else { if !os.IsNotExist(err) { diff --git a/cli/report/report.go b/cli/report/report.go index 69e412067b2..b4eb49aa663 100644 --- a/cli/report/report.go +++ b/cli/report/report.go @@ -19,7 +19,6 @@ import ( "encoding/csv" "encoding/json" "fmt" - "io/ioutil" "os" "path/filepath" "sort" @@ -61,7 +60,7 @@ func convertAndGenerateTempAssetFile(caiPath string, outputPath string, fileMidN } outJSON, _ := json.MarshalIndent(wrapped, "", " ") rawAssetFileName = "raw_assets_" + fileMidName + ".json" - err = ioutil.WriteFile(filepath.Join(outputPath, rawAssetFileName), outJSON, 0644) + err = os.WriteFile(filepath.Join(outputPath, rawAssetFileName), outJSON, 0644) if err != nil { return "", err } @@ -113,7 +112,7 @@ func printReports(results interface{}, reportOutputPath string, format string, f if err != nil { return err } - err = ioutil.WriteFile(filepath.Join(reportOutputPath, reportFileName), fileContent, 0644) + err = os.WriteFile(filepath.Join(reportOutputPath, reportFileName), fileContent, 0644) if err != nil { return err } diff --git a/cli/scorecard/proto_test.go b/cli/scorecard/proto_test.go index 3b9d220a0a8..b59731b6ff5 100644 --- a/cli/scorecard/proto_test.go +++ b/cli/scorecard/proto_test.go @@ -16,7 +16,7 @@ package scorecard import ( "encoding/json" - "io/ioutil" + "os" "testing" "github.com/GoogleCloudPlatform/config-validator/pkg/api/validator" @@ -34,7 +34,7 @@ func jsonToInterface(jsonStr string) (map[string]interface{}, error) { } func TestDataTypeTransformation(t *testing.T) { - fileContent, err := ioutil.ReadFile(testRoot + "/shared/iam_policy_audit_logs.json") + fileContent, err := os.ReadFile(testRoot + "/shared/iam_policy_audit_logs.json") if err != nil { t.Fatal("unexpected error", err) } diff --git a/cli/scorecard/score_test.go b/cli/scorecard/score_test.go index b8d2f13f974..0e0458c057b 100644 --- a/cli/scorecard/score_test.go +++ b/cli/scorecard/score_test.go @@ -19,7 +19,7 @@ import ( "bytes" "context" "encoding/json" - "io/ioutil" + "os" "testing" "github.com/stretchr/testify/assert" @@ -78,7 +78,7 @@ func TestWriteViolations(t *testing.T) { for _, tc := range tests { output := new(bytes.Buffer) - fileContent, err := ioutil.ReadFile(testRoot + "/output/" + tc.filename) + fileContent, err := os.ReadFile(testRoot + "/output/" + tc.filename) if err != nil { t.Fatal("unexpected error", err) } diff --git a/cli/scorecard/violations_test.go b/cli/scorecard/violations_test.go index c4c63260541..cbd17b21d97 100644 --- a/cli/scorecard/violations_test.go +++ b/cli/scorecard/violations_test.go @@ -16,7 +16,7 @@ package scorecard import ( "context" - "io/ioutil" + "os" "testing" ) @@ -58,7 +58,7 @@ func TestGetAssetFromJSON(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - fileContent, err := ioutil.ReadFile(testRoot + tc.assetJSONFile) + fileContent, err := os.ReadFile(testRoot + tc.assetJSONFile) if err != nil { t.Fatal("unexpected error", err) } From 80d070d428cd79acec80ec8d9e2c3fe2beb1a8cf Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 27 Jun 2023 19:31:41 +0200 Subject: [PATCH 0457/1371] fix(deps): update module google.golang.org/api to v0.128.0 (#1682) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 51d42a16f7e..bcae1233a8e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 8518df3ef77..ac2d8f3b035 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.127.0 + google.golang.org/api v0.128.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 3b9d20e9c04..290b9e55891 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.127.0 h1:v7rj0vA0imM3Ou81k1eyFxQNScLzn71EyGnJDr+V/XI= -google.golang.org/api v0.127.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= From 64532499c7ab08165838f738b2927f3ee3499510 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 27 Jun 2023 19:47:57 +0200 Subject: [PATCH 0458/1371] chore(deps): update peter-evans/create-pull-request digest to 5f8399b (#1683) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index efc50254ac3..bb0c9391934 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@eebb6ccce1e609378f84426acf60c49144cf2d3a + uses: peter-evans/create-pull-request@5f8399b325911a0981ba132a51cceecce543d255 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 311e6b3266eb3eabd4bf8250be65240985098e1f Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 27 Jun 2023 11:33:02 -0700 Subject: [PATCH 0459/1371] chore(master): release blueprint-test 0.6.1 (#1681) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c6a9c133c71..d80d2919f7a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.6.0" + "infra/blueprint-test": "0.6.1" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 62775c4da53..3b995e1e558 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.6.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.6.0...infra/blueprint-test/v0.6.1) (2023-06-27) + + +### Bug Fixes + +* blueprint-test tests ([#1675](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1675)) ([6ed5385](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6ed538548fb9fd91a81663796efecb5e53c8a66e)) +* update bpt go modules ([#1677](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1677)) ([4c9aaec](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/4c9aaeca68db7198165d52227b3d03752d8f817d)) + ## [0.6.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.5.2...infra/blueprint-test/v0.6.0) (2023-06-13) From 877b9bb54ead41cf39ed47ccf8c60a02eb94b2a3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 27 Jun 2023 20:58:35 +0200 Subject: [PATCH 0460/1371] fix(deps): update module google.golang.org/api to v0.129.0 (#1684) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/utils/fbf/go.mod | 22 ++++++++++---------- infra/utils/fbf/go.sum | 46 +++++++++++++++++++++--------------------- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index bcae1233a8e..81d27b2dff9 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index ac2d8f3b035..fd415a95603 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.128.0 + google.golang.org/api v0.129.0 ) require ( @@ -18,23 +18,23 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect - github.com/googleapis/gax-go/v2 v2.10.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect + github.com/googleapis/gax-go/v2 v2.11.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.9.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/term v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect + golang.org/x/crypto v0.10.0 // indirect + golang.org/x/net v0.11.0 // indirect + golang.org/x/oauth2 v0.9.0 // indirect + golang.org/x/sys v0.9.0 // indirect + golang.org/x/term v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/grpc v1.55.0 // indirect - google.golang.org/protobuf v1.30.0 // indirect + google.golang.org/grpc v1.56.1 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 290b9e55891..8c877820540 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -63,10 +63,10 @@ github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkj 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/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= -github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/gax-go/v2 v2.10.0 h1:ebSgKfMxynOdxw8QQuFOKMgomqeLGPqNLQox2bo42zg= -github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= +github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= +github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= @@ -105,8 +105,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -125,18 +125,18 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -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.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= +golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -150,20 +150,20 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.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.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= -google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.129.0 h1:2XbdjjNfFPXQyufzQVwPf1RRnHH8Den2pfNE2jw7L8w= +google.golang.org/api v0.129.0/go.mod h1:dFjiXlanKwWE3612X97llhsoI36FAoIiRj3aTl5b/zE= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -196,8 +196,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= +google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= 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= @@ -209,8 +209,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD 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.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From d04eae75664efb6517f1f2c7d947c68b4df16a59 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:36:23 -0500 Subject: [PATCH 0461/1371] chore: Update Tools to 1.13.4 (#1665) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 81d27b2dff9..19a77cc956d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.5.0 +TERRAFORM_VERSION := 1.5.2 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 434.0.0 +CLOUD_SDK_VERSION := 437.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.10.1 RUBY_VERSION := 2.7.8 @@ -32,9 +32,9 @@ KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.35 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.1.8 +CFT_CLI_VERSION := 1.1.9 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.25.10 +KUBECTL_VERSION := 1.25.11 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 8268739a4f6f615787354092ca4b31cd7d3b90ca Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 29 Jun 2023 09:49:09 -0700 Subject: [PATCH 0462/1371] chore: enable scorecard (#1685) --- .github/workflows/scorecard.yml | 72 +++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 00000000000..f2a711d2580 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,72 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '18 1 * * 1' + push: + branches: [ "master" ] + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: "Checkout code" + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + with: + sarif_file: results.sarif From 23d77cea55d2eaf45847fb23a1f98651676b9804 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 29 Jun 2023 11:24:05 -0700 Subject: [PATCH 0463/1371] fix: escape period in regex (#1686) --- cli/util/git.go | 2 +- cli/util/git_test.go | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cli/util/git.go b/cli/util/git.go index 312af618444..728ecf70c47 100644 --- a/cli/util/git.go +++ b/cli/util/git.go @@ -11,7 +11,7 @@ import ( const defaultRemote = "origin" -var githubSSHRemoteRegex = regexp.MustCompile(`git@github.com:`) +var githubSSHRemoteRegex = regexp.MustCompile(`git@github\.com:`) // getRepoName finds upstream repo name from a given repo directory func GetRepoName(repoUrl string) (string, error) { diff --git a/cli/util/git_test.go b/cli/util/git_test.go index 4bbf9b6a2f5..4cedbc25799 100644 --- a/cli/util/git_test.go +++ b/cli/util/git_test.go @@ -56,6 +56,12 @@ func TestGetRepoUrlAndRootPath(t *testing.T) { remote: defaultRemote, wantURL: "https://github.com/foo/bar.git", }, + { + name: "non git@github.com ssh remote", + repo: "git@githubAcom:foo/bar.git", + remote: defaultRemote, + wantURL: "git@githubAcom:foo/bar.git", + }, { name: "simple w/ module sub directory w/ ssh remote", repo: "git@github.com:foo/bar.git", From cd9130df03248999cf341a304c084468e4254173 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Jun 2023 20:30:07 +0200 Subject: [PATCH 0464/1371] chore(deps): update github/codeql-action action to v2.20.1 (#1690) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f2a711d2580..46e5b2a5bea 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/upload-sarif@f6e388ebf0efc915c6c5b165b019ee61a6746a38 # v2.20.1 with: sarif_file: results.sarif From 47793c6a107ec700463e8eb5e8ce1c74cae689e4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Jun 2023 20:34:26 +0200 Subject: [PATCH 0465/1371] chore(deps): update dependency google-cloud-build to v3.17.0 (#1691) --- .../function_source/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt index 4cf67f77735..de9ebe36784 100644 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt +++ b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt @@ -1,2 +1,2 @@ - google-cloud-build==3.16.0 + google-cloud-build==3.17.0 protobuf3==0.2.1 From 0368d07aeeeb3f758cf46d5220bd4b662f540000 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Jun 2023 20:37:54 +0200 Subject: [PATCH 0466/1371] chore(deps): update actions/checkout action to v3.5.3 (#1689) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 46e5b2a5bea..04d403b76df 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: persist-credentials: false From 63d1b06eb6a93c0176d9651e83e7e93a3fa28a7d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Jun 2023 20:39:13 +0200 Subject: [PATCH 0467/1371] chore(deps): update actions/upload-artifact action to v3.1.2 (#1687) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 04d403b76df..45d905b9f21 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: SARIF file path: results.sarif From 50bc54822628f8f24e5d463931efb273937c75fe Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Jun 2023 20:59:19 +0200 Subject: [PATCH 0468/1371] chore(deps): update ossf/scorecard-action action to v2.1.3 (#1688) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 45d905b9f21..ae01002d683 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2 + uses: ossf/scorecard-action@80e868c13c90f172d68d1f4501dee99e2479f7af # v2.1.3 with: results_file: results.sarif results_format: sarif From 7f1767bb8ee9658c7354153378e481d37e8816ba Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Jun 2023 21:07:04 +0200 Subject: [PATCH 0469/1371] chore(deps): update ossf/scorecard-action action to v2.2.0 (#1692) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ae01002d683..551e337232a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@80e868c13c90f172d68d1f4501dee99e2479f7af # v2.1.3 + uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0 with: results_file: results.sarif results_format: sarif From b46e50308eb8454c9785e9868c2d4c3fb908c971 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 29 Jun 2023 12:43:08 -0700 Subject: [PATCH 0470/1371] feat: update to terraform-docs v0.16.0 (#1628) --- infra/build/Makefile | 4 ++-- .../developer-tools/build/install_terraform_docs.sh | 7 ++++--- .../scripts/task_wrapper_scripts/terraform_docs.sh | 13 ++----------- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 19a77cc956d..67920c90a7d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -19,7 +19,7 @@ TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 437.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 -TERRAFORM_DOCS_VERSION := 0.10.1 +TERRAFORM_DOCS_VERSION := 0.16.0 RUBY_VERSION := 2.7.8 BATS_VERSION := 0.4.0 GOLANG_VERSION := 1.20 @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/install_terraform_docs.sh b/infra/build/developer-tools/build/install_terraform_docs.sh index a36ebf6d6cd..9c9c6f2c8b7 100755 --- a/infra/build/developer-tools/build/install_terraform_docs.sh +++ b/infra/build/developer-tools/build/install_terraform_docs.sh @@ -1,5 +1,5 @@ #! /bin/bash -# Copyright 2019 Google LLC +# Copyright 2019-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,5 +20,6 @@ cd /build TERRAFORM_DOCS_VERSION=$1 -wget "https://github.com/segmentio/terraform-docs/releases/download/v${TERRAFORM_DOCS_VERSION}/terraform-docs-v${TERRAFORM_DOCS_VERSION}-linux-amd64" -install -o 0 -g 0 -m 0755 "terraform-docs-v${TERRAFORM_DOCS_VERSION}-linux-amd64" /usr/local/bin/terraform-docs +wget -q "https://github.com/segmentio/terraform-docs/releases/download/v${TERRAFORM_DOCS_VERSION}/terraform-docs-v${TERRAFORM_DOCS_VERSION}-linux-amd64.tar.gz" +tar xzf ./terraform-docs-v${TERRAFORM_DOCS_VERSION}-linux-amd64.tar.gz +install -o 0 -g 0 -m 0755 "terraform-docs" /usr/local/bin/terraform-docs diff --git a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_docs.sh b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_docs.sh index 74aaafb1f0e..59173ee2800 100755 --- a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_docs.sh +++ b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_docs.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright 2019 Google LLC +# Copyright 2019-2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -62,7 +62,6 @@ terraform_docs() { ((index+=1)) done - readonly tmp_file=$(mktemp) readonly text_file="README.md" for path_uniq in $(echo "${paths[*]}" | tr ' ' '\n' | sort -u); do @@ -75,15 +74,7 @@ terraform_docs() { continue fi - terraform-docs --hide-all --show inputs --show outputs $args md ./ > "$tmp_file" - - # Replace content between markers with the placeholder - https://stackoverflow.com/questions/1212799/how-do-i-extract-lines-between-two-line-delimiters-in-perl#1212834 - perl -i -ne 'if (/BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK/../END OF PRE-COMMIT-TERRAFORM DOCS HOOK/) { print $_ if /BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK/; print "I_WANT_TO_BE_REPLACED\n$_" if /END OF PRE-COMMIT-TERRAFORM DOCS HOOK/;} else { print $_ }' "$text_file" - - # Replace placeholder with the content of the file - perl -i -e 'open(F, "'"$tmp_file"'"); $f = join "", ; while(<>){if (/I_WANT_TO_BE_REPLACED/) {print $f} else {print $_};}' "$text_file" - - rm -f "$tmp_file" + terraform-docs --output-template "\n{{ .Content }}\n\n" --anchor=false --show inputs --show outputs --output-file=$text_file $args md ./ popd > /dev/null done From 35d8e3895aa699dcd2cf53824f1bfa3ce65b355b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 30 Jun 2023 10:38:54 -0700 Subject: [PATCH 0471/1371] chore: update tf readme (#1693) --- infra/terraform/test-org/github/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/infra/terraform/test-org/github/README.md b/infra/terraform/test-org/github/README.md index 4544861e42d..b6b24308d96 100644 --- a/infra/terraform/test-org/github/README.md +++ b/infra/terraform/test-org/github/README.md @@ -13,3 +13,18 @@ export GITHUB_TOKEN=aaaaaaa ``` Note, because of the many resources involved, you might need to run Terraform with `-refresh=false`. + + +## Inputs + +No inputs. + +## Outputs + +| Name | Description | +|------|-------------| +| labels | n/a | +| protected\_repos | n/a | + + + From f195bb2b71fac5cb7850fffaf3672d1eb3561f44 Mon Sep 17 00:00:00 2001 From: Yvonne Li Date: Fri, 30 Jun 2023 11:14:02 -0700 Subject: [PATCH 0472/1371] chore: add terraform-google-gen-ai-document-summarization repo (#1680) Co-authored-by: Bharath KKB Co-authored-by: Andrew Peabody --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index a2b76f296fe..9d94384bdc3 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -40,6 +40,7 @@ locals { "large-data-sharing-go-app" = "terraform-large-data-sharing-golang-webapp" "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" "ml-image-annotation-gcf" = "terraform-ml-image-annotation-gcf" + "genai-doc-summarization" = "terraform-genai-doc-summarization" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 11e32e61129..b1078690e62 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -711,5 +711,14 @@ locals { owners = ["Saipriyavk", "ChrisBarefoot"] topics = local.common_topics.net }, + { + name = "terraform-genai-doc-summarization" + short_name = "genai-doc-summarization" + org = "GoogleCloudPlatform" + description = "Summarizes document using OCR and Vertex Generative AI LLM" + owners = ["asrivas", "balajismaniam", "telpirion", "yil532", "nicain"] + groups = ["dee-data-ai", local.jss_common_group] + enable_periodic = true + }, ] } From cf24d42adbdc02330dbf3af634509fe5fd8796f3 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 30 Jun 2023 13:04:27 -0700 Subject: [PATCH 0473/1371] fix: update terraform-google-secured-data-warehouse lint (#1694) --- infra/terraform/test-org/org/locals.tf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index b1078690e62..8fca03cd857 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -98,6 +98,9 @@ locals { description = "Deploys a secured BigQuery data warehouse" owners = ["erlanderlo"] topics = join(",", [local.common_topics.da, local.common_topics.e2e]) + lint_env = { + SHELLCHECK_OPTS = "-e SC2154 -e SC2171 -e SC2086" + } }, { name = "terraform-google-anthos-vm" From b57fb32122a9f291b5cc7d4f1219a85a82d00aba Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 5 Jul 2023 17:20:54 +0200 Subject: [PATCH 0474/1371] chore(deps): update peter-evans/create-pull-request digest to v5.0.2 (#1698) Co-authored-by: Andrew Peabody --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index bb0c9391934..d68e70a9c64 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -87,7 +87,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@5f8399b325911a0981ba132a51cceecce543d255 + uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v5.0.2 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From b31ff511c8a279adf8c82789640a0da818a5e912 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 6 Jul 2023 10:31:55 -0500 Subject: [PATCH 0475/1371] chore: Update Tools to 1.13.6 (#1697) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 67920c90a7d..0e4b9780c9b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.5.2 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 437.0.0 +CLOUD_SDK_VERSION := 437.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 RUBY_VERSION := 2.7.8 @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 9e31b5239cad3ac3018253ca53c7f2ba529124a1 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 6 Jul 2023 08:53:22 -0700 Subject: [PATCH 0476/1371] feat: update cli go modules (#1696) --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 118 +++++----- cli/go.sum | 406 +++++++++++++++-------------------- 7 files changed, 244 insertions(+), 290 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index b981dbebce0..8332e037b21 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.9 +VERSION=v1.1.10 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index 9d2ceb80b37..ce4cc44f9cf 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v47/github" + "github.com/google/go-github/v53/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index 07a503d1fc6..e12b0105f39 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v47/github" + "github.com/google/go-github/v53/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index 889d2680c07..01d1d5b8af3 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v47/github" + "github.com/google/go-github/v53/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 9a2112b3c84..488d68804df 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v47/github" + "github.com/google/go-github/v53/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index 0654ef77494..7eb014fb09b 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,38 +3,38 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.20 require ( - cloud.google.com/go/asset v1.13.0 + cloud.google.com/go/asset v1.14.1 cloud.google.com/go/storage v1.30.1 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.5.2 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200 - github.com/briandowns/spinner v1.16.0 - github.com/fatih/color v1.13.0 - github.com/gammazero/workerpool v1.1.2 - github.com/go-git/go-git/v5 v5.4.2 + github.com/briandowns/spinner v1.23.0 + github.com/fatih/color v1.15.0 + github.com/gammazero/workerpool v1.1.3 + github.com/go-git/go-git/v5 v5.7.0 github.com/golang/protobuf v1.5.3 - github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb + github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a github.com/google/go-cmp v0.5.9 - github.com/google/go-github/v47 v47.1.0 - github.com/hashicorp/hcl/v2 v2.16.2 - github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f + github.com/google/go-github/v53 v53.2.0 + github.com/hashicorp/hcl/v2 v2.17.0 + github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd github.com/iancoleman/strcase v0.2.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/invopop/jsonschema v0.7.0 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.2.4 + github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/manifoldco/promptui v0.9.0 - github.com/migueleliasweb/go-github-mock v0.0.12 + github.com/migueleliasweb/go-github-mock v0.0.19 github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 github.com/open-policy-agent/opa v0.49.2 - github.com/otiai10/copy v1.11.0 + github.com/otiai10/copy v1.12.0 github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.6.1 - github.com/spf13/viper v1.9.0 - github.com/stretchr/testify v1.8.2 + github.com/spf13/cobra v1.7.0 + github.com/spf13/viper v1.16.0 + github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/oauth2 v0.8.0 - golang.org/x/text v0.9.0 - google.golang.org/api v0.122.0 + golang.org/x/oauth2 v0.9.0 + golang.org/x/text v0.10.0 + google.golang.org/api v0.129.0 gopkg.in/yaml.v2 v2.4.0 sigs.k8s.io/kustomize/kyaml v0.14.2 sigs.k8s.io/yaml v1.3.0 @@ -42,17 +42,17 @@ require ( require ( cloud.google.com/go v0.110.2 // indirect - cloud.google.com/go/accesscontextmanager v1.7.0 // indirect - cloud.google.com/go/compute v1.19.2 // indirect + cloud.google.com/go/accesscontextmanager v1.8.0 // indirect + cloud.google.com/go/compute v1.19.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.0.1 // indirect - cloud.google.com/go/longrunning v0.4.1 // indirect - cloud.google.com/go/orgpolicy v1.10.0 // indirect - cloud.google.com/go/osconfig v1.11.0 // indirect - github.com/Microsoft/go-winio v0.4.16 // indirect + cloud.google.com/go/iam v1.1.0 // indirect + cloud.google.com/go/longrunning v0.5.0 // indirect + cloud.google.com/go/orgpolicy v1.11.0 // indirect + cloud.google.com/go/osconfig v1.12.0 // indirect + github.com/Microsoft/go-winio v0.5.2 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect - github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect + github.com/acomagu/bufpipe v1.0.4 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect @@ -63,17 +63,18 @@ require ( github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect + github.com/cloudflare/circl v1.3.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/emicklei/go-restful/v3 v3.9.0 // indirect - github.com/emirpasic/gods v1.12.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/gammazero/deque v0.1.0 // indirect + github.com/gammazero/deque v0.2.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-errors/errors v1.4.2 // indirect - github.com/go-git/gcfg v1.5.0 // indirect - github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.4.1 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.21.2 // indirect @@ -92,13 +93,12 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic v0.6.9 // indirect - github.com/google/go-github/v41 v41.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/s2a-go v0.1.3 // indirect + github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.8.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect + github.com/googleapis/gax-go/v2 v2.11.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect github.com/gruntwork-io/terratest v0.41.23 // indirect @@ -106,47 +106,49 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect - github.com/imdario/mergo v0.3.13 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/imdario/mergo v0.3.15 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect - github.com/magiconair/properties v1.8.5 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.9 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect - github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-runewidth v0.0.13 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/open-policy-agent/frameworks/constraint v0.0.0-20230304011918-d82cbe189211 // indirect github.com/open-policy-agent/gatekeeper v0.0.0-20230406045040-effa347e75b5 // indirect - github.com/pelletier/go-toml v1.9.4 // indirect + github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.14.0 // indirect github.com/prometheus/client_model v0.3.0 // indirect github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rivo/uniseg v0.2.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect - github.com/spf13/afero v1.6.0 // indirect - github.com/spf13/cast v1.4.1 // indirect + github.com/skeema/knownhosts v1.1.1 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect - github.com/subosito/gotenv v1.2.0 // indirect + github.com/subosito/gotenv v1.4.2 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/xanzy/ssh-agent v0.3.0 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/yashtewari/glob-intersection v0.1.0 // indirect @@ -162,22 +164,22 @@ require ( go.opentelemetry.io/otel/sdk v1.10.0 // indirect go.opentelemetry.io/otel/trace v1.10.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/crypto v0.9.0 // indirect + golang.org/x/crypto v0.10.0 // indirect golang.org/x/mod v0.10.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/term v0.8.0 // indirect + golang.org/x/net v0.11.0 // indirect + golang.org/x/sys v0.9.0 // indirect + golang.org/x/term v0.9.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e // indirect - google.golang.org/grpc v1.55.0 // indirect - google.golang.org/protobuf v1.30.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/grpc v1.56.1 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.63.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.26.3 // indirect diff --git a/cli/go.sum b/cli/go.sum index cdccdaa4b1b..58798c75206 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -3,6 +3,7 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -15,42 +16,38 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= -cloud.google.com/go/accesscontextmanager v1.7.0 h1:MG60JgnEoawHJrbWw0jGdv6HLNSf6gQvYRiXpuzqgEA= -cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= -cloud.google.com/go/asset v1.13.0 h1:YAsssO08BqZ6mncbb6FPlj9h6ACS7bJQUOlzciSfbNk= -cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= +cloud.google.com/go/accesscontextmanager v1.8.0 h1:cCPSztLzUx8OHoyRMcUOy4R/vGLYDk/7gZ5V5J/bbP0= +cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= +cloud.google.com/go/asset v1.14.1 h1:vlHdznX70eYW4V1y1PxocvF6tEwxJTTarwIGwOhFF3U= +cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.19.2 h1:GbJtPo8OKVHbVep8jvM57KidbYHxeE68LOVqouNLrDY= -cloud.google.com/go/compute v1.19.2/go.mod h1:5f5a+iC1IriXYauaQ0EyQmEAEq9CGRnV5xJSQSlTV08= +cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= -cloud.google.com/go/iam v1.0.1 h1:lyeCAU6jpnVNrE9zGQkTl3WgNgK/X+uWwaw0kynZJMU= -cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= -cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= -cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= -cloud.google.com/go/orgpolicy v1.10.0 h1:XDriMWug7sd0kYT1QKofRpRHzjad0bK8Q8uA9q+XrU4= -cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= -cloud.google.com/go/osconfig v1.11.0 h1:PkSQx4OHit5xz2bNyr11KGcaFccL5oqglFPdTboyqwQ= -cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= +cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94= +cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/longrunning v0.5.0 h1:DK8BH0+hS+DIvc9a2TPnteUievsTCH4ORMAASSb7JcQ= +cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= +cloud.google.com/go/orgpolicy v1.11.0 h1:1B0K72FucdwRWLRIuG9ExgPj/fkJyRAmvrpoI4vFUMM= +cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= +cloud.google.com/go/osconfig v1.12.0 h1:+ENCeRbwYODEPhaFt7yBELUln129bX25JZSf8fpkgEI= +cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -60,6 +57,7 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -79,21 +77,19 @@ github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0. github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200 h1:Gq7/IgcOdkxlDsYvREf7fNSBLI/ABl0IrZFVvnG6wUw= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200/go.mod h1:ypZtzw2mHkKCk9sx+4RDg5z0qjw+Il0SD2MfFUjt7ak= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= +github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= +github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek= +github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= -github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= +github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= @@ -103,13 +99,10 @@ 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/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= @@ -118,9 +111,7 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= @@ -136,9 +127,11 @@ github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqO github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/briandowns/spinner v1.16.0 h1:DFmp6hEaIx2QXXuqSJmtfSBSAjRmpGiKG6ip2Wm/yOs= -github.com/briandowns/spinner v1.16.0/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= +github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= +github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -157,6 +150,9 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= +github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -190,12 +186,13 @@ github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4Kfc github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= 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/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= 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= @@ -214,46 +211,40 @@ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2Vvl github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897 h1:E52jfcE64UG42SwLmrW0QByONfGynWuzBvm86BoB9z8= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -github.com/fzipp/gocyclo v0.3.1/go.mod h1:DJHO6AUmbdqj2ET4Z9iArSuwWgYDRryYt2wASxc7x3E= -github.com/gammazero/deque v0.1.0 h1:f9LnNmq66VDeuAlSAapemq/U7hJ2jpIWa4c09q8Dlik= -github.com/gammazero/deque v0.1.0/go.mod h1:KQw7vFau1hHuM8xmI9RbgKFbAsQFWmBpqQ2KenFLk6M= -github.com/gammazero/workerpool v1.1.2 h1:vuioDQbgrz4HoaCi2q1HLlOXdpbap5AET7xu5/qj87g= -github.com/gammazero/workerpool v1.1.2/go.mod h1:UelbXcO0zCIGFcufcirHhq2/xtLXJdQ29qZNlXG9OjQ= +github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA= +github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= +github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= +github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= -github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= -github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= -github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= -github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= -github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= -github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= +github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= +github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= +github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -261,6 +252,7 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 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/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= @@ -311,7 +303,6 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= -github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= @@ -361,8 +352,6 @@ github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -383,11 +372,10 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu 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/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= -github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb h1:7h+tPfwoUE+qLvWYmsvKSiRlXv6WGorb6PUKaZUclwc= -github.com/gomarkdown/markdown v0.0.0-20220905174103-7b278df48cfb/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a h1:AWZzzFrqyjYlRloN6edwTLTUbKxf5flLXNuTBDm3Ews= +github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= @@ -408,12 +396,12 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github/v41 v41.0.0 h1:HseJrM2JFf2vfiZJ8anY2hqBjdfY1Vlj/K27ueww4gg= -github.com/google/go-github/v41 v41.0.0/go.mod h1:XgmCA5H323A9rtgExdTcnDkcqp6S30AVACCBDOonIxg= -github.com/google/go-github/v47 v47.1.0 h1:Cacm/WxQBOa9lF0FT0EMjZ2BWMetQ1TQfyurn4yF1z8= -github.com/google/go-github/v47 v47.1.0/go.mod h1:VPZBXNbFSJGjyjFRUKo9vZGawTajnWzC/YjGw/oFKi0= +github.com/google/go-github/v53 v53.0.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= +github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= +github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -424,7 +412,6 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -435,29 +422,27 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= 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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= @@ -474,22 +459,17 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU github.com/gruntwork-io/terratest v0.41.23 h1:GqwK0Nh6IQze3hka6iwuOd1V3wX7/y/85W25d1zpAnE= github.com/gruntwork-io/terratest v0.41.23/go.mod h1:O6gajNBjO1wvc7Wl9WtbO+ORcdnhAV2GQiBE71ycwIk= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -497,21 +477,16 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= -github.com/hashicorp/hcl/v2 v2.16.2 h1:mpkHZh/Tv+xet3sy3F9Ld4FyI2tUpWe9x3XtPx9f1a0= -github.com/hashicorp/hcl/v2 v2.16.2/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= +github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY= +github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f h1:R8UIC07Ha9jZYkdcJ51l4ownCB8xYwfJtrgZSMvqjWI= -github.com/hashicorp/terraform-config-inspect v0.0.0-20211115214459-90acf1ca460f/go.mod h1:Z0Nnk4+3Cy89smEbrq+sl1bxc9198gIP4I7wcQF6Kqs= +github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd h1:1uPcotqoL4TjcGKlgIe7OFSRplf7BMVtUjekwmCrvuM= +github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= @@ -520,24 +495,22 @@ github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.2.4 h1:wdaj2KHD2W+mz8JgJ/Q6L/T5dB7kyqEFI16eLq7GEmk= -github.com/jedib0t/go-pretty/v6 v6.2.4/go.mod h1:+nE9fyyHGil+PuISTCrp7avEdo6bqoMwqZnuiK2r2a0= +github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= +github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= @@ -556,8 +529,8 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -570,20 +543,19 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= 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 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= @@ -597,39 +569,29 @@ github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kN github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= -github.com/migueleliasweb/go-github-mock v0.0.12 h1:z9Qd82YRA2+LbVDefRG+4PKRgaB3NYtjlv+eNtREWY4= -github.com/migueleliasweb/go-github-mock v0.0.12/go.mod h1:mD5w+9J3oBBMLr7uD6owEYlYBAL8tZd+BA7iGjI4EU8= +github.com/migueleliasweb/go-github-mock v0.0.19 h1:z/88f6wPqZVFnE7s9DbwXMhCtmV/0FofNxc4M7FuSdU= +github.com/migueleliasweb/go-github-mock v0.0.19/go.mod h1:dBoCB3W9NjzyABhoGkfI0iSlFpzulAXhI7M+9A4ONYI= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= @@ -639,9 +601,8 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -681,26 +642,28 @@ github.com/open-policy-agent/gatekeeper v0.0.0-20230406045040-effa347e75b5/go.mo github.com/open-policy-agent/opa v0.49.2 h1:n8ntRq/yDWy+cmYaqSLrHXmrT3tX8WlK28vjFQdC6W8= github.com/open-policy-agent/opa v0.49.2/go.mod h1:7L3lN5qe8xboRmEHxC5lGjo5KsRMdK+CCLiFoOCP7rU= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= -github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= +github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -735,18 +698,19 @@ github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0ua github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -755,36 +719,39 @@ github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= 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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= +github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +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/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= -github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= +github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= +github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -800,12 +767,15 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 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.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +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/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -821,9 +791,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= -github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= @@ -847,7 +816,6 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.13.1 h1:0a6bRwuiSHtAmqCqNOE+c2oHgepv0ctoxU4FUe43kwc= github.com/zclconf/go-cty v1.13.1/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -903,34 +871,34 @@ go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/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-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -967,10 +935,10 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -990,7 +958,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1010,13 +977,12 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1024,8 +990,12 @@ golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qx 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.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= 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= @@ -1039,13 +1009,12 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -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.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= +golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= 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= @@ -1059,8 +1028,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ 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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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= @@ -1070,36 +1039,28 @@ golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1123,39 +1084,47 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/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-20210514084401-e8d321eab015/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-20210603125802-9665404d3644/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/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-20220715151400-c0bba94af5f8/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= 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= @@ -1166,8 +1135,12 @@ golang.org/x/text v0.3.5/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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 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= @@ -1194,7 +1167,6 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1232,14 +1204,13 @@ golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= 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= @@ -1271,14 +1242,8 @@ google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjR google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.129.0 h1:2XbdjjNfFPXQyufzQVwPf1RRnHH8Den2pfNE2jw7L8w= +google.golang.org/api v0.129.0/go.mod h1:dFjiXlanKwWE3612X97llhsoI36FAoIiRj3aTl5b/zE= 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= @@ -1323,32 +1288,23 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e h1:AZX1ra8YbFMSb7+1pI8S9v4rrgRR7jU1FmuFSSjTVcQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e h1:NumxXLPfHSndr3wBBdeKiVHjGVFzi9RX2HwwQke94iY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= 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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1370,16 +1326,12 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= +google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= 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= @@ -1393,8 +1345,9 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.27.1/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.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= @@ -1407,8 +1360,8 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= -gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -1427,7 +1380,6 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/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.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/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= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= From 115f89c298e66977171aab356f3507915ff99808 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 6 Jul 2023 18:51:22 +0200 Subject: [PATCH 0477/1371] fix(deps): update module google.golang.org/api to v0.130.0 (#1699) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/utils/fbf/go.mod | 14 +++++++------- infra/utils/fbf/go.sum | 28 ++++++++++++++-------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 0e4b9780c9b..76e9937125f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index fd415a95603..ff46d846ccf 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.129.0 + google.golang.org/api v0.130.0 ) require ( @@ -26,14 +26,14 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.10.0 // indirect - golang.org/x/net v0.11.0 // indirect + golang.org/x/crypto v0.11.0 // indirect + golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.9.0 // indirect - golang.org/x/sys v0.9.0 // indirect - golang.org/x/term v0.9.0 // indirect - golang.org/x/text v0.10.0 // indirect + golang.org/x/sys v0.10.0 // indirect + golang.org/x/term v0.10.0 // indirect + golang.org/x/text v0.11.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529 // indirect google.golang.org/grpc v1.56.1 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 8c877820540..a349c3d089d 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -105,8 +105,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -125,8 +125,8 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= @@ -150,20 +150,20 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.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.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.129.0 h1:2XbdjjNfFPXQyufzQVwPf1RRnHH8Den2pfNE2jw7L8w= -google.golang.org/api v0.129.0/go.mod h1:dFjiXlanKwWE3612X97llhsoI36FAoIiRj3aTl5b/zE= +google.golang.org/api v0.130.0 h1:A50ujooa1h9iizvfzA4rrJr2B7uRmWexwbekQ2+5FPQ= +google.golang.org/api v0.130.0/go.mod h1:J/LCJMYSDFvAVREGCbrESb53n4++NMBDetSHGL5I5RY= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -186,8 +186,8 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529 h1:DEH99RbiLZhMxrpEJCZ0A+wdTe0EOgou/poSLx9vWf4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 4825036fc2e1f3b876418e224bd577cb38b776ae Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 6 Jul 2023 10:13:21 -0700 Subject: [PATCH 0478/1371] chore: update stale (#1695) --- .github/workflows/stale.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 2652cf3d2b8..8df7c5498dc 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -17,6 +17,10 @@ on: schedule: - cron: "0 23 * * *" +permissions: + issues: write + pull-requests: write + jobs: stale: runs-on: ubuntu-latest From 2977570586dce0980932f4553c7a18a23cff4c46 Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Fri, 7 Jul 2023 12:55:36 -0500 Subject: [PATCH 0479/1371] chore: onboard secure notebook blueprint (#1657) Co-authored-by: Awais Malik --- infra/.gitignore | 1 + infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/github.tf | 6 ++++++ infra/terraform/test-org/org/locals.tf | 8 ++++++++ infra/terraform/test-org/org/outputs.tf | 4 ++-- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/infra/.gitignore b/infra/.gitignore index ea42ba7cc1f..4a234a4417d 100644 --- a/infra/.gitignore +++ b/infra/.gitignore @@ -8,3 +8,4 @@ credentials.json *.credentials.json concourse/fly .idea/ +**/*.tfvars diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 9d94384bdc3..a2032eeac36 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -41,6 +41,7 @@ locals { "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" "ml-image-annotation-gcf" = "terraform-ml-image-annotation-gcf" "genai-doc-summarization" = "terraform-genai-doc-summarization" + "secured-notebook" = "notebooks-blueprint-security" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/github.tf b/infra/terraform/test-org/org/github.tf index 0465dcd1a80..5cc181127ad 100644 --- a/infra/terraform/test-org/org/github.tf +++ b/infra/terraform/test-org/org/github.tf @@ -29,6 +29,12 @@ locals { invalid_owners = setsubtract(local.owners, local.org_members) } +variable "temp_allow_invalid_owners" { + type = list(string) + description = "Googlers added as owners on TF blueprint repos but are not part of the GCP or TGM orgs yet." + default = [] +} + data "github_organization" "tgm" { name = "terraform-google-modules" } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 8fca03cd857..12f38f8044f 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -714,6 +714,14 @@ locals { owners = ["Saipriyavk", "ChrisBarefoot"] topics = local.common_topics.net }, + { + name = "notebooks-blueprint-security" + short_name = "secured-notebook" + org = "GoogleCloudPlatform" + description = "Opinionated setup for securely using AI Platform Notebooks." + owners = ["gtsorbo", "erlanderlo"] + topics = join(",", [local.common_topics.da, local.common_topics.security]) + }, { name = "terraform-genai-doc-summarization" short_name = "genai-doc-summarization" diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index 353a84d7409..243eae332da 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -104,8 +104,8 @@ output "modules" { value = [for value in local.repos : value if try(value.module, true)] precondition { - condition = length(local.invalid_owners) == 0 - error_message = "Provided Repo Owners are not currently members of GCP or TGM Orgs: ${join(", ", local.invalid_owners)}" + condition = length(setsubtract(local.invalid_owners, var.temp_allow_invalid_owners)) == 0 + error_message = "Provided Repo Owners are not currently members of GCP or TGM Orgs: ${join(", ", local.invalid_owners)}. You can bypass this error by setting these members in temp_allow_invalid_owners var when running plan/apply." } } From e08243e58d07347a4860a05597000d6d2623e46c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 10 Jul 2023 17:48:43 +0200 Subject: [PATCH 0480/1371] chore(deps): update github/codeql-action action to v2.20.2 (#1702) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 551e337232a..1de52a5d338 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f6e388ebf0efc915c6c5b165b019ee61a6746a38 # v2.20.1 + uses: github/codeql-action/upload-sarif@004c5de30b6423267685b897a3d595e944f7fed5 # v2.20.2 with: sarif_file: results.sarif From 4bafe834a31279dfe064dcae21b69bdb1d596ee7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 10 Jul 2023 17:51:37 +0200 Subject: [PATCH 0481/1371] chore(deps): update github/codeql-action action to v2.20.3 (#1703) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1de52a5d338..e92666ee4ab 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@004c5de30b6423267685b897a3d595e944f7fed5 # v2.20.2 + uses: github/codeql-action/upload-sarif@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3 with: sarif_file: results.sarif From 93e84cf114487d243b2fde0a2a591ca71f5e848b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 11 Jul 2023 14:02:10 -0700 Subject: [PATCH 0482/1371] chore: remove ci-comment-build-trigger-function (#1706) --- .../.terraform.lock.hcl | 95 ----------- .../backend.tf | 22 --- .../function.tf | 58 ------- .../function_source/main.py | 151 ------------------ .../function_source/requirements.txt | 2 - .../versions.tf | 24 --- 6 files changed, 352 deletions(-) delete mode 100644 infra/terraform/test-org/ci-comment-build-trigger-function/.terraform.lock.hcl delete mode 100644 infra/terraform/test-org/ci-comment-build-trigger-function/backend.tf delete mode 100644 infra/terraform/test-org/ci-comment-build-trigger-function/function.tf delete mode 100644 infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py delete mode 100644 infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt delete mode 100644 infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/.terraform.lock.hcl b/infra/terraform/test-org/ci-comment-build-trigger-function/.terraform.lock.hcl deleted file mode 100644 index 06d98b0891e..00000000000 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/.terraform.lock.hcl +++ /dev/null @@ -1,95 +0,0 @@ -# This file is maintained automatically by "terraform init". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/hashicorp/archive" { - version = "2.2.0" - hashes = [ - "h1:CIWi5G6ob7p2wWoThRQbOB8AbmFlCzp7Ka81hR3cVp0=", - "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", - "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", - "zh:100fc5b3fc01ea463533d7bbfb01cb7113947a969a4ec12e27f5b2be49884d6c", - "zh:55c0d7ddddbd0a46d57c51fcfa9b91f14eed081a45101dbfc7fd9d2278aa1403", - "zh:73a5dd68379119167934c48afa1101b09abad2deb436cd5c446733e705869d6b", - "zh:841fc4ac6dc3479981330974d44ad2341deada8a5ff9e3b1b4510702dfbdbed9", - "zh:91be62c9b41edb137f7f835491183628d484e9d6efa82fcb75cfa538c92791c5", - "zh:acd5f442bd88d67eb948b18dc2ed421c6c3faee62d3a12200e442bfff0aa7d8b", - "zh:ad5720da5524641ad718a565694821be5f61f68f1c3c5d2cfa24426b8e774bef", - "zh:e63f12ea938520b3f83634fc29da28d92eed5cfbc5cc8ca08281a6a9c36cca65", - "zh:f6542918faa115df46474a36aabb4c3899650bea036b5f8a5e296be6f8f25767", - ] -} - -provider "registry.terraform.io/hashicorp/google" { - version = "4.23.0" - constraints = ">= 3.38.0, < 5.0.0" - hashes = [ - "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", - "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", - "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", - "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", - "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", - "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", - "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", - "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", - "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", - "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", - "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", - "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", - ] -} - -provider "registry.terraform.io/hashicorp/null" { - version = "3.1.1" - hashes = [ - "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", - "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", - "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", - "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", - "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", - "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", - "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", - "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", - "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", - "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", - "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", - "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", - ] -} - -provider "registry.terraform.io/hashicorp/random" { - version = "3.2.0" - hashes = [ - "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", - "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", - "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", - "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", - "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", - "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", - "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", - "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", - "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", - "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", - "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", - "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", - ] -} - -provider "registry.terraform.io/hashicorp/template" { - version = "2.2.0" - hashes = [ - "h1:94qn780bi1qjrbC3uQtjJh3Wkfwd5+tTtJHOb7KTg9w=", - "zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386", - "zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53", - "zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603", - "zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16", - "zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776", - "zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451", - "zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae", - "zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde", - "zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d", - "zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2", - ] -} diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/backend.tf b/infra/terraform/test-org/ci-comment-build-trigger-function/backend.tf deleted file mode 100644 index a7775dd4270..00000000000 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/backend.tf +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright 2019 Google LLC - * - * 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. - */ - -terraform { - backend "gcs" { - bucket = "cft-infra-test-tfstate" - prefix = "state/ci-pr-comment-function" - } -} diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf b/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf deleted file mode 100644 index 8441a7a45d8..00000000000 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function.tf +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright 2020 Google LLC - * - * 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. - */ - -# TODO: no longer in-use, remove per https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1537 - -# locals { -# project_id = "cloud-foundation-cicd" -# } - -# module "gcf_service_account" { -# source = "terraform-google-modules/service-accounts/google" -# version = "~> 4.1" -# project_id = local.project_id -# names = ["pr-comment-cf-sa"] -# project_roles = [ -# "${local.project_id}=>roles/cloudbuild.builds.editor" -# ] -# } - -# resource "random_id" "suffix" { -# byte_length = 4 -# } - -# module "pr_comment_build_function" { -# source = "terraform-google-modules/event-function/google" -# version = "~> 2.3" -# name = "pr-comment-downstream-builder-${random_id.suffix.hex}" -# project_id = local.project_id -# region = "us-central1" -# description = "Launches a downstream build that comments on a PR." -# entry_point = "main" -# runtime = "python37" -# source_directory = "${path.module}/function_source" -# service_account_email = module.gcf_service_account.email -# bucket_force_destroy = true - -# environment_variables = { -# CLOUDBUILD_PROJECT = local.project_id -# } - -# event_trigger = { -# event_type = "google.pubsub.topic.publish" -# resource = "projects/${local.project_id}/topics/cloud-builds" -# } -# } diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py deleted file mode 100644 index cbd2e274f64..00000000000 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/main.py +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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 -# -# https://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. - -# flake8: noqa - -import base64 -import sys -import os -import json -import logging -import requests - -from google.cloud.devtools.cloudbuild_v1 import CloudBuildClient as cloudbuild -from google.cloud.devtools.cloudbuild_v1.types import ( - BuildStep, - Build, - BuildOptions) -from google.protobuf import duration_pb2 as duration - -CFT_TOOLS_DEFAULT_IMAGE = 'gcr.io/cloud-foundation-cicd/cft/developer-tools' -CFT_TOOLS_DEFAULT_IMAGE_VERSION = '1' -# Disable terraform-google-module-template as it uses a cookiecutter template -DISABLED_MODULES = ["terraform-example-foundation", - "cloud-foundation-training", - "terraform-google-module-template"] - - -def main(event, context): - """ Triggers a new downstream build based on a PubSub message - originating from a parent cloudbuild """ - # if cloud build project is not set, exit - if not os.getenv('CLOUDBUILD_PROJECT'): - logging.warn('Cloud Build project not set') - sys.exit(1) - # if no data in PubSub event, log and exit - if 'data' not in event: - logging.info('Unable to find data in PubSub event') - sys.exit(1) - # decode data in PubSub event - data = json.loads(base64.b64decode(event['data']).decode('utf-8')) - # if the parent build originated from CF, ignore - if data['substitutions'].get('_IS_TRIGGERED_BY_CF', False): - logging.warn('Triggered by CF, Ignoring') - return - logging.info('Parent build not triggered by CF') - # if parent build is not a lint build, ignore - if 'lint' not in data['tags']: - logging.warn('Parent build is not a lint build') - return - # if parent build has not started, or is in any other state, ignore - if data['status'] != 'WORKING': - logging.warn('Parent build is not in WORKING status') - return - logging.info('Parent build is in WORKING status') - # if repo ref for the parent build has disabled PR bot, ignore - if data['substitutions']['REPO_NAME'] in DISABLED_MODULES: - logging.warn('Comment bot is disabled for this repo') - return - if data['substitutions'].get('_DOCKER_TAG_VERSION_DEVELOPER_TOOLS', False): - logging.info( - f'Found _DOCKER_TAG_VERSION_DEVELOPER_TOOLS. Setting tools image version to {data["substitutions"]["_DOCKER_TAG_VERSION_DEVELOPER_TOOLS"]}' - ) - CFT_TOOLS_DEFAULT_IMAGE_VERSION = data['substitutions'][ - '_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' - ] - # Cloud Build seems to have a bug where if a build is re run through - # Github UI, it will not set _PR_NUMBER or _HEAD_REPO_URL - # workaround using the GH API to infer PR number and _HEAD_REPO_URL - PR_NUMBER = data['substitutions'].get('_PR_NUMBER', False) - _HEAD_REPO_URL = data['substitutions'].get('_HEAD_REPO_URL', False) - # default clone repo step - get_repo_args = [ - '-c', - 'git clone $$REPO_URL . && git checkout $$COMMIT_SHA && git status', - ] - if not (PR_NUMBER or _HEAD_REPO_URL): - logging.warn( - 'Unable to infer PR number via Cloud Build. Trying via GH API') - # get list of github PRs that have this SHA - response = requests.get( - f'https://api.github.com/search/issues?q={data["substitutions"]["COMMIT_SHA"]}' - ) - response.raise_for_status() - response_obj = response.json() - # if more than one PR, ignore - if response_obj['total_count'] != 1: - logging.info(f'Multiple associated PRs found. Exiting...') - return - # if only one PR, its safe to assume that is associated with parent build's PR - logging.info( - f'One associated PR found: {response_obj["items"][0]["number"]}') - PR_NUMBER = response_obj['items'][0]['number'] - # get target repo URL - pr_url = response_obj['items'][0]['html_url'] - _HEAD_REPO_URL = pr_url[: pr_url.find('/pull')] - # fetch PR at head using PR number - get_repo_args = [ - '-c', - 'git clone $$REPO_URL . && git fetch origin pull/$$_PR_NUMBER/head:$$_PR_NUMBER && git checkout $$_PR_NUMBER && git show --name-only', - ] - - # prepare env vars - env = [ - f'_PR_NUMBER={PR_NUMBER}', - f'REPO_NAME={data["substitutions"]["REPO_NAME"]}', - f'REPO_URL={_HEAD_REPO_URL}', - f'COMMIT_SHA={data["substitutions"]["COMMIT_SHA"]}', - ] - get_repo_step = BuildStep( - name='gcr.io/cloud-builders/git', - env=env, - args=get_repo_args, - id='get_repo', - entrypoint='bash', - ) - # lint comment step - lint_args = [ - '-c', - 'source /usr/local/bin/task_helper_functions.sh && printenv && post_lint_status_pr_comment', - ] - lint_step = BuildStep( - name=f'{CFT_TOOLS_DEFAULT_IMAGE}:{CFT_TOOLS_DEFAULT_IMAGE_VERSION}', - env=env, - args=lint_args, - id='lint_comment', - entrypoint='/bin/bash', - ) - # substitutions - sub = { - '_IS_TRIGGERED_BY_CF': '1', - } - # create and trigger build - build = Build( - steps=[get_repo_step, lint_step], - options=BuildOptions(substitution_option='ALLOW_LOOSE'), - substitutions=sub, - timeout=duration.Duration(seconds=1200), - ) - response = cloudbuild().create_build(os.getenv('CLOUDBUILD_PROJECT'), build) - logging.info(response) diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt b/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt deleted file mode 100644 index de9ebe36784..00000000000 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/function_source/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ - google-cloud-build==3.17.0 - protobuf3==0.2.1 diff --git a/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf b/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf deleted file mode 100644 index 3dd96cf5390..00000000000 --- a/infra/terraform/test-org/ci-comment-build-trigger-function/versions.tf +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2020 Google LLC - * - * 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. - */ - -terraform { - required_version = ">= 1.4.4" - required_providers { - google = { - version = ">= 3.38, < 5.0" - } - } -} From 9c423f910c14899eb311bf9b026439eb70378602 Mon Sep 17 00:00:00 2001 From: Adam Ross Date: Thu, 13 Jul 2023 14:41:46 -0700 Subject: [PATCH 0483/1371] feat: Add HTTP Assert test helpers (#1707) --- infra/blueprint-test/pkg/utils/asserthttp.go | 163 ++++++++++++++ .../pkg/utils/asserthttp_test.go | 209 ++++++++++++++++++ 2 files changed, 372 insertions(+) create mode 100644 infra/blueprint-test/pkg/utils/asserthttp.go create mode 100644 infra/blueprint-test/pkg/utils/asserthttp_test.go diff --git a/infra/blueprint-test/pkg/utils/asserthttp.go b/infra/blueprint-test/pkg/utils/asserthttp.go new file mode 100644 index 00000000000..f82e2b9109c --- /dev/null +++ b/infra/blueprint-test/pkg/utils/asserthttp.go @@ -0,0 +1,163 @@ +/** + * Copyright 2023 Google LLC + * + * 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 utils + +import ( + "io" + "net/http" + "strings" + "time" + + "github.com/mitchellh/go-testing-interface" +) + +// AssertHTTP provides a collection of HTTP asserts. +type AssertHTTP struct { + httpClient *http.Client +} + +type assertOption func(*AssertHTTP) + +// WithHTTPClient specifies an HTTP client for the AssertHTTP use. +func WithHTTPClient(c *http.Client) assertOption { + return func(ah *AssertHTTP) { + ah.httpClient = c + } +} + +// NewAssertHTTP creates a new AssertHTTP with option overrides. +func NewAssertHTTP(opts ...assertOption) *AssertHTTP { + ah := &AssertHTTP{http.DefaultClient} + for _, opt := range opts { + opt(ah) + } + return ah +} + +// AssertSuccessWithRetry runs httpRequest and retries on errors outside client control. +func (ah *AssertHTTP) AssertSuccessWithRetry(t testing.TB, r *http.Request) { + t.Helper() + Poll(t, ah.httpRequest(t, r), 3, 2*time.Second) +} + +// AssertSuccess runs httpRequest without retry. +func (ah *AssertHTTP) AssertSuccess(t testing.TB, r *http.Request) { + t.Helper() + _, err := ah.httpRequest(t, r)() + if err != nil { + t.Fatal(err) + } +} + +// AssertResponseWithRetry runs httpResponse and retries on errors outside client control. +func (ah *AssertHTTP) AssertResponseWithRetry(t testing.TB, r *http.Request, wantCode int, want ...string) { + t.Helper() + Poll(t, ah.httpResponse(t, r, wantCode, want...), 3, 2*time.Second) +} + +// AssertResponse runs httpResponse without retry. +func (ah *AssertHTTP) AssertResponse(t testing.TB, r *http.Request, wantCode int, want ...string) { + t.Helper() + _, err := ah.httpResponse(t, r, wantCode, want...)() + if err != nil { + t.Fatal(err) + } +} + +// httpRequest verifies the request is successful by HTTP status code. +func (ah *AssertHTTP) httpRequest(t testing.TB, r *http.Request) func() (bool, error) { + t.Helper() + return func() (bool, error) { + t.Logf("Sending HTTP Request %s %s", r.Method, r.URL.String()) + got, err := ah.httpClient.Do(r) + if err != nil { + return false, err + } + // Keep trying until the result is success or the request responsibility. + if retry := httpRetryCondition(got.StatusCode); retry { + return true, nil + } + // Any HTTP success will work. For a specific status use AssertResponse. + if got.StatusCode < http.StatusOK || got.StatusCode >= http.StatusMultipleChoices { + t.Errorf("want 2xx, got %d", got.StatusCode) + } + + return false, nil + } +} + +// httpResponse verifies the requested response has the wanted status code and payload. +func (ah *AssertHTTP) httpResponse(t testing.TB, r *http.Request, wantCode int, want ...string) func() (bool, error) { + t.Helper() + return func() (bool, error) { + t.Logf("Sending HTTP Request %s %s", r.Method, r.URL.String()) + got, err := ah.httpClient.Do(r) + if err != nil { + return false, err + } + defer got.Body.Close() + + if got.StatusCode != wantCode { + t.Errorf("response code: got %d, want %d", got.StatusCode, wantCode) + // Unwanted status code may be a server-side error condition that will clear. + // Assume unwanted success is not going to change. + return httpRetryCondition(got.StatusCode), nil + } + + b, err := io.ReadAll(got.Body) + if err != nil { + return true, err + } + out := string(b) + + atLeastOneError := false + for _, fragment := range want { + if !strings.Contains(out, fragment) { + t.Errorf("response body: want contained %q", fragment) + atLeastOneError = true + } + } + + // Only output received HTTP response body once. + if atLeastOneError { + t.Log("response output:") + t.Log(out) + } + + return false, nil + } +} + +// httpRetryCondition indicates retry should be attempted on HTTP 1xx, 401, 403, and 5xx errors. +// 401 and 403 are retried in case of lagging authorization configuration. +// On true return value a retry is preferred. +func httpRetryCondition(code int) bool { + switch { + case code >= http.StatusOK && code < http.StatusMultipleChoices: + return false + case code < http.StatusOK: + return false + case code >= http.StatusInternalServerError: + return true + case code == http.StatusUnauthorized || code == http.StatusForbidden: + return true + case code >= http.StatusBadRequest: + return false + } + + return false +} diff --git a/infra/blueprint-test/pkg/utils/asserthttp_test.go b/infra/blueprint-test/pkg/utils/asserthttp_test.go new file mode 100644 index 00000000000..75679d1f3b9 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/asserthttp_test.go @@ -0,0 +1,209 @@ +/** + * Copyright 2023 Google LLC + * + * 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 utils_test + +import ( + "errors" + "fmt" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" +) + +func TestAssertSuccess(t *testing.T) { + t.Run("success", func(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Println("Hello World") + })) + defer ts.Close() + + r, err := http.NewRequest(http.MethodGet, ts.URL, nil) + if err != nil { + t.Fatal(err) + } + + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) + ah.AssertSuccess(it, r) + + if it.err != nil { + t.Errorf("wanted success, got %v", it.err) + } + }) + t.Run("request error", func(t *testing.T) { + r, err := http.NewRequest(http.MethodGet, "/nope", nil) + if err != nil { + t.Fatal(err) + } + it := &inspectableT{t, nil} + utils.NewAssertHTTP().AssertSuccess(it, r) + + if it.err == nil { + t.Error("wanted error, got success") + } + }) + t.Run("response error", func(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "Not Available", http.StatusServiceUnavailable) + })) + defer ts.Close() + + r, err := http.NewRequest(http.MethodGet, ts.URL, nil) + if err != nil { + t.Fatal(err) + } + + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) + ah.AssertSuccess(it, r) + + if it.err != nil { + t.Errorf("wanted error, got %v", it.err) + } + }) +} + +func TestAssertResponse(t *testing.T) { + t.Run("success", func(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Println("Hello World") + })) + defer ts.Close() + + r, err := http.NewRequest(http.MethodGet, ts.URL, nil) + if err != nil { + t.Fatal(err) + } + + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) + ah.AssertResponse(it, r, http.StatusOK) + if it.err != nil { + t.Errorf("wanted success, got %v", it.err) + } + }) + t.Run("request error", func(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "Not Available", http.StatusServiceUnavailable) + })) + defer ts.Close() + + r, err := http.NewRequest(http.MethodGet, "/nope", nil) + if err != nil { + t.Fatal(err) + } + + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) + ah.AssertResponse(it, r, http.StatusServiceUnavailable) + + if it.err == nil { + t.Error("wanted error, got success") + } + }) + t.Run("response error", func(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "Not Available", http.StatusServiceUnavailable) + })) + defer ts.Close() + + r, err := http.NewRequest(http.MethodGet, ts.URL, nil) + if err != nil { + t.Fatal(err) + } + + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) + ah.AssertResponse(it, r, http.StatusServiceUnavailable) + + if it.err != nil { + t.Errorf("wanted error, got %v", it.err) + } + }) + t.Run("response contains", func(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "Hello World") + })) + defer ts.Close() + + r, err := http.NewRequest(http.MethodGet, ts.URL, nil) + if err != nil { + t.Fatal(err) + } + + t.Run("success", func(t *testing.T) { + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) + ah.AssertResponse(it, r, http.StatusOK, "Hello", "World") + if it.err != nil { + t.Errorf("wanted success, got %v", it.err) + } + }) + t.Run("error", func(t *testing.T) { + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) + ah.AssertResponse(it, r, http.StatusOK, "Hello", "Moon") + if it.err == nil { + t.Error("wanted error, got success") + } + }) + t.Run("error multiple", func(t *testing.T) { + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) + ah.AssertResponse(it, r, http.StatusOK, "Hello", "Moon", "People") + if it.err == nil { + t.Error("wanted error, got success") + return + } + if e := it.err.Error(); !strings.Contains(e, "Moon") || !strings.Contains(e, "People") { + t.Errorf("wanted multiple errors, got one: %v", it.err) + } + }) + }) +} + +// inspectableT wraps testing.T, overriding testing behavior to make error cases retrievable. +type inspectableT struct { + *testing.T + err error +} + +func (it *inspectableT) Error(args ...interface{}) { + it.addError(args...) +} + +func (it *inspectableT) Errorf(format string, args ...interface{}) { + a := append([]interface{}{format}, args) + it.addError(a) +} + +func (it *inspectableT) Fatal(args ...interface{}) { + it.addError(args...) +} + +func (it *inspectableT) Fatalf(format string, args ...interface{}) { + a := append([]interface{}{format}, args) + it.addError(a) +} + +func (it *inspectableT) addError(args ...interface{}) { + s := fmt.Sprint(args...) + it.err = errors.Join(it.err, errors.New(s)) +} From f768b78da063c9b57f43a680e0e314d2b6325879 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 14 Jul 2023 19:41:30 +0200 Subject: [PATCH 0484/1371] fix(deps): update module google.golang.org/api to v0.131.0 (#1708) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/utils/fbf/go.mod | 12 ++++++------ infra/utils/fbf/go.sum | 28 ++++++++++++++-------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 76e9937125f..c9f6bb4ee7f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index ff46d846ccf..245f1022a5e 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.130.0 + google.golang.org/api v0.131.0 ) require ( - cloud.google.com/go/compute v1.19.3 // indirect + cloud.google.com/go/compute v1.20.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect @@ -19,7 +19,7 @@ require ( github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect - github.com/googleapis/gax-go/v2 v2.11.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect @@ -28,13 +28,13 @@ require ( go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.11.0 // indirect golang.org/x/net v0.12.0 // indirect - golang.org/x/oauth2 v0.9.0 // indirect + golang.org/x/oauth2 v0.10.0 // indirect golang.org/x/sys v0.10.0 // indirect golang.org/x/term v0.10.0 // indirect golang.org/x/text v0.11.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529 // indirect - google.golang.org/grpc v1.56.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect + google.golang.org/grpc v1.56.2 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index a349c3d089d..e99d1e139fc 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,7 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds= -cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -65,8 +65,8 @@ 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/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= -github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= -github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= @@ -129,8 +129,8 @@ golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= -golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= +golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= 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= @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.130.0 h1:A50ujooa1h9iizvfzA4rrJr2B7uRmWexwbekQ2+5FPQ= -google.golang.org/api v0.130.0/go.mod h1:J/LCJMYSDFvAVREGCbrESb53n4++NMBDetSHGL5I5RY= +google.golang.org/api v0.131.0 h1:AcgWS2edQ4chVEt/SxgDKubVu/9/idCJy00tBGuGB4M= +google.golang.org/api v0.131.0/go.mod h1:7vtkbKv2REjJbxmHSkBTBQ5LUGvPdAqjjvt84XAfhpA= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -184,10 +184,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529 h1:DEH99RbiLZhMxrpEJCZ0A+wdTe0EOgou/poSLx9vWf4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto v0.0.0-20230629202037-9506855d4529 h1:9JucMWR7sPvCxUFd6UsOUNmA5kCcWOfORaT3tpAsKQs= +google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 h1:s5YSX+ZH5b5vS9rnpGymvIyMpLRJizowqDlOuyjXnTk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 h1:2FZP5XuJY9zQyGM5N0rtovnoXjiMUEIUMvw0m9wlpLc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -196,8 +196,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= -google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= 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= From 9b5aed3e2e8e090fe8201355cb71c918c79693ea Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 14 Jul 2023 13:04:45 -0500 Subject: [PATCH 0485/1371] chore: Update Tools to 1.13.9 (#1700) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index c9f6bb4ee7f..f13da61ea74 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.5.2 +TERRAFORM_VERSION := 1.5.3 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 437.0.1 +CLOUD_SDK_VERSION := 438.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 RUBY_VERSION := 2.7.8 @@ -30,9 +30,9 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.35 +KPT_VERSION := 1.0.0-beta.38 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.1.9 +CFT_CLI_VERSION := 1.1.10 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.25.11 TFLINT_VERSION := 0.41.0 @@ -49,7 +49,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From a8676174ecc091db397acb7ee7666642303c7882 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 18 Jul 2023 17:10:19 -0700 Subject: [PATCH 0486/1371] feat: adds protoc to devtools image (#1715) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 8 +++++ infra/build/developer-tools/Dockerfile | 23 +++++++++++- .../build/install_dependencies.sh | 3 ++ .../developer-tools/build/install_protoc.sh | 35 +++++++++++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100755 infra/build/developer-tools/build/install_protoc.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index f13da61ea74..0fc2aaa6ac4 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -31,6 +31,10 @@ TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.38 +PROTOC_VERSION := 23.4 +PROTOC_GEN_GO_VERSION := 1.31 +PROTOC_GEN_GO_GRPC_VERSION := 1.3 +PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.1.10 # Updated by Update Tooling Workflow @@ -77,6 +81,10 @@ build-image-developer-tools: --build-arg TERRAGRUNT_VERSION=${TERRAGRUNT_VERSION} \ --build-arg KUSTOMIZE_VERSION=${KUSTOMIZE_VERSION} \ --build-arg KPT_VERSION=${KPT_VERSION} \ + --build-arg PROTOC_VERSION=${PROTOC_VERSION} \ + --build-arg PROTOC_GEN_GO_VERSION=${PROTOC_GEN_GO_VERSION} \ + --build-arg PROTOC_GEN_GO_GRPC_VERSION=${PROTOC_GEN_GO_GRPC_VERSION} \ + --build-arg PROTOC_GEN_GO_INJECT_TAG=${PROTOC_GEN_GO_INJECT_TAG} \ --build-arg CFT_CLI_VERSION=${CFT_CLI_VERSION} \ --build-arg KUBECTL_VERSION=${KUBECTL_VERSION} \ --build-arg TFLINT_VERSION=${TFLINT_VERSION} \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index a1f27d0d3c6..65a904ca763 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -74,6 +74,19 @@ ENV KUSTOMIZE_VERSION ${KUSTOMIZE_VERSION} ARG KPT_VERSION ENV KPT_VERSION ${KPT_VERSION} +# Required to install protoc-gen dependencies +ARG PROTOC_VERSION +ENV PROTOC_VERSION ${PROTOC_VERSION} + +ARG PROTOC_GEN_GO_VERSION +ENV PROTOC_GEN_GO_VERSION ${PROTOC_GEN_GO_VERSION} + +ARG PROTOC_GEN_GO_GRPC_VERSION +ENV PROTOC_GEN_GO_GRPC_VERSION ${PROTOC_GEN_GO_GRPC_VERSION} + +ARG PROTOC_GEN_GO_INJECT_TAG +ENV PROTOC_GEN_GO_INJECT_TAG ${PROTOC_GEN_GO_INJECT_TAG} + # Required to download and install CFT CLI ARG CFT_CLI_VERSION ENV CFT_CLI_VERSION ${CFT_CLI_VERSION} @@ -156,6 +169,9 @@ RUN /build/install_addlicense.sh ADD ./build/install_cft_cli.sh /build/ RUN /build/install_cft_cli.sh ${CFT_CLI_VERSION} +ADD ./build/install_protoc.sh /build/ +RUN /build/install_protoc.sh ${PROTOC_VERSION} ${PROTOC_GEN_GO_VERSION} ${PROTOC_GEN_GO_GRPC_VERSION} ${PROTOC_GEN_GO_INJECT_TAG} + ADD ./build/install_tflint.sh /build/ RUN /build/install_tflint.sh ${TFLINT_VERSION} @@ -217,7 +233,12 @@ RUN terraform --version && \ terragrunt -version && \ kustomize version && \ addlicense -help && \ - cft version + cft version && \ + protoc --version + +# Add GO_PATH TO PATH +ENV GO_PATH="/root/go" +ENV PATH=$GO_PATH/bin:$PATH # Cleanup intermediate build artifacts RUN rm -rf /build diff --git a/infra/build/developer-tools/build/install_dependencies.sh b/infra/build/developer-tools/build/install_dependencies.sh index 31493c3656a..a23f54a226f 100755 --- a/infra/build/developer-tools/build/install_dependencies.sh +++ b/infra/build/developer-tools/build/install_dependencies.sh @@ -66,6 +66,9 @@ apk add --no-cache diffutils # rsync is needed for check_documentation in task_helper_functions.sh apk add --no-cache rsync +# install gcompat, because protoc needs a real glibc or compatible layer +apk add --no-cache gcompat + # flake8 and jinja2 are used for lint checks, cookiecutter is used for terraform-google-module-template tests # requests~=2.28 for https://github.com/psf/requests/pull/6179 # Remaining items moved here from requirements.txt diff --git a/infra/build/developer-tools/build/install_protoc.sh b/infra/build/developer-tools/build/install_protoc.sh new file mode 100755 index 00000000000..f62093b7032 --- /dev/null +++ b/infra/build/developer-tools/build/install_protoc.sh @@ -0,0 +1,35 @@ +#! /bin/bash +# Copyright 2023 Google LLC +# +# 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. + +set -e +set -u + +PROTOC_VERSION=$1 +PROTOC_GEN_GO_VERSION=$2 +PROTOC_GEN_GO_GRPC_VERSION=$3 +PROTOC_GEN_GO_INJECT_TAG=$4 + +cd /build + +curl -LO "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip" +unzip "protoc-${PROTOC_VERSION}-linux-x86_64.zip" -d $HOME/.local +rm "protoc-${PROTOC_VERSION}-linux-x86_64.zip" +chmod 755 $HOME/.local/bin/protoc +cp $HOME/.local/bin/protoc /usr/local/bin/ +cp -R $HOME/.local/include/* /usr/local/include/ + +go install google.golang.org/protobuf/cmd/protoc-gen-go@v${PROTOC_GEN_GO_VERSION} +go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v${PROTOC_GEN_GO_GRPC_VERSION} +go install github.com/favadi/protoc-go-inject-tag@v${PROTOC_GEN_GO_INJECT_TAG} From 81ad904d947b3eb8906353cc423d281fe0021b02 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 19 Jul 2023 18:06:43 +0200 Subject: [PATCH 0487/1371] fix(deps): update module google.golang.org/api to v0.132.0 (#1716) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 245f1022a5e..a52d4601511 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.131.0 + google.golang.org/api v0.132.0 ) require ( @@ -33,7 +33,7 @@ require ( golang.org/x/term v0.10.0 // indirect golang.org/x/text v0.11.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect google.golang.org/grpc v1.56.2 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index e99d1e139fc..e107439b42f 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.131.0 h1:AcgWS2edQ4chVEt/SxgDKubVu/9/idCJy00tBGuGB4M= -google.golang.org/api v0.131.0/go.mod h1:7vtkbKv2REjJbxmHSkBTBQ5LUGvPdAqjjvt84XAfhpA= +google.golang.org/api v0.132.0 h1:8t2/+qZ26kAOGSmOiHwVycqVaDg7q3JDILrNi/Z6rvc= +google.golang.org/api v0.132.0/go.mod h1:AeTBC6GpJnJSRJjktDcPX0QwtS8pGYZOV6MSuSCusw0= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -184,10 +184,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20230629202037-9506855d4529 h1:9JucMWR7sPvCxUFd6UsOUNmA5kCcWOfORaT3tpAsKQs= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 h1:s5YSX+ZH5b5vS9rnpGymvIyMpLRJizowqDlOuyjXnTk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 h1:2FZP5XuJY9zQyGM5N0rtovnoXjiMUEIUMvw0m9wlpLc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= +google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 h1:XVeBY8d/FaK4848myy41HBqnDwvxeV3zMZhwN1TvAMU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From eb5174aeec7a083c7fa16fe95711d3337fb2dc2a Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 19 Jul 2023 13:31:51 -0500 Subject: [PATCH 0488/1371] chore: update description (#1591) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 12f38f8044f..55b6bc73cc0 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -672,7 +672,7 @@ locals { { name = "terraform-google-crmint" org = "GoogleCloudPlatform" - description = "Deploy the Marketing Analytics application CRMint" + description = "Deploy the marketing analytics application, CRMint" owners = ["dulacp"] topics = join(",", [local.common_topics.da, local.common_topics.e2e], ["marketing"]) }, From 55c9c8dcf85b8eacdb8ff2c9d19582a445e192ab Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 20 Jul 2023 10:00:39 -0700 Subject: [PATCH 0489/1371] feat: add retry for kpt commands (#1717) --- infra/blueprint-test/pkg/kpt/kpt.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/infra/blueprint-test/pkg/kpt/kpt.go b/infra/blueprint-test/pkg/kpt/kpt.go index be89f878c8e..fee55abff64 100644 --- a/infra/blueprint-test/pkg/kpt/kpt.go +++ b/infra/blueprint-test/pkg/kpt/kpt.go @@ -2,11 +2,13 @@ package kpt import ( "fmt" + "time" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" kptfilev1 "github.com/GoogleContainerTools/kpt-functions-sdk/go/api/kptfile/v1" kptutil "github.com/GoogleContainerTools/kpt-functions-sdk/go/api/util" "github.com/gruntwork-io/terratest/modules/logger" + "github.com/gruntwork-io/terratest/modules/retry" "github.com/gruntwork-io/terratest/modules/shell" "github.com/mitchellh/go-testing-interface" "sigs.k8s.io/kustomize/kyaml/kio/kioutil" @@ -21,6 +23,7 @@ type CmdCfg struct { dir string // dir to execute commands in logger *logger.Logger // custom logger t testing.TB // TestingT or TestingB + tries int // qty to try kpt command, default: 3 } type cmdOption func(*CmdCfg) @@ -48,6 +51,7 @@ func NewCmdConfig(t testing.TB, opts ...cmdOption) *CmdCfg { kOpts := &CmdCfg{ logger: utils.GetLoggerFromT(), t: t, + tries: 3, } // apply options for _, opt := range opts { @@ -75,7 +79,10 @@ func (k *CmdCfg) RunCmd(args ...string) string { Logger: k.logger, WorkingDir: k.dir, } - op, err := shell.RunCommandAndGetStdOutE(k.t, kptCmd) + command := func() (string, error) { + return shell.RunCommandAndGetStdOutE(k.t, kptCmd) + } + op, err := retry.DoWithRetryE(k.t, "run kpt command", k.tries, 15*time.Second, command) if err != nil { k.t.Fatal(err) } From 5affe25819db7b3f1d326190fc429114b9913e14 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 08:44:56 -0700 Subject: [PATCH 0490/1371] chore(master): release blueprint-test 0.7.0 (#1710) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d80d2919f7a..e6ba6306b38 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "infra/blueprint-test": "0.6.1" + "infra/blueprint-test": "0.7.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 3b995e1e558..66fd088d3a7 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.7.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.6.1...infra/blueprint-test/v0.7.0) (2023-07-20) + + +### Features + +* Add HTTP Assert test helpers ([#1707](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1707)) ([9c423f9](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/9c423f910c14899eb311bf9b026439eb70378602)) +* add retry for kpt commands ([#1717](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1717)) ([55c9c8d](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/55c9c8dcf85b8eacdb8ff2c9d19582a445e192ab)) + ## [0.6.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.6.0...infra/blueprint-test/v0.6.1) (2023-06-27) From f95ef60b3462c8f6faa0b7ff0074e9619f6497d3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 24 Jul 2023 18:09:15 +0200 Subject: [PATCH 0491/1371] chore(deps): update github/codeql-action action to v2.20.4 (#1720) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e92666ee4ab..55d29fee958 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3 + uses: github/codeql-action/upload-sarif@489225d82a57396c6f426a40e66d461b16b3461d # v2.20.4 with: sarif_file: results.sarif From 150f3c9973613a94768998183346d726e9cd7b85 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 25 Jul 2023 09:07:19 -0700 Subject: [PATCH 0492/1371] chore: update kubectl and gator dev-tools pins (#1724) --- .github/workflows/update-tooling.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index d68e70a9c64..f6cfe0dda2f 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -9,9 +9,9 @@ env: CLOUD_SDK_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases" CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" - KUBECTL_MINOR: "1.25" + KUBECTL_MINOR: "1.26" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" - GATOR_MINOR: "3.11" + GATOR_MINOR: "3.12" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" From 6f39ac864b99635a2916d5ffa1abd6fcc337762b Mon Sep 17 00:00:00 2001 From: Ivan Cheung Date: Tue, 25 Jul 2023 13:38:01 -0400 Subject: [PATCH 0493/1371] fix: Update task_helper_functions.sh to omit pb and index files (#1725) Co-authored-by: Bharath KKB --- .../developer-tools/build/scripts/task_helper_functions.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index eed766773bb..14711dc95ab 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -75,6 +75,8 @@ find_files() { ".*/.*\.jpeg" ".*/.*\.svg" ".*/.*\.ico" + ".*/.*\.pb" + ".*/.*\.index" "\./autogen" "\./test/fixtures/all_examples" "\./test/fixtures/shared" @@ -233,7 +235,7 @@ check_whitespace() { local rc echo "Checking for trailing whitespace" find_files . -print \ - | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip|ico)$' \ + | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip|ico|pb|index)$' \ | compat_xargs grep -H -n '[[:blank:]]$' rc=$? if [[ ${rc} -eq 0 ]]; then @@ -244,7 +246,7 @@ check_whitespace() { fi echo "Checking for missing newline at end of file" find_files . -print \ - | grep -v -E '\.(png|gz|tfvars|mp4|zip|ico)$' \ + | grep -v -E '\.(png|gz|tfvars|mp4|zip|ico|pb|index)$' \ | compat_xargs check_eof_newline return $((rc+$?)) } From cda1dc12e03386f6d0fb91e75f6c811956b0188a Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:38:27 -0500 Subject: [PATCH 0494/1371] chore: Update Tools to 1.13.10 (#1718) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 0fc2aaa6ac4..19d33ed7f87 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.5.3 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 438.0.0 +CLOUD_SDK_VERSION := 439.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 RUBY_VERSION := 2.7.8 @@ -38,7 +38,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.1.10 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.25.11 +KUBECTL_VERSION := 1.25.12 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.10 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 7d9392340795886b882e34d57055491c88991a9b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 25 Jul 2023 14:35:02 -0700 Subject: [PATCH 0495/1371] chore: deprecate merge_dependabot_prs (#1719) --- infra/utils/merge_dependabot_prs/README.md | 12 -- .../merge_dependabot_prs.sh | 115 ------------------ 2 files changed, 127 deletions(-) delete mode 100644 infra/utils/merge_dependabot_prs/README.md delete mode 100755 infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh diff --git a/infra/utils/merge_dependabot_prs/README.md b/infra/utils/merge_dependabot_prs/README.md deleted file mode 100644 index 6dae47a86a5..00000000000 --- a/infra/utils/merge_dependabot_prs/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Merge Dependabot Pull Reqeusts - -## Prerequisites: -Install and Authenticate Github CLI (https://github.com/cli/cli) - -## Usage -``` -merge_dependabot_prs.sh - -o [GitHub organization | Default: terraform-google-modules] - -f [Repository name(s) contains filter | Default: NONE] - -l [label to apply to failed checks | Default: dependabot-checks-failed] -``` diff --git a/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh b/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh deleted file mode 100755 index a21c96d070c..00000000000 --- a/infra/utils/merge_dependabot_prs/merge_dependabot_prs.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash - -# Copyright 2022 Google LLC -# -# 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 -# -# https://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. - -# Prerequisites: -# Install and Authenticate Github CLI (https://github.com/cli/cli) -# -# Usage of merge_dependabot_prs.sh -# -o [GitHub organization | Default: terraform-google-modules] -# -f [Repository name(s) contains filter | Default: NONE] -# -l [label to apply to failed checks | Default: dependabot-checks-failed] -# - -# Default Variables -ORG="terraform-google-modules" -FILTER=".[].name" -LABEL="dependabot-checks-failed" - -# Process arguments -while getopts 'o:f:l:n' arg; do - case $arg in - o) ORG=${OPTARG} ;; - f) FILTER=".[]|select(.name|contains(\"$OPTARG\"))|.name" ;; - l) LABEL=${OPTARG} ;; - esac -done - -# Initialize Variables -FPRS=() -PPRS=() - -# Check gh is installed -if [ ! -x $(which gh) ]; then - echo "GitHub CLI (gh) not found - Install from https://github.com/cli/cli" - exit 1 -fi - -# Check gh is authenticated -gh auth status > /dev/null 2>&1 -if [ ! $? -eq 0 ]; then - echo "Please authenticate GitHub CLI with 'gh auth login' prior to running" - exit 1 -fi - -# Retrieve list of repos in the Org -REPOS=`gh repo list $ORG --no-archived --json name -q $FILTER -L 1000` - -# Confirm we retrieved repos -if [[ ! -n $REPOS ]]; then - echo "No repos found" - exit -fi - -# Process the repos -for REPO in $REPOS; do - REPO=$ORG/$REPO - echo "Processing $REPO" - - # Retrieve Pull Requests - PRS=`gh pr list -R $REPO -s open --json number -q '.[].number' --app dependabot` - if [[ -z $PRS ]]; then - echo " No open Dependabot Pull Requests found for $REPO" - continue - fi - - # Process Pull Rquests - for PR in $PRS; do - echo " Processing Dependabot Pull Request $PR" - # Check status of Pull Request Checks - gh pr checks $PR -R $REPO - if [ $? -eq 0 ]; then - PPRS+=($PR) - # Remove the label, if exists - gh pr edit $PR -R $REPO --remove-label $LABEL - # Approve the Pull Request - gh pr review $PR -R $REPO --approve -b "LGTM" - # Squash Merge the Pull Request and Delete the Branch - gh pr merge $PR -d -s -R $REPO - else - FPRS+=($PR) - # Create the Label, if not exist - gh label create $LABEL --color E99695 -R $REPO > /dev/null 2>&1 - # Add the Label to the Pull Request - gh pr edit $PR -R $REPO --add-label $LABEL - fi - done -done - -# List number of approved/merged PRs -if [[ ! -z $PPRS ]]; then - echo -e "\u2714 approved and merged ${PPRS[@]} Pull Requests" -fi - -# List Failed Checks PRs -if [[ ! -z $FPRS ]]; then - echo "These Pull Requests have failed checks and have been labled with $LABEL:" - for PR in ${FPRS[@]}; do - echo -e "\u274c $PR: https://github.com/$REPO/pull/$PR" - done - echo "" - echo "View all $ORG PRs in Github with $LABEL at: https://github.com/pulls?q=is%3Aopen+is%3Apr+author%3Aapp%2Fdependabot+archived%3Afalse+org%3A$ORG+label%3A$LABEL" -fi - From 228e5b7cc08a52e98c57a4d9938f13a853e1d005 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 25 Jul 2023 23:43:50 +0200 Subject: [PATCH 0496/1371] chore(deps): update github/codeql-action action to v2.21.0 (#1723) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 55d29fee958..cb4cc38387c 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@489225d82a57396c6f426a40e66d461b16b3461d # v2.20.4 + uses: github/codeql-action/upload-sarif@1813ca74c3faaa3a2da2070b9b8a0b3e7373a0d8 # v2.21.0 with: sarif_file: results.sarif From 39ebb7e6498bb662a1f879c604a8f711a384aa2b Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 25 Jul 2023 17:22:04 -0500 Subject: [PATCH 0497/1371] chore: Update Tools to 1.13.11 (#1728) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 19d33ed7f87..abfd5da135d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.5.3 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 439.0.0 +CLOUD_SDK_VERSION := 440.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 RUBY_VERSION := 2.7.8 @@ -38,7 +38,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.1.10 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.25.12 +KUBECTL_VERSION := 1.26.7 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 @@ -48,12 +48,12 @@ GOLANGCI_VERSION := 1.52.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.11.1 +GATOR_VERSION := 3.12.0 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.10 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.11 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From dee7c5e8c0338c9324bce250fc17d2cbe6c84d2b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 27 Jul 2023 09:46:02 -0700 Subject: [PATCH 0498/1371] feat: update dev-tools 1.14 to ruby v3 (#1712) --- infra/build/Makefile | 4 ++-- infra/build/developer-tools/Dockerfile | 2 +- infra/build/developer-tools/build/data/Gemfile | 13 ++++++------- infra/build/developer-tools/build/data/Gemfile.lock | 12 ++++++------ 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index abfd5da135d..83c02f917f5 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -20,7 +20,7 @@ TERRAFORM_VALIDATOR_VERSION := 0.13.0 CLOUD_SDK_VERSION := 440.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 -RUBY_VERSION := 2.7.8 +RUBY_VERSION := 3.0.6 BATS_VERSION := 0.4.0 GOLANG_VERSION := 1.20 BATS_SUPPORT_VERSION := 0.3.0 @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.13.11 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 65a904ca763..000428aa6f0 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -181,7 +181,7 @@ RUN /build/install_tinkey.sh ${TINKEY_VERSION} WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . -RUN gem install bundler:2.1.4 && bundle install +RUN gem install bundler:2.2.33 && bundle install COPY ./build/install_verify_boilerplate.sh /build/ COPY ./build/verify_boilerplate/ /build/verify_boilerplate/ diff --git a/infra/build/developer-tools/build/data/Gemfile b/infra/build/developer-tools/build/data/Gemfile index 5ba4ff8a6c0..fbaaeb4be67 100644 --- a/infra/build/developer-tools/build/data/Gemfile +++ b/infra/build/developer-tools/build/data/Gemfile @@ -12,10 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -source 'https://rubygems.org/' do - gem "kitchen-terraform", "~> 6.0" - gem "kubeclient", "~> 4.9" - gem "rest-client", "~> 2.0" - gem 'nokogiri', '~> 1.14' -end -ruby '~> 2.7.8' +source 'https://rubygems.org/' +gem "kitchen-terraform", "~> 6.1" +gem "kubeclient", "~> 4.9" +gem "rest-client", "~> 2.0" +gem 'nokogiri', '~> 1.14' +ruby '~> 3.0.6' diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 7153dfc4d83..326c3b13acd 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -716,13 +716,13 @@ PLATFORMS ruby DEPENDENCIES - kitchen-terraform (~> 6.0)! - kubeclient (~> 4.9)! - nokogiri (~> 1.14)! - rest-client (~> 2.0)! + kitchen-terraform (~> 6.1) + kubeclient (~> 4.9) + nokogiri (~> 1.14) + rest-client (~> 2.0) RUBY VERSION - ruby 2.7.8p225 + ruby 3.0.6p216 BUNDLED WITH - 2.1.4 + 2.2.33 From e7aaf3e86900b8ba1793f2d548ece1cc5594c5cb Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Thu, 27 Jul 2023 15:50:09 -0500 Subject: [PATCH 0499/1371] chore: onboard SDW on-prem ingest blueprint (#1722) --- infra/terraform/test-org/org/locals.tf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 55b6bc73cc0..41b31875742 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -731,5 +731,13 @@ locals { groups = ["dee-data-ai", local.jss_common_group] enable_periodic = true }, + { + name = "terraform-google-secured-data-warehouse-onprem-ingest" + short_name = "sdw-onprem-ingest" + org = "GoogleCloudPlatform" + description = "Secured Data Warehouse blueprint variant for ingesting encrypted data from on-prem sources" + owners = ["lanreogunmola"] + topics = join(",", [local.common_topics.da, local.common_topics.security, local.common_topics.e2e]) + }, ] } From f8a819a0de877c9bbdbb16929fff2c24c3de87e0 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 28 Jul 2023 15:09:52 -0500 Subject: [PATCH 0500/1371] chore: Update Tools to 1.14.1 (#1730) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 83c02f917f5..4a53709dbe4 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.5.3 +TERRAFORM_VERSION := 1.5.4 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 440.0.0 @@ -30,7 +30,7 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.38 +KPT_VERSION := 1.0.0-beta.39 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.15.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From b7b819baf821114c88fb6eabe0d63251acdc0022 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 31 Jul 2023 09:42:45 -0700 Subject: [PATCH 0501/1371] fix: reduces log level to info for missing bp requirements (#1713) --- .github/renovate.json | 7 +++++++ cli/Makefile | 17 ++++++++++++----- cli/bpmetadata/cmd.go | 5 +++-- .../build/scripts/task_helper_functions.sh | 4 +--- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index a25b5adcfa7..d73bb8d845f 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -51,6 +51,13 @@ "matchStrings": ["ALPINE_VERSION := (?.*?)\\n"], "datasourceTemplate": "docker", "depNameTemplate": "alpine" + }, + { + "fileMatch": ["(^|/)Makefile$"], + "matchStrings": ["DOCKER_TAG_VERSION_DEVELOPER_TOOLS := (?.*?)\\n"], + "datasourceTemplate": "docker", + "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", + "depNameTemplate": "cft/developer-tools" } ] } diff --git a/cli/Makefile b/cli/Makefile index 8332e037b21..2e01010662f 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.10 +VERSION=v1.1.11 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin @@ -11,20 +11,27 @@ BUCKET=gs://cft-cli INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema PROTO_DIR=./bpmetadata/proto +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14 +DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools +REGISTRY_URL := gcr.io/cloud-foundation-cicd # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" -# need an extra build command to embed an most up to date schema in the binary .PHONY: build -build: +build: protoc build-go + +.PHONY: build-go +build-go: go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} .PHONY: protoc protoc: - protoc --go_out=${PROTO_DIR}/out --go_opt=paths=source_relative ${PROTO_DIR}/*.proto - go build ${PROTO_DIR}/out/... + docker run --rm -it \ + -v "$(CURDIR)":/workspace \ + $(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + mkdir -p ${PROTO_DIR}/out && protoc --go_out=${PROTO_DIR}/out --go_opt=paths=source_relative ${PROTO_DIR}/*.proto .PHONY: publish publish: diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index ac18803108a..329be0b769d 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -127,6 +127,7 @@ func generate(cmd *cobra.Command, args []string) error { return fmt.Errorf(strings.Join(errors, "\n")) } + Log.Info("metadata generated successfully") return nil } @@ -179,7 +180,7 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* // Verify that readme is present. readmeContent, err := os.ReadFile(path.Join(bpPath, readmeFileName)) if err != nil { - return nil, fmt.Errorf("error reading blueprint readme markdown: %w", err) + return nil, fmt.Errorf("blueprint readme markdown is missing, create one using https://tinyurl.com/tf-mod-readme | error: %w", err) } // verify that the blueprint path is valid & get repo details @@ -233,7 +234,7 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* svcsCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfServicesFileName) requirements, err := getBlueprintRequirements(rolesCfgPath, svcsCfgPath) if err != nil { - Log.Warn(fmt.Sprintf("Blueprint requirements could not be created. Details: %s", err.Error())) + Log.Info("skipping blueprint requirements since roles and/or services configurations were not found as per https://tinyurl.com/tf-iam and https://tinyurl.com/tf-services") } else { bpMetadataObj.Spec.Requirements = *requirements } diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 14711dc95ab..1d5916c5919 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -329,9 +329,7 @@ function generate_metadata() { eval "cft blueprint metadata $arg" fi - if [ $? -eq 0 ]; then - echo "Success!" - else + if [ $? -ne 0 ]; then echo "Warning! Unable to generate metadata." fi # add headers since comments are not preserved with metadata generation From 97c227ae2f31b4430eee59030a030172efe2a211 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 31 Jul 2023 13:06:09 -0500 Subject: [PATCH 0502/1371] chore: onboard tfc agents repo (#1731) Co-authored-by: Awais Malik --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/ci-triggers/triggers.tf | 2 +- infra/terraform/test-org/org/locals.tf | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index a2032eeac36..7d614fde38c 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -42,6 +42,7 @@ locals { "ml-image-annotation-gcf" = "terraform-ml-image-annotation-gcf" "genai-doc-summarization" = "terraform-genai-doc-summarization" "secured-notebook" = "notebooks-blueprint-security" + "sdw-onprem-ingest" = "terraform-google-secured-data-warehouse-onprem-ingest" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index b2aa0ab7cc6..cf8928bdb2f 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -17,7 +17,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { provider = google-beta project = local.project_id - name = "${each.key}-int-trigger" + name = "${substr(each.key, 0, 50)}-int-trigger" description = "Integration tests on pull request for ${each.key}" for_each = local.repo_folder github { diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 41b31875742..61e695a32fb 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -739,5 +739,11 @@ locals { owners = ["lanreogunmola"] topics = join(",", [local.common_topics.da, local.common_topics.security, local.common_topics.e2e]) }, + { + name = "terraform-google-tf-cloud-agents" + org = "GoogleCloudPlatform" + description = "Creates self-hosted Terraform Cloud Agent on Google Cloud" + topics = join(",", [local.common_topics.ops, local.common_topics.security, local.common_topics.devtools]) + }, ] } From f74eaf96f3924f265d36c6d21772e7b5e4ef8cbe Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Mon, 31 Jul 2023 13:11:09 -0500 Subject: [PATCH 0503/1371] fix: update SDW owners (#1734) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 61e695a32fb..d662de731dc 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -96,7 +96,7 @@ locals { name = "terraform-google-secured-data-warehouse" org = "GoogleCloudPlatform" description = "Deploys a secured BigQuery data warehouse" - owners = ["erlanderlo"] + owners = ["lanreogunmola"] topics = join(",", [local.common_topics.da, local.common_topics.e2e]) lint_env = { SHELLCHECK_OPTS = "-e SC2154 -e SC2171 -e SC2086" From b694a721070787093ae8510d30878896a81ff77f Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 31 Jul 2023 16:56:14 -0700 Subject: [PATCH 0504/1371] feat: adds processing logic for bpmetadata to use protobuf (#1705) --- .gitignore | 1 - cli/Makefile | 24 +- cli/bpmetadata/bpmetadata.pb.go | 3039 +++++++++++++++++ cli/bpmetadata/bpmetadata_ui.pb.go | 853 +++++ cli/bpmetadata/bpmetadata_ui_ext.pb.go | 1567 +++++++++ cli/bpmetadata/cmd.go | 114 +- cli/bpmetadata/display.go | 2 +- cli/bpmetadata/display_test.go | 8 +- .../int-test/goldens/golden-metadata.yaml | 58 +- cli/bpmetadata/int-test/workflow.sh | 2 +- cli/bpmetadata/markdown.go | 8 +- cli/bpmetadata/markdown_test.go | 4 +- cli/bpmetadata/path.go | 10 +- cli/bpmetadata/path_test.go | 30 +- cli/bpmetadata/proto/bpmetadata.proto | 198 +- cli/bpmetadata/proto/bpmetadata_ui.proto | 65 +- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 79 +- cli/bpmetadata/repo.go | 12 +- .../schema/gcp-blueprint-metadata.json | 98 +- cli/bpmetadata/schema/generate.go | 10 + cli/bpmetadata/tfconfig.go | 35 +- cli/bpmetadata/tfconfig_test.go | 55 +- cli/bpmetadata/types.go | 420 --- cli/bpmetadata/types_ui.go | 186 - cli/bpmetadata/types_ui_ext.go | 173 - cli/go.mod | 8 +- cli/go.sum | 12 +- .../build/scripts/task_helper_functions.sh | 1 + 28 files changed, 5907 insertions(+), 1165 deletions(-) create mode 100644 cli/bpmetadata/bpmetadata.pb.go create mode 100644 cli/bpmetadata/bpmetadata_ui.pb.go create mode 100644 cli/bpmetadata/bpmetadata_ui_ext.pb.go delete mode 100644 cli/bpmetadata/types.go delete mode 100644 cli/bpmetadata/types_ui.go delete mode 100644 cli/bpmetadata/types_ui_ext.go diff --git a/.gitignore b/.gitignore index 30a1026b3d3..43d33213e4b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,4 @@ config-connector/tests/testcases/environments.yaml .DS_Store .vscode *.pyc -cli/bpmetadata/proto/out* cli/bpmetadata/int-test/.working diff --git a/cli/Makefile b/cli/Makefile index 2e01010662f..07cda1b828e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.1.11 +VERSION=v1.2.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin @@ -10,7 +10,8 @@ NAME=cft BUCKET=gs://cft-cli INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema -PROTO_DIR=./bpmetadata/proto +SRC_PROTO_DIR=./bpmetadata/proto +PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd @@ -19,19 +20,20 @@ REGISTRY_URL := gcr.io/cloud-foundation-cicd LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" .PHONY: build -build: protoc build-go - -.PHONY: build-go -build-go: - go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} +build: protoc-gen build-schema go build ${LDFLAGS} -o ${BUILD_DIR}/${NAME} -.PHONY: protoc -protoc: +.PHONY: protoc-gen +protoc-gen: docker run --rm -it \ -v "$(CURDIR)":/workspace \ $(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ - mkdir -p ${PROTO_DIR}/out && protoc --go_out=${PROTO_DIR}/out --go_opt=paths=source_relative ${PROTO_DIR}/*.proto + protoc -I=${SRC_PROTO_DIR} --go_opt=paths=source_relative --go_out=${PROTOC_DIR} ${SRC_PROTO_DIR}/*.proto && \ + protoc-go-inject-tag -input="${PROTOC_DIR}/*.pb.go" + +.PHONY: build-schema +build-schema: + go run ./${SCHEMA_DIR} -output=${SCHEMA_DIR} .PHONY: publish publish: @@ -50,7 +52,7 @@ int_test: ${INT_TEST_DIR}/workflow.sh ${INT_TEST_DIR} .PHONY: go_test -go_test: +go_test: build go test ./... .PHONY: test diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go new file mode 100644 index 00000000000..f777b3d25c1 --- /dev/null +++ b/cli/bpmetadata/bpmetadata.pb.go @@ -0,0 +1,3039 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v4.23.4 +// source: bpmetadata.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QuotaResourceType defines the type of resource a quota is applied to. +type QuotaResourceType int32 + +const ( + QuotaResourceType_QRT_UNDEFINED QuotaResourceType = 0 + QuotaResourceType_QRT_RESOURCE_TYPE_GCE_INSTANCE QuotaResourceType = 1 + QuotaResourceType_QRT_RESOURCE_TYPE_GCE_DISK QuotaResourceType = 2 +) + +// Enum value maps for QuotaResourceType. +var ( + QuotaResourceType_name = map[int32]string{ + 0: "QRT_UNDEFINED", + 1: "QRT_RESOURCE_TYPE_GCE_INSTANCE", + 2: "QRT_RESOURCE_TYPE_GCE_DISK", + } + QuotaResourceType_value = map[string]int32{ + "QRT_UNDEFINED": 0, + "QRT_RESOURCE_TYPE_GCE_INSTANCE": 1, + "QRT_RESOURCE_TYPE_GCE_DISK": 2, + } +) + +func (x QuotaResourceType) Enum() *QuotaResourceType { + p := new(QuotaResourceType) + *p = x + return p +} + +func (x QuotaResourceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QuotaResourceType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_proto_enumTypes[0].Descriptor() +} + +func (QuotaResourceType) Type() protoreflect.EnumType { + return &file_bpmetadata_proto_enumTypes[0] +} + +func (x QuotaResourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QuotaResourceType.Descriptor instead. +func (QuotaResourceType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{0} +} + +// SoftwareGroupType is a string enum representing the different types of software groups. +type SoftwareGroupType int32 + +const ( + // UNSPECIFIED is the default value for SoftwareGroupType. + SoftwareGroupType_SG_UNSPECIFIED SoftwareGroupType = 0 + // OS is a software group that represents an operating system. + SoftwareGroupType_SG_OS SoftwareGroupType = 1 +) + +// Enum value maps for SoftwareGroupType. +var ( + SoftwareGroupType_name = map[int32]string{ + 0: "SG_UNSPECIFIED", + 1: "SG_OS", + } + SoftwareGroupType_value = map[string]int32{ + "SG_UNSPECIFIED": 0, + "SG_OS": 1, + } +) + +func (x SoftwareGroupType) Enum() *SoftwareGroupType { + p := new(SoftwareGroupType) + *p = x + return p +} + +func (x SoftwareGroupType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SoftwareGroupType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_proto_enumTypes[1].Descriptor() +} + +func (SoftwareGroupType) Type() protoreflect.EnumType { + return &file_bpmetadata_proto_enumTypes[1] +} + +func (x SoftwareGroupType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SoftwareGroupType.Descriptor instead. +func (SoftwareGroupType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{1} +} + +// BlueprintMetadata defines the overall structure for blueprint metadata. +// The cli command i.e. `cft blueprint metadata` attempts at auto-generating +// metadata if the blueprint is structured based on the TF blueprint template +// i.e. https://github.com/terraform-google-modules/terraform-google-module-template +// All fields within BlueprintMetadata and its children are denoted as: +// - Gen: auto-generated - +// - Gen: manually-authored +// - Gen: partial (contains nested messages that can include both auto-generated and manually authored) +type BlueprintMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // APIVersion is the apiVersion field of a metadata file + // Gen: auto-generated + ApiVersion string `protobuf:"bytes,1,opt,name=api_version,json=apiVersion,proto3" json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` // @gotags: json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" + // Kind is the kind field of a metadata file + // Gen: auto-generated + Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty" yaml:"kind,omitempty"` // @gotags: json:"kind,omitempty" yaml:"kind,omitempty" + // ResourceTypeMeta is the metadata field of a metadata file + // Gen: partial + Metadata *ResourceTypeMeta `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty" yaml:"metadata,omitempty"` // @gotags: json:"metadata,omitempty" yaml:"metadata,omitempty" + // BlueprintMetadataSpec is the metadata specification for the blueprint + // Gen: partial + Spec *BlueprintMetadataSpec `protobuf:"bytes,4,opt,name=spec,proto3" json:"spec" yaml:"spec"` // @gotags: yaml:"spec" json:"spec" +} + +func (x *BlueprintMetadata) Reset() { + *x = BlueprintMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMetadata) ProtoMessage() {} + +func (x *BlueprintMetadata) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMetadata.ProtoReflect.Descriptor instead. +func (*BlueprintMetadata) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{0} +} + +func (x *BlueprintMetadata) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +func (x *BlueprintMetadata) GetKind() string { + if x != nil { + return x.Kind + } + return "" +} + +func (x *BlueprintMetadata) GetMetadata() *ResourceTypeMeta { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *BlueprintMetadata) GetSpec() *BlueprintMetadataSpec { + if x != nil { + return x.Spec + } + return nil +} + +type ResourceTypeMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name is the metadata.name field of a Resource + // Gen: auto-generated + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` // @gotags: json:"name,omitempty" yaml:"name,omitempty" + // Labels is the metadata.labels field of a Resource + // Gen: manually-authored + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"labels,omitempty"` // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" + // Annotations is the metadata.annotations field of a Resource. + // Gen: auto-generated + Annotations map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"annotations,omitempty"` // @gotags: json:"annotations,omitempty" yaml:"annotations,omitempty" +} + +func (x *ResourceTypeMeta) Reset() { + *x = ResourceTypeMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceTypeMeta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceTypeMeta) ProtoMessage() {} + +func (x *ResourceTypeMeta) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResourceTypeMeta.ProtoReflect.Descriptor instead. +func (*ResourceTypeMeta) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{1} +} + +func (x *ResourceTypeMeta) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResourceTypeMeta) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *ResourceTypeMeta) GetAnnotations() map[string]string { + if x != nil { + return x.Annotations + } + return nil +} + +// BlueprintMetadataSpec defines the spec portion of the blueprint metadata. +type BlueprintMetadataSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // BlueprintInfo defines the basic information of the blueprint. + // Gen: partial + Info *BlueprintInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty" yaml:"info,omitempty"` // @gotags: json:"info,omitempty" yaml:"info,omitempty" + // BlueprintContent defines the detail for blueprint related content such as + // related documentation, diagrams, examples etc. + // Gen: partial + Content *BlueprintContent `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty" yaml:"content,omitempty"` // @gotags: json:"content,omitempty" yaml:"content,omitempty" + // BlueprintInterface defines the input and output variables for the blueprint. + // Gen: partial + Interfaces *BlueprintInterface `protobuf:"bytes,3,opt,name=interfaces,proto3" json:"interfaces,omitempty" yaml:"interfaces,omitempty"` // @gotags: json:"interfaces,omitempty" yaml:"interfaces,omitempty" + // BlueprintRequirements defines the roles required and the associated services + // that need to be enabled to provision blueprint resources. + // Gen: auto-generated + Requirements *BlueprintRequirements `protobuf:"bytes,4,opt,name=requirements,proto3" json:"requirements,omitempty" yaml:"requirements,omitempty"` // @gotags: json:"requirements,omitempty" yaml:"requirements,omitempty" + // BlueprintUI defines the user interface for the blueprint. + // Gen: partial + Ui *BlueprintUI `protobuf:"bytes,5,opt,name=ui,proto3" json:"ui,omitempty" yaml:"ui,omitempty"` // @gotags: json:"ui,omitempty" yaml:"ui,omitempty" +} + +func (x *BlueprintMetadataSpec) Reset() { + *x = BlueprintMetadataSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMetadataSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMetadataSpec) ProtoMessage() {} + +func (x *BlueprintMetadataSpec) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMetadataSpec.ProtoReflect.Descriptor instead. +func (*BlueprintMetadataSpec) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{2} +} + +func (x *BlueprintMetadataSpec) GetInfo() *BlueprintInfo { + if x != nil { + return x.Info + } + return nil +} + +func (x *BlueprintMetadataSpec) GetContent() *BlueprintContent { + if x != nil { + return x.Content + } + return nil +} + +func (x *BlueprintMetadataSpec) GetInterfaces() *BlueprintInterface { + if x != nil { + return x.Interfaces + } + return nil +} + +func (x *BlueprintMetadataSpec) GetRequirements() *BlueprintRequirements { + if x != nil { + return x.Requirements + } + return nil +} + +func (x *BlueprintMetadataSpec) GetUi() *BlueprintUI { + if x != nil { + return x.Ui + } + return nil +} + +// BlueprintInfo defines the basic information of the blueprint. +type BlueprintInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Title for the blueprint. + // Gen: auto-generated - First H1 text in readme.md. + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Blueprint source location and source type. + // Gen: auto-generated - user will be prompted if repo information can not + // be determined from the blueprint path. + Source *BlueprintRepoDetail `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty" yaml:"source,omitempty"` // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Last released semantic version for the packaged blueprint. + // Gen: auto-generated - From the `module_name` attribute of + // the `provider_meta "google"` block. + // E.g. + // + // provider_meta "google" { + // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" + // } + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" + // Actuation tool e.g. Terraform and its required version. + // Gen: auto-generated + ActuationTool *BlueprintActuationTool `protobuf:"bytes,4,opt,name=actuation_tool,json=actuationTool,proto3" json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` // @gotags: json:"actuationTool,omitempty" yaml:"actuationTool,omitempty" + // Various types of descriptions associated with the blueprint. + // Gen: auto-generated + Description *BlueprintDescription `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + // Path to an image representing the icon for the blueprint. + // Will be set as "assets/icon.png", if present. + // Gen: auto-generated + Icon string `protobuf:"bytes,6,opt,name=icon,proto3" json:"icon,omitempty" yaml:"icon,omitempty"` // @gotags: json:"icon,omitempty" yaml:"icon,omitempty" + // The time estimate for configuring and deploying the blueprint. + // Gen: auto-generated + DeploymentDuration *BlueprintTimeEstimate `protobuf:"bytes,7,opt,name=deployment_duration,json=deploymentDuration,proto3" json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"` // @gotags: json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty" + // The cost estimate for the blueprint based on preconfigured variables. + // Gen: auto-generated + CostEstimate *BlueprintCostEstimate `protobuf:"bytes,8,opt,name=cost_estimate,json=costEstimate,proto3" json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"` // @gotags: json:"costEstimate,omitempty" yaml:"costEstimate,omitempty" + // A list of GCP cloud products used in the blueprint. + // Gen: manually-authored + CloudProducts []*BlueprintCloudProduct `protobuf:"bytes,9,rep,name=cloud_products,json=cloudProducts,proto3" json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` // @gotags: json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty" + // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. + // Gen: manually-authored + QuotaDetails []*BlueprintQuotaDetail `protobuf:"bytes,10,rep,name=quota_details,json=quotaDetails,proto3" json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` // @gotags: json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty" + // Details on the author producing the blueprint. + // Gen: manually-authored + Author *BlueprintAuthor `protobuf:"bytes,11,opt,name=author,proto3" json:"author,omitempty" yaml:"author,omitempty"` // @gotags: json:"author,omitempty" yaml:"author,omitempty" + // Details on software installed as part of the blueprint. + // Gen: manually-authored + SoftwareGroups []*BlueprintSoftwareGroup `protobuf:"bytes,12,rep,name=software_groups,json=softwareGroups,proto3" json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` // @gotags: json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty" + // Support offered, if any for the blueprint. + // Gen: manually-authored + SupportInfo *BlueprintSupport `protobuf:"bytes,13,opt,name=support_info,json=supportInfo,proto3" json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` // @gotags: json:"supportInfo,omitempty" yaml:"supportInfo,omitempty" + // A list of GCP org policies to be checked for successful deployment. + // Gen: manually-authored + OrgPolicyChecks []*BlueprintOrgPolicyCheck `protobuf:"bytes,14,rep,name=org_policy_checks,json=orgPolicyChecks,proto3" json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty"` // @gotags: json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty" + // Specifies if the blueprint supports single or multiple deployments per GCP project. + // If set to true, the blueprint can not be deployed more than once in the same GCP project. + // Gen: manually-authored + SingleDeployment bool `protobuf:"varint,15,opt,name=single_deployment,json=singleDeployment,proto3" json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty"` // @gotags: json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty" +} + +func (x *BlueprintInfo) Reset() { + *x = BlueprintInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintInfo) ProtoMessage() {} + +func (x *BlueprintInfo) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintInfo.ProtoReflect.Descriptor instead. +func (*BlueprintInfo) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{3} +} + +func (x *BlueprintInfo) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintInfo) GetSource() *BlueprintRepoDetail { + if x != nil { + return x.Source + } + return nil +} + +func (x *BlueprintInfo) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *BlueprintInfo) GetActuationTool() *BlueprintActuationTool { + if x != nil { + return x.ActuationTool + } + return nil +} + +func (x *BlueprintInfo) GetDescription() *BlueprintDescription { + if x != nil { + return x.Description + } + return nil +} + +func (x *BlueprintInfo) GetIcon() string { + if x != nil { + return x.Icon + } + return "" +} + +func (x *BlueprintInfo) GetDeploymentDuration() *BlueprintTimeEstimate { + if x != nil { + return x.DeploymentDuration + } + return nil +} + +func (x *BlueprintInfo) GetCostEstimate() *BlueprintCostEstimate { + if x != nil { + return x.CostEstimate + } + return nil +} + +func (x *BlueprintInfo) GetCloudProducts() []*BlueprintCloudProduct { + if x != nil { + return x.CloudProducts + } + return nil +} + +func (x *BlueprintInfo) GetQuotaDetails() []*BlueprintQuotaDetail { + if x != nil { + return x.QuotaDetails + } + return nil +} + +func (x *BlueprintInfo) GetAuthor() *BlueprintAuthor { + if x != nil { + return x.Author + } + return nil +} + +func (x *BlueprintInfo) GetSoftwareGroups() []*BlueprintSoftwareGroup { + if x != nil { + return x.SoftwareGroups + } + return nil +} + +func (x *BlueprintInfo) GetSupportInfo() *BlueprintSupport { + if x != nil { + return x.SupportInfo + } + return nil +} + +func (x *BlueprintInfo) GetOrgPolicyChecks() []*BlueprintOrgPolicyCheck { + if x != nil { + return x.OrgPolicyChecks + } + return nil +} + +func (x *BlueprintInfo) GetSingleDeployment() bool { + if x != nil { + return x.SingleDeployment + } + return false +} + +// BlueprintContent defines the detail for blueprint related content such as +// related documentation, diagrams, examples etc. +type BlueprintContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated + Architecture *BlueprintArchitecture `protobuf:"bytes,1,opt,name=architecture,proto3" json:"architecture,omitempty" yaml:"architecture,omitempty"` // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" + // Gen: manually-authored + Diagrams []*BlueprintDiagram `protobuf:"bytes,2,rep,name=diagrams,proto3" json:"diagrams,omitempty" yaml:"diagrams,omitempty"` // @gotags: json:"diagrams,omitempty" yaml:"diagrams,omitempty" + // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. + // ## Documentation + // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) + Documentation []*BlueprintListContent `protobuf:"bytes,3,rep,name=documentation,proto3" json:"documentation,omitempty" yaml:"documentation,omitempty"` // @gotags: json:"documentation,omitempty" yaml:"documentation,omitempty" + // Gen: auto-generated - blueprints under the modules/ folder. + SubBlueprints []*BlueprintMiscContent `protobuf:"bytes,4,rep,name=sub_blueprints,json=subBlueprints,proto3" json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` // @gotags: json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty" + // Gen: auto-generated - examples under the examples/ folder. + Examples []*BlueprintMiscContent `protobuf:"bytes,5,rep,name=examples,proto3" json:"examples,omitempty" yaml:"examples,omitempty"` // @gotags: json:"examples,omitempty" yaml:"examples,omitempty" +} + +func (x *BlueprintContent) Reset() { + *x = BlueprintContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintContent) ProtoMessage() {} + +func (x *BlueprintContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintContent.ProtoReflect.Descriptor instead. +func (*BlueprintContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{4} +} + +func (x *BlueprintContent) GetArchitecture() *BlueprintArchitecture { + if x != nil { + return x.Architecture + } + return nil +} + +func (x *BlueprintContent) GetDiagrams() []*BlueprintDiagram { + if x != nil { + return x.Diagrams + } + return nil +} + +func (x *BlueprintContent) GetDocumentation() []*BlueprintListContent { + if x != nil { + return x.Documentation + } + return nil +} + +func (x *BlueprintContent) GetSubBlueprints() []*BlueprintMiscContent { + if x != nil { + return x.SubBlueprints + } + return nil +} + +func (x *BlueprintContent) GetExamples() []*BlueprintMiscContent { + if x != nil { + return x.Examples + } + return nil +} + +// BlueprintInterface defines the input and output variables for the blueprint. +type BlueprintInterface struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - all defined variables for the blueprint + Variables []*BlueprintVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" + // Gen: manually-authored + VariableGroups []*BlueprintVariableGroup `protobuf:"bytes,2,rep,name=variable_groups,json=variableGroups,proto3" json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` // @gotags: json:"variableGroups,omitempty" yaml:"variableGroups,omitempty" + // Gen: auto-generated - all defined outputs for the blueprint + Outputs []*BlueprintOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty" yaml:"outputs,omitempty"` // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" +} + +func (x *BlueprintInterface) Reset() { + *x = BlueprintInterface{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintInterface) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintInterface) ProtoMessage() {} + +func (x *BlueprintInterface) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintInterface.ProtoReflect.Descriptor instead. +func (*BlueprintInterface) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{5} +} + +func (x *BlueprintInterface) GetVariables() []*BlueprintVariable { + if x != nil { + return x.Variables + } + return nil +} + +func (x *BlueprintInterface) GetVariableGroups() []*BlueprintVariableGroup { + if x != nil { + return x.VariableGroups + } + return nil +} + +func (x *BlueprintInterface) GetOutputs() []*BlueprintOutput { + if x != nil { + return x.Outputs + } + return nil +} + +// BlueprintRequirements defines the roles required and the associated services +// that need to be enabled to provision blueprint resources. +type BlueprintRequirements struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - all roles required for the blueprint in test/setup/iam.tf + // as the "int_required_roles" local. E.g. + // + // locals { + // int_required_roles = [ + // "roles/compute.admin", + // ] + // } + Roles []*BlueprintRoles `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty" yaml:"roles,omitempty"` // @gotags: json:"roles,omitempty" yaml:"roles,omitempty" + // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf + // as "activate_apis" in the project module. + Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty" yaml:"services,omitempty"` // @gotags: json:"services,omitempty" yaml:"services,omitempty" +} + +func (x *BlueprintRequirements) Reset() { + *x = BlueprintRequirements{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRequirements) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRequirements) ProtoMessage() {} + +func (x *BlueprintRequirements) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRequirements.ProtoReflect.Descriptor instead. +func (*BlueprintRequirements) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{6} +} + +func (x *BlueprintRequirements) GetRoles() []*BlueprintRoles { + if x != nil { + return x.Roles + } + return nil +} + +func (x *BlueprintRequirements) GetServices() []string { + if x != nil { + return x.Services + } + return nil +} + +// BlueprintUI is the top-level structure for holding UI specific metadata. +type BlueprintUI struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The top-level input section that defines the list of variables and + // their sections on the deployment page. + // Gen: partial + Input *BlueprintUIInput `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty" yaml:"input,omitempty"` // @gotags: json:"input,omitempty" yaml:"input,omitempty" + // The top-level section for listing runtime (or blueprint output) information + // i.e. the console URL for the VM or a button to ssh into the VM etc based on. + // Gen: manually-authored + Runtime *BlueprintUIOutput `protobuf:"bytes,2,opt,name=runtime,proto3" json:"runtime,omitempty" yaml:"runtime,omitempty"` // @gotags: json:"runtime,omitempty" yaml:"runtime,omitempty" +} + +func (x *BlueprintUI) Reset() { + *x = BlueprintUI{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUI) ProtoMessage() {} + +func (x *BlueprintUI) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUI.ProtoReflect.Descriptor instead. +func (*BlueprintUI) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{7} +} + +func (x *BlueprintUI) GetInput() *BlueprintUIInput { + if x != nil { + return x.Input + } + return nil +} + +func (x *BlueprintUI) GetRuntime() *BlueprintUIOutput { + if x != nil { + return x.Runtime + } + return nil +} + +type BlueprintRepoDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - URL from the .git dir. + // Can be manually overridden with a custom URL if needed. + Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo" yaml:"repo"` // @gotags: json:"repo" yaml:"repo" + // Gen: auto-generated - set as "git" for now until more + // types are supported. + SourceType string `protobuf:"bytes,2,opt,name=source_type,json=sourceType,proto3" json:"sourceType" yaml:"sourceType"` // @gotags: json:"sourceType" yaml:"sourceType" + // Gen: auto-generated - not set for root modules but + // set as the module name for submodules, if found. + Dir string `protobuf:"bytes,3,opt,name=dir,proto3" json:"dir,omitempty" yaml:"dir,omitempty"` // @gotags: json:"dir,omitempty" yaml:"dir,omitempty" +} + +func (x *BlueprintRepoDetail) Reset() { + *x = BlueprintRepoDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRepoDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRepoDetail) ProtoMessage() {} + +func (x *BlueprintRepoDetail) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRepoDetail.ProtoReflect.Descriptor instead. +func (*BlueprintRepoDetail) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{8} +} + +func (x *BlueprintRepoDetail) GetRepo() string { + if x != nil { + return x.Repo + } + return "" +} + +func (x *BlueprintRepoDetail) GetSourceType() string { + if x != nil { + return x.SourceType + } + return "" +} + +func (x *BlueprintRepoDetail) GetDir() string { + if x != nil { + return x.Dir + } + return "" +} + +// BlueprintActuationTool defines the actuation tool used to provision the blueprint. +type BlueprintActuationTool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - set as "Terraform" for now until + // more flavors are supported. + Flavor string `protobuf:"bytes,1,opt,name=flavor,proto3" json:"flavor,omitempty" yaml:"flavor,omitempty"` // @gotags: json:"flavor,omitempty" yaml:"flavor,omitempty" + // Required version for the actuation tool. + // Gen: auto-generated - For Terraform this is the `required_version` + // set in `terraform` block. E.g. + // + // terraform { + // required_version = ">= 0.13" + // } + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" +} + +func (x *BlueprintActuationTool) Reset() { + *x = BlueprintActuationTool{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintActuationTool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintActuationTool) ProtoMessage() {} + +func (x *BlueprintActuationTool) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintActuationTool.ProtoReflect.Descriptor instead. +func (*BlueprintActuationTool) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{9} +} + +func (x *BlueprintActuationTool) GetFlavor() string { + if x != nil { + return x.Flavor + } + return "" +} + +func (x *BlueprintActuationTool) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +// All descriptions are set with the markdown content immediately +// after each type's heading declaration in readme.md. +type BlueprintDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Markdown after "### Tagline". + Tagline string `protobuf:"bytes,1,opt,name=tagline,proto3" json:"tagline,omitempty" yaml:"tagline,omitempty"` // @gotags: json:"tagline,omitempty" yaml:"tagline,omitempty" + // Gen: auto-generated - Markdown after "### Detailed". + Detailed string `protobuf:"bytes,2,opt,name=detailed,proto3" json:"detailed,omitempty" yaml:"detailed,omitempty"` // @gotags: json:"detailed,omitempty" yaml:"detailed,omitempty" + // Gen: auto-generated - Markdown after "### PreDeploy". + PreDeploy string `protobuf:"bytes,3,opt,name=pre_deploy,json=preDeploy,proto3" json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` // @gotags: json:"preDeploy,omitempty" yaml:"preDeploy,omitempty" + // Gen: auto-generated - Markdown after "### Html". + Html string `protobuf:"bytes,4,opt,name=html,proto3" json:"html,omitempty" yaml:"html,omitempty"` // @gotags: json:"html,omitempty" yaml:"html,omitempty" + // Gen: auto-generated - Markdown after "### EulaUrls". + EulaUrls []string `protobuf:"bytes,5,rep,name=eula_urls,json=eulaUrls,proto3" json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"` // @gotags: json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty" + // Gen: auto-generated - Markdown after "### Architecture" + // Deprecated. Use BlueprintContent.Architecture instead. + Architecture []string `protobuf:"bytes,6,rep,name=architecture,proto3" json:"architecture,omitempty" yaml:"architecture,omitempty"` // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" +} + +func (x *BlueprintDescription) Reset() { + *x = BlueprintDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintDescription) ProtoMessage() {} + +func (x *BlueprintDescription) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintDescription.ProtoReflect.Descriptor instead. +func (*BlueprintDescription) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{10} +} + +func (x *BlueprintDescription) GetTagline() string { + if x != nil { + return x.Tagline + } + return "" +} + +func (x *BlueprintDescription) GetDetailed() string { + if x != nil { + return x.Detailed + } + return "" +} + +func (x *BlueprintDescription) GetPreDeploy() string { + if x != nil { + return x.PreDeploy + } + return "" +} + +func (x *BlueprintDescription) GetHtml() string { + if x != nil { + return x.Html + } + return "" +} + +func (x *BlueprintDescription) GetEulaUrls() []string { + if x != nil { + return x.EulaUrls + } + return nil +} + +func (x *BlueprintDescription) GetArchitecture() []string { + if x != nil { + return x.Architecture + } + return nil +} + +// A time estimate in secs required for configuring and deploying the blueprint. +type BlueprintTimeEstimate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Set using the content defined under "### DeploymentTime" E.g. + // ### DeploymentTime + // - Configuration: X secs + // - Deployment: Y secs + ConfigurationSecs int64 `protobuf:"varint,1,opt,name=configuration_secs,json=configurationSecs,proto3" json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" + DeploymentSecs int64 `protobuf:"varint,2,opt,name=deployment_secs,json=deploymentSecs,proto3" json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" +} + +func (x *BlueprintTimeEstimate) Reset() { + *x = BlueprintTimeEstimate{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintTimeEstimate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintTimeEstimate) ProtoMessage() {} + +func (x *BlueprintTimeEstimate) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintTimeEstimate.ProtoReflect.Descriptor instead. +func (*BlueprintTimeEstimate) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{11} +} + +func (x *BlueprintTimeEstimate) GetConfigurationSecs() int64 { + if x != nil { + return x.ConfigurationSecs + } + return 0 +} + +func (x *BlueprintTimeEstimate) GetDeploymentSecs() int64 { + if x != nil { + return x.DeploymentSecs + } + return 0 +} + +// The cost estimate for the blueprint based on pre-configured variables. +type BlueprintCostEstimate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - Set using the content defined under "### Cost" as a link + // with a description E.g. + // ### Cost + // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url" yaml:"url"` // @gotags: json:"url" yaml:"url" +} + +func (x *BlueprintCostEstimate) Reset() { + *x = BlueprintCostEstimate{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintCostEstimate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintCostEstimate) ProtoMessage() {} + +func (x *BlueprintCostEstimate) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintCostEstimate.ProtoReflect.Descriptor instead. +func (*BlueprintCostEstimate) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{12} +} + +func (x *BlueprintCostEstimate) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintCostEstimate) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// GCP cloud product(s) used in the blueprint. +type BlueprintCloudProduct struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") + // product used in the blueprint. + // Gen: manually-authored + ProductId string `protobuf:"bytes,1,opt,name=product_id,json=productId,proto3" json:"productId,omitempty" yaml:"productId,omitempty"` // @gotags: json:"productId,omitempty" yaml:"productId,omitempty" + // Url for the product. + // Gen: manually-authored + PageUrl string `protobuf:"bytes,2,opt,name=page_url,json=pageUrl,proto3" json:"pageUrl" yaml:"pageUrl"` // @gotags: json:"pageUrl" yaml:"pageUrl" + // A label string for the product, if it is not an integrated GCP product. + // E.g. "Data Studio" + // Gen: manually-authored + Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty" yaml:"label,omitempty"` // @gotags: json:"label,omitempty" yaml:"label,omitempty" + // Is the product's landing page external to the GCP console e.g. + // lookerstudio.google.com + // Gen: manually-authored + IsExternal bool `protobuf:"varint,4,opt,name=is_external,json=isExternal,proto3" json:"isExternal,omitempty" yaml:"isExternal,omitempty"` // @gotags: json:"isExternal,omitempty" yaml:"isExternal,omitempty" +} + +func (x *BlueprintCloudProduct) Reset() { + *x = BlueprintCloudProduct{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintCloudProduct) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintCloudProduct) ProtoMessage() {} + +func (x *BlueprintCloudProduct) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintCloudProduct.ProtoReflect.Descriptor instead. +func (*BlueprintCloudProduct) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{13} +} + +func (x *BlueprintCloudProduct) GetProductId() string { + if x != nil { + return x.ProductId + } + return "" +} + +func (x *BlueprintCloudProduct) GetPageUrl() string { + if x != nil { + return x.PageUrl + } + return "" +} + +func (x *BlueprintCloudProduct) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *BlueprintCloudProduct) GetIsExternal() bool { + if x != nil { + return x.IsExternal + } + return false +} + +// BlueprintOrgPolicyCheck defines GCP org policies to be checked +// for successful deployment +type BlueprintOrgPolicyCheck struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Id for the policy e.g. "compute-vmExternalIpAccess" + // Gen: manually-authored + PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policyId" yaml:"policyId"` // @gotags: json:"policyId" yaml:"policyId" + // If not set, it is assumed any version of this org policy + // prevents successful deployment of this solution. + // Gen: manually-authored + RequiredValues []string `protobuf:"bytes,2,rep,name=required_values,json=requiredValues,proto3" json:"requiredValues,omitempty" yaml:"requiredValues,omitempty"` // @gotags: json:"requiredValues,omitempty" yaml:"requiredValues,omitempty" +} + +func (x *BlueprintOrgPolicyCheck) Reset() { + *x = BlueprintOrgPolicyCheck{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintOrgPolicyCheck) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintOrgPolicyCheck) ProtoMessage() {} + +func (x *BlueprintOrgPolicyCheck) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintOrgPolicyCheck.ProtoReflect.Descriptor instead. +func (*BlueprintOrgPolicyCheck) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{14} +} + +func (x *BlueprintOrgPolicyCheck) GetPolicyId() string { + if x != nil { + return x.PolicyId + } + return "" +} + +func (x *BlueprintOrgPolicyCheck) GetRequiredValues() []string { + if x != nil { + return x.RequiredValues + } + return nil +} + +// BlueprintQuotaDetail defines the quota details for a blueprint. +type BlueprintQuotaDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // DynamicVariable, if provided, associates the provided input variable + // with the corresponding resource and quota type. In its absence, the quota + // detail is assumed to be fixed. + // Gen: manually-authored + DynamicVariable string `protobuf:"bytes,1,opt,name=dynamic_variable,json=dynamicVariable,proto3" json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty"` // @gotags: json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty" + // ResourceType is the type of resource the quota will be applied to i.e. + // GCE Instance or Disk etc. + // Gen: manually-authored + ResourceType QuotaResourceType `protobuf:"varint,2,opt,name=resource_type,json=resourceType,proto3,enum=google.cloud.config.bpmetadata.QuotaResourceType" json:"resourceType" yaml:"resourceType"` // @gotags: json:"resourceType" yaml:"resourceType" + // QuotaType is a key/value pair of the actual quotas and their corresponding + // values. Valid keys for quota_type can be: + // MACHINE_TYPE, + // CPUs, + // DISK_TYPE OR + // SIZE_GB. + // Gen: manually-authored + QuotaType map[string]string `protobuf:"bytes,3,rep,name=quota_type,json=quotaType,proto3" json:"quotaType" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"quotaType"` // @gotags: json:"quotaType" yaml:"quotaType" +} + +func (x *BlueprintQuotaDetail) Reset() { + *x = BlueprintQuotaDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintQuotaDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintQuotaDetail) ProtoMessage() {} + +func (x *BlueprintQuotaDetail) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintQuotaDetail.ProtoReflect.Descriptor instead. +func (*BlueprintQuotaDetail) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{15} +} + +func (x *BlueprintQuotaDetail) GetDynamicVariable() string { + if x != nil { + return x.DynamicVariable + } + return "" +} + +func (x *BlueprintQuotaDetail) GetResourceType() QuotaResourceType { + if x != nil { + return x.ResourceType + } + return QuotaResourceType_QRT_UNDEFINED +} + +func (x *BlueprintQuotaDetail) GetQuotaType() map[string]string { + if x != nil { + return x.QuotaType + } + return nil +} + +// BlueprintAuthor defines the author of a blueprint. +type BlueprintAuthor struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of template author or organization. + // Gen: manually-authored + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Description of the author. + // Gen: manually-authored + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + // Link to the author's website. + // Gen: manually-authored + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" +} + +func (x *BlueprintAuthor) Reset() { + *x = BlueprintAuthor{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintAuthor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintAuthor) ProtoMessage() {} + +func (x *BlueprintAuthor) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintAuthor.ProtoReflect.Descriptor instead. +func (*BlueprintAuthor) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{16} +} + +func (x *BlueprintAuthor) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintAuthor) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintAuthor) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// A group of related software components for the blueprint. +type BlueprintSoftwareGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Pre-defined software types. + // Gen: manually-authored + Type SoftwareGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.SoftwareGroupType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" + // Software components belonging to this group. + // Gen: manually-authored + Software []*BlueprintSoftware `protobuf:"bytes,2,rep,name=software,proto3" json:"software,omitempty" yaml:"software,omitempty"` // @gotags: json:"software,omitempty" yaml:"software,omitempty" +} + +func (x *BlueprintSoftwareGroup) Reset() { + *x = BlueprintSoftwareGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSoftwareGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSoftwareGroup) ProtoMessage() {} + +func (x *BlueprintSoftwareGroup) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSoftwareGroup.ProtoReflect.Descriptor instead. +func (*BlueprintSoftwareGroup) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{17} +} + +func (x *BlueprintSoftwareGroup) GetType() SoftwareGroupType { + if x != nil { + return x.Type + } + return SoftwareGroupType_SG_UNSPECIFIED +} + +func (x *BlueprintSoftwareGroup) GetSoftware() []*BlueprintSoftware { + if x != nil { + return x.Software + } + return nil +} + +// A description of a piece of a single software component +// installed by the blueprint. +type BlueprintSoftware struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // User-visible title. + // Gen: manually-authored + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Software version. + // Gen: manually-authored + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" + // Link to development site or marketing page for this software. + // Gen: manually-authored + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" + // Link to license page. + // Gen: manually-authored + LicenseUrl string `protobuf:"bytes,4,opt,name=license_url,json=licenseUrl,proto3" json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"` // @gotags: json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty" +} + +func (x *BlueprintSoftware) Reset() { + *x = BlueprintSoftware{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSoftware) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSoftware) ProtoMessage() {} + +func (x *BlueprintSoftware) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSoftware.ProtoReflect.Descriptor instead. +func (*BlueprintSoftware) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{18} +} + +func (x *BlueprintSoftware) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintSoftware) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *BlueprintSoftware) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *BlueprintSoftware) GetLicenseUrl() string { + if x != nil { + return x.LicenseUrl + } + return "" +} + +// A description of a support option +type BlueprintSupport struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description of the support option. + // Gen: manually-authored + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" + // Link to the page providing this support option. + // Gen: manually-authored + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" + // The organization or group that provides the support option (e.g.: + // "Community", "Google"). + // Gen: manually-authored + Entity string `protobuf:"bytes,3,opt,name=entity,proto3" json:"entity,omitempty" yaml:"entity,omitempty"` // @gotags: json:"entity,omitempty" yaml:"entity,omitempty" + // Whether to show the customer's support ID. + // Gen: manually-authored + ShowSupportId bool `protobuf:"varint,4,opt,name=show_support_id,json=showSupportId,proto3" json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"` // @gotags: json:"showSupportId,omitempty" yaml:"showSupportId,omitempty" +} + +func (x *BlueprintSupport) Reset() { + *x = BlueprintSupport{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintSupport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintSupport) ProtoMessage() {} + +func (x *BlueprintSupport) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintSupport.ProtoReflect.Descriptor instead. +func (*BlueprintSupport) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{19} +} + +func (x *BlueprintSupport) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintSupport) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *BlueprintSupport) GetEntity() string { + if x != nil { + return x.Entity + } + return "" +} + +func (x *BlueprintSupport) GetShowSupportId() bool { + if x != nil { + return x.ShowSupportId + } + return false +} + +type BlueprintArchitecture struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Gen: auto-generated - the URL & list content following the "## Architecture" tag e.g. + // ## Architecture + // ![Blueprint Architecture](assets/architecture.png) + // 1. Step no. 1 + // 2. Step no. 2 + // 3. Step no. 3 + DiagramUrl string `protobuf:"bytes,1,opt,name=diagram_url,json=diagramUrl,proto3" json:"diagramUrl" yaml:"diagramUrl"` // @gotags: json:"diagramUrl" yaml:"diagramUrl" + // Gen: auto-generated - the list items following the "## Architecture" tag. + Description []string `protobuf:"bytes,2,rep,name=description,proto3" json:"description" yaml:"description"` // @gotags: json:"description" yaml:"description" +} + +func (x *BlueprintArchitecture) Reset() { + *x = BlueprintArchitecture{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintArchitecture) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintArchitecture) ProtoMessage() {} + +func (x *BlueprintArchitecture) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintArchitecture.ProtoReflect.Descriptor instead. +func (*BlueprintArchitecture) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{20} +} + +func (x *BlueprintArchitecture) GetDiagramUrl() string { + if x != nil { + return x.DiagramUrl + } + return "" +} + +func (x *BlueprintArchitecture) GetDescription() []string { + if x != nil { + return x.Description + } + return nil +} + +type BlueprintMiscContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty" yaml:"location,omitempty"` // @gotags: json:"location,omitempty" yaml:"location,omitempty" +} + +func (x *BlueprintMiscContent) Reset() { + *x = BlueprintMiscContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintMiscContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintMiscContent) ProtoMessage() {} + +func (x *BlueprintMiscContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintMiscContent.ProtoReflect.Descriptor instead. +func (*BlueprintMiscContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{21} +} + +func (x *BlueprintMiscContent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintMiscContent) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +type BlueprintDiagram struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + AltText string `protobuf:"bytes,2,opt,name=alt_text,json=altText,proto3" json:"altText,omitempty" yaml:"altText,omitempty"` // @gotags: json:"altText,omitempty" yaml:"altText,omitempty" + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" +} + +func (x *BlueprintDiagram) Reset() { + *x = BlueprintDiagram{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintDiagram) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintDiagram) ProtoMessage() {} + +func (x *BlueprintDiagram) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintDiagram.ProtoReflect.Descriptor instead. +func (*BlueprintDiagram) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{22} +} + +func (x *BlueprintDiagram) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintDiagram) GetAltText() string { + if x != nil { + return x.AltText + } + return "" +} + +func (x *BlueprintDiagram) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type BlueprintListContent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` // @gotags: json:"url,omitempty" yaml:"url,omitempty" +} + +func (x *BlueprintListContent) Reset() { + *x = BlueprintListContent{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintListContent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintListContent) ProtoMessage() {} + +func (x *BlueprintListContent) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintListContent.ProtoReflect.Descriptor instead. +func (*BlueprintListContent) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{23} +} + +func (x *BlueprintListContent) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BlueprintListContent) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type BlueprintVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` // @gotags: json:"name,omitempty" yaml:"name,omitempty" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + VarType string `protobuf:"bytes,3,opt,name=var_type,json=varType,proto3" json:"varType,omitempty" yaml:"varType,omitempty"` // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" + DefaultValue *structpb.Value `protobuf:"bytes,4,opt,name=default_value,json=defaultValue,proto3" json:"defaultValue,omitempty" yaml:"defaultValue,omitempty"` // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" + Required bool `protobuf:"varint,5,opt,name=required,proto3" json:"required,omitempty" yaml:"required,omitempty"` // @gotags: json:"required,omitempty" yaml:"required,omitempty" +} + +func (x *BlueprintVariable) Reset() { + *x = BlueprintVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintVariable) ProtoMessage() {} + +func (x *BlueprintVariable) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintVariable.ProtoReflect.Descriptor instead. +func (*BlueprintVariable) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{24} +} + +func (x *BlueprintVariable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintVariable) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintVariable) GetVarType() string { + if x != nil { + return x.VarType + } + return "" +} + +func (x *BlueprintVariable) GetDefaultValue() *structpb.Value { + if x != nil { + return x.DefaultValue + } + return nil +} + +func (x *BlueprintVariable) GetRequired() bool { + if x != nil { + return x.Required + } + return false +} + +// BlueprintVariableGroup is manually entered. +type BlueprintVariableGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + Variables []string `protobuf:"bytes,3,rep,name=variables,proto3" json:"variables,omitempty" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" +} + +func (x *BlueprintVariableGroup) Reset() { + *x = BlueprintVariableGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintVariableGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintVariableGroup) ProtoMessage() {} + +func (x *BlueprintVariableGroup) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintVariableGroup.ProtoReflect.Descriptor instead. +func (*BlueprintVariableGroup) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{25} +} + +func (x *BlueprintVariableGroup) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintVariableGroup) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *BlueprintVariableGroup) GetVariables() []string { + if x != nil { + return x.Variables + } + return nil +} + +type BlueprintOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" +} + +func (x *BlueprintOutput) Reset() { + *x = BlueprintOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintOutput) ProtoMessage() {} + +func (x *BlueprintOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintOutput.ProtoReflect.Descriptor instead. +func (*BlueprintOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{26} +} + +func (x *BlueprintOutput) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BlueprintOutput) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type BlueprintRoles struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level string `protobuf:"bytes,1,opt,name=level,proto3" json:"level" yaml:"level"` // @gotags: json:"level" yaml:"level" + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles" yaml:"roles"` // @gotags: json:"roles" yaml:"roles" +} + +func (x *BlueprintRoles) Reset() { + *x = BlueprintRoles{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintRoles) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintRoles) ProtoMessage() {} + +func (x *BlueprintRoles) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintRoles.ProtoReflect.Descriptor instead. +func (*BlueprintRoles) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{27} +} + +func (x *BlueprintRoles) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +func (x *BlueprintRoles) GetRoles() []string { + if x != nil { + return x.Roles + } + return nil +} + +var File_bpmetadata_proto protoreflect.FileDescriptor + +var file_bpmetadata_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, + 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x61, + 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, + 0x12, 0x4c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x49, + 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xdc, 0x02, 0x0a, 0x10, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x63, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x2e, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, + 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x03, 0x0a, 0x15, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x41, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x3b, 0x0a, 0x02, 0x75, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x52, 0x02, 0x75, 0x69, 0x22, 0xe5, 0x08, + 0x0a, 0x0d, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x0e, + 0x61, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, + 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, 0x61, 0x63, + 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x56, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x13, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x12, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x5a, 0x0a, 0x0d, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x63, + 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x0d, 0x71, 0x75, 0x6f, + 0x74, 0x61, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x5f, 0x0a, + 0x0f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, + 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x53, + 0x0a, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x63, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xc6, 0x03, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x08, 0x64, 0x69, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x5a, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x5b, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x73, + 0x75, 0x62, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x08, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x91, + 0x02, 0x0a, 0x12, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x22, 0x79, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x05, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xa2, 0x01, + 0x0a, 0x0b, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x12, 0x46, 0x0a, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x05, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4b, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, + 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x72, + 0x22, 0x4a, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x63, 0x74, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6c, + 0x61, 0x76, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6c, 0x61, 0x76, + 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc0, 0x01, 0x0a, + 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, 0x6e, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, 0x6e, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x74, + 0x6d, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x12, 0x1b, + 0x0a, 0x09, 0x65, 0x75, 0x6c, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x65, 0x75, 0x6c, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, + 0x6f, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x73, + 0x22, 0x4b, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x73, + 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x88, 0x01, + 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x55, 0x72, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x5f, 0x0a, 0x17, 0x42, 0x6c, 0x75, 0x65, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x14, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x56, 0x0a, + 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, + 0x51, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, + 0x71, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x51, 0x75, 0x6f, + 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5b, 0x0a, 0x0f, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, + 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, + 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x52, 0x08, 0x73, 0x6f, 0x66, + 0x74, 0x77, 0x61, 0x72, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x86, 0x01, + 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x26, + 0x0a, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x72, 0x6c, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, + 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x10, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x3e, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, + 0xbd, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x76, + 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, + 0x6c, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x47, 0x0a, + 0x0f, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3c, 0x0a, 0x0e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0x6a, 0x0a, 0x11, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x51, 0x52, 0x54, + 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, + 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, + 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x02, + 0x2a, 0x32, 0x0a, 0x11, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x47, 0x5f, + 0x4f, 0x53, 0x10, 0x01, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, + 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, + 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_proto_rawDescOnce sync.Once + file_bpmetadata_proto_rawDescData = file_bpmetadata_proto_rawDesc +) + +func file_bpmetadata_proto_rawDescGZIP() []byte { + file_bpmetadata_proto_rawDescOnce.Do(func() { + file_bpmetadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_proto_rawDescData) + }) + return file_bpmetadata_proto_rawDescData +} + +var file_bpmetadata_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_bpmetadata_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_bpmetadata_proto_goTypes = []interface{}{ + (QuotaResourceType)(0), // 0: google.cloud.config.bpmetadata.QuotaResourceType + (SoftwareGroupType)(0), // 1: google.cloud.config.bpmetadata.SoftwareGroupType + (*BlueprintMetadata)(nil), // 2: google.cloud.config.bpmetadata.BlueprintMetadata + (*ResourceTypeMeta)(nil), // 3: google.cloud.config.bpmetadata.ResourceTypeMeta + (*BlueprintMetadataSpec)(nil), // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec + (*BlueprintInfo)(nil), // 5: google.cloud.config.bpmetadata.BlueprintInfo + (*BlueprintContent)(nil), // 6: google.cloud.config.bpmetadata.BlueprintContent + (*BlueprintInterface)(nil), // 7: google.cloud.config.bpmetadata.BlueprintInterface + (*BlueprintRequirements)(nil), // 8: google.cloud.config.bpmetadata.BlueprintRequirements + (*BlueprintUI)(nil), // 9: google.cloud.config.bpmetadata.BlueprintUI + (*BlueprintRepoDetail)(nil), // 10: google.cloud.config.bpmetadata.BlueprintRepoDetail + (*BlueprintActuationTool)(nil), // 11: google.cloud.config.bpmetadata.BlueprintActuationTool + (*BlueprintDescription)(nil), // 12: google.cloud.config.bpmetadata.BlueprintDescription + (*BlueprintTimeEstimate)(nil), // 13: google.cloud.config.bpmetadata.BlueprintTimeEstimate + (*BlueprintCostEstimate)(nil), // 14: google.cloud.config.bpmetadata.BlueprintCostEstimate + (*BlueprintCloudProduct)(nil), // 15: google.cloud.config.bpmetadata.BlueprintCloudProduct + (*BlueprintOrgPolicyCheck)(nil), // 16: google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck + (*BlueprintQuotaDetail)(nil), // 17: google.cloud.config.bpmetadata.BlueprintQuotaDetail + (*BlueprintAuthor)(nil), // 18: google.cloud.config.bpmetadata.BlueprintAuthor + (*BlueprintSoftwareGroup)(nil), // 19: google.cloud.config.bpmetadata.BlueprintSoftwareGroup + (*BlueprintSoftware)(nil), // 20: google.cloud.config.bpmetadata.BlueprintSoftware + (*BlueprintSupport)(nil), // 21: google.cloud.config.bpmetadata.BlueprintSupport + (*BlueprintArchitecture)(nil), // 22: google.cloud.config.bpmetadata.BlueprintArchitecture + (*BlueprintMiscContent)(nil), // 23: google.cloud.config.bpmetadata.BlueprintMiscContent + (*BlueprintDiagram)(nil), // 24: google.cloud.config.bpmetadata.BlueprintDiagram + (*BlueprintListContent)(nil), // 25: google.cloud.config.bpmetadata.BlueprintListContent + (*BlueprintVariable)(nil), // 26: google.cloud.config.bpmetadata.BlueprintVariable + (*BlueprintVariableGroup)(nil), // 27: google.cloud.config.bpmetadata.BlueprintVariableGroup + (*BlueprintOutput)(nil), // 28: google.cloud.config.bpmetadata.BlueprintOutput + (*BlueprintRoles)(nil), // 29: google.cloud.config.bpmetadata.BlueprintRoles + nil, // 30: google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry + nil, // 31: google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry + nil, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry + (*BlueprintUIInput)(nil), // 33: google.cloud.config.bpmetadata.BlueprintUIInput + (*BlueprintUIOutput)(nil), // 34: google.cloud.config.bpmetadata.BlueprintUIOutput + (*structpb.Value)(nil), // 35: google.protobuf.Value +} +var file_bpmetadata_proto_depIdxs = []int32{ + 3, // 0: google.cloud.config.bpmetadata.BlueprintMetadata.metadata:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta + 4, // 1: google.cloud.config.bpmetadata.BlueprintMetadata.spec:type_name -> google.cloud.config.bpmetadata.BlueprintMetadataSpec + 30, // 2: google.cloud.config.bpmetadata.ResourceTypeMeta.labels:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry + 31, // 3: google.cloud.config.bpmetadata.ResourceTypeMeta.annotations:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry + 5, // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec.info:type_name -> google.cloud.config.bpmetadata.BlueprintInfo + 6, // 5: google.cloud.config.bpmetadata.BlueprintMetadataSpec.content:type_name -> google.cloud.config.bpmetadata.BlueprintContent + 7, // 6: google.cloud.config.bpmetadata.BlueprintMetadataSpec.interfaces:type_name -> google.cloud.config.bpmetadata.BlueprintInterface + 8, // 7: google.cloud.config.bpmetadata.BlueprintMetadataSpec.requirements:type_name -> google.cloud.config.bpmetadata.BlueprintRequirements + 9, // 8: google.cloud.config.bpmetadata.BlueprintMetadataSpec.ui:type_name -> google.cloud.config.bpmetadata.BlueprintUI + 10, // 9: google.cloud.config.bpmetadata.BlueprintInfo.source:type_name -> google.cloud.config.bpmetadata.BlueprintRepoDetail + 11, // 10: google.cloud.config.bpmetadata.BlueprintInfo.actuation_tool:type_name -> google.cloud.config.bpmetadata.BlueprintActuationTool + 12, // 11: google.cloud.config.bpmetadata.BlueprintInfo.description:type_name -> google.cloud.config.bpmetadata.BlueprintDescription + 13, // 12: google.cloud.config.bpmetadata.BlueprintInfo.deployment_duration:type_name -> google.cloud.config.bpmetadata.BlueprintTimeEstimate + 14, // 13: google.cloud.config.bpmetadata.BlueprintInfo.cost_estimate:type_name -> google.cloud.config.bpmetadata.BlueprintCostEstimate + 15, // 14: google.cloud.config.bpmetadata.BlueprintInfo.cloud_products:type_name -> google.cloud.config.bpmetadata.BlueprintCloudProduct + 17, // 15: google.cloud.config.bpmetadata.BlueprintInfo.quota_details:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail + 18, // 16: google.cloud.config.bpmetadata.BlueprintInfo.author:type_name -> google.cloud.config.bpmetadata.BlueprintAuthor + 19, // 17: google.cloud.config.bpmetadata.BlueprintInfo.software_groups:type_name -> google.cloud.config.bpmetadata.BlueprintSoftwareGroup + 21, // 18: google.cloud.config.bpmetadata.BlueprintInfo.support_info:type_name -> google.cloud.config.bpmetadata.BlueprintSupport + 16, // 19: google.cloud.config.bpmetadata.BlueprintInfo.org_policy_checks:type_name -> google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck + 22, // 20: google.cloud.config.bpmetadata.BlueprintContent.architecture:type_name -> google.cloud.config.bpmetadata.BlueprintArchitecture + 24, // 21: google.cloud.config.bpmetadata.BlueprintContent.diagrams:type_name -> google.cloud.config.bpmetadata.BlueprintDiagram + 25, // 22: google.cloud.config.bpmetadata.BlueprintContent.documentation:type_name -> google.cloud.config.bpmetadata.BlueprintListContent + 23, // 23: google.cloud.config.bpmetadata.BlueprintContent.sub_blueprints:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent + 23, // 24: google.cloud.config.bpmetadata.BlueprintContent.examples:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent + 26, // 25: google.cloud.config.bpmetadata.BlueprintInterface.variables:type_name -> google.cloud.config.bpmetadata.BlueprintVariable + 27, // 26: google.cloud.config.bpmetadata.BlueprintInterface.variable_groups:type_name -> google.cloud.config.bpmetadata.BlueprintVariableGroup + 28, // 27: google.cloud.config.bpmetadata.BlueprintInterface.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintOutput + 29, // 28: google.cloud.config.bpmetadata.BlueprintRequirements.roles:type_name -> google.cloud.config.bpmetadata.BlueprintRoles + 33, // 29: google.cloud.config.bpmetadata.BlueprintUI.input:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput + 34, // 30: google.cloud.config.bpmetadata.BlueprintUI.runtime:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput + 0, // 31: google.cloud.config.bpmetadata.BlueprintQuotaDetail.resource_type:type_name -> google.cloud.config.bpmetadata.QuotaResourceType + 32, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.quota_type:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry + 1, // 33: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.type:type_name -> google.cloud.config.bpmetadata.SoftwareGroupType + 20, // 34: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.software:type_name -> google.cloud.config.bpmetadata.BlueprintSoftware + 35, // 35: google.cloud.config.bpmetadata.BlueprintVariable.default_value:type_name -> google.protobuf.Value + 36, // [36:36] is the sub-list for method output_type + 36, // [36:36] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name +} + +func init() { file_bpmetadata_proto_init() } +func file_bpmetadata_proto_init() { + if File_bpmetadata_proto != nil { + return + } + file_bpmetadata_ui_proto_init() + if !protoimpl.UnsafeEnabled { + file_bpmetadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResourceTypeMeta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMetadataSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintInterface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRequirements); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUI); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRepoDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintActuationTool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintTimeEstimate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintCostEstimate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintCloudProduct); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintOrgPolicyCheck); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintQuotaDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintAuthor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSoftwareGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSoftware); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintSupport); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintArchitecture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintMiscContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintDiagram); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintListContent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintVariableGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintRoles); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_proto_rawDesc, + NumEnums: 2, + NumMessages: 31, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_proto_goTypes, + DependencyIndexes: file_bpmetadata_proto_depIdxs, + EnumInfos: file_bpmetadata_proto_enumTypes, + MessageInfos: file_bpmetadata_proto_msgTypes, + }.Build() + File_bpmetadata_proto = out.File + file_bpmetadata_proto_rawDesc = nil + file_bpmetadata_proto_goTypes = nil + file_bpmetadata_proto_depIdxs = nil +} diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go new file mode 100644 index 00000000000..f3ef4f9b4ff --- /dev/null +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -0,0 +1,853 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v4.23.4 +// source: bpmetadata_ui.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. +type BlueprintUIInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // variables is a map defining all inputs on the UI. + // Gen: partial + Variables map[string]*DisplayVariable `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"variables,omitempty"` // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" + // Sections is a generic structure for grouping inputs together. + // Gen: manually-authored + Sections []*DisplaySection `protobuf:"bytes,2,rep,name=sections,proto3" json:"sections,omitempty" yaml:"sections,omitempty"` // @gotags: json:"sections,omitempty" yaml:"sections,omitempty" +} + +func (x *BlueprintUIInput) Reset() { + *x = BlueprintUIInput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUIInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUIInput) ProtoMessage() {} + +func (x *BlueprintUIInput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUIInput.ProtoReflect.Descriptor instead. +func (*BlueprintUIInput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{0} +} + +func (x *BlueprintUIInput) GetVariables() map[string]*DisplayVariable { + if x != nil { + return x.Variables + } + return nil +} + +func (x *BlueprintUIInput) GetSections() []*DisplaySection { + if x != nil { + return x.Sections + } + return nil +} + +// Additional display specific metadata pertaining to a particular +// input variable. +type DisplayVariable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The variable name from the corresponding standard metadata file. + // Gen: auto-generated - the Terraform variable name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + // Visible title for the variable on the UI. If not present, + // Name will be used for the Title. + // Gen: auto-generated - the Terraform variable converted to title case e.g. + // variable "bucket_admins" will convert to "Bucket Admins" as the title. + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // A flag to hide or show the variable on the UI. + // Gen: manually-authored + Invisible bool `protobuf:"varint,3,opt,name=invisible,proto3" json:"invisible,omitempty" yaml:"invisible,omitempty"` // @gotags: json:"invisible,omitempty" yaml:"invisible,omitempty" + // Variable tooltip. + // Gen: manually-authored + Tooltip string `protobuf:"bytes,4,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" + // Placeholder text (when there is no default). + // Gen: manually-authored + Placeholder string `protobuf:"bytes,5,opt,name=placeholder,proto3" json:"placeholder,omitempty" yaml:"placeholder,omitempty"` // @gotags: json:"placeholder,omitempty" yaml:"placeholder,omitempty" + // Regex based validation rules for the variable. + // Gen: manually-authored + RegexValidation string `protobuf:"bytes,6,opt,name=regex_validation,json=regexValidation,proto3" json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` // @gotags: json:"regexValidation,omitempty" yaml:"regexValidation,omitempty" + // Minimum no. of inputs for the input variable. + // Gen: manually-authored + MinItems int32 `protobuf:"varint,7,opt,name=min_items,json=minItems,proto3" json:"minItems,omitempty" yaml:"minItems,omitempty"` // @gotags: json:"minItems,omitempty" yaml:"minItems,omitempty" + // Max no. of inputs for the input variable. + // Gen: manually-authored + MaxItems int32 `protobuf:"varint,8,opt,name=max_items,json=maxItems,proto3" json:"maxItems,omitempty" yaml:"maxItems,omitempty"` // @gotags: json:"maxItems,omitempty" yaml:"maxItems,omitempty" + // Minimum length for string values. + // Gen: manually-authored + MinLength int32 `protobuf:"varint,9,opt,name=min_length,json=minLength,proto3" json:"minLength,omitempty" yaml:"minLength,omitempty"` // @gotags: json:"minLength,omitempty" yaml:"minLength,omitempty" + // Max length for string values. + // Gen: manually-authored + MaxLength int32 `protobuf:"varint,10,opt,name=max_length,json=maxLength,proto3" json:"maxLength,omitempty" yaml:"maxLength,omitempty"` // @gotags: json:"maxLength,omitempty" yaml:"maxLength,omitempty" + // Minimum value for numeric types. + // Gen: manually-authored + Min float32 `protobuf:"fixed32,11,opt,name=min,proto3" json:"min,omitempty" yaml:"min,omitempty"` // @gotags: json:"min,omitempty" yaml:"min,omitempty" + // Max value for numeric types. + // Gen: manually-authored + Max float32 `protobuf:"fixed32,12,opt,name=max,proto3" json:"max,omitempty" yaml:"max,omitempty"` // @gotags: json:"max,omitempty" yaml:"max,omitempty" + // The name of a section to which this variable belongs. + // variables belong to the root section if this field is + // not set. + // Gen: manually-authored + Section string `protobuf:"bytes,13,opt,name=section,proto3" json:"section,omitempty" yaml:"section,omitempty"` // @gotags: json:"section,omitempty" yaml:"section,omitempty" + // UI extension associated with the input variable. + // E.g. for rendering a GCE machine type selector: + // + // xGoogleProperty: + // + // type: GCE_MACHINE_TYPE + // zoneProperty: myZone + // gceMachineType: + // minCpu: 2 + // minRamGb: + // + // Gen: manually-authored + XGoogleProperty *GooglePropertyExtension `protobuf:"bytes,14,opt,name=x_google_property,json=xGoogleProperty,proto3" json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty"` // @gotags: json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty" + // Text describing the validation rules for the property. Typically shown + // after an invalid input. + // Optional. UTF-8 text. No markup. At most 128 characters. + // Gen: manually-authored + Validation string `protobuf:"bytes,15,opt,name=validation,proto3" json:"validation,omitempty" yaml:"validation,omitempty"` // @gotags: json:"validation,omitempty" yaml:"validation,omitempty" +} + +func (x *DisplayVariable) Reset() { + *x = DisplayVariable{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayVariable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayVariable) ProtoMessage() {} + +func (x *DisplayVariable) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayVariable.ProtoReflect.Descriptor instead. +func (*DisplayVariable) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{1} +} + +func (x *DisplayVariable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DisplayVariable) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DisplayVariable) GetInvisible() bool { + if x != nil { + return x.Invisible + } + return false +} + +func (x *DisplayVariable) GetTooltip() string { + if x != nil { + return x.Tooltip + } + return "" +} + +func (x *DisplayVariable) GetPlaceholder() string { + if x != nil { + return x.Placeholder + } + return "" +} + +func (x *DisplayVariable) GetRegexValidation() string { + if x != nil { + return x.RegexValidation + } + return "" +} + +func (x *DisplayVariable) GetMinItems() int32 { + if x != nil { + return x.MinItems + } + return 0 +} + +func (x *DisplayVariable) GetMaxItems() int32 { + if x != nil { + return x.MaxItems + } + return 0 +} + +func (x *DisplayVariable) GetMinLength() int32 { + if x != nil { + return x.MinLength + } + return 0 +} + +func (x *DisplayVariable) GetMaxLength() int32 { + if x != nil { + return x.MaxLength + } + return 0 +} + +func (x *DisplayVariable) GetMin() float32 { + if x != nil { + return x.Min + } + return 0 +} + +func (x *DisplayVariable) GetMax() float32 { + if x != nil { + return x.Max + } + return 0 +} + +func (x *DisplayVariable) GetSection() string { + if x != nil { + return x.Section + } + return "" +} + +func (x *DisplayVariable) GetXGoogleProperty() *GooglePropertyExtension { + if x != nil { + return x.XGoogleProperty + } + return nil +} + +func (x *DisplayVariable) GetValidation() string { + if x != nil { + return x.Validation + } + return "" +} + +// A logical group of variables. [Section][]s may also be grouped into +// sub-sections. +type DisplaySection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the section, referenced by DisplayVariable.Section + // Section names must be unique. + // Gen: manually-authored + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + // Section title. + // If not provided, name will be used instead. + // Gen: manually-authored + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty" yaml:"title,omitempty"` // @gotags: json:"title,omitempty" yaml:"title,omitempty" + // Section tooltip. + // Gen: manually-authored + Tooltip string `protobuf:"bytes,3,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" + // Section subtext. + // Gen: manually-authored + Subtext string `protobuf:"bytes,4,opt,name=subtext,proto3" json:"subtext,omitempty" yaml:"subtext,omitempty"` // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" + // The name of the parent section (if parent is not the root section). + // Gen: manually-authored + Parent string `protobuf:"bytes,5,opt,name=parent,proto3" json:"parent,omitempty" yaml:"parent,omitempty"` // @gotags: json:"parent,omitempty" yaml:"parent,omitempty" +} + +func (x *DisplaySection) Reset() { + *x = DisplaySection{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplaySection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplaySection) ProtoMessage() {} + +func (x *DisplaySection) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplaySection.ProtoReflect.Descriptor instead. +func (*DisplaySection) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2} +} + +func (x *DisplaySection) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DisplaySection) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DisplaySection) GetTooltip() string { + if x != nil { + return x.Tooltip + } + return "" +} + +func (x *DisplaySection) GetSubtext() string { + if x != nil { + return x.Subtext + } + return "" +} + +func (x *DisplaySection) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +type BlueprintUIOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Short message to be displayed while the blueprint is deploying. + // At most 128 characters. + // Gen: manually-authored + OutputMessage string `protobuf:"bytes,1,opt,name=output_message,json=outputMessage,proto3" json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"` // @gotags: json:"outputMessage,omitempty" yaml:"outputMessage,omitempty" + // List of suggested actions to take. + // Gen: manually-authored + SuggestedActions []*UIActionItem `protobuf:"bytes,2,rep,name=suggested_actions,json=suggestedActions,proto3" json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"` // @gotags: json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty" + // outputs is a map defining a subset of Terraform outputs on the UI + // that may need additional UI configuration. + // Gen: manually-authored + Outputs map[string]*DisplayOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"outputs,omitempty"` // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" +} + +func (x *BlueprintUIOutput) Reset() { + *x = BlueprintUIOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintUIOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintUIOutput) ProtoMessage() {} + +func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintUIOutput.ProtoReflect.Descriptor instead. +func (*BlueprintUIOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{3} +} + +func (x *BlueprintUIOutput) GetOutputMessage() string { + if x != nil { + return x.OutputMessage + } + return "" +} + +func (x *BlueprintUIOutput) GetSuggestedActions() []*UIActionItem { + if x != nil { + return x.SuggestedActions + } + return nil +} + +func (x *BlueprintUIOutput) GetOutputs() map[string]*DisplayOutput { + if x != nil { + return x.Outputs + } + return nil +} + +// An item appearing in a list of required or suggested steps. +type UIActionItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Summary heading for the item. + // Required. Accepts string expressions. At most 64 characters. + // Gen: manually-authored + Heading string `protobuf:"bytes,1,opt,name=heading,proto3" json:"heading" yaml:"heading"` // @gotags: json:"heading" yaml:"heading" + // Longer description of the item. + // At least one description or snippet is required. + // Accepts string expressions. HTML <a href> + // tags only. At most 512 characters. + // Gen: manually-authored + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + // Fixed-width formatted code snippet. + // At least one description or snippet is required. + // Accepts string expressions. UTF-8 text. At most 512 characters. + // Gen: manually-authored + Snippet string `protobuf:"bytes,3,opt,name=snippet,proto3" json:"snippet,omitempty" yaml:"snippet,omitempty"` // @gotags: json:"snippet,omitempty" yaml:"snippet,omitempty" + // If present, this expression determines whether the item is shown. + // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP + // where `externalIP` is the output. + // Gen: manually-authored + ShowIf string `protobuf:"bytes,4,opt,name=show_if,json=showIf,proto3" json:"showIf,omitempty" yaml:"showIf,omitempty"` // @gotags: json:"showIf,omitempty" yaml:"showIf,omitempty" +} + +func (x *UIActionItem) Reset() { + *x = UIActionItem{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UIActionItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UIActionItem) ProtoMessage() {} + +func (x *UIActionItem) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UIActionItem.ProtoReflect.Descriptor instead. +func (*UIActionItem) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} +} + +func (x *UIActionItem) GetHeading() string { + if x != nil { + return x.Heading + } + return "" +} + +func (x *UIActionItem) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UIActionItem) GetSnippet() string { + if x != nil { + return x.Snippet + } + return "" +} + +func (x *UIActionItem) GetShowIf() string { + if x != nil { + return x.ShowIf + } + return "" +} + +// Additional display specific metadata pertaining to a particular +// Terraform output. +type DisplayOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // open_in_new_tab defines if the Output action should be opened + // in a new tab. + // Gen: manually-authored + OpenInNewTab bool `protobuf:"varint,1,opt,name=open_in_new_tab,json=openInNewTab,proto3" json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty"` // @gotags: json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty" + // show_in_notification defines if the Output should shown in + // notification for the deployment. + // Gen: manually-authored + ShowInNotification bool `protobuf:"varint,2,opt,name=show_in_notification,json=showInNotification,proto3" json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" +} + +func (x *DisplayOutput) Reset() { + *x = DisplayOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayOutput) ProtoMessage() {} + +func (x *DisplayOutput) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayOutput.ProtoReflect.Descriptor instead. +func (*DisplayOutput) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} +} + +func (x *DisplayOutput) GetOpenInNewTab() bool { + if x != nil { + return x.OpenInNewTab + } + return false +} + +func (x *DisplayOutput) GetShowInNotification() bool { + if x != nil { + return x.ShowInNotification + } + return false +} + +var File_bpmetadata_ui_proto protoreflect.FileDescriptor + +var file_bpmetadata_ui_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, + 0x02, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x6d, + 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfb, 0x03, + 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, + 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, + 0x6c, 0x74, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, + 0x74, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, + 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, + 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, + 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x11, 0x78, 0x5f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x78, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x0e, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, + 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, + 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, + 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, + 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, + 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, + 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, + 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_ui_proto_rawDescOnce sync.Once + file_bpmetadata_ui_proto_rawDescData = file_bpmetadata_ui_proto_rawDesc +) + +func file_bpmetadata_ui_proto_rawDescGZIP() []byte { + file_bpmetadata_ui_proto_rawDescOnce.Do(func() { + file_bpmetadata_ui_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_ui_proto_rawDescData) + }) + return file_bpmetadata_ui_proto_rawDescData +} + +var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_bpmetadata_ui_proto_goTypes = []interface{}{ + (*BlueprintUIInput)(nil), // 0: google.cloud.config.bpmetadata.BlueprintUIInput + (*DisplayVariable)(nil), // 1: google.cloud.config.bpmetadata.DisplayVariable + (*DisplaySection)(nil), // 2: google.cloud.config.bpmetadata.DisplaySection + (*BlueprintUIOutput)(nil), // 3: google.cloud.config.bpmetadata.BlueprintUIOutput + (*UIActionItem)(nil), // 4: google.cloud.config.bpmetadata.UIActionItem + (*DisplayOutput)(nil), // 5: google.cloud.config.bpmetadata.DisplayOutput + nil, // 6: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + nil, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + (*GooglePropertyExtension)(nil), // 8: google.cloud.config.bpmetadata.GooglePropertyExtension +} +var file_bpmetadata_ui_proto_depIdxs = []int32{ + 6, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + 2, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection + 8, // 2: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension + 4, // 3: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem + 7, // 4: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + 1, // 5: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable + 5, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_bpmetadata_ui_proto_init() } +func file_bpmetadata_ui_proto_init() { + if File_bpmetadata_ui_proto != nil { + return + } + file_bpmetadata_ui_ext_proto_init() + if !protoimpl.UnsafeEnabled { + file_bpmetadata_ui_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUIInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayVariable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplaySection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintUIOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UIActionItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_ui_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_ui_proto_goTypes, + DependencyIndexes: file_bpmetadata_ui_proto_depIdxs, + MessageInfos: file_bpmetadata_ui_proto_msgTypes, + }.Build() + File_bpmetadata_ui_proto = out.File + file_bpmetadata_ui_proto_rawDesc = nil + file_bpmetadata_ui_proto_goTypes = nil + file_bpmetadata_ui_proto_depIdxs = nil +} diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go new file mode 100644 index 00000000000..0796148f2ab --- /dev/null +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -0,0 +1,1567 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v4.23.4 +// source: bpmetadata_ui_ext.proto + +package bpmetadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ExtensionType specifies the type of extension. +type ExtensionType int32 + +const ( + // EXTENSIONTYPE_UNDEFINED indicates that the extension type is undefined. + ExtensionType_ET_UNDEFINED ExtensionType = 0 + // General formats. + ExtensionType_ET_EMAIL_ADDRESS ExtensionType = 1 + ExtensionType_ET_MULTI_LINE_STRING ExtensionType = 2 + // GCE related. + ExtensionType_ET_GCE_DISK_IMAGE ExtensionType = 3 + ExtensionType_ET_GCE_DISK_TYPE ExtensionType = 4 + ExtensionType_ET_GCE_DISK_SIZE ExtensionType = 5 + ExtensionType_ET_GCE_MACHINE_TYPE ExtensionType = 6 + ExtensionType_ET_GCE_NETWORK ExtensionType = 7 + ExtensionType_ET_GCE_ZONE ExtensionType = 8 + ExtensionType_ET_GCE_SUBNETWORK ExtensionType = 9 + ExtensionType_ET_GCE_REGION ExtensionType = 10 + ExtensionType_ET_GCE_GPU_TYPE ExtensionType = 11 + ExtensionType_ET_GCE_GPU_COUNT ExtensionType = 12 + ExtensionType_ET_GCE_EXTERNAL_IP ExtensionType = 13 + ExtensionType_ET_GCE_IP_FORWARDING ExtensionType = 14 + ExtensionType_ET_GCE_FIREWALL ExtensionType = 15 + ExtensionType_ET_GCE_FIREWALL_RANGE ExtensionType = 16 + ExtensionType_ET_GCE_GENERIC_RESOURCE ExtensionType = 17 + // GCS related. + ExtensionType_ET_GCS_BUCKET ExtensionType = 18 + // IAM related. + ExtensionType_ET_IAM_SERVICE_ACCOUNT ExtensionType = 19 +) + +// Enum value maps for ExtensionType. +var ( + ExtensionType_name = map[int32]string{ + 0: "ET_UNDEFINED", + 1: "ET_EMAIL_ADDRESS", + 2: "ET_MULTI_LINE_STRING", + 3: "ET_GCE_DISK_IMAGE", + 4: "ET_GCE_DISK_TYPE", + 5: "ET_GCE_DISK_SIZE", + 6: "ET_GCE_MACHINE_TYPE", + 7: "ET_GCE_NETWORK", + 8: "ET_GCE_ZONE", + 9: "ET_GCE_SUBNETWORK", + 10: "ET_GCE_REGION", + 11: "ET_GCE_GPU_TYPE", + 12: "ET_GCE_GPU_COUNT", + 13: "ET_GCE_EXTERNAL_IP", + 14: "ET_GCE_IP_FORWARDING", + 15: "ET_GCE_FIREWALL", + 16: "ET_GCE_FIREWALL_RANGE", + 17: "ET_GCE_GENERIC_RESOURCE", + 18: "ET_GCS_BUCKET", + 19: "ET_IAM_SERVICE_ACCOUNT", + } + ExtensionType_value = map[string]int32{ + "ET_UNDEFINED": 0, + "ET_EMAIL_ADDRESS": 1, + "ET_MULTI_LINE_STRING": 2, + "ET_GCE_DISK_IMAGE": 3, + "ET_GCE_DISK_TYPE": 4, + "ET_GCE_DISK_SIZE": 5, + "ET_GCE_MACHINE_TYPE": 6, + "ET_GCE_NETWORK": 7, + "ET_GCE_ZONE": 8, + "ET_GCE_SUBNETWORK": 9, + "ET_GCE_REGION": 10, + "ET_GCE_GPU_TYPE": 11, + "ET_GCE_GPU_COUNT": 12, + "ET_GCE_EXTERNAL_IP": 13, + "ET_GCE_IP_FORWARDING": 14, + "ET_GCE_FIREWALL": 15, + "ET_GCE_FIREWALL_RANGE": 16, + "ET_GCE_GENERIC_RESOURCE": 17, + "ET_GCS_BUCKET": 18, + "ET_IAM_SERVICE_ACCOUNT": 19, + } +) + +func (x ExtensionType) Enum() *ExtensionType { + p := new(ExtensionType) + *p = x + return p +} + +func (x ExtensionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExtensionType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_ext_proto_enumTypes[0].Descriptor() +} + +func (ExtensionType) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_ext_proto_enumTypes[0] +} + +func (x ExtensionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExtensionType.Descriptor instead. +func (ExtensionType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{0} +} + +// ExternalIPType specifies the type of external IP address. +type ExternalIPType int32 + +const ( + ExternalIPType_IP_UNSPECIFIED ExternalIPType = 0 + // EPHEMERAL indicates that the external IP address is ephemeral. + ExternalIPType_IP_EPHEMERAL ExternalIPType = 1 + // STATIC indicates that the external IP address is static. + ExternalIPType_IP_STATIC ExternalIPType = 2 + // NONE indicates that an external IP is not assigned. + ExternalIPType_IP_NONE ExternalIPType = 3 +) + +// Enum value maps for ExternalIPType. +var ( + ExternalIPType_name = map[int32]string{ + 0: "IP_UNSPECIFIED", + 1: "IP_EPHEMERAL", + 2: "IP_STATIC", + 3: "IP_NONE", + } + ExternalIPType_value = map[string]int32{ + "IP_UNSPECIFIED": 0, + "IP_EPHEMERAL": 1, + "IP_STATIC": 2, + "IP_NONE": 3, + } +) + +func (x ExternalIPType) Enum() *ExternalIPType { + p := new(ExternalIPType) + *p = x + return p +} + +func (x ExternalIPType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExternalIPType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_ext_proto_enumTypes[1].Descriptor() +} + +func (ExternalIPType) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_ext_proto_enumTypes[1] +} + +func (x ExternalIPType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExternalIPType.Descriptor instead. +func (ExternalIPType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{1} +} + +// An extension for variables defined as part of DisplayVariable. The +// extension defines Google-specifc metadata necessary for choosing an +// appropriate input widget or adding restrictions to GCP-specific resources. +type GooglePropertyExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Type specifies the type of extension. + // Gen: manually-authored + Type ExtensionType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.ExtensionType" json:"type" yaml:"type"` // @gotags: json:"type" yaml:"type" + // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to + // determine the set of allowable values. This field references another + // property from the schema, which must have type GCE_ZONE. + // Gen: manually-authored + ZoneProperty string `protobuf:"bytes,2,opt,name=zone_property,json=zoneProperty,proto3" json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"` // @gotags: json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty" + // Property-specific extensions. + // Gen: manually-authored (all property extensions and their child properties) + GceMachineType *GCEMachineTypeExtension `protobuf:"bytes,3,opt,name=gce_machine_type,json=gceMachineType,proto3" json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty"` // @gotags: json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty" + GceDiskSize *GCEDiskSizeExtension `protobuf:"bytes,4,opt,name=gce_disk_size,json=gceDiskSize,proto3" json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty"` // @gotags: json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty" + GceSubnetwork *GCESubnetworkExtension `protobuf:"bytes,5,opt,name=gce_subnetwork,json=gceSubnetwork,proto3" json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty"` // @gotags: json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty" + GceResource *GCEGenericResourceExtension `protobuf:"bytes,6,opt,name=gce_resource,json=gceResource,proto3" json:"gceResource,omitempty" yaml:"gceResource,omitempty"` // @gotags: json:"gceResource,omitempty" yaml:"gceResource,omitempty" + GceGpuType *GCEGPUTypeExtension `protobuf:"bytes,7,opt,name=gce_gpu_type,json=gceGpuType,proto3" json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty"` // @gotags: json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty" + GceGpuCount *GCEGPUCountExtension `protobuf:"bytes,8,opt,name=gce_gpu_count,json=gceGpuCount,proto3" json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty"` // @gotags: json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty" + GceNetwork *GCENetworkExtension `protobuf:"bytes,9,opt,name=gce_network,json=gceNetwork,proto3" json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty"` // @gotags: json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty" + GceExternalIp *GCEExternalIPExtension `protobuf:"bytes,10,opt,name=gce_external_ip,json=gceExternalIp,proto3" json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty"` // @gotags: json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty" + GceIpForwarding *GCEIPForwardingExtension `protobuf:"bytes,11,opt,name=gce_ip_forwarding,json=gceIpForwarding,proto3" json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty"` // @gotags: json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty" + GceFirewall *GCEFirewallExtension `protobuf:"bytes,12,opt,name=gce_firewall,json=gceFirewall,proto3" json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty"` // @gotags: json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty" + GceFirewallRange *GCEFirewallRangeExtension `protobuf:"bytes,13,opt,name=gce_firewall_range,json=gceFirewallRange,proto3" json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty"` // @gotags: json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty" + GceZone *GCELocationExtension `protobuf:"bytes,14,opt,name=gce_zone,json=gceZone,proto3" json:"gceZone,omitempty" yaml:"gceZone,omitempty"` // @gotags: json:"gceZone,omitempty" yaml:"gceZone,omitempty" + GceRegion *GCELocationExtension `protobuf:"bytes,15,opt,name=gce_region,json=gceRegion,proto3" json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"` // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" + IamServiceAccount *IAMServiceAccountExtension `protobuf:"bytes,16,opt,name=iam_service_account,json=iamServiceAccount,proto3" json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"` // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" +} + +func (x *GooglePropertyExtension) Reset() { + *x = GooglePropertyExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GooglePropertyExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GooglePropertyExtension) ProtoMessage() {} + +func (x *GooglePropertyExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GooglePropertyExtension.ProtoReflect.Descriptor instead. +func (*GooglePropertyExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{0} +} + +func (x *GooglePropertyExtension) GetType() ExtensionType { + if x != nil { + return x.Type + } + return ExtensionType_ET_UNDEFINED +} + +func (x *GooglePropertyExtension) GetZoneProperty() string { + if x != nil { + return x.ZoneProperty + } + return "" +} + +func (x *GooglePropertyExtension) GetGceMachineType() *GCEMachineTypeExtension { + if x != nil { + return x.GceMachineType + } + return nil +} + +func (x *GooglePropertyExtension) GetGceDiskSize() *GCEDiskSizeExtension { + if x != nil { + return x.GceDiskSize + } + return nil +} + +func (x *GooglePropertyExtension) GetGceSubnetwork() *GCESubnetworkExtension { + if x != nil { + return x.GceSubnetwork + } + return nil +} + +func (x *GooglePropertyExtension) GetGceResource() *GCEGenericResourceExtension { + if x != nil { + return x.GceResource + } + return nil +} + +func (x *GooglePropertyExtension) GetGceGpuType() *GCEGPUTypeExtension { + if x != nil { + return x.GceGpuType + } + return nil +} + +func (x *GooglePropertyExtension) GetGceGpuCount() *GCEGPUCountExtension { + if x != nil { + return x.GceGpuCount + } + return nil +} + +func (x *GooglePropertyExtension) GetGceNetwork() *GCENetworkExtension { + if x != nil { + return x.GceNetwork + } + return nil +} + +func (x *GooglePropertyExtension) GetGceExternalIp() *GCEExternalIPExtension { + if x != nil { + return x.GceExternalIp + } + return nil +} + +func (x *GooglePropertyExtension) GetGceIpForwarding() *GCEIPForwardingExtension { + if x != nil { + return x.GceIpForwarding + } + return nil +} + +func (x *GooglePropertyExtension) GetGceFirewall() *GCEFirewallExtension { + if x != nil { + return x.GceFirewall + } + return nil +} + +func (x *GooglePropertyExtension) GetGceFirewallRange() *GCEFirewallRangeExtension { + if x != nil { + return x.GceFirewallRange + } + return nil +} + +func (x *GooglePropertyExtension) GetGceZone() *GCELocationExtension { + if x != nil { + return x.GceZone + } + return nil +} + +func (x *GooglePropertyExtension) GetGceRegion() *GCELocationExtension { + if x != nil { + return x.GceRegion + } + return nil +} + +func (x *GooglePropertyExtension) GetIamServiceAccount() *IAMServiceAccountExtension { + if x != nil { + return x.IamServiceAccount + } + return nil +} + +// GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. +type GCELocationExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // AllowlistedZones is a list of zones that are allowed for the resource. + AllowlistedZones []string `protobuf:"bytes,1,rep,name=allowlisted_zones,json=allowlistedZones,proto3" json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty"` // @gotags: json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty" + // AllowlistedRegions is a list of regions that are allowed for the resource. + AllowlistedRegions []string `protobuf:"bytes,2,rep,name=allowlisted_regions,json=allowlistedRegions,proto3" json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty"` // @gotags: json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty" +} + +func (x *GCELocationExtension) Reset() { + *x = GCELocationExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCELocationExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCELocationExtension) ProtoMessage() {} + +func (x *GCELocationExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCELocationExtension.ProtoReflect.Descriptor instead. +func (*GCELocationExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{1} +} + +func (x *GCELocationExtension) GetAllowlistedZones() []string { + if x != nil { + return x.AllowlistedZones + } + return nil +} + +func (x *GCELocationExtension) GetAllowlistedRegions() []string { + if x != nil { + return x.AllowlistedRegions + } + return nil +} + +// GCEMachineTypeExtension specifies a machine type extension for a GCE resource. +type GCEMachineTypeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Minimum cpu. Used to filter the list of selectable machine types. + MinCpu int32 `protobuf:"varint,1,opt,name=min_cpu,json=minCpu,proto3" json:"minCpu,omitempty" yaml:"minCpu,omitempty"` // @gotags: json:"minCpu,omitempty" yaml:"minCpu,omitempty" + // Minimum ram. Used to filter the list of selectable machine types. + MinRamGb float32 `protobuf:"fixed32,2,opt,name=min_ram_gb,json=minRamGb,proto3" json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"` // @gotags: json:"minRamGb,omitempty" yaml:"minRamGb,omitempty" + // If true, custom machine types will not be selectable. + // More info: + // https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type + DisallowCustomMachineTypes bool `protobuf:"varint,3,opt,name=disallow_custom_machine_types,json=disallowCustomMachineTypes,proto3" json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty"` // @gotags: json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty" +} + +func (x *GCEMachineTypeExtension) Reset() { + *x = GCEMachineTypeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEMachineTypeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEMachineTypeExtension) ProtoMessage() {} + +func (x *GCEMachineTypeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEMachineTypeExtension.ProtoReflect.Descriptor instead. +func (*GCEMachineTypeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{2} +} + +func (x *GCEMachineTypeExtension) GetMinCpu() int32 { + if x != nil { + return x.MinCpu + } + return 0 +} + +func (x *GCEMachineTypeExtension) GetMinRamGb() float32 { + if x != nil { + return x.MinRamGb + } + return 0 +} + +func (x *GCEMachineTypeExtension) GetDisallowCustomMachineTypes() bool { + if x != nil { + return x.DisallowCustomMachineTypes + } + return false +} + +// GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. +type GCEGPUTypeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // MachineType is the name of the machine type that the GPU is attached to. + MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType,proto3" json:"machineType" yaml:"machineType"` // @gotags: json:"machineType" yaml:"machineType" + // GPUType is the type(s) of GPU that is attached to the machine. + GpuType []string `protobuf:"bytes,2,rep,name=gpu_type,json=gpuType,proto3" json:"gpuType,omitempty" yaml:"gpuType,omitempty"` // @gotags: json:"gpuType,omitempty" yaml:"gpuType,omitempty" +} + +func (x *GCEGPUTypeExtension) Reset() { + *x = GCEGPUTypeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGPUTypeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGPUTypeExtension) ProtoMessage() {} + +func (x *GCEGPUTypeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGPUTypeExtension.ProtoReflect.Descriptor instead. +func (*GCEGPUTypeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{3} +} + +func (x *GCEGPUTypeExtension) GetMachineType() string { + if x != nil { + return x.MachineType + } + return "" +} + +func (x *GCEGPUTypeExtension) GetGpuType() []string { + if x != nil { + return x.GpuType + } + return nil +} + +// GCEGPUCountExtension specifies the number of GPUs that should be attached to a machine. +type GCEGPUCountExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This field references another variable from the schema, + // which must have type GCEMachineType. + MachineTypeVariable string `protobuf:"bytes,1,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" +} + +func (x *GCEGPUCountExtension) Reset() { + *x = GCEGPUCountExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGPUCountExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGPUCountExtension) ProtoMessage() {} + +func (x *GCEGPUCountExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGPUCountExtension.ProtoReflect.Descriptor instead. +func (*GCEGPUCountExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{4} +} + +func (x *GCEGPUCountExtension) GetMachineTypeVariable() string { + if x != nil { + return x.MachineTypeVariable + } + return "" +} + +// GCEDiskSizeExtension specifies the size of a disk for a GCE resource. +type GCEDiskSizeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The allowable range of disk sizes depends on the disk type. This field + // references another variable from the schema, which must have type GCEDiskType. + DiskTypeVariable string `protobuf:"bytes,1,opt,name=disk_type_variable,json=diskTypeVariable,proto3" json:"diskTypeVariable" yaml:"diskTypeVariable"` // @gotags: json:"diskTypeVariable" yaml:"diskTypeVariable" +} + +func (x *GCEDiskSizeExtension) Reset() { + *x = GCEDiskSizeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEDiskSizeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEDiskSizeExtension) ProtoMessage() {} + +func (x *GCEDiskSizeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEDiskSizeExtension.ProtoReflect.Descriptor instead. +func (*GCEDiskSizeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{5} +} + +func (x *GCEDiskSizeExtension) GetDiskTypeVariable() string { + if x != nil { + return x.DiskTypeVariable + } + return "" +} + +// GCENetworkExtension specifies a network extension for a GCE resource. +type GCENetworkExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // AllowSharedVpcs indicates this solution can receive + // shared VPC selflinks (fully qualified compute links). + AllowSharedVpcs bool `protobuf:"varint,1,opt,name=allow_shared_vpcs,json=allowSharedVpcs,proto3" json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty"` // @gotags: json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty" + // Used to indicate to which machine type this network interface will be + // attached to. + MachineTypeVariable string `protobuf:"bytes,2,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" + // Label that will be in front of each Network Interface. + Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" yaml:"labels,omitempty"` // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" +} + +func (x *GCENetworkExtension) Reset() { + *x = GCENetworkExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCENetworkExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCENetworkExtension) ProtoMessage() {} + +func (x *GCENetworkExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCENetworkExtension.ProtoReflect.Descriptor instead. +func (*GCENetworkExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{6} +} + +func (x *GCENetworkExtension) GetAllowSharedVpcs() bool { + if x != nil { + return x.AllowSharedVpcs + } + return false +} + +func (x *GCENetworkExtension) GetMachineTypeVariable() string { + if x != nil { + return x.MachineTypeVariable + } + return "" +} + +func (x *GCENetworkExtension) GetLabels() []string { + if x != nil { + return x.Labels + } + return nil +} + +type GCEExternalIPExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is the name of the network variable that the external IP address belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" + // Type specifies the type of external IP address. Defaults to EPHEMERAL if not specified. + Type ExternalIPType `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.ExternalIPType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" + // Flag to denote if an external IP should be configurable. + NotConfigurable bool `protobuf:"varint,3,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" + // Flag to denote if static IPs are allowed for the external IP. + AllowStaticIps bool `protobuf:"varint,4,opt,name=allow_static_ips,json=allowStaticIps,proto3" json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty"` // @gotags: json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty" +} + +func (x *GCEExternalIPExtension) Reset() { + *x = GCEExternalIPExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEExternalIPExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEExternalIPExtension) ProtoMessage() {} + +func (x *GCEExternalIPExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEExternalIPExtension.ProtoReflect.Descriptor instead. +func (*GCEExternalIPExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{7} +} + +func (x *GCEExternalIPExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +func (x *GCEExternalIPExtension) GetType() ExternalIPType { + if x != nil { + return x.Type + } + return ExternalIPType_IP_UNSPECIFIED +} + +func (x *GCEExternalIPExtension) GetNotConfigurable() bool { + if x != nil { + return x.NotConfigurable + } + return false +} + +func (x *GCEExternalIPExtension) GetAllowStaticIps() bool { + if x != nil { + return x.AllowStaticIps + } + return false +} + +// GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. +type GCEIPForwardingExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is the name of the network variable that the IP forwarding belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" + // NotConfigurable specifies whether the IP forwarding is configurable. Defaults to false if not specified. + NotConfigurable bool `protobuf:"varint,2,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" +} + +func (x *GCEIPForwardingExtension) Reset() { + *x = GCEIPForwardingExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEIPForwardingExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEIPForwardingExtension) ProtoMessage() {} + +func (x *GCEIPForwardingExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEIPForwardingExtension.ProtoReflect.Descriptor instead. +func (*GCEIPForwardingExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{8} +} + +func (x *GCEIPForwardingExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +func (x *GCEIPForwardingExtension) GetNotConfigurable() bool { + if x != nil { + return x.NotConfigurable + } + return false +} + +type GCEFirewallExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // NetworkVariable is used to indicate the network variable in the schema + // this external IP belongs to. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" +} + +func (x *GCEFirewallExtension) Reset() { + *x = GCEFirewallExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEFirewallExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEFirewallExtension) ProtoMessage() {} + +func (x *GCEFirewallExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEFirewallExtension.ProtoReflect.Descriptor instead. +func (*GCEFirewallExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{9} +} + +func (x *GCEFirewallExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +type GCEFirewallRangeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // FirewallVariable is used to indicate the firewall variable with the type + // GCEFirewall in the schema to which this firewall range belongs to. + FirewallVariable string `protobuf:"bytes,1,opt,name=firewall_variable,json=firewallVariable,proto3" json:"firewallVariable" yaml:"firewallVariable"` // @gotags: json:"firewallVariable" yaml:"firewallVariable" +} + +func (x *GCEFirewallRangeExtension) Reset() { + *x = GCEFirewallRangeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEFirewallRangeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEFirewallRangeExtension) ProtoMessage() {} + +func (x *GCEFirewallRangeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEFirewallRangeExtension.ProtoReflect.Descriptor instead. +func (*GCEFirewallRangeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{10} +} + +func (x *GCEFirewallRangeExtension) GetFirewallVariable() string { + if x != nil { + return x.FirewallVariable + } + return "" +} + +type GCESubnetworkExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Subnetwork variable requires a network context in order to determine the + // set of available subnetworks. This field references another + // variable from the schema, which must have type GCENetwork. + NetworkVariable string `protobuf:"bytes,1,opt,name=network_variable,json=networkVariable,proto3" json:"networkVariable" yaml:"networkVariable"` // @gotags: json:"networkVariable" yaml:"networkVariable" +} + +func (x *GCESubnetworkExtension) Reset() { + *x = GCESubnetworkExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCESubnetworkExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCESubnetworkExtension) ProtoMessage() {} + +func (x *GCESubnetworkExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCESubnetworkExtension.ProtoReflect.Descriptor instead. +func (*GCESubnetworkExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{11} +} + +func (x *GCESubnetworkExtension) GetNetworkVariable() string { + if x != nil { + return x.NetworkVariable + } + return "" +} + +type GCEGenericResourceExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // GCE resource type to be fetched. This field references another + // property from the schema, which must have type GCEGenericResource. + ResourceVariable string `protobuf:"bytes,1,opt,name=resource_variable,json=resourceVariable,proto3" json:"resourceVariable" yaml:"resourceVariable"` // @gotags: json:"resourceVariable" yaml:"resourceVariable" +} + +func (x *GCEGenericResourceExtension) Reset() { + *x = GCEGenericResourceExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEGenericResourceExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEGenericResourceExtension) ProtoMessage() {} + +func (x *GCEGenericResourceExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEGenericResourceExtension.ProtoReflect.Descriptor instead. +func (*GCEGenericResourceExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{12} +} + +func (x *GCEGenericResourceExtension) GetResourceVariable() string { + if x != nil { + return x.ResourceVariable + } + return "" +} + +type IAMServiceAccountExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of IAM roles that to grant to a new SA, or the roles to filter + // existing SAs with. + Roles []string `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles" yaml:"roles"` // @gotags: json:"roles" yaml:"roles" +} + +func (x *IAMServiceAccountExtension) Reset() { + *x = IAMServiceAccountExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IAMServiceAccountExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IAMServiceAccountExtension) ProtoMessage() {} + +func (x *IAMServiceAccountExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IAMServiceAccountExtension.ProtoReflect.Descriptor instead. +func (*IAMServiceAccountExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{13} +} + +func (x *IAMServiceAccountExtension) GetRoles() []string { + if x != nil { + return x.Roles + } + return nil +} + +var File_bpmetadata_ui_ext_proto protoreflect.FileDescriptor + +var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x5f, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9e, 0x0b, 0x0a, 0x17, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x7a, 0x6f, 0x6e, 0x65, + 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x7a, 0x6f, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x61, 0x0a, + 0x10, 0x67, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x0e, 0x67, 0x63, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, + 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, + 0x63, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x5d, 0x0a, 0x0e, 0x67, 0x63, + 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x67, 0x63, 0x65, 0x53, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5e, 0x0a, 0x0c, 0x67, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x67, 0x63, 0x65, + 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x63, 0x65, 0x47, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, + 0x63, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0b, 0x67, 0x63, + 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x63, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x12, 0x5e, 0x0a, 0x0f, 0x67, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x0d, 0x67, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, + 0x12, 0x64, 0x0a, 0x11, 0x67, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, + 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x67, 0x63, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x0c, 0x67, 0x63, 0x65, 0x5f, 0x66, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, + 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x12, + 0x67, 0x0a, 0x12, 0x67, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, + 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x67, 0x63, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4f, 0x0a, 0x08, 0x67, 0x63, 0x65, 0x5f, + 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x07, 0x67, 0x63, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x53, 0x0a, 0x0a, 0x67, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, + 0x43, 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x67, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x6a, + 0x0a, 0x13, 0x69, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x41, 0x4d, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x69, 0x61, 0x6d, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x43, + 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, + 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x93, 0x01, 0x0a, 0x17, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, + 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, + 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, + 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x52, 0x61, + 0x6d, 0x47, 0x62, 0x12, 0x41, 0x0a, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, + 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, + 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x67, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, + 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, + 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x8d, 0x01, + 0x0a, 0x13, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x56, 0x70, 0x63, + 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0xdc, 0x01, + 0x0a, 0x16, 0x47, 0x43, 0x45, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x70, 0x73, 0x22, 0x70, 0x0a, 0x18, + 0x47, 0x43, 0x45, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, + 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, + 0x0a, 0x14, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x48, 0x0a, 0x19, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, + 0x0a, 0x11, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x43, 0x0a, 0x16, 0x47, + 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x1a, + 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x2a, 0xd5, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, + 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, + 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, + 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, + 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, + 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x54, 0x5f, 0x47, 0x43, + 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, + 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, + 0x52, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x5a, + 0x4f, 0x4e, 0x45, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, + 0x53, 0x55, 0x42, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, + 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, + 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, + 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x49, 0x50, + 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, + 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x10, + 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, + 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, + 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, + 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, + 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, + 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x2a, 0x52, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, + 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_bpmetadata_ui_ext_proto_rawDescOnce sync.Once + file_bpmetadata_ui_ext_proto_rawDescData = file_bpmetadata_ui_ext_proto_rawDesc +) + +func file_bpmetadata_ui_ext_proto_rawDescGZIP() []byte { + file_bpmetadata_ui_ext_proto_rawDescOnce.Do(func() { + file_bpmetadata_ui_ext_proto_rawDescData = protoimpl.X.CompressGZIP(file_bpmetadata_ui_ext_proto_rawDescData) + }) + return file_bpmetadata_ui_ext_proto_rawDescData +} + +var file_bpmetadata_ui_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_bpmetadata_ui_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_bpmetadata_ui_ext_proto_goTypes = []interface{}{ + (ExtensionType)(0), // 0: google.cloud.config.bpmetadata.ExtensionType + (ExternalIPType)(0), // 1: google.cloud.config.bpmetadata.ExternalIPType + (*GooglePropertyExtension)(nil), // 2: google.cloud.config.bpmetadata.GooglePropertyExtension + (*GCELocationExtension)(nil), // 3: google.cloud.config.bpmetadata.GCELocationExtension + (*GCEMachineTypeExtension)(nil), // 4: google.cloud.config.bpmetadata.GCEMachineTypeExtension + (*GCEGPUTypeExtension)(nil), // 5: google.cloud.config.bpmetadata.GCEGPUTypeExtension + (*GCEGPUCountExtension)(nil), // 6: google.cloud.config.bpmetadata.GCEGPUCountExtension + (*GCEDiskSizeExtension)(nil), // 7: google.cloud.config.bpmetadata.GCEDiskSizeExtension + (*GCENetworkExtension)(nil), // 8: google.cloud.config.bpmetadata.GCENetworkExtension + (*GCEExternalIPExtension)(nil), // 9: google.cloud.config.bpmetadata.GCEExternalIPExtension + (*GCEIPForwardingExtension)(nil), // 10: google.cloud.config.bpmetadata.GCEIPForwardingExtension + (*GCEFirewallExtension)(nil), // 11: google.cloud.config.bpmetadata.GCEFirewallExtension + (*GCEFirewallRangeExtension)(nil), // 12: google.cloud.config.bpmetadata.GCEFirewallRangeExtension + (*GCESubnetworkExtension)(nil), // 13: google.cloud.config.bpmetadata.GCESubnetworkExtension + (*GCEGenericResourceExtension)(nil), // 14: google.cloud.config.bpmetadata.GCEGenericResourceExtension + (*IAMServiceAccountExtension)(nil), // 15: google.cloud.config.bpmetadata.IAMServiceAccountExtension +} +var file_bpmetadata_ui_ext_proto_depIdxs = []int32{ + 0, // 0: google.cloud.config.bpmetadata.GooglePropertyExtension.type:type_name -> google.cloud.config.bpmetadata.ExtensionType + 4, // 1: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_machine_type:type_name -> google.cloud.config.bpmetadata.GCEMachineTypeExtension + 7, // 2: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_disk_size:type_name -> google.cloud.config.bpmetadata.GCEDiskSizeExtension + 13, // 3: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_subnetwork:type_name -> google.cloud.config.bpmetadata.GCESubnetworkExtension + 14, // 4: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_resource:type_name -> google.cloud.config.bpmetadata.GCEGenericResourceExtension + 5, // 5: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_type:type_name -> google.cloud.config.bpmetadata.GCEGPUTypeExtension + 6, // 6: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_count:type_name -> google.cloud.config.bpmetadata.GCEGPUCountExtension + 8, // 7: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_network:type_name -> google.cloud.config.bpmetadata.GCENetworkExtension + 9, // 8: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_external_ip:type_name -> google.cloud.config.bpmetadata.GCEExternalIPExtension + 10, // 9: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_ip_forwarding:type_name -> google.cloud.config.bpmetadata.GCEIPForwardingExtension + 11, // 10: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall:type_name -> google.cloud.config.bpmetadata.GCEFirewallExtension + 12, // 11: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall_range:type_name -> google.cloud.config.bpmetadata.GCEFirewallRangeExtension + 3, // 12: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_zone:type_name -> google.cloud.config.bpmetadata.GCELocationExtension + 3, // 13: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_region:type_name -> google.cloud.config.bpmetadata.GCELocationExtension + 15, // 14: google.cloud.config.bpmetadata.GooglePropertyExtension.iam_service_account:type_name -> google.cloud.config.bpmetadata.IAMServiceAccountExtension + 1, // 15: google.cloud.config.bpmetadata.GCEExternalIPExtension.type:type_name -> google.cloud.config.bpmetadata.ExternalIPType + 16, // [16:16] is the sub-list for method output_type + 16, // [16:16] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name +} + +func init() { file_bpmetadata_ui_ext_proto_init() } +func file_bpmetadata_ui_ext_proto_init() { + if File_bpmetadata_ui_ext_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_bpmetadata_ui_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GooglePropertyExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCELocationExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEMachineTypeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGPUTypeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGPUCountExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEDiskSizeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCENetworkExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEExternalIPExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEIPForwardingExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEFirewallExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEFirewallRangeExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCESubnetworkExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGenericResourceExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IAMServiceAccountExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_bpmetadata_ui_ext_proto_rawDesc, + NumEnums: 2, + NumMessages: 14, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_bpmetadata_ui_ext_proto_goTypes, + DependencyIndexes: file_bpmetadata_ui_ext_proto_depIdxs, + EnumInfos: file_bpmetadata_ui_ext_proto_enumTypes, + MessageInfos: file_bpmetadata_ui_ext_proto_msgTypes, + }.Build() + File_bpmetadata_ui_ext_proto = out.File + file_bpmetadata_ui_ext_proto_rawDesc = nil + file_bpmetadata_ui_ext_proto_goTypes = nil + file_bpmetadata_ui_ext_proto_depIdxs = nil +} diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 329be0b769d..ab43f0571d7 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -8,9 +8,11 @@ import ( "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" + goyaml "github.com/goccy/go-yaml" "github.com/spf13/cobra" "github.com/spf13/viper" - "sigs.k8s.io/kustomize/kyaml/yaml" + "google.golang.org/protobuf/encoding/protojson" + "sigs.k8s.io/yaml" ) var mdFlags struct { @@ -84,7 +86,7 @@ func generate(cmd *cobra.Command, args []string) error { // throw an error and exit if root level readme.md doesn't exist if err != nil { - return fmt.Errorf("top-level module does not have a readme. Details: %w\n", err) + return fmt.Errorf("top-level module does not have a readme: %w", err) } allBpPaths = append(allBpPaths, currBpPath) @@ -202,19 +204,22 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* } // start creating blueprint metadata - bpMetadataObj.ResourceMeta = yaml.ResourceMeta{ - TypeMeta: yaml.TypeMeta{ - APIVersion: metadataApiVersion, - Kind: metadataKind, - }, - ObjectMeta: yaml.ObjectMeta{ - NameMeta: yaml.NameMeta{ - Name: repoDetails.ModuleName, - Namespace: "", - }, - Labels: bpMetadataObj.ResourceMeta.ObjectMeta.Labels, + bpMetadataObj.ApiVersion = metadataApiVersion + bpMetadataObj.Kind = metadataKind + + if bpMetadataObj.Metadata == nil { + bpMetadataObj.Metadata = &ResourceTypeMeta{ + Name: repoDetails.ModuleName, Annotations: map[string]string{localConfigAnnotation: "true"}, - }, + } + } + + if bpMetadataObj.Spec == nil { + bpMetadataObj.Spec = &BlueprintMetadataSpec{} + } + + if bpMetadataObj.Spec.Info == nil { + bpMetadataObj.Spec.Info = &BlueprintInfo{} } // create blueprint info @@ -223,6 +228,10 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error creating blueprint info: %w", err) } + if bpMetadataObj.Spec.Interfaces == nil { + bpMetadataObj.Spec.Interfaces = &BlueprintInterface{} + } + // create blueprint interfaces i.e. variables & outputs err = bpMetadataObj.Spec.Interfaces.create(bpPath) if err != nil { @@ -236,7 +245,11 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* if err != nil { Log.Info("skipping blueprint requirements since roles and/or services configurations were not found as per https://tinyurl.com/tf-iam and https://tinyurl.com/tf-services") } else { - bpMetadataObj.Spec.Requirements = *requirements + bpMetadataObj.Spec.Requirements = requirements + } + + if bpMetadataObj.Spec.Content == nil { + bpMetadataObj.Spec.Content = &BlueprintContent{} } // create blueprint content i.e. documentation, icons, etc. @@ -246,23 +259,32 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMetadata) (*BlueprintMetadata, error) { // start creating blueprint metadata - bpDisp.ResourceMeta = yaml.ResourceMeta{ - TypeMeta: yaml.TypeMeta{ - APIVersion: bpCore.ResourceMeta.APIVersion, - Kind: bpCore.ResourceMeta.Kind, - }, - ObjectMeta: yaml.ObjectMeta{ - NameMeta: yaml.NameMeta{ - Name: bpCore.ResourceMeta.ObjectMeta.Name + "-display", - }, - Labels: bpDisp.ResourceMeta.ObjectMeta.Labels, + bpDisp.ApiVersion = bpCore.ApiVersion + bpDisp.Kind = bpCore.Kind + + if bpDisp.Metadata == nil { + bpDisp.Metadata = &ResourceTypeMeta{ + Name: bpCore.Metadata.Name + "-display", Annotations: map[string]string{localConfigAnnotation: "true"}, - }, + } + } + + if bpDisp.Spec == nil { + bpDisp.Spec = &BlueprintMetadataSpec{} + } + + if bpDisp.Spec.Info == nil { + bpDisp.Spec.Info = &BlueprintInfo{} + } + + if bpDisp.Spec.Ui == nil { + bpDisp.Spec.Ui = &BlueprintUI{} + bpDisp.Spec.Ui.Input = &BlueprintUIInput{} } bpDisp.Spec.Info.Title = bpCore.Spec.Info.Title bpDisp.Spec.Info.Source = bpCore.Spec.Info.Source - buildUIInputFromVariables(bpCore.Spec.Interfaces.Variables, &bpDisp.Spec.UI.Input) + buildUIInputFromVariables(bpCore.Spec.Interfaces.Variables, bpDisp.Spec.Ui.Input) return bpDisp, nil } @@ -289,7 +311,7 @@ func (i *BlueprintInfo) create(bpPath string, r repoDetail, readmeContent []byte versionInfo, err := getBlueprintVersion(path.Join(bpPath, tfVersionsFileName)) if err == nil { i.Version = versionInfo.moduleVersion - i.ActuationTool = BlueprintActuationTool{ + i.ActuationTool = &BlueprintActuationTool{ Version: versionInfo.requiredTfVersion, Flavor: "Terraform", } @@ -331,12 +353,12 @@ func (i *BlueprintInfo) create(bpPath string, r repoDetail, readmeContent []byte d, err := getDeploymentDuration(readmeContent, "Deployment Duration") if err == nil { - i.DeploymentDuration = *d + i.DeploymentDuration = d } c, err := getCostEstimate(readmeContent, "Cost") if err == nil { - i.CostEstimate = *c + i.CostEstimate = c } return nil @@ -355,13 +377,13 @@ func (i *BlueprintInterface) create(bpPath string) error { } func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent []byte) { - var docListToSet []BlueprintListContent + var docListToSet []*BlueprintListContent documentation, err := getMdContent(readmeContent, -1, -1, "Documentation", true) if err == nil { for _, li := range documentation.listItems { - doc := BlueprintListContent{ + doc := &BlueprintListContent{ Title: li.text, - URL: li.url, + Url: li.url, } docListToSet = append(docListToSet, doc) @@ -373,7 +395,7 @@ func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent // create architecture a, err := getArchitctureInfo(readmeContent, "Architecture") if err == nil { - c.Architecture = *a + c.Architecture = a } // create sub-blueprints @@ -392,13 +414,19 @@ func (c *BlueprintContent) create(bpPath string, rootPath string, readmeContent } func WriteMetadata(obj *BlueprintMetadata, bpPath, fileName string) error { - // marshal and write the file - yFile, err := yaml.Marshal(obj) + jBytes, err := protojson.Marshal(obj) if err != nil { return err } - return os.WriteFile(path.Join(bpPath, fileName), yFile, 0644) + // convert json bytes to yaml bytes for before writing to disk + // using go-yaml package here since that preserves the order of fields + yBytes, err := goyaml.JSONToYAML(jBytes) + if err != nil { + return err + } + + return os.WriteFile(path.Join(bpPath, fileName), yBytes, 0644) } func UnmarshalMetadata(bpPath, fileName string) (*BlueprintMetadata, error) { @@ -415,13 +443,19 @@ func UnmarshalMetadata(bpPath, fileName string) (*BlueprintMetadata, error) { return &bpObj, fmt.Errorf("unable to read metadata from the existing file: %w", err) } - err = yaml.Unmarshal(f, &bpObj) + // convert yaml bytes to json bytes for unmarshaling metadata + // content to proto definition + j, err := yaml.YAMLToJSON(f) if err != nil { + return nil, err + } + + if err := protojson.Unmarshal(j, &bpObj); err != nil { return &bpObj, err } - currVersion := bpObj.ResourceMeta.TypeMeta.APIVersion - currKind := bpObj.ResourceMeta.TypeMeta.Kind + currVersion := bpObj.ApiVersion + currKind := bpObj.Kind //validate GVK for current metadata if currVersion != metadataApiVersion { diff --git a/cli/bpmetadata/display.go b/cli/bpmetadata/display.go index 537e7120c19..58d6cc6a0eb 100644 --- a/cli/bpmetadata/display.go +++ b/cli/bpmetadata/display.go @@ -7,7 +7,7 @@ import ( "golang.org/x/text/language" ) -func buildUIInputFromVariables(vars []BlueprintVariable, input *BlueprintUIInput) { +func buildUIInputFromVariables(vars []*BlueprintVariable, input *BlueprintUIInput) { if input.Variables == nil { input.Variables = make(map[string]*DisplayVariable) } diff --git a/cli/bpmetadata/display_test.go b/cli/bpmetadata/display_test.go index 414d02c03e9..b657a3f716b 100644 --- a/cli/bpmetadata/display_test.go +++ b/cli/bpmetadata/display_test.go @@ -9,12 +9,12 @@ import ( func TestUIInputFromVariables(t *testing.T) { tests := []struct { name string - coreVars []BlueprintVariable + coreVars []*BlueprintVariable UIinput *BlueprintUIInput }{ { name: "display metadata does not exist", - coreVars: []BlueprintVariable{ + coreVars: []*BlueprintVariable{ { Name: "test_var_1", }, @@ -29,7 +29,7 @@ func TestUIInputFromVariables(t *testing.T) { }, { name: "display metadata exists and is in line with core metadata", - coreVars: []BlueprintVariable{ + coreVars: []*BlueprintVariable{ { Name: "test_var_1", }, @@ -56,7 +56,7 @@ func TestUIInputFromVariables(t *testing.T) { }, { name: "display metadata exists and is not in line with core metadata", - coreVars: []BlueprintVariable{ + coreVars: []*BlueprintVariable{ { Name: "test_var_1", }, diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml index d05fc1e1716..9f257bec7c4 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -13,7 +13,7 @@ spec: version: 4.0.0 actuationTool: flavor: Terraform - version: '>= 0.13' + version: ">= 0.13" description: {} content: subBlueprints: @@ -44,25 +44,7 @@ spec: defaultValue: {} - name: bucket_lifecycle_rules description: Additional lifecycle_rules for specific buckets. Map of lowercase unprefixed name => list of lifecycle rules to configure. - varType: |- - map(set(object({ - # Object with keys: - # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. - # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. - action = map(string) - - # Object with keys: - # - age - (Optional) Minimum age of an object in days to satisfy this condition. - # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. - # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". - # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. - # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. - # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. - # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. - # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. - # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. - condition = map(string) - }))) + varType: "map(set(object({\n # Object with keys:\n # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass.\n # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule.\n action = map(string)\n\n # Object with keys:\n # - age - (Optional) Minimum age of an object in days to satisfy this condition.\n # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition.\n # - with_state - (Optional) Match to live and/or archived objects. Supported values include: \"LIVE\", \"ARCHIVED\", \"ANY\".\n # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY.\n # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition.\n # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition.\n # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true.\n # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object.\n # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent.\n condition = map(string)\n })))" defaultValue: {} - name: bucket_policy_only description: Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean @@ -77,7 +59,7 @@ spec: varType: map(string) defaultValue: {} - name: cors - description: 'Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors' + description: "Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors" varType: set(any) defaultValue: [] - name: creators @@ -85,7 +67,7 @@ spec: varType: list(string) defaultValue: [] - name: custom_placement_config - description: Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config + description: "Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config" varType: any defaultValue: {} - name: default_event_based_hold @@ -117,40 +99,21 @@ spec: varType: map(string) defaultValue: {} - name: lifecycle_rules - description: List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string. - varType: |- - set(object({ - # Object with keys: - # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. - # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. - action = map(string) - - # Object with keys: - # - age - (Optional) Minimum age of an object in days to satisfy this condition. - # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. - # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". - # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. - # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition. - # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition. - # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. - # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. - # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. - # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. - # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. - condition = map(string) - })) + description: "List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string." + varType: "set(object({\n # Object with keys:\n # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass.\n # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule.\n action = map(string)\n\n # Object with keys:\n # - age - (Optional) Minimum age of an object in days to satisfy this condition.\n # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition.\n # - with_state - (Optional) Match to live and/or archived objects. Supported values include: \"LIVE\", \"ARCHIVED\", \"ANY\".\n # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY.\n # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition.\n # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition.\n # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition.\n # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition.\n # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true.\n # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object.\n # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent.\n condition = map(string)\n }))" defaultValue: [] - name: location description: Bucket location. varType: string defaultValue: EU - name: logging - description: Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging + description: "Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging" varType: any defaultValue: {} - name: names description: Bucket name suffixes. varType: list(string) + defaultValue: null required: true - name: prefix description: Prefix used to generate the bucket name. @@ -159,6 +122,7 @@ spec: - name: project_id description: Bucket project id. varType: string + defaultValue: null required: true - name: public_access_prevention description: Prevents public access to a bucket. Acceptable values are inherited or enforced. If inherited, the bucket uses public access prevention, only if the bucket is subject to the public access prevention organization policy constraint. @@ -169,7 +133,7 @@ spec: varType: bool defaultValue: false - name: retention_policy - description: Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy + description: "Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy" varType: any defaultValue: {} - name: set_admin_roles @@ -213,7 +177,7 @@ spec: varType: list(string) defaultValue: [] - name: website - description: 'Map of website values. Supported attributes: main_page_suffix, not_found_page' + description: "Map of website values. Supported attributes: main_page_suffix, not_found_page" varType: map(any) defaultValue: {} outputs: diff --git a/cli/bpmetadata/int-test/workflow.sh b/cli/bpmetadata/int-test/workflow.sh index 5ba029b1b92..8365732901e 100755 --- a/cli/bpmetadata/int-test/workflow.sh +++ b/cli/bpmetadata/int-test/workflow.sh @@ -49,7 +49,7 @@ mkdir $WORKING_FOLDER && cd $WORKING_FOLDER # to be validated is for that version. git config --global advice.detachedHead false git clone -b v4.0.0 --single-branch https://github.com/terraform-google-modules/terraform-google-cloud-storage.git "./$BLUPRINT_FOLDER/" -../../../bin/cft blueprint metadata -p $BLUPRINT_FOLDER -d -q +../../../bin/cft blueprint metadata -p $BLUPRINT_FOLDER -d -q -f mkdir $GIT_FOLDER cp "../$GOLDENS_FOLDER/$GOLDEN_METADATA" "$GIT_FOLDER/$WORKING_METADATA" diff --git a/cli/bpmetadata/markdown.go b/cli/bpmetadata/markdown.go index 6aba3d65858..55603d02144 100644 --- a/cli/bpmetadata/markdown.go +++ b/cli/bpmetadata/markdown.go @@ -130,7 +130,7 @@ func getDeploymentDuration(content []byte, headTitle string) (*BlueprintTimeEsti var timeEstimate BlueprintTimeEstimate for _, m := range matches { // each m[2] will have the time in mins - i, err := strconv.Atoi(m[2]) + i, err := strconv.ParseInt(m[2], 10, 64) if err != nil { continue } @@ -159,7 +159,7 @@ func getCostEstimate(content []byte, headTitle string) (*BlueprintCostEstimate, return &BlueprintCostEstimate{ Description: costDetails.literal, - URL: costDetails.url, + Url: costDetails.url, }, nil } @@ -203,7 +203,7 @@ func getArchitctureInfo(content []byte, headTitle string) (*BlueprintArchitectur if isImage { return &BlueprintArchitecture{ Description: dList, - DiagramURL: string(iNode.Destination), + DiagramUrl: string(iNode.Destination), }, nil } @@ -211,7 +211,7 @@ func getArchitctureInfo(content []byte, headTitle string) (*BlueprintArchitectur if isLink { return &BlueprintArchitecture{ Description: dList, - DiagramURL: string(lNode.Destination), + DiagramUrl: string(lNode.Destination), }, nil } } diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go index 634b9b2b764..1765f407c98 100644 --- a/cli/bpmetadata/markdown_test.go +++ b/cli/bpmetadata/markdown_test.go @@ -194,7 +194,7 @@ func TestProcessArchitectureContent(t *testing.T) { `2. Step 2`, `3. Step 3`, }, - DiagramURL: "https://i.redd.it/w3kr4m2fi3111.png", + DiagramUrl: "https://i.redd.it/w3kr4m2fi3111.png", }, }, { @@ -296,7 +296,7 @@ func TestProcessCostEstimateContent(t *testing.T) { title: "Cost", want: &BlueprintCostEstimate{ Description: "Solution cost details", - URL: "https://cloud.google.com/products/calculator?id=02fb0c45-cc29-4567-8cc6-f72ac9024add", + Url: "https://cloud.google.com/products/calculator?id=02fb0c45-cc29-4567-8cc6-f72ac9024add", }, }, { diff --git a/cli/bpmetadata/path.go b/cli/bpmetadata/path.go index 27e7ddfdbf4..a5b8b297ecb 100644 --- a/cli/bpmetadata/path.go +++ b/cli/bpmetadata/path.go @@ -33,19 +33,19 @@ func fileExists(path string) (bool, error) { return true, nil } -func getExamples(configPath string) ([]BlueprintMiscContent, error) { +func getExamples(configPath string) ([]*BlueprintMiscContent, error) { return getDirPaths(configPath, reExamples) } -func getModules(configPath string) ([]BlueprintMiscContent, error) { +func getModules(configPath string) ([]*BlueprintMiscContent, error) { return getDirPaths(configPath, reModules) } // getDirPaths traverses a given path and looks for directories // with TF configs while ignoring the .terraform* directories created and // used internally by the Terraform CLI -func getDirPaths(configPath string, re *regexp.Regexp) ([]BlueprintMiscContent, error) { - paths := []BlueprintMiscContent{} +func getDirPaths(configPath string, re *regexp.Regexp) ([]*BlueprintMiscContent, error) { + paths := []*BlueprintMiscContent{} err := filepath.Walk(configPath, func(path string, info fs.FileInfo, err error) error { if err != nil { return fmt.Errorf("error accessing examples in the path %q: %v", configPath, err) @@ -60,7 +60,7 @@ func getDirPaths(configPath string, re *regexp.Regexp) ([]BlueprintMiscContent, if !info.IsDir() && strings.HasSuffix(info.Name(), ".tf") { d := filepath.Dir(path) if l := trimPath(d, re); l != "" { - dirPath := BlueprintMiscContent{ + dirPath := &BlueprintMiscContent{ Name: filepath.Base(d), Location: l, } diff --git a/cli/bpmetadata/path_test.go b/cli/bpmetadata/path_test.go index 07323f3f2fa..993010f5dbf 100644 --- a/cli/bpmetadata/path_test.go +++ b/cli/bpmetadata/path_test.go @@ -57,27 +57,27 @@ func TestDirContent(t *testing.T) { name string path string regex string - want []BlueprintMiscContent + want []*BlueprintMiscContent wantErr bool }{ { name: "valid examples", path: "content/examples", regex: regexExamples, - want: []BlueprintMiscContent{ - BlueprintMiscContent{ + want: []*BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "terraform", Location: "examples/acm/acm-terraform-blog-part1/terraform", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "acm-terraform-blog-part2", Location: "examples/acm/acm-terraform-blog-part2", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "simple_regional", Location: "examples/simple_regional", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "simple_regional_beta", Location: "examples/simple_regional_beta", }, @@ -88,16 +88,16 @@ func TestDirContent(t *testing.T) { name: "valid modules", path: "content/modules", regex: regexModules, - want: []BlueprintMiscContent{ - BlueprintMiscContent{ + want: []*BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "beta-public-cluster", Location: "modules/beta-public-cluster", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "binary-authorization", Location: "modules/binary-authorization", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "private-cluster", Location: "modules/private-cluster", }, @@ -114,12 +114,12 @@ func TestDirContent(t *testing.T) { name: "some example folders without any tf", path: "content/examples-some-without-tf/examples", regex: regexExamples, - want: []BlueprintMiscContent{ - BlueprintMiscContent{ + want: []*BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "terraform", Location: "examples/acm/acm-terraform-blog-part1/terraform", }, - BlueprintMiscContent{ + &BlueprintMiscContent{ Name: "simple_regional", Location: "examples/simple_regional", }, @@ -130,14 +130,14 @@ func TestDirContent(t *testing.T) { name: "all module folders without any tf", path: "content/modules-no-tf/modules", regex: regexModules, - want: []BlueprintMiscContent{}, + want: []*BlueprintMiscContent{}, wantErr: false, }, { name: "mismatched regex", path: "content/modules", regex: "badRegex", - want: []BlueprintMiscContent{}, + want: []*BlueprintMiscContent{}, wantErr: false, }, } diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index 759628e3c9d..59d5d1a1762 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -2,8 +2,10 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; -import "bpmetadata/proto/bpmetadata_ui.proto"; +import "bpmetadata_ui.proto"; +import "google/protobuf/struct.proto"; +// TODO: update copybara configuration for go to java package transformation option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; // BlueprintMetadata defines the overall structure for blueprint metadata. @@ -17,70 +19,70 @@ option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli message BlueprintMetadata { // APIVersion is the apiVersion field of a metadata file // Gen: auto-generated - string api_version = 1; + string api_version = 1; // @gotags: json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" // Kind is the kind field of a metadata file // Gen: auto-generated - string kind = 2; + string kind = 2; // @gotags: json:"kind,omitempty" yaml:"kind,omitempty" // ResourceTypeMeta is the metadata field of a metadata file // Gen: partial - ResourceTypeMeta metadata = 3; + ResourceTypeMeta metadata = 3; // @gotags: json:"metadata,omitempty" yaml:"metadata,omitempty" // BlueprintMetadataSpec is the metadata specification for the blueprint // Gen: partial - BlueprintMetadataSpec spec = 4; + BlueprintMetadataSpec spec = 4; // @gotags: yaml:"spec" json:"spec" } message ResourceTypeMeta { // Name is the metadata.name field of a Resource // Gen: auto-generated - string name = 1; + string name = 1; // @gotags: json:"name,omitempty" yaml:"name,omitempty" // Labels is the metadata.labels field of a Resource // Gen: manually-authored - map labels = 2; + map labels = 2; // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" // Annotations is the metadata.annotations field of a Resource. // Gen: auto-generated - map annotations = 3; + map annotations = 3; // @gotags: json:"annotations,omitempty" yaml:"annotations,omitempty" } // BlueprintMetadataSpec defines the spec portion of the blueprint metadata. message BlueprintMetadataSpec { // BlueprintInfo defines the basic information of the blueprint. // Gen: partial - BlueprintInfo info = 1; + BlueprintInfo info = 1; // @gotags: json:"info,omitempty" yaml:"info,omitempty" // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. // Gen: partial - BlueprintContent content = 2; + BlueprintContent content = 2; // @gotags: json:"content,omitempty" yaml:"content,omitempty" // BlueprintInterface defines the input and output variables for the blueprint. // Gen: partial - BlueprintInterface interfaces = 3; + BlueprintInterface interfaces = 3; // @gotags: json:"interfaces,omitempty" yaml:"interfaces,omitempty" // BlueprintRequirements defines the roles required and the associated services // that need to be enabled to provision blueprint resources. // Gen: auto-generated - BlueprintRequirements requirements = 4; + BlueprintRequirements requirements = 4; // @gotags: json:"requirements,omitempty" yaml:"requirements,omitempty" // BlueprintUI defines the user interface for the blueprint. // Gen: partial - BlueprintUI ui = 5; + BlueprintUI ui = 5; // @gotags: json:"ui,omitempty" yaml:"ui,omitempty" } // BlueprintInfo defines the basic information of the blueprint. message BlueprintInfo { // Title for the blueprint. // Gen: auto-generated - First H1 text in readme.md. - string title = 1; + string title = 1; // @gotags: json:"title" yaml:"title" // Blueprint source location and source type. // Gen: auto-generated - user will be prompted if repo information can not // be determined from the blueprint path. - BlueprintRepoDetail source = 2; + BlueprintRepoDetail source = 2; // @gotags: json:"source,omitempty" yaml:"source,omitempty" // Last released semantic version for the packaged blueprint. // Gen: auto-generated - From the `module_name` attribute of @@ -89,90 +91,90 @@ message BlueprintInfo { // provider_meta "google" { // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" // } - string version = 3; + string version = 3; // @gotags: json:"version,omitempty" yaml:"version,omitempty" // Actuation tool e.g. Terraform and its required version. // Gen: auto-generated - BlueprintActuationTool actuation_tool = 4; + BlueprintActuationTool actuation_tool = 4; // @gotags: json:"actuationTool,omitempty" yaml:"actuationTool,omitempty" // Various types of descriptions associated with the blueprint. // Gen: auto-generated - BlueprintDescription description = 5; + BlueprintDescription description = 5; // @gotags: json:"description,omitempty" yaml:"description,omitempty" // Path to an image representing the icon for the blueprint. // Will be set as "assets/icon.png", if present. // Gen: auto-generated - string icon = 6; + string icon = 6; // @gotags: json:"icon,omitempty" yaml:"icon,omitempty" // The time estimate for configuring and deploying the blueprint. // Gen: auto-generated - BlueprintTimeEstimate deployment_duration = 7; + BlueprintTimeEstimate deployment_duration = 7; // @gotags: json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty" // The cost estimate for the blueprint based on preconfigured variables. // Gen: auto-generated - BlueprintCostEstimate cost_estimate = 8; + BlueprintCostEstimate cost_estimate = 8; // @gotags: json:"costEstimate,omitempty" yaml:"costEstimate,omitempty" // A list of GCP cloud products used in the blueprint. // Gen: manually-authored - repeated BlueprintCloudProduct cloud_products = 9; + repeated BlueprintCloudProduct cloud_products = 9; // @gotags: json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty" // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. // Gen: manually-authored - repeated BlueprintQuotaDetail quota_details = 10; + repeated BlueprintQuotaDetail quota_details = 10; // @gotags: json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty" // Details on the author producing the blueprint. // Gen: manually-authored - BlueprintAuthor author = 11; + BlueprintAuthor author = 11; // @gotags: json:"author,omitempty" yaml:"author,omitempty" // Details on software installed as part of the blueprint. // Gen: manually-authored - repeated BlueprintSoftwareGroup software_groups = 12; + repeated BlueprintSoftwareGroup software_groups = 12; // @gotags: json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty" // Support offered, if any for the blueprint. // Gen: manually-authored - BlueprintSupport support_info = 13; + BlueprintSupport support_info = 13; // @gotags: json:"supportInfo,omitempty" yaml:"supportInfo,omitempty" // A list of GCP org policies to be checked for successful deployment. // Gen: manually-authored - repeated BlueprintOrgPolicyCheck org_policy_checks = 14; + repeated BlueprintOrgPolicyCheck org_policy_checks = 14; // @gotags: json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty" // Specifies if the blueprint supports single or multiple deployments per GCP project. // If set to true, the blueprint can not be deployed more than once in the same GCP project. // Gen: manually-authored - bool single_deployment = 15; + bool single_deployment = 15; // @gotags: json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty" } // BlueprintContent defines the detail for blueprint related content such as // related documentation, diagrams, examples etc. message BlueprintContent { // Gen: auto-generated - BlueprintArchitecture architecture = 1; + BlueprintArchitecture architecture = 1; // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" // Gen: manually-authored - repeated BlueprintDiagram diagrams = 2; + repeated BlueprintDiagram diagrams = 2; // @gotags: json:"diagrams,omitempty" yaml:"diagrams,omitempty" // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. // ## Documentation // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) - repeated BlueprintListContent documentation = 3; + repeated BlueprintListContent documentation = 3; // @gotags: json:"documentation,omitempty" yaml:"documentation,omitempty" // Gen: auto-generated - blueprints under the modules/ folder. - repeated BlueprintMiscContent sub_blueprints = 4; + repeated BlueprintMiscContent sub_blueprints = 4; // @gotags: json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty" // Gen: auto-generated - examples under the examples/ folder. - repeated BlueprintMiscContent examples = 5; + repeated BlueprintMiscContent examples = 5; // @gotags: json:"examples,omitempty" yaml:"examples,omitempty" } // BlueprintInterface defines the input and output variables for the blueprint. message BlueprintInterface { // Gen: auto-generated - all defined variables for the blueprint - repeated BlueprintVariable variables = 1; + repeated BlueprintVariable variables = 1; // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" // Gen: manually-authored - repeated BlueprintVariableGroup variable_groups = 2; + repeated BlueprintVariableGroup variable_groups = 2; // @gotags: json:"variableGroups,omitempty" yaml:"variableGroups,omitempty" // Gen: auto-generated - all defined outputs for the blueprint - repeated BlueprintOutput outputs = 3; + repeated BlueprintOutput outputs = 3; // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" } // BlueprintRequirements defines the roles required and the associated services @@ -185,11 +187,11 @@ message BlueprintRequirements { // "roles/compute.admin", // ] // } - repeated BlueprintRoles roles = 1; + repeated BlueprintRoles roles = 1; // @gotags: json:"roles,omitempty" yaml:"roles,omitempty" // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf // as "activate_apis" in the project module. - repeated string services = 2; + repeated string services = 2; // @gotags: json:"services,omitempty" yaml:"services,omitempty" } // BlueprintUI is the top-level structure for holding UI specific metadata. @@ -197,33 +199,33 @@ message BlueprintUI { // The top-level input section that defines the list of variables and // their sections on the deployment page. // Gen: partial - BlueprintUIInput input = 1; + BlueprintUIInput input = 1; // @gotags: json:"input,omitempty" yaml:"input,omitempty" // The top-level section for listing runtime (or blueprint output) information // i.e. the console URL for the VM or a button to ssh into the VM etc based on. // Gen: manually-authored - BlueprintUIOutput runtime = 2; + BlueprintUIOutput runtime = 2; // @gotags: json:"runtime,omitempty" yaml:"runtime,omitempty" } message BlueprintRepoDetail { // Gen: auto-generated - URL from the .git dir. // Can be manually overridden with a custom URL if needed. - string repo = 1; + string repo = 1; // @gotags: json:"repo" yaml:"repo" // Gen: auto-generated - set as "git" for now until more // types are supported. - string source_type = 2; + string source_type = 2; // @gotags: json:"sourceType" yaml:"sourceType" // Gen: auto-generated - not set for root modules but // set as the module name for submodules, if found. - string dir = 3; + string dir = 3; // @gotags: json:"dir,omitempty" yaml:"dir,omitempty" } // BlueprintActuationTool defines the actuation tool used to provision the blueprint. message BlueprintActuationTool { // Gen: auto-generated - set as "Terraform" for now until //more flavors are supported. - string flavor = 1; + string flavor = 1; // @gotags: json:"flavor,omitempty" yaml:"flavor,omitempty" // Required version for the actuation tool. // Gen: auto-generated - For Terraform this is the `required_version` @@ -231,30 +233,30 @@ message BlueprintActuationTool { // terraform { // required_version = ">= 0.13" // } - string version = 2; + string version = 2; // @gotags: json:"version,omitempty" yaml:"version,omitempty" } // All descriptions are set with the markdown content immediately // after each type's heading declaration in readme.md. message BlueprintDescription { // Gen: auto-generated - Markdown after "### Tagline". - string tagline = 1; + string tagline = 1; // @gotags: json:"tagline,omitempty" yaml:"tagline,omitempty" // Gen: auto-generated - Markdown after "### Detailed". - string detailed = 2; + string detailed = 2; // @gotags: json:"detailed,omitempty" yaml:"detailed,omitempty" // Gen: auto-generated - Markdown after "### PreDeploy". - string pre_deploy = 3; + string pre_deploy = 3; // @gotags: json:"preDeploy,omitempty" yaml:"preDeploy,omitempty" // Gen: auto-generated - Markdown after "### Html". - string html = 4; + string html = 4; // @gotags: json:"html,omitempty" yaml:"html,omitempty" // Gen: auto-generated - Markdown after "### EulaUrls". - repeated string eula_urls = 5; + repeated string eula_urls = 5; // @gotags: json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty" // Gen: auto-generated - Markdown after "### Architecture" // Deprecated. Use BlueprintContent.Architecture instead. - repeated string architecture = 6; + repeated string architecture = 6; // @gotags: json:"architecture,omitempty" yaml:"architecture,omitempty" } // A time estimate in secs required for configuring and deploying the blueprint. @@ -263,8 +265,8 @@ message BlueprintTimeEstimate { // ### DeploymentTime // - Configuration: X secs // - Deployment: Y secs - int32 configuration_secs = 1; - int32 deployment_secs = 2; + int64 configuration_secs = 1; // @gotags: json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty" + int64 deployment_secs = 2; // @gotags: json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty" } // The cost estimate for the blueprint based on pre-configured variables. @@ -273,8 +275,8 @@ message BlueprintCostEstimate { // with a description E.g. // ### Cost // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) - string description = 1; - string url = 2; + string description = 1; // @gotags: json:"description" yaml:"description" + string url = 2; // @gotags: json:"url" yaml:"url" } // GCP cloud product(s) used in the blueprint. @@ -282,21 +284,21 @@ message BlueprintCloudProduct { // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") // product used in the blueprint. // Gen: manually-authored - string product_id = 1; + string product_id = 1; // @gotags: json:"productId,omitempty" yaml:"productId,omitempty" // Url for the product. // Gen: manually-authored - string page_url = 2; + string page_url = 2; // @gotags: json:"pageUrl" yaml:"pageUrl" // A label string for the product, if it is not an integrated GCP product. // E.g. "Data Studio" // Gen: manually-authored - string label = 3; + string label = 3; // @gotags: json:"label,omitempty" yaml:"label,omitempty" // Is the product's landing page external to the GCP console e.g. // lookerstudio.google.com // Gen: manually-authored - bool is_external = 4; + bool is_external = 4; // @gotags: json:"isExternal,omitempty" yaml:"isExternal,omitempty" } // BlueprintOrgPolicyCheck defines GCP org policies to be checked @@ -304,12 +306,12 @@ message BlueprintCloudProduct { message BlueprintOrgPolicyCheck { // Id for the policy e.g. "compute-vmExternalIpAccess" // Gen: manually-authored - string policy_id = 1; + string policy_id = 1; // @gotags: json:"policyId" yaml:"policyId" // If not set, it is assumed any version of this org policy // prevents successful deployment of this solution. // Gen: manually-authored - repeated string required_values = 2; + repeated string required_values = 2; // @gotags: json:"requiredValues,omitempty" yaml:"requiredValues,omitempty" } // QuotaResourceType defines the type of resource a quota is applied to. @@ -325,12 +327,12 @@ message BlueprintQuotaDetail { // with the corresponding resource and quota type. In its absence, the quota // detail is assumed to be fixed. // Gen: manually-authored - string dynamic_variable = 1; + string dynamic_variable = 1; // @gotags: json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty" // ResourceType is the type of resource the quota will be applied to i.e. // GCE Instance or Disk etc. // Gen: manually-authored - QuotaResourceType resource_type = 2; + QuotaResourceType resource_type = 2; // @gotags: json:"resourceType" yaml:"resourceType" // QuotaType is a key/value pair of the actual quotas and their corresponding // values. Valid keys for quota_type can be: @@ -339,22 +341,22 @@ message BlueprintQuotaDetail { // DISK_TYPE OR // SIZE_GB. // Gen: manually-authored - map quota_type = 3; + map quota_type = 3; // @gotags: json:"quotaType" yaml:"quotaType" } // BlueprintAuthor defines the author of a blueprint. message BlueprintAuthor { // Name of template author or organization. // Gen: manually-authored - string title = 1; + string title = 1; // @gotags: json:"title" yaml:"title" // Description of the author. // Gen: manually-authored - string description = 2; + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" // Link to the author's website. // Gen: manually-authored - string url = 3; + string url = 3; // @gotags: json:"url,omitempty" yaml:"url,omitempty" } // SoftwareGroupType is a string enum representing the different types of software groups. @@ -369,11 +371,11 @@ enum SoftwareGroupType { message BlueprintSoftwareGroup { // Pre-defined software types. // Gen: manually-authored - SoftwareGroupType type = 1; + SoftwareGroupType type = 1; // @gotags: json:"type,omitempty" yaml:"type,omitempty" // Software components belonging to this group. // Gen: manually-authored - repeated BlueprintSoftware software = 2; + repeated BlueprintSoftware software = 2; // @gotags: json:"software,omitempty" yaml:"software,omitempty" } // A description of a piece of a single software component @@ -381,39 +383,39 @@ message BlueprintSoftwareGroup { message BlueprintSoftware { // User-visible title. // Gen: manually-authored - string title = 1; + string title = 1; // @gotags: json:"title" yaml:"title" // Software version. // Gen: manually-authored - string version = 2; + string version = 2; // @gotags: json:"version,omitempty" yaml:"version,omitempty" // Link to development site or marketing page for this software. // Gen: manually-authored - string url = 3; + string url = 3; // @gotags: json:"url,omitempty" yaml:"url,omitempty" // Link to license page. // Gen: manually-authored - string license_url = 4; + string license_url = 4; // @gotags: json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty" } // A description of a support option message BlueprintSupport { // Description of the support option. // Gen: manually-authored - string description = 1; + string description = 1; // @gotags: json:"description" yaml:"description" // Link to the page providing this support option. // Gen: manually-authored - string url = 2; + string url = 2; // @gotags: json:"url,omitempty" yaml:"url,omitempty" // The organization or group that provides the support option (e.g.: // "Community", "Google"). // Gen: manually-authored - string entity = 3; + string entity = 3; // @gotags: json:"entity,omitempty" yaml:"entity,omitempty" // Whether to show the customer's support ID. // Gen: manually-authored - bool show_support_id = 4; + bool show_support_id = 4; // @gotags: json:"showSupportId,omitempty" yaml:"showSupportId,omitempty" } message BlueprintArchitecture { @@ -423,49 +425,49 @@ message BlueprintArchitecture { // 1. Step no. 1 // 2. Step no. 2 // 3. Step no. 3 - string diagram_url = 1; + string diagram_url = 1; // @gotags: json:"diagramUrl" yaml:"diagramUrl" // Gen: auto-generated - the list items following the "## Architecture" tag. - repeated string description = 2; + repeated string description = 2; // @gotags: json:"description" yaml:"description" } message BlueprintMiscContent { - string name = 1; - string location = 2; + string name = 1; // @gotags: json:"name" yaml:"name" + string location = 2; // @gotags: json:"location,omitempty" yaml:"location,omitempty" } message BlueprintDiagram { - string name = 1; - string alt_text = 2; - string description = 3; + string name = 1; // @gotags: json:"name" yaml:"name" + string alt_text = 2; // @gotags: json:"altText,omitempty" yaml:"altText,omitempty" + string description = 3; // @gotags: json:"description,omitempty" yaml:"description,omitempty" } message BlueprintListContent { - string title = 1; - string url = 2; + string title = 1; // @gotags: json:"title" yaml:"title" + string url = 2; // @gotags: json:"url,omitempty" yaml:"url,omitempty" } message BlueprintVariable { - string name = 1; - string description = 2; - string var_type = 3; - string default_value = 4; - bool required = 5; + string name = 1; // @gotags: json:"name,omitempty" yaml:"name,omitempty" + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" + string var_type = 3; // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" + google.protobuf.Value default_value = 4; // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" + bool required = 5; // @gotags: json:"required,omitempty" yaml:"required,omitempty" } // BlueprintVariableGroup is manually entered. message BlueprintVariableGroup { - string name = 1; - string description = 2; - repeated string variables = 3; + string name = 1; // @gotags: json:"name" yaml:"name" + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" + repeated string variables = 3; // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" } message BlueprintOutput { - string name = 1; - string description = 2; + string name = 1; // @gotags: json:"name" yaml:"name" + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" } message BlueprintRoles { - string level = 1; - repeated string roles = 2; + string level = 1; // @gotags: json:"level" yaml:"level" + repeated string roles = 2; // @gotags: json:"roles" yaml:"roles" } diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 81d57d45c7f..88940f5db7d 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -2,19 +2,20 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; -import "bpmetadata/proto/bpmetadata_ui_ext.proto"; +import "bpmetadata_ui_ext.proto"; +// TODO: update copybara configuration for go to java package transformation option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; // BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. message BlueprintUIInput { // variables is a map defining all inputs on the UI. // Gen: partial - map variables = 1; + map variables = 1; // @gotags: json:"variables,omitempty" yaml:"variables,omitempty" // Sections is a generic structure for grouping inputs together. // Gen: manually-authored - repeated DisplaySection sections = 2; + repeated DisplaySection sections = 2; // @gotags: json:"sections,omitempty" yaml:"sections,omitempty" } // Additional display specific metadata pertaining to a particular @@ -22,59 +23,59 @@ message BlueprintUIInput { message DisplayVariable { // The variable name from the corresponding standard metadata file. // Gen: auto-generated - the Terraform variable name - string name = 1; + string name = 1; // @gotags: json:"name" yaml:"name" // Visible title for the variable on the UI. If not present, // Name will be used for the Title. // Gen: auto-generated - the Terraform variable converted to title case e.g. // variable "bucket_admins" will convert to "Bucket Admins" as the title. - string title = 2; + string title = 2; // @gotags: json:"title" yaml:"title" // A flag to hide or show the variable on the UI. // Gen: manually-authored - bool invisible = 3; + bool invisible = 3; // @gotags: json:"invisible,omitempty" yaml:"invisible,omitempty" // Variable tooltip. // Gen: manually-authored - string tooltip = 4; + string tooltip = 4; // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" // Placeholder text (when there is no default). // Gen: manually-authored - string placeholder = 5; + string placeholder = 5; // @gotags: json:"placeholder,omitempty" yaml:"placeholder,omitempty" // Regex based validation rules for the variable. // Gen: manually-authored - string regex_validation = 6; + string regex_validation = 6; // @gotags: json:"regexValidation,omitempty" yaml:"regexValidation,omitempty" // Minimum no. of inputs for the input variable. // Gen: manually-authored - int32 min_items = 7; + int32 min_items = 7; // @gotags: json:"minItems,omitempty" yaml:"minItems,omitempty" // Max no. of inputs for the input variable. // Gen: manually-authored - int32 max_items = 8; + int32 max_items = 8; // @gotags: json:"maxItems,omitempty" yaml:"maxItems,omitempty" // Minimum length for string values. // Gen: manually-authored - int32 min_length = 9; + int32 min_length = 9; // @gotags: json:"minLength,omitempty" yaml:"minLength,omitempty" // Max length for string values. // Gen: manually-authored - int32 max_length = 10; + int32 max_length = 10; // @gotags: json:"maxLength,omitempty" yaml:"maxLength,omitempty" // Minimum value for numeric types. // Gen: manually-authored - float min = 11; + float min = 11; // @gotags: json:"min,omitempty" yaml:"min,omitempty" // Max value for numeric types. // Gen: manually-authored - float max = 12; + float max = 12; // @gotags: json:"max,omitempty" yaml:"max,omitempty" // The name of a section to which this variable belongs. // variables belong to the root section if this field is // not set. // Gen: manually-authored - string section = 13; + string section = 13; // @gotags: json:"section,omitempty" yaml:"section,omitempty" // UI extension associated with the input variable. // E.g. for rendering a GCE machine type selector: @@ -86,13 +87,13 @@ message DisplayVariable { // minCpu: 2 // minRamGb: // Gen: manually-authored - GooglePropertyExtension x_google_property = 14; + GooglePropertyExtension x_google_property = 14; // @gotags: json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty" // Text describing the validation rules for the property. Typically shown // after an invalid input. // Optional. UTF-8 text. No markup. At most 128 characters. // Gen: manually-authored - string validation = 15; + string validation = 15; // @gotags: json:"validation,omitempty" yaml:"validation,omitempty" } // A logical group of variables. [Section][]s may also be grouped into @@ -101,40 +102,40 @@ message DisplaySection { // The name of the section, referenced by DisplayVariable.Section // Section names must be unique. // Gen: manually-authored - string name = 1; + string name = 1; // @gotags: json:"name" yaml:"name" // Section title. // If not provided, name will be used instead. // Gen: manually-authored - string title = 2; + string title = 2; // @gotags: json:"title,omitempty" yaml:"title,omitempty" // Section tooltip. // Gen: manually-authored - string tooltip = 3; + string tooltip = 3; // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" // Section subtext. // Gen: manually-authored - string subtext = 4; + string subtext = 4; // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" // The name of the parent section (if parent is not the root section). // Gen: manually-authored - string parent = 5; + string parent = 5; // @gotags: json:"parent,omitempty" yaml:"parent,omitempty" } message BlueprintUIOutput { // Short message to be displayed while the blueprint is deploying. // At most 128 characters. // Gen: manually-authored - string output_message = 1; + string output_message = 1; // @gotags: json:"outputMessage,omitempty" yaml:"outputMessage,omitempty" // List of suggested actions to take. // Gen: manually-authored - repeated UIActionItem suggested_actions = 2; + repeated UIActionItem suggested_actions = 2; // @gotags: json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty" // outputs is a map defining a subset of Terraform outputs on the UI // that may need additional UI configuration. // Gen: manually-authored - map outputs = 3; + map outputs = 3; // @gotags: json:"outputs,omitempty" yaml:"outputs,omitempty" } // An item appearing in a list of required or suggested steps. @@ -142,26 +143,26 @@ message UIActionItem { // Summary heading for the item. // Required. Accepts string expressions. At most 64 characters. // Gen: manually-authored - string heading = 1; + string heading = 1; // @gotags: json:"heading" yaml:"heading" // Longer description of the item. // At least one description or snippet is required. // Accepts string expressions. HTML <a href> // tags only. At most 512 characters. // Gen: manually-authored - string description = 2; + string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" // Fixed-width formatted code snippet. // At least one description or snippet is required. // Accepts string expressions. UTF-8 text. At most 512 characters. // Gen: manually-authored - string snippet = 3; + string snippet = 3; // @gotags: json:"snippet,omitempty" yaml:"snippet,omitempty" // If present, this expression determines whether the item is shown. // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP // where `externalIP` is the output. // Gen: manually-authored - string show_if = 4; + string show_if = 4; // @gotags: json:"showIf,omitempty" yaml:"showIf,omitempty" } // Additional display specific metadata pertaining to a particular @@ -170,10 +171,10 @@ message DisplayOutput { // open_in_new_tab defines if the Output action should be opened // in a new tab. // Gen: manually-authored - bool open_in_new_tab = 1; + bool open_in_new_tab = 1; // @gotags: json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty" // show_in_notification defines if the Output should shown in // notification for the deployment. // Gen: manually-authored - bool show_in_notification = 2; + bool show_in_notification = 2; // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" } diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index 784dfd76b83..31d497c166e 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; +// TODO: update copybara configuration for go to java package transformation option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; // ExtensionType specifies the type of extension. @@ -43,90 +44,90 @@ enum ExtensionType { message GooglePropertyExtension { // Type specifies the type of extension. // Gen: manually-authored - ExtensionType type = 1; + ExtensionType type = 1; // @gotags: json:"type" yaml:"type" // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to // determine the set of allowable values. This field references another // property from the schema, which must have type GCE_ZONE. // Gen: manually-authored - string zone_property = 2; + string zone_property = 2; // @gotags: json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty" // Property-specific extensions. // Gen: manually-authored (all property extensions and their child properties) - GCEMachineTypeExtension gce_machine_type = 3; - GCEDiskSizeExtension gce_disk_size = 4; - GCESubnetworkExtension gce_subnetwork = 5; - GCEGenericResourceExtension gce_resource = 6; - GCEGPUTypeExtension gce_gpu_type = 7; - GCEGPUCountExtension gce_gpu_count = 8; - GCENetworkExtension gce_network = 9; - GCEExternalIPExtension gce_external_ip = 10; - GCEIPForwardingExtension gce_ip_forwarding = 11; - GCEFirewallExtension gce_firewall = 12; - GCEFirewallRangeExtension gce_firewall_range = 13; - GCELocationExtension gce_zone = 14; - GCELocationExtension gce_region = 15; - IAMServiceAccountExtension iam_service_account = 16; + GCEMachineTypeExtension gce_machine_type = 3; // @gotags: json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty" + GCEDiskSizeExtension gce_disk_size = 4; // @gotags: json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty" + GCESubnetworkExtension gce_subnetwork = 5; // @gotags: json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty" + GCEGenericResourceExtension gce_resource = 6; // @gotags: json:"gceResource,omitempty" yaml:"gceResource,omitempty" + GCEGPUTypeExtension gce_gpu_type = 7; // @gotags: json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty" + GCEGPUCountExtension gce_gpu_count = 8; // @gotags: json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty" + GCENetworkExtension gce_network = 9; // @gotags: json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty" + GCEExternalIPExtension gce_external_ip = 10; // @gotags: json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty" + GCEIPForwardingExtension gce_ip_forwarding = 11; // @gotags: json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty" + GCEFirewallExtension gce_firewall = 12; // @gotags: json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty" + GCEFirewallRangeExtension gce_firewall_range = 13; // @gotags: json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty" + GCELocationExtension gce_zone = 14; // @gotags: json:"gceZone,omitempty" yaml:"gceZone,omitempty" + GCELocationExtension gce_region = 15; // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" + IAMServiceAccountExtension iam_service_account = 16; // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" } // GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. message GCELocationExtension { // AllowlistedZones is a list of zones that are allowed for the resource. - repeated string allowlisted_zones = 1; + repeated string allowlisted_zones = 1; // @gotags: json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty" // AllowlistedRegions is a list of regions that are allowed for the resource. - repeated string allowlisted_regions = 2; + repeated string allowlisted_regions = 2; // @gotags: json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty" } // GCEMachineTypeExtension specifies a machine type extension for a GCE resource. message GCEMachineTypeExtension { // Minimum cpu. Used to filter the list of selectable machine types. - int32 min_cpu = 1; + int32 min_cpu = 1; // @gotags: json:"minCpu,omitempty" yaml:"minCpu,omitempty" // Minimum ram. Used to filter the list of selectable machine types. - float min_ram_gb = 2; + float min_ram_gb = 2; // @gotags: json:"minRamGb,omitempty" yaml:"minRamGb,omitempty" // If true, custom machine types will not be selectable. // More info: // https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type - bool disallow_custom_machine_types = 3; + bool disallow_custom_machine_types = 3; // @gotags: json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty" } // GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. message GCEGPUTypeExtension { // MachineType is the name of the machine type that the GPU is attached to. - string machine_type = 1; + string machine_type = 1; // @gotags: json:"machineType" yaml:"machineType" // GPUType is the type(s) of GPU that is attached to the machine. - repeated string gpu_type = 2; + repeated string gpu_type = 2; // @gotags: json:"gpuType,omitempty" yaml:"gpuType,omitempty" } // GCEGPUCountExtension specifies the number of GPUs that should be attached to a machine. message GCEGPUCountExtension { // This field references another variable from the schema, // which must have type GCEMachineType. - string machine_type_variable = 1; + string machine_type_variable = 1; // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" } // GCEDiskSizeExtension specifies the size of a disk for a GCE resource. message GCEDiskSizeExtension { // The allowable range of disk sizes depends on the disk type. This field // references another variable from the schema, which must have type GCEDiskType. - string disk_type_variable = 1; + string disk_type_variable = 1; // @gotags: json:"diskTypeVariable" yaml:"diskTypeVariable" } // GCENetworkExtension specifies a network extension for a GCE resource. message GCENetworkExtension { // AllowSharedVpcs indicates this solution can receive // shared VPC selflinks (fully qualified compute links). - bool allow_shared_vpcs = 1; + bool allow_shared_vpcs = 1; // @gotags: json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty" // Used to indicate to which machine type this network interface will be // attached to. - string machine_type_variable = 2; + string machine_type_variable = 2; // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" // Label that will be in front of each Network Interface. - repeated string labels = 3; + repeated string labels = 3; // @gotags: json:"labels,omitempty" yaml:"labels,omitempty" } // ExternalIPType specifies the type of external IP address. @@ -142,54 +143,54 @@ enum ExternalIPType { message GCEExternalIPExtension { // NetworkVariable is the name of the network variable that the external IP address belongs to. - string network_variable = 1; + string network_variable = 1; // @gotags: json:"networkVariable" yaml:"networkVariable" // Type specifies the type of external IP address. Defaults to EPHEMERAL if not specified. - ExternalIPType type = 2; + ExternalIPType type = 2; // @gotags: json:"type,omitempty" yaml:"type,omitempty" // Flag to denote if an external IP should be configurable. - bool not_configurable = 3; + bool not_configurable = 3; // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" // Flag to denote if static IPs are allowed for the external IP. - bool allow_static_ips = 4; + bool allow_static_ips = 4; // @gotags: json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty" } // GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. message GCEIPForwardingExtension { // NetworkVariable is the name of the network variable that the IP forwarding belongs to. - string network_variable = 1; + string network_variable = 1; // @gotags: json:"networkVariable" yaml:"networkVariable" // NotConfigurable specifies whether the IP forwarding is configurable. Defaults to false if not specified. - bool not_configurable = 2; + bool not_configurable = 2; // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" } message GCEFirewallExtension { // NetworkVariable is used to indicate the network variable in the schema // this external IP belongs to. - string network_variable = 1; + string network_variable = 1; // @gotags: json:"networkVariable" yaml:"networkVariable" } message GCEFirewallRangeExtension { // FirewallVariable is used to indicate the firewall variable with the type // GCEFirewall in the schema to which this firewall range belongs to. - string firewall_variable = 1; + string firewall_variable = 1; // @gotags: json:"firewallVariable" yaml:"firewallVariable" } message GCESubnetworkExtension { // Subnetwork variable requires a network context in order to determine the // set of available subnetworks. This field references another // variable from the schema, which must have type GCENetwork. - string network_variable = 1; + string network_variable = 1; // @gotags: json:"networkVariable" yaml:"networkVariable" } message GCEGenericResourceExtension { // GCE resource type to be fetched. This field references another // property from the schema, which must have type GCEGenericResource. - string resource_variable = 1; + string resource_variable = 1; // @gotags: json:"resourceVariable" yaml:"resourceVariable" } message IAMServiceAccountExtension { // List of IAM roles that to grant to a new SA, or the roles to filter // existing SAs with. - repeated string roles = 1; + repeated string roles = 1; // @gotags: json:"roles" yaml:"roles" } diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 25e4c4dc87d..0cfd64ba511 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -88,11 +88,19 @@ func getRepoDetailsFromRootBp(bpPath string) repoDetail { } } + if err != nil && strings.Contains(err.Error(), "proto:") { + return repoDetail{ + Source: &repoSource{ + BlueprintRootPath: rootBp, + }, + } + } + // There is metadata for root but does not have source info // which means this is a non-git hosted blueprint if b.Spec.Info.Source == nil { return repoDetail{ - RepoName: b.ResourceMeta.ObjectMeta.NameMeta.Name, + RepoName: b.Metadata.Name, Source: &repoSource{ BlueprintRootPath: rootBp, }, @@ -101,7 +109,7 @@ func getRepoDetailsFromRootBp(bpPath string) repoDetail { // If we get here, root metadata exists and has git info return repoDetail{ - RepoName: b.ResourceMeta.ObjectMeta.NameMeta.Name, + RepoName: b.Metadata.Name, Source: &repoSource{ URL: b.Spec.Info.Source.Repo, SourceType: "git", diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 54d39c19b3b..7174e765f88 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -202,12 +202,6 @@ }, "type": "array" }, - "orgPolicyChecks": { - "items": { - "$ref": "#/$defs/BlueprintOrgPolicyCheck" - }, - "type": "array" - }, "quotaDetails": { "items": { "$ref": "#/$defs/BlueprintQuotaDetail" @@ -226,6 +220,12 @@ "supportInfo": { "$ref": "#/$defs/BlueprintSupport" }, + "orgPolicyChecks": { + "items": { + "$ref": "#/$defs/BlueprintOrgPolicyCheck" + }, + "type": "array" + }, "singleDeployment": { "type": "boolean" } @@ -284,7 +284,7 @@ "type": "string" }, "metadata": { - "$ref": "#/$defs/ObjectMeta" + "$ref": "#/$defs/ResourceTypeMeta" }, "spec": { "$ref": "#/$defs/BlueprintMetadataSpec" @@ -371,11 +371,13 @@ "type": "string" }, "resourceType": { - "type": "string", - "enum": [ - "QRT_GCE_INSTANCE", - "QRT_GCE_DISK", - "QRT_UNDEFINED" + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } ] }, "quotaType": { @@ -474,10 +476,13 @@ "BlueprintSoftwareGroup": { "properties": { "type": { - "type": "string", - "enum": [ - "SG_UNSPECIFIED", - "SG_OS" + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } ] }, "software": { @@ -671,9 +676,6 @@ "placeholder": { "type": "string" }, - "validation": { - "type": "string" - }, "regexValidation": { "type": "string" }, @@ -700,6 +702,9 @@ }, "xGoogleProperty": { "$ref": "#/$defs/GooglePropertyExtension" + }, + "validation": { + "type": "string" } }, "additionalProperties": false, @@ -727,11 +732,13 @@ "type": "string" }, "type": { - "type": "string", - "enum": [ - "IP_UNSPECIFIED", - "IP_EPHEMERAL", - "NONE" + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } ] }, "notConfigurable": { @@ -897,27 +904,13 @@ "GooglePropertyExtension": { "properties": { "type": { - "type": "string", - "enum": [ - "ET_EMAIL_ADDRESS", - "ET_MULTI_LINE_STRING", - "ET_GCE_DISK_IMAGE", - "ET_GCE_DISK_TYPE", - "ET_GCE_DISK_SIZE", - "ET_GCE_MACHINE_TYPE", - "ET_GCE_NETWORK", - "ET_GCE_ZONE", - "ET_GCE_SUBNETWORK", - "ET_GCE_REGION", - "ET_GCE_GPU_TYPE", - "ET_GCE_GPU_COUNT", - "ET_GCE_EXTERNAL_IP", - "ET_GCE_IP_FORWARDING", - "ET_GCE_FIREWALL", - "ET_GCE_FIREWALL_RANGE", - "ET_GCE_GENERIC_RESOURCE", - "ET_GCS_BUCKET", - "ET_IAM_SERVICE_ACCOUNT" + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } ] }, "zoneProperty": { @@ -987,14 +980,11 @@ "roles" ] }, - "ObjectMeta": { + "ResourceTypeMeta": { "properties": { "name": { "type": "string" }, - "namespace": { - "type": "string" - }, "labels": { "patternProperties": { ".*": { @@ -1035,6 +1025,16 @@ "required": [ "heading" ] + }, + "Value": { + "properties": { + "Kind": true + }, + "additionalProperties": false, + "type": "object", + "required": [ + "Kind" + ] } } } \ No newline at end of file diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go index 50fc47a22a2..65a74ab7994 100644 --- a/cli/bpmetadata/schema/generate.go +++ b/cli/bpmetadata/schema/generate.go @@ -41,6 +41,16 @@ func GenerateSchema() ([]byte, error) { r := &jsonschema.Reflector{} s := r.Reflect(&bpmetadata.BlueprintMetadata{}) s.Version = "http://json-schema.org/draft-07/schema#" + + // defaultValue was defined as interface{} and has changed to + // Value type with proto definitions. To keep backwards + // compatibility for schema validation, this is being set to + // true i.e. it's presence is validated regardless of type. + vDef, defExists := s.Definitions["BlueprintVariable"] + if defExists { + vDef.Properties.Set("defaultValue", true) + } + sData, err := json.MarshalIndent(s, "", " ") if err != nil { return nil, err diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index c0928edc3e1..41c810c88bc 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/hcl/v2/gohcl" "github.com/hashicorp/hcl/v2/hclparse" "github.com/hashicorp/terraform-config-inspect/tfconfig" + "google.golang.org/protobuf/types/known/structpb" ) const ( @@ -197,7 +198,7 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { return nil, err } - var variables []BlueprintVariable + var variables []*BlueprintVariable for _, val := range mod.Variables { v := getBlueprintVariable(val) variables = append(variables, v) @@ -206,7 +207,7 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { // Sort variables sort.SliceStable(variables, func(i, j int) bool { return variables[i].Name < variables[j].Name }) - var outputs []BlueprintOutput + var outputs []*BlueprintOutput for _, val := range mod.Outputs { o := getBlueprintOutput(val) @@ -223,19 +224,25 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { } // build variable -func getBlueprintVariable(modVar *tfconfig.Variable) BlueprintVariable { - return BlueprintVariable{ - Name: modVar.Name, - Description: modVar.Description, - DefaultValue: modVar.Default, - Required: modVar.Required, - VarType: modVar.Type, +func getBlueprintVariable(modVar *tfconfig.Variable) *BlueprintVariable { + v := &BlueprintVariable{ + Name: modVar.Name, + Description: modVar.Description, + Required: modVar.Required, + VarType: modVar.Type, } + + vl, err := structpb.NewValue(modVar.Default) + if err == nil { + v.DefaultValue = vl + } + + return v } // build output -func getBlueprintOutput(modOut *tfconfig.Output) BlueprintOutput { - return BlueprintOutput{ +func getBlueprintOutput(modOut *tfconfig.Output) *BlueprintOutput { + return &BlueprintOutput{ Name: modOut.Name, Description: modOut.Description, } @@ -276,8 +283,8 @@ func getBlueprintRequirements(rolesConfigPath, servicesConfigPath string) (*Blue } // parseBlueprintRoles gets the roles required for the blueprint to be provisioned -func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { - var r []BlueprintRoles +func parseBlueprintRoles(rolesFile *hcl.File) ([]*BlueprintRoles, error) { + var r []*BlueprintRoles iamContent, _, diags := rolesFile.Body.PartialContent(rootSchema) err := hasHclErrors(diags) if err != nil { @@ -308,7 +315,7 @@ func parseBlueprintRoles(rolesFile *hcl.File) ([]BlueprintRoles, error) { iamRoles = append(iamRoles, v.AsString()) } - containerRoles := BlueprintRoles{ + containerRoles := &BlueprintRoles{ // TODO: (b/248123274) no good way to associate granularity yet Level: "Project", Roles: iamRoles, diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index 28f4885b0f2..6abf9c6e556 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/hcl/v2/hclparse" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "golang.org/x/exp/slices" ) const ( @@ -35,15 +36,13 @@ func TestTFInterfaces(t *testing.T) { wantDescription: "The description of the cluster", wantVarType: "string", wantDefault: "some description", - wantRequired: false, }, { - name: "with required as fasle", + name: "with required as false", varName: "regional", wantDescription: "Whether is a regional cluster", wantVarType: "bool", wantDefault: true, - wantRequired: false, }, } @@ -68,22 +67,46 @@ func TestTFInterfaces(t *testing.T) { require.NoError(t, err) for _, tt := range varTests { t.Run(tt.name, func(t *testing.T) { - assert.Contains(t, got.Variables, BlueprintVariable{ - Name: tt.varName, - Description: tt.wantDescription, - DefaultValue: tt.wantDefault, - Required: tt.wantRequired, - VarType: tt.wantVarType, - }) + i := slices.IndexFunc(got.Variables, func(v *BlueprintVariable) bool { return v.Name == tt.varName }) + if got.Variables[i].Name != tt.varName { + t.Errorf("getBlueprintInterfaces() - Variable.Name = %v, want %v", got.Variables[i].Name, tt.varName) + return + } + + if got.Variables[i].Description != tt.wantDescription { + t.Errorf("getBlueprintInterfaces() - Variable.Description = %v, want %v", got.Variables[i].Description, tt.wantDescription) + return + } + + if got.Variables[i].DefaultValue.AsInterface() != tt.wantDefault { + t.Errorf("getBlueprintInterfaces() - Variable.DefaultValue = %v, want %v", got.Variables[i].DefaultValue.AsInterface(), tt.wantDefault) + return + } + + if got.Variables[i].Required != tt.wantRequired { + t.Errorf("getBlueprintInterfaces() - Variable.Required = %v, want %v", got.Variables[i].Required, tt.wantRequired) + return + } + + if got.Variables[i].VarType != tt.wantVarType { + t.Errorf("getBlueprintInterfaces() - Variable.VarType = %v, want %v", got.Variables[i].VarType, tt.wantVarType) + return + } }) } for _, tt := range outTests { t.Run(tt.name, func(t *testing.T) { - assert.Contains(t, got.Outputs, BlueprintOutput{ - Name: tt.outName, - Description: tt.wantDescription, - }) + i := slices.IndexFunc(got.Outputs, func(o *BlueprintOutput) bool { return o.Name == tt.outName }) + if got.Outputs[i].Name != tt.outName { + t.Errorf("getBlueprintInterfaces() - Output.Name = %v, want %v", got.Outputs[i].Name, tt.outName) + return + } + + if got.Outputs[i].Description != tt.wantDescription { + t.Errorf("getBlueprintInterfaces() - Output.Description = %v, want %v", got.Outputs[i].Description, tt.wantDescription) + return + } }) } } @@ -211,12 +234,12 @@ func TestTFRoles(t *testing.T) { tests := []struct { name string configName string - wantRoles []BlueprintRoles + wantRoles []*BlueprintRoles }{ { name: "simple list of roles", configName: "iam.tf", - wantRoles: []BlueprintRoles{ + wantRoles: []*BlueprintRoles{ { Level: "Project", Roles: []string{ diff --git a/cli/bpmetadata/types.go b/cli/bpmetadata/types.go deleted file mode 100644 index 7933dda37f8..00000000000 --- a/cli/bpmetadata/types.go +++ /dev/null @@ -1,420 +0,0 @@ -package bpmetadata - -import ( - "sigs.k8s.io/kustomize/kyaml/yaml" -) - -// BlueprintMetadata defines the overall structure for blueprint metadata. -// The cli command i.e. `cft blueprint metadata` attempts at auto-generating -// metadata if the blueprint is structured based on the TF blueprint template -// i.e. https://github.com/terraform-google-modules/terraform-google-module-template -// All fields within BlueprintMetadata and its children are denoted as: -// - Gen: auto-generated - -// - Gen: manually-authored -// - Gen: partial (contains child nodes that can be both auto-generated and manually authored) -type BlueprintMetadata struct { - // Gen: auto-generated - yaml.ResourceMeta `json:",inline" yaml:",inline"` - // Gen: partial - Spec BlueprintMetadataSpec `json:"spec" yaml:"spec"` -} - -// BlueprintMetadataSpec defines the spec portion of the blueprint metadata. -type BlueprintMetadataSpec struct { - // Gen: partial - Info BlueprintInfo `json:"info,omitempty" yaml:"info,omitempty"` - // Gen: partial - Content BlueprintContent `json:"content,omitempty" yaml:"content,omitempty"` - // Gen: partial - Interfaces BlueprintInterface `json:"interfaces,omitempty" yaml:"interfaces,omitempty"` - // Gen: auto-generated - Requirements BlueprintRequirements `json:"requirements,omitempty" yaml:"requirements,omitempty"` - // Gen: partial - UI BlueprintUI `json:"ui,omitempty" yaml:"ui,omitempty"` -} - -type BlueprintInfo struct { - // Title for the blueprint. - // Gen: auto-generated - First H1 text in readme.md. - Title string `json:"title" yaml:"title"` - - // Blueprint source location and source type. - // Gen: auto-generated - user will be prompted if repo information can not - // be determined from the blueprint path. - Source *BlueprintRepoDetail `json:"source,omitempty" yaml:"source,omitempty"` - - // Last released semantic version for the packaged blueprint. - // Gen: auto-generated - From the `module_name` attribute of - // the `provider_meta "google"` block. - // E.g. - // provider_meta "google" { - // module_name = "blueprints/terraform/terraform-google-log-analysis/v0.1.5" - // } - Version string `json:"version,omitempty" yaml:"version,omitempty"` - - // Actuation tool e.g. Terraform and its required version. - // Gen: auto-generated - ActuationTool BlueprintActuationTool `json:"actuationTool,omitempty" yaml:"actuationTool,omitempty"` - - // Various types of descriptions associated with the blueprint. - // Gen: auto-generated - Description *BlueprintDescription `json:"description,omitempty" yaml:"description,omitempty"` - - // Path to an image representing the icon for the blueprint. - // Will be set as "assets/icon.png", if present. - // Gen: auto-generated - Icon string `json:"icon,omitempty" yaml:"icon,omitempty"` - - // The time estimate for configuring and deploying the blueprint. - // Gen: auto-generated - DeploymentDuration BlueprintTimeEstimate `json:"deploymentDuration,omitempty" yaml:"deploymentDuration,omitempty"` - - // The cost estimate for the blueprint based on preconfigured variables. - // Gen: auto-generated - CostEstimate BlueprintCostEstimate `json:"costEstimate,omitempty" yaml:"costEstimate,omitempty"` - - // A list of GCP cloud products used in the blueprint. - // Gen: manually-authored - CloudProducts []BlueprintCloudProduct `json:"cloudProducts,omitempty" yaml:"cloudProducts,omitempty"` - - // A list of GCP org policies to be checked for successful deployment. - // Gen: manually-authored - OrgPolicyChecks []BlueprintOrgPolicyCheck `json:"orgPolicyChecks,omitempty" yaml:"orgPolicyChecks,omitempty"` - - // A configuration of fixed and dynamic GCP quotas that apply to the blueprint. - // Gen: manually-authored - QuotaDetails []BlueprintQuotaDetail `json:"quotaDetails,omitempty" yaml:"quotaDetails,omitempty"` - - // Details on the author producing the blueprint. - // Gen: manually-authored - Author BlueprintAuthor `json:"author,omitempty" yaml:"author,omitempty"` - - // Details on software installed as part of the blueprint. - // Gen: manually-authored - SoftwareGroups []BlueprintSoftwareGroup `json:"softwareGroups,omitempty" yaml:"softwareGroups,omitempty"` - - // Support offered, if any for the blueprint. - // Gen: manually-authored - SupportInfo BlueprintSupport `json:"supportInfo,omitempty" yaml:"supportInfo,omitempty"` - - // Specifies if the blueprint supports single or multiple deployments per GCP project. - // If set to true, the blueprint can not be deployed more than once in the same GCP project. - // Gen: manually-authored - SingleDeployment bool `json:"singleDeployment,omitempty" yaml:"singleDeployment,omitempty"` -} - -type BlueprintRepoDetail struct { - // Gen: auto-generated - URL from the .git dir. - // Can be manually overridden with a custom URL if needed. - Repo string `json:"repo" yaml:"repo"` - - // Gen: auto-generated - set as "git" for now until more - // types are supported. - SourceType string `json:"sourceType" yaml:"sourceType"` - - // Gen: auto-generated - not set for root modules but - // set as the module name for submodules, if found. - Dir string `json:"dir,omitempty" yaml:"dir,omitempty"` -} - -type BlueprintActuationTool struct { - // Gen: auto-generated - set as "Terraform" for now until - //more flavors are supported. - Flavor string `json:"flavor,omitempty" yaml:"flavor,omitempty"` - - // Required version for the actuation tool. - // Gen: auto-generated - For Terraform this is the `required_version` - // set in `terraform` block. E.g. - // terraform { - // required_version = ">= 0.13" - // } - Version string `json:"version,omitempty" yaml:"version,omitempty"` -} - -// All descriptions are set with the markdown content immediately -// after each type's heading declaration in readme.md. -type BlueprintDescription struct { - // Gen: auto-generated - Markdown after "### Tagline". - Tagline string `json:"tagline,omitempty" yaml:"tagline,omitempty"` - - // Gen: auto-generated - Markdown after "### Detailed". - Detailed string `json:"detailed,omitempty" yaml:"detailed,omitempty"` - - // Gen: auto-generated - Markdown after "### PreDeploy". - PreDeploy string `json:"preDeploy,omitempty" yaml:"preDeploy,omitempty"` - - // Gen: auto-generated - Markdown after "### Html". - HTML string `json:"html,omitempty" yaml:"html,omitempty"` - - // Gen: auto-generated - Markdown after "### EulaUrls". - EulaURLs []string `json:"eulaUrls,omitempty" yaml:"eulaUrls,omitempty"` - - // Gen: auto-generated - Markdown after "### Architecture" - // Deprecated. Use BlueprintContent.Architecture instead. - Architecture []string `json:"architecture,omitempty" yaml:"architecture,omitempty"` -} - -// A time estimate in secs required for configuring and deploying the blueprint. -type BlueprintTimeEstimate struct { - // Gen: auto-generated - Set using the content defined under "### DeploymentTime" E.g. - // ### DeploymentTime - // - Configuration: X secs - // - Deployment: Y secs - ConfigurationSecs int `json:"configurationSecs,omitempty" yaml:"configurationSecs,omitempty"` - DeploymentSecs int `json:"deploymentSecs,omitempty" yaml:"deploymentSecs,omitempty"` -} - -// The cost estimate for the blueprint based on pre-configured variables. -type BlueprintCostEstimate struct { - // Gen: auto-generated - Set using the content defined under "### Cost" as a link - // with a description E.g. - // ### Cost - // [$20.00](https://cloud.google.com/products/calculator?hl=en_US&_ga=2.1665458.-226505189.1675191136#id=02fb0c45-cc29-4567-8cc6-f72ac9024add) - Description string `json:"description" yaml:"description"` - URL string `json:"url" yaml:"url"` -} - -// GCP cloud product(s) used in the blueprint. -type BlueprintCloudProduct struct { - // A top-level (e.g. "Compute Engine") or secondary (e.g. "Binary Authorization") - // product used in the blueprint. - // Gen: manually-authored - ProductId string `json:"productId,omitempty" yaml:"productId,omitempty"` - - // Url for the product. - // Gen: manually-authored - PageURL string `json:"pageUrl" yaml:"pageUrl"` - - // A label string for the product, if it is not an integrated GCP product. - // E.g. "Data Studio" - // Gen: manually-authored - Label string `json:"label,omitempty" yaml:"label,omitempty"` - - // Is the product's landing page external to the GCP console e.g. - // lookerstudio.google.com - // Gen: manually-authored - IsExternal bool `json:"isExternal,omitempty" yaml:"isExternal,omitempty"` -} - -// BlueprintOrgPolicyCheck defines GCP org policies to be checked -// for successful deployment -type BlueprintOrgPolicyCheck struct { - // Id for the policy e.g. "compute-vmExternalIpAccess" - // Gen: manually-authored - PolicyId string `json:"policyId" yaml:"policyId"` - - // If not set, it is assumed any version of this org policy - // prevents successful deployment of this solution. - // Gen: manually-authored - RequiredValues []string `json:"requiredValues,omitempty" yaml:"requiredValues,omitempty"` -} - -type QuotaResourceType string - -const ( - QuotaResTypeUndefined QuotaResourceType = "QRT_UNDEFINED" - QuotaResTypeGCEInstance QuotaResourceType = "QRT_GCE_INSTANCE" - QuotaResTypeGCEDisk QuotaResourceType = "QRT_GCE_DISK" -) - -type QuotaType string - -const ( - MachineType QuotaType = "MACHINE_TYPE" - CPUs QuotaType = "CPUs" - DiskType QuotaType = "DISK_TYPE" - DiskSizeGB QuotaType = "SIZE_GB" -) - -type BlueprintQuotaDetail struct { - // DynamicVariable, if provided, associates the provided input variable - // with the corresponding resource and quota type. In its absence, the quota - // detail is assumed to be fixed. - // Gen: manually-authored - DynamicVariable string `json:"dynamicVariable,omitempty" yaml:"dynamicVariable,omitempty"` - - // ResourceType is the type of resource the quota will be applied to i.e. - // GCE Instance or Disk etc. - // Gen: manually-authored - ResourceType QuotaResourceType `json:"resourceType" yaml:"resourceType" jsonschema:"enum=QRT_GCE_INSTANCE,enum=QRT_GCE_DISK,enum=QRT_UNDEFINED"` - - // QuotaType is a key/value pair of the actual quotas and their corresponding - // values. - // Gen: manually-authored - QuotaType map[QuotaType]string `json:"quotaType" yaml:"quotaType"` -} - -type BlueprintAuthor struct { - // Name of template author or organization. - // Gen: manually-authored - Title string `json:"title" yaml:"title"` - - // Description of the author. - // Gen: manually-authored - Description string `json:"description,omitempty" yaml:"description,omitempty"` - - // Link to the author's website. - // Gen: manually-authored - URL string `json:"url,omitempty" yaml:"url,omitempty"` -} - -type SoftwareGroupType string - -const ( - SG_Unspecified SoftwareGroupType = "SG_UNSPECIFIED" - SG_OS SoftwareGroupType = "SG_OS" -) - -// A group of related software components for the blueprint. -type BlueprintSoftwareGroup struct { - // Pre-defined software types. - // Gen: manually-authored - Type SoftwareGroupType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=SG_UNSPECIFIED,enum=SG_OS"` - - // Software components belonging to this group. - // Gen: manually-authored - Software []BlueprintSoftware `json:"software,omitempty" yaml:"software,omitempty"` -} - -// A description of a piece of a single software component -// installed by the blueprint. -type BlueprintSoftware struct { - // User-visible title. - // Gen: manually-authored - Title string `json:"title" yaml:"title"` - - // Software version. - // Gen: manually-authored - Version string `json:"version,omitempty" yaml:"version,omitempty"` - - // Link to development site or marketing page for this software. - // Gen: manually-authored - URL string `json:"url,omitempty" yaml:"url,omitempty"` - - // Link to license page. - // Gen: manually-authored - LicenseURL string `json:"licenseUrl,omitempty" yaml:"licenseUrl,omitempty"` -} - -// A description of a support option -type BlueprintSupport struct { - // Description of the support option. - // Gen: manually-authored - Description string `json:"description" yaml:"description"` - - // Link to the page providing this support option. - // Gen: manually-authored - URL string `json:"url,omitempty" yaml:"url,omitempty"` - - // The organization or group that provides the support option (e.g.: - // "Community", "Google"). - // Gen: manually-authored - Entity string `json:"entity,omitempty" yaml:"entity,omitempty"` - - // Whether to show the customer's support ID. - // Gen: manually-authored - ShowSupportId bool `json:"showSupportId,omitempty" yaml:"showSupportId,omitempty"` -} - -// BlueprintContent defines the detail for blueprint related content such as -// related documentation, diagrams, examples etc. -type BlueprintContent struct { - // Gen: auto-generated - Architecture BlueprintArchitecture `json:"architecture,omitempty" yaml:"architecture,omitempty"` - - // Gen: manually-authored - Diagrams []BlueprintDiagram `json:"diagrams,omitempty" yaml:"diagrams,omitempty"` - - // Gen: auto-generated - the list content following the "## Documentation" tag. E.g. - // ## Documentation - // - [Hosting a Static Website](https://cloud.google.com/storage/docs/hosting-static-website) - Documentation []BlueprintListContent `json:"documentation,omitempty" yaml:"documentation,omitempty"` - - // Gen: auto-generated - blueprints under the modules/ folder. - SubBlueprints []BlueprintMiscContent `json:"subBlueprints,omitempty" yaml:"subBlueprints,omitempty"` - - // Gen: auto-generated - examples under the examples/ folder. - Examples []BlueprintMiscContent `json:"examples,omitempty" yaml:"examples,omitempty"` -} - -// BlueprintInterface defines the input and output variables for the blueprint. -type BlueprintInterface struct { - // Gen: auto-generated - all defined variables for the blueprint - Variables []BlueprintVariable `json:"variables,omitempty" yaml:"variables,omitempty"` - - // Gen: manually-authored - VariableGroups []BlueprintVariableGroup `json:"variableGroups,omitempty" yaml:"variableGroups,omitempty"` - - // Gen: auto-generated - all defined outputs for the blueprint - Outputs []BlueprintOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` -} - -// BlueprintRequirements defines the roles required and the associated services -// that need to be enabled to provision blueprint resources. -type BlueprintRequirements struct { - // Gen: auto-generated - all roles required for the blueprint in test/setup/iam.tf - // as the "int_required_roles" local. E.g. - // locals { - // int_required_roles = [ - // "roles/compute.admin", - // ] - // } - Roles []BlueprintRoles `json:"roles,omitempty" yaml:"roles,omitempty"` - - // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf - // as "activate_apis" in the project module. - Services []string `json:"services,omitempty" yaml:"services,omitempty"` -} - -type BlueprintArchitecture struct { - // Gen: auto-generated - the URL & list content following the "## Architecture" tag e.g. - // ## Architecture - // ![Blueprint Architecture](assets/architecture.png) - // 1. Step no. 1 - // 2. Step no. 2 - // 3. Step no. 3 - DiagramURL string `json:"diagramUrl" yaml:"diagramUrl"` - - // Gen: auto-generated - the list items following the "## Architecture" tag. - Description []string `json:"description" yaml:"description"` -} - -type BlueprintDiagram struct { - Name string `json:"name" yaml:"name"` - AltText string `json:"altText,omitempty" yaml:"altText,omitempty"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` -} - -type BlueprintMiscContent struct { - Name string `json:"name" yaml:"name"` - Location string `json:"location,omitempty" yaml:"location,omitempty"` -} - -type BlueprintListContent struct { - Title string `json:"title" yaml:"title"` - URL string `json:"url,omitempty" yaml:"url,omitempty"` -} - -type BlueprintVariable struct { - Name string `json:"name,omitempty" yaml:"name,omitempty"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` - VarType string `json:"varType,omitempty" yaml:"varType,omitempty"` - DefaultValue interface{} `json:"defaultValue,omitempty" yaml:"defaultValue,omitempty"` - Required bool `json:"required,omitempty" yaml:"required,omitempty"` -} - -type BlueprintVariableGroup struct { - Name string `json:"name" yaml:"name"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` - Variables []string `json:"variables,omitempty" yaml:"variables,omitempty"` -} - -type BlueprintOutput struct { - Name string `json:"name" yaml:"name"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` -} - -type BlueprintRoles struct { - Level string `json:"level" yaml:"level"` - Roles []string `json:"roles" yaml:"roles"` -} diff --git a/cli/bpmetadata/types_ui.go b/cli/bpmetadata/types_ui.go deleted file mode 100644 index 957fab7f6d4..00000000000 --- a/cli/bpmetadata/types_ui.go +++ /dev/null @@ -1,186 +0,0 @@ -package bpmetadata - -// BlueprintUI is the top-level structure for holding UI specific metadata. -type BlueprintUI struct { - // The top-level input section that defines the list of variables and - // their sections on the deployment page. - // Gen: partial - Input BlueprintUIInput `json:"input,omitempty" yaml:"input,omitempty"` - - // The top-level section for listing runtime (or blueprint output) information - // i.e. the console URL for the VM or a button to ssh into the VM etc based on. - // Gen: manually-authored - Runtime BlueprintUIOutput `json:"runtime,omitempty" yaml:"runtime,omitempty"` -} - -// BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. -type BlueprintUIInput struct { - // variables is a map defining all inputs on the UI. - // Gen: partial - Variables map[string]*DisplayVariable `json:"variables,omitempty" yaml:"variables,omitempty"` - - // Sections is a generic structure for grouping inputs together. - // Gen: manually-authored - Sections []DisplaySection `json:"sections,omitempty" yaml:"sections,omitempty"` -} - -// Additional display specific metadata pertaining to a particular -// input variable. -type DisplayVariable struct { - // The variable name from the corresponding standard metadata file. - // Gen: auto-generated - the Terraform variable name - Name string `json:"name" yaml:"name"` - - // Visible title for the variable on the UI. If not present, - // Name will be used for the Title. - // Gen: auto-generated - the Terraform variable converted to title case e.g. - // variable "bucket_admins" will convert to "Bucket Admins" as the title. - Title string `json:"title" yaml:"title"` - - // A flag to hide or show the variable on the UI. - // Gen: manually-authored - Invisible bool `json:"invisible,omitempty" yaml:"invisible,omitempty"` - - // Variable tooltip. - // Gen: manually-authored - Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` - - // Placeholder text (when there is no default). - // Gen: manually-authored - Placeholder string `json:"placeholder,omitempty" yaml:"placeholder,omitempty"` - - // Text describing the validation rules for the property. Typically shown - // after an invalid input. - // Optional. UTF-8 text. No markup. At most 128 characters. - // Gen: manually-authored - Validation string `json:"validation,omitempty" yaml:"validation,omitempty"` - - // Regex based validation rules for the variable. - // Gen: manually-authored - RegExValidation string `json:"regexValidation,omitempty" yaml:"regexValidation,omitempty"` - - // Minimum no. of inputs for the input variable. - // Gen: manually-authored - MinimumItems int `json:"minItems,omitempty" yaml:"minItems,omitempty"` - - // Max no. of inputs for the input variable. - // Gen: manually-authored - MaximumItems int `json:"maxItems,omitempty" yaml:"maxItems,omitempty"` - - // Minimum length for string values. - // Gen: manually-authored - MinimumLength int `json:"minLength,omitempty" yaml:"minLength,omitempty"` - - // Max length for string values. - // Gen: manually-authored - MaximumLength int `json:"maxLength,omitempty" yaml:"maxLength,omitempty"` - - // Minimum value for numeric types. - // Gen: manually-authored - Minimum float32 `json:"min,omitempty" yaml:"min,omitempty"` - - // Max value for numeric types. - // Gen: manually-authored - Maximum float32 `json:"max,omitempty" yaml:"max,omitempty"` - - // The name of a section to which this variable belongs. - // variables belong to the root section if this field is - // not set. - // Gen: manually-authored - Section string `json:"section,omitempty" yaml:"section,omitempty"` - - // UI extension associated with the input variable. - // E.g. for rendering a GCE machine type selector: - // - // xGoogleProperty: - // type: GCE_MACHINE_TYPE - // zoneProperty: myZone - // gceMachineType: - // minCpu: 2 - // minRamGb: 6 - // Gen: manually-authored - XGoogleProperty GooglePropertyExtension `json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty"` -} - -// A logical group of variables. [Section][]s may also be grouped into -// sub-sections. -type DisplaySection struct { - // The name of the section, referenced by DisplayVariable.Section - // Section names must be unique. - // Gen: manually-authored - Name string `json:"name" yaml:"name"` - - // Section title. - // If not provided, name will be used instead. - // Gen: manually-authored - Title string `json:"title,omitempty" yaml:"title,omitempty"` - - // Section tooltip. - // Gen: manually-authored - Tooltip string `json:"tooltip,omitempty" yaml:"tooltip,omitempty"` - - // Section subtext. - // Gen: manually-authored - Subtext string `json:"subtext,omitempty" yaml:"subtext,omitempty"` - - // The name of the parent section (if parent is not the root section). - // Gen: manually-authored - Parent string `json:"parent,omitempty" yaml:"parent,omitempty"` -} - -type BlueprintUIOutput struct { - // Short message to be displayed while the blueprint is deploying. - // At most 128 characters. - // Gen: manually-authored - OutputMessage string `json:"outputMessage,omitempty" yaml:"outputMessage,omitempty"` - - // List of suggested actions to take. - // Gen: manually-authored - SuggestedActions []UIActionItem `json:"suggestedActions,omitempty" yaml:"suggestedActions,omitempty"` - - // Outputs is a map defining a subset of Terraform outputs on the UI - // that may need additional UI configuration. - // Gen: manually-authored - Outputs map[string]DisplayOutput `json:"outputs,omitempty" yaml:"outputs,omitempty"` -} - -// An item appearing in a list of required or suggested steps. -type UIActionItem struct { - // Summary heading for the item. - // Required. Accepts string expressions. At most 64 characters. - // Gen: manually-authored - Heading string `json:"heading" yaml:"heading"` - - // Longer description of the item. - // At least one description or snippet is required. - // Accepts string expressions. HTML <a href> - // tags only. At most 512 characters. - // Gen: manually-authored - Description string `json:"description,omitempty" yaml:"description,omitempty"` - - // Fixed-width formatted code snippet. - // At least one description or snippet is required. - // Accepts string expressions. UTF-8 text. At most 512 characters. - // Gen: manually-authored - Snippet string `json:"snippet,omitempty" yaml:"snippet,omitempty"` - - // If present, this expression determines whether the item is shown. - // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP - // where `externalIP` is the output. - // Gen: manually-authored - ShowIf string `json:"showIf,omitempty" yaml:"showIf,omitempty"` -} - -// Additional display specific metadata pertaining to a particular -// Terraform output. -type DisplayOutput struct { - // OpenInNewTab defines if the Output action should be opened - // in a new tab. - // Gen: manually-authored - OpenInNewTab bool `json:"openInNewTab,omitempty" yaml:"openInNewTab,omitempty"` - - // ShowInNotification defines if the Output should shown in - // notification for the deployment. - // Gen: manually-authored - ShowInNotification bool `json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` -} diff --git a/cli/bpmetadata/types_ui_ext.go b/cli/bpmetadata/types_ui_ext.go deleted file mode 100644 index e949205adba..00000000000 --- a/cli/bpmetadata/types_ui_ext.go +++ /dev/null @@ -1,173 +0,0 @@ -package bpmetadata - -type ExtensionType string - -const ( - ExtTypeUndefined ExtensionType = "ET_UNDEFINED" - - // General formats. - EmailAddress ExtensionType = "ET_EMAIL_ADDRESS" - MultiLineString ExtensionType = "ET_MULTI_LINE_STRING" - - // GCE related. - GCEDiskImage ExtensionType = "ET_GCE_DISK_IMAGE" - GCEDiskType ExtensionType = "ET_GCE_DISK_TYPE" - GCEDiskSize ExtensionType = "ET_GCE_DISK_SIZE" - GCEMachineType ExtensionType = "ET_GCE_MACHINE_TYPE" - GCENetwork ExtensionType = "ET_GCE_NETWORK" - GCEZone ExtensionType = "ET_GCE_ZONE" - GCESubnetwork ExtensionType = "ET_GCE_SUBNETWORK" - GCERegion ExtensionType = "ET_GCE_REGION" - GCEGPUType ExtensionType = "ET_GCE_GPU_TYPE" - GCEGPUCount ExtensionType = "ET_GCE_GPU_COUNT" - GCEExternalIP ExtensionType = "ET_GCE_EXTERNAL_IP" - GCEIPForwarding ExtensionType = "ET_GCE_IP_FORWARDING" - GCEFirewall ExtensionType = "ET_GCE_FIREWALL" - GCEFirewallRange ExtensionType = "ET_GCE_FIREWALL_RANGE" - GCEGenericResource ExtensionType = "ET_GCE_GENERIC_RESOURCE" - - // GCS related. - GCSBucket ExtensionType = "ET_GCS_BUCKET" - - // IAM related. - IAMServiceAccount ExtensionType = "ET_IAM_SERVICE_ACCOUNT" -) - -// An extension for variables defined as part of DisplayVariable. The -// extension defines Google-specifc metadata necessary for choosing an -// appropriate input widget or adding restrictions to GCP-specific resources. -type GooglePropertyExtension struct { - // Gen: manually-authored - Type ExtensionType `json:"type" yaml:"type" jsonschema:"enum=ET_EMAIL_ADDRESS,enum=ET_MULTI_LINE_STRING,enum=ET_GCE_DISK_IMAGE,enum=ET_GCE_DISK_TYPE,enum=ET_GCE_DISK_SIZE,enum=ET_GCE_MACHINE_TYPE,enum=ET_GCE_NETWORK,enum=ET_GCE_ZONE,enum=ET_GCE_SUBNETWORK,enum=ET_GCE_REGION,enum=ET_GCE_GPU_TYPE,enum=ET_GCE_GPU_COUNT,enum=ET_GCE_EXTERNAL_IP,enum=ET_GCE_IP_FORWARDING,enum=ET_GCE_FIREWALL,enum=ET_GCE_FIREWALL_RANGE,enum=ET_GCE_GENERIC_RESOURCE,enum=ET_GCS_BUCKET,enum=ET_IAM_SERVICE_ACCOUNT"` - - // Some properties (e.g. GCE_MACHINE_TYPE) require a zone context in order to - // determine the set of allowable values. This field references another - // property from the schema, which must have type GCE_ZONE. - // Gen: manually-authored - ZoneProperty string `json:"zoneProperty,omitempty" yaml:"zoneProperty,omitempty"` - - // Property-specific extensions. - // Gen: manually-authored (all property extensions and their child properties) - GCEMachineType GCEMachineTypeExtension `json:"gceMachineType,omitempty" yaml:"gceMachineType,omitempty"` - GCEDiskSize GCEDiskSizeExtension `json:"gceDiskSize,omitempty" yaml:"gceDiskSize,omitempty"` - GCESubnetwork GCESubnetworkExtension `json:"gceSubnetwork,omitempty" yaml:"gceSubnetwork,omitempty"` - GCEResource GCEGenericResourceExtension `json:"gceResource,omitempty" yaml:"gceResource,omitempty"` - GCEGPUType GCEGPUTypeExtension `json:"gceGpuType,omitempty" yaml:"gceGpuType,omitempty"` - GCEGPUCount GCEGPUCountExtension `json:"gceGpuCount,omitempty" yaml:"gceGpuCount,omitempty"` - GCENetwork GCENetworkExtension `json:"gceNetwork,omitempty" yaml:"gceNetwork,omitempty"` - GCEExternalIP GCEExternalIPExtension `json:"gceExternalIp,omitempty" yaml:"gceExternalIp,omitempty"` - GCEIPForwarding GCEIPForwardingExtension `json:"gceIpForwarding,omitempty" yaml:"gceIpForwarding,omitempty"` - GCEFirewall GCEFirewallExtension `json:"gceFirewall,omitempty" yaml:"gceFirewall,omitempty"` - GCEFirewallRange GCEFirewallRangeExtension `json:"gceFirewallRange,omitempty" yaml:"gceFirewallRange,omitempty"` - GCEZone GCELocationExtension `json:"gceZone,omitempty" yaml:"gceZone,omitempty"` - GCERegion GCELocationExtension `json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"` - IAMServiceAccount IAMServiceAccountExtension `json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"` -} - -type GCELocationExtension struct { - AllowlistedZones []string `json:"allowlistedZones,omitempty" yaml:"allowlistedZones,omitempty"` - AllowlistedRegions []string `json:"allowlistedRegions,omitempty" yaml:"allowlistedRegions,omitempty"` -} - -type GCEMachineTypeExtension struct { - // Minimum cpu. Used to filter the list of selectable machine types. - MinCPU int `json:"minCpu,omitempty" yaml:"minCpu,omitempty"` - - // Minimum ram. Used to filter the list of selectable machine types. - MinRAMGB float32 `json:"minRamGb,omitempty" yaml:"minRamGb,omitempty"` - - // If true, custom machine types will not be selectable. - // More info: - // https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type - DisallowCustomMachineTypes bool `json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty"` -} - -type GCEGPUTypeExtension struct { - MachineType string `json:"machineType" yaml:"machineType"` - GPUType []string `json:"gpuType,omitempty" yaml:"gpuType,omitempty"` -} - -type GCEGPUCountExtension struct { - // This field references another variable from the schema, - // which must have type GCEMachineType. - MachineTypeVariable string `json:"machineTypeVariable" yaml:"machineTypeVariable"` -} - -type GCEDiskSizeExtension struct { - // The allowable range of disk sizes depends on the disk type. This field - // references another variable from the schema, which must have type GCEDiskType. - DiskTypeVariable string `json:"diskTypeVariable" yaml:"diskTypeVariable"` -} - -type GCENetworkExtension struct { - // AllowSharedVpcs indicates this solution can receive - // shared VPC selflinks (fully qualified compute links). - AllowSharedVPCs bool `json:"allowSharedVpcs,omitempty" yaml:"allowSharedVpcs,omitempty"` - // Used to indicate to which machine type this network interface will be - // attached to. - MachineTypeVariable string `json:"machineTypeVariable" yaml:"machineTypeVariable"` - // Label that will be in front of each Network Interface. - Labels []string `json:"labels,omitempty" yaml:"labels,omitempty"` -} - -type ExternalIPType string - -const ( - IPUnspecified ExternalIPType = "IP_UNSPECIFIED" - IPEphemeral ExternalIPType = "IP_EPHEMERAL" - IPNone ExternalIPType = "NONE" -) - -type GCEExternalIPExtension struct { - // NetworkVariable is used to indicate the network variable in the schema - // this external IP belongs to. - NetworkVariable string `json:"networkVariable" yaml:"networkVariable"` - - // Type specifies if the external IP is ephemeral or static. - // Defaults to ephemeral if not specified. - Type ExternalIPType `json:"type,omitempty" yaml:"type,omitempty" jsonschema:"enum=IP_UNSPECIFIED,enum=IP_EPHEMERAL,enum=NONE"` - - // Flag to denote if an external IP should be configurable. - NotConfigurable bool `json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` - - // Flag to denote if static IPs are allowed for the external IP. - AllowStaticIPs bool `json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty"` -} - -type GCEIPForwardingExtension struct { - // NetworkVariable is used to indicate the network variable in the schema - // this external IP belongs to. - NetworkVariable string `json:"networkVariable" yaml:"networkVariable"` - NotConfigurable bool `json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` -} - -type GCEFirewallExtension struct { - // NetworkVariable is used to indicate the network variable in the schema - // this external IP belongs to. - NetworkVariable string `json:"networkVariable" yaml:"networkVariable"` -} - -type GCEFirewallRangeExtension struct { - // FirewallVariable is used to indicate the firewall variable with the type - // GCEFirewall in the schema to which this firewall range belongs to. - FirewallVariable string `json:"firewallVariable" yaml:"firewallVariable"` -} - -type GCESubnetworkExtension struct { - // Subnetwork variable requires a network context in order to determine the - // set of available subnetworks. This field references another - // variable from the schema, which must have type GCENetwork. - NetworkVariable string `json:"networkVariable" yaml:"networkVariable"` -} - -type GCEGenericResourceExtension struct { - // GCE resource type to be fetched. This field references another - // property from the schema, which must have type GCEGenericResource. - ResourceVariable string `json:"resourceVariable" yaml:"resourceVariable"` -} - -type IAMServiceAccountExtension struct { - // List of IAM roles that to grant to a new SA, or the roles to filter - // existing SAs with. - Roles []string `json:"roles" yaml:"roles"` -} diff --git a/cli/go.mod b/cli/go.mod index 7eb014fb09b..83753bb7f01 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -11,6 +11,7 @@ require ( github.com/fatih/color v1.15.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.7.0 + github.com/goccy/go-yaml v1.11.0 github.com/golang/protobuf v1.5.3 github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a github.com/google/go-cmp v0.5.9 @@ -32,11 +33,12 @@ require ( github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 + golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df golang.org/x/oauth2 v0.9.0 golang.org/x/text v0.10.0 google.golang.org/api v0.129.0 + google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 - sigs.k8s.io/kustomize/kyaml v0.14.2 sigs.k8s.io/yaml v1.3.0 ) @@ -165,7 +167,7 @@ require ( go.opentelemetry.io/otel/trace v1.10.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/crypto v0.10.0 // indirect - golang.org/x/mod v0.10.0 // indirect + golang.org/x/mod v0.11.0 // indirect golang.org/x/net v0.11.0 // indirect golang.org/x/sys v0.9.0 // indirect golang.org/x/term v0.9.0 // indirect @@ -177,7 +179,6 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/grpc v1.56.1 // indirect - google.golang.org/protobuf v1.31.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect @@ -195,5 +196,6 @@ require ( sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.36 // indirect sigs.k8s.io/controller-runtime v0.14.6 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/kustomize/kyaml v0.14.2 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 58798c75206..9163a6e1c21 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -298,6 +298,9 @@ github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/validate v0.21.0 h1:+Wqk39yKOhfpLqNLEC0/eViCkzM5FVXVqrvt526+wcI= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= @@ -329,6 +332,8 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-yaml v1.11.0 h1:n7Z+zx8S9f9KgzG6KtQKf+kwqXZlLNR2F6018Dgau54= +github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -550,6 +555,7 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -909,6 +915,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-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME= +golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= 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= @@ -936,8 +944,8 @@ golang.org/x/mod v0.4.1/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 1d5916c5919..2800ddbfbe0 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -331,6 +331,7 @@ function generate_metadata() { if [ $? -ne 0 ]; then echo "Warning! Unable to generate metadata." + return 1 fi # add headers since comments are not preserved with metadata generation # TODO: b/260869608 From e256d2fdfb10a8a7f86a37145f3388df353cea13 Mon Sep 17 00:00:00 2001 From: Adam Ross Date: Tue, 1 Aug 2023 16:40:03 -0700 Subject: [PATCH 0505/1371] feat: add utils.PollE (#1729) --- .../pkg/utils/asserthttp_test.go | 30 ------ infra/blueprint-test/pkg/utils/poll.go | 53 ++++++++++- infra/blueprint-test/pkg/utils/poll_test.go | 92 +++++++++++++++++++ infra/blueprint-test/pkg/utils/utils_test.go | 52 +++++++++++ 4 files changed, 193 insertions(+), 34 deletions(-) create mode 100644 infra/blueprint-test/pkg/utils/poll_test.go create mode 100644 infra/blueprint-test/pkg/utils/utils_test.go diff --git a/infra/blueprint-test/pkg/utils/asserthttp_test.go b/infra/blueprint-test/pkg/utils/asserthttp_test.go index 75679d1f3b9..c826eaa8844 100644 --- a/infra/blueprint-test/pkg/utils/asserthttp_test.go +++ b/infra/blueprint-test/pkg/utils/asserthttp_test.go @@ -17,7 +17,6 @@ package utils_test import ( - "errors" "fmt" "net/http" "net/http/httptest" @@ -178,32 +177,3 @@ func TestAssertResponse(t *testing.T) { }) }) } - -// inspectableT wraps testing.T, overriding testing behavior to make error cases retrievable. -type inspectableT struct { - *testing.T - err error -} - -func (it *inspectableT) Error(args ...interface{}) { - it.addError(args...) -} - -func (it *inspectableT) Errorf(format string, args ...interface{}) { - a := append([]interface{}{format}, args) - it.addError(a) -} - -func (it *inspectableT) Fatal(args ...interface{}) { - it.addError(args...) -} - -func (it *inspectableT) Fatalf(format string, args ...interface{}) { - a := append([]interface{}{format}, args) - it.addError(a) -} - -func (it *inspectableT) addError(args ...interface{}) { - s := fmt.Sprint(args...) - it.err = errors.Join(it.err, errors.New(s)) -} diff --git a/infra/blueprint-test/pkg/utils/poll.go b/infra/blueprint-test/pkg/utils/poll.go index c69a69018b4..3461ce0e1e8 100644 --- a/infra/blueprint-test/pkg/utils/poll.go +++ b/infra/blueprint-test/pkg/utils/poll.go @@ -17,6 +17,7 @@ package utils import ( + "fmt" "time" "github.com/mitchellh/go-testing-interface" @@ -25,12 +26,21 @@ import ( // Polls on a particular condition function while the returns true. // It fails the test if the condition is not met within numRetries. func Poll(t testing.TB, condition func() (bool, error), numRetries int, interval time.Duration) { + err := PollE(t, condition, numRetries, interval) + if err != nil { + t.Fatalf("failed to pull provided condition after %d retries, last error: %v", numRetries, err) + } +} + +// Polls on a particular condition function while the returns true. +// Returns an error if the condition is not met within numRetries. +func PollE(t testing.TB, condition func() (bool, error), numRetries int, interval time.Duration) error { if numRetries < 0 { - t.Fatal("invalid value for numRetries. Must be >= 0") + return &PollParameterError{"invalid value for numRetries. Must be >= 0"} } if interval <= 0 { - t.Fatal("invalid value for numRetries. Must be > 0") + return &PollParameterError{"invalid value for interval. Must be > 0"} } retry, err := condition() @@ -45,10 +55,45 @@ func Poll(t testing.TB, condition func() (bool, error), numRetries int, interval } if err != nil { - t.Fatalf("failed to pull provided condition after %d retries, last error: %v", numRetries, err) + return &PollConditionError{err: err, numRetries: numRetries} } if retry { - t.Fatalf("polling timed out after %d retries with %d second intervals", numRetries, interval/time.Second) + return &PollRetryLimitExceededError{interval: interval, numRetries: numRetries} } + + return nil +} + +// PollParameterError is returend by PollE when input parameters are invalid. +type PollParameterError struct { + msg string +} + +func (e *PollParameterError) Error() string { + return e.msg +} + +// PollRetryLimitExceededError is returned by PollE when retries exceed numRetries. +type PollRetryLimitExceededError struct { + numRetries int + interval time.Duration +} + +func (e *PollRetryLimitExceededError) Error() string { + return fmt.Sprintf("polling timed out after %d retries with %.2f second intervals", e.numRetries, e.interval.Seconds()) +} + +// PollConditionError is an error returned on the final PollE attempt. +type PollConditionError struct { + err error + numRetries int +} + +func (e *PollConditionError) Error() string { + return fmt.Sprintf("failed to pull provided condition after %d retries, last error: %v", e.numRetries, e.err) +} + +func (e *PollConditionError) Unwrap() error { + return e.err } diff --git a/infra/blueprint-test/pkg/utils/poll_test.go b/infra/blueprint-test/pkg/utils/poll_test.go new file mode 100644 index 00000000000..c76dbc2dd01 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/poll_test.go @@ -0,0 +1,92 @@ +/** + * Copyright 2023 Google LLC + * + * 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 utils_test + +import ( + "errors" + "strings" + "testing" + "time" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" +) + +func TestPoll(t *testing.T) { + testcases := []struct { + label string + condition func() (bool, error) + want string + }{ + { + label: "error", + condition: func() (bool, error) { + return true, errors.New("condition failure") + }, + want: "condition failure", + }, + { + label: "timeout", + condition: func() (bool, error) { + return true, nil + }, + want: "polling timed out", + }, + } + + for _, tc := range testcases { + t.Run(tc.label, func(t *testing.T) { + it := &inspectableT{t, nil} + utils.Poll(it, tc.condition, 3, time.Millisecond) + if !strings.Contains(it.err.Error(), tc.want) { + t.Errorf("got %v, want %v", it.err, tc.want) + } + }) + } +} + +func TestPollE(t *testing.T) { + testcases := []struct { + label string + condition func() (bool, error) + want string + }{ + { + label: "error", + condition: func() (bool, error) { + return true, errors.New("condition failure") + }, + want: "condition failure", + }, + { + label: "timeout", + condition: func() (bool, error) { + return true, nil + }, + want: "polling timed out", + }, + } + + for _, tc := range testcases { + t.Run(tc.label, func(t *testing.T) { + it := &inspectableT{t, nil} + err := utils.PollE(it, tc.condition, 3, time.Millisecond) + if !strings.Contains(err.Error(), tc.want) { + t.Errorf("got %v, want %v", it.err, tc.want) + } + }) + } +} diff --git a/infra/blueprint-test/pkg/utils/utils_test.go b/infra/blueprint-test/pkg/utils/utils_test.go new file mode 100644 index 00000000000..6ccb7531af0 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/utils_test.go @@ -0,0 +1,52 @@ +/** + * Copyright 2023 Google LLC + * + * 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 utils_test + +import ( + "errors" + "fmt" + "testing" +) + +// inspectableT wraps testing.T, overriding testing behavior to make error cases retrievable. +type inspectableT struct { + *testing.T + err error +} + +func (it *inspectableT) Error(args ...interface{}) { + it.addError(args...) +} + +func (it *inspectableT) Errorf(format string, args ...interface{}) { + a := append([]interface{}{format}, args) + it.addError(a) +} + +func (it *inspectableT) Fatal(args ...interface{}) { + it.addError(args...) +} + +func (it *inspectableT) Fatalf(format string, args ...interface{}) { + a := append([]interface{}{format}, args) + it.addError(a) +} + +func (it *inspectableT) addError(args ...interface{}) { + s := fmt.Sprint(args...) + it.err = errors.Join(it.err, errors.New(s)) +} From 0d9da3c854645bd34db4087f8f137d9f41f67ffd Mon Sep 17 00:00:00 2001 From: Imran Nayer Date: Wed, 2 Aug 2023 13:15:33 -0500 Subject: [PATCH 0506/1371] chore: add Spanner module (#1737) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index d662de731dc..b9a258c1930 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -745,5 +745,12 @@ locals { description = "Creates self-hosted Terraform Cloud Agent on Google Cloud" topics = join(",", [local.common_topics.ops, local.common_topics.security, local.common_topics.devtools]) }, + { + name = "terraform-google-cloud-spanner" + org = "GoogleCloudPlatform" + description = "Deploy Spanner" + owners = ["anaik91", "imrannayer"] + topics = local.common_topics.db + }, ] } From 28fb94728f2fc1948d3e1c49e6e203bd3fe4896e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 3 Aug 2023 18:13:04 +0200 Subject: [PATCH 0507/1371] chore(deps): update github/codeql-action action to v2.21.1 (#1744) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index cb4cc38387c..3b5701040d3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@1813ca74c3faaa3a2da2070b9b8a0b3e7373a0d8 # v2.21.0 + uses: github/codeql-action/upload-sarif@6ca1aa8c195c3ca3e77c174fe0356db1bce3b319 # v2.21.1 with: sarif_file: results.sarif From 5b09fc1119259a729dae24197c664ac230b011c7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 3 Aug 2023 18:14:23 +0200 Subject: [PATCH 0508/1371] chore(deps): update github/codeql-action action to v2.21.2 (#1745) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3b5701040d3..e4705ede443 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@6ca1aa8c195c3ca3e77c174fe0356db1bce3b319 # v2.21.1 + uses: github/codeql-action/upload-sarif@0ba4244466797eb048eb91a6cd43d5c03ca8bd05 # v2.21.2 with: sarif_file: results.sarif From 950f48ab6ba9ecb332d855cb286b6d549abdb06b Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 4 Aug 2023 10:33:29 -0700 Subject: [PATCH 0509/1371] fix: minor formatting fix for protos (#1746) --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata.pb.go | 6 +++--- cli/bpmetadata/proto/bpmetadata.proto | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 07cda1b828e..77f37cb5690 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.0 +VERSION=v1.2.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go index f777b3d25c1..6b6672d2124 100644 --- a/cli/bpmetadata/bpmetadata.pb.go +++ b/cli/bpmetadata/bpmetadata.pb.go @@ -2210,9 +2210,9 @@ var file_bpmetadata_proto_rawDesc = []byte{ 0x0a, 0x10, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, - 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, + 0x74, 0x61, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index 59d5d1a1762..1a0c23565e7 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -2,8 +2,8 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; -import "bpmetadata_ui.proto"; import "google/protobuf/struct.proto"; +import "bpmetadata_ui.proto"; // TODO: update copybara configuration for go to java package transformation option go_package = "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata"; From 5445b9c62c259bd7ea9a7762a85f257636aaf233 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 7 Aug 2023 10:24:36 -0700 Subject: [PATCH 0510/1371] chore: adding isaurabhuttam as owner to sql-db (#1740) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index b9a258c1930..1c1753b8f3f 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -476,6 +476,7 @@ locals { org = "terraform-google-modules" description = "Creates a Cloud SQL database instance" topics = local.common_topics.db + owners = ["isaurabhuttam"] }, { name = "terraform-google-startup-scripts" From 1e743a634d8e9e34b027ac9ac0e5e2a581997ae9 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Mon, 7 Aug 2023 17:24:00 -0400 Subject: [PATCH 0511/1371] fix: Make DEEPO owner of 15.2/deploy-java-gke (#1747) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 1c1753b8f3f..52a91951d88 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -662,8 +662,7 @@ locals { short_name = "deploy-java-gke" org = "GoogleCloudPlatform" description = "Deploy a Legacy Java App GKE" - owners = ["donmccasland"] - groups = [local.jss_common_group] + groups = ["dee-platform-ops", local.jss_common_group] enable_periodic = true lint_env = { ENABLE_BPMETADATA = "1" From 5e0a077a6a505ac07de710136c847c4f4478db72 Mon Sep 17 00:00:00 2001 From: Adam Ross Date: Tue, 8 Aug 2023 09:58:18 -0700 Subject: [PATCH 0512/1371] refactor: fix AssertHTTP retry and improved CFT practices (#1749) --- infra/blueprint-test/pkg/utils/asserthttp.go | 123 +++-- .../pkg/utils/asserthttp_test.go | 451 ++++++++++++------ 2 files changed, 400 insertions(+), 174 deletions(-) diff --git a/infra/blueprint-test/pkg/utils/asserthttp.go b/infra/blueprint-test/pkg/utils/asserthttp.go index f82e2b9109c..ddf68a4c0a7 100644 --- a/infra/blueprint-test/pkg/utils/asserthttp.go +++ b/infra/blueprint-test/pkg/utils/asserthttp.go @@ -17,6 +17,8 @@ package utils import ( + "errors" + "fmt" "io" "net/http" "strings" @@ -27,7 +29,9 @@ import ( // AssertHTTP provides a collection of HTTP asserts. type AssertHTTP struct { - httpClient *http.Client + httpClient *http.Client + retryCount int + retryInterval time.Duration } type assertOption func(*AssertHTTP) @@ -39,9 +43,21 @@ func WithHTTPClient(c *http.Client) assertOption { } } +// WithHTTPRequestRetries specifies a HTTP request retry policy. +func WithHTTPRequestRetries(count int, interval time.Duration) assertOption { + return func(ah *AssertHTTP) { + ah.retryCount = count + ah.retryInterval = interval + } +} + // NewAssertHTTP creates a new AssertHTTP with option overrides. func NewAssertHTTP(opts ...assertOption) *AssertHTTP { - ah := &AssertHTTP{http.DefaultClient} + ah := &AssertHTTP{ + httpClient: http.DefaultClient, + retryCount: 3, + retryInterval: 2 * time.Second, + } for _, opt := range opts { opt(ah) } @@ -51,7 +67,15 @@ func NewAssertHTTP(opts ...assertOption) *AssertHTTP { // AssertSuccessWithRetry runs httpRequest and retries on errors outside client control. func (ah *AssertHTTP) AssertSuccessWithRetry(t testing.TB, r *http.Request) { t.Helper() - Poll(t, ah.httpRequest(t, r), 3, 2*time.Second) + if ah.retryCount == 0 || ah.retryInterval == 0 { + ah.AssertSuccess(t, r) + return + } + + err := PollE(t, ah.httpRequest(t, r), ah.retryCount, ah.retryInterval) + if err != nil { + t.Error(err.Error()) + } } // AssertSuccess runs httpRequest without retry. @@ -59,14 +83,22 @@ func (ah *AssertHTTP) AssertSuccess(t testing.TB, r *http.Request) { t.Helper() _, err := ah.httpRequest(t, r)() if err != nil { - t.Fatal(err) + t.Error(err) } } // AssertResponseWithRetry runs httpResponse and retries on errors outside client control. func (ah *AssertHTTP) AssertResponseWithRetry(t testing.TB, r *http.Request, wantCode int, want ...string) { t.Helper() - Poll(t, ah.httpResponse(t, r, wantCode, want...), 3, 2*time.Second) + if ah.retryCount == 0 || ah.retryInterval == 0 { + ah.AssertSuccess(t, r) + return + } + + err := PollE(t, ah.httpResponse(t, r, wantCode, want...), ah.retryCount, ah.retryInterval) + if err != nil { + t.Error(err.Error()) + } } // AssertResponse runs httpResponse without retry. @@ -74,35 +106,37 @@ func (ah *AssertHTTP) AssertResponse(t testing.TB, r *http.Request, wantCode int t.Helper() _, err := ah.httpResponse(t, r, wantCode, want...)() if err != nil { - t.Fatal(err) + t.Error(err) } } // httpRequest verifies the request is successful by HTTP status code. func (ah *AssertHTTP) httpRequest(t testing.TB, r *http.Request) func() (bool, error) { t.Helper() + logger := GetLoggerFromT() + return func() (bool, error) { - t.Logf("Sending HTTP Request %s %s", r.Method, r.URL.String()) + logger.Logf(t, "Sending HTTP Request %s %s", r.Method, r.URL.String()) got, err := ah.httpClient.Do(r) if err != nil { return false, err } // Keep trying until the result is success or the request responsibility. - if retry := httpRetryCondition(got.StatusCode); retry { - return true, nil - } - // Any HTTP success will work. For a specific status use AssertResponse. - if got.StatusCode < http.StatusOK || got.StatusCode >= http.StatusMultipleChoices { - t.Errorf("want 2xx, got %d", got.StatusCode) + ok, retry := httpRetryCondition(got.StatusCode) + if !ok { + return retry, fmt.Errorf("want 2xx, got %d", got.StatusCode) } + logger.Logf(t, "Successful HTTP Request %s %s", r.Method, r.URL.String()) - return false, nil + return retry, nil } } // httpResponse verifies the requested response has the wanted status code and payload. func (ah *AssertHTTP) httpResponse(t testing.TB, r *http.Request, wantCode int, want ...string) func() (bool, error) { t.Helper() + logger := GetLoggerFromT() + return func() (bool, error) { t.Logf("Sending HTTP Request %s %s", r.Method, r.URL.String()) got, err := ah.httpClient.Do(r) @@ -111,53 +145,70 @@ func (ah *AssertHTTP) httpResponse(t testing.TB, r *http.Request, wantCode int, } defer got.Body.Close() + // Determine if the request is successful, and if the response indicates + // we should attempt a retry. + ok, retry := httpRetryCondition(got.StatusCode) + if ok { + logger.Logf(t, "Successful HTTP Request %s %s", r.Method, r.URL.String()) + } + + // e is the wrapped error for all expectation mismatches. + var e error if got.StatusCode != wantCode { - t.Errorf("response code: got %d, want %d", got.StatusCode, wantCode) - // Unwanted status code may be a server-side error condition that will clear. - // Assume unwanted success is not going to change. - return httpRetryCondition(got.StatusCode), nil + e = errors.Join(e, fmt.Errorf("response code: got %d, want %d", got.StatusCode, wantCode)) + } + + // No further processing required. + if len(want) == 0 { + return false, e } b, err := io.ReadAll(got.Body) if err != nil { - return true, err + return retry, errors.Join(e, err) } - out := string(b) - atLeastOneError := false + if len(b) == 0 { + return retry, errors.Join(e, errors.New("empty response body")) + } + + out := string(b) + var bodyErr error for _, fragment := range want { if !strings.Contains(out, fragment) { - t.Errorf("response body: want contained %q", fragment) - atLeastOneError = true + bodyErr = errors.Join(bodyErr, fmt.Errorf("response body does not contain %q", fragment)) } } - // Only output received HTTP response body once. - if atLeastOneError { - t.Log("response output:") - t.Log(out) + // Only log errors and response body once. + if bodyErr != nil { + logger.Logf(t, "response output:") + logger.Logf(t, strings.TrimSpace(out)) + return retry, errors.Join(e, bodyErr) } - return false, nil + return retry, e } } // httpRetryCondition indicates retry should be attempted on HTTP 1xx, 401, 403, and 5xx errors. // 401 and 403 are retried in case of lagging authorization configuration. -// On true return value a retry is preferred. -func httpRetryCondition(code int) bool { +// First return value indicates successful response. +// Second return value, on true a retry is preferred. +func httpRetryCondition(code int) (bool, bool) { switch { case code >= http.StatusOK && code < http.StatusMultipleChoices: - return false + return true, false case code < http.StatusOK: - return false + return false, false case code >= http.StatusInternalServerError: - return true + return false, true + // IAM & network configuration propagation is a source of delayed access. case code == http.StatusUnauthorized || code == http.StatusForbidden: - return true + return false, true case code >= http.StatusBadRequest: - return false + return false, false } - return false + return false, false } diff --git a/infra/blueprint-test/pkg/utils/asserthttp_test.go b/infra/blueprint-test/pkg/utils/asserthttp_test.go index c826eaa8844..0c3d8d2745c 100644 --- a/infra/blueprint-test/pkg/utils/asserthttp_test.go +++ b/infra/blueprint-test/pkg/utils/asserthttp_test.go @@ -22,158 +22,333 @@ import ( "net/http/httptest" "strings" "testing" + "time" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" ) func TestAssertSuccess(t *testing.T) { - t.Run("success", func(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Println("Hello World") - })) - defer ts.Close() + tests := []struct { + label string + serverFunc func(t *testing.T) *httptest.Server + requestFunc func(t *testing.T, s *httptest.Server) *http.Request + assertFunc func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) + assertRetryFunc func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) + }{ + { + label: "success", + serverFunc: func(t *testing.T) *httptest.Server { + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprint(w, "Hello World") + })) + }, + requestFunc: func(t *testing.T, s *httptest.Server) *http.Request { + r, err := http.NewRequest(http.MethodGet, s.URL, nil) + if err != nil { + t.Fatal(err) + } + return r + }, + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertSuccess(it, r) + if it.err != nil { + t.Errorf("wanted success, got %v", it.err) + } + }, + assertRetryFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertSuccessWithRetry(it, r) + if it.err != nil { + t.Errorf("wanted success, got %v", it.err) + } + }, + }, + { + label: "request failure", + serverFunc: func(t *testing.T) *httptest.Server { + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "Not Available", http.StatusServiceUnavailable) + })) + }, + requestFunc: func(t *testing.T, s *httptest.Server) *http.Request { + r, err := http.NewRequest(http.MethodGet, "/nope", nil) + if err != nil { + t.Fatal(err) + } + return r + }, + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertSuccess(it, r) + if it.err == nil { + t.Error("wanted error, got success") + } + }, + assertRetryFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertSuccessWithRetry(it, r) + if it.err == nil { + t.Error("wanted error, got success") + } + }, + }, + { + label: "response error", + serverFunc: func(t *testing.T) *httptest.Server { + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "Not Available", http.StatusServiceUnavailable) + })) + }, + requestFunc: func(t *testing.T, s *httptest.Server) *http.Request { + r, err := http.NewRequest(http.MethodGet, s.URL, nil) + if err != nil { + t.Fatal(err) + } + return r + }, + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertSuccess(it, r) + if it.err == nil { + t.Errorf("wanted error, got success") + } + }, + assertRetryFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertSuccessWithRetry(it, r) + if it.err == nil { + t.Error("wanted error, got success") + } + }, + }, + } - r, err := http.NewRequest(http.MethodGet, ts.URL, nil) - if err != nil { - t.Fatal(err) - } - - it := &inspectableT{t, nil} - ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) - ah.AssertSuccess(it, r) - - if it.err != nil { - t.Errorf("wanted success, got %v", it.err) - } - }) - t.Run("request error", func(t *testing.T) { - r, err := http.NewRequest(http.MethodGet, "/nope", nil) - if err != nil { - t.Fatal(err) - } - it := &inspectableT{t, nil} - utils.NewAssertHTTP().AssertSuccess(it, r) - - if it.err == nil { - t.Error("wanted error, got success") - } - }) - t.Run("response error", func(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - http.Error(w, "Not Available", http.StatusServiceUnavailable) - })) - defer ts.Close() - - r, err := http.NewRequest(http.MethodGet, ts.URL, nil) - if err != nil { - t.Fatal(err) - } - - it := &inspectableT{t, nil} - ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) - ah.AssertSuccess(it, r) - - if it.err != nil { - t.Errorf("wanted error, got %v", it.err) - } - }) + for _, tc := range tests { + t.Run(tc.label, func(t *testing.T) { + server := tc.serverFunc(t) + defer server.Close() + t.Run("default", func(t *testing.T) { + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(server.Client())) + tc.assertFunc(t, it, ah, tc.requestFunc(t, server)) + }) + t.Run("retry", func(t *testing.T) { + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP( + utils.WithHTTPClient(server.Client()), + utils.WithHTTPRequestRetries(3, time.Millisecond), + ) + tc.assertRetryFunc(t, it, ah, tc.requestFunc(t, server)) + }) + }) + } } func TestAssertResponse(t *testing.T) { - t.Run("success", func(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Println("Hello World") - })) - defer ts.Close() - - r, err := http.NewRequest(http.MethodGet, ts.URL, nil) - if err != nil { - t.Fatal(err) - } - - it := &inspectableT{t, nil} - ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) - ah.AssertResponse(it, r, http.StatusOK) - if it.err != nil { - t.Errorf("wanted success, got %v", it.err) - } - }) - t.Run("request error", func(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - http.Error(w, "Not Available", http.StatusServiceUnavailable) - })) - defer ts.Close() + tests := []struct { + label string + serverFunc func(t *testing.T) *httptest.Server + requestFunc func(t *testing.T, s *httptest.Server) *http.Request + assertFunc func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) + assertRetryFunc func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) + }{ + { + label: "success", + serverFunc: func(t *testing.T) *httptest.Server { + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprint(w, "Hello World") + })) + }, + requestFunc: func(t *testing.T, s *httptest.Server) *http.Request { + r, err := http.NewRequest(http.MethodGet, s.URL, nil) + if err != nil { + t.Fatal(err) + } + return r + }, + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponse(it, r, http.StatusOK) + if it.err != nil { + t.Errorf("wanted success, got %v", it.err) + } + }, + assertRetryFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponseWithRetry(it, r, http.StatusOK) + if it.err != nil { + t.Errorf("wanted success, got %v", it.err) + } + }, + }, + { + label: "request failure", + serverFunc: func(t *testing.T) *httptest.Server { + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "Not Available", http.StatusServiceUnavailable) + })) + }, + requestFunc: func(t *testing.T, s *httptest.Server) *http.Request { + r, err := http.NewRequest(http.MethodGet, "/nope", nil) + if err != nil { + t.Fatal(err) + } + return r + }, + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponse(it, r, http.StatusServiceUnavailable) + if it.err == nil { + t.Error("got success, wanted error") + } + }, + assertRetryFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponseWithRetry(it, r, http.StatusServiceUnavailable) + if it.err == nil { + t.Error("got success, wanted error") + } + }, + }, + { + label: "assert HTTP 503", + serverFunc: func(t *testing.T) *httptest.Server { + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "Not Available", http.StatusServiceUnavailable) + })) + }, + requestFunc: func(t *testing.T, s *httptest.Server) *http.Request { + r, err := http.NewRequest(http.MethodGet, s.URL, nil) + if err != nil { + t.Fatal(err) + } + return r + }, + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponse(it, r, http.StatusServiceUnavailable) + if it.err != nil { + t.Errorf("got %v, wanted success", it.err) + } + }, + assertRetryFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponseWithRetry(it, r, http.StatusServiceUnavailable) + if it.err != nil { + t.Errorf("got %v, wanted success", it.err) + } + }, + }, + { + label: "response error", + serverFunc: func(t *testing.T) *httptest.Server { + var n int = 0 + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + n++ + http.Error(w, fmt.Sprintf("Not Available #%d", n), http.StatusServiceUnavailable) + })) + }, + requestFunc: func(t *testing.T, s *httptest.Server) *http.Request { + r, err := http.NewRequest(http.MethodGet, s.URL, nil) + if err != nil { + t.Fatal(err) + } + return r + }, + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + // The single assert is the first request to the test server. + ah.AssertResponse(it, r, http.StatusOK, "#1") + if it.err != nil && !strings.Contains(it.err.Error(), "got 503, want 200") { + t.Error(it.err.Error()) + } else if it.err == nil { + t.Error("got success, want error") + } + }, + assertRetryFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + // This function is called given the AssertHTTP object is configured for 3 retries. + // The final request count for three retries is 5: + // - the first request is not a retry and counts as #1 + // - utils.Poll retries n+1 times + // The number is included in this assertion to confirm the error + // is associated with the last retry attempt. + ah.AssertResponseWithRetry(it, r, http.StatusOK, "#5") + if it.err != nil && !strings.Contains(it.err.Error(), "got 503, want 200") { + t.Error(it.err.Error()) + } else if it.err == nil { + t.Error("got success, want error") + } + }, + }, + } - r, err := http.NewRequest(http.MethodGet, "/nope", nil) - if err != nil { - t.Fatal(err) - } - - it := &inspectableT{t, nil} - ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) - ah.AssertResponse(it, r, http.StatusServiceUnavailable) - - if it.err == nil { - t.Error("wanted error, got success") - } - }) - t.Run("response error", func(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - http.Error(w, "Not Available", http.StatusServiceUnavailable) - })) - defer ts.Close() - - r, err := http.NewRequest(http.MethodGet, ts.URL, nil) - if err != nil { - t.Fatal(err) - } + for _, tc := range tests { + t.Run(tc.label, func(t *testing.T) { + t.Run("default", func(t *testing.T) { + // Unlike other test implementations in this file, server is + // instantiated per sub-case. This ensure the specific count of + // requests matches configured retry expectations. + server := tc.serverFunc(t) + defer server.Close() + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP(utils.WithHTTPClient(server.Client())) + tc.assertFunc(t, it, ah, tc.requestFunc(t, server)) + }) + t.Run("retry", func(t *testing.T) { + server := tc.serverFunc(t) + defer server.Close() + it := &inspectableT{t, nil} + ah := utils.NewAssertHTTP( + utils.WithHTTPClient(server.Client()), + utils.WithHTTPRequestRetries(3, time.Millisecond), + ) + tc.assertRetryFunc(t, it, ah, tc.requestFunc(t, server)) + }) + }) + } +} - it := &inspectableT{t, nil} - ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) - ah.AssertResponse(it, r, http.StatusServiceUnavailable) +func TestAssertResponse_contains(t *testing.T) { + tests := []struct { + label string + assertFunc func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) + }{ + { + label: "success", + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponse(it, r, http.StatusOK, "Hello", "World") + if it.err != nil { + t.Errorf("wanted success, got %v", it.err) + } + }, + }, + { + label: "error", + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponse(it, r, http.StatusOK, "Hello", "Moon") + if it.err == nil { + t.Error("wanted error, got success") + } + }, + }, + { + label: "multi error", + assertFunc: func(t *testing.T, it *inspectableT, ah *utils.AssertHTTP, r *http.Request) { + ah.AssertResponse(it, r, http.StatusOK, "Hello", "Moon", "Dwellers") + if it.err == nil { + t.Error("wanted error, got success") + return + } + if e := it.err.Error(); !strings.Contains(e, "Moon") || !strings.Contains(e, "Dwellers") { + t.Errorf("wanted multiple errors, got one: %v", it.err) + } + }, + }, + } - if it.err != nil { - t.Errorf("wanted error, got %v", it.err) - } - }) - t.Run("response contains", func(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintln(w, "Hello World") - })) - defer ts.Close() + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprint(w, "Hello World") + })) + defer server.Close() - r, err := http.NewRequest(http.MethodGet, ts.URL, nil) - if err != nil { - t.Fatal(err) - } + r, err := http.NewRequest(http.MethodGet, server.URL, nil) + if err != nil { + t.Fatal(err) + } - t.Run("success", func(t *testing.T) { - it := &inspectableT{t, nil} - ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) - ah.AssertResponse(it, r, http.StatusOK, "Hello", "World") - if it.err != nil { - t.Errorf("wanted success, got %v", it.err) - } - }) - t.Run("error", func(t *testing.T) { - it := &inspectableT{t, nil} - ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) - ah.AssertResponse(it, r, http.StatusOK, "Hello", "Moon") - if it.err == nil { - t.Error("wanted error, got success") - } - }) - t.Run("error multiple", func(t *testing.T) { + for _, tc := range tests { + t.Run(tc.label, func(t *testing.T) { it := &inspectableT{t, nil} - ah := utils.NewAssertHTTP(utils.WithHTTPClient(ts.Client())) - ah.AssertResponse(it, r, http.StatusOK, "Hello", "Moon", "People") - if it.err == nil { - t.Error("wanted error, got success") - return - } - if e := it.err.Error(); !strings.Contains(e, "Moon") || !strings.Contains(e, "People") { - t.Errorf("wanted multiple errors, got one: %v", it.err) - } + ah := utils.NewAssertHTTP(utils.WithHTTPClient(server.Client())) + tc.assertFunc(t, it, ah, r) }) - }) + } } From 728a59c720924e197f2ce445f333021f9793609b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 8 Aug 2023 19:41:16 +0200 Subject: [PATCH 0513/1371] chore(deps): update actions/setup-go digest to 93397be (#1750) --- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/test-cli.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 9dde459d488..8327c1b4ab8 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/utils/fbf/go.mod cache-dependency-path: infra/utils/fbf/go.sum diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index f48ef3e9855..33156deb3fd 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/build/developer-tools/build/scripts/module-swapper/go.mod cache-dependency-path: infra/build/developer-tools/build/scripts/module-swapper/go.sum diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 43d954a6a68..b026e8e139a 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 2dfe35ac407..557c7b863d6 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum From 467077739b60d14f488e01479e0f957c410050fa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 10 Aug 2023 22:58:21 +0200 Subject: [PATCH 0514/1371] chore(deps): update actions/setup-go action to v4.1.0 (#1753) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 62a898db69e..7f6880a0594 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -23,7 +23,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test] steps: - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version: '1.20' cache: false From f90deec4e6a9728505acee667ae1083a8a270a84 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 10 Aug 2023 15:56:23 -0700 Subject: [PATCH 0515/1371] fix(deps): update bpt go modules (#1748) --- infra/blueprint-test/go.mod | 8 ++++---- infra/blueprint-test/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index f3d676aee02..bf8b60ea07c 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,13 +4,13 @@ go 1.20 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.43.3 + github.com/gruntwork-io/terratest v0.43.11 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.12.0 github.com/stretchr/testify v1.8.4 - github.com/tidwall/gjson v1.14.4 + github.com/tidwall/gjson v1.15.0 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.11.0 + golang.org/x/mod v0.12.0 sigs.k8s.io/kustomize/kyaml v0.14.2 ) @@ -95,7 +95,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e // indirect google.golang.org/grpc v1.55.0 // indirect - google.golang.org/protobuf v1.30.0 // 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 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index c15fb5a3eed..5a32203e1a3 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -370,8 +370,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.16.2 h1:EmkS8344ggtQopFq6YJ5Nh3ohBF03AB7cxrgDiJ7C3Q= github.com/gruntwork-io/go-commons v0.16.2/go.mod h1:/nnLMhO4HpItt43K+8ACM66g67iMy3oo2nnwq59n3wg= -github.com/gruntwork-io/terratest v0.43.3 h1:5m8muuUH/84vfahX1GM8yeTTfNY9oFAVcqqEAvjAt+w= -github.com/gruntwork-io/terratest v0.43.3/go.mod h1:BaiZSbupsU6AmCuds8qLcoUOG8gcykW/IvWf4TtAUyU= +github.com/gruntwork-io/terratest v0.43.11 h1:k3U5lZjiNa38rqcTx/dus8cCaJY7qxShGIuGLeLfj/s= +github.com/gruntwork-io/terratest v0.43.11/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -481,8 +481,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o 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/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.15.0 h1:5n/pM+v3r5ujuNl4YLZLsQ+UE5jlkLVm7jMzT5Mpolw= +github.com/tidwall/gjson v1.15.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -567,8 +567,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1033,8 +1033,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 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.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.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From ee940e32b41caad506468c24bf27946176fd0d92 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 10 Aug 2023 17:26:42 -0700 Subject: [PATCH 0516/1371] chore: add pre-commit for renovatebot (#1752) --- .github/renovate.json | 25 +++++++++++-------------- .github/workflows/pre-commit.yml | 14 ++++++++++++++ .pre-commit-config.yaml | 5 +++++ 3 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/pre-commit.yml create mode 100644 .pre-commit-config.yaml diff --git a/.github/renovate.json b/.github/renovate.json index d73bb8d845f..9cde58604b9 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,29 +1,24 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:base", + "config:recommended", ":semanticCommits", ":preserveSemverRanges", "helpers:pinGitHubActionDigests" ], - "stabilityDays":7, + "minimumReleaseAge": "7 days", "labels": ["dependencies"], - "vulnerabilityAlerts":{ - "labels":[ - "type:security" - ], - "stabilityDays":0 + "vulnerabilityAlerts": { + "labels": ["type:security"], + "minimumReleaseAge": null }, - "separateMajorMinor":false, + "separateMajorMinor": false, "ignorePaths": ["config-connector/**"], "additionalBranchPrefix": "{{parentDir}}-", "packageRules": [ { - "matchPaths": [".github/**"], - "extends": [ - ":semanticCommitTypeAll(chore)", - ":rebaseStalePrs" - ] + "matchFileNames": [".github/**"], + "extends": [":semanticCommitTypeAll(chore)", ":rebaseStalePrs"] }, { "matchPackageNames": ["google", "google-beta"], @@ -54,7 +49,9 @@ }, { "fileMatch": ["(^|/)Makefile$"], - "matchStrings": ["DOCKER_TAG_VERSION_DEVELOPER_TOOLS := (?.*?)\\n"], + "matchStrings": [ + "DOCKER_TAG_VERSION_DEVELOPER_TOOLS := (?.*?)\\n" + ], "datasourceTemplate": "docker", "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", "depNameTemplate": "cft/developer-tools" diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 00000000000..c2f7e71fcf8 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,14 @@ +name: pre-commit + +on: + pull_request: + push: + branches: [main] + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v3 + - uses: pre-commit/action@v3.0.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000000..19d75d4a7a8 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,5 @@ +repos: + - repo: https://github.com/renovatebot/pre-commit-hooks + rev: 36.40.3 + hooks: + - id: renovate-config-validator From f55aac6f61083eba4338c49dddd64d22f3692fa0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 11 Aug 2023 02:31:26 +0200 Subject: [PATCH 0517/1371] chore(deps): update actions/setup-python action to v4 (#1756) --- .github/workflows/pre-commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index c2f7e71fcf8..1f8cca56c83 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -10,5 +10,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4 - uses: pre-commit/action@v3.0.0 From 6e71a9e263bd6edadb3bc61589973fa29be9c72f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 11 Aug 2023 02:33:23 +0200 Subject: [PATCH 0518/1371] chore(deps): pin dependencies (#1755) --- .github/workflows/pre-commit.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 1f8cca56c83..fd34f9342c6 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4 - - uses: pre-commit/action@v3.0.0 + - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0 From 76853f76642d1786d91c2671d569eb6a79891a2a Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 11 Aug 2023 11:45:36 -0500 Subject: [PATCH 0519/1371] chore: Update Tools to 1.14.2 (#1739) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 4a53709dbe4..52f2c34d58e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.5.4 +TERRAFORM_VERSION := 1.5.5 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 440.0.0 +CLOUD_SDK_VERSION := 442.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 RUBY_VERSION := 3.0.6 @@ -30,13 +30,13 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.39 +KPT_VERSION := 1.0.0-beta.42 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.1.10 +CFT_CLI_VERSION := 1.2.1 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.7 TFLINT_VERSION := 0.41.0 @@ -51,9 +51,9 @@ KIND_VERSION := 0.18.0 GATOR_VERSION := 3.12.0 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.15.2 +GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 2cc1e987d4f7a8cb861f6b78d755529ae713103e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 11 Aug 2023 10:06:30 -0700 Subject: [PATCH 0520/1371] feat: convert module-swapper to release-please (#1735) --- .github/workflows/go-module-swapper.yml | 26 +- infra/module-swapper/Readme.md | 19 ++ infra/module-swapper/cmd/swap.go | 242 ++++++++++++++++++ infra/module-swapper/cmd/swap_test.go | 219 ++++++++++++++++ .../testdata/example-module-simple/Readme.md | 0 .../examples/example-one/main.tf | 65 +++++ .../examples/example-one/main.tf.good | 65 +++++ .../example-module-simple/examples/main.tf | 0 .../docs/Readme.md | 0 .../examples/example-one/main.tf | 27 ++ .../examples/example-one/main.tf.good | 27 ++ .../examples/example-two/main.tf | 46 ++++ .../examples/example-two/main.tf.good | 46 ++++ .../examples/main.tf | 0 .../modules/bar-module/main.tf | 0 .../modules/foo-module/main.tf | 0 infra/module-swapper/go.mod | 32 +++ infra/module-swapper/go.sum | 132 ++++++++++ infra/module-swapper/main.go | 28 ++ release-please-config.json | 7 + 20 files changed, 977 insertions(+), 4 deletions(-) create mode 100644 infra/module-swapper/Readme.md create mode 100644 infra/module-swapper/cmd/swap.go create mode 100644 infra/module-swapper/cmd/swap_test.go create mode 100644 infra/module-swapper/cmd/testdata/example-module-simple/Readme.md create mode 100644 infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf create mode 100644 infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good create mode 100644 infra/module-swapper/cmd/testdata/example-module-simple/examples/main.tf create mode 100644 infra/module-swapper/cmd/testdata/example-module-with-submodules/docs/Readme.md create mode 100644 infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf create mode 100644 infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good create mode 100644 infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf create mode 100644 infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good create mode 100644 infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/main.tf create mode 100644 infra/module-swapper/cmd/testdata/example-module-with-submodules/modules/bar-module/main.tf create mode 100644 infra/module-swapper/cmd/testdata/example-module-with-submodules/modules/foo-module/main.tf create mode 100644 infra/module-swapper/go.mod create mode 100644 infra/module-swapper/go.sum create mode 100644 infra/module-swapper/main.go diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 33156deb3fd..64be4bfbfea 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -5,7 +5,7 @@ on: branches: - 'master' paths: - - 'infra/build/developer-tools/build/scripts/module-swapper/**' + - 'infra/module-swapper/**' - '.github/workflows/go-module-swapper.yml' concurrency: @@ -19,7 +19,7 @@ jobs: defaults: run: shell: bash - working-directory: 'infra/build/developer-tools/build/scripts/module-swapper' + working-directory: 'infra/module-swapper' strategy: fail-fast: false matrix: @@ -28,7 +28,25 @@ jobs: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: - go-version-file: infra/build/developer-tools/build/scripts/module-swapper/go.mod - cache-dependency-path: infra/build/developer-tools/build/scripts/module-swapper/go.sum + go-version-file: infra/module-swapper/go.mod + cache-dependency-path: infra/module-swapper/go.sum - run: |- go test ./... -v +# TODO: Enable after inital commit +# golangci: +# name: lint +# runs-on: ubuntu-latest +# strategy: +# fail-fast: false +# steps: +# - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 +# - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 +# with: +# go-version-file: infra/module-swapper/go.mod +# cache-dependency-path: infra/module-swapper/go.sum +# - name: golangci-lint +# uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0 +# with: +# version: latest +# working-directory: 'infra/module-swapper' +# args: --timeout=5m diff --git a/infra/module-swapper/Readme.md b/infra/module-swapper/Readme.md new file mode 100644 index 00000000000..d578731bf4f --- /dev/null +++ b/infra/module-swapper/Readme.md @@ -0,0 +1,19 @@ +# Module Swapper + +Module Swapper is a utility used for swapping TF registry references with local modules. It will ignore registry references to all other modules except for the one in current directory. + +``` +Usage of module-swapper: + -examples-path string + Path to examples that should be swapped. Defaults to cwd/examples (default "examples") + -registry-prefix string + Module registry prefix (default "terraform-google-modules") + -registry-suffix string + Module registry suffix (default "google") + -restore + Restores disabled modules + -submods-path string + Path to a submodules if any that maybe referenced. Defaults to working dir/modules (default "modules") + -workdir string + Absolute path to root module where examples should be swapped. Defaults to working directory +``` \ No newline at end of file diff --git a/infra/module-swapper/cmd/swap.go b/infra/module-swapper/cmd/swap.go new file mode 100644 index 00000000000..fe90034fc11 --- /dev/null +++ b/infra/module-swapper/cmd/swap.go @@ -0,0 +1,242 @@ +package cmd + +import ( + "fmt" + "io/ioutil" + "log" + "os" + "path/filepath" + "strings" + + "github.com/go-git/go-git/v5" + "github.com/pmezard/go-difflib/difflib" +) + +type LocalTerraformModule struct { + Name string + Dir string + ModuleFQN string +} + +var ( + terraformExtension = "*.tf" + restoreMarker = "[restore-marker]" + linebreak = "\n" + localModules = []LocalTerraformModule{} +) + +// getRemoteURL gets the URL of a given remote from git repo at dir +func getRemoteURL(dir, remoteName string) (string, error) { + r, err := git.PlainOpen(dir) + if err != nil { + return "", err + } + rm, err := r.Remote(remoteName) + if err != nil { + return "", err + } + return rm.Config().URLs[0], nil +} + +// trimAnySuffixes trims first matching suffix from slice of suffixes +func trimAnySuffixes(s string, suffixes []string) string { + for _, suffix := range suffixes { + if strings.HasSuffix(s, suffix) { + s = s[:len(s)-len(suffix)] + return s + } + } + return s +} + +// getModuleNameRegistry returns module name and registry by parsing git remote +func getModuleNameRegistry(dir string) (string, string, error) { + remote, err := getRemoteURL(dir, "origin") + if err != nil { + return "", "", err + } + + // GH remote will be of form https://github.com/ModuleRegistry/ModuleName + if !strings.Contains(remote, "https://github.com/") { + return "", "", fmt.Errorf("Expected GitHub remote of form https://github.com/ModuleRegistry/ModuleRepo. Got: %s", remote) + } + + // remotes maybe suffixed with a trailing / or .git + remote = trimAnySuffixes(remote, []string{"/", ".git"}) + namePrefix := strings.ReplaceAll(remote, "https://github.com/", "") + if !strings.Contains(namePrefix, "/") { + return "", "", fmt.Errorf("Expected GitHub org/owner of form ModuleRegistry/ModuleRepo. Got: %s", namePrefix) + } + moduleRegistry := namePrefix[:strings.LastIndex(namePrefix, "/")] + repoName := namePrefix[strings.LastIndex(namePrefix, "/")+1:] + + // module repos are prefixed with terraform-google- + if !strings.HasPrefix(repoName, "terraform-google-") { + return "", "", fmt.Errorf("Expected to find repo name prefixed with terraform-google-. Got: %s", repoName) + } + moduleName := strings.ReplaceAll(repoName, "terraform-google-", "") + log.Printf("Module name set from remote to %s", moduleName) + return moduleName, moduleRegistry, nil +} + +// findSubModules generates slice of LocalTerraformModule for submodules +func findSubModules(path, rootModuleFQN string) []LocalTerraformModule { + var subModules = make([]LocalTerraformModule, 0) + // if no modules dir, return empty slice + if _, err := os.Stat(path); err != nil { + log.Print("No submodules found") + return subModules + } + files, err := ioutil.ReadDir(path) + if err != nil { + log.Fatalf("Error finding submodules: %v", err) + } + absPath, err := filepath.Abs(path) + if err != nil { + log.Fatalf("Error finding submodule absolute path: %v", err) + } + for _, f := range files { + if f.IsDir() { + subModules = append(subModules, LocalTerraformModule{f.Name(), filepath.Join(absPath, f.Name()), fmt.Sprintf("%s//modules/%s", rootModuleFQN, f.Name())}) + } + } + return subModules +} + +// restoreModules restores old config as marked by restoreMarker +func restoreModules(f []byte, p string) ([]byte, error) { + if _, err := os.Stat(p); err != nil { + return nil, err + } + strFile := string(f) + if !strings.Contains(strFile, restoreMarker) { + return nil, nil + } + lines := strings.Split(strFile, linebreak) + for i, line := range lines { + if strings.Contains(line, restoreMarker) { + lines[i] = strings.Split(line, restoreMarker)[1] + } + } + return []byte(strings.Join(lines, linebreak)), nil +} + +// replaceLocalModules swaps current local module registry references with local path +func replaceLocalModules(f []byte, p string) ([]byte, error) { + if _, err := os.Stat(p); err != nil { + return nil, err + } + absPath, err := filepath.Abs(filepath.Dir(p)) + if err != nil { + return nil, fmt.Errorf("Error finding example absolute path: %v", err) + } + strFile := string(f) + lines := strings.Split(strFile, linebreak) + for _, localModule := range localModules { + // check if current file has module/submodules references that should be swapped + if !strings.Contains(strFile, localModule.ModuleFQN) { + continue + } + // get relative path from example to local module + newModulePath, err := filepath.Rel(absPath, localModule.Dir) + if err != nil { + return nil, fmt.Errorf("Error finding relative path: %v", err) + } + for i, line := range lines { + if strings.Contains(line, fmt.Sprintf("\"%s\"", localModule.ModuleFQN)) && !strings.Contains(line, restoreMarker) { + // swap with local module and add restore point + leadingWhiteSpace := line[:strings.Index(line, "source")] + newSource := fmt.Sprintf("source = \"%s\"", newModulePath) + lines[i] = leadingWhiteSpace + newSource + fmt.Sprintf(" # %s %s", restoreMarker, line) + // if next line is a version declaration, disable that as well + if i < len(lines)-1 && strings.Contains(lines[i+1], "version") { + leadingWhiteSpace = lines[i+1][:strings.Index(lines[i+1], "version")] + lines[i+1] = fmt.Sprintf("%s# %s %s", leadingWhiteSpace, restoreMarker, lines[i+1]) + } + } + } + } + newExample := strings.Join(lines, linebreak) + // check if any swaps have been made + if newExample == strFile { + return nil, nil + } + // print diff info + log.Printf("Modifications made to file %s", p) + diff := difflib.UnifiedDiff{ + A: difflib.SplitLines(strFile), + B: difflib.SplitLines(newExample), + FromFile: "Original", + ToFile: "Modified", + Context: 3, + } + diffInfo, _ := difflib.GetUnifiedDiffString(diff) + log.Println(diffInfo) + return []byte(newExample), nil + +} + +// getTFFiles returns a slice of valid TF file paths +func getTFFiles(path string) []string { + // validate path + if _, err := os.Stat(path); err != nil { + log.Fatal(fmt.Errorf("Unable to find %s : %v", path, err)) + } + var files = make([]string, 0) + filepath.Walk(path, func(path string, info os.FileInfo, err error) error { + if err != nil && info.IsDir() { + return nil + } + isTFFile, _ := filepath.Match(terraformExtension, filepath.Base(path)) + if isTFFile { + files = append(files, path) + } + return nil + }) + return files + +} + +func SwapModules(rootPath, moduleRegistrySuffix, subModulesDir, examplesDir string, restore bool) { + moduleName, moduleRegistryPrefix, err := getModuleNameRegistry(rootPath) + if err != nil { + log.Fatal(err) + } + + // add root module to slice of localModules + localModules = append(localModules, LocalTerraformModule{moduleName, rootPath, fmt.Sprintf("%s/%s/%s", moduleRegistryPrefix, moduleName, moduleRegistrySuffix)}) + examplesPath := fmt.Sprintf("%s/%s", rootPath, examplesDir) + subModulesPath := fmt.Sprintf("%s/%s", rootPath, subModulesDir) + + // add submodules, if any to localModules + submods := findSubModules(subModulesPath, localModules[0].ModuleFQN) + localModules = append(localModules, submods...) + + // find all TF files in examples dir to process + exampleTFFiles := getTFFiles(examplesPath) + for _, TFFilePath := range exampleTFFiles { + file, err := ioutil.ReadFile(TFFilePath) + if err != nil { + log.Printf("Error reading file: %v", err) + } + + var newFile []byte + if restore { + newFile, err = restoreModules(file, TFFilePath) + } else { + newFile, err = replaceLocalModules(file, TFFilePath) + } + if err != nil { + log.Printf("Error processing file: %v", err) + } + + if newFile != nil { + err = ioutil.WriteFile(TFFilePath, newFile, 0644) + if err != nil { + log.Printf("Error writing file: %v", err) + } + } + + } + +} diff --git a/infra/module-swapper/cmd/swap_test.go b/infra/module-swapper/cmd/swap_test.go new file mode 100644 index 00000000000..522f908897b --- /dev/null +++ b/infra/module-swapper/cmd/swap_test.go @@ -0,0 +1,219 @@ +package cmd + +import ( + "bytes" + "fmt" + "io/ioutil" + "log" + "os" + "path/filepath" + "reflect" + "strings" + "testing" + + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/config" +) + +var ( + moduleRegistryPrefix = "terraform-google-modules" + moduleRegistrySuffix = "google" +) + +func getAbsPathHelper(p string) string { + a, err := filepath.Abs(p) + if err != nil { + log.Fatalf("Unable to find absolute path %s: %v", p, err) + } + return a +} + +func getFileHelper(p string) []byte { + f, err := ioutil.ReadFile(p) + if err != nil { + log.Fatalf("Error reading file: %v", err) + } + return f +} + +func setupProcessFileTest(modules []LocalTerraformModule) { + localModules = modules +} + +func tearDownProcessFileTest() { + localModules = []LocalTerraformModule{} +} + +func Test_getTFFiles(t *testing.T) { + type args struct { + path string + } + tests := []struct { + name string + args args + want []string + }{ + {"simple", args{"testdata/example-module-simple"}, []string{"testdata/example-module-simple/examples/example-one/main.tf", "testdata/example-module-simple/examples/main.tf"}}, + {"simple-single-submodule", args{"testdata/example-module-with-submodules/modules/bar-module"}, []string{"testdata/example-module-with-submodules/modules/bar-module/main.tf"}}, + {"simple-single-submodule-empty", args{"testdata/example-module-with-submodules/docs"}, []string{}}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := getTFFiles(tt.args.path); !reflect.DeepEqual(got, tt.want) { + t.Errorf("getTFFiles() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_findSubModules(t *testing.T) { + type args struct { + path string + rootModuleFQN string + } + tests := []struct { + name string + args args + want []LocalTerraformModule + }{ + {"simple-no-submodules", args{"testdata/example-module-simple/modules", "terraform-google-modules/example-module-simple/google"}, []LocalTerraformModule{}}, + {"simple-with-submodules", args{"testdata/example-module-with-submodules/modules", "terraform-google-modules/example-module-with-submodules/google"}, + []LocalTerraformModule{ + {"bar-module", filepath.Join(getAbsPathHelper("testdata/example-module-with-submodules/modules"), "bar-module"), "terraform-google-modules/example-module-with-submodules/google//modules/bar-module"}, + {"foo-module", filepath.Join(getAbsPathHelper("testdata/example-module-with-submodules/modules"), "foo-module"), "terraform-google-modules/example-module-with-submodules/google//modules/foo-module"}, + }}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := findSubModules(tt.args.path, tt.args.rootModuleFQN); !reflect.DeepEqual(got, tt.want) { + t.Errorf("findSubModules() = %v, want %v", got, tt.want) + } + }) + } +} + +func getProcessFileTestArgs(p, m string) struct { + f []byte + p string + modules []LocalTerraformModule +} { + f := struct { + f []byte + p string + modules []LocalTerraformModule + }{ + getFileHelper(p), + p, + append( + findSubModules("testdata/"+m+"/modules", "terraform-google-modules/"+m+"/google"), + LocalTerraformModule{m, getAbsPathHelper("testdata/" + m), fmt.Sprintf("%s/%s/%s", moduleRegistryPrefix, m, moduleRegistrySuffix)}, + ), + } + return f +} + +func Test_processFile(t *testing.T) { + type args struct { + f []byte + p string + modules []LocalTerraformModule + } + tests := []struct { + name string + args args + want []byte + wantErr bool + }{ + {"simple", getProcessFileTestArgs("testdata/example-module-simple/examples/example-one/main.tf", "example-module-simple"), getFileHelper("testdata/example-module-simple/examples/example-one/main.tf.good"), false}, + {"simple-submodules-single-submod", getProcessFileTestArgs("testdata/example-module-with-submodules/examples/example-one/main.tf", "example-module-with-submodules"), getFileHelper("testdata/example-module-with-submodules/examples/example-one/main.tf.good"), false}, + {"simple-submodules-multiple-modules", getProcessFileTestArgs("testdata/example-module-with-submodules/examples/example-two/main.tf", "example-module-with-submodules"), getFileHelper("testdata/example-module-with-submodules/examples/example-two/main.tf.good"), false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + setupProcessFileTest(tt.args.modules) + var buf bytes.Buffer + log.SetOutput(&buf) + defer func() { + log.SetOutput(os.Stderr) + }() + got, err := replaceLocalModules(tt.args.f, tt.args.p) + t.Log(buf.String()) + if (err != nil) != tt.wantErr { + t.Errorf("processFile() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("processFile() = %v, want %v", string(got), string(tt.want)) + } + tearDownProcessFileTest() + }) + } +} + +func getTempDir() string { + d, err := ioutil.TempDir("", "gitrmtest") + if err != nil { + log.Fatalf("Error creating tempdir: %v", err) + } + return d +} + +func tempGitRepoWithRemote(repoURL, remote string) string { + dir := getTempDir() + r, err := git.PlainInit(dir, true) + if err != nil { + log.Fatalf("Error creating repo in tempdir: %v", err) + } + _, err = r.CreateRemote(&config.RemoteConfig{ + Name: remote, + URLs: []string{repoURL}, + }) + if err != nil { + log.Fatalf("Error creating remote in tempdir repo: %v", err) + } + return dir +} + +func Test_getModuleNameRegistry(t *testing.T) { + type args struct { + dir string + } + tests := []struct { + name string + args args + want string + want1 string + wantErr bool + wantErrStr string + }{ + {"simple", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar", "origin")}, "bar", "foo", false, ""}, + {"simple-with-trailing-slash", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar/", "origin")}, "bar", "foo", false, ""}, + {"simple-with-trailing-git", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar.git", "origin")}, "bar", "foo", false, ""}, + {"err-no-remote-origin", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar", "foo")}, "", "", true, ""}, + {"err-not-git-repo", args{getTempDir()}, "", "", true, ""}, + {"err-not-github-repo", args{tempGitRepoWithRemote("https://gitlab.com/foo/terraform-google-bar", "origin")}, "", "", true, "Expected GitHub remote of form https://github.com/ModuleRegistry/ModuleRepo"}, + {"err-not-prefixed-repo", args{tempGitRepoWithRemote("https://github.com/foo/bar", "origin")}, "", "", true, "Expected to find repo name prefixed with terraform-google-"}, + {"err-malformed-remote", args{tempGitRepoWithRemote("https://github.com/footerraform-google-bar", "origin")}, "", "", true, "Expected GitHub org/owner of form ModuleRegistry/ModuleRepo"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, got1, err := getModuleNameRegistry(tt.args.dir) + if (err != nil) != tt.wantErr { + t.Errorf("getModuleNameRegistry() error = %v, wantErr %v", err, tt.wantErr) + return + } else { + if tt.wantErrStr != "" { + if !strings.Contains(err.Error(), tt.wantErrStr) { + t.Errorf("getModuleNameRegistry() error = %v, expected to contain %v", err, tt.wantErrStr) + } + } + } + if got != tt.want { + t.Errorf("getModuleNameRegistry() got = %v, want %v", got, tt.want) + } + if got1 != tt.want1 { + t.Errorf("getModuleNameRegistry() got1 = %v, want %v", got1, tt.want1) + } + }) + } +} diff --git a/infra/module-swapper/cmd/testdata/example-module-simple/Readme.md b/infra/module-swapper/cmd/testdata/example-module-simple/Readme.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf b/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf new file mode 100644 index 00000000000..6ef2331ce7b --- /dev/null +++ b/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf @@ -0,0 +1,65 @@ +/** + * Copyright 2018 Google LLC + * + * 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. + */ + +provider "google" { + version = ">= 3.0" +} + +# [START cloudrouter_create] +module "cloud_router" { + source = "terraform-google-modules/example-module-simple/google" + version = "~> 0.4" + + name = "my-router" + region = "us-central1" + + bgp = { + # The ASN (16550, 64512 - 65534, 4200000000 - 4294967294) can be any private ASN + # not already used as a peer ASN in the same region and network or 16550 for Partner Interconnect. + asn = "65001" + } + + # project = "my-project-id" + project = var.project + # network = "my-network" + network = var.network +} +# [END cloudrouter_create] + +# Unrelated module +module "vpc" { + source = "terraform-google-modules/network/google" + version = "~> 2.0.0" + network_name = "example-vpc" + + routes = [ + { + name = "egress-internet" + description = "route through IGW to access internet" + destination_range = "0.0.0.0/0" + tags = "egress-inet" + next_hop_internet = "true" + }, + { + name = "app-proxy" + description = "route through proxy to reach app" + destination_range = "10.50.10.0/24" + tags = "app-proxy" + next_hop_instance = "app-proxy-instance" + next_hop_instance_zone = "us-west1-a" + }, + ] +} diff --git a/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good b/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good new file mode 100644 index 00000000000..88a72c1c5a8 --- /dev/null +++ b/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good @@ -0,0 +1,65 @@ +/** + * Copyright 2018 Google LLC + * + * 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. + */ + +provider "google" { + version = ">= 3.0" +} + +# [START cloudrouter_create] +module "cloud_router" { + source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-simple/google" + # [restore-marker] version = "~> 0.4" + + name = "my-router" + region = "us-central1" + + bgp = { + # The ASN (16550, 64512 - 65534, 4200000000 - 4294967294) can be any private ASN + # not already used as a peer ASN in the same region and network or 16550 for Partner Interconnect. + asn = "65001" + } + + # project = "my-project-id" + project = var.project + # network = "my-network" + network = var.network +} +# [END cloudrouter_create] + +# Unrelated module +module "vpc" { + source = "terraform-google-modules/network/google" + version = "~> 2.0.0" + network_name = "example-vpc" + + routes = [ + { + name = "egress-internet" + description = "route through IGW to access internet" + destination_range = "0.0.0.0/0" + tags = "egress-inet" + next_hop_internet = "true" + }, + { + name = "app-proxy" + description = "route through proxy to reach app" + destination_range = "10.50.10.0/24" + tags = "app-proxy" + next_hop_instance = "app-proxy-instance" + next_hop_instance_zone = "us-west1-a" + }, + ] +} diff --git a/infra/module-swapper/cmd/testdata/example-module-simple/examples/main.tf b/infra/module-swapper/cmd/testdata/example-module-simple/examples/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/docs/Readme.md b/infra/module-swapper/cmd/testdata/example-module-with-submodules/docs/Readme.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf new file mode 100644 index 00000000000..78cd3aadf9a --- /dev/null +++ b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf @@ -0,0 +1,27 @@ +module "test-module" { + source = "terraform-google-modules/example-module-with-submodules/google" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +module "test-submodule-module" { + source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +# Unrelated submodule +module "test-unrelated-submodule-module" { + source = "terraform-google-modules/foo/google" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good new file mode 100644 index 00000000000..80b6b812634 --- /dev/null +++ b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good @@ -0,0 +1,27 @@ +module "test-module" { + source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google" + # [restore-marker] version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +module "test-submodule-module" { + source = "../../modules/bar-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" + # [restore-marker] version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +# Unrelated submodule +module "test-unrelated-submodule-module" { + source = "terraform-google-modules/foo/google" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf new file mode 100644 index 00000000000..3f0d9fadb6d --- /dev/null +++ b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf @@ -0,0 +1,46 @@ +# Unrelated module +module "test-unrelated-submodule" { + source = "terraform-google-modules/foo/google" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +module "test-module" { + source = "terraform-google-modules/example-module-with-submodules/google" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +module "test-submodule-1" { + source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +module "test-submodule-2" { + source = "terraform-google-modules/example-module-with-submodules/google//modules/foo-module" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +# Unrelated submodule +module "test-unrelated-submodule" { + source = "terraform-google-modules/foo/google//modules/bar-module" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good new file mode 100644 index 00000000000..baf29e494af --- /dev/null +++ b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good @@ -0,0 +1,46 @@ +# Unrelated module +module "test-unrelated-submodule" { + source = "terraform-google-modules/foo/google" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +module "test-module" { + source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google" + # [restore-marker] version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +module "test-submodule-1" { + source = "../../modules/bar-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" + # [restore-marker] version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +module "test-submodule-2" { + source = "../../modules/foo-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/foo-module" + # [restore-marker] version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} + +# Unrelated submodule +module "test-unrelated-submodule" { + source = "terraform-google-modules/foo/google//modules/bar-module" + version = "~> 3.2.0" + + project_id = var.project_id # Replace this with your project ID in quotes + network_name = "my-custom-mode-network" + mtu = 1460 +} diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/main.tf b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/modules/bar-module/main.tf b/infra/module-swapper/cmd/testdata/example-module-with-submodules/modules/bar-module/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/modules/foo-module/main.tf b/infra/module-swapper/cmd/testdata/example-module-with-submodules/modules/foo-module/main.tf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod new file mode 100644 index 00000000000..ceaae74e773 --- /dev/null +++ b/infra/module-swapper/go.mod @@ -0,0 +1,32 @@ +module github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper + +go 1.18 + +require ( + github.com/go-git/go-git/v5 v5.7.0 + github.com/pmezard/go-difflib v1.0.0 +) + +require ( + github.com/Microsoft/go-winio v0.6.0 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect + github.com/acomagu/bufpipe v1.0.4 // indirect + github.com/cloudflare/circl v1.3.3 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.4.1 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/imdario/mergo v0.3.15 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/sergi/go-diff v1.3.1 // indirect + github.com/skeema/knownhosts v1.1.1 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect + golang.org/x/crypto v0.9.0 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect + golang.org/x/tools v0.7.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect +) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum new file mode 100644 index 00000000000..a81c648988d --- /dev/null +++ b/infra/module-swapper/go.sum @@ -0,0 +1,132 @@ +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek= +github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= +github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= +github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= +github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +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/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= +github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= +github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= +github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= +github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +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/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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= +github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +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/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/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-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.2.2/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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/infra/module-swapper/main.go b/infra/module-swapper/main.go new file mode 100644 index 00000000000..474ee47ad2a --- /dev/null +++ b/infra/module-swapper/main.go @@ -0,0 +1,28 @@ +package main + +import ( + "flag" + "log" + "os" + + "github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper/cmd" +) + +func main() { + workDir := flag.String("workdir", "", "Absolute path to root module where examples should be swapped. Defaults to working directory") + subModulesDir := flag.String("submods-path", "modules", "Path to a submodules if any that maybe referenced. Defaults to working dir/modules") + examplesDir := flag.String("examples-path", "examples", "Path to examples that should be swapped. Defaults to cwd/examples") + moduleRegistrySuffix := flag.String("registry-suffix", "google", "Module registry suffix") + restore := flag.Bool("restore", false, "Restores disabled modules") + flag.Parse() + rootPath := *workDir + // if no workDir specified default to current working directory + if rootPath == "" { + cwd, err := os.Getwd() + if err != nil { + log.Fatalf("Unable to get cwd: %v", err) + } + rootPath = cwd + } + cmd.SwapModules(rootPath, *moduleRegistrySuffix, *subModulesDir, *examplesDir, *restore) +} diff --git a/release-please-config.json b/release-please-config.json index 7aacf30e2bb..25e51b98d7d 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -9,6 +9,13 @@ "component": "infra/blueprint-test", "pull-request-title-pattern": "chore${scope}: release blueprint-test ${version}", "bump-minor-pre-major": true + }, + "infra/module-swapper": { + "release-type": "go", + "package-name": "module-swapper", + "component": "infra/module-swapper", + "pull-request-title-pattern": "chore${scope}: release module-swapper ${version}", + "bump-minor-pre-major": true } } } From c223dea86e3af67bcab44cc7183303e8612e26d4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 14 Aug 2023 12:23:39 -0700 Subject: [PATCH 0521/1371] chore: update update-tooling.yml (#1757) --- .github/workflows/update-tooling.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index f6cfe0dda2f..c923d662ce9 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -11,7 +11,7 @@ env: CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" KUBECTL_MINOR: "1.26" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" - GATOR_MINOR: "3.12" + GATOR_MINOR: "3.13" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" @@ -24,7 +24,7 @@ jobs: run: | PR_UPDATE_BODY="" newline=$'\n' - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT") + tools=("CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT") for tool in ${tools[@]} do From 1a8b7361401057a0cea754a45dcceb638757a104 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 14 Aug 2023 16:45:15 -0500 Subject: [PATCH 0522/1371] chore: Update Tools to 1.14.3 (#1762) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 52f2c34d58e..d96312f5096 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -48,12 +48,12 @@ GOLANGCI_VERSION := 1.52.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.12.0 +GATOR_VERSION := 3.13.0 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From b93f394a7f6ec3715af428d8a472be46e3df8b38 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 15 Aug 2023 20:08:09 +0200 Subject: [PATCH 0523/1371] chore(deps): update github/codeql-action action to v2.21.3 (#1765) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e4705ede443..13e20d4659d 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0ba4244466797eb048eb91a6cd43d5c03ca8bd05 # v2.21.2 + uses: github/codeql-action/upload-sarif@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3 with: sarif_file: results.sarif From 707dc518a17b3164028158ef34f7c1c9a040f77b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 15 Aug 2023 16:59:00 -0700 Subject: [PATCH 0524/1371] fix: use protoc-go-inject-tag in image and update config-validator (#1767) --- cli/Makefile | 4 +- cli/go.mod | 80 ++++---- cli/go.sum | 546 +++++++++------------------------------------------ 3 files changed, 134 insertions(+), 496 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 77f37cb5690..a679e23826f 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -28,8 +28,8 @@ protoc-gen: docker run --rm -it \ -v "$(CURDIR)":/workspace \ $(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ - protoc -I=${SRC_PROTO_DIR} --go_opt=paths=source_relative --go_out=${PROTOC_DIR} ${SRC_PROTO_DIR}/*.proto && \ - protoc-go-inject-tag -input="${PROTOC_DIR}/*.pb.go" + /bin/bash -c "protoc -I=${SRC_PROTO_DIR} --go_opt=paths=source_relative --go_out=${PROTOC_DIR} ${SRC_PROTO_DIR}/*.proto && \ + protoc-go-inject-tag -input='${PROTOC_DIR}/*.pb.go'" .PHONY: build-schema build-schema: diff --git a/cli/go.mod b/cli/go.mod index 83753bb7f01..8e7d270808f 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -5,8 +5,8 @@ go 1.20 require ( cloud.google.com/go/asset v1.14.1 cloud.google.com/go/storage v1.30.1 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.5.2 - github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.7.0 + github.com/GoogleCloudPlatform/config-validator v0.0.0-20230815185018-1130fc57a588 github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.15.0 github.com/gammazero/workerpool v1.1.3 @@ -25,8 +25,8 @@ require ( github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.19 - github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 - github.com/open-policy-agent/opa v0.49.2 + github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 + github.com/open-policy-agent/opa v0.54.0 github.com/otiai10/copy v1.12.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.7.0 @@ -62,12 +62,12 @@ require ( github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect - github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cenkalti/backoff/v4 v4.2.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.9.0 // indirect + github.com/emicklei/go-restful/v3 v3.10.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect @@ -77,6 +77,7 @@ require ( github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect + github.com/go-ini/ini v1.67.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.21.2 // indirect @@ -91,19 +92,20 @@ require ( github.com/go-stack/stack v1.8.1 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.1.0 // indirect + github.com/golang/glog v1.1.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic v0.6.9 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect + github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect github.com/googleapis/gax-go/v2 v2.11.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect - github.com/gruntwork-io/terratest v0.41.23 // indirect + github.com/gruntwork-io/terratest v0.43.11 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -126,18 +128,19 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oklog/ulid v1.3.1 // indirect - github.com/open-policy-agent/frameworks/constraint v0.0.0-20230304011918-d82cbe189211 // indirect - github.com/open-policy-agent/gatekeeper v0.0.0-20230406045040-effa347e75b5 // indirect + github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f // indirect + github.com/open-policy-agent/gatekeeper/v3 v3.13.0 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.14.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.37.0 // indirect - github.com/prometheus/procfs v0.8.0 // 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/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.1.1 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect @@ -146,34 +149,33 @@ require ( github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect - github.com/tidwall/gjson v1.14.4 // indirect + github.com/tidwall/gjson v1.15.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/yashtewari/glob-intersection v0.1.0 // indirect - github.com/zclconf/go-cty v1.13.1 // indirect + github.com/yashtewari/glob-intersection v0.2.0 // indirect + github.com/zclconf/go-cty v1.13.2 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.0 // indirect - go.opentelemetry.io/otel v1.10.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0 // indirect - go.opentelemetry.io/otel/metric v0.31.0 // indirect - go.opentelemetry.io/otel/sdk v1.10.0 // indirect - go.opentelemetry.io/otel/trace v1.10.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0 // indirect + go.opentelemetry.io/otel v1.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 // indirect + go.opentelemetry.io/otel/metric v0.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.14.0 // indirect + go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/crypto v0.10.0 // indirect - golang.org/x/mod v0.11.0 // indirect + golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.11.0 // indirect golang.org/x/sys v0.9.0 // indirect golang.org/x/term v0.9.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect @@ -183,18 +185,18 @@ require ( gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.26.3 // indirect - k8s.io/apiextensions-apiserver v0.26.3 // indirect - k8s.io/apimachinery v0.26.3 // indirect - k8s.io/apiserver v0.26.3 // indirect - k8s.io/client-go v0.26.3 // indirect - k8s.io/component-base v0.26.3 // indirect - k8s.io/klog/v2 v2.80.1 // indirect - k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect - k8s.io/kubectl v0.23.5 // indirect - k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.36 // indirect - sigs.k8s.io/controller-runtime v0.14.6 // indirect + k8s.io/api v0.27.2 // indirect + k8s.io/apiextensions-apiserver v0.27.2 // indirect + k8s.io/apimachinery v0.27.2 // indirect + k8s.io/apiserver v0.27.2 // indirect + k8s.io/client-go v0.27.2 // indirect + k8s.io/component-base v0.27.2 // indirect + k8s.io/klog/v2 v2.100.1 // indirect + k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 // indirect + k8s.io/kubectl v0.26.4 // indirect + k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect + sigs.k8s.io/controller-runtime v0.15.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/kustomize/kyaml v0.14.2 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect diff --git a/cli/go.sum b/cli/go.sum index 9163a6e1c21..82da6f2114a 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -17,9 +17,6 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= cloud.google.com/go/accesscontextmanager v1.8.0 h1:cCPSztLzUx8OHoyRMcUOy4R/vGLYDk/7gZ5V5J/bbP0= @@ -39,7 +36,6 @@ cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGB cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94= cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= cloud.google.com/go/longrunning v0.5.0 h1:DK8BH0+hS+DIvc9a2TPnteUievsTCH4ORMAASSb7JcQ= @@ -61,25 +57,14 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.5.2 h1:TCNdkah8IpwK6/OTOg+9RugCK+xQl1XA+k2cKOGCrvs= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.5.2/go.mod h1:EmHnUgCoUO6o8zOb3pWmA6NPqpsIGUT7G1EJ7yW/hkM= -github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200 h1:Gq7/IgcOdkxlDsYvREf7fNSBLI/ABl0IrZFVvnG6wUw= -github.com/GoogleCloudPlatform/config-validator v0.0.0-20230609174719-44d61c827200/go.mod h1:ypZtzw2mHkKCk9sx+4RDg5z0qjw+Il0SD2MfFUjt7ak= -github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.7.0 h1:iRROly3NUxu/eskGvxk0TFm//GNdBJ3rnLqw/As8XbA= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.7.0/go.mod h1:8S915KxCJh7it4gn/J9o11FWD+F8IGhCGPITgFapzg8= +github.com/GoogleCloudPlatform/config-validator v0.0.0-20230815185018-1130fc57a588 h1:2OdoAD/+vVxfjcMy/Mm+B/n3kPO94VbzZ6xhf51OlbA= +github.com/GoogleCloudPlatform/config-validator v0.0.0-20230815185018-1130fc57a588/go.mod h1:B8Uh4ssEtdnp1Pnoj5ZlneoPGiTR6hkqowZ88DCc+CY= github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= @@ -94,11 +79,6 @@ github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7l github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/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/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= @@ -107,24 +87,12 @@ github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6 github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= @@ -133,16 +101,14 @@ github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx2 github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= +github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/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/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= @@ -161,36 +127,20 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= 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/creack/pty v1.1.11/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/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -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.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= +github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -198,44 +148,29 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= 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.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= 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/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897 h1:E52jfcE64UG42SwLmrW0QByONfGynWuzBvm86BoB9z8= +github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA= github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -248,25 +183,17 @@ github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhc github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= +github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= 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/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/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/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= -github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= +github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= github.com/go-openapi/analysis v0.21.2 h1:hXFrOYFHUAMQdu6zwAiKKJHJQ8kqZs1ux/ru1P1wLJU= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= @@ -277,8 +204,6 @@ github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34 github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= 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= @@ -291,7 +216,6 @@ github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrC github.com/go-openapi/strfmt v0.21.2 h1:5NDNgadiX1Vhemth/TH4gCGopWSTdDjxl60H3B7f+os= github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= @@ -334,16 +258,12 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-yaml v1.11.0 h1:n7Z+zx8S9f9KgzG6KtQKf+kwqXZlLNR2F6018Dgau54= github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.1.1 h1:jxpi2eWoU84wbX9iIEyAeeoac3FLuifZpY9tcNUD9kw= +github.com/golang/glog v1.1.1/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -356,7 +276,6 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -372,18 +291,15 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a h1:AWZzzFrqyjYlRloN6edwTLTUbKxf5flLXNuTBDm3Ews= github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -410,7 +326,6 @@ github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSX github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= @@ -428,13 +343,11 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= +github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -445,61 +358,35 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= 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/gruntwork-io/terratest v0.41.23 h1:GqwK0Nh6IQze3hka6iwuOd1V3wX7/y/85W25d1zpAnE= -github.com/gruntwork-io/terratest v0.41.23/go.mod h1:O6gajNBjO1wvc7Wl9WtbO+ORcdnhAV2GQiBE71ycwIk= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/gruntwork-io/terratest v0.43.11 h1:k3U5lZjiNa38rqcTx/dus8cCaJY7qxShGIuGLeLfj/s= +github.com/gruntwork-io/terratest v0.43.11/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY= github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd h1:1uPcotqoL4TjcGKlgIe7OFSRplf7BMVtUjekwmCrvuM= github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= @@ -517,35 +404,23 @@ github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1R github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= 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= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -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= @@ -556,15 +431,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= @@ -574,90 +444,51 @@ github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsI github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= github.com/migueleliasweb/go-github-mock v0.0.19 h1:z/88f6wPqZVFnE7s9DbwXMhCtmV/0FofNxc4M7FuSdU= github.com/migueleliasweb/go-github-mock v0.0.19/go.mod h1:dBoCB3W9NjzyABhoGkfI0iSlFpzulAXhI7M+9A4ONYI= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64 h1:+9bM6qWXndPx7+czi9+Jj6zHPioFpfdhwVGOYOgujMY= -github.com/mitchellh/go-testing-interface v1.14.2-0.20210217184823-a52172cd2f64/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= +github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20230304011918-d82cbe189211 h1:Ma5rn7r3rPwyP9OXi6zNKjNDsCHYccjcno9M83SHgO0= -github.com/open-policy-agent/frameworks/constraint v0.0.0-20230304011918-d82cbe189211/go.mod h1:jggTVbseMnEQmCSgMRXByS4P7ykSBz6pLlxsbncSALM= -github.com/open-policy-agent/gatekeeper v0.0.0-20230406045040-effa347e75b5 h1:PcusWo4V3WKTmm8clDcdN4esH3pxdeykFj8xd/Azc6s= -github.com/open-policy-agent/gatekeeper v0.0.0-20230406045040-effa347e75b5/go.mod h1:VfOGFct/w2m56hwaUzZLGSxmGriF9ewWGqei5wovPxo= -github.com/open-policy-agent/opa v0.49.2 h1:n8ntRq/yDWy+cmYaqSLrHXmrT3tX8WlK28vjFQdC6W8= -github.com/open-policy-agent/opa v0.49.2/go.mod h1:7L3lN5qe8xboRmEHxC5lGjo5KsRMdK+CCLiFoOCP7rU= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU= +github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f h1:dJDnp6A6LBrU/hbve5NzZNV3OzPYXdD0SJUn+xAPj+I= +github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= +github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= +github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= +github.com/open-policy-agent/opa v0.54.0 h1:mGEsK+R5ZTMV8fzzbNzmYDGbTmY30wmRCIHmtm2VqWs= +github.com/open-policy-agent/opa v0.54.0/go.mod h1:d8I8jWygKGi4+T4H07qrbeCdH1ITLsEfT0M+bsvxWw0= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -665,104 +496,57 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.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.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= -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_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_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.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.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.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.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.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +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/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +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/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= 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/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -779,14 +563,13 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 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/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.15.0 h1:5n/pM+v3r5ujuNl4YLZLsQ+UE5jlkLVm7jMzT5Mpolw= +github.com/tidwall/gjson v1.15.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= @@ -795,8 +578,6 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= @@ -809,25 +590,16 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yashtewari/glob-intersection v0.1.0 h1:6gJvMYQlTDOL3dMsPF6J0+26vwX9MB8/1q3uAdhmTrg= -github.com/yashtewari/glob-intersection v0.1.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= +github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg= +github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= 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.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.13.1 h1:0a6bRwuiSHtAmqCqNOE+c2oHgepv0ctoxU4FUe43kwc= -github.com/zclconf/go-cty v1.13.1/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= +github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -838,65 +610,41 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -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.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.0 h1:Ajldaqhxqw/gNzQA45IKFWLdG7jZuXX/wBW1d5qvbUI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.0/go.mod h1:9NiG9I2aHTKkcxqCILhjtyNA1QEiCjdBACv4IvrFQ+c= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4= -go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0 h1:TaB+1rQhddO1sF71MpZOZAuSPW1klK2M8XxfrBMfK7Y= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0 h1:pDDYmo0QadUPal5fwXoY1pmMpFcdyhXOmL5drCrI3vU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0/go.mod h1:Krqnjl22jUJ0HgMzw5eveuCvFDXY4nSYb4F8t5gdrag= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0 h1:KtiUEhQmj/Pa874bVYKGNVdq8NPKiacPbaRRtgXi+t4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0/go.mod h1:OfUCyyIiDvNXHWpcWgbF+MWvqPZiNa3YDEnivcnYsV0= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/metric v0.31.0 h1:6SiklT+gfWAwWUR0meEMxQBtihpiEs4c+vL9spDTqUs= -go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY= -go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E= -go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0 h1:yt2NKzK7Vyo6h0+X8BA4FpreZQTlVEIarnsBP/H5mzs= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0/go.mod h1:+ARmXlUlc51J7sZeCBkBJNdHGySrdOzgzxp6VWRWM1U= +go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= +go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 h1:/fXHZHGvro6MVqV34fJzDhi7sHGpX3Ej/Qjmfn003ho= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 h1:ap+y8RXX3Mu9apKVtOkM6WSFESLM8K3wNQyOU8sWHcc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= +go.opentelemetry.io/otel/metric v0.34.0 h1:MCPoQxcg/26EuuJwpYN1mZTeCYAUGx8ABxfW07YkjP8= +go.opentelemetry.io/otel/metric v0.34.0/go.mod h1:ZFuI4yQGNCupurTXCwkeD/zHBt+C2bR7bw5JqUm/AP8= +go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= +go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= +go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= -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/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -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/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/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-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= 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= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -930,7 +678,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -941,31 +688,22 @@ 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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -976,7 +714,6 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -986,17 +723,11 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63/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.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= @@ -1013,13 +744,7 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= @@ -1034,17 +759,11 @@ 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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1058,15 +777,10 @@ golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1078,12 +792,8 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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= @@ -1091,25 +801,14 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1125,7 +824,6 @@ golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -1152,17 +850,14 @@ golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 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= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1172,13 +867,10 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1198,7 +890,6 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -1214,20 +905,16 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= 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= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -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.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= 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= @@ -1247,9 +934,6 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.129.0 h1:2XbdjjNfFPXQyufzQVwPf1RRnHH8Den2pfNE2jw7L8w= google.golang.org/api v0.129.0/go.mod h1:dFjiXlanKwWE3612X97llhsoI36FAoIiRj3aTl5b/zE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -1291,20 +975,12 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D 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-20200904004341-0bd0a958aa1d/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-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= @@ -1315,7 +991,6 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= 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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -1332,9 +1007,6 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= @@ -1356,7 +1028,6 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/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= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1364,24 +1035,16 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -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= @@ -1390,8 +1053,6 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= 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= @@ -1399,63 +1060,38 @@ 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.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= -k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= -k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= -k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE= -k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ= -k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= -k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= -k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= -k8s.io/apiserver v0.26.3 h1:blBpv+yOiozkPH2aqClhJmJY+rp53Tgfac4SKPDJnU4= -k8s.io/apiserver v0.26.3/go.mod h1:CJe/VoQNcXdhm67EvaVjYXxR3QyfwpceKPuPaeLibTA= -k8s.io/cli-runtime v0.23.5/go.mod h1:oY6QDF2qo9xndSq32tqcmRp2UyXssdGrLfjAVymgbx4= -k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= -k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s= -k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ= -k8s.io/code-generator v0.23.5/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk= -k8s.io/component-base v0.23.5/go.mod h1:c5Nq44KZyt1aLl0IpHX82fhsn84Sb0jjzwjpcA42bY0= -k8s.io/component-base v0.26.3 h1:oC0WMK/ggcbGDTkdcqefI4wIZRYdK3JySx9/HADpV0g= -k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= -k8s.io/component-helpers v0.23.5/go.mod h1:5riXJgjTIs+ZB8xnf5M2anZ8iQuq37a0B/0BgoPQuSM= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= -k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -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/kubectl v0.23.5 h1:DmDULqCaF4qstj0Im143XmncvqWtJxHzK8IrW2BzlU0= -k8s.io/kubectl v0.23.5/go.mod h1:lLgw7cVY8xbd7o637vOXPca/w6HC205KsPCRDYRCxwE= -k8s.io/metrics v0.23.5/go.mod h1:WNAtV2a5BYbmDS8+7jSqYYV6E3efuGTpIwJ8PTD1wgs= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y= -k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/api v0.27.2 h1:+H17AJpUMvl+clT+BPnKf0E3ksMAzoBBg7CntpSuADo= +k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4= +k8s.io/apiextensions-apiserver v0.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo= +k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ= +k8s.io/apimachinery v0.27.2 h1:vBjGaKKieaIreI+oQwELalVG4d8f3YAMNpWLzDXkxeg= +k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= +k8s.io/apiserver v0.27.2 h1:p+tjwrcQEZDrEorCZV2/qE8osGTINPuS5ZNqWAvKm5E= +k8s.io/apiserver v0.27.2/go.mod h1:EsOf39d75rMivgvvwjJ3OW/u9n1/BmUMK5otEOJrb1Y= +k8s.io/client-go v0.27.2 h1:vDLSeuYvCHKeoQRhCXjxXO45nHVv2Ip4Fe0MfioMrhE= +k8s.io/client-go v0.27.2/go.mod h1:tY0gVmUsHrAmjzHX9zs7eCjxcBsf8IiNe7KQ52biTcQ= +k8s.io/component-base v0.27.2 h1:neju+7s/r5O4x4/txeUONNTS9r1HsPbyoPBAtHsDCpo= +k8s.io/component-base v0.27.2/go.mod h1:5UPk7EjfgrfgRIuDBFtsEFAe4DAvP3U+M8RTzoSJkpo= +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-20230525220651-2546d827e515 h1:OmK1d0WrkD3IPfkskvroRykOulHVHf0s0ZIFRjyt+UI= +k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ= +k8s.io/kubectl v0.26.4 h1:A0Oa0u/po4KxXnXsNCOwLojAe9cQR3TJNJabEIf7U1w= +k8s.io/kubectl v0.26.4/go.mod h1:cWtp/+I4p+h5En3s2zO1zCry9v3/6h37EQ2tF3jNRnM= +k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= +k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 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/apiserver-network-proxy/konnectivity-client v0.0.36 h1:PUuX1qIFv309AT8hF/CdPKDmsG/hn/L8zRX7VvISM3A= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.36/go.mod h1:WxjusMwXlKzfAs4p9km6XJRndVt2FROgMVCE4cdohFo= -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/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 h1:trsWhjU5jZrx6UvFu4WzQDrN7Pga4a7Qg+zcfcj64PA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= +sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUTb/+4c= +sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= 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/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= -sigs.k8s.io/kustomize/cmd/config v0.10.2/go.mod h1:K2aW7nXJ0AaT+VA/eO0/dzFLxmpFcTzudmAgDwPY1HQ= -sigs.k8s.io/kustomize/kustomize/v4 v4.4.1/go.mod h1:qOKJMMz2mBP+vcS7vK+mNz4HBLjaQSWRY22EF6Tb7Io= -sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= sigs.k8s.io/kustomize/kyaml v0.14.2 h1:9WSwztbzwGszG1bZTziQUmVMrJccnyrLb5ZMKpJGvXw= sigs.k8s.io/kustomize/kyaml v0.14.2/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= 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/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From 38bd24ca424ec323a5d69a9b4c40434fbb7fd5b9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Aug 2023 02:00:51 +0200 Subject: [PATCH 0525/1371] chore(deps): update github/codeql-action action to v2.21.4 (#1766) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 13e20d4659d..22fb3ca9253 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3 + uses: github/codeql-action/upload-sarif@a09933a12a80f87b87005513f0abb1494c27a716 # v2.21.4 with: sarif_file: results.sarif From 2392049b99cf6437d01c67249bb9f644bfc9ef1f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 16 Aug 2023 08:41:45 -0700 Subject: [PATCH 0526/1371] chore: update release-please-manifest for module-swapper (#1760) --- .release-please-manifest.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e6ba6306b38..3ba97e5b70d 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,4 @@ { - "infra/blueprint-test": "0.7.0" + "infra/blueprint-test": "0.7.0", + "infra/module-swapper": "0.0.1" } From d0e1f501fa831b78896e27a2cc6c8a6e4c1c3e10 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 16 Aug 2023 09:03:35 -0700 Subject: [PATCH 0527/1371] chore(master): release module-swapper 0.1.0 (#1759) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 infra/module-swapper/CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3ba97e5b70d..4e203ce9c41 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.7.0", - "infra/module-swapper": "0.0.1" + "infra/module-swapper": "0.1.0" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md new file mode 100644 index 00000000000..9de51615630 --- /dev/null +++ b/infra/module-swapper/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +## [0.1.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper-v0.0.1...infra/module-swapper/v0.1.0) (2023-08-16) + + +### Features + +* convert module-swapper to release-please ([#1735](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1735)) ([2cc1e98](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2cc1e987d4f7a8cb861f6b78d755529ae713103e)) From 95206e4a1f3e3e46312e7334839923194a0b5942 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 16 Aug 2023 10:04:03 -0700 Subject: [PATCH 0528/1371] feat: update module path and GO 1.20 lint (#1758) --- .github/workflows/go-module-swapper.yml | 35 ++++++++++++------------- infra/module-swapper/cmd/swap.go | 12 +++++---- infra/module-swapper/cmd/swap_test.go | 5 ++-- infra/module-swapper/go.mod | 4 +-- infra/module-swapper/main.go | 2 +- 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 64be4bfbfea..fb6bbe03a65 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -32,21 +32,20 @@ jobs: cache-dependency-path: infra/module-swapper/go.sum - run: |- go test ./... -v -# TODO: Enable after inital commit -# golangci: -# name: lint -# runs-on: ubuntu-latest -# strategy: -# fail-fast: false -# steps: -# - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 -# - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 -# with: -# go-version-file: infra/module-swapper/go.mod -# cache-dependency-path: infra/module-swapper/go.sum -# - name: golangci-lint -# uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0 -# with: -# version: latest -# working-directory: 'infra/module-swapper' -# args: --timeout=5m + golangci: + name: lint + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + with: + go-version-file: infra/module-swapper/go.mod + cache-dependency-path: infra/module-swapper/go.sum + - name: golangci-lint + uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0 + with: + version: latest + working-directory: 'infra/module-swapper' + args: --timeout=5m diff --git a/infra/module-swapper/cmd/swap.go b/infra/module-swapper/cmd/swap.go index fe90034fc11..5a490194f52 100644 --- a/infra/module-swapper/cmd/swap.go +++ b/infra/module-swapper/cmd/swap.go @@ -2,7 +2,6 @@ package cmd import ( "fmt" - "io/ioutil" "log" "os" "path/filepath" @@ -87,7 +86,7 @@ func findSubModules(path, rootModuleFQN string) []LocalTerraformModule { log.Print("No submodules found") return subModules } - files, err := ioutil.ReadDir(path) + files, err := os.ReadDir(path) if err != nil { log.Fatalf("Error finding submodules: %v", err) } @@ -183,7 +182,7 @@ func getTFFiles(path string) []string { log.Fatal(fmt.Errorf("Unable to find %s : %v", path, err)) } var files = make([]string, 0) - filepath.Walk(path, func(path string, info os.FileInfo, err error) error { + err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error { if err != nil && info.IsDir() { return nil } @@ -193,6 +192,9 @@ func getTFFiles(path string) []string { } return nil }) + if err != nil { + log.Printf("Error walking files: %v", err) + } return files } @@ -215,7 +217,7 @@ func SwapModules(rootPath, moduleRegistrySuffix, subModulesDir, examplesDir stri // find all TF files in examples dir to process exampleTFFiles := getTFFiles(examplesPath) for _, TFFilePath := range exampleTFFiles { - file, err := ioutil.ReadFile(TFFilePath) + file, err := os.ReadFile(TFFilePath) if err != nil { log.Printf("Error reading file: %v", err) } @@ -231,7 +233,7 @@ func SwapModules(rootPath, moduleRegistrySuffix, subModulesDir, examplesDir stri } if newFile != nil { - err = ioutil.WriteFile(TFFilePath, newFile, 0644) + err = os.WriteFile(TFFilePath, newFile, 0644) if err != nil { log.Printf("Error writing file: %v", err) } diff --git a/infra/module-swapper/cmd/swap_test.go b/infra/module-swapper/cmd/swap_test.go index 522f908897b..f50683aa863 100644 --- a/infra/module-swapper/cmd/swap_test.go +++ b/infra/module-swapper/cmd/swap_test.go @@ -3,7 +3,6 @@ package cmd import ( "bytes" "fmt" - "io/ioutil" "log" "os" "path/filepath" @@ -29,7 +28,7 @@ func getAbsPathHelper(p string) string { } func getFileHelper(p string) []byte { - f, err := ioutil.ReadFile(p) + f, err := os.ReadFile(p) if err != nil { log.Fatalf("Error reading file: %v", err) } @@ -151,7 +150,7 @@ func Test_processFile(t *testing.T) { } func getTempDir() string { - d, err := ioutil.TempDir("", "gitrmtest") + d, err := os.MkdirTemp("", "gitrmtest") if err != nil { log.Fatalf("Error creating tempdir: %v", err) } diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index ceaae74e773..de50eae3dfe 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -1,6 +1,6 @@ -module github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper +module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swapper -go 1.18 +go 1.20 require ( github.com/go-git/go-git/v5 v5.7.0 diff --git a/infra/module-swapper/main.go b/infra/module-swapper/main.go index 474ee47ad2a..791479732e8 100644 --- a/infra/module-swapper/main.go +++ b/infra/module-swapper/main.go @@ -5,7 +5,7 @@ import ( "log" "os" - "github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper/cmd" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swapper/cmd" ) func main() { From 64031dc619994f75c2ed57680573d12d4a736cf5 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 16 Aug 2023 10:25:01 -0700 Subject: [PATCH 0529/1371] chore(master): release module-swapper 0.2.0 (#1771) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4e203ce9c41..e08ca46a756 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.7.0", - "infra/module-swapper": "0.1.0" + "infra/module-swapper": "0.2.0" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 9de51615630..e57d4b4a4e1 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.1.0...infra/module-swapper/v0.2.0) (2023-08-16) + + +### Features + +* update module path and GO 1.20 lint ([#1758](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1758)) ([95206e4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/95206e4a1f3e3e46312e7334839923194a0b5942)) + ## [0.1.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper-v0.0.1...infra/module-swapper/v0.1.0) (2023-08-16) From a3d09c84b5314b97745a5963518a720162570973 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Aug 2023 19:28:09 +0200 Subject: [PATCH 0530/1371] chore(deps): update actions/setup-go action to v4.1.0 (#1770) --- .github/workflows/go-module-swapper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index fb6bbe03a65..c431d987703 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -39,7 +39,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum From e45ce52f1233d5e6d751fc7594c8de65b36ac209 Mon Sep 17 00:00:00 2001 From: Nevin Zheng <6531363+nevzheng@users.noreply.github.com> Date: Wed, 16 Aug 2023 15:55:38 -0700 Subject: [PATCH 0531/1371] fix: skip checks for parquet files (#1776) --- infra/build/Makefile | 2 +- .../developer-tools/build/scripts/task_helper_functions.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d96312f5096..cc0695fb931 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 2800ddbfbe0..c8e6d3fc89a 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -75,6 +75,7 @@ find_files() { ".*/.*\.jpeg" ".*/.*\.svg" ".*/.*\.ico" + ".*/.*\.parquet" ".*/.*\.pb" ".*/.*\.index" "\./autogen" @@ -235,7 +236,7 @@ check_whitespace() { local rc echo "Checking for trailing whitespace" find_files . -print \ - | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip|ico|pb|index)$' \ + | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip|ico|parquet|pb|index)$' \ | compat_xargs grep -H -n '[[:blank:]]$' rc=$? if [[ ${rc} -eq 0 ]]; then @@ -246,7 +247,7 @@ check_whitespace() { fi echo "Checking for missing newline at end of file" find_files . -print \ - | grep -v -E '\.(png|gz|tfvars|mp4|zip|ico|pb|index)$' \ + | grep -v -E '\.(png|gz|tfvars|mp4|zip|ico|parquet|pb|index)$' \ | compat_xargs check_eof_newline return $((rc+$?)) } From 369147023a06d854b2c6e606579bc7a0d3fdab8c Mon Sep 17 00:00:00 2001 From: Ray Zhang <141791707+rzy-goog@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:11:30 -0700 Subject: [PATCH 0532/1371] feat: add disk image reference in machine type property extension (#1768) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui_ext.pb.go | 17 +++++++++++++++-- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 4 ++++ .../schema/gcp-blueprint-metadata.json | 3 +++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index a679e23826f..aef8adc6b34 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.1 +VERSION=v1.2.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go index 0796148f2ab..c75e80813f2 100644 --- a/cli/bpmetadata/bpmetadata_ui_ext.pb.go +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -432,6 +432,9 @@ type GCEMachineTypeExtension struct { // More info: // https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type DisallowCustomMachineTypes bool `protobuf:"varint,3,opt,name=disallow_custom_machine_types,json=disallowCustomMachineTypes,proto3" json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty"` // @gotags: json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty" + // Disk Image allows us to reference the image that is being used + // to help provide/gather data such as the image architecture. + DiskImageProperty string `protobuf:"bytes,4,opt,name=disk_image_property,json=diskImageProperty,proto3" json:"diskImageProperty,omitempty" yaml:"diskImageProperty,omitempty"` // @gotags: json:"diskImageProperty,omitempty" yaml:"diskImageProperty,omitempty" } func (x *GCEMachineTypeExtension) Reset() { @@ -487,6 +490,13 @@ func (x *GCEMachineTypeExtension) GetDisallowCustomMachineTypes() bool { return false } +func (x *GCEMachineTypeExtension) GetDiskImageProperty() string { + if x != nil { + return x.DiskImageProperty + } + return "" +} + // GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. type GCEGPUTypeExtension struct { state protoimpl.MessageState @@ -1197,7 +1207,7 @@ var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x93, 0x01, 0x0a, 0x17, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, + 0x22, 0xc3, 0x01, 0x0a, 0x17, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, @@ -1206,7 +1216,10 @@ var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index 31d497c166e..5aec2522dd3 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -91,6 +91,10 @@ message GCEMachineTypeExtension { // More info: // https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type bool disallow_custom_machine_types = 3; // @gotags: json:"disallowCustomMachineTypes,omitempty" yaml:"disallowCustomMachineTypes,omitempty" + + // Disk Image allows us to reference the image that is being used + // to help provide/gather data such as the image architecture. + string disk_image_property = 4; // @gotags: json:"diskImageProperty,omitempty" yaml:"diskImageProperty,omitempty" } // GCEGPUTypeExtension specifies a GPU type extension for a GCE resource. diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 7174e765f88..55af3f900a6 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -863,6 +863,9 @@ }, "disallowCustomMachineTypes": { "type": "boolean" + }, + "diskImageProperty": { + "type": "string" } }, "additionalProperties": false, From 5bc7a564422144df44a5a488c33e6e7d7bb00de1 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 17 Aug 2023 09:59:04 -0700 Subject: [PATCH 0533/1371] fix: logging and TestKRMSimpleBlueprint timeout (#1774) --- infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- .../simple_krm_blueprint/{namespace.yaml => pod.yaml} | 11 +++++++++-- .../examples/simple_krm_blueprint/setters.yaml | 2 +- infra/blueprint-test/pkg/kpt/kpt.go | 2 +- .../blueprint-test/test/krm_simple_blueprint_test.go | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) rename infra/blueprint-test/examples/simple_krm_blueprint/{namespace.yaml => pod.yaml} (80%) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 389fc4a0a20..4f4ee6a8b08 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -19,7 +19,7 @@ steps: dir: 'infra/blueprint-test' - id: test name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' - args: ['/bin/bash', '-c', 'git config --global user.name "cft-test"; git config --global user.email "<>"; go test'] + args: ['/bin/bash', '-c', 'git config --global user.name "cft-test"; git config --global user.email "<>"; go test -v'] dir: 'infra/blueprint-test/test' - id: teardown name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' diff --git a/infra/blueprint-test/examples/simple_krm_blueprint/namespace.yaml b/infra/blueprint-test/examples/simple_krm_blueprint/pod.yaml similarity index 80% rename from infra/blueprint-test/examples/simple_krm_blueprint/namespace.yaml rename to infra/blueprint-test/examples/simple_krm_blueprint/pod.yaml index 7b6bec0cbc9..de78753e8ca 100644 --- a/infra/blueprint-test/examples/simple_krm_blueprint/namespace.yaml +++ b/infra/blueprint-test/examples/simple_krm_blueprint/pod.yaml @@ -12,7 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. + apiVersion: v1 -kind: Namespace +kind: Pod metadata: - name: default-namespace # kpt-set: ${namespace} + name: nginx # kpt-set: ${pod_name} +spec: + containers: + - name: nginx + image: nginx:latest + ports: + - containerPort: 80 diff --git a/infra/blueprint-test/examples/simple_krm_blueprint/setters.yaml b/infra/blueprint-test/examples/simple_krm_blueprint/setters.yaml index 9260aed2e9f..d6d15a18e82 100644 --- a/infra/blueprint-test/examples/simple_krm_blueprint/setters.yaml +++ b/infra/blueprint-test/examples/simple_krm_blueprint/setters.yaml @@ -19,4 +19,4 @@ metadata: # kpt-merge: /setters annotations: config.kubernetes.io/local-config: "true" data: - namespace: simple-krm-blueprint + pod_name: simple-krm-blueprint diff --git a/infra/blueprint-test/pkg/kpt/kpt.go b/infra/blueprint-test/pkg/kpt/kpt.go index fee55abff64..d6c3c4b97d6 100644 --- a/infra/blueprint-test/pkg/kpt/kpt.go +++ b/infra/blueprint-test/pkg/kpt/kpt.go @@ -82,7 +82,7 @@ func (k *CmdCfg) RunCmd(args ...string) string { command := func() (string, error) { return shell.RunCommandAndGetStdOutE(k.t, kptCmd) } - op, err := retry.DoWithRetryE(k.t, "run kpt command", k.tries, 15*time.Second, command) + op, err := retry.DoWithRetryE(k.t, fmt.Sprintf("kpt %v", kptCmd.Args), k.tries, 15*time.Second, command) if err != nil { k.t.Fatal(err) } diff --git a/infra/blueprint-test/test/krm_simple_blueprint_test.go b/infra/blueprint-test/test/krm_simple_blueprint_test.go index 99eec0c0974..f1098dfd80b 100644 --- a/infra/blueprint-test/test/krm_simple_blueprint_test.go +++ b/infra/blueprint-test/test/krm_simple_blueprint_test.go @@ -24,7 +24,7 @@ func TestKRMSimpleBlueprint(t *testing.T) { func(assert *assert.Assertions) { networkBlueprint.DefaultVerify(assert) k8sOpts := k8s.KubectlOptions{} - op, err := k8s.RunKubectlAndGetOutputE(t, &k8sOpts, "get", "namespaces", "simple-krm-blueprint", "--no-headers", "-o", "custom-columns=:metadata.name") + op, err := k8s.RunKubectlAndGetOutputE(t, &k8sOpts, "get", "pod", "simple-krm-blueprint", "--no-headers", "-o", "custom-columns=:metadata.name") assert.NoError(err) assert.Equal("simple-krm-blueprint", op) }) From 85141e63385714875f7ac0c44bdc606a645762e7 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 17 Aug 2023 10:54:32 -0700 Subject: [PATCH 0534/1371] chore(master): release blueprint-test 0.8.0 (#1743) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e08ca46a756..8209ab3168f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.7.0", + "infra/blueprint-test": "0.8.0", "infra/module-swapper": "0.2.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 66fd088d3a7..72780807bcb 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.8.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.7.0...infra/blueprint-test/v0.8.0) (2023-08-17) + + +### Features + +* add utils.PollE ([#1729](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1729)) ([e256d2f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e256d2fdfb10a8a7f86a37145f3388df353cea13)) + + +### Bug Fixes + +* **deps:** update bpt go modules ([#1748](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1748)) ([f90deec](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/f90deec4e6a9728505acee667ae1083a8a270a84)) +* logging and TestKRMSimpleBlueprint timeout ([#1774](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1774)) ([5bc7a56](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5bc7a564422144df44a5a488c33e6e7d7bb00de1)) + ## [0.7.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.6.1...infra/blueprint-test/v0.7.0) (2023-07-20) From 17744b0227ac7376f157e6f647fb2e3f440db818 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 17 Aug 2023 20:44:07 +0200 Subject: [PATCH 0535/1371] fix(deps): update module google.golang.org/api to v0.136.0 (#1736) --- infra/utils/fbf/go.mod | 20 +++++++++---------- infra/utils/fbf/go.sum | 44 +++++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index a52d4601511..53ba0ad8274 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.132.0 + google.golang.org/api v0.136.0 ) require ( - cloud.google.com/go/compute v1.20.1 // indirect + cloud.google.com/go/compute v1.23.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect @@ -26,15 +26,15 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.11.0 // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/oauth2 v0.10.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/term v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/oauth2 v0.11.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/term v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect - google.golang.org/grpc v1.56.2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 // indirect + google.golang.org/grpc v1.57.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index e107439b42f..8ee37e38dbb 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,7 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg= -cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -105,8 +105,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -125,12 +125,12 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= 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= @@ -150,20 +150,20 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.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.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.132.0 h1:8t2/+qZ26kAOGSmOiHwVycqVaDg7q3JDILrNi/Z6rvc= -google.golang.org/api v0.132.0/go.mod h1:AeTBC6GpJnJSRJjktDcPX0QwtS8pGYZOV6MSuSCusw0= +google.golang.org/api v0.136.0 h1:e/6enzUE1s4tGPa6Q3ZYShKTtvRc+1Jq0rrafhppmOs= +google.golang.org/api v0.136.0/go.mod h1:XtJfF+V2zgUxelOn5Zs3kECtluMxneJG8ZxUTlLNTPA= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -184,10 +184,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= -google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 h1:XVeBY8d/FaK4848myy41HBqnDwvxeV3zMZhwN1TvAMU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 h1:wukfNtZmZUurLN/atp2hiIeTKn7QJWIQdHzqmsOnAOk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -196,8 +196,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= +google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= 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= From 8e9a9f68e40436ce609622ded078d70482d8a15b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 17 Aug 2023 22:41:48 +0200 Subject: [PATCH 0536/1371] fix(deps): update module google.golang.org/api to v0.137.0 (#1779) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 53ba0ad8274..b84141ed827 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.136.0 + google.golang.org/api v0.137.0 ) require ( @@ -16,7 +16,7 @@ require ( github.com/fatih/color v1.15.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/s2a-go v0.1.4 // indirect + github.com/google/s2a-go v0.1.5 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 8ee37e38dbb..12c2fc5d200 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -58,8 +58,8 @@ github.com/google/go-cmp v0.5.0/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.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.5 h1:8IYp3w9nysqv3JH+NJgXJzGbDHzLOTj43BmSkp+O7qg= +github.com/google/s2a-go v0.1.5/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= 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= @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.136.0 h1:e/6enzUE1s4tGPa6Q3ZYShKTtvRc+1Jq0rrafhppmOs= -google.golang.org/api v0.136.0/go.mod h1:XtJfF+V2zgUxelOn5Zs3kECtluMxneJG8ZxUTlLNTPA= +google.golang.org/api v0.137.0 h1:QrKX6uNvzJLr0Fd3vWVqcyrcmFoYi036VUAsZbiF4+s= +google.golang.org/api v0.137.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= From 86de7c9593ee2c94ce69fea92e09b51c24f56350 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 18 Aug 2023 15:04:53 -0700 Subject: [PATCH 0537/1371] feat: adds secrets for tf-cloud-agents modules (#1782) Co-authored-by: Bharath KKB --- .github/workflows/lint.yaml | 2 +- .../terraform/test-org/ci-triggers/secrets.tf | 31 +++++++++++++++++++ .../test-org/ci-triggers/triggers.tf | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 infra/terraform/test-org/ci-triggers/secrets.tf diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index dfc16658dfb..2cde7498107 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -34,5 +34,5 @@ jobs: - uses: 'actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9' # v3 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: - EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs' + EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' EXCLUDE_HEADER_CHECK: '.*' diff --git a/infra/terraform/test-org/ci-triggers/secrets.tf b/infra/terraform/test-org/ci-triggers/secrets.tf new file mode 100644 index 00000000000..1e774086635 --- /dev/null +++ b/infra/terraform/test-org/ci-triggers/secrets.tf @@ -0,0 +1,31 @@ +/** + * Copyright 2023 Google LLC + * + * 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. + */ + +resource "google_secret_manager_secret" "tfe_token" { + project = local.project_id + secret_id = "tke-token" + + replication { + automatic = true + } +} + +resource "google_secret_manager_secret_iam_member" "tfe_token_member" { + project = google_secret_manager_secret.tfe_token.project + secret_id = google_secret_manager_secret.tfe_token.secret_id + role = "roles/secretmanager.secretAccessor" + member = "group:${data.terraform_remote_state.org.outputs.cft_ci_group}" +} diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index cf8928bdb2f..810574893c5 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -37,6 +37,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { _VOD_TEST_PROJECT_ID = each.key == "terraform-google-media-cdn-vod" ? local.vod_test_project_id : null _FILE_LOGS_BUCKET = lookup(local.enable_file_log, each.key, false) ? module.filelogs_bucket.url : null _LR_BILLING_ACCOUNT = local.lr_billing_account + _TFE_TOKEN_SECRET_ID = each.key == "terraform-google-tf-cloud-agents" ? google_secret_manager_secret.tfe_token.id : null }, # add sfb substitutions contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} From 3d23f45906e37b0b0951a7d48bd3d7addbb41913 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 22 Aug 2023 17:24:00 +0200 Subject: [PATCH 0538/1371] chore(deps): update golangci/golangci-lint-action action to v3.7.0 (#1784) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 7f6880a0594..6e13f5418c0 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -37,7 +37,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0 + uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0 with: version: latest working-directory: ${{ matrix.folder }} diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index c431d987703..999a550648b 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -44,7 +44,7 @@ jobs: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum - name: golangci-lint - uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0 + uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0 with: version: latest working-directory: 'infra/module-swapper' From 6104e1b5dc5bc1857cb7f5e7eaa7682c66f4a41c Mon Sep 17 00:00:00 2001 From: Ray Zhang <141791707+rzy-goog@users.noreply.github.com> Date: Tue, 22 Aug 2023 08:50:23 -0700 Subject: [PATCH 0539/1371] feat: add subtext and enumValueLabels to bpmetadata ui proto (#1781) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui.pb.go | 277 ++++++++++++------ cli/bpmetadata/proto/bpmetadata_ui.proto | 14 + .../schema/gcp-blueprint-metadata.json | 21 ++ 4 files changed, 225 insertions(+), 89 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index aef8adc6b34..d18047c224d 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.2 +VERSION=v1.2.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index f3ef4f9b4ff..8811ca95744 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -148,6 +148,13 @@ type DisplayVariable struct { // Optional. UTF-8 text. No markup. At most 128 characters. // Gen: manually-authored Validation string `protobuf:"bytes,15,opt,name=validation,proto3" json:"validation,omitempty" yaml:"validation,omitempty"` // @gotags: json:"validation,omitempty" yaml:"validation,omitempty" + // Property subtext, displayed below the title. + // Gen: manually-authored + Subtext string `protobuf:"bytes,16,opt,name=subtext,proto3" json:"subtext,omitempty" yaml:"subtext,omitempty"` // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" + // Labels for enum values. + // Values must be UTF-8 text with no markup, and at most 64 characters. + // Gen: manually-authored + EnumValueLabels []*ValueLabel `protobuf:"bytes,17,rep,name=enum_value_labels,json=enumValueLabels,proto3" json:"enumValueLabels,omitempty" yaml:"enumValueLabels,omitempty"` // @gotags: json:"enumValueLabels,omitempty" yaml:"enumValueLabels,omitempty" } func (x *DisplayVariable) Reset() { @@ -287,6 +294,75 @@ func (x *DisplayVariable) GetValidation() string { return "" } +func (x *DisplayVariable) GetSubtext() string { + if x != nil { + return x.Subtext + } + return "" +} + +func (x *DisplayVariable) GetEnumValueLabels() []*ValueLabel { + if x != nil { + return x.EnumValueLabels + } + return nil +} + +type ValueLabel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty" yaml:"label,omitempty"` // @gotags: json:"label,omitempty" yaml:"label,omitempty" + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty" yaml:"value,omitempty"` // @gotags: json:"value,omitempty" yaml:"value,omitempty" +} + +func (x *ValueLabel) Reset() { + *x = ValueLabel{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValueLabel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueLabel) ProtoMessage() {} + +func (x *ValueLabel) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueLabel.ProtoReflect.Descriptor instead. +func (*ValueLabel) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2} +} + +func (x *ValueLabel) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *ValueLabel) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + // A logical group of variables. [Section][]s may also be grouped into // sub-sections. type DisplaySection struct { @@ -316,7 +392,7 @@ type DisplaySection struct { func (x *DisplaySection) Reset() { *x = DisplaySection{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[2] + mi := &file_bpmetadata_ui_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -329,7 +405,7 @@ func (x *DisplaySection) String() string { func (*DisplaySection) ProtoMessage() {} func (x *DisplaySection) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[2] + mi := &file_bpmetadata_ui_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -342,7 +418,7 @@ func (x *DisplaySection) ProtoReflect() protoreflect.Message { // Deprecated: Use DisplaySection.ProtoReflect.Descriptor instead. func (*DisplaySection) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{3} } func (x *DisplaySection) GetName() string { @@ -401,7 +477,7 @@ type BlueprintUIOutput struct { func (x *BlueprintUIOutput) Reset() { *x = BlueprintUIOutput{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[3] + mi := &file_bpmetadata_ui_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -414,7 +490,7 @@ func (x *BlueprintUIOutput) String() string { func (*BlueprintUIOutput) ProtoMessage() {} func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[3] + mi := &file_bpmetadata_ui_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -427,7 +503,7 @@ func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintUIOutput.ProtoReflect.Descriptor instead. func (*BlueprintUIOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{3} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} } func (x *BlueprintUIOutput) GetOutputMessage() string { @@ -482,7 +558,7 @@ type UIActionItem struct { func (x *UIActionItem) Reset() { *x = UIActionItem{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[4] + mi := &file_bpmetadata_ui_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -495,7 +571,7 @@ func (x *UIActionItem) String() string { func (*UIActionItem) ProtoMessage() {} func (x *UIActionItem) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[4] + mi := &file_bpmetadata_ui_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -508,7 +584,7 @@ func (x *UIActionItem) ProtoReflect() protoreflect.Message { // Deprecated: Use UIActionItem.ProtoReflect.Descriptor instead. func (*UIActionItem) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} } func (x *UIActionItem) GetHeading() string { @@ -559,7 +635,7 @@ type DisplayOutput struct { func (x *DisplayOutput) Reset() { *x = DisplayOutput{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[5] + mi := &file_bpmetadata_ui_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -572,7 +648,7 @@ func (x *DisplayOutput) String() string { func (*DisplayOutput) ProtoMessage() {} func (x *DisplayOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[5] + mi := &file_bpmetadata_ui_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -585,7 +661,7 @@ func (x *DisplayOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use DisplayOutput.ProtoReflect.Descriptor instead. func (*DisplayOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{6} } func (x *DisplayOutput) GetOpenInNewTab() bool { @@ -628,7 +704,7 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfb, 0x03, + 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xed, 0x04, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, @@ -660,57 +736,68 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x78, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x0e, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, - 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, - 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, - 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, - 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, - 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, - 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, - 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, - 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, - 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, + 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x56, 0x0a, 0x11, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0f, 0x65, 0x6e, + 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x38, 0x0a, + 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, + 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, + 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, + 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, + 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x68, 0x0a, 0x0d, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, + 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, + 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, + 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, + 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -725,31 +812,33 @@ func file_bpmetadata_ui_proto_rawDescGZIP() []byte { return file_bpmetadata_ui_proto_rawDescData } -var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 9) var file_bpmetadata_ui_proto_goTypes = []interface{}{ (*BlueprintUIInput)(nil), // 0: google.cloud.config.bpmetadata.BlueprintUIInput (*DisplayVariable)(nil), // 1: google.cloud.config.bpmetadata.DisplayVariable - (*DisplaySection)(nil), // 2: google.cloud.config.bpmetadata.DisplaySection - (*BlueprintUIOutput)(nil), // 3: google.cloud.config.bpmetadata.BlueprintUIOutput - (*UIActionItem)(nil), // 4: google.cloud.config.bpmetadata.UIActionItem - (*DisplayOutput)(nil), // 5: google.cloud.config.bpmetadata.DisplayOutput - nil, // 6: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - nil, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - (*GooglePropertyExtension)(nil), // 8: google.cloud.config.bpmetadata.GooglePropertyExtension + (*ValueLabel)(nil), // 2: google.cloud.config.bpmetadata.ValueLabel + (*DisplaySection)(nil), // 3: google.cloud.config.bpmetadata.DisplaySection + (*BlueprintUIOutput)(nil), // 4: google.cloud.config.bpmetadata.BlueprintUIOutput + (*UIActionItem)(nil), // 5: google.cloud.config.bpmetadata.UIActionItem + (*DisplayOutput)(nil), // 6: google.cloud.config.bpmetadata.DisplayOutput + nil, // 7: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + nil, // 8: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + (*GooglePropertyExtension)(nil), // 9: google.cloud.config.bpmetadata.GooglePropertyExtension } var file_bpmetadata_ui_proto_depIdxs = []int32{ - 6, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - 2, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection - 8, // 2: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension - 4, // 3: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem - 7, // 4: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - 1, // 5: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable - 5, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput - 7, // [7:7] is the sub-list for method output_type - 7, // [7:7] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 7, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + 3, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection + 9, // 2: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension + 2, // 3: google.cloud.config.bpmetadata.DisplayVariable.enum_value_labels:type_name -> google.cloud.config.bpmetadata.ValueLabel + 5, // 4: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem + 8, // 5: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + 1, // 6: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable + 6, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_bpmetadata_ui_proto_init() } @@ -784,7 +873,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisplaySection); i { + switch v := v.(*ValueLabel); i { case 0: return &v.state case 1: @@ -796,7 +885,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintUIOutput); i { + switch v := v.(*DisplaySection); i { case 0: return &v.state case 1: @@ -808,7 +897,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UIActionItem); i { + switch v := v.(*BlueprintUIOutput); i { case 0: return &v.state case 1: @@ -820,6 +909,18 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UIActionItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DisplayOutput); i { case 0: return &v.state @@ -838,7 +939,7 @@ func file_bpmetadata_ui_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bpmetadata_ui_proto_rawDesc, NumEnums: 0, - NumMessages: 8, + NumMessages: 9, NumExtensions: 0, NumServices: 0, }, diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 88940f5db7d..40b557af4f2 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -94,6 +94,20 @@ message DisplayVariable { // Optional. UTF-8 text. No markup. At most 128 characters. // Gen: manually-authored string validation = 15; // @gotags: json:"validation,omitempty" yaml:"validation,omitempty" + + // Property subtext, displayed below the title. + // Gen: manually-authored + string subtext = 16; // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" + + // Labels for enum values. + // Values must be UTF-8 text with no markup, and at most 64 characters. + // Gen: manually-authored + repeated ValueLabel enum_value_labels = 17; // @gotags: json:"enumValueLabels,omitempty" yaml:"enumValueLabels,omitempty" +} + +message ValueLabel { + string label = 1; // @gotags: json:"label,omitempty" yaml:"label,omitempty" + string value = 2; // @gotags: json:"value,omitempty" yaml:"value,omitempty" } // A logical group of variables. [Section][]s may also be grouped into diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 55af3f900a6..d93b3be2e39 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -705,6 +705,15 @@ }, "validation": { "type": "string" + }, + "subtext": { + "type": "string" + }, + "enumValueLabels": { + "items": { + "$ref": "#/$defs/ValueLabel" + }, + "type": "array" } }, "additionalProperties": false, @@ -1038,6 +1047,18 @@ "required": [ "Kind" ] + }, + "ValueLabel": { + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" } } } \ No newline at end of file From c7c5a390c835e51e55d10e8f5be04cae2a456605 Mon Sep 17 00:00:00 2001 From: Laura Seidler <42136707+lauraseidler@users.noreply.github.com> Date: Tue, 22 Aug 2023 19:17:44 +0200 Subject: [PATCH 0540/1371] chore: don't run stale bot on forks (#1783) Co-authored-by: Andrew Peabody --- .github/workflows/stale.yml | 1 + infra/terraform/test-org/github/resources/stale.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 8df7c5498dc..b1cd5522899 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -23,6 +23,7 @@ permissions: jobs: stale: + if: github.repository_owner == 'GoogleCloudPlatform' runs-on: ubuntu-latest steps: - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # v8 diff --git a/infra/terraform/test-org/github/resources/stale.yml b/infra/terraform/test-org/github/resources/stale.yml index 3db17c00bc3..1f92bf9a70d 100644 --- a/infra/terraform/test-org/github/resources/stale.yml +++ b/infra/terraform/test-org/github/resources/stale.yml @@ -22,6 +22,7 @@ on: jobs: stale: + if: github.repository_owner == 'GoogleCloudPlatform' || github.repository_owner == 'terraform-google-modules' runs-on: ubuntu-latest steps: - uses: actions/stale@v8 From 6235f5fa76d970e8276f35a89a78cd48829b9005 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 23 Aug 2023 15:55:48 -0700 Subject: [PATCH 0541/1371] chore: update golangci-lint (#1761) --- cli/Makefile | 2 +- infra/blueprint-test/Makefile | 2 +- infra/build/Makefile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index d18047c224d..895e5f056a1 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -60,4 +60,4 @@ test: build go_test int_test .PHONY: docker_go_lint docker_go_lint: - docker run --rm -v $(PWD):/cli -w /cli golangci/golangci-lint:v1.52.2 golangci-lint --timeout=5m -v run + docker run --rm -v $(PWD):/cli -w /cli golangci/golangci-lint:v1.54.1 golangci-lint --timeout=5m -v run diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 9ecf0e44ff9..0cc96c2cd34 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -2,4 +2,4 @@ SHELL := /bin/bash .PHONY: docker_go_lint docker_go_lint: - docker run --rm -v $(PWD):/blueprint-test -w /blueprint-test golangci/golangci-lint:v1.52.2 golangci-lint --timeout=5m -v run + docker run --rm -v $(PWD):/blueprint-test -w /blueprint-test golangci/golangci-lint:v1.54.1 golangci-lint --timeout=5m -v run diff --git a/infra/build/Makefile b/infra/build/Makefile index cc0695fb931..5952d2af3cd 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -44,7 +44,7 @@ TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 # For developer-tools-krm -GOLANGCI_VERSION := 1.52.2 +GOLANGCI_VERSION := 1.54.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow From f312a9a9f72519f8029367d321e3c9eba6811ef4 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 23 Aug 2023 17:47:55 -0700 Subject: [PATCH 0542/1371] fix: addresses a minor repo parsing bug for bpmetadata (#1787) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpmetadata/repo.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 895e5f056a1..8fc9eecf247 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.3 +VERSION=v1.2.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 0cfd64ba511..406bc61d751 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -32,7 +32,7 @@ func getRepoDetailsByPath(bpPath string, r *repoDetail, readme []byte) { // For a submodule, we'll try to get repo details from the // root blueprint or just return the current repoDetail object // if it's still in memory. - if strings.Contains(bpPath, nestedBpPath) { + if strings.Contains(bpPath, nestedBpPath) && r.Source != nil { // try to parse the module name from MD which will get // overriden with "["repoName-submoduleName" if repoName is available r.ModuleName = parseRepoNameFromMd(readme) From 35bd2e2332552e5df92f72c504cda21d273ac778 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 24 Aug 2023 10:04:20 -0500 Subject: [PATCH 0543/1371] Revert "chore: reverupdate update-tooling.yml" (#1789) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index c923d662ce9..40ff8895f73 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -24,7 +24,7 @@ jobs: run: | PR_UPDATE_BODY="" newline=$'\n' - tools=("CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT") for tool in ${tools[@]} do From 024e2a5a098295862bb87d8070880142e3473d93 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 24 Aug 2023 09:06:39 -0700 Subject: [PATCH 0544/1371] chore: update renovate template (#1785) --- .../test-org/github/resources/renovate.json | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 5d9e0435ea7..b68ca8fbbaa 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -1,37 +1,34 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:base", + "config:recommended", ":semanticCommits", ":preserveSemverRanges", ":rebaseStalePrs" ], - "stabilityDays":7, + "minimumReleaseAge": "7 days", "ignorePaths": [], "labels": ["dependencies"], - "vulnerabilityAlerts":{ - "labels":[ - "type:security" - ], - "stabilityDays":0 - }, - "separateMajorMinor":false, - "constraints": { - "go": "1.20" + "vulnerabilityAlerts": { + "labels": ["type:security"], + "minimumReleaseAge": null }, + "constraints": {"go": "1.20"}, "packageRules": [ { - "matchPaths": ["examples/**", "test/**", ".github/**"], + "matchFileNames": ["examples/**", "test/**", ".github/**"], "extends": [":semanticCommitTypeAll(chore)"] }, { - "matchPaths": ["*", "modules/**"], + "matchFileNames": ["*", "modules/**"], "extends": [":semanticCommitTypeAll(fix)"] }, { - "matchDepTypes": ["module"], - "groupName": "TF modules" + "matchFileNames": ["*", "modules/**"], + "matchUpdateTypes": "major", + "commitMessagePrefix": "fix(deps)!:" }, + {"matchDepTypes": ["module"], "groupName": "TF modules"}, { "matchDepTypes": ["require"], "groupName": "GO modules", @@ -45,20 +42,24 @@ }, { "matchPackageNames": ["google", "google-beta"], - "groupName": "terraform googles" + "groupName": "Terraform Google Provider" } ], "regexManagers": [ { "fileMatch": ["(^|/)Makefile$"], - "matchStrings": ["DOCKER_TAG_VERSION_DEVELOPER_TOOLS := (?.*?)\\n"], + "matchStrings": [ + "DOCKER_TAG_VERSION_DEVELOPER_TOOLS := (?.*?)\\n" + ], "datasourceTemplate": "docker", "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", "depNameTemplate": "cft/developer-tools" }, { "fileMatch": ["(^|/)build/(int|lint)\\.cloudbuild\\.yaml$"], - "matchStrings": [" _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '(?.*?)'\\n"], + "matchStrings": [ + " _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '(?.*?)'\\n" + ], "datasourceTemplate": "docker", "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", "depNameTemplate": "cft/developer-tools" From bbcc272c88f6b2b30043f5dcfb2067c830e80c91 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 24 Aug 2023 11:33:57 -0500 Subject: [PATCH 0545/1371] chore: update SFB owners (#1788) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 52a91951d88..a204f7d7286 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -144,7 +144,7 @@ locals { short_name = "example-foundation" org = "terraform-google-modules" description = "Shows how the CFT modules can be composed to build a secure cloud foundation" - owners = ["rjerrems"] + owners = ["rjerrems", "gtsorbo"] homepage_url = "https://cloud.google.com/architecture/security-foundations" topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) lint_env = { From c4b355fd491f82911cf6e46f15fc5e55ba9309fa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 24 Aug 2023 19:11:45 +0200 Subject: [PATCH 0546/1371] chore(deps): update actions/checkout digest to f43a0e5 (#1790) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 6313fb20864..c68611e6cb0 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -19,7 +19,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 8327c1b4ab8..b7e221a1d16 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 999a550648b..3136f4cd14d 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 2cde7498107..fc59a58061f 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9' # v3 + - uses: 'actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744' # v3 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index fd34f9342c6..98c4a81090b 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4 - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index b026e8e139a..621e1981c97 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index b4cba288813..8b6086fdab8 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 557c7b863d6..3e40a6065cc 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 40ff8895f73..0328cbab9d6 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -19,7 +19,7 @@ jobs: update-tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - name: Update Tools run: | PR_UPDATE_BODY="" From 0bb73b58a3606e0baafa6ab9e10f94cc9306f0dc Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 24 Aug 2023 12:47:51 -0700 Subject: [PATCH 0547/1371] chore: use actual go version in go-lint.yaml (#1754) --- .github/workflows/go-lint.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 6e13f5418c0..1e54cbe2c17 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -23,11 +23,11 @@ jobs: matrix: folder: [cli, infra/blueprint-test] steps: + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: '1.20' - cache: false - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + go-version-file: ${{ matrix.folder }}/go.mod + cache-dependency-path: ${{ matrix.folder }}/go.sum - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1 id: changes with: From 2b763e853702e253dd949b7cce26ed2c8621e8be Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 28 Aug 2023 08:50:27 -0700 Subject: [PATCH 0548/1371] chore: reduce number of dev-tools layers (#1792) --- infra/build/Makefile | 2 +- infra/build/developer-tools-krm/Dockerfile | 4 + infra/build/developer-tools/Dockerfile | 210 +++++++----------- .../developer-tools/build/install_bats.sh | 3 - .../build/install_cloud_sdk.sh | 7 +- .../build/install_dependencies.sh | 75 ------- 6 files changed, 84 insertions(+), 217 deletions(-) delete mode 100755 infra/build/developer-tools/build/install_dependencies.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index 5952d2af3cd..09ab8c7c5f0 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index d9218785d9e..87308dfac67 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -64,3 +64,7 @@ RUN rm -rf /build # Add dind helper for prow ADD ./build/scripts/runner.sh /usr/local/bin/ ADD ./build/scripts/prow_entrypoint.sh /usr/local/bin/ + +# cookiecutter is used for terraform-google-module-template tests +# https://github.com/terraform-google-modules/terraform-google-module-template +RUN pip install cookiecutter diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 000428aa6f0..b7a6b404278 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -26,110 +26,46 @@ FROM golang:$GOLANG_VERSION-alpine AS go FROM ruby:$RUBY_VERSION-alpine$ALPINE_VERSION -# Required to download and install terraform-docs -ARG TERRAFORM_DOCS_VERSION -ENV TERRAFORM_DOCS_VERSION ${TERRAFORM_DOCS_VERSION} - -# Required to download and install the Terraform gsuite provider -ARG GSUITE_PROVIDER_VERSION -ENV GSUITE_PROVIDER_VERSION ${GSUITE_PROVIDER_VERSION} - -# Required to download and install Google Cloud SDK -# Google Cloud SDK is located at /usr/local/google-cloud-sdk -ARG CLOUD_SDK_VERSION -ENV CLOUD_SDK_VERSION ${CLOUD_SDK_VERSION} - -# Required to override base path -ARG KITCHEN_TEST_BASE_PATH="test/integration" -ENV KITCHEN_TEST_BASE_PATH ${KITCHEN_TEST_BASE_PATH} - -# Required to download and install Bats -ARG BATS_VERSION -ENV BATS_VERSION ${BATS_VERSION} - -# Required to download and install Bats-support -ARG BATS_SUPPORT_VERSION -ENV BATS_SUPPORT_VERSION ${BATS_SUPPORT_VERSION} - -# Required to download and install Bats-assert -ARG BATS_ASSERT_VERSION -ENV BATS_ASSERT_VERSION ${BATS_ASSERT_VERSION} - -# Required to download and install Bats-mock -ARG BATS_MOCK_VERSION -ENV BATS_MOCK_VERSION ${BATS_MOCK_VERSION} - -# Required to download and install Terraform -ARG TERRAFORM_VERSION -ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} - -ARG TERRAGRUNT_VERSION -ENV TERRAGRUNT_VERSION ${TERRAGRUNT_VERSION} - -# Required to download and install Kustomize -ARG KUSTOMIZE_VERSION -ENV KUSTOMIZE_VERSION ${KUSTOMIZE_VERSION} - -# Required to download and install Kpt -ARG KPT_VERSION -ENV KPT_VERSION ${KPT_VERSION} - -# Required to install protoc-gen dependencies -ARG PROTOC_VERSION -ENV PROTOC_VERSION ${PROTOC_VERSION} - -ARG PROTOC_GEN_GO_VERSION -ENV PROTOC_GEN_GO_VERSION ${PROTOC_GEN_GO_VERSION} - -ARG PROTOC_GEN_GO_GRPC_VERSION -ENV PROTOC_GEN_GO_GRPC_VERSION ${PROTOC_GEN_GO_GRPC_VERSION} - -ARG PROTOC_GEN_GO_INJECT_TAG -ENV PROTOC_GEN_GO_INJECT_TAG ${PROTOC_GEN_GO_INJECT_TAG} - -# Required to download and install CFT CLI -ARG CFT_CLI_VERSION -ENV CFT_CLI_VERSION ${CFT_CLI_VERSION} - -ARG KUBECTL_VERSION -ENV KUBECTL_VERSION ${KUBECTL_VERSION} - -# Required to download and install TFlint -ARG TFLINT_VERSION -ENV TFLINT_VERSION ${TFLINT_VERSION} - -# Required to download and install tinkey -ARG TINKEY_VERSION -ENV TINKEY_VERSION ${TINKEY_VERSION} - # $WORKSPACE is intended for assets that persist across multiple build steps in a pipeline. # It's also where the project git repository is located. # https://cloud.google.com/cloud-build/docs/build-config ENV WORKSPACE="/workspace" ENV PATH /usr/local/google-cloud-sdk/bin:$PATH -# bash is preferred over /bin/sh -RUN apk add --no-cache bash parallel - -# All package-level dependencies are handled by install_dependencies.sh -ADD ./build/install_dependencies.sh /build/ -RUN /build/install_dependencies.sh - -ADD ./build/install_cloud_sdk.sh /build/ -RUN /build/install_cloud_sdk.sh ${CLOUD_SDK_VERSION} - -ADD ./build/install_gsuite_terraform_provider.sh /build/ -RUN /build/install_gsuite_terraform_provider.sh ${GSUITE_PROVIDER_VERSION} - - -# Required to download and install Terraform Validator -ARG TERRAFORM_VALIDATOR_VERSION -ENV TERRAFORM_VALIDATOR_VERSION ${TERRAFORM_VALIDATOR_VERSION} -ADD ./build/install_terraform_validator.sh /build/ -RUN /build/install_terraform_validator.sh ${TERRAFORM_VALIDATOR_VERSION} - -ADD ./build/install_terraform.sh /build/ -RUN ./build/install_terraform.sh ${TERRAFORM_VERSION} +# Install Distro Dependencies +# diffutils contains the full version of diff needed for the -exclude argument. +# That argument is needed for check_documentation in task_helper_functions.sh +# rsync is needed for check_documentation in task_helper_functions.sh +# install gcompat, because protoc needs a real glibc or compatible layer +RUN apk add --no-cache \ + bash \ + parallel \ + coreutils \ + curl \ + findutils \ + git \ + grep \ + g++ \ + jq \ + make \ + python3-dev \ + musl-dev \ + openssh \ + python3 \ + py-pip \ + ca-certificates \ + diffutils \ + rsync \ + gcompat \ + gettext \ + libintl \ + py3-crcmod \ + py3-flake8 \ + py3-jinja2 \ + py3-google-auth \ + py3-google-api-python-client \ + py3-pygithub \ + py3-requests # Install Golang COPY --from=go /usr/local/go/ /usr/local/go/ @@ -139,51 +75,61 @@ RUN ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt # Install module swapper COPY --from=module-swapper-builder /usr/local/bin/module-swapper /usr/local/bin/module-swapper -ADD ./build/install_shellcheck.sh /build/ -RUN /build/install_shellcheck.sh - -ADD ./build/install_hadolint.sh /build/ -RUN /build/install_hadolint.sh - -ADD ./build/install_terraform_docs.sh /build/ -RUN /build/install_terraform_docs.sh ${TERRAFORM_DOCS_VERSION} +# Add all build scripts +ADD ./build/*.sh /build/ -ADD ./build/install_bats.sh /build/ -RUN /build/install_bats.sh ${BATS_VERSION} ${BATS_SUPPORT_VERSION} ${BATS_ASSERT_VERSION} ${BATS_MOCK_VERSION} - -ADD ./build/install_kubectl.sh /build/ -RUN /build/install_kubectl.sh ${KUBECTL_VERSION} - -ADD ./build/install_terragrunt.sh /build/ -RUN ./build/install_terragrunt.sh ${TERRAGRUNT_VERSION} - -ADD ./build/install_kustomize.sh /build/ -RUN ./build/install_kustomize.sh ${KUSTOMIZE_VERSION} +# Add cloud sdk first, gsutil required by some installers +ARG CLOUD_SDK_VERSION +RUN /build/install_cloud_sdk.sh ${CLOUD_SDK_VERSION} -ADD ./build/install_kpt.sh /build/ -RUN ./build/install_kpt.sh ${KPT_VERSION} +# Optimized to minimize layers +ARG GSUITE_PROVIDER_VERSION +ARG TERRAFORM_VALIDATOR_VERSION +ARG TERRAFORM_DOCS_VERSION +ARG BATS_VERSION +ARG BATS_SUPPORT_VERSION +ARG BATS_ASSERT_VERSION +ARG BATS_MOCK_VERSION +ARG TERRAGRUNT_VERSION +ARG KUSTOMIZE_VERSION +ARG PROTOC_VERSION +ARG PROTOC_GEN_GO_VERSION +ARG PROTOC_GEN_GO_GRPC_VERSION +ARG PROTOC_GEN_GO_INJECT_TAG +ARG TFLINT_VERSION +ARG TINKEY_VERSION +RUN /build/install_shellcheck.sh && \ + /build/install_hadolint.sh && \ + /build/install_addlicense.sh && \ + /build/install_gsuite_terraform_provider.sh ${GSUITE_PROVIDER_VERSION} && \ + /build/install_terraform_validator.sh ${TERRAFORM_VALIDATOR_VERSION} && \ + /build/install_terraform_docs.sh ${TERRAFORM_DOCS_VERSION} && \ + /build/install_bats.sh ${BATS_VERSION} ${BATS_SUPPORT_VERSION} ${BATS_ASSERT_VERSION} ${BATS_MOCK_VERSION} && \ + /build/install_terragrunt.sh ${TERRAGRUNT_VERSION} && \ + /build/install_kustomize.sh ${KUSTOMIZE_VERSION} && \ + /build/install_protoc.sh ${PROTOC_VERSION} ${PROTOC_GEN_GO_VERSION} ${PROTOC_GEN_GO_GRPC_VERSION} ${PROTOC_GEN_GO_INJECT_TAG} && \ + /build/install_tflint.sh ${TFLINT_VERSION} && \ + /build/install_tinkey.sh ${TINKEY_VERSION} + +# Optimized to independently cache layers for commonly updated tools: +# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/.github/workflows/update-tooling.yml +ARG TERRAFORM_VERSION +RUN /build/install_terraform.sh ${TERRAFORM_VERSION} -ADD ./build/install_addlicense.sh /build/ -RUN /build/install_addlicense.sh +ARG KPT_VERSION +RUN /build/install_kpt.sh ${KPT_VERSION} -ADD ./build/install_cft_cli.sh /build/ +ARG CFT_CLI_VERSION RUN /build/install_cft_cli.sh ${CFT_CLI_VERSION} -ADD ./build/install_protoc.sh /build/ -RUN /build/install_protoc.sh ${PROTOC_VERSION} ${PROTOC_GEN_GO_VERSION} ${PROTOC_GEN_GO_GRPC_VERSION} ${PROTOC_GEN_GO_INJECT_TAG} - -ADD ./build/install_tflint.sh /build/ -RUN /build/install_tflint.sh ${TFLINT_VERSION} - -ADD ./build/install_tinkey.sh /build/ -RUN /build/install_tinkey.sh ${TINKEY_VERSION} +ARG KUBECTL_VERSION +RUN /build/install_kubectl.sh ${KUBECTL_VERSION} WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . -RUN gem install bundler:2.2.33 && bundle install +RUN gem install bundler:2.2.33 && bundle install --retry=10 -COPY ./build/install_verify_boilerplate.sh /build/ COPY ./build/verify_boilerplate/ /build/verify_boilerplate/ RUN /build/install_verify_boilerplate.sh diff --git a/infra/build/developer-tools/build/install_bats.sh b/infra/build/developer-tools/build/install_bats.sh index deb76152c42..a2af5c41f9e 100755 --- a/infra/build/developer-tools/build/install_bats.sh +++ b/infra/build/developer-tools/build/install_bats.sh @@ -21,9 +21,6 @@ BATS_SUPPORT_VERSION=$2 BATS_ASSERT_VERSION=$3 BATS_MOCK_VERSION=$4 -# bats required envsubst missing in Alpine by default -apk add gettext libintl - cd /build wget "https://github.com/sstephenson/bats/archive/v${BATS_VERSION}.zip" unzip "v${BATS_VERSION}.zip" diff --git a/infra/build/developer-tools/build/install_cloud_sdk.sh b/infra/build/developer-tools/build/install_cloud_sdk.sh index e36a09b1e83..f4fbab737ad 100755 --- a/infra/build/developer-tools/build/install_cloud_sdk.sh +++ b/infra/build/developer-tools/build/install_cloud_sdk.sh @@ -32,14 +32,9 @@ gcloud config set core/disable_usage_reporting true gcloud config set component_manager/disable_update_check true gcloud config set survey/disable_prompts true gcloud config set enable_feature_flags false -gcloud components install beta --quiet -gcloud components install alpha --quiet - # https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke -gcloud components install gke-gcloud-auth-plugin --quiet - # https://cloud.google.com/docs/terraform/policy-validation/quickstart -gcloud components install terraform-tools --quiet +gcloud components install alpha beta terraform-tools gke-gcloud-auth-plugin --quiet gcloud --version gsutil version -l diff --git a/infra/build/developer-tools/build/install_dependencies.sh b/infra/build/developer-tools/build/install_dependencies.sh deleted file mode 100755 index a23f54a226f..00000000000 --- a/infra/build/developer-tools/build/install_dependencies.sh +++ /dev/null @@ -1,75 +0,0 @@ -#! /bin/bash -# Copyright 2019 Google LLC -# -# 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. - -set -e -set -u - -# coreutils provides xargs and other utilities necessary for lint checks -apk add --no-cache coreutils - -# curl is used by unit tests and is nice to have -apk add --no-cache curl - -# findutils provides find which is used by lint checks -apk add --no-cache findutils - -# git is used to clone repositories -apk add --no-cache git - -# grep is used by lint checks -apk add --no-cache grep - -# g++ is probably used to install dependencies like psych, but unsure -apk add --no-cache g++ - -# jq is useful for parsing JSON data -apk add --no-cache jq - -# make is used for executing make tasks -apk add --no-cache make - -# musl-dev provides the standard C headers -apk add --no-cache python3-dev musl-dev - -# openssh is used for ssh-ing into bastion hosts -apk add --no-cache openssh - -# unclear why perl is needed, but is good to have -apk add --no-cache perl - -# python 3 is needed for python linting -apk add --no-cache python3 - -# py-pip is needed for installing pip packages -apk add --no-cache py-pip - -# ca-certificates is needed to verify the authenticity of artifacts downloaded -# from the internet -apk add --no-cache ca-certificates - -# diffutils contains the full version of diff needed for the -exclude argument. -# That argument is needed for check_documentation in task_helper_functions.sh -apk add --no-cache diffutils - -# rsync is needed for check_documentation in task_helper_functions.sh -apk add --no-cache rsync - -# install gcompat, because protoc needs a real glibc or compatible layer -apk add --no-cache gcompat - -# flake8 and jinja2 are used for lint checks, cookiecutter is used for terraform-google-module-template tests -# requests~=2.28 for https://github.com/psf/requests/pull/6179 -# Remaining items moved here from requirements.txt -pip install flake8 "Jinja2~=3.1" cookiecutter "requests~=2.28" PyGithub==1.51 google-auth~=1.6 google-api-python-client~=1.7 crcmod From 910f5070f51b15aab835380e061b4a0a52bdcf6a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 31 Aug 2023 14:55:22 -0700 Subject: [PATCH 0549/1371] chore: add missing kitchen base path (#1796) --- infra/build/Makefile | 2 +- infra/build/developer-tools/Dockerfile | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 09ab8c7c5f0..157e996c8e6 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index b7a6b404278..8152cfbcc20 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -26,6 +26,10 @@ FROM golang:$GOLANG_VERSION-alpine AS go FROM ruby:$RUBY_VERSION-alpine$ALPINE_VERSION +# Required to override base path +ARG KITCHEN_TEST_BASE_PATH="test/integration" +ENV KITCHEN_TEST_BASE_PATH ${KITCHEN_TEST_BASE_PATH} + # $WORKSPACE is intended for assets that persist across multiple build steps in a pipeline. # It's also where the project git repository is located. # https://cloud.google.com/cloud-build/docs/build-config From befc3cc0376c9c1f8590930ca48795b645360cde Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 1 Sep 2023 08:51:36 -0700 Subject: [PATCH 0550/1371] feat: migrate dev-tools to new module-swapper release (#1772) --- .github/workflows/update-tooling.yml | 8 +- infra/build/Makefile | 5 +- infra/build/developer-tools/Dockerfile | 12 +- .../build/install_module-swapper.sh | 24 ++ .../build/scripts/module-swapper/Readme.md | 19 -- .../build/scripts/module-swapper/cmd/swap.go | 242 ------------------ .../scripts/module-swapper/cmd/swap_test.go | 219 ---------------- .../testdata/example-module-simple/Readme.md | 0 .../examples/example-one/main.tf | 65 ----- .../examples/example-one/main.tf.good | 65 ----- .../example-module-simple/examples/main.tf | 0 .../docs/Readme.md | 0 .../examples/example-one/main.tf | 27 -- .../examples/example-one/main.tf.good | 27 -- .../examples/example-two/main.tf | 46 ---- .../examples/example-two/main.tf.good | 46 ---- .../examples/main.tf | 0 .../modules/bar-module/main.tf | 0 .../modules/foo-module/main.tf | 0 .../build/scripts/module-swapper/go.mod | 32 --- .../build/scripts/module-swapper/go.sum | 132 ---------- .../build/scripts/module-swapper/main.go | 28 -- 22 files changed, 37 insertions(+), 960 deletions(-) create mode 100755 infra/build/developer-tools/build/install_module-swapper.sh delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/Readme.md delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/swap.go delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/swap_test.go delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/Readme.md delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/main.tf delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/docs/Readme.md delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/main.tf delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/modules/bar-module/main.tf delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/modules/foo-module/main.tf delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/go.mod delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/go.sum delete mode 100644 infra/build/developer-tools/build/scripts/module-swapper/main.go diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 0328cbab9d6..e3d7d5373c9 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -9,6 +9,7 @@ env: CLOUD_SDK_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases" CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" + MODULE_SWAPPER_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" KUBECTL_MINOR: "1.26" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" GATOR_MINOR: "3.13" @@ -24,7 +25,7 @@ jobs: run: | PR_UPDATE_BODY="" newline=$'\n' - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER") for tool in ${tools[@]} do @@ -41,9 +42,12 @@ jobs: elif [ "$tool" == "CFT_CLI" ]; then # get latest CFT_CLI release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("CLI Release"))][0].tag_name' | tr -d "cli/v") + elif [ "$tool" == "MODULE_SWAPPER" ]; then + # get latest MODULE_SWAPPER release + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("infra/module-swapper"))][0].tag_name' | tr -d "v") elif [ "$tool" == "KUBECTL" ]; then # get latest KUBECTL_MINOR release - LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") elif [ "$tool" == "GATOR" ]; then # get latest GATOR_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${GATOR_MINOR}'"))][0].tag_name' | tr -d "v") diff --git a/infra/build/Makefile b/infra/build/Makefile index 157e996c8e6..63abf17f840 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -42,6 +42,8 @@ KUBECTL_VERSION := 1.26.7 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 +# Updated by Update Tooling Workflow +MODULE_SWAPPER_VERSION := 0.2.0 # For developer-tools-krm GOLANGCI_VERSION := 1.54.1 @@ -53,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -90,6 +92,7 @@ build-image-developer-tools: --build-arg TFLINT_VERSION=${TFLINT_VERSION} \ --build-arg TINKEY_VERSION=${TINKEY_VERSION} \ --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ + --build-arg MODULE_SWAPPER_VERSION=${MODULE_SWAPPER_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools" docker build \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 8152cfbcc20..6096eb1e1b0 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -16,12 +16,6 @@ ARG RUBY_VERSION ARG GOLANG_VERSION ARG ALPINE_VERSION -# Builds module-swapper -FROM golang:$GOLANG_VERSION-alpine AS module-swapper-builder -WORKDIR /go/src/github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper -COPY ./build/scripts/module-swapper ./ -RUN go build -v -o /usr/local/bin/module-swapper - FROM golang:$GOLANG_VERSION-alpine AS go FROM ruby:$RUBY_VERSION-alpine$ALPINE_VERSION @@ -76,9 +70,6 @@ COPY --from=go /usr/local/go/ /usr/local/go/ RUN ln -s /usr/local/go/bin/go /usr/local/bin/go RUN ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt -# Install module swapper -COPY --from=module-swapper-builder /usr/local/bin/module-swapper /usr/local/bin/module-swapper - # Add all build scripts ADD ./build/*.sh /build/ @@ -129,6 +120,9 @@ RUN /build/install_cft_cli.sh ${CFT_CLI_VERSION} ARG KUBECTL_VERSION RUN /build/install_kubectl.sh ${KUBECTL_VERSION} +ARG MODULE_SWAPPER_VERSION +RUN /build/install_module-swapper.sh ${MODULE_SWAPPER_VERSION} + WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . diff --git a/infra/build/developer-tools/build/install_module-swapper.sh b/infra/build/developer-tools/build/install_module-swapper.sh new file mode 100755 index 00000000000..b6ba0b85b57 --- /dev/null +++ b/infra/build/developer-tools/build/install_module-swapper.sh @@ -0,0 +1,24 @@ +#! /bin/bash +# Copyright 2023 Google LLC +# +# 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. + +set -e +set -u + +MODULE_SWAPPER_VERSION=$1 + +cd /build + +go install github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swapper@v${MODULE_SWAPPER_VERSION} +ln -s $(go env GOPATH)/bin/module-swapper /usr/local/bin/ diff --git a/infra/build/developer-tools/build/scripts/module-swapper/Readme.md b/infra/build/developer-tools/build/scripts/module-swapper/Readme.md deleted file mode 100644 index d578731bf4f..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/Readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# Module Swapper - -Module Swapper is a utility used for swapping TF registry references with local modules. It will ignore registry references to all other modules except for the one in current directory. - -``` -Usage of module-swapper: - -examples-path string - Path to examples that should be swapped. Defaults to cwd/examples (default "examples") - -registry-prefix string - Module registry prefix (default "terraform-google-modules") - -registry-suffix string - Module registry suffix (default "google") - -restore - Restores disabled modules - -submods-path string - Path to a submodules if any that maybe referenced. Defaults to working dir/modules (default "modules") - -workdir string - Absolute path to root module where examples should be swapped. Defaults to working directory -``` \ No newline at end of file diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/swap.go b/infra/build/developer-tools/build/scripts/module-swapper/cmd/swap.go deleted file mode 100644 index fe90034fc11..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/swap.go +++ /dev/null @@ -1,242 +0,0 @@ -package cmd - -import ( - "fmt" - "io/ioutil" - "log" - "os" - "path/filepath" - "strings" - - "github.com/go-git/go-git/v5" - "github.com/pmezard/go-difflib/difflib" -) - -type LocalTerraformModule struct { - Name string - Dir string - ModuleFQN string -} - -var ( - terraformExtension = "*.tf" - restoreMarker = "[restore-marker]" - linebreak = "\n" - localModules = []LocalTerraformModule{} -) - -// getRemoteURL gets the URL of a given remote from git repo at dir -func getRemoteURL(dir, remoteName string) (string, error) { - r, err := git.PlainOpen(dir) - if err != nil { - return "", err - } - rm, err := r.Remote(remoteName) - if err != nil { - return "", err - } - return rm.Config().URLs[0], nil -} - -// trimAnySuffixes trims first matching suffix from slice of suffixes -func trimAnySuffixes(s string, suffixes []string) string { - for _, suffix := range suffixes { - if strings.HasSuffix(s, suffix) { - s = s[:len(s)-len(suffix)] - return s - } - } - return s -} - -// getModuleNameRegistry returns module name and registry by parsing git remote -func getModuleNameRegistry(dir string) (string, string, error) { - remote, err := getRemoteURL(dir, "origin") - if err != nil { - return "", "", err - } - - // GH remote will be of form https://github.com/ModuleRegistry/ModuleName - if !strings.Contains(remote, "https://github.com/") { - return "", "", fmt.Errorf("Expected GitHub remote of form https://github.com/ModuleRegistry/ModuleRepo. Got: %s", remote) - } - - // remotes maybe suffixed with a trailing / or .git - remote = trimAnySuffixes(remote, []string{"/", ".git"}) - namePrefix := strings.ReplaceAll(remote, "https://github.com/", "") - if !strings.Contains(namePrefix, "/") { - return "", "", fmt.Errorf("Expected GitHub org/owner of form ModuleRegistry/ModuleRepo. Got: %s", namePrefix) - } - moduleRegistry := namePrefix[:strings.LastIndex(namePrefix, "/")] - repoName := namePrefix[strings.LastIndex(namePrefix, "/")+1:] - - // module repos are prefixed with terraform-google- - if !strings.HasPrefix(repoName, "terraform-google-") { - return "", "", fmt.Errorf("Expected to find repo name prefixed with terraform-google-. Got: %s", repoName) - } - moduleName := strings.ReplaceAll(repoName, "terraform-google-", "") - log.Printf("Module name set from remote to %s", moduleName) - return moduleName, moduleRegistry, nil -} - -// findSubModules generates slice of LocalTerraformModule for submodules -func findSubModules(path, rootModuleFQN string) []LocalTerraformModule { - var subModules = make([]LocalTerraformModule, 0) - // if no modules dir, return empty slice - if _, err := os.Stat(path); err != nil { - log.Print("No submodules found") - return subModules - } - files, err := ioutil.ReadDir(path) - if err != nil { - log.Fatalf("Error finding submodules: %v", err) - } - absPath, err := filepath.Abs(path) - if err != nil { - log.Fatalf("Error finding submodule absolute path: %v", err) - } - for _, f := range files { - if f.IsDir() { - subModules = append(subModules, LocalTerraformModule{f.Name(), filepath.Join(absPath, f.Name()), fmt.Sprintf("%s//modules/%s", rootModuleFQN, f.Name())}) - } - } - return subModules -} - -// restoreModules restores old config as marked by restoreMarker -func restoreModules(f []byte, p string) ([]byte, error) { - if _, err := os.Stat(p); err != nil { - return nil, err - } - strFile := string(f) - if !strings.Contains(strFile, restoreMarker) { - return nil, nil - } - lines := strings.Split(strFile, linebreak) - for i, line := range lines { - if strings.Contains(line, restoreMarker) { - lines[i] = strings.Split(line, restoreMarker)[1] - } - } - return []byte(strings.Join(lines, linebreak)), nil -} - -// replaceLocalModules swaps current local module registry references with local path -func replaceLocalModules(f []byte, p string) ([]byte, error) { - if _, err := os.Stat(p); err != nil { - return nil, err - } - absPath, err := filepath.Abs(filepath.Dir(p)) - if err != nil { - return nil, fmt.Errorf("Error finding example absolute path: %v", err) - } - strFile := string(f) - lines := strings.Split(strFile, linebreak) - for _, localModule := range localModules { - // check if current file has module/submodules references that should be swapped - if !strings.Contains(strFile, localModule.ModuleFQN) { - continue - } - // get relative path from example to local module - newModulePath, err := filepath.Rel(absPath, localModule.Dir) - if err != nil { - return nil, fmt.Errorf("Error finding relative path: %v", err) - } - for i, line := range lines { - if strings.Contains(line, fmt.Sprintf("\"%s\"", localModule.ModuleFQN)) && !strings.Contains(line, restoreMarker) { - // swap with local module and add restore point - leadingWhiteSpace := line[:strings.Index(line, "source")] - newSource := fmt.Sprintf("source = \"%s\"", newModulePath) - lines[i] = leadingWhiteSpace + newSource + fmt.Sprintf(" # %s %s", restoreMarker, line) - // if next line is a version declaration, disable that as well - if i < len(lines)-1 && strings.Contains(lines[i+1], "version") { - leadingWhiteSpace = lines[i+1][:strings.Index(lines[i+1], "version")] - lines[i+1] = fmt.Sprintf("%s# %s %s", leadingWhiteSpace, restoreMarker, lines[i+1]) - } - } - } - } - newExample := strings.Join(lines, linebreak) - // check if any swaps have been made - if newExample == strFile { - return nil, nil - } - // print diff info - log.Printf("Modifications made to file %s", p) - diff := difflib.UnifiedDiff{ - A: difflib.SplitLines(strFile), - B: difflib.SplitLines(newExample), - FromFile: "Original", - ToFile: "Modified", - Context: 3, - } - diffInfo, _ := difflib.GetUnifiedDiffString(diff) - log.Println(diffInfo) - return []byte(newExample), nil - -} - -// getTFFiles returns a slice of valid TF file paths -func getTFFiles(path string) []string { - // validate path - if _, err := os.Stat(path); err != nil { - log.Fatal(fmt.Errorf("Unable to find %s : %v", path, err)) - } - var files = make([]string, 0) - filepath.Walk(path, func(path string, info os.FileInfo, err error) error { - if err != nil && info.IsDir() { - return nil - } - isTFFile, _ := filepath.Match(terraformExtension, filepath.Base(path)) - if isTFFile { - files = append(files, path) - } - return nil - }) - return files - -} - -func SwapModules(rootPath, moduleRegistrySuffix, subModulesDir, examplesDir string, restore bool) { - moduleName, moduleRegistryPrefix, err := getModuleNameRegistry(rootPath) - if err != nil { - log.Fatal(err) - } - - // add root module to slice of localModules - localModules = append(localModules, LocalTerraformModule{moduleName, rootPath, fmt.Sprintf("%s/%s/%s", moduleRegistryPrefix, moduleName, moduleRegistrySuffix)}) - examplesPath := fmt.Sprintf("%s/%s", rootPath, examplesDir) - subModulesPath := fmt.Sprintf("%s/%s", rootPath, subModulesDir) - - // add submodules, if any to localModules - submods := findSubModules(subModulesPath, localModules[0].ModuleFQN) - localModules = append(localModules, submods...) - - // find all TF files in examples dir to process - exampleTFFiles := getTFFiles(examplesPath) - for _, TFFilePath := range exampleTFFiles { - file, err := ioutil.ReadFile(TFFilePath) - if err != nil { - log.Printf("Error reading file: %v", err) - } - - var newFile []byte - if restore { - newFile, err = restoreModules(file, TFFilePath) - } else { - newFile, err = replaceLocalModules(file, TFFilePath) - } - if err != nil { - log.Printf("Error processing file: %v", err) - } - - if newFile != nil { - err = ioutil.WriteFile(TFFilePath, newFile, 0644) - if err != nil { - log.Printf("Error writing file: %v", err) - } - } - - } - -} diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/swap_test.go b/infra/build/developer-tools/build/scripts/module-swapper/cmd/swap_test.go deleted file mode 100644 index 522f908897b..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/swap_test.go +++ /dev/null @@ -1,219 +0,0 @@ -package cmd - -import ( - "bytes" - "fmt" - "io/ioutil" - "log" - "os" - "path/filepath" - "reflect" - "strings" - "testing" - - "github.com/go-git/go-git/v5" - "github.com/go-git/go-git/v5/config" -) - -var ( - moduleRegistryPrefix = "terraform-google-modules" - moduleRegistrySuffix = "google" -) - -func getAbsPathHelper(p string) string { - a, err := filepath.Abs(p) - if err != nil { - log.Fatalf("Unable to find absolute path %s: %v", p, err) - } - return a -} - -func getFileHelper(p string) []byte { - f, err := ioutil.ReadFile(p) - if err != nil { - log.Fatalf("Error reading file: %v", err) - } - return f -} - -func setupProcessFileTest(modules []LocalTerraformModule) { - localModules = modules -} - -func tearDownProcessFileTest() { - localModules = []LocalTerraformModule{} -} - -func Test_getTFFiles(t *testing.T) { - type args struct { - path string - } - tests := []struct { - name string - args args - want []string - }{ - {"simple", args{"testdata/example-module-simple"}, []string{"testdata/example-module-simple/examples/example-one/main.tf", "testdata/example-module-simple/examples/main.tf"}}, - {"simple-single-submodule", args{"testdata/example-module-with-submodules/modules/bar-module"}, []string{"testdata/example-module-with-submodules/modules/bar-module/main.tf"}}, - {"simple-single-submodule-empty", args{"testdata/example-module-with-submodules/docs"}, []string{}}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := getTFFiles(tt.args.path); !reflect.DeepEqual(got, tt.want) { - t.Errorf("getTFFiles() = %v, want %v", got, tt.want) - } - }) - } -} - -func Test_findSubModules(t *testing.T) { - type args struct { - path string - rootModuleFQN string - } - tests := []struct { - name string - args args - want []LocalTerraformModule - }{ - {"simple-no-submodules", args{"testdata/example-module-simple/modules", "terraform-google-modules/example-module-simple/google"}, []LocalTerraformModule{}}, - {"simple-with-submodules", args{"testdata/example-module-with-submodules/modules", "terraform-google-modules/example-module-with-submodules/google"}, - []LocalTerraformModule{ - {"bar-module", filepath.Join(getAbsPathHelper("testdata/example-module-with-submodules/modules"), "bar-module"), "terraform-google-modules/example-module-with-submodules/google//modules/bar-module"}, - {"foo-module", filepath.Join(getAbsPathHelper("testdata/example-module-with-submodules/modules"), "foo-module"), "terraform-google-modules/example-module-with-submodules/google//modules/foo-module"}, - }}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := findSubModules(tt.args.path, tt.args.rootModuleFQN); !reflect.DeepEqual(got, tt.want) { - t.Errorf("findSubModules() = %v, want %v", got, tt.want) - } - }) - } -} - -func getProcessFileTestArgs(p, m string) struct { - f []byte - p string - modules []LocalTerraformModule -} { - f := struct { - f []byte - p string - modules []LocalTerraformModule - }{ - getFileHelper(p), - p, - append( - findSubModules("testdata/"+m+"/modules", "terraform-google-modules/"+m+"/google"), - LocalTerraformModule{m, getAbsPathHelper("testdata/" + m), fmt.Sprintf("%s/%s/%s", moduleRegistryPrefix, m, moduleRegistrySuffix)}, - ), - } - return f -} - -func Test_processFile(t *testing.T) { - type args struct { - f []byte - p string - modules []LocalTerraformModule - } - tests := []struct { - name string - args args - want []byte - wantErr bool - }{ - {"simple", getProcessFileTestArgs("testdata/example-module-simple/examples/example-one/main.tf", "example-module-simple"), getFileHelper("testdata/example-module-simple/examples/example-one/main.tf.good"), false}, - {"simple-submodules-single-submod", getProcessFileTestArgs("testdata/example-module-with-submodules/examples/example-one/main.tf", "example-module-with-submodules"), getFileHelper("testdata/example-module-with-submodules/examples/example-one/main.tf.good"), false}, - {"simple-submodules-multiple-modules", getProcessFileTestArgs("testdata/example-module-with-submodules/examples/example-two/main.tf", "example-module-with-submodules"), getFileHelper("testdata/example-module-with-submodules/examples/example-two/main.tf.good"), false}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - setupProcessFileTest(tt.args.modules) - var buf bytes.Buffer - log.SetOutput(&buf) - defer func() { - log.SetOutput(os.Stderr) - }() - got, err := replaceLocalModules(tt.args.f, tt.args.p) - t.Log(buf.String()) - if (err != nil) != tt.wantErr { - t.Errorf("processFile() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("processFile() = %v, want %v", string(got), string(tt.want)) - } - tearDownProcessFileTest() - }) - } -} - -func getTempDir() string { - d, err := ioutil.TempDir("", "gitrmtest") - if err != nil { - log.Fatalf("Error creating tempdir: %v", err) - } - return d -} - -func tempGitRepoWithRemote(repoURL, remote string) string { - dir := getTempDir() - r, err := git.PlainInit(dir, true) - if err != nil { - log.Fatalf("Error creating repo in tempdir: %v", err) - } - _, err = r.CreateRemote(&config.RemoteConfig{ - Name: remote, - URLs: []string{repoURL}, - }) - if err != nil { - log.Fatalf("Error creating remote in tempdir repo: %v", err) - } - return dir -} - -func Test_getModuleNameRegistry(t *testing.T) { - type args struct { - dir string - } - tests := []struct { - name string - args args - want string - want1 string - wantErr bool - wantErrStr string - }{ - {"simple", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar", "origin")}, "bar", "foo", false, ""}, - {"simple-with-trailing-slash", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar/", "origin")}, "bar", "foo", false, ""}, - {"simple-with-trailing-git", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar.git", "origin")}, "bar", "foo", false, ""}, - {"err-no-remote-origin", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar", "foo")}, "", "", true, ""}, - {"err-not-git-repo", args{getTempDir()}, "", "", true, ""}, - {"err-not-github-repo", args{tempGitRepoWithRemote("https://gitlab.com/foo/terraform-google-bar", "origin")}, "", "", true, "Expected GitHub remote of form https://github.com/ModuleRegistry/ModuleRepo"}, - {"err-not-prefixed-repo", args{tempGitRepoWithRemote("https://github.com/foo/bar", "origin")}, "", "", true, "Expected to find repo name prefixed with terraform-google-"}, - {"err-malformed-remote", args{tempGitRepoWithRemote("https://github.com/footerraform-google-bar", "origin")}, "", "", true, "Expected GitHub org/owner of form ModuleRegistry/ModuleRepo"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, got1, err := getModuleNameRegistry(tt.args.dir) - if (err != nil) != tt.wantErr { - t.Errorf("getModuleNameRegistry() error = %v, wantErr %v", err, tt.wantErr) - return - } else { - if tt.wantErrStr != "" { - if !strings.Contains(err.Error(), tt.wantErrStr) { - t.Errorf("getModuleNameRegistry() error = %v, expected to contain %v", err, tt.wantErrStr) - } - } - } - if got != tt.want { - t.Errorf("getModuleNameRegistry() got = %v, want %v", got, tt.want) - } - if got1 != tt.want1 { - t.Errorf("getModuleNameRegistry() got1 = %v, want %v", got1, tt.want1) - } - }) - } -} diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/Readme.md b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/Readme.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf deleted file mode 100644 index 6ef2331ce7b..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright 2018 Google LLC - * - * 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. - */ - -provider "google" { - version = ">= 3.0" -} - -# [START cloudrouter_create] -module "cloud_router" { - source = "terraform-google-modules/example-module-simple/google" - version = "~> 0.4" - - name = "my-router" - region = "us-central1" - - bgp = { - # The ASN (16550, 64512 - 65534, 4200000000 - 4294967294) can be any private ASN - # not already used as a peer ASN in the same region and network or 16550 for Partner Interconnect. - asn = "65001" - } - - # project = "my-project-id" - project = var.project - # network = "my-network" - network = var.network -} -# [END cloudrouter_create] - -# Unrelated module -module "vpc" { - source = "terraform-google-modules/network/google" - version = "~> 2.0.0" - network_name = "example-vpc" - - routes = [ - { - name = "egress-internet" - description = "route through IGW to access internet" - destination_range = "0.0.0.0/0" - tags = "egress-inet" - next_hop_internet = "true" - }, - { - name = "app-proxy" - description = "route through proxy to reach app" - destination_range = "10.50.10.0/24" - tags = "app-proxy" - next_hop_instance = "app-proxy-instance" - next_hop_instance_zone = "us-west1-a" - }, - ] -} diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good deleted file mode 100644 index 88a72c1c5a8..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright 2018 Google LLC - * - * 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. - */ - -provider "google" { - version = ">= 3.0" -} - -# [START cloudrouter_create] -module "cloud_router" { - source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-simple/google" - # [restore-marker] version = "~> 0.4" - - name = "my-router" - region = "us-central1" - - bgp = { - # The ASN (16550, 64512 - 65534, 4200000000 - 4294967294) can be any private ASN - # not already used as a peer ASN in the same region and network or 16550 for Partner Interconnect. - asn = "65001" - } - - # project = "my-project-id" - project = var.project - # network = "my-network" - network = var.network -} -# [END cloudrouter_create] - -# Unrelated module -module "vpc" { - source = "terraform-google-modules/network/google" - version = "~> 2.0.0" - network_name = "example-vpc" - - routes = [ - { - name = "egress-internet" - description = "route through IGW to access internet" - destination_range = "0.0.0.0/0" - tags = "egress-inet" - next_hop_internet = "true" - }, - { - name = "app-proxy" - description = "route through proxy to reach app" - destination_range = "10.50.10.0/24" - tags = "app-proxy" - next_hop_instance = "app-proxy-instance" - next_hop_instance_zone = "us-west1-a" - }, - ] -} diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/main.tf b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-simple/examples/main.tf deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/docs/Readme.md b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/docs/Readme.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf deleted file mode 100644 index 78cd3aadf9a..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf +++ /dev/null @@ -1,27 +0,0 @@ -module "test-module" { - source = "terraform-google-modules/example-module-with-submodules/google" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -module "test-submodule-module" { - source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -# Unrelated submodule -module "test-unrelated-submodule-module" { - source = "terraform-google-modules/foo/google" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good deleted file mode 100644 index 80b6b812634..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good +++ /dev/null @@ -1,27 +0,0 @@ -module "test-module" { - source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google" - # [restore-marker] version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -module "test-submodule-module" { - source = "../../modules/bar-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" - # [restore-marker] version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -# Unrelated submodule -module "test-unrelated-submodule-module" { - source = "terraform-google-modules/foo/google" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf deleted file mode 100644 index 3f0d9fadb6d..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf +++ /dev/null @@ -1,46 +0,0 @@ -# Unrelated module -module "test-unrelated-submodule" { - source = "terraform-google-modules/foo/google" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -module "test-module" { - source = "terraform-google-modules/example-module-with-submodules/google" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -module "test-submodule-1" { - source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -module "test-submodule-2" { - source = "terraform-google-modules/example-module-with-submodules/google//modules/foo-module" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -# Unrelated submodule -module "test-unrelated-submodule" { - source = "terraform-google-modules/foo/google//modules/bar-module" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good deleted file mode 100644 index baf29e494af..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good +++ /dev/null @@ -1,46 +0,0 @@ -# Unrelated module -module "test-unrelated-submodule" { - source = "terraform-google-modules/foo/google" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -module "test-module" { - source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google" - # [restore-marker] version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -module "test-submodule-1" { - source = "../../modules/bar-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" - # [restore-marker] version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -module "test-submodule-2" { - source = "../../modules/foo-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/foo-module" - # [restore-marker] version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} - -# Unrelated submodule -module "test-unrelated-submodule" { - source = "terraform-google-modules/foo/google//modules/bar-module" - version = "~> 3.2.0" - - project_id = var.project_id # Replace this with your project ID in quotes - network_name = "my-custom-mode-network" - mtu = 1460 -} diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/main.tf b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/examples/main.tf deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/modules/bar-module/main.tf b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/modules/bar-module/main.tf deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/modules/foo-module/main.tf b/infra/build/developer-tools/build/scripts/module-swapper/cmd/testdata/example-module-with-submodules/modules/foo-module/main.tf deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/infra/build/developer-tools/build/scripts/module-swapper/go.mod b/infra/build/developer-tools/build/scripts/module-swapper/go.mod deleted file mode 100644 index ceaae74e773..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/go.mod +++ /dev/null @@ -1,32 +0,0 @@ -module github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper - -go 1.18 - -require ( - github.com/go-git/go-git/v5 v5.7.0 - github.com/pmezard/go-difflib v1.0.0 -) - -require ( - github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect - github.com/acomagu/bufpipe v1.0.4 // indirect - github.com/cloudflare/circl v1.3.3 // indirect - github.com/emirpasic/gods v1.18.1 // indirect - github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.4.1 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/imdario/mergo v0.3.15 // indirect - github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/sergi/go-diff v1.3.1 // indirect - github.com/skeema/knownhosts v1.1.1 // indirect - github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.9.0 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/tools v0.7.0 // indirect - gopkg.in/warnings.v0 v0.1.2 // indirect -) diff --git a/infra/build/developer-tools/build/scripts/module-swapper/go.sum b/infra/build/developer-tools/build/scripts/module-swapper/go.sum deleted file mode 100644 index a81c648988d..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/go.sum +++ /dev/null @@ -1,132 +0,0 @@ -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= -github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek= -github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= -github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= -github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= -github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= -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/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= -github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= -github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= -github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= -github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= -github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= -github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= -github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= -github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= -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/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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= -github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= -github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -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/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/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-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.2.2/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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/infra/build/developer-tools/build/scripts/module-swapper/main.go b/infra/build/developer-tools/build/scripts/module-swapper/main.go deleted file mode 100644 index 474ee47ad2a..00000000000 --- a/infra/build/developer-tools/build/scripts/module-swapper/main.go +++ /dev/null @@ -1,28 +0,0 @@ -package main - -import ( - "flag" - "log" - "os" - - "github.com/GoogleCloudPlatform/infra/developer-tools/build/scripts/module-swapper/cmd" -) - -func main() { - workDir := flag.String("workdir", "", "Absolute path to root module where examples should be swapped. Defaults to working directory") - subModulesDir := flag.String("submods-path", "modules", "Path to a submodules if any that maybe referenced. Defaults to working dir/modules") - examplesDir := flag.String("examples-path", "examples", "Path to examples that should be swapped. Defaults to cwd/examples") - moduleRegistrySuffix := flag.String("registry-suffix", "google", "Module registry suffix") - restore := flag.Bool("restore", false, "Restores disabled modules") - flag.Parse() - rootPath := *workDir - // if no workDir specified default to current working directory - if rootPath == "" { - cwd, err := os.Getwd() - if err != nil { - log.Fatalf("Unable to get cwd: %v", err) - } - rootPath = cwd - } - cmd.SwapModules(rootPath, *moduleRegistrySuffix, *subModulesDir, *examplesDir, *restore) -} From 318b3899c3928785522666742bffd064d306ff4a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 1 Sep 2023 18:10:55 +0200 Subject: [PATCH 0551/1371] chore(deps): update actions/checkout action to v3.6.0 (#1795) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 1e54cbe2c17..0a41fefefac 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -23,7 +23,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test] steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 3136f4cd14d..1e8c6c5371d 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 22fb3ca9253..c25010b48bf 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 with: persist-credentials: false From 6db71da44db079229f1fc7ffad3309613696893a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 1 Sep 2023 11:17:46 -0700 Subject: [PATCH 0552/1371] chore: update update-tooling module-swapper (#1798) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index e3d7d5373c9..f725014a9ff 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -44,7 +44,7 @@ jobs: LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("CLI Release"))][0].tag_name' | tr -d "cli/v") elif [ "$tool" == "MODULE_SWAPPER" ]; then # get latest MODULE_SWAPPER release - LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("infra/module-swapper"))][0].tag_name' | tr -d "v") + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("infra/module-swapper"))][0].tag_name' | tr -d "infra/module-swapper/v") elif [ "$tool" == "KUBECTL" ]; then # get latest KUBECTL_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") From 319b9a0dafdad6e7583b809a5cea9152b5ff4fce Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 1 Sep 2023 20:46:42 +0200 Subject: [PATCH 0553/1371] chore(deps): update module google.golang.org/api to v0.138.0 (#1780) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index b84141ed827..43446479ad1 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.137.0 + google.golang.org/api v0.138.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 12c2fc5d200..00f03ed50ab 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -174,8 +174,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.137.0 h1:QrKX6uNvzJLr0Fd3vWVqcyrcmFoYi036VUAsZbiF4+s= -google.golang.org/api v0.137.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= +google.golang.org/api v0.138.0 h1:K/tVp05MxNVbHShRw9m7e9VJGdagNeTdMzqPH7AUqr0= +google.golang.org/api v0.138.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= From 66af52701d61d2b9f5c62a910043417abe1e9dc0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 1 Sep 2023 21:15:07 +0200 Subject: [PATCH 0554/1371] chore(deps): update module github.com/jedib0t/go-pretty/v6 to v6.4.7 (#1800) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 43446479ad1..7d917b80baa 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.4.6 + github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/stretchr/testify v1.8.4 google.golang.org/api v0.138.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 00f03ed50ab..2d530d583c2 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -68,8 +68,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= -github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/jedib0t/go-pretty/v6 v6.4.7 h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE= +github.com/jedib0t/go-pretty/v6 v6.4.7/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From 17d233adc0fa8fcadc49c0887685ac882b783574 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 1 Sep 2023 12:27:48 -0700 Subject: [PATCH 0555/1371] chore: fix escape in update-tooling (#1799) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index f725014a9ff..e4fec309996 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -44,7 +44,7 @@ jobs: LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("CLI Release"))][0].tag_name' | tr -d "cli/v") elif [ "$tool" == "MODULE_SWAPPER" ]; then # get latest MODULE_SWAPPER release - LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("infra/module-swapper"))][0].tag_name' | tr -d "infra/module-swapper/v") + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("infra/module-swapper"))][0].tag_name' | tr -d "infra/module\-swapper/v") elif [ "$tool" == "KUBECTL" ]; then # get latest KUBECTL_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") From 668f90157ee5e3d1b07dc23caefeb1e2083bab3c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 1 Sep 2023 23:23:55 +0200 Subject: [PATCH 0556/1371] chore(deps): update module github.com/go-git/go-git/v5 to v5.8.1 (#1733) --- infra/module-swapper/go.mod | 16 ++++++------- infra/module-swapper/go.sum | 48 ++++++++++++++++++++----------------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index de50eae3dfe..23628a6b3a2 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -3,30 +3,30 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swap go 1.20 require ( - github.com/go-git/go-git/v5 v5.7.0 + github.com/go-git/go-git/v5 v5.8.1 github.com/pmezard/go-difflib v1.0.0 ) require ( - github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect + dario.cat/mergo v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/imdario/mergo v0.3.15 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/sergi/go-diff v1.3.1 // indirect - github.com/skeema/knownhosts v1.1.1 // indirect + github.com/skeema/knownhosts v1.2.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.9.0 // indirect + golang.org/x/crypto v0.11.0 // indirect golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect + golang.org/x/net v0.12.0 // indirect + golang.org/x/sys v0.10.0 // indirect golang.org/x/tools v0.7.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index a81c648988d..11cf4883baa 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -1,14 +1,15 @@ +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= -github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek= -github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs= +github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -24,20 +25,18 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmS github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= -github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= +github.com/go-git/go-git/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= +github.com/go-git/go-git/v5 v5.8.1/go.mod h1:FHFuoD6yGz5OSKEBK+aWN9Oah0q54Jxl0abmj6GnqAo= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -51,11 +50,12 @@ 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/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= 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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= -github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= +github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= +github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= @@ -66,9 +66,10 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= @@ -77,10 +78,11 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= @@ -91,27 +93,29 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= From f419516f173d68f40310007977769d4bd1102469 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 5 Sep 2023 17:19:21 +0200 Subject: [PATCH 0557/1371] chore(deps): update github/codeql-action action to v2.21.5 (#1802) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c25010b48bf..5416f62a342 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@a09933a12a80f87b87005513f0abb1494c27a716 # v2.21.4 + uses: github/codeql-action/upload-sarif@00e563ead9f72a8461b24876bee2d0c2e8bd2ee8 # v2.21.5 with: sarif_file: results.sarif From 3d8b985b020dfb09f85b833f8755c1b2bbe333b2 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 5 Sep 2023 11:46:14 -0500 Subject: [PATCH 0558/1371] chore: Update Tools to 1.14.8 (#1769) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 63abf17f840..7ee2832f9b3 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,10 +14,10 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.5.5 +TERRAFORM_VERSION := 1.5.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 442.0.0 +CLOUD_SDK_VERSION := 444.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 RUBY_VERSION := 3.0.6 @@ -30,15 +30,15 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.42 +KPT_VERSION := 1.0.0-beta.43 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.1 +CFT_CLI_VERSION := 1.2.4 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.26.7 +KUBECTL_VERSION := 1.26.8 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.16 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 7a1aa1be251ba509a060d2a2e004a82b5082258d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 5 Sep 2023 20:14:15 +0200 Subject: [PATCH 0559/1371] chore(deps): update actions/checkout action to v4 (#1804) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index c68611e6cb0..80f30ed13c6 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -19,7 +19,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index b7e221a1d16..40aba38d61c 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 0a41fefefac..760a53e7ab3 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -23,7 +23,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 1e8c6c5371d..358cb34df9f 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index fc59a58061f..459066d2a1d 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744' # v3 + - uses: 'actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac' # v4 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 98c4a81090b..65775171807 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4 - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 621e1981c97..68e8e7acf12 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5416f62a342..37ae6b2060b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 with: persist-credentials: false diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 8b6086fdab8..2d0afd8a963 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 3e40a6065cc..c34d9ae4eb6 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index e4fec309996..f6675aed242 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -20,7 +20,7 @@ jobs: update-tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - name: Update Tools run: | PR_UPDATE_BODY="" From 89eef2be89c712b44c685516a657e01b2286d5ce Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 6 Sep 2023 09:23:22 -0700 Subject: [PATCH 0560/1371] chore: update dev-tools v1.15 on Alpine 3.18 (#1801) --- infra/build/Makefile | 8 +- infra/build/developer-tools/Dockerfile | 26 +- .../build/developer-tools/build/data/Gemfile | 10 +- .../developer-tools/build/data/Gemfile.lock | 397 +++++++++--------- 4 files changed, 224 insertions(+), 217 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 7ee2832f9b3..f915013212b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -20,9 +20,7 @@ TERRAFORM_VALIDATOR_VERSION := 0.13.0 CLOUD_SDK_VERSION := 444.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 -RUBY_VERSION := 3.0.6 BATS_VERSION := 0.4.0 -GOLANG_VERSION := 1.20 BATS_SUPPORT_VERSION := 0.3.0 BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 @@ -41,7 +39,7 @@ CFT_CLI_VERSION := 1.2.4 KUBECTL_VERSION := 1.26.8 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 -ALPINE_VERSION := 3.16 +ALPINE_VERSION := 3.18 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.2.0 @@ -55,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -74,9 +72,7 @@ build-image-developer-tools: --build-arg TERRAFORM_VERSION=${TERRAFORM_VERSION} \ --build-arg TERRAFORM_VALIDATOR_VERSION=${TERRAFORM_VALIDATOR_VERSION} \ --build-arg TERRAFORM_DOCS_VERSION=${TERRAFORM_DOCS_VERSION} \ - --build-arg RUBY_VERSION=${RUBY_VERSION} \ --build-arg BATS_VERSION=${BATS_VERSION} \ - --build-arg GOLANG_VERSION=${GOLANG_VERSION} \ --build-arg BATS_SUPPORT_VERSION=${BATS_SUPPORT_VERSION} \ --build-arg BATS_ASSERT_VERSION=${BATS_ASSERT_VERSION} \ --build-arg BATS_MOCK_VERSION=${BATS_MOCK_VERSION} \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 6096eb1e1b0..5b31ec44a00 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -12,13 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # Download and verify the integrity of the download first -ARG RUBY_VERSION -ARG GOLANG_VERSION ARG ALPINE_VERSION - -FROM golang:$GOLANG_VERSION-alpine AS go - -FROM ruby:$RUBY_VERSION-alpine$ALPINE_VERSION +FROM alpine:$ALPINE_VERSION # Required to override base path ARG KITCHEN_TEST_BASE_PATH="test/integration" @@ -63,12 +58,9 @@ RUN apk add --no-cache \ py3-google-auth \ py3-google-api-python-client \ py3-pygithub \ - py3-requests - -# Install Golang -COPY --from=go /usr/local/go/ /usr/local/go/ -RUN ln -s /usr/local/go/bin/go /usr/local/bin/go -RUN ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt + py3-requests \ + ruby-dev \ + go # Add all build scripts ADD ./build/*.sh /build/ @@ -126,7 +118,7 @@ RUN /build/install_module-swapper.sh ${MODULE_SWAPPER_VERSION} WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . -RUN gem install bundler:2.2.33 && bundle install --retry=10 +RUN gem install bundler:2.4.19 && bundle install --retry=10 COPY ./build/verify_boilerplate/ /build/verify_boilerplate/ RUN /build/install_verify_boilerplate.sh @@ -178,13 +170,9 @@ RUN terraform --version && \ kustomize version && \ addlicense -help && \ cft version && \ - protoc --version - -# Add GO_PATH TO PATH -ENV GO_PATH="/root/go" -ENV PATH=$GO_PATH/bin:$PATH + protoc --version && \ + go version # Cleanup intermediate build artifacts RUN rm -rf /build -RUN go version CMD ["/bin/bash"] diff --git a/infra/build/developer-tools/build/data/Gemfile b/infra/build/developer-tools/build/data/Gemfile index fbaaeb4be67..6e9f8a437ac 100644 --- a/infra/build/developer-tools/build/data/Gemfile +++ b/infra/build/developer-tools/build/data/Gemfile @@ -13,8 +13,8 @@ # limitations under the License. source 'https://rubygems.org/' -gem "kitchen-terraform", "~> 6.1" -gem "kubeclient", "~> 4.9" -gem "rest-client", "~> 2.0" -gem 'nokogiri', '~> 1.14' -ruby '~> 3.0.6' +gem "kitchen-terraform", "~> 7.0" +gem "kubeclient", "~> 4.11" +gem "rest-client", "~> 2.1" +gem 'nokogiri', '~> 1.15' +ruby '~> 3.2.2' diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 326c3b13acd..ce6b50902ba 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -1,204 +1,207 @@ GEM remote: https://rubygems.org/ specs: - activesupport (7.0.4.3) + activesupport (7.0.7.2) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) tzinfo (~> 2.0) - addressable (2.8.4) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) aws-eventstream (1.2.0) - aws-partitions (1.763.0) - aws-sdk-alexaforbusiness (1.58.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-partitions (1.816.0) + aws-sdk-account (1.17.0) + aws-sdk-core (~> 3, >= 3.177.0) + aws-sigv4 (~> 1.1) + aws-sdk-alexaforbusiness (1.64.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) aws-sdk-amplify (1.32.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-apigateway (1.81.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-apigateway (1.87.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-apigatewayv2 (1.44.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-apigatewayv2 (1.50.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) aws-sdk-applicationautoscaling (1.51.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-athena (1.65.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-athena (1.74.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-autoscaling (1.63.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-autoscaling (1.92.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-batch (1.47.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-batch (1.73.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-budgets (1.52.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-budgets (1.58.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudformation (1.77.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-cloudformation (1.88.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudfront (1.76.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-cloudfront (1.82.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsm (1.41.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-cloudhsm (1.47.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsmv2 (1.44.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-cloudhsmv2 (1.49.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudtrail (1.58.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-cloudtrail (1.68.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatch (1.73.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-cloudwatch (1.80.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchevents (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudwatchevents (1.62.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchlogs (1.62.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-cloudwatchlogs (1.69.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-codecommit (1.53.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-codecommit (1.59.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-codedeploy (1.52.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-codedeploy (1.57.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-codepipeline (1.55.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-codepipeline (1.61.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-cognitoidentity (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cognitoidentity (1.45.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-cognitoidentityprovider (1.53.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cognitoidentityprovider (1.76.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-configservice (1.90.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-configservice (1.97.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-core (3.172.0) + aws-sdk-core (3.181.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-costandusagereportservice (1.43.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-costandusagereportservice (1.49.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-databasemigrationservice (1.53.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-databasemigrationservice (1.80.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-dynamodb (1.84.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-dynamodb (1.93.1) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-ec2 (1.379.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-ec2 (1.402.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-ecr (1.58.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-ecr (1.63.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-ecrpublic (1.16.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-ecrpublic (1.21.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-ecs (1.118.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-ecs (1.128.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-efs (1.60.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-efs (1.65.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-eks (1.83.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-eks (1.89.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticache (1.85.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-elasticache (1.91.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticbeanstalk (1.54.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-elasticbeanstalk (1.59.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancing (1.42.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-elasticloadbalancing (1.47.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancingv2 (1.84.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-elasticloadbalancingv2 (1.90.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticsearchservice (1.70.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-elasticsearchservice (1.76.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) aws-sdk-emr (1.53.0) aws-sdk-core (~> 3, >= 3.121.2) aws-sigv4 (~> 1.1) - aws-sdk-eventbridge (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-eventbridge (1.46.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-firehose (1.51.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-firehose (1.56.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-glue (1.88.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-glue (1.145.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-guardduty (1.70.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-guardduty (1.77.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-iam (1.77.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-iam (1.86.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-kafka (1.55.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-kafka (1.62.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesis (1.45.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-kinesis (1.50.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-kms (1.64.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-kms (1.71.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-lambda (1.96.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-lambda (1.104.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) aws-sdk-mq (1.40.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-networkfirewall (1.28.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-networkfirewall (1.34.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-networkmanager (1.30.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-networkmanager (1.35.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-organizations (1.59.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-organizations (1.77.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) aws-sdk-ram (1.26.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-rds (1.178.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-rds (1.192.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-redshift (1.91.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-redshift (1.97.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-route53 (1.71.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-route53 (1.78.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-route53domains (1.43.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-route53domains (1.51.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-route53resolver (1.41.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-route53resolver (1.47.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.122.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-s3 (1.134.0) + aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) + aws-sigv4 (~> 1.6) aws-sdk-s3control (1.43.0) aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) aws-sdk-secretsmanager (1.46.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-securityhub (1.81.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-securityhub (1.91.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) aws-sdk-servicecatalog (1.60.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -206,8 +209,8 @@ GEM aws-sdk-ses (1.41.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-shield (1.51.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-shield (1.56.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) aws-sdk-signer (1.32.0) aws-sdk-core (~> 3, >= 3.120.0) @@ -215,17 +218,17 @@ GEM aws-sdk-simpledb (1.29.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv2 (~> 1.0) - aws-sdk-sms (1.43.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-sms (1.48.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-sns (1.60.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-sns (1.65.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-sqs (1.55.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-sqs (1.62.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-ssm (1.150.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-ssm (1.156.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) aws-sdk-states (1.39.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -233,14 +236,14 @@ GEM aws-sdk-synthetics (1.19.0) aws-sdk-core (~> 3, >= 3.121.2) aws-sigv4 (~> 1.1) - aws-sdk-transfer (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-transfer (1.73.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) aws-sdk-waf (1.43.0) aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) aws-sigv2 (1.1.0) - aws-sigv4 (1.5.2) + aws-sigv4 (1.6.0) aws-eventstream (~> 1, >= 1.0.2) azure_graph_rbac (0.17.2) ms_rest_azure (~> 0.12.0) @@ -272,17 +275,17 @@ GEM cookstyle (7.32.2) rubocop (= 1.25.1) declarative (0.0.20) - delegate (0.2.0) + delegate (0.3.0) diff-lcs (1.5.0) docker-api (2.2.0) excon (>= 0.47.0) multi_json domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - dry-configurable (1.0.1) + dry-configurable (1.1.0) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-core (1.0.0) + dry-core (1.0.1) concurrent-ruby (~> 1.0) zeitwerk (~> 2.6) dry-inflector (1.0.0) @@ -291,7 +294,7 @@ GEM concurrent-ruby (~> 1.0) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-schema (1.13.1) + dry-schema (1.13.3) concurrent-ruby (~> 1.0) dry-configurable (~> 1.0, >= 1.0.1) dry-core (~> 1.0, < 2) @@ -313,14 +316,18 @@ GEM zeitwerk (~> 2.6) ed25519 (1.3.0) erubi (1.12.0) - excon (0.99.0) - faraday (1.4.3) + excon (0.102.0) + faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) - multipart-post (>= 1.2, < 3) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) ruby2_keywords (>= 0.0.4) faraday-cookie_jar (0.0.7) faraday (>= 0.8.0) @@ -328,8 +335,16 @@ GEM faraday-em_http (1.0.0) faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) + faraday-follow_redirects (0.3.0) + faraday (>= 1, < 3) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) faraday-net_http (1.0.1) faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) faraday_middleware (1.0.0) faraday (~> 1.0) ffi (1.15.5) @@ -359,36 +374,36 @@ GEM builder (>= 2.1.2) rexml (~> 3.0) hashie (4.1.0) - http (4.4.1) - addressable (~> 2.3) + highline (2.1.0) + http (5.1.1) + addressable (~> 2.8) http-cookie (~> 1.0) http-form_data (~> 2.2) - http-parser (~> 1.2.0) + llhttp-ffi (~> 0.4.0) http-accept (1.7.0) http-cookie (1.0.5) domain_name (~> 0.5) http-form_data (2.3.0) - http-parser (1.2.3) - ffi-compiler (>= 1.0, < 2.0) httpclient (2.8.3) - i18n (1.13.0) + i18n (1.14.1) concurrent-ruby (~> 1.0) inifile (3.0.0) - inspec (4.56.20) + inspec (5.21.29) cookstyle faraday_middleware (>= 0.12.2, < 1.1) - inspec-core (= 4.56.20) + inspec-core (= 5.21.29) mongo (= 2.13.2) + progress_bar (~> 1.3.3) rake - train (~> 3.0) + train (~> 3.10) train-aws (~> 0.2) train-habitat (~> 0.1) train-winrm (~> 0.2) - inspec-core (4.56.20) + inspec-core (5.21.29) addressable (~> 2.4) chef-telemetry (~> 1.0, >= 1.0.8) - faraday (>= 0.9.0, < 1.5) - faraday_middleware (~> 1.0) + faraday (>= 1, < 3) + faraday-follow_redirects (~> 0.3) hashie (>= 3.4, < 5.0) license-acceptance (>= 0.2.13, < 3.0) method_source (>= 0.8, < 2.0) @@ -404,24 +419,23 @@ GEM sslshake (~> 1.2) thor (>= 0.20, < 2.0) tomlrb (>= 1.2, < 2.1) - train-core (~> 3.0) + train-core (~> 3.10) tty-prompt (~> 0.17) tty-table (~> 0.10) jmespath (1.6.2) json (2.6.3) - jsonpath (1.1.0) + jsonpath (1.1.3) multi_json - jwt (2.7.0) - kitchen-terraform (6.1.0) - delegate (>= 0.1.0, < 0.3.0) + jwt (2.7.1) + kitchen-terraform (7.0.2) + delegate (~> 0.3.0) dry-validation (~> 1.6) - inspec (>= 3, < 5, != 4.24.32, != 4.24.28, != 4.24.26) + inspec (~> 5.21, >= 5.21.29) json (~> 2.3) - mixlib-shellout (~> 3.0) test-kitchen (>= 2.1, < 4.0) tty-which (~> 0.5.0) - kubeclient (4.9.3) - http (>= 3.0, < 5.0) + kubeclient (4.11.0) + http (>= 3.0, < 6.0) jsonpath (~> 1.0) recursive-open-struct (~> 1.1, >= 1.1.1) rest-client (~> 2.0) @@ -431,6 +445,9 @@ GEM tty-box (~> 0.6) tty-prompt (~> 0.20) little-plugger (1.1.4) + llhttp-ffi (0.4.0) + ffi-compiler (~> 1.0) + rake (~> 13.0) logging (2.3.1) little-plugger (~> 1.1) multi_json (~> 1.14) @@ -439,9 +456,9 @@ GEM mime-types (3.4.1) mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) - mini_mime (1.1.2) - mini_portile2 (2.8.2) - minitest (5.18.0) + mini_mime (1.1.5) + mini_portile2 (2.8.4) + minitest (5.19.0) mixlib-config (3.0.27) tomlrb mixlib-install (3.12.27) @@ -467,30 +484,35 @@ GEM multipart-post (2.3.0) net-scp (4.0.0) net-ssh (>= 2.6.5, < 8.0.0) - net-ssh (7.1.0) + net-ssh (7.2.0) net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.14.4) - mini_portile2 (~> 2.8.0) + nokogiri (1.15.4) + mini_portile2 (~> 2.8.2) racc (~> 1.4) nori (2.6.0) + options (2.3.2) os (1.1.4) parallel (1.23.0) - parser (3.2.2.1) + parser (3.2.2.3) ast (~> 2.4.1) + racc parslet (1.8.2) pastel (0.8.0) tty-color (~> 0.5) + progress_bar (1.3.3) + highline (>= 1.6, < 3) + options (~> 2.3.0) pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (5.0.1) - racc (1.6.2) + public_suffix (5.0.3) + racc (1.7.1) rainbow (3.1.1) rake (13.0.6) recursive-open-struct (1.1.3) - regexp_parser (2.8.0) + regexp_parser (2.8.1) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) @@ -501,7 +523,7 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.2) - rexml (3.2.5) + rexml (3.2.6) rspec (3.11.0) rspec-core (~> 3.11.0) rspec-expectations (~> 3.11.0) @@ -527,7 +549,7 @@ GEM rubocop-ast (>= 1.15.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.28.1) + rubocop-ast (1.29.0) parser (>= 3.2.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) @@ -563,7 +585,7 @@ GEM timeliness (0.3.10) tomlrb (1.3.0) trailblazer-option (0.1.2) - train (3.10.7) + train (3.10.8) activesupport (>= 6.0.3.1) azure_graph_rbac (~> 0.16) azure_mgmt_key_vault (~> 0.17) @@ -574,17 +596,18 @@ GEM google-api-client (>= 0.23.9, <= 0.52.0) googleauth (>= 0.6.6, <= 0.14.0) inifile (~> 3.0) - train-core (= 3.10.7) + train-core (= 3.10.8) train-winrm (~> 0.2) - train-aws (0.2.24) + train-aws (0.2.36) + aws-sdk-account (~> 1.14) aws-sdk-alexaforbusiness (~> 1.0) aws-sdk-amplify (~> 1.32.0) aws-sdk-apigateway (~> 1.0) aws-sdk-apigatewayv2 (~> 1.0) aws-sdk-applicationautoscaling (>= 1.46, < 1.52) aws-sdk-athena (~> 1.0) - aws-sdk-autoscaling (>= 1.22, < 1.64) - aws-sdk-batch (>= 1.36, < 1.48) + aws-sdk-autoscaling (>= 1.22, < 1.93) + aws-sdk-batch (>= 1.36, < 1.74) aws-sdk-budgets (~> 1.0) aws-sdk-cloudformation (~> 1.0) aws-sdk-cloudfront (~> 1.0) @@ -592,17 +615,17 @@ GEM aws-sdk-cloudhsmv2 (~> 1.0) aws-sdk-cloudtrail (~> 1.8) aws-sdk-cloudwatch (~> 1.13) - aws-sdk-cloudwatchevents (>= 1.36, < 1.47) + aws-sdk-cloudwatchevents (>= 1.36, < 1.63) aws-sdk-cloudwatchlogs (~> 1.13) aws-sdk-codecommit (~> 1.0) aws-sdk-codedeploy (~> 1.0) aws-sdk-codepipeline (~> 1.0) - aws-sdk-cognitoidentity (>= 1.26, < 1.32) - aws-sdk-cognitoidentityprovider (>= 1.46, < 1.54) + aws-sdk-cognitoidentity (>= 1.26, < 1.46) + aws-sdk-cognitoidentityprovider (>= 1.46, < 1.77) aws-sdk-configservice (~> 1.21) aws-sdk-core (~> 3.0) aws-sdk-costandusagereportservice (~> 1.6) - aws-sdk-databasemigrationservice (>= 1.42, < 1.54) + aws-sdk-databasemigrationservice (>= 1.42, < 1.81) aws-sdk-dynamodb (~> 1.31) aws-sdk-ec2 (~> 1.70) aws-sdk-ecr (~> 1.18) @@ -616,9 +639,9 @@ GEM aws-sdk-elasticloadbalancingv2 (~> 1.0) aws-sdk-elasticsearchservice (~> 1.0) aws-sdk-emr (~> 1.53.0) - aws-sdk-eventbridge (~> 1.24.0) + aws-sdk-eventbridge (>= 1.24, < 1.47) aws-sdk-firehose (~> 1.0) - aws-sdk-glue (>= 1.71, < 1.89) + aws-sdk-glue (>= 1.71, < 1.146) aws-sdk-guardduty (~> 1.31) aws-sdk-iam (~> 1.13) aws-sdk-kafka (~> 1.0) @@ -628,7 +651,7 @@ GEM aws-sdk-mq (~> 1.40.0) aws-sdk-networkfirewall (>= 1.6.0) aws-sdk-networkmanager (>= 1.13.0) - aws-sdk-organizations (>= 1.17, < 1.60) + aws-sdk-organizations (>= 1.17, < 1.78) aws-sdk-ram (>= 1.21, < 1.27) aws-sdk-rds (~> 1.43) aws-sdk-redshift (~> 1.0) @@ -650,9 +673,9 @@ GEM aws-sdk-ssm (~> 1.0) aws-sdk-states (>= 1.35, < 1.40) aws-sdk-synthetics (~> 1.19.0) - aws-sdk-transfer (>= 1.26, < 1.35) + aws-sdk-transfer (>= 1.26, < 1.74) aws-sdk-waf (~> 1.43.0) - train-core (3.10.7) + train-core (3.10.8) addressable (~> 2.5) ffi (!= 1.13.0) json (>= 1.8, < 3.0) @@ -710,19 +733,19 @@ GEM rubyzip (~> 2.0) winrm (~> 2.0) wisper (2.0.1) - zeitwerk (2.6.8) + zeitwerk (2.6.11) PLATFORMS ruby DEPENDENCIES - kitchen-terraform (~> 6.1) - kubeclient (~> 4.9) - nokogiri (~> 1.14) - rest-client (~> 2.0) + kitchen-terraform (~> 7.0) + kubeclient (~> 4.11) + nokogiri (~> 1.15) + rest-client (~> 2.1) RUBY VERSION - ruby 3.0.6p216 + ruby 3.2.2p53 BUNDLED WITH 2.2.33 From 09891b11a458ff46ed9a8ff9154eb88d1603fbcc Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 6 Sep 2023 09:53:05 -0700 Subject: [PATCH 0561/1371] chore: add go.work (#1805) --- .gitignore | 1 + go.work | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 go.work diff --git a/.gitignore b/.gitignore index 43d33213e4b..93bdab3e2ca 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ config-connector/tests/testcases/environments.yaml .vscode *.pyc cli/bpmetadata/int-test/.working +go.work.sum diff --git a/go.work b/go.work new file mode 100644 index 00000000000..a20e495a89c --- /dev/null +++ b/go.work @@ -0,0 +1,8 @@ +go 1.20 + +use ( + ./cli + ./infra/blueprint-test + ./infra/module-swapper + ./infra/utils/fbf +) From 3a5e6bd71a619e85d2fc41aa359416ba2e3e2438 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 6 Sep 2023 10:21:16 -0700 Subject: [PATCH 0562/1371] chore(master): release module-swapper 0.2.1 (#1803) --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8209ab3168f..a4464194a55 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.8.0", - "infra/module-swapper": "0.2.0" + "infra/module-swapper": "0.2.1" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index e57d4b4a4e1..2b0cd6c9ac8 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.0...infra/module-swapper/v0.2.1) (2023-09-06) + + +### Bug Fixes + +* **deps:** update module github.com/go-git/go-git/v5 to v5.8.1 ([#1733](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1733)) ([668f901](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/668f90157ee5e3d1b07dc23caefeb1e2083bab3c)) + ## [0.2.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.1.0...infra/module-swapper/v0.2.0) (2023-08-16) From fdbc5f6e02cc20a4806b06484d661ecd02ee3cce Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 6 Sep 2023 22:54:43 +0200 Subject: [PATCH 0563/1371] chore(deps): update cft/developer-tools docker tag to v1.15 (#1808) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 8fc9eecf247..44c741ed5d1 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.14 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd From c80af21a363609d6dfb3ba6e4a63bab63f1f6d8f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 6 Sep 2023 22:56:07 +0200 Subject: [PATCH 0564/1371] chore(deps): update actions/upload-artifact digest to a8a3f3a (#1809) Co-authored-by: Andrew Peabody --- .github/workflows/release-cli.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 68e8e7acf12..7fb739ea434 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -54,7 +54,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: bin path: cli/bin From 5b654a0d0586712a8746951e1fd23be4b3de1210 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 6 Sep 2023 23:06:14 +0200 Subject: [PATCH 0565/1371] chore(deps): update actions/upload-artifact action to v3.1.3 (#1811) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 37ae6b2060b..a638de0d21a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: SARIF file path: results.sarif From 6400f32578226165575868d7c329ed45fbfc35e9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 6 Sep 2023 23:12:07 +0200 Subject: [PATCH 0566/1371] fix(deps): update go modules (#1430) --- cli/go.mod | 97 ++++++++++++++++++++++++++++------------------------- cli/go.sum | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+), 46 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 8e7d270808f..e01805e3c37 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -4,65 +4,69 @@ go 1.20 require ( cloud.google.com/go/asset v1.14.1 - cloud.google.com/go/storage v1.30.1 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.7.0 - github.com/GoogleCloudPlatform/config-validator v0.0.0-20230815185018-1130fc57a588 + cloud.google.com/go/storage v1.32.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.0 + github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.15.0 github.com/gammazero/workerpool v1.1.3 - github.com/go-git/go-git/v5 v5.7.0 + github.com/go-git/go-git/v5 v5.8.1 github.com/goccy/go-yaml v1.11.0 github.com/golang/protobuf v1.5.3 - github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a + github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 github.com/google/go-cmp v0.5.9 - github.com/google/go-github/v53 v53.2.0 - github.com/hashicorp/hcl/v2 v2.17.0 - github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd - github.com/iancoleman/strcase v0.2.0 + github.com/google/go-github/v53 v53.0.0 + github.com/google/go-github/v54 v54.0.0 + github.com/hashicorp/hcl/v2 v2.18.0 + github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 + github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/invopop/jsonschema v0.7.0 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.4.6 + github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.19 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.54.0 + github.com/open-policy-agent/opa v0.55.0 github.com/otiai10/copy v1.12.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.7.0 github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df - golang.org/x/oauth2 v0.9.0 - golang.org/x/text v0.10.0 - google.golang.org/api v0.129.0 + golang.org/x/exp v0.0.0-20230905200255-921286631fa9 + golang.org/x/oauth2 v0.11.0 + golang.org/x/text v0.13.0 + google.golang.org/api v0.138.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 + gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.3.0 ) require ( - cloud.google.com/go v0.110.2 // indirect - cloud.google.com/go/accesscontextmanager v1.8.0 // indirect - cloud.google.com/go/compute v1.19.3 // indirect + cloud.google.com/go v0.110.6 // indirect + cloud.google.com/go/accesscontextmanager v1.8.1 // indirect + cloud.google.com/go/compute v1.23.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.0 // indirect - cloud.google.com/go/longrunning v0.5.0 // indirect - cloud.google.com/go/orgpolicy v1.11.0 // indirect - cloud.google.com/go/osconfig v1.12.0 // indirect - github.com/Microsoft/go-winio v0.5.2 // indirect + cloud.google.com/go/iam v1.1.1 // indirect + cloud.google.com/go/longrunning v0.5.1 // indirect + cloud.google.com/go/orgpolicy v1.11.1 // indirect + cloud.google.com/go/osconfig v1.12.1 // indirect + dario.cat/mergo v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.0 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/cloudflare/circl v1.3.3 // indirect @@ -99,10 +103,10 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda // indirect - github.com/google/s2a-go v0.1.4 // indirect + github.com/google/s2a-go v0.1.5 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect - github.com/googleapis/gax-go/v2 v2.11.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect github.com/gruntwork-io/terratest v0.43.11 // indirect @@ -141,7 +145,7 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/skeema/knownhosts v1.1.1 // indirect + github.com/skeema/knownhosts v1.2.0 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -160,31 +164,32 @@ require ( github.com/zclconf/go-cty v1.13.2 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0 // indirect - go.opentelemetry.io/otel v1.14.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 // indirect - go.opentelemetry.io/otel/metric v0.34.0 // indirect - go.opentelemetry.io/otel/sdk v1.14.0 // indirect - go.opentelemetry.io/otel/trace v1.14.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 // indirect + go.opentelemetry.io/otel v1.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 // indirect + go.opentelemetry.io/otel/metric v1.16.0 // indirect + go.opentelemetry.io/otel/sdk v1.16.0 // indirect + go.opentelemetry.io/otel/trace v1.16.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/crypto v0.10.0 // indirect + golang.org/x/crypto v0.13.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.11.0 // indirect - golang.org/x/sys v0.9.0 // indirect - golang.org/x/term v0.9.0 // indirect + golang.org/x/net v0.15.0 // indirect + golang.org/x/sync v0.3.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.12.0 // indirect golang.org/x/time v0.3.0 // indirect + golang.org/x/tools v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/grpc v1.56.1 // indirect + google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 // indirect + google.golang.org/grpc v1.57.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.27.2 // indirect k8s.io/apiextensions-apiserver v0.27.2 // indirect k8s.io/apimachinery v0.27.2 // indirect @@ -193,7 +198,7 @@ require ( k8s.io/component-base v0.27.2 // indirect k8s.io/klog/v2 v2.100.1 // indirect k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 // indirect - k8s.io/kubectl v0.26.4 // indirect + k8s.io/kubectl v0.27.2 // indirect k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/controller-runtime v0.15.1 // indirect diff --git a/cli/go.sum b/cli/go.sum index 82da6f2114a..26732f1bdb3 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -19,8 +19,12 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= +cloud.google.com/go v0.110.6 h1:8uYAkj3YHTP/1iwReuHPxLSbdcyc+dSBbzFMrVwDR6Q= +cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= cloud.google.com/go/accesscontextmanager v1.8.0 h1:cCPSztLzUx8OHoyRMcUOy4R/vGLYDk/7gZ5V5J/bbP0= cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= +cloud.google.com/go/accesscontextmanager v1.8.1 h1:WIAt9lW9AXtqw/bnvrEUaE8VG/7bAAeMzRCBGMkc4+w= +cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= cloud.google.com/go/asset v1.14.1 h1:vlHdznX70eYW4V1y1PxocvF6tEwxJTTarwIGwOhFF3U= cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -31,6 +35,8 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds= cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= @@ -38,12 +44,20 @@ cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7 cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94= cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= cloud.google.com/go/longrunning v0.5.0 h1:DK8BH0+hS+DIvc9a2TPnteUievsTCH4ORMAASSb7JcQ= cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= +cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= +cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= cloud.google.com/go/orgpolicy v1.11.0 h1:1B0K72FucdwRWLRIuG9ExgPj/fkJyRAmvrpoI4vFUMM= cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= +cloud.google.com/go/orgpolicy v1.11.1 h1:I/7dHICQkNwym9erHqmlb50LRU588NPCvkfIY0Bx9jI= +cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= cloud.google.com/go/osconfig v1.12.0 h1:+ENCeRbwYODEPhaFt7yBELUln129bX25JZSf8fpkgEI= cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= +cloud.google.com/go/osconfig v1.12.1 h1:dgyEHdfqML6cUW6/MkihNdTVc0INQst0qSE8Ou1ub9c= +cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -56,21 +70,33 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storage v1.32.0 h1:5w6DxEGOnktmJHarxAOUywxVW9lbNWIzlzzUltG/3+o= +cloud.google.com/go/storage v1.32.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.7.0 h1:iRROly3NUxu/eskGvxk0TFm//GNdBJ3rnLqw/As8XbA= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.7.0/go.mod h1:8S915KxCJh7it4gn/J9o11FWD+F8IGhCGPITgFapzg8= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.0 h1:qir5eatHmGiaQ7CobiEjdzNWeSZ9ytQixsDKdr0gvuA= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.0/go.mod h1:KQlrvFQnkJHfAzJWKSC+JTGrXIBLI4UH8gLSh1EfoXM= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230815185018-1130fc57a588 h1:2OdoAD/+vVxfjcMy/Mm+B/n3kPO94VbzZ6xhf51OlbA= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230815185018-1130fc57a588/go.mod h1:B8Uh4ssEtdnp1Pnoj5ZlneoPGiTR6hkqowZ88DCc+CY= +github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= +github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek= github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= +github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs= +github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= @@ -83,8 +109,11 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFI github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= @@ -103,6 +132,8 @@ github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7N github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -180,6 +211,8 @@ github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw4 github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= +github.com/go-git/go-git/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= +github.com/go-git/go-git/v5 v5.8.1/go.mod h1:FHFuoD6yGz5OSKEBK+aWN9Oah0q54Jxl0abmj6GnqAo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -298,6 +331,8 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a h1:AWZzzFrqyjYlRloN6edwTLTUbKxf5flLXNuTBDm3Ews= github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 h1:uK3X/2mt4tbSGoHvbLBHUny7CKiuwUip3MArtukol4E= +github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= @@ -320,9 +355,11 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github/v53 v53.0.0 h1:T1RyHbSnpHYnoF0ZYKiIPSgPtuJ8G6vgc0MKodXsQDQ= github.com/google/go-github/v53 v53.0.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= +github.com/google/go-github/v54 v54.0.0/go.mod h1:Sw1LXWHhXRZtzJ9LI5fyJg9wbQzYvFhW8W5P2yaAQ7s= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -348,6 +385,8 @@ github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8I github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.5 h1:8IYp3w9nysqv3JH+NJgXJzGbDHzLOTj43BmSkp+O7qg= +github.com/google/s2a-go v0.1.5/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -358,6 +397,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= @@ -378,12 +419,18 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY= github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4= +github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= +github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd h1:1uPcotqoL4TjcGKlgIe7OFSRplf7BMVtUjekwmCrvuM= github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= +github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 h1:SzE5lAYh9XXR3b1q3p3uBNqEY+syiiLZiFCIvr/JTsg= +github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= @@ -402,6 +449,8 @@ github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PH github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/jedib0t/go-pretty/v6 v6.4.7 h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE= +github.com/jedib0t/go-pretty/v6 v6.4.7/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -483,6 +532,8 @@ github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcA github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= github.com/open-policy-agent/opa v0.54.0 h1:mGEsK+R5ZTMV8fzzbNzmYDGbTmY30wmRCIHmtm2VqWs= github.com/open-policy-agent/opa v0.54.0/go.mod h1:d8I8jWygKGi4+T4H07qrbeCdH1ITLsEfT0M+bsvxWw0= +github.com/open-policy-agent/opa v0.55.0 h1:s7Vm4ph6zDqqP/KzvUSw9fsKVsm9lhbTZhYGxxTK7mo= +github.com/open-policy-agent/opa v0.55.0/go.mod h1:2Vh8fj/bXCqSwGMbBiHGrw+O8yrho6T/fdaHt5ROmaQ= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -528,6 +579,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= +github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= +github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= @@ -614,20 +667,36 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0 h1:yt2NKzK7Vyo6h0+X8BA4FpreZQTlVEIarnsBP/H5mzs= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0/go.mod h1:+ARmXlUlc51J7sZeCBkBJNdHGySrdOzgzxp6VWRWM1U= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY7+onl4qN1vl0xW/V/v6OBZ0vVdH+esuJgvmM= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0/go.mod h1:XiYsayHc36K3EByOO6nbAXnAWbrUxdjUROCEeeROOH8= go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= +go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s= +go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 h1:/fXHZHGvro6MVqV34fJzDhi7sHGpX3Ej/Qjmfn003ho= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 h1:cbsD4cUcviQGXdw8+bo5x2wazq10SKz8hEbtCRPcU78= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0/go.mod h1:JgXSGah17croqhJfhByOLVY719k1emAXC8MVhCIJlRs= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 h1:ap+y8RXX3Mu9apKVtOkM6WSFESLM8K3wNQyOU8sWHcc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 h1:TVQp/bboR4mhZSav+MdgXB8FaRho1RC8UwVn3T0vjVc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0/go.mod h1:I33vtIe0sR96wfrUcilIzLoA3mLHhRmz9S9Te0S3gDo= go.opentelemetry.io/otel/metric v0.34.0 h1:MCPoQxcg/26EuuJwpYN1mZTeCYAUGx8ABxfW07YkjP8= go.opentelemetry.io/otel/metric v0.34.0/go.mod h1:ZFuI4yQGNCupurTXCwkeD/zHBt+C2bR7bw5JqUm/AP8= +go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo= +go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= +go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= +go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= +go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -653,6 +722,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -665,6 +736,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME= golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= 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= @@ -735,6 +808,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= 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= @@ -748,6 +823,8 @@ golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= +golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= 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= @@ -762,6 +839,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/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/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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -822,6 +900,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -831,6 +911,8 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= 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= @@ -847,6 +929,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +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/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= @@ -908,6 +992,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= 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= @@ -936,6 +1022,8 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.129.0 h1:2XbdjjNfFPXQyufzQVwPf1RRnHH8Den2pfNE2jw7L8w= google.golang.org/api v0.129.0/go.mod h1:dFjiXlanKwWE3612X97llhsoI36FAoIiRj3aTl5b/zE= +google.golang.org/api v0.138.0 h1:K/tVp05MxNVbHShRw9m7e9VJGdagNeTdMzqPH7AUqr0= +google.golang.org/api v0.138.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= 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= @@ -985,10 +1073,16 @@ google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 h1:wukfNtZmZUurLN/atp2hiIeTKn7QJWIQdHzqmsOnAOk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= 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= @@ -1012,6 +1106,8 @@ google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ5 google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= +google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= 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= @@ -1078,6 +1174,8 @@ k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 h1:OmK1d0WrkD3IPfkskvroRy k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ= k8s.io/kubectl v0.26.4 h1:A0Oa0u/po4KxXnXsNCOwLojAe9cQR3TJNJabEIf7U1w= k8s.io/kubectl v0.26.4/go.mod h1:cWtp/+I4p+h5En3s2zO1zCry9v3/6h37EQ2tF3jNRnM= +k8s.io/kubectl v0.27.2 h1:sSBM2j94MHBFRWfHIWtEXWCicViQzZsb177rNsKBhZg= +k8s.io/kubectl v0.27.2/go.mod h1:GCOODtxPcrjh+EC611MqREkU8RjYBh10ldQCQ6zpFKw= k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= From 1b4208d3ba5935435e35d2ef055d3b08fde3c787 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 6 Sep 2023 15:07:57 -0700 Subject: [PATCH 0567/1371] chore: add back go path (#1814) --- infra/build/Makefile | 2 +- infra/build/developer-tools/Dockerfile | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f915013212b..f9ad163d804 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 5b31ec44a00..d50e6130990 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -158,6 +158,10 @@ RUN mkdir -p ${TF_PLUGIN_CACHE_DIR} ENV TF_VALIDATOR_TMP_PLAN_DIR /workspace/test/integration/tmp/tfvt/ RUN mkdir -p ${TF_VALIDATOR_TMP_PLAN_DIR} +# Add GO_PATH TO PATH +ENV GO_PATH="/root/go" +ENV PATH=$GO_PATH/bin:$PATH + WORKDIR $WORKSPACE RUN terraform --version && \ terraform-docs --version && \ From ac006cd1d1b6632f2aff87b3e9d91ded1b1a6a91 Mon Sep 17 00:00:00 2001 From: Ray Zhang <141791707+rzy-goog@users.noreply.github.com> Date: Thu, 7 Sep 2023 09:01:25 -0700 Subject: [PATCH 0568/1371] feat: add new disk type property extension (#1797) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui_ext.pb.go | 455 +++++++++++------- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 8 + .../schema/gcp-blueprint-metadata.json | 15 + 4 files changed, 293 insertions(+), 187 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 44c741ed5d1..5fa7beaea4d 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.4 +VERSION=v1.2.5 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go index c75e80813f2..65f974c046b 100644 --- a/cli/bpmetadata/bpmetadata_ui_ext.pb.go +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -214,6 +214,7 @@ type GooglePropertyExtension struct { GceZone *GCELocationExtension `protobuf:"bytes,14,opt,name=gce_zone,json=gceZone,proto3" json:"gceZone,omitempty" yaml:"gceZone,omitempty"` // @gotags: json:"gceZone,omitempty" yaml:"gceZone,omitempty" GceRegion *GCELocationExtension `protobuf:"bytes,15,opt,name=gce_region,json=gceRegion,proto3" json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"` // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" IamServiceAccount *IAMServiceAccountExtension `protobuf:"bytes,16,opt,name=iam_service_account,json=iamServiceAccount,proto3" json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"` // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" + GceDiskType *GCEDiskTypeExtension `protobuf:"bytes,17,opt,name=gce_disk_type,json=gceDiskType,proto3" json:"gceDiskType,omitempty" yaml:"gceDiskType,omitempty"` // @gotags: json:"gceDiskType,omitempty" yaml:"gceDiskType,omitempty" } func (x *GooglePropertyExtension) Reset() { @@ -360,6 +361,13 @@ func (x *GooglePropertyExtension) GetIamServiceAccount() *IAMServiceAccountExten return nil } +func (x *GooglePropertyExtension) GetGceDiskType() *GCEDiskTypeExtension { + if x != nil { + return x.GceDiskType + } + return nil +} + // GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. type GCELocationExtension struct { state protoimpl.MessageState @@ -605,6 +613,56 @@ func (x *GCEGPUCountExtension) GetMachineTypeVariable() string { return "" } +// GCEDiskTypeExtension specifies the type of disk for a GCE resource. +type GCEDiskTypeExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This field references another variable from the schema, + // which must have type GCEMachineType. + MachineTypeVariable string `protobuf:"bytes,1,opt,name=machine_type_variable,json=machineTypeVariable,proto3" json:"machineTypeVariable" yaml:"machineTypeVariable"` // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" +} + +func (x *GCEDiskTypeExtension) Reset() { + *x = GCEDiskTypeExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCEDiskTypeExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCEDiskTypeExtension) ProtoMessage() {} + +func (x *GCEDiskTypeExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCEDiskTypeExtension.ProtoReflect.Descriptor instead. +func (*GCEDiskTypeExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{5} +} + +func (x *GCEDiskTypeExtension) GetMachineTypeVariable() string { + if x != nil { + return x.MachineTypeVariable + } + return "" +} + // GCEDiskSizeExtension specifies the size of a disk for a GCE resource. type GCEDiskSizeExtension struct { state protoimpl.MessageState @@ -619,7 +677,7 @@ type GCEDiskSizeExtension struct { func (x *GCEDiskSizeExtension) Reset() { *x = GCEDiskSizeExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -632,7 +690,7 @@ func (x *GCEDiskSizeExtension) String() string { func (*GCEDiskSizeExtension) ProtoMessage() {} func (x *GCEDiskSizeExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[5] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -645,7 +703,7 @@ func (x *GCEDiskSizeExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use GCEDiskSizeExtension.ProtoReflect.Descriptor instead. func (*GCEDiskSizeExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{5} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{6} } func (x *GCEDiskSizeExtension) GetDiskTypeVariable() string { @@ -674,7 +732,7 @@ type GCENetworkExtension struct { func (x *GCENetworkExtension) Reset() { *x = GCENetworkExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -687,7 +745,7 @@ func (x *GCENetworkExtension) String() string { func (*GCENetworkExtension) ProtoMessage() {} func (x *GCENetworkExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[6] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -700,7 +758,7 @@ func (x *GCENetworkExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use GCENetworkExtension.ProtoReflect.Descriptor instead. func (*GCENetworkExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{6} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{7} } func (x *GCENetworkExtension) GetAllowSharedVpcs() bool { @@ -742,7 +800,7 @@ type GCEExternalIPExtension struct { func (x *GCEExternalIPExtension) Reset() { *x = GCEExternalIPExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -755,7 +813,7 @@ func (x *GCEExternalIPExtension) String() string { func (*GCEExternalIPExtension) ProtoMessage() {} func (x *GCEExternalIPExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[7] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -768,7 +826,7 @@ func (x *GCEExternalIPExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use GCEExternalIPExtension.ProtoReflect.Descriptor instead. func (*GCEExternalIPExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{7} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{8} } func (x *GCEExternalIPExtension) GetNetworkVariable() string { @@ -814,7 +872,7 @@ type GCEIPForwardingExtension struct { func (x *GCEIPForwardingExtension) Reset() { *x = GCEIPForwardingExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -827,7 +885,7 @@ func (x *GCEIPForwardingExtension) String() string { func (*GCEIPForwardingExtension) ProtoMessage() {} func (x *GCEIPForwardingExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[8] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -840,7 +898,7 @@ func (x *GCEIPForwardingExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use GCEIPForwardingExtension.ProtoReflect.Descriptor instead. func (*GCEIPForwardingExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{8} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{9} } func (x *GCEIPForwardingExtension) GetNetworkVariable() string { @@ -870,7 +928,7 @@ type GCEFirewallExtension struct { func (x *GCEFirewallExtension) Reset() { *x = GCEFirewallExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -883,7 +941,7 @@ func (x *GCEFirewallExtension) String() string { func (*GCEFirewallExtension) ProtoMessage() {} func (x *GCEFirewallExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[9] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -896,7 +954,7 @@ func (x *GCEFirewallExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use GCEFirewallExtension.ProtoReflect.Descriptor instead. func (*GCEFirewallExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{9} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{10} } func (x *GCEFirewallExtension) GetNetworkVariable() string { @@ -919,7 +977,7 @@ type GCEFirewallRangeExtension struct { func (x *GCEFirewallRangeExtension) Reset() { *x = GCEFirewallRangeExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -932,7 +990,7 @@ func (x *GCEFirewallRangeExtension) String() string { func (*GCEFirewallRangeExtension) ProtoMessage() {} func (x *GCEFirewallRangeExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[10] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -945,7 +1003,7 @@ func (x *GCEFirewallRangeExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use GCEFirewallRangeExtension.ProtoReflect.Descriptor instead. func (*GCEFirewallRangeExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{10} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{11} } func (x *GCEFirewallRangeExtension) GetFirewallVariable() string { @@ -969,7 +1027,7 @@ type GCESubnetworkExtension struct { func (x *GCESubnetworkExtension) Reset() { *x = GCESubnetworkExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -982,7 +1040,7 @@ func (x *GCESubnetworkExtension) String() string { func (*GCESubnetworkExtension) ProtoMessage() {} func (x *GCESubnetworkExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[11] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -995,7 +1053,7 @@ func (x *GCESubnetworkExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use GCESubnetworkExtension.ProtoReflect.Descriptor instead. func (*GCESubnetworkExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{11} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{12} } func (x *GCESubnetworkExtension) GetNetworkVariable() string { @@ -1018,7 +1076,7 @@ type GCEGenericResourceExtension struct { func (x *GCEGenericResourceExtension) Reset() { *x = GCEGenericResourceExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1031,7 +1089,7 @@ func (x *GCEGenericResourceExtension) String() string { func (*GCEGenericResourceExtension) ProtoMessage() {} func (x *GCEGenericResourceExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[12] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1044,7 +1102,7 @@ func (x *GCEGenericResourceExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use GCEGenericResourceExtension.ProtoReflect.Descriptor instead. func (*GCEGenericResourceExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{12} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{13} } func (x *GCEGenericResourceExtension) GetResourceVariable() string { @@ -1067,7 +1125,7 @@ type IAMServiceAccountExtension struct { func (x *IAMServiceAccountExtension) Reset() { *x = IAMServiceAccountExtension{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1080,7 +1138,7 @@ func (x *IAMServiceAccountExtension) String() string { func (*IAMServiceAccountExtension) ProtoMessage() {} func (x *IAMServiceAccountExtension) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_ext_proto_msgTypes[13] + mi := &file_bpmetadata_ui_ext_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1093,7 +1151,7 @@ func (x *IAMServiceAccountExtension) ProtoReflect() protoreflect.Message { // Deprecated: Use IAMServiceAccountExtension.ProtoReflect.Descriptor instead. func (*IAMServiceAccountExtension) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{13} + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{14} } func (x *IAMServiceAccountExtension) GetRoles() []string { @@ -1109,7 +1167,7 @@ var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ 0x0a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9e, 0x0b, 0x0a, 0x17, 0x47, 0x6f, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf8, 0x0b, 0x0a, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, @@ -1199,132 +1257,143 @@ var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x69, 0x61, 0x6d, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x43, - 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, - 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0xc3, 0x01, 0x0a, 0x17, 0x47, 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, - 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, - 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, - 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x52, 0x61, - 0x6d, 0x47, 0x62, 0x12, 0x41, 0x0a, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, - 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, - 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x67, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, - 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, - 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x8d, 0x01, - 0x0a, 0x13, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x56, 0x70, 0x63, - 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0xdc, 0x01, - 0x0a, 0x16, 0x47, 0x43, 0x45, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x63, + 0x65, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x70, 0x73, 0x22, 0x70, 0x0a, 0x18, - 0x47, 0x43, 0x45, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, - 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, - 0x0a, 0x14, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x22, 0x48, 0x0a, 0x19, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, - 0x0a, 0x11, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x43, 0x0a, 0x16, 0x47, - 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, 0x65, 0x44, 0x69, 0x73, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x17, 0x47, + 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, + 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, + 0x1c, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x52, 0x61, 0x6d, 0x47, 0x62, 0x12, 0x41, 0x0a, + 0x1d, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, + 0x69, 0x73, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, + 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x67, 0x70, + 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, + 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, + 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x56, 0x70, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x16, 0x47, 0x43, 0x45, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, + 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, + 0x70, 0x73, 0x22, 0x70, 0x0a, 0x18, 0x47, 0x43, 0x45, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, + 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x48, 0x0a, 0x19, 0x47, 0x43, 0x45, 0x46, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x1a, - 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, - 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, - 0x2a, 0xd5, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, - 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, - 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, - 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, - 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, - 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, - 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x54, 0x5f, 0x47, 0x43, - 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, - 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, - 0x52, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x5a, - 0x4f, 0x4e, 0x45, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, - 0x53, 0x55, 0x42, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, - 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, - 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, - 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, - 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x49, 0x50, - 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, - 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, - 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x10, - 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, - 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, - 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, - 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, - 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, - 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x2a, 0x52, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, - 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, - 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, - 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x10, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x43, 0x0a, 0x16, 0x47, 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0xd5, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, + 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4c, 0x49, 0x4e, + 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, + 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, + 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, + 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, + 0x13, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, + 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x54, + 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x45, + 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, + 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, + 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, + 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, + 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0c, + 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x5f, 0x49, 0x50, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x47, + 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, + 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, + 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x10, 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x54, 0x5f, 0x47, 0x43, + 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, + 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x45, 0x4e, + 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, + 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, + 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x2a, 0x52, + 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, + 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, + 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1340,7 +1409,7 @@ func file_bpmetadata_ui_ext_proto_rawDescGZIP() []byte { } var file_bpmetadata_ui_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_bpmetadata_ui_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_bpmetadata_ui_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_bpmetadata_ui_ext_proto_goTypes = []interface{}{ (ExtensionType)(0), // 0: google.cloud.config.bpmetadata.ExtensionType (ExternalIPType)(0), // 1: google.cloud.config.bpmetadata.ExternalIPType @@ -1349,38 +1418,40 @@ var file_bpmetadata_ui_ext_proto_goTypes = []interface{}{ (*GCEMachineTypeExtension)(nil), // 4: google.cloud.config.bpmetadata.GCEMachineTypeExtension (*GCEGPUTypeExtension)(nil), // 5: google.cloud.config.bpmetadata.GCEGPUTypeExtension (*GCEGPUCountExtension)(nil), // 6: google.cloud.config.bpmetadata.GCEGPUCountExtension - (*GCEDiskSizeExtension)(nil), // 7: google.cloud.config.bpmetadata.GCEDiskSizeExtension - (*GCENetworkExtension)(nil), // 8: google.cloud.config.bpmetadata.GCENetworkExtension - (*GCEExternalIPExtension)(nil), // 9: google.cloud.config.bpmetadata.GCEExternalIPExtension - (*GCEIPForwardingExtension)(nil), // 10: google.cloud.config.bpmetadata.GCEIPForwardingExtension - (*GCEFirewallExtension)(nil), // 11: google.cloud.config.bpmetadata.GCEFirewallExtension - (*GCEFirewallRangeExtension)(nil), // 12: google.cloud.config.bpmetadata.GCEFirewallRangeExtension - (*GCESubnetworkExtension)(nil), // 13: google.cloud.config.bpmetadata.GCESubnetworkExtension - (*GCEGenericResourceExtension)(nil), // 14: google.cloud.config.bpmetadata.GCEGenericResourceExtension - (*IAMServiceAccountExtension)(nil), // 15: google.cloud.config.bpmetadata.IAMServiceAccountExtension + (*GCEDiskTypeExtension)(nil), // 7: google.cloud.config.bpmetadata.GCEDiskTypeExtension + (*GCEDiskSizeExtension)(nil), // 8: google.cloud.config.bpmetadata.GCEDiskSizeExtension + (*GCENetworkExtension)(nil), // 9: google.cloud.config.bpmetadata.GCENetworkExtension + (*GCEExternalIPExtension)(nil), // 10: google.cloud.config.bpmetadata.GCEExternalIPExtension + (*GCEIPForwardingExtension)(nil), // 11: google.cloud.config.bpmetadata.GCEIPForwardingExtension + (*GCEFirewallExtension)(nil), // 12: google.cloud.config.bpmetadata.GCEFirewallExtension + (*GCEFirewallRangeExtension)(nil), // 13: google.cloud.config.bpmetadata.GCEFirewallRangeExtension + (*GCESubnetworkExtension)(nil), // 14: google.cloud.config.bpmetadata.GCESubnetworkExtension + (*GCEGenericResourceExtension)(nil), // 15: google.cloud.config.bpmetadata.GCEGenericResourceExtension + (*IAMServiceAccountExtension)(nil), // 16: google.cloud.config.bpmetadata.IAMServiceAccountExtension } var file_bpmetadata_ui_ext_proto_depIdxs = []int32{ 0, // 0: google.cloud.config.bpmetadata.GooglePropertyExtension.type:type_name -> google.cloud.config.bpmetadata.ExtensionType 4, // 1: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_machine_type:type_name -> google.cloud.config.bpmetadata.GCEMachineTypeExtension - 7, // 2: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_disk_size:type_name -> google.cloud.config.bpmetadata.GCEDiskSizeExtension - 13, // 3: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_subnetwork:type_name -> google.cloud.config.bpmetadata.GCESubnetworkExtension - 14, // 4: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_resource:type_name -> google.cloud.config.bpmetadata.GCEGenericResourceExtension + 8, // 2: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_disk_size:type_name -> google.cloud.config.bpmetadata.GCEDiskSizeExtension + 14, // 3: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_subnetwork:type_name -> google.cloud.config.bpmetadata.GCESubnetworkExtension + 15, // 4: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_resource:type_name -> google.cloud.config.bpmetadata.GCEGenericResourceExtension 5, // 5: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_type:type_name -> google.cloud.config.bpmetadata.GCEGPUTypeExtension 6, // 6: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_gpu_count:type_name -> google.cloud.config.bpmetadata.GCEGPUCountExtension - 8, // 7: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_network:type_name -> google.cloud.config.bpmetadata.GCENetworkExtension - 9, // 8: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_external_ip:type_name -> google.cloud.config.bpmetadata.GCEExternalIPExtension - 10, // 9: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_ip_forwarding:type_name -> google.cloud.config.bpmetadata.GCEIPForwardingExtension - 11, // 10: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall:type_name -> google.cloud.config.bpmetadata.GCEFirewallExtension - 12, // 11: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall_range:type_name -> google.cloud.config.bpmetadata.GCEFirewallRangeExtension + 9, // 7: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_network:type_name -> google.cloud.config.bpmetadata.GCENetworkExtension + 10, // 8: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_external_ip:type_name -> google.cloud.config.bpmetadata.GCEExternalIPExtension + 11, // 9: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_ip_forwarding:type_name -> google.cloud.config.bpmetadata.GCEIPForwardingExtension + 12, // 10: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall:type_name -> google.cloud.config.bpmetadata.GCEFirewallExtension + 13, // 11: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_firewall_range:type_name -> google.cloud.config.bpmetadata.GCEFirewallRangeExtension 3, // 12: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_zone:type_name -> google.cloud.config.bpmetadata.GCELocationExtension 3, // 13: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_region:type_name -> google.cloud.config.bpmetadata.GCELocationExtension - 15, // 14: google.cloud.config.bpmetadata.GooglePropertyExtension.iam_service_account:type_name -> google.cloud.config.bpmetadata.IAMServiceAccountExtension - 1, // 15: google.cloud.config.bpmetadata.GCEExternalIPExtension.type:type_name -> google.cloud.config.bpmetadata.ExternalIPType - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 16, // 14: google.cloud.config.bpmetadata.GooglePropertyExtension.iam_service_account:type_name -> google.cloud.config.bpmetadata.IAMServiceAccountExtension + 7, // 15: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_disk_type:type_name -> google.cloud.config.bpmetadata.GCEDiskTypeExtension + 1, // 16: google.cloud.config.bpmetadata.GCEExternalIPExtension.type:type_name -> google.cloud.config.bpmetadata.ExternalIPType + 17, // [17:17] is the sub-list for method output_type + 17, // [17:17] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_bpmetadata_ui_ext_proto_init() } @@ -1450,7 +1521,7 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEDiskSizeExtension); i { + switch v := v.(*GCEDiskTypeExtension); i { case 0: return &v.state case 1: @@ -1462,7 +1533,7 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCENetworkExtension); i { + switch v := v.(*GCEDiskSizeExtension); i { case 0: return &v.state case 1: @@ -1474,7 +1545,7 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEExternalIPExtension); i { + switch v := v.(*GCENetworkExtension); i { case 0: return &v.state case 1: @@ -1486,7 +1557,7 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEIPForwardingExtension); i { + switch v := v.(*GCEExternalIPExtension); i { case 0: return &v.state case 1: @@ -1498,7 +1569,7 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEFirewallExtension); i { + switch v := v.(*GCEIPForwardingExtension); i { case 0: return &v.state case 1: @@ -1510,7 +1581,7 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEFirewallRangeExtension); i { + switch v := v.(*GCEFirewallExtension); i { case 0: return &v.state case 1: @@ -1522,7 +1593,7 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCESubnetworkExtension); i { + switch v := v.(*GCEFirewallRangeExtension); i { case 0: return &v.state case 1: @@ -1534,7 +1605,7 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCEGenericResourceExtension); i { + switch v := v.(*GCESubnetworkExtension); i { case 0: return &v.state case 1: @@ -1546,6 +1617,18 @@ func file_bpmetadata_ui_ext_proto_init() { } } file_bpmetadata_ui_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCEGenericResourceExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_ext_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IAMServiceAccountExtension); i { case 0: return &v.state @@ -1564,7 +1647,7 @@ func file_bpmetadata_ui_ext_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bpmetadata_ui_ext_proto_rawDesc, NumEnums: 2, - NumMessages: 14, + NumMessages: 15, NumExtensions: 0, NumServices: 0, }, diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index 5aec2522dd3..a1b8de47d0a 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -68,6 +68,7 @@ message GooglePropertyExtension { GCELocationExtension gce_zone = 14; // @gotags: json:"gceZone,omitempty" yaml:"gceZone,omitempty" GCELocationExtension gce_region = 15; // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" IAMServiceAccountExtension iam_service_account = 16; // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" + GCEDiskTypeExtension gce_disk_type = 17; // @gotags: json:"gceDiskType,omitempty" yaml:"gceDiskType,omitempty" } // GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. @@ -113,6 +114,13 @@ message GCEGPUCountExtension { string machine_type_variable = 1; // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" } +// GCEDiskTypeExtension specifies the type of disk for a GCE resource. +message GCEDiskTypeExtension { + // This field references another variable from the schema, + // which must have type GCEMachineType. + string machine_type_variable = 1; // @gotags: json:"machineTypeVariable" yaml:"machineTypeVariable" +} + // GCEDiskSizeExtension specifies the size of a disk for a GCE resource. message GCEDiskSizeExtension { // The allowable range of disk sizes depends on the disk type. This field diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index d93b3be2e39..672fbaceace 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -735,6 +735,18 @@ "diskTypeVariable" ] }, + "GCEDiskTypeExtension": { + "properties": { + "machineTypeVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "machineTypeVariable" + ] + }, "GCEExternalIPExtension": { "properties": { "networkVariable": { @@ -969,6 +981,9 @@ }, "iamServiceAccount": { "$ref": "#/$defs/IAMServiceAccountExtension" + }, + "gceDiskType": { + "$ref": "#/$defs/GCEDiskTypeExtension" } }, "additionalProperties": false, From 3a89bbdd59ad8dbc801e6d2cfdddf0afd5d3a4cd Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 7 Sep 2023 09:36:06 -0700 Subject: [PATCH 0569/1371] chore: fix include/google/protobuf in dev-tools 1.15 (#1816) --- infra/build/Makefile | 2 +- infra/build/developer-tools/build/install_protoc.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f9ad163d804..7c1361c3e23 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/install_protoc.sh b/infra/build/developer-tools/build/install_protoc.sh index f62093b7032..d79d96fd285 100755 --- a/infra/build/developer-tools/build/install_protoc.sh +++ b/infra/build/developer-tools/build/install_protoc.sh @@ -28,7 +28,7 @@ unzip "protoc-${PROTOC_VERSION}-linux-x86_64.zip" -d $HOME/.local rm "protoc-${PROTOC_VERSION}-linux-x86_64.zip" chmod 755 $HOME/.local/bin/protoc cp $HOME/.local/bin/protoc /usr/local/bin/ -cp -R $HOME/.local/include/* /usr/local/include/ +cp -R $HOME/.local/include/ /usr/local/include/ go install google.golang.org/protobuf/cmd/protoc-gen-go@v${PROTOC_GEN_GO_VERSION} go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v${PROTOC_GEN_GO_GRPC_VERSION} From 7d82dcbd464745c228ca97a9ce97f28a9df687d9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 7 Sep 2023 12:02:50 -0700 Subject: [PATCH 0570/1371] chore: use cli full make test suite (#1815) --- .github/workflows/test-cli.yml | 4 ++-- cli/Makefile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index c34d9ae4eb6..84a61b216f9 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -29,7 +29,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, macos-latest] + operating-system: [ubuntu-latest] steps: - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 @@ -37,4 +37,4 @@ jobs: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum - run: |- - go test ./... -v + make test diff --git a/cli/Makefile b/cli/Makefile index 5fa7beaea4d..ffbaa15b614 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -25,7 +25,7 @@ build: protoc-gen build-schema .PHONY: protoc-gen protoc-gen: - docker run --rm -it \ + docker run --rm \ -v "$(CURDIR)":/workspace \ $(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ /bin/bash -c "protoc -I=${SRC_PROTO_DIR} --go_opt=paths=source_relative --go_out=${PROTOC_DIR} ${SRC_PROTO_DIR}/*.proto && \ From 8fbcb14119fc7cd021d4da58a210647311c229e6 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 7 Sep 2023 12:31:02 -0700 Subject: [PATCH 0571/1371] chore: run update-tooling on releases (#1807) --- .github/workflows/update-tooling.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index f6675aed242..ca2af467c53 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -3,6 +3,8 @@ on: schedule: - cron: "0 2 * * *" workflow_dispatch: + release: + types: [released] env: TERRAFORM_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" From 9214f8d250006e077dd7de0c95ddf3b6fec88dc4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 7 Sep 2023 13:11:04 -0700 Subject: [PATCH 0572/1371] chore: add pre-commits (#1775) --- .github/ISSUE_TEMPLATE/issue-template.md | 2 +- .github/workflows/release-cli.yml | 4 +- .pre-commit-config.yaml | 14 ++++ cli/README.md | 2 +- cli/bin/.gitignore | 2 +- cli/bpmetadata/proto/bpmetadata_ui.proto | 2 +- .../schema/gcp-blueprint-metadata.json | 2 +- cli/docs/scorecard.md | 10 +-- cli/report/cmd.go | 4 +- cli/tests/create-update-test.bats | 2 +- infra/USAGE.md | 1 - infra/blueprint-test/README.md | 80 +++++++++---------- .../examples/vpc-example-custom/README.md | 1 - .../examples/vpc-example/README.md | 1 - .../testdata/TestUpdate-with-prev-data.json | 2 +- .../build/scripts/task_helper_functions.sh | 2 +- .../scripts/task_wrapper_scripts/lint_docker | 1 - .../build/scripts/test_lint.sh | 2 +- infra/module-swapper/Readme.md | 2 +- .../dev-org/dev-project-cleanup/backend.tf | 1 - .../dev-org/dev-project-cleanup/cleanup.tf | 1 - .../dev-org/dev-project-cleanup/locals.tf | 1 - .../dev-org/dev-project-cleanup/outputs.tf | 1 - .../terraform/test-org/ci-project/outputs.tf | 1 - .../terraform/test-org/ci-project/versions.tf | 1 - .../terraform/test-org/ci-triggers/backend.tf | 1 - .../test-org/ci-triggers/versions.tf | 1 - infra/terraform/test-org/github/README.md | 1 - .../terraform/test-org/test-cleanup/locals.tf | 1 - .../test-org/test-cleanup/outputs.tf | 1 - infra/utils/fbf/README.md | 2 +- 31 files changed, 74 insertions(+), 75 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/issue-template.md b/.github/ISSUE_TEMPLATE/issue-template.md index 7b666487880..d4cb0425399 100644 --- a/.github/ISSUE_TEMPLATE/issue-template.md +++ b/.github/ISSUE_TEMPLATE/issue-template.md @@ -9,7 +9,7 @@ assignees: '' ############################ NOTE ####################### -Dear CFT User! +Dear CFT User! If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://g.co/dev/terraformfoundation) Terraform CFT supports the most recent GCP resources, reflects GCP best practices can be used off-the-shelf to quickly build a repeatable enterprise-ready foundation. diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 7fb739ea434..ae8175594f4 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -1,7 +1,7 @@ name: Release new CLI versions on: push: - branches: + branches: - "master" paths: - "cli/Makefile" @@ -38,7 +38,7 @@ jobs: version: "410.0.0" # used by make release which runs gcloud alpha storage - - name: Install gcloud alpha commands + - name: Install gcloud alpha commands run: gcloud components install alpha - name: Retrieve last released version diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 19d75d4a7a8..4fa3dc19205 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,19 @@ +exclude: | + (?x)^( + config-connector/.*| + dm/.*| + reports/.*| + cli/testdata/.*| + cli/bptest/.* + )$ repos: - repo: https://github.com/renovatebot/pre-commit-hooks rev: 36.40.3 hooks: - id: renovate-config-validator + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace diff --git a/cli/README.md b/cli/README.md index a9118c3665f..85bf7463b87 100644 --- a/cli/README.md +++ b/cli/README.md @@ -44,4 +44,4 @@ After build find binary at bin/cft location ## License -Apache 2.0 - See [LICENSE](LICENSE) for more information. \ No newline at end of file +Apache 2.0 - See [LICENSE](LICENSE) for more information. diff --git a/cli/bin/.gitignore b/cli/bin/.gitignore index c96a04f008e..d6b7ef32c84 100644 --- a/cli/bin/.gitignore +++ b/cli/bin/.gitignore @@ -1,2 +1,2 @@ * -!.gitignore \ No newline at end of file +!.gitignore diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 40b557af4f2..b053b71f2e4 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -85,7 +85,7 @@ message DisplayVariable { // zoneProperty: myZone // gceMachineType: // minCpu: 2 - // minRamGb: + // minRamGb: // Gen: manually-authored GooglePropertyExtension x_google_property = 14; // @gotags: json:"xGoogleProperty,omitempty" yaml:"xGoogleProperty,omitempty" diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 672fbaceace..0748ed5ab15 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -1076,4 +1076,4 @@ "type": "object" } } -} \ No newline at end of file +} diff --git a/cli/docs/scorecard.md b/cli/docs/scorecard.md index 7669f618102..f2046b4679f 100644 --- a/cli/docs/scorecard.md +++ b/cli/docs/scorecard.md @@ -74,16 +74,16 @@ The user guide in rest of this document provides examples for Linux and OS X env You can also use --refresh flag to create or overwrite CAI export files in GCS bucket and perform analysis, within one step. ``` -# Running Cloud Asset Inventory API via Cloud SDK requires a service account and does not support end user credentials. +# Running Cloud Asset Inventory API via Cloud SDK requires a service account and does not support end user credentials. # Configure Application Default Credential to use a service account key if running outside GCP -# The service account needs be created in a Cloud Asset Inventory enabled project, -# with Cloud Asset Viewer role at target project/folder/org, +# The service account needs be created in a Cloud Asset Inventory enabled project, +# with Cloud Asset Viewer role at target project/folder/org, # and Storage Object Viewer role at $CAI_BUCKET_NAME export GOOGLE_APPLICATION_CREDENTIALS=sa_key.json ./cft scorecard --policy-path ./policy-library \ --bucket=$CAI_BUCKET_NAME \ - --refresh + --refresh ``` ### Using a local export @@ -117,7 +117,7 @@ Print a scorecard of your GCP environment, for resources and IAM policies in Clo Usage: cft scorecard [flags] - + Flags: --bucket string GCS bucket name for storing inventory (conflicts with --dir-path or --stdin) diff --git a/cli/report/cmd.go b/cli/report/cmd.go index 23ef8f64e15..9f712e0dc7e 100644 --- a/cli/report/cmd.go +++ b/cli/report/cmd.go @@ -70,7 +70,7 @@ var Cmd = &cobra.Command{ Use: "report", Short: "Generate inventory reports based on CAI outputs in a directory.", Long: `Generate inventory reports for resources in Cloud Asset Inventory (CAI) output files, with reports defined in rego (in '/reports/sample' folder). - + Example: cft report --query-path /reports/sample \ --dir-path \ @@ -100,7 +100,7 @@ var listCmd = &cobra.Command{ Use: "list-available-reports", Short: "List available inventory report queries.", Long: `List available inventory report queries for resources in Cloud Asset Inventory (CAI). - + Example: cft report list-available-reports --query-path /reports/sample `, diff --git a/cli/tests/create-update-test.bats b/cli/tests/create-update-test.bats index 0cacf8b0599..e3992d48cbd 100644 --- a/cli/tests/create-update-test.bats +++ b/cli/tests/create-update-test.bats @@ -73,4 +73,4 @@ function teardown() { run gcloud compute networks subnets list --project "${CLOUD_FOUNDATION_PROJECT_ID}" [[ ! "$output" =~ "cftcli-test-subnetwork-1" ]] [[ ! "$output" =~ "cftcli-test-subnetwork-2" ]] -} \ No newline at end of file +} diff --git a/infra/USAGE.md b/infra/USAGE.md index ec2e4628d9e..401f7cc4486 100644 --- a/infra/USAGE.md +++ b/infra/USAGE.md @@ -6,4 +6,3 @@ fly --target cft login --team-name cft \ --concourse-url https://concourse.infra.cft.tips ``` - diff --git a/infra/blueprint-test/README.md b/infra/blueprint-test/README.md index ee094922344..5682ab44848 100644 --- a/infra/blueprint-test/README.md +++ b/infra/blueprint-test/README.md @@ -9,7 +9,7 @@ Apart from the necessity of including a testing framework as part of our GCP blu Considering the above, our test framework has been developed (details in the following sections) with backward compatibility to allow for current tests to keep functioning. -*Note: If you have a question about the test framework, feel free to ask it on our user group. +*Note: If you have a question about the test framework, feel free to ask it on our user group. Feature requests can also be submitted as Issues.* # 2. Framework Concepts @@ -74,7 +74,7 @@ This section aims at explaining the process of developing a custom integration t ## 3.1 Terraform based blueprints -### 3.1.1 Prepare a test example +### 3.1.1 Prepare a test example The first step in the process is to create an example that leverages a TF module from the blueprint as illustrated in section 2.1. The example creation process consists of two steps: #### 3.1.1.1 Create the example configuration @@ -85,8 +85,8 @@ In this step you will create an example directory under the `examples` directory ```hcl // name for your example module -module "mysql-db" { - // set the source for the module being tested as part of the +module "mysql-db" { + // set the source for the module being tested as part of the // example source = "../../modules/mysql" ... @@ -101,7 +101,7 @@ variable "project_id" { description = "The ID of the project in which resources will be provisioned." type = string } - + variable "db_name" { description = "The name of the SQL Database instance" default = "example-mysql-public" @@ -113,13 +113,13 @@ These variables are now available for access within the `main.tf` file and can b ```hcl // name for your example module -module "mysql-db" { +module "mysql-db" { ... // variables required by the source module random_instance_name = true database_version = "MYSQL_5_6" - - // variable being set from the example module variables configuration. + + // variable being set from the example module variables configuration. project_id = var.project_id ... } @@ -127,17 +127,17 @@ module "mysql-db" { ``` Note: -Variables defined in the example module’s variables (normally variables.tf) configuration can be set 1) from -wrapping modules calling the example module (e.g. fixtures) or 2) using environment variables by prefixing -the environment variable with “TF_VAR”. +Variables defined in the example module’s variables (normally variables.tf) configuration can be set 1) from +wrapping modules calling the example module (e.g. fixtures) or 2) using environment variables by prefixing +the environment variable with “TF_VAR”. E.g. to set the project_id variable (above), setting the value in a “TF_VAR_project_id” environment variable -would automatically populate its value upon execution. This is illustrated the file +would automatically populate its value upon execution. This is illustrated the file `test/setup/outputs.tf` where the `project_id` is being exported as an env variable. ``` #### 3.1.1.2 Output variables for the test -Upon successful execution of your example module, you will most likely need outputs for resources being provisioned to validate and assert in your test. This is done using outputs in Terraform. +Upon successful execution of your example module, you will most likely need outputs for resources being provisioned to validate and assert in your test. This is done using outputs in Terraform. 1. In the `examples/mysql-public` directory create a file `outputs.tf`. The content for the file should be as follows: ```hcl @@ -159,24 +159,24 @@ The entire integration test explained below can be found [here](https://github.c The first step in writing the test is to wire it up with the required packages and methods signatures that the test framework expects as follows: 1. Cd in the `test/integration/mysql-public` directory or create it if it's not present already in the blueprint and the cd into it. -2. Create file in `mysql_public_test.go` with the following content: +2. Create file in `mysql_public_test.go` with the following content: As a good practice use this convention to name your test files: _test.go - + ```go // define test package name package mysql_public - + import ( "fmt" "testing" - + // import the blueprints test framework modules for testing and assertions - "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" "github.com/stretchr/testify/assert" ) - + // name the function as Test* func TestMySqlPublicModule(t *testing.T) { ... @@ -185,9 +185,9 @@ func TestMySqlPublicModule(t *testing.T) { // define and write a custom verifier for this test case call the default verify for confirming no additional changes mySqlT.DefineVerify(func(assert *assert.Assertions) { // perform default verification ensuring Terraform reports no additional changes on an applied blueprint - mySqlT.DefaultVerify(assert) + mySqlT.DefaultVerify(assert) // custom logic for the test continues below - ... + ... }) // call the test function to execute the integration test mySqlT.Test() @@ -211,7 +211,7 @@ op := gcloud.Run(t, fmt.Sprintf("sql instances describe %s --project %s", mySqlT // assert values that are supposed to be equal to the expected values assert.Equal(databaseVersion, op.Get("databaseVersion").String(), "database versions is valid is set to "+databaseVersion) ``` - + 2. Contains ```go @@ -264,7 +264,7 @@ Note: Output values from `test/setup` are automatically loaded as Terraform envi 2. Run one following command(s) that will run all tests by default going through all 4 stages: - `go test` OR - `go test -v` (for verbose output) -3. To run the tests for a specific stage, use the following format/command to run the test & stage: +3. To run the tests for a specific stage, use the following format/command to run the test & stage: - `RUN_STAGE= go test` E.g. to run a test for just the init stage the use the following command: - `RUN_STAGE=init go test` @@ -275,7 +275,7 @@ All blueprints come pre-wired with an auto-discovered test located in the `test/ ```go package test -import ( +import ( // should be imported to enable testing for GO modules "testing" @@ -293,7 +293,7 @@ func TestAll(t *testing.T) { We’ll use the blueprint structure highlighted in section 2.1 for explaining how auto-discovered test execution works. The auto-discovered test can be triggered as follow: -- cd into test/integration and run: +- cd into test/integration and run: - `go test` OR - `go test -v` (for verbose output) @@ -314,12 +314,12 @@ This section shows the execution for auto-discovered tests and the output illust 2. Beginning of the `init` stage ![2](https://user-images.githubusercontent.com/21246369/131234078-674e5e64-18fa-448c-a7ff-0ae87587adec.jpg) - + This illustrates the start of `init` stage of the test execution. At this point TF init and plan is applied on the `mysql-private` example - + 3. Beginning of `apply` stage ![3](https://user-images.githubusercontent.com/21246369/131234092-8c095158-5262-47b2-8137-41d20a78d5d2.jpg) - + This illustrates the execution of the `apply` stage and also shows the simulated FAIL scenario where an output variable is not configured as “sensitive”. At this point, the test will be marked as failed. 4. Beginning of `verify` stage @@ -333,8 +333,8 @@ This section shows the execution for auto-discovered tests and the output illust 5. Beginning of `destroy` stage ![5](https://user-images.githubusercontent.com/21246369/131234147-b0235cc3-9f5f-4c19-892f-1b4fc6cc12f4.jpg) - - This illustrates the execution of the `destroy` stage where `terraform destroy` is executed to teardown all resources provisioned by the example. + + This illustrates the execution of the `destroy` stage where `terraform destroy` is executed to teardown all resources provisioned by the example. Lastly, a status of the complete test run is shown with a tally of all passed and failed tests and eventually showing the overall status of the test run which is FAIL in this case. ## 4.4 Custom tests @@ -342,35 +342,35 @@ Unlike auto-discovered tests, custom tests are written specifically for examples 1. Cd into `test/integration` Instead of running the whole test suite, we will target our custom test by name i.e. `TestMySqlPublicModule` in file `test/integration/mysql-public/mysql_public_test.go` - + 2. Run the one of the following commands for execution: - `go test -run TestMySqlPublicModule ./...` OR - `go test -run TestMySqlPublicModule ./... -v` (for verbose output) In the above commands the test module name is specified with the `-run` parameter. This name can also be in the form of a regular expression as explained in the tip below. The usage of `./…` in the above commands allows for golang to execute tests in subdirectories as well. - + ``` Tip: Targeting Specific Tests - + Apart from running tests by default, specific or all tests can be targeted using RegEx expressions. - + To run all tests regardless if they are custom or auto-discovered, use the following command: `go test -v ./... -p 1 .` - + To run a specific test or a set of tests using a regular expression, use the following command: `go test -run TestAll/*` - will target all tests that are supposed to be invoked as part of the auto-discovery process. `go test -run MySql ./...` - will target all tests that are written for MySql i.e. have ‘MySql’ as part of their test module name. - + Furthermore, to run a specific stage of a test or a set of tests, set the RUN_STAGE environment variable: This command specifically runs only the setup stage for all tests that are auto-discovered `RUN_STAGE=setup go test -run TestAll/* .` ``` - + ### 4.4.1. Custom test stage specific execution -By default, a custom test also goes through 4 stages as auto-discovered tests do. However, depending on the custom test configuration, there can be additional test logic that is executed in one or more stages of the test(s). +By default, a custom test also goes through 4 stages as auto-discovered tests do. However, depending on the custom test configuration, there can be additional test logic that is executed in one or more stages of the test(s). -E.g., in order to run only the `verify` stage for a custom test, run one of the following command: +E.g., in order to run only the `verify` stage for a custom test, run one of the following command: ``` RUN_STAGE=verify go test -run TestMySqlPublicModule ./... @@ -386,7 +386,7 @@ Here, the custom assertion failed since the expected region and zone configured ## 5.1 Advanced Topic ### 5.1.1 Terraform Fixtures -Fixtures can also be used to test similar examples and modules when the only thing changing is the data. The following example illustrates the usage of the `examples/mysql-public` as the source and passing in the data required to execute the test. +Fixtures can also be used to test similar examples and modules when the only thing changing is the data. The following example illustrates the usage of the `examples/mysql-public` as the source and passing in the data required to execute the test. 1. Cd into `test/fixtures` directory 2. Create a directory `mysql-public` and cd into it diff --git a/infra/blueprint-test/examples/krm_blueprints_with_test/examples/vpc-example-custom/README.md b/infra/blueprint-test/examples/krm_blueprints_with_test/examples/vpc-example-custom/README.md index c775a744fad..5d265195539 100644 --- a/infra/blueprint-test/examples/krm_blueprints_with_test/examples/vpc-example-custom/README.md +++ b/infra/blueprint-test/examples/krm_blueprints_with_test/examples/vpc-example-custom/README.md @@ -66,4 +66,3 @@ vpc.yaml compute.cnrm.cloud.google.com/v1beta1 ComputeNetwork netwo ``` kpt live status --output table --poll-until current ``` - diff --git a/infra/blueprint-test/examples/krm_blueprints_with_test/examples/vpc-example/README.md b/infra/blueprint-test/examples/krm_blueprints_with_test/examples/vpc-example/README.md index c775a744fad..5d265195539 100644 --- a/infra/blueprint-test/examples/krm_blueprints_with_test/examples/vpc-example/README.md +++ b/infra/blueprint-test/examples/krm_blueprints_with_test/examples/vpc-example/README.md @@ -66,4 +66,3 @@ vpc.yaml compute.cnrm.cloud.google.com/v1beta1 ComputeNetwork netwo ``` kpt live status --output table --poll-until current ``` - diff --git a/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json b/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json index 9f5dd4e3d9f..2393cd01d4b 100755 --- a/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json +++ b/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json @@ -1 +1 @@ -{"foo":"bar"} \ No newline at end of file +{"foo":"bar"} diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index c8e6d3fc89a..0936397c71a 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -330,7 +330,7 @@ function generate_metadata() { eval "cft blueprint metadata $arg" fi - if [ $? -ne 0 ]; then + if [ $? -ne 0 ]; then echo "Warning! Unable to generate metadata." return 1 fi diff --git a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/lint_docker b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/lint_docker index 105e22293fc..021b520975c 100755 --- a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/lint_docker +++ b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/lint_docker @@ -14,4 +14,3 @@ # limitations under the License. source /usr/local/bin/task_helper_functions.sh && lint_docker - diff --git a/infra/build/developer-tools/build/scripts/test_lint.sh b/infra/build/developer-tools/build/scripts/test_lint.sh index a992b109b4e..d98bfa32395 100755 --- a/infra/build/developer-tools/build/scripts/test_lint.sh +++ b/infra/build/developer-tools/build/scripts/test_lint.sh @@ -51,7 +51,7 @@ tests=( check_python check_tflint check_terraform - check_metadata + check_metadata ) # parse args diff --git a/infra/module-swapper/Readme.md b/infra/module-swapper/Readme.md index d578731bf4f..dc80dd75b09 100644 --- a/infra/module-swapper/Readme.md +++ b/infra/module-swapper/Readme.md @@ -16,4 +16,4 @@ Usage of module-swapper: Path to a submodules if any that maybe referenced. Defaults to working dir/modules (default "modules") -workdir string Absolute path to root module where examples should be swapped. Defaults to working directory -``` \ No newline at end of file +``` diff --git a/infra/terraform/dev-org/dev-project-cleanup/backend.tf b/infra/terraform/dev-org/dev-project-cleanup/backend.tf index 88d944223c9..fa9233c8776 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/backend.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/backend.tf @@ -20,4 +20,3 @@ terraform { prefix = "state/test-cleanup" } } - diff --git a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf index d0ba7093d5e..b36819258a9 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf @@ -33,4 +33,3 @@ module "projects_cleanup" { target_excluded_labels = local.exclude_labels target_folder_id = local.cleanup_folder } - diff --git a/infra/terraform/dev-org/dev-project-cleanup/locals.tf b/infra/terraform/dev-org/dev-project-cleanup/locals.tf index da34e198b3e..32e59fcbfb2 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/locals.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/locals.tf @@ -22,4 +22,3 @@ locals { region = "us-central1" app_location = "us-central" } - diff --git a/infra/terraform/dev-org/dev-project-cleanup/outputs.tf b/infra/terraform/dev-org/dev-project-cleanup/outputs.tf index d77f03cdfaf..8892f5f348b 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/outputs.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/outputs.tf @@ -21,4 +21,3 @@ output "project_id" { output "excluded_labels" { value = local.exclude_labels } - diff --git a/infra/terraform/test-org/ci-project/outputs.tf b/infra/terraform/test-org/ci-project/outputs.tf index 264a34bf1e1..85ba995e5ee 100644 --- a/infra/terraform/test-org/ci-project/outputs.tf +++ b/infra/terraform/test-org/ci-project/outputs.tf @@ -13,4 +13,3 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf index 25377d7e4b9..520cbb3e799 100644 --- a/infra/terraform/test-org/ci-project/versions.tf +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -29,4 +29,3 @@ terraform { } } } - diff --git a/infra/terraform/test-org/ci-triggers/backend.tf b/infra/terraform/test-org/ci-triggers/backend.tf index 4c8305e6dcd..813fc324898 100644 --- a/infra/terraform/test-org/ci-triggers/backend.tf +++ b/infra/terraform/test-org/ci-triggers/backend.tf @@ -44,4 +44,3 @@ data "terraform_remote_state" "sfb-bootstrap" { prefix = "terraform/bootstrap/state" } } - diff --git a/infra/terraform/test-org/ci-triggers/versions.tf b/infra/terraform/test-org/ci-triggers/versions.tf index 391ff5a0445..22c484816f2 100644 --- a/infra/terraform/test-org/ci-triggers/versions.tf +++ b/infra/terraform/test-org/ci-triggers/versions.tf @@ -20,4 +20,3 @@ terraform { google-beta = ">= 2.18, < 5.0" } } - diff --git a/infra/terraform/test-org/github/README.md b/infra/terraform/test-org/github/README.md index b6b24308d96..647376127c8 100644 --- a/infra/terraform/test-org/github/README.md +++ b/infra/terraform/test-org/github/README.md @@ -27,4 +27,3 @@ No inputs. | protected\_repos | n/a | - diff --git a/infra/terraform/test-org/test-cleanup/locals.tf b/infra/terraform/test-org/test-cleanup/locals.tf index 8b97c3fb522..3e7055b3053 100644 --- a/infra/terraform/test-org/test-cleanup/locals.tf +++ b/infra/terraform/test-org/test-cleanup/locals.tf @@ -23,4 +23,3 @@ locals { region = "us-central1" app_location = "us-central" } - diff --git a/infra/terraform/test-org/test-cleanup/outputs.tf b/infra/terraform/test-org/test-cleanup/outputs.tf index 896737a3902..66e8d8183e0 100644 --- a/infra/terraform/test-org/test-cleanup/outputs.tf +++ b/infra/terraform/test-org/test-cleanup/outputs.tf @@ -21,4 +21,3 @@ output "project_id" { output "excluded_labels" { value = local.exclude_labels } - diff --git a/infra/utils/fbf/README.md b/infra/utils/fbf/README.md index 425af0fa787..bdfc5b46b99 100644 --- a/infra/utils/fbf/README.md +++ b/infra/utils/fbf/README.md @@ -16,4 +16,4 @@ Usage of fbf: Time to start computing flakes in form MM-DD-YYYY -verbose Display detailed table with flaky build IDs -``` \ No newline at end of file +``` From 3aba0450289677c030dac2b62b3a363f84208037 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 7 Sep 2023 15:39:51 -0500 Subject: [PATCH 0573/1371] chore: Update Tools to 1.15.3 (#1806) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 7c1361c3e23..21cbb3d769d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.5.6 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 444.0.0 +CLOUD_SDK_VERSION := 445.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -28,20 +28,20 @@ PACKER_VERSION := 1.4.4 TERRAGRUNT_VERSION := 0.25.3 KUSTOMIZE_VERSION := 3.6.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.43 +KPT_VERSION := 1.0.0-beta.44 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.4 +CFT_CLI_VERSION := 1.2.5 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.8 TFLINT_VERSION := 0.41.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.18 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.2.0 +MODULE_SWAPPER_VERSION := 0.2.1 # For developer-tools-krm GOLANGCI_VERSION := 1.54.1 @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From bd168f526ae0c153c9b36cc47267ad0674d05a52 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 8 Sep 2023 12:21:43 -0500 Subject: [PATCH 0574/1371] chore: Update Tools to 1.15.4 (#1822) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 21cbb3d769d..d2c92ed786d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.5.6 +TERRAFORM_VERSION := 1.5.7 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 445.0.0 @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 5f350959aa03b4f73116cbfa0e13a73ebf359ca3 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 8 Sep 2023 12:15:57 -0700 Subject: [PATCH 0575/1371] fix: update bpt go modules (#1820) --- infra/blueprint-test/go.mod | 93 ++++++++-------- infra/blueprint-test/go.sum | 207 +++++++++++++++++------------------- 2 files changed, 146 insertions(+), 154 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index bf8b60ea07c..c3a1a1628a9 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,61 +4,61 @@ go 1.20 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.43.11 + github.com/gruntwork-io/terratest v0.43.13 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.12.0 github.com/stretchr/testify v1.8.4 - github.com/tidwall/gjson v1.15.0 + github.com/tidwall/gjson v1.16.0 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.12.0 - sigs.k8s.io/kustomize/kyaml v0.14.2 + sigs.k8s.io/kustomize/kyaml v0.14.3 ) require ( - cloud.google.com/go v0.110.2 // indirect - cloud.google.com/go/compute v1.19.3 // indirect + cloud.google.com/go v0.110.7 // indirect + cloud.google.com/go/compute v1.23.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.0.1 // indirect - cloud.google.com/go/storage v1.30.1 // indirect + cloud.google.com/go/iam v1.1.2 // indirect + cloud.google.com/go/storage v1.33.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect - github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/aws/aws-sdk-go v1.44.271 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/aws/aws-sdk-go v1.45.5 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/boombuler/barcode v1.0.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.10.2 // indirect - github.com/go-errors/errors v1.4.2 // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/go-errors/errors v1.5.0 // indirect github.com/go-logr/logr v1.2.4 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // 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.3 // indirect + github.com/go-openapi/swag v0.22.4 // indirect github.com/go-sql-driver/mysql v1.7.1 // 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.6.9 // indirect + github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/s2a-go v0.1.4 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.9.1 // indirect - github.com/gruntwork-io/go-commons v0.16.2 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.3.1 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/gruntwork-io/go-commons v0.17.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.1 // indirect + github.com/hashicorp/go-getter v1.7.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/hcl/v2 v2.16.2 // indirect - github.com/hashicorp/terraform-json v0.16.0 // indirect - github.com/imdario/mergo v0.3.15 // indirect - github.com/jinzhu/copier v0.3.5 // indirect + github.com/hashicorp/hcl/v2 v2.18.0 // indirect + github.com/hashicorp/terraform-json v0.17.1 // indirect + github.com/imdario/mergo v0.3.16 // indirect + github.com/jinzhu/copier v0.4.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 - github.com/klauspost/compress v1.16.5 // indirect + github.com/klauspost/compress v1.16.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-zglob v0.0.4 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -74,38 +74,39 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - github.com/tmccombs/hcl2json v0.5.0 // indirect + github.com/tmccombs/hcl2json v0.6.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect - github.com/urfave/cli/v2 v2.25.3 // indirect + github.com/urfave/cli/v2 v2.25.7 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - github.com/zclconf/go-cty v1.13.2 // indirect + github.com/zclconf/go-cty v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.9.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/term v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect + golang.org/x/crypto v0.13.0 // indirect + golang.org/x/net v0.15.0 // indirect + golang.org/x/oauth2 v0.12.0 // indirect + golang.org/x/sync v0.3.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.12.0 // indirect + golang.org/x/text v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.124.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e // indirect - google.golang.org/grpc v1.55.0 // indirect + google.golang.org/api v0.138.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/grpc v1.58.0 // 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/api v0.27.2 // indirect - k8s.io/apimachinery v0.27.2 // indirect - k8s.io/client-go v0.27.2 // indirect + k8s.io/api v0.28.1 // indirect + k8s.io/apimachinery v0.28.1 // indirect + k8s.io/client-go v0.28.1 // indirect k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 // indirect - k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect + k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // 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/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 5a32203e1a3..5933d4f5647 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= -cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= +cloud.google.com/go v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= +cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -68,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds= -cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -109,8 +109,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.0.1 h1:lyeCAU6jpnVNrE9zGQkTl3WgNgK/X+uWwaw0kynZJMU= -cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= +cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= +cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -171,8 +171,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storage v1.33.0 h1:PVrDOkIC8qQVa1P3SXGpQvfuJhN2LHOoyZvWs8D2X5M= +cloud.google.com/go/storage v1.33.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -193,18 +193,17 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= -github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.271 h1:aa+Nu2JcnFmW1TLIz/67SS7KPq1I1Adl4RmExSMjGVo= -github.com/aws/aws-sdk-go v1.44.271/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.45.5 h1:bxilnhv9FngUgdPNJmOIv2bk+2sP0dpqX3e4olhWcGM= +github.com/aws/aws-sdk-go v1.45.5/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -228,9 +227,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 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.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= -github.com/emicklei/go-restful/v3 v3.10.2/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= @@ -242,25 +240,26 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= -github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= +github.com/go-errors/errors v1.5.0/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= 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-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +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 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= 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-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -301,8 +300,8 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 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.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= +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= @@ -344,16 +343,17 @@ github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLe 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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= 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/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= 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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -363,22 +363,22 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.9.1 h1:DpTpJqzZ3NvX9zqjhIuI1oVzYZMvboZe+3LoeEIJjHM= -github.com/googleapis/gax-go/v2 v2.9.1/go.mod h1:4FG3gMrVZlyMp5itSYKMU9z/lBE7+SbnUOvzH2HqbEY= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gruntwork-io/go-commons v0.16.2 h1:EmkS8344ggtQopFq6YJ5Nh3ohBF03AB7cxrgDiJ7C3Q= -github.com/gruntwork-io/go-commons v0.16.2/go.mod h1:/nnLMhO4HpItt43K+8ACM66g67iMy3oo2nnwq59n3wg= -github.com/gruntwork-io/terratest v0.43.11 h1:k3U5lZjiNa38rqcTx/dus8cCaJY7qxShGIuGLeLfj/s= -github.com/gruntwork-io/terratest v0.43.11/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= +github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= +github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= +github.com/gruntwork-io/terratest v0.43.13 h1:/d0UeDj/FJM66VRP/3JA4mTw0z7BOm9ntHYfrTjIpY8= +github.com/gruntwork-io/terratest v0.43.13/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= -github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.2 h1:uJDtyXwEfalmp1PqdxuhZqrNkUyClZAhVeZYTArbqkg= +github.com/hashicorp/go-getter v1.7.2/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -387,16 +387,16 @@ github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mO github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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/hcl/v2 v2.16.2 h1:mpkHZh/Tv+xet3sy3F9Ld4FyI2tUpWe9x3XtPx9f1a0= -github.com/hashicorp/hcl/v2 v2.16.2/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= -github.com/hashicorp/terraform-json v0.16.0 h1:UKkeWRWb23do5LNAFlh/K3N0ymn1qTOO8c+85Albo3s= -github.com/hashicorp/terraform-json v0.16.0/go.mod h1:v0Ufk9jJnk6tcIZvScHvetlKfiNTC+WS21mnXIlc0B0= +github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= +github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= +github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQHgyRwf3RkyA= +github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= -github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= +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/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= +github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= 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= @@ -410,12 +410,11 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= -github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= 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.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -446,8 +445,8 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= -github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -465,7 +464,6 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= 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.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= @@ -481,8 +479,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o 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/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.15.0 h1:5n/pM+v3r5ujuNl4YLZLsQ+UE5jlkLVm7jMzT5Mpolw= -github.com/tidwall/gjson v1.15.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg= +github.com/tidwall/gjson v1.16.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -490,16 +488,13 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tmccombs/hcl2json v0.5.0 h1:cT2sXStOzKL06c8ZTf9vh+0N8GKGzV7+9RUaY5/iUP8= -github.com/tmccombs/hcl2json v0.5.0/go.mod h1:B0ZpBthAKbQur6yZRKrtaqDmYLCvgnwHOBApE0faCpU= +github.com/tmccombs/hcl2json v0.6.0 h1:Qc5NL4NQbpNnw8w8HQcA3GsVHvQDJXJwVTUxf2AEhOs= +github.com/tmccombs/hcl2json v0.6.0/go.mod h1:QNirG4H64ZvlFsy9werRxXlWNTDR1GhWzXkjqPILHwo= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli/v2 v2.25.3 h1:VJkt6wvEBOoSjPFQvOkv6iWIrsJyCrKGtCtxXWwmGeY= -github.com/urfave/cli/v2 v2.25.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= @@ -510,8 +505,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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= -github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= -github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= +github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= +github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -528,9 +523,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -604,8 +598,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -618,8 +610,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= 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= @@ -645,8 +637,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -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.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= +golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= 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= @@ -661,7 +653,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ 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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +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/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= @@ -725,13 +718,13 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.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.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= 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= @@ -743,8 +736,8 @@ 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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +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/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= @@ -804,7 +797,7 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= 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= @@ -862,16 +855,17 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -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.138.0 h1:K/tVp05MxNVbHShRw9m7e9VJGdagNeTdMzqPH7AUqr0= +google.golang.org/api v0.138.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= 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= @@ -933,7 +927,6 @@ google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= @@ -974,12 +967,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e h1:Ao9GzfUMPH3zjVfzXG5rlWlk+Q8MXWKwWpwVQE1MXfw= -google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e h1:AZX1ra8YbFMSb7+1pI8S9v4rrgRR7jU1FmuFSSjTVcQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e h1:NumxXLPfHSndr3wBBdeKiVHjGVFzi9RX2HwwQke94iY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= 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= @@ -1015,8 +1008,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= +google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -1037,7 +1030,6 @@ google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= @@ -1050,7 +1042,6 @@ gopkg.in/yaml.v2 v2.2.8/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= @@ -1060,26 +1051,26 @@ 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.27.2 h1:+H17AJpUMvl+clT+BPnKf0E3ksMAzoBBg7CntpSuADo= -k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4= -k8s.io/apimachinery v0.27.2 h1:vBjGaKKieaIreI+oQwELalVG4d8f3YAMNpWLzDXkxeg= -k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= -k8s.io/client-go v0.27.2 h1:vDLSeuYvCHKeoQRhCXjxXO45nHVv2Ip4Fe0MfioMrhE= -k8s.io/client-go v0.27.2/go.mod h1:tY0gVmUsHrAmjzHX9zs7eCjxcBsf8IiNe7KQ52biTcQ= +k8s.io/api v0.28.1 h1:i+0O8k2NPBCPYaMB+uCkseEbawEt/eFaiRqUx8aB108= +k8s.io/api v0.28.1/go.mod h1:uBYwID+66wiL28Kn2tBjBYQdEU0Xk0z5qF8bIBqk/Dg= +k8s.io/apimachinery v0.28.1 h1:EJD40og3GizBSV3mkIoXQBsws32okPOy+MkRyzh6nPY= +k8s.io/apimachinery v0.28.1/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw= +k8s.io/client-go v0.28.1 h1:pRhMzB8HyLfVwpngWKE8hDcXRqifh1ga2Z/PU9SXVK8= +k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE= 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-20230525220651-2546d827e515 h1:OmK1d0WrkD3IPfkskvroRykOulHVHf0s0ZIFRjyt+UI= -k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ= -k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= -k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk= +k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/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= 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/kyaml v0.14.2 h1:9WSwztbzwGszG1bZTziQUmVMrJccnyrLb5ZMKpJGvXw= -sigs.k8s.io/kustomize/kyaml v0.14.2/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= -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/kustomize/kyaml v0.14.3 h1:WpabVAKZe2YEp/irTSHwD6bfjwZnTtSDewd2BVJGMZs= +sigs.k8s.io/kustomize/kyaml v0.14.3/go.mod h1:npvh9epWysfQ689Rtt/U+dpOJDTBn8kUnF1O6VzvmZA= +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= From 204f0cac7d0659fabcddd7942218dd2dc3cabc1e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 8 Sep 2023 23:25:50 +0200 Subject: [PATCH 0576/1371] chore(deps): update module google.golang.org/api to v0.139.0 (#1825) --- infra/utils/fbf/go.mod | 6 ++-- infra/utils/fbf/go.sum | 65 ++++-------------------------------------- 2 files changed, 9 insertions(+), 62 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 7d917b80baa..b3b98fd82e8 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.138.0 + google.golang.org/api v0.139.0 ) require ( @@ -16,7 +16,7 @@ require ( github.com/fatih/color v1.15.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/s2a-go v0.1.5 // indirect + github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect @@ -33,7 +33,7 @@ require ( golang.org/x/term v0.11.0 // indirect golang.org/x/text v0.12.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.57.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 2d530d583c2..42a1e9e076e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,34 +1,23 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= 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/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -37,17 +26,14 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -58,8 +44,8 @@ github.com/google/go-cmp v0.5.0/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.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/s2a-go v0.1.5 h1:8IYp3w9nysqv3JH+NJgXJzGbDHzLOTj43BmSkp+O7qg= -github.com/google/s2a-go v0.1.5/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= 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= @@ -67,7 +53,6 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvki github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/jedib0t/go-pretty/v6 v6.4.7 h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE= github.com/jedib0t/go-pretty/v6 v6.4.7/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -85,83 +70,55 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -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.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 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/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= 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-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= golang.org/x/sys v0.11.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.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -169,33 +126,25 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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= -google.golang.org/api v0.138.0 h1:K/tVp05MxNVbHShRw9m7e9VJGdagNeTdMzqPH7AUqr0= -google.golang.org/api v0.138.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= +google.golang.org/api v0.139.0 h1:A1TrCPgMmOiYu0AiNkvQIpIx+D8blHTDcJ5EogkP7LI= +google.golang.org/api v0.139.0/go.mod h1:CVagp6Eekz9CjGZ718Z+sloknzkDJE7Vc1Ckj9+viBk= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 h1:wukfNtZmZUurLN/atp2hiIeTKn7QJWIQdHzqmsOnAOk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -213,8 +162,6 @@ google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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= From c4106fec089d7a0c66537878126e0ed0206b1cd2 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 8 Sep 2023 15:59:35 -0700 Subject: [PATCH 0577/1371] chore(master): release blueprint-test 0.8.1 (#1823) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a4464194a55..455042f105a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.8.0", + "infra/blueprint-test": "0.8.1", "infra/module-swapper": "0.2.1" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 72780807bcb..6e517807f77 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.8.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.8.0...infra/blueprint-test/v0.8.1) (2023-09-08) + + +### Bug Fixes + +* update bpt go modules ([#1820](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1820)) ([5f35095](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5f350959aa03b4f73116cbfa0e13a73ebf359ca3)) + ## [0.8.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.7.0...infra/blueprint-test/v0.8.0) (2023-08-17) From 04a07985bce3cdceb0bb7bfe06df670f85e076c9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 11 Sep 2023 08:52:06 -0700 Subject: [PATCH 0578/1371] chore: update-tooling kpt url (#1828) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ca2af467c53..1a0e43f2831 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -9,7 +9,7 @@ on: env: TERRAFORM_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" CLOUD_SDK_URL: "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz" - KPT_URL: "https://api.github.com/repos/GoogleContainerTools/kpt/releases" + KPT_URL: "https://api.github.com/repos/kptdev/kpt/releases" CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" MODULE_SWAPPER_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" KUBECTL_MINOR: "1.26" From c72544ff36c9e72886924943e74779f27e1551ae Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 11 Sep 2023 09:22:33 -0700 Subject: [PATCH 0579/1371] fix: adds blueprint metadata path to errors (#1821) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 14 +- .../int-test/goldens/golden-metadata.yaml | 416 ++++++++++-------- cli/bpmetadata/schema/generate.go | 1 + cli/go.mod | 6 +- cli/go.sum | 102 +---- 6 files changed, 240 insertions(+), 301 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index ffbaa15b614..1c6a16d3dc8 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.5 +VERSION=v1.2.6 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index ab43f0571d7..c7f6f96ca6c 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -8,7 +8,7 @@ import ( "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/util" - goyaml "github.com/goccy/go-yaml" + "github.com/itchyny/json2yaml" "github.com/spf13/cobra" "github.com/spf13/viper" "google.golang.org/protobuf/encoding/protojson" @@ -121,7 +121,8 @@ func generate(cmd *cobra.Command, args []string) error { err = generateMetadataForBpPath(modPath) if err != nil { - errors = append(errors, err.Error()) + e := fmt.Sprintf("path: %s\n %s", modPath, err.Error()) + errors = append(errors, e) } } @@ -419,14 +420,13 @@ func WriteMetadata(obj *BlueprintMetadata, bpPath, fileName string) error { return err } - // convert json bytes to yaml bytes for before writing to disk - // using go-yaml package here since that preserves the order of fields - yBytes, err := goyaml.JSONToYAML(jBytes) - if err != nil { + input := strings.NewReader(string(jBytes)) + var output strings.Builder + if err := json2yaml.Convert(&output, input); err != nil { return err } - return os.WriteFile(path.Join(bpPath, fileName), yBytes, 0644) + return os.WriteFile(path.Join(bpPath, fileName), []byte(output.String()), 0644) } func UnmarshalMetadata(bpPath, fileName string) (*BlueprintMetadata, error) { diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml index 9f257bec7c4..5abd4a21311 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -17,199 +17,237 @@ spec: description: {} content: subBlueprints: - - name: simple_bucket - location: modules/simple_bucket + - name: simple_bucket + location: modules/simple_bucket examples: - - name: multiple_buckets - location: examples/multiple_buckets - - name: simple_bucket - location: examples/simple_bucket + - name: multiple_buckets + location: examples/multiple_buckets + - name: simple_bucket + location: examples/simple_bucket interfaces: variables: - - name: admins - description: IAM-style members who will be granted roles/storage.objectAdmin on all buckets. - varType: list(string) - defaultValue: [] - - name: bucket_admins - description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket admins. - varType: map(string) - defaultValue: {} - - name: bucket_creators - description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket creators. - varType: map(string) - defaultValue: {} - - name: bucket_hmac_key_admins - description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket HMAC Key admins. - varType: map(string) - defaultValue: {} - - name: bucket_lifecycle_rules - description: Additional lifecycle_rules for specific buckets. Map of lowercase unprefixed name => list of lifecycle rules to configure. - varType: "map(set(object({\n # Object with keys:\n # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass.\n # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule.\n action = map(string)\n\n # Object with keys:\n # - age - (Optional) Minimum age of an object in days to satisfy this condition.\n # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition.\n # - with_state - (Optional) Match to live and/or archived objects. Supported values include: \"LIVE\", \"ARCHIVED\", \"ANY\".\n # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY.\n # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition.\n # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition.\n # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true.\n # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object.\n # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent.\n condition = map(string)\n })))" - defaultValue: {} - - name: bucket_policy_only - description: Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean - varType: map(bool) - defaultValue: {} - - name: bucket_storage_admins - description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket storage admins. - varType: map(string) - defaultValue: {} - - name: bucket_viewers - description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket viewers. - varType: map(string) - defaultValue: {} - - name: cors - description: "Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors" - varType: set(any) - defaultValue: [] - - name: creators - description: IAM-style members who will be granted roles/storage.objectCreators on all buckets. - varType: list(string) - defaultValue: [] - - name: custom_placement_config - description: "Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config" - varType: any - defaultValue: {} - - name: default_event_based_hold - description: Enable event based hold to new objects added to specific bucket. Defaults to false. Map of lowercase unprefixed name => boolean - varType: map(bool) - defaultValue: {} - - name: encryption_key_names - description: Optional map of lowercase unprefixed name => string, empty strings are ignored. - varType: map(string) - defaultValue: {} - - name: folders - description: Map of lowercase unprefixed name => list of top level folder objects. - varType: map(list(string)) - defaultValue: {} - - name: force_destroy - description: Optional map of lowercase unprefixed name => boolean, defaults to false. - varType: map(bool) - defaultValue: {} - - name: hmac_key_admins - description: IAM-style members who will be granted roles/storage.hmacKeyAdmin on all buckets. - varType: list(string) - defaultValue: [] - - name: hmac_service_accounts - description: List of HMAC service accounts to grant access to GCS. - varType: map(string) - defaultValue: {} - - name: labels - description: Labels to be attached to the buckets - varType: map(string) - defaultValue: {} - - name: lifecycle_rules - description: "List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string." - varType: "set(object({\n # Object with keys:\n # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass.\n # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule.\n action = map(string)\n\n # Object with keys:\n # - age - (Optional) Minimum age of an object in days to satisfy this condition.\n # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition.\n # - with_state - (Optional) Match to live and/or archived objects. Supported values include: \"LIVE\", \"ARCHIVED\", \"ANY\".\n # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY.\n # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition.\n # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition.\n # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition.\n # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition.\n # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true.\n # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object.\n # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent.\n condition = map(string)\n }))" - defaultValue: [] - - name: location - description: Bucket location. - varType: string - defaultValue: EU - - name: logging - description: "Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging" - varType: any - defaultValue: {} - - name: names - description: Bucket name suffixes. - varType: list(string) - defaultValue: null - required: true - - name: prefix - description: Prefix used to generate the bucket name. - varType: string - defaultValue: "" - - name: project_id - description: Bucket project id. - varType: string - defaultValue: null - required: true - - name: public_access_prevention - description: Prevents public access to a bucket. Acceptable values are inherited or enforced. If inherited, the bucket uses public access prevention, only if the bucket is subject to the public access prevention organization policy constraint. - varType: string - defaultValue: inherited - - name: randomize_suffix - description: Adds an identical, but randomized 4-character suffix to all bucket names - varType: bool - defaultValue: false - - name: retention_policy - description: "Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy" - varType: any - defaultValue: {} - - name: set_admin_roles - description: Grant roles/storage.objectAdmin role to admins and bucket_admins. - varType: bool - defaultValue: false - - name: set_creator_roles - description: Grant roles/storage.objectCreator role to creators and bucket_creators. - varType: bool - defaultValue: false - - name: set_hmac_access - description: Set S3 compatible access to GCS. - varType: bool - defaultValue: false - - name: set_hmac_key_admin_roles - description: Grant roles/storage.hmacKeyAdmin role to hmac_key_admins and bucket_hmac_key_admins. - varType: bool - defaultValue: false - - name: set_storage_admin_roles - description: Grant roles/storage.admin role to storage_admins and bucket_storage_admins. - varType: bool - defaultValue: false - - name: set_viewer_roles - description: Grant roles/storage.objectViewer role to viewers and bucket_viewers. - varType: bool - defaultValue: false - - name: storage_admins - description: IAM-style members who will be granted roles/storage.admin on all buckets. - varType: list(string) - defaultValue: [] - - name: storage_class - description: Bucket storage class. - varType: string - defaultValue: STANDARD - - name: versioning - description: Optional map of lowercase unprefixed name => boolean, defaults to false. - varType: map(bool) - defaultValue: {} - - name: viewers - description: IAM-style members who will be granted roles/storage.objectViewer on all buckets. - varType: list(string) - defaultValue: [] - - name: website - description: "Map of website values. Supported attributes: main_page_suffix, not_found_page" - varType: map(any) - defaultValue: {} + - name: admins + description: IAM-style members who will be granted roles/storage.objectAdmin on all buckets. + varType: list(string) + defaultValue: [] + - name: bucket_admins + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket admins. + varType: map(string) + defaultValue: {} + - name: bucket_creators + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket creators. + varType: map(string) + defaultValue: {} + - name: bucket_hmac_key_admins + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket HMAC Key admins. + varType: map(string) + defaultValue: {} + - name: bucket_lifecycle_rules + description: Additional lifecycle_rules for specific buckets. Map of lowercase unprefixed name => list of lifecycle rules to configure. + varType: |- + map(set(object({ + # Object with keys: + # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. + # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. + action = map(string) + + # Object with keys: + # - age - (Optional) Minimum age of an object in days to satisfy this condition. + # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. + # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". + # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. + # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. + # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. + # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. + # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. + # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. + condition = map(string) + }))) + defaultValue: {} + - name: bucket_policy_only + description: Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean + varType: map(bool) + defaultValue: {} + - name: bucket_storage_admins + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket storage admins. + varType: map(string) + defaultValue: {} + - name: bucket_viewers + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket viewers. + varType: map(string) + defaultValue: {} + - name: cors + description: "Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors" + varType: set(any) + defaultValue: [] + - name: creators + description: IAM-style members who will be granted roles/storage.objectCreators on all buckets. + varType: list(string) + defaultValue: [] + - name: custom_placement_config + description: Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config + varType: any + defaultValue: {} + - name: default_event_based_hold + description: Enable event based hold to new objects added to specific bucket. Defaults to false. Map of lowercase unprefixed name => boolean + varType: map(bool) + defaultValue: {} + - name: encryption_key_names + description: Optional map of lowercase unprefixed name => string, empty strings are ignored. + varType: map(string) + defaultValue: {} + - name: folders + description: Map of lowercase unprefixed name => list of top level folder objects. + varType: map(list(string)) + defaultValue: {} + - name: force_destroy + description: Optional map of lowercase unprefixed name => boolean, defaults to false. + varType: map(bool) + defaultValue: {} + - name: hmac_key_admins + description: IAM-style members who will be granted roles/storage.hmacKeyAdmin on all buckets. + varType: list(string) + defaultValue: [] + - name: hmac_service_accounts + description: List of HMAC service accounts to grant access to GCS. + varType: map(string) + defaultValue: {} + - name: labels + description: Labels to be attached to the buckets + varType: map(string) + defaultValue: {} + - name: lifecycle_rules + description: List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string. + varType: |- + set(object({ + # Object with keys: + # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. + # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. + action = map(string) + + # Object with keys: + # - age - (Optional) Minimum age of an object in days to satisfy this condition. + # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. + # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". + # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. + # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition. + # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition. + # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. + # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. + # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. + # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. + # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. + condition = map(string) + })) + defaultValue: [] + - name: location + description: Bucket location. + varType: string + defaultValue: EU + - name: logging + description: Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging + varType: any + defaultValue: {} + - name: names + description: Bucket name suffixes. + varType: list(string) + defaultValue: null + required: true + - name: prefix + description: Prefix used to generate the bucket name. + varType: string + defaultValue: "" + - name: project_id + description: Bucket project id. + varType: string + defaultValue: null + required: true + - name: public_access_prevention + description: Prevents public access to a bucket. Acceptable values are inherited or enforced. If inherited, the bucket uses public access prevention, only if the bucket is subject to the public access prevention organization policy constraint. + varType: string + defaultValue: inherited + - name: randomize_suffix + description: Adds an identical, but randomized 4-character suffix to all bucket names + varType: bool + defaultValue: false + - name: retention_policy + description: Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy + varType: any + defaultValue: {} + - name: set_admin_roles + description: Grant roles/storage.objectAdmin role to admins and bucket_admins. + varType: bool + defaultValue: false + - name: set_creator_roles + description: Grant roles/storage.objectCreator role to creators and bucket_creators. + varType: bool + defaultValue: false + - name: set_hmac_access + description: Set S3 compatible access to GCS. + varType: bool + defaultValue: false + - name: set_hmac_key_admin_roles + description: Grant roles/storage.hmacKeyAdmin role to hmac_key_admins and bucket_hmac_key_admins. + varType: bool + defaultValue: false + - name: set_storage_admin_roles + description: Grant roles/storage.admin role to storage_admins and bucket_storage_admins. + varType: bool + defaultValue: false + - name: set_viewer_roles + description: Grant roles/storage.objectViewer role to viewers and bucket_viewers. + varType: bool + defaultValue: false + - name: storage_admins + description: IAM-style members who will be granted roles/storage.admin on all buckets. + varType: list(string) + defaultValue: [] + - name: storage_class + description: Bucket storage class. + varType: string + defaultValue: STANDARD + - name: versioning + description: Optional map of lowercase unprefixed name => boolean, defaults to false. + varType: map(bool) + defaultValue: {} + - name: viewers + description: IAM-style members who will be granted roles/storage.objectViewer on all buckets. + varType: list(string) + defaultValue: [] + - name: website + description: "Map of website values. Supported attributes: main_page_suffix, not_found_page" + varType: map(any) + defaultValue: {} outputs: - - name: bucket - description: Bucket resource (for single use). - - name: buckets - description: Bucket resources as list. - - name: buckets_map - description: Bucket resources by name. - - name: hmac_keys - description: List of HMAC keys. - - name: name - description: Bucket name (for single use). - - name: names - description: Bucket names. - - name: names_list - description: List of bucket names. - - name: url - description: Bucket URL (for single use). - - name: urls - description: Bucket URLs. - - name: urls_list - description: List of bucket URLs. + - name: bucket + description: Bucket resource (for single use). + - name: buckets + description: Bucket resources as list. + - name: buckets_map + description: Bucket resources by name. + - name: hmac_keys + description: List of HMAC keys. + - name: name + description: Bucket name (for single use). + - name: names + description: Bucket names. + - name: names_list + description: List of bucket names. + - name: url + description: Bucket URL (for single use). + - name: urls + description: Bucket URLs. + - name: urls_list + description: List of bucket URLs. requirements: roles: - - level: Project - roles: - - roles/storage.admin - - roles/iam.serviceAccountUser + - level: Project + roles: + - roles/storage.admin + - roles/iam.serviceAccountUser services: - - iam.googleapis.com - - storage-api.googleapis.com - - cloudresourcemanager.googleapis.com - - compute.googleapis.com - - serviceusage.googleapis.com + - iam.googleapis.com + - storage-api.googleapis.com + - cloudresourcemanager.googleapis.com + - compute.googleapis.com + - serviceusage.googleapis.com diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go index 65a74ab7994..6d69ea94b4f 100644 --- a/cli/bpmetadata/schema/generate.go +++ b/cli/bpmetadata/schema/generate.go @@ -22,6 +22,7 @@ func generateSchemaFile(o, wdPath string) error { if err != nil { return err } + sData = append(sData, []byte("\n")...) // check if the provided output path is relative if !path.IsAbs(o) { diff --git a/cli/go.mod b/cli/go.mod index e01805e3c37..589df2ce86e 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -11,17 +11,16 @@ require ( github.com/fatih/color v1.15.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.8.1 - github.com/goccy/go-yaml v1.11.0 github.com/golang/protobuf v1.5.3 github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 github.com/google/go-cmp v0.5.9 github.com/google/go-github/v53 v53.0.0 - github.com/google/go-github/v54 v54.0.0 github.com/hashicorp/hcl/v2 v2.18.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac github.com/invopop/jsonschema v0.7.0 + github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/manifoldco/promptui v0.9.0 @@ -40,7 +39,6 @@ require ( google.golang.org/api v0.138.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 - gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.3.0 ) @@ -102,7 +100,6 @@ require ( github.com/google/gnostic v0.6.9 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda // indirect github.com/google/s2a-go v0.1.5 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect @@ -190,6 +187,7 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.27.2 // indirect k8s.io/apiextensions-apiserver v0.27.2 // indirect k8s.io/apimachinery v0.27.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 26732f1bdb3..79cbe9cb907 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -17,12 +17,8 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= -cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= cloud.google.com/go v0.110.6 h1:8uYAkj3YHTP/1iwReuHPxLSbdcyc+dSBbzFMrVwDR6Q= cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go/accesscontextmanager v1.8.0 h1:cCPSztLzUx8OHoyRMcUOy4R/vGLYDk/7gZ5V5J/bbP0= -cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= cloud.google.com/go/accesscontextmanager v1.8.1 h1:WIAt9lW9AXtqw/bnvrEUaE8VG/7bAAeMzRCBGMkc4+w= cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= cloud.google.com/go/asset v1.14.1 h1:vlHdznX70eYW4V1y1PxocvF6tEwxJTTarwIGwOhFF3U= @@ -33,8 +29,6 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds= -cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= @@ -42,20 +36,12 @@ cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGB cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94= -cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y= cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/longrunning v0.5.0 h1:DK8BH0+hS+DIvc9a2TPnteUievsTCH4ORMAASSb7JcQ= -cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= -cloud.google.com/go/orgpolicy v1.11.0 h1:1B0K72FucdwRWLRIuG9ExgPj/fkJyRAmvrpoI4vFUMM= -cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= cloud.google.com/go/orgpolicy v1.11.1 h1:I/7dHICQkNwym9erHqmlb50LRU588NPCvkfIY0Bx9jI= cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= -cloud.google.com/go/osconfig v1.12.0 h1:+ENCeRbwYODEPhaFt7yBELUln129bX25JZSf8fpkgEI= -cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= cloud.google.com/go/osconfig v1.12.1 h1:dgyEHdfqML6cUW6/MkihNdTVc0INQst0qSE8Ou1ub9c= cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -68,8 +54,6 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= cloud.google.com/go/storage v1.32.0 h1:5w6DxEGOnktmJHarxAOUywxVW9lbNWIzlzzUltG/3+o= cloud.google.com/go/storage v1.32.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= @@ -77,15 +61,10 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.7.0 h1:iRROly3NUxu/eskGvxk0TFm//GNdBJ3rnLqw/As8XbA= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.7.0/go.mod h1:8S915KxCJh7it4gn/J9o11FWD+F8IGhCGPITgFapzg8= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.0 h1:qir5eatHmGiaQ7CobiEjdzNWeSZ9ytQixsDKdr0gvuA= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.0/go.mod h1:KQlrvFQnkJHfAzJWKSC+JTGrXIBLI4UH8gLSh1EfoXM= -github.com/GoogleCloudPlatform/config-validator v0.0.0-20230815185018-1130fc57a588 h1:2OdoAD/+vVxfjcMy/Mm+B/n3kPO94VbzZ6xhf51OlbA= -github.com/GoogleCloudPlatform/config-validator v0.0.0-20230815185018-1130fc57a588/go.mod h1:B8Uh4ssEtdnp1Pnoj5ZlneoPGiTR6hkqowZ88DCc+CY= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= -github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= @@ -93,8 +72,6 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek= -github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs= github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -109,7 +86,6 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFI github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= @@ -130,8 +106,6 @@ github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx2 github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= -github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= -github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -209,8 +183,6 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmS github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= -github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= github.com/go-git/go-git/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= github.com/go-git/go-git/v5 v5.8.1/go.mod h1:FHFuoD6yGz5OSKEBK+aWN9Oah0q54Jxl0abmj6GnqAo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -255,9 +227,6 @@ github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/validate v0.21.0 h1:+Wqk39yKOhfpLqNLEC0/eViCkzM5FVXVqrvt526+wcI= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= -github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= @@ -289,8 +258,6 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/goccy/go-yaml v1.11.0 h1:n7Z+zx8S9f9KgzG6KtQKf+kwqXZlLNR2F6018Dgau54= -github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -329,8 +296,6 @@ 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/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a h1:AWZzzFrqyjYlRloN6edwTLTUbKxf5flLXNuTBDm3Ews= -github.com/gomarkdown/markdown v0.0.0-20230322041520-c84983bdbf2a/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 h1:uK3X/2mt4tbSGoHvbLBHUny7CKiuwUip3MArtukol4E= github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -357,9 +322,6 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v53 v53.0.0 h1:T1RyHbSnpHYnoF0ZYKiIPSgPtuJ8G6vgc0MKodXsQDQ= github.com/google/go-github/v53 v53.0.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= -github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= -github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= -github.com/google/go-github/v54 v54.0.0/go.mod h1:Sw1LXWHhXRZtzJ9LI5fyJg9wbQzYvFhW8W5P2yaAQ7s= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -381,10 +343,7 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= -github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.5 h1:8IYp3w9nysqv3JH+NJgXJzGbDHzLOTj43BmSkp+O7qg= github.com/google/s2a-go v0.1.5/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -395,8 +354,6 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvki github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= 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/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= -github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= @@ -417,23 +374,16 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY= -github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4= github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd h1:1uPcotqoL4TjcGKlgIe7OFSRplf7BMVtUjekwmCrvuM= -github.com/hashicorp/terraform-config-inspect v0.0.0-20230614215431-f32df32a01cd/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 h1:SzE5lAYh9XXR3b1q3p3uBNqEY+syiiLZiFCIvr/JTsg= github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= -github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= @@ -443,12 +393,12 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= +github.com/itchyny/json2yaml v0.1.4 h1:/pErVOXGG5iTyXHi/QKR4y3uzhLjGTEmmJIy97YT+k8= +github.com/itchyny/json2yaml v0.1.4/go.mod h1:6iudhBZdarpjLFRNj+clWLAkGft+9uCcjAZYXUH9eGI= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= -github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jedib0t/go-pretty/v6 v6.4.7 h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE= github.com/jedib0t/go-pretty/v6 v6.4.7/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -479,7 +429,6 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -530,8 +479,6 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.54.0 h1:mGEsK+R5ZTMV8fzzbNzmYDGbTmY30wmRCIHmtm2VqWs= -github.com/open-policy-agent/opa v0.54.0/go.mod h1:d8I8jWygKGi4+T4H07qrbeCdH1ITLsEfT0M+bsvxWw0= github.com/open-policy-agent/opa v0.55.0 h1:s7Vm4ph6zDqqP/KzvUSw9fsKVsm9lhbTZhYGxxTK7mo= github.com/open-policy-agent/opa v0.55.0/go.mod h1:2Vh8fj/bXCqSwGMbBiHGrw+O8yrho6T/fdaHt5ROmaQ= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= @@ -577,8 +524,6 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= -github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -665,36 +610,20 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0 h1:yt2NKzK7Vyo6h0+X8BA4FpreZQTlVEIarnsBP/H5mzs= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0/go.mod h1:+ARmXlUlc51J7sZeCBkBJNdHGySrdOzgzxp6VWRWM1U= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY7+onl4qN1vl0xW/V/v6OBZ0vVdH+esuJgvmM= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0/go.mod h1:XiYsayHc36K3EByOO6nbAXnAWbrUxdjUROCEeeROOH8= -go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= -go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s= go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 h1:/fXHZHGvro6MVqV34fJzDhi7sHGpX3Ej/Qjmfn003ho= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 h1:cbsD4cUcviQGXdw8+bo5x2wazq10SKz8hEbtCRPcU78= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0/go.mod h1:JgXSGah17croqhJfhByOLVY719k1emAXC8MVhCIJlRs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 h1:ap+y8RXX3Mu9apKVtOkM6WSFESLM8K3wNQyOU8sWHcc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 h1:TVQp/bboR4mhZSav+MdgXB8FaRho1RC8UwVn3T0vjVc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0/go.mod h1:I33vtIe0sR96wfrUcilIzLoA3mLHhRmz9S9Te0S3gDo= -go.opentelemetry.io/otel/metric v0.34.0 h1:MCPoQxcg/26EuuJwpYN1mZTeCYAUGx8ABxfW07YkjP8= -go.opentelemetry.io/otel/metric v0.34.0/go.mod h1:ZFuI4yQGNCupurTXCwkeD/zHBt+C2bR7bw5JqUm/AP8= go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo= go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= -go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= -go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= -go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= -go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -720,8 +649,6 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -734,8 +661,6 @@ 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-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME= -golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -806,8 +731,6 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -821,8 +744,6 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= -golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -898,8 +819,6 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -909,8 +828,6 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -927,8 +844,6 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 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/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -991,7 +906,6 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1020,8 +934,6 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.129.0 h1:2XbdjjNfFPXQyufzQVwPf1RRnHH8Den2pfNE2jw7L8w= -google.golang.org/api v0.129.0/go.mod h1:dFjiXlanKwWE3612X97llhsoI36FAoIiRj3aTl5b/zE= google.golang.org/api v0.138.0 h1:K/tVp05MxNVbHShRw9m7e9VJGdagNeTdMzqPH7AUqr0= google.golang.org/api v0.138.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -1071,16 +983,10 @@ google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 h1:wukfNtZmZUurLN/atp2hiIeTKn7QJWIQdHzqmsOnAOk= google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1104,8 +1010,6 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= -google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1172,8 +1076,6 @@ 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-20230525220651-2546d827e515 h1:OmK1d0WrkD3IPfkskvroRykOulHVHf0s0ZIFRjyt+UI= k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ= -k8s.io/kubectl v0.26.4 h1:A0Oa0u/po4KxXnXsNCOwLojAe9cQR3TJNJabEIf7U1w= -k8s.io/kubectl v0.26.4/go.mod h1:cWtp/+I4p+h5En3s2zO1zCry9v3/6h37EQ2tF3jNRnM= k8s.io/kubectl v0.27.2 h1:sSBM2j94MHBFRWfHIWtEXWCicViQzZsb177rNsKBhZg= k8s.io/kubectl v0.27.2/go.mod h1:GCOODtxPcrjh+EC611MqREkU8RjYBh10ldQCQ6zpFKw= k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= From baf6073016edfd03682dee5715daa53390ab3612 Mon Sep 17 00:00:00 2001 From: Sampath Kumar Date: Mon, 11 Sep 2023 23:33:39 +0200 Subject: [PATCH 0580/1371] feat: Onboarding new repositories (UP 12.1 and UP 12.2) (#1793) Co-authored-by: Awais Malik Co-authored-by: Andrew Peabody --- infra/terraform/test-org/ci-triggers/locals.tf | 2 ++ infra/terraform/test-org/org/locals.tf | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 7d614fde38c..dc38ea5247f 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -43,6 +43,8 @@ locals { "genai-doc-summarization" = "terraform-genai-doc-summarization" "secured-notebook" = "notebooks-blueprint-security" "sdw-onprem-ingest" = "terraform-google-secured-data-warehouse-onprem-ingest" + "pubsub-golang-app" = "terraform-pubsub-integration-golang" + "pubsub-java-app" = "terraform-pubsub-integration-java" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index a204f7d7286..3ca8acf7add 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -752,5 +752,21 @@ locals { owners = ["anaik91", "imrannayer"] topics = local.common_topics.db }, + { + name = "terraform-pubsub-integration-golang" + org = "GoogleCloudPlatform" + short_name = "pubsub-golang-app" + owners = ["shabirmean", "Mukamik"] + groups = ["dee-platform-ops", local.jss_common_group] + enable_periodic = true + }, + { + name = "terraform-pubsub-integration-java" + org = "GoogleCloudPlatform" + short_name = "pubsub-java-app" + owners = ["shabirmean", "Mukamik"] + groups = ["dee-platform-ops", local.jss_common_group] + enable_periodic = true + }, ] } From 1308ca82637e8f143fc91ffc5a356e7eb7df7268 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 11 Sep 2023 15:03:19 -0700 Subject: [PATCH 0581/1371] chore: update lint template and renovate exclude (#1829) --- infra/terraform/modules/workflow_files/lint.yaml.tftpl | 2 +- infra/terraform/test-org/github/resources/renovate.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/modules/workflow_files/lint.yaml.tftpl b/infra/terraform/modules/workflow_files/lint.yaml.tftpl index beb48263f75..c388e1ffa22 100644 --- a/infra/terraform/modules/workflow_files/lint.yaml.tftpl +++ b/infra/terraform/modules/workflow_files/lint.yaml.tftpl @@ -31,7 +31,7 @@ jobs: name: 'lint' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@v3' + - uses: 'actions/checkout@v4' - id: variables run: | MAKEFILE=$(find . -name Makefile -print -quit) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index b68ca8fbbaa..024a716ead7 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -7,7 +7,7 @@ ":rebaseStalePrs" ], "minimumReleaseAge": "7 days", - "ignorePaths": [], + "ignorePaths": [".github/workflows/lint.yaml", ".github/workflows/stale.yml"], "labels": ["dependencies"], "vulnerabilityAlerts": { "labels": ["type:security"], From 97bebee79194a879d484b0032b75a6c50528f22a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 11 Sep 2023 15:33:34 -0700 Subject: [PATCH 0582/1371] chore: update renovate.json (#1830) --- infra/terraform/test-org/github/resources/renovate.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 024a716ead7..96668148b9a 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -17,11 +17,11 @@ "packageRules": [ { "matchFileNames": ["examples/**", "test/**", ".github/**"], - "extends": [":semanticCommitTypeAll(chore)"] + "commitMessagePrefix": "chore(deps):" }, { "matchFileNames": ["*", "modules/**"], - "extends": [":semanticCommitTypeAll(fix)"] + "commitMessagePrefix": "fix(deps):" }, { "matchFileNames": ["*", "modules/**"], @@ -41,7 +41,7 @@ "postUpdateOptions": ["gomodTidy"] }, { - "matchPackageNames": ["google", "google-beta"], + "matchDepNames": ["google", "google-beta"], "groupName": "Terraform Google Provider" } ], From 4d62f96ef6b2b7f24964caaa4e3882a3f7a3744c Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 11 Sep 2023 16:52:50 -0700 Subject: [PATCH 0583/1371] chore: add any distro errata pkgs (#1824) --- infra/build/developer-tools/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index d50e6130990..bcf1acde23b 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -30,7 +30,8 @@ ENV PATH /usr/local/google-cloud-sdk/bin:$PATH # That argument is needed for check_documentation in task_helper_functions.sh # rsync is needed for check_documentation in task_helper_functions.sh # install gcompat, because protoc needs a real glibc or compatible layer -RUN apk add --no-cache \ +RUN apk upgrade --no-cache && \ + apk add --no-cache \ bash \ parallel \ coreutils \ From bc1b991dd31f168539ed2628cce12b752c87445a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 11 Sep 2023 17:34:14 -0700 Subject: [PATCH 0584/1371] chore: rm cloud_sdk backup (#1826) --- infra/build/developer-tools/build/install_cloud_sdk.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/build/developer-tools/build/install_cloud_sdk.sh b/infra/build/developer-tools/build/install_cloud_sdk.sh index f4fbab737ad..2a7e6b9ed6b 100755 --- a/infra/build/developer-tools/build/install_cloud_sdk.sh +++ b/infra/build/developer-tools/build/install_cloud_sdk.sh @@ -36,5 +36,7 @@ gcloud config set enable_feature_flags false # https://cloud.google.com/docs/terraform/policy-validation/quickstart gcloud components install alpha beta terraform-tools gke-gcloud-auth-plugin --quiet +rm -rf /usr/local/google-cloud-sdk/.install/.backup + gcloud --version gsutil version -l From d3ed6c9ce50cc2ef8d8a364736ac49bcb23b30bd Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 12 Sep 2023 09:31:45 -0700 Subject: [PATCH 0585/1371] chore: updating GH user for lanreo (#1831) --- infra/terraform/test-org/org/locals.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 3ca8acf7add..5616ce5ad06 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -96,7 +96,7 @@ locals { name = "terraform-google-secured-data-warehouse" org = "GoogleCloudPlatform" description = "Deploys a secured BigQuery data warehouse" - owners = ["lanreogunmola"] + owners = ["lanre-OG"] topics = join(",", [local.common_topics.da, local.common_topics.e2e]) lint_env = { SHELLCHECK_OPTS = "-e SC2154 -e SC2171 -e SC2086" @@ -736,7 +736,7 @@ locals { short_name = "sdw-onprem-ingest" org = "GoogleCloudPlatform" description = "Secured Data Warehouse blueprint variant for ingesting encrypted data from on-prem sources" - owners = ["lanreogunmola"] + owners = ["lanre-OG"] topics = join(",", [local.common_topics.da, local.common_topics.security, local.common_topics.e2e]) }, { From 8cc11e777781337bc838824c603532690d99f682 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 12 Sep 2023 10:11:10 -0700 Subject: [PATCH 0586/1371] chore: update update-tooling (#1832) --- .github/workflows/update-tooling.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 1a0e43f2831..f4c70048334 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -105,3 +105,4 @@ jobs: labels: automated pr reviewers: bharathkkb, apeabody branch: create-pull-request/patch-tools-version + base: master From 629638d784ff6ff3aecd455e62931eaf31e031cf Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 12 Sep 2023 12:20:26 -0500 Subject: [PATCH 0587/1371] chore: Update Tools to 1.15.5 (#1827) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d2c92ed786d..c80721c99f8 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -17,7 +17,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh TERRAFORM_VERSION := 1.5.7 TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 445.0.0 +CLOUD_SDK_VERSION := 446.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -34,7 +34,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.5 +CFT_CLI_VERSION := 1.2.6 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.8 TFLINT_VERSION := 0.41.0 @@ -53,7 +53,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 1d91b0eb858aa446321b82ae3d9accc4576754fc Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 12 Sep 2023 10:42:40 -0700 Subject: [PATCH 0588/1371] chore: dev-tools 1.16 update kustomize, terragrunt, tflint, remove terraform-validator (#1819) Co-authored-by: Awais Malik --- .github/workflows/update-tooling.yml | 10 +++++-- infra/build/Makefile | 13 +++++---- infra/build/developer-tools/Dockerfile | 7 ----- .../build/install_terraform_validator.sh | 28 ------------------- .../build/scripts/task_helper_functions.sh | 2 +- 5 files changed, 16 insertions(+), 44 deletions(-) delete mode 100755 infra/build/developer-tools/build/install_terraform_validator.sh diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index f4c70048334..ba0be0d8743 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -17,17 +17,20 @@ env: GATOR_MINOR: "3.13" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" + KUSTOMIZE_URL: "https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest" + TERRAGRUNT_URL: "https://api.github.com/repos/gruntwork-io/terragrunt/releases/latest" + TFLINT_URL: "https://api.github.com/repos/terraform-linters/tflint/releases/latest" jobs: update-tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - name: Update Tools run: | PR_UPDATE_BODY="" newline=$'\n' - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER" "KUSTOMIZE" "TERRAGRUNT" "TFLINT") for tool in ${tools[@]} do @@ -53,6 +56,9 @@ jobs: elif [ "$tool" == "GATOR" ]; then # get latest GATOR_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${GATOR_MINOR}'"))][0].tag_name' | tr -d "v") + elif [ "$tool" == "KUSTOMIZE" ]; then + # get latest KUSTOMIZE release + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("kustomize"))][0].tag_name' | tr -d "kustomize/v") else LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output .tag_name | tr -d "v") fi diff --git a/infra/build/Makefile b/infra/build/Makefile index c80721c99f8..f002bd54229 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -15,7 +15,6 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.5.7 -TERRAFORM_VALIDATOR_VERSION := 0.13.0 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 446.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -25,8 +24,10 @@ BATS_SUPPORT_VERSION := 0.3.0 BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 -TERRAGRUNT_VERSION := 0.25.3 -KUSTOMIZE_VERSION := 3.6.1 +# Updated by Update Tooling Workflow +TERRAGRUNT_VERSION := 0.50.14 +# Updated by Update Tooling Workflow +KUSTOMIZE_VERSION := 5.1.1 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.44 PROTOC_VERSION := 23.4 @@ -37,7 +38,8 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 CFT_CLI_VERSION := 1.2.6 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.8 -TFLINT_VERSION := 0.41.0 +# Updated by Update Tooling Workflow +TFLINT_VERSION := 0.48.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.18 # Updated by Update Tooling Workflow @@ -53,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -70,7 +72,6 @@ build-image-developer-tools: --build-arg CLOUD_SDK_VERSION=${CLOUD_SDK_VERSION} \ --build-arg GSUITE_PROVIDER_VERSION=${GSUITE_PROVIDER_VERSION} \ --build-arg TERRAFORM_VERSION=${TERRAFORM_VERSION} \ - --build-arg TERRAFORM_VALIDATOR_VERSION=${TERRAFORM_VALIDATOR_VERSION} \ --build-arg TERRAFORM_DOCS_VERSION=${TERRAFORM_DOCS_VERSION} \ --build-arg BATS_VERSION=${BATS_VERSION} \ --build-arg BATS_SUPPORT_VERSION=${BATS_SUPPORT_VERSION} \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index bcf1acde23b..036a66f57d3 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -72,7 +72,6 @@ RUN /build/install_cloud_sdk.sh ${CLOUD_SDK_VERSION} # Optimized to minimize layers ARG GSUITE_PROVIDER_VERSION -ARG TERRAFORM_VALIDATOR_VERSION ARG TERRAFORM_DOCS_VERSION ARG BATS_VERSION ARG BATS_SUPPORT_VERSION @@ -90,7 +89,6 @@ RUN /build/install_shellcheck.sh && \ /build/install_hadolint.sh && \ /build/install_addlicense.sh && \ /build/install_gsuite_terraform_provider.sh ${GSUITE_PROVIDER_VERSION} && \ - /build/install_terraform_validator.sh ${TERRAFORM_VALIDATOR_VERSION} && \ /build/install_terraform_docs.sh ${TERRAFORM_DOCS_VERSION} && \ /build/install_bats.sh ${BATS_VERSION} ${BATS_SUPPORT_VERSION} ${BATS_ASSERT_VERSION} ${BATS_MOCK_VERSION} && \ /build/install_terragrunt.sh ${TERRAGRUNT_VERSION} && \ @@ -155,10 +153,6 @@ ADD ./build/home/.tflint.module.hcl /root/tflint/.tflint.module.hcl ENV TF_PLUGIN_CACHE_DIR /workspace/test/integration/tmp/.terraform RUN mkdir -p ${TF_PLUGIN_CACHE_DIR} -# Set TF Validator temporary plan dir -ENV TF_VALIDATOR_TMP_PLAN_DIR /workspace/test/integration/tmp/tfvt/ -RUN mkdir -p ${TF_VALIDATOR_TMP_PLAN_DIR} - # Add GO_PATH TO PATH ENV GO_PATH="/root/go" ENV PATH=$GO_PATH/bin:$PATH @@ -166,7 +160,6 @@ ENV PATH=$GO_PATH/bin:$PATH WORKDIR $WORKSPACE RUN terraform --version && \ terraform-docs --version && \ - terraform-validator version && \ gcloud --version && \ ruby --version && \ bundle --version && \ diff --git a/infra/build/developer-tools/build/install_terraform_validator.sh b/infra/build/developer-tools/build/install_terraform_validator.sh deleted file mode 100755 index fac07620234..00000000000 --- a/infra/build/developer-tools/build/install_terraform_validator.sh +++ /dev/null @@ -1,28 +0,0 @@ -#! /bin/bash -# Copyright 2019 Google LLC -# -# 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. - -set -e -set -u - -cd /build - -TERRAFORM_VALIDATOR_VERSION=$1 - -gsutil cp gs://terraform-validator/releases/v${TERRAFORM_VALIDATOR_VERSION}/terraform-validator_linux_amd64-${TERRAFORM_VALIDATOR_VERSION}.tar.gz . -tar -xzvf terraform-validator_linux_amd64-${TERRAFORM_VALIDATOR_VERSION}.tar.gz - -install -o 0 -g 0 -m 0755 terraform-validator /usr/bin/ -rm terraform-validator_linux_amd64-${TERRAFORM_VALIDATOR_VERSION}.tar.gz -rm THIRD_PARTY_NOTICES.zip diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 0936397c71a..d436b5f94d7 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -697,7 +697,7 @@ run_terraform_validator() { terraform plan -input=false -out "$tmp_plan/plan.tfplan" || exit 1 terraform show -json "$tmp_plan/plan.tfplan" > "$tmp_plan/plan.json" || exit 1 - terraform-validator validate "$tmp_plan/plan.json" --policy-path="$policy_file_path" --project="$project" || exit 1 + gcloud beta terraform vet "$tmp_plan/plan.json" --policy-library="$policy_file_path" --project="$project" || exit 1 cd "$base_dir" || exit else From 7a9610cd7b51c53f6f89e07bd30b98b9256d8f7e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 12 Sep 2023 21:53:14 +0200 Subject: [PATCH 0589/1371] chore(deps): update cft/developer-tools docker tag to v1.16 (#1835) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 1c6a16d3dc8..9d82f37c491 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.15 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd From 8e3929e7682f0f96f881193ae6182c8d314fe7fa Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 14 Sep 2023 10:37:49 -0700 Subject: [PATCH 0590/1371] chore: fix kustomize url update-tooling (#1837) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ba0be0d8743..075a3e7ce6b 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -17,7 +17,7 @@ env: GATOR_MINOR: "3.13" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" - KUSTOMIZE_URL: "https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest" + KUSTOMIZE_URL: "https://api.github.com/repos/kubernetes-sigs/kustomize/releases" TERRAGRUNT_URL: "https://api.github.com/repos/gruntwork-io/terragrunt/releases/latest" TFLINT_URL: "https://api.github.com/repos/terraform-linters/tflint/releases/latest" From 3ab9f532bfe42a2386dee75fa517e3cd266cb977 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 14 Sep 2023 12:58:01 -0500 Subject: [PATCH 0591/1371] chore: Update Tools to 1.16.1 (#1836) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f002bd54229..74e48b55d38 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.5.7 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 446.0.0 +CLOUD_SDK_VERSION := 446.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.50.14 +TERRAGRUNT_VERSION := 0.50.16 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.1.1 # Updated by Update Tooling Workflow @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.2.6 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.26.8 +KUBECTL_VERSION := 1.26.9 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.48.0 TINKEY_VERSION := 1.7.0 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From af79c57f599f43eb77451561a58d03c44e3b4891 Mon Sep 17 00:00:00 2001 From: Umesh Kumhar Date: Tue, 19 Sep 2023 00:41:55 +0530 Subject: [PATCH 0592/1371] feat: add backup-dr module (#1840) Co-authored-by: Awais Malik --- infra/terraform/test-org/ci-triggers/outputs.tf | 4 ++-- infra/terraform/test-org/org/github.tf | 4 +++- infra/terraform/test-org/org/locals.tf | 7 +++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/outputs.tf b/infra/terraform/test-org/ci-triggers/outputs.tf index b354bb26b46..46dd7f610fb 100644 --- a/infra/terraform/test-org/ci-triggers/outputs.tf +++ b/infra/terraform/test-org/ci-triggers/outputs.tf @@ -19,9 +19,9 @@ output "repo_folder" { } output "int_triggers" { - value = google_cloudbuild_trigger.int_trigger.* + value = google_cloudbuild_trigger.int_trigger[*] } output "int_periodic_triggers" { - value = google_cloudbuild_trigger.periodic_int_trigger.* + value = google_cloudbuild_trigger.periodic_int_trigger[*] } diff --git a/infra/terraform/test-org/org/github.tf b/infra/terraform/test-org/org/github.tf index 5cc181127ad..e5c10761025 100644 --- a/infra/terraform/test-org/org/github.tf +++ b/infra/terraform/test-org/org/github.tf @@ -32,7 +32,9 @@ locals { variable "temp_allow_invalid_owners" { type = list(string) description = "Googlers added as owners on TF blueprint repos but are not part of the GCP or TGM orgs yet." - default = [] + default = [ + "dulacp", + ] } data "github_organization" "tgm" { diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 5616ce5ad06..ff9247571cf 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -768,5 +768,12 @@ locals { groups = ["dee-platform-ops", local.jss_common_group] enable_periodic = true }, + { + name = "terraform-google-backup-dr" + org = "GoogleCloudPlatform" + short_name = "backup-dr" + description = "Terraform module for Google BackupDR components" + owners = ["umeshkumhar"] + } ] } From 46805a0a00ad00e8afb50fde59ce5d623c20a0d3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 19 Sep 2023 19:10:36 +0200 Subject: [PATCH 0593/1371] chore(deps): update module google.golang.org/api to v0.140.0 (#1841) --- infra/utils/fbf/go.mod | 18 +++++++++--------- infra/utils/fbf/go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index b3b98fd82e8..2f14d12be18 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.139.0 + google.golang.org/api v0.140.0 ) require ( @@ -17,7 +17,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -26,14 +26,14 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.12.0 // indirect - golang.org/x/net v0.14.0 // indirect - golang.org/x/oauth2 v0.11.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/term v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/crypto v0.13.0 // indirect + golang.org/x/net v0.15.0 // indirect + golang.org/x/oauth2 v0.12.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.12.0 // indirect + golang.org/x/text v0.13.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 // indirect google.golang.org/grpc v1.57.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 42a1e9e076e..2170063ebf3 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -47,8 +47,8 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= 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/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= @@ -83,8 +83,8 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -96,11 +96,11 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= -golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= +golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -112,23 +112,23 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.139.0 h1:A1TrCPgMmOiYu0AiNkvQIpIx+D8blHTDcJ5EogkP7LI= -google.golang.org/api v0.139.0/go.mod h1:CVagp6Eekz9CjGZ718Z+sloknzkDJE7Vc1Ckj9+viBk= +google.golang.org/api v0.140.0 h1:CaXNdYOH5oQQI7l6iKTHHiMTdxZca4/02hRg2U8c2hM= +google.golang.org/api v0.140.0/go.mod h1:aGbCiFgtwb2P6badchFbSBUurV6oR5d50Af4iNJtDdI= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -138,8 +138,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 h1:o4LtQxebKIJ4vkzyhtD2rfUNZ20Zf0ik5YVP5E7G7VE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From e6ba5c20340325fc2f39edbf80901d49c1730a3b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 19 Sep 2023 19:18:40 +0200 Subject: [PATCH 0594/1371] chore(deps): update module google.golang.org/api to v0.141.0 (#1843) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 2f14d12be18..b2bb2771d5f 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.140.0 + google.golang.org/api v0.141.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 2170063ebf3..cbfecd5372b 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -127,8 +127,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.140.0 h1:CaXNdYOH5oQQI7l6iKTHHiMTdxZca4/02hRg2U8c2hM= -google.golang.org/api v0.140.0/go.mod h1:aGbCiFgtwb2P6badchFbSBUurV6oR5d50Af4iNJtDdI= +google.golang.org/api v0.141.0 h1:Df6vfMgDoIM6ss0m7H4MPwFwY87WNXHfBIda/Bmfl4E= +google.golang.org/api v0.141.0/go.mod h1:iZqLkdPlXKyG0b90eu6KxVSE4D/ccRF2e/doKD2CnQQ= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= From 786b642a15fdfb6efc970859f75c359fc2d74db5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 19 Sep 2023 20:17:38 +0200 Subject: [PATCH 0595/1371] chore(deps): update module github.com/go-git/go-git/v5 to v5.9.0 (#1842) --- infra/module-swapper/go.mod | 17 +++++++------ infra/module-swapper/go.sum | 50 ++++++++++++++++++------------------- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 23628a6b3a2..5523f6f0d9d 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -3,19 +3,20 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swap go 1.20 require ( - github.com/go-git/go-git/v5 v5.8.1 + github.com/go-git/go-git/v5 v5.9.0 github.com/pmezard/go-difflib v1.0.0 ) require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/cloudflare/circl v1.3.3 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.4.1 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect @@ -23,10 +24,10 @@ require ( github.com/sergi/go-diff v1.3.1 // indirect github.com/skeema/knownhosts v1.2.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.11.0 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/crypto v0.13.0 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.15.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/tools v0.13.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 11cf4883baa..9b30f854783 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -3,8 +3,8 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs= -github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -12,21 +12,22 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= 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/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= -github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= -github.com/go-git/go-git/v5 v5.8.1/go.mod h1:FHFuoD6yGz5OSKEBK+aWN9Oah0q54Jxl0abmj6GnqAo= +github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY= +github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= @@ -35,22 +36,20 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= 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/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= 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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -68,12 +67,12 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -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.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -81,12 +80,12 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -100,14 +99,14 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -115,18 +114,17 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From b462d3c7dbe249bc0fc26d12e9facc2ab5cbe891 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 19 Sep 2023 20:30:14 +0200 Subject: [PATCH 0596/1371] chore(deps): update github/codeql-action action to v2.21.8 (#1844) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a638de0d21a..d359fe754a0 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@00e563ead9f72a8461b24876bee2d0c2e8bd2ee8 # v2.21.5 + uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8 with: sarif_file: results.sarif From fd8ae98ff305fa6a058e6d06587be254509b9107 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 19 Sep 2023 11:44:30 -0700 Subject: [PATCH 0597/1371] chore: hold GO at 1.20 aligned to dev-tools (#1846) --- .github/renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/renovate.json b/.github/renovate.json index 9cde58604b9..db5362e3b92 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -15,6 +15,7 @@ "separateMajorMinor": false, "ignorePaths": ["config-connector/**"], "additionalBranchPrefix": "{{parentDir}}-", + "constraints": {"go": "1.20"}, "packageRules": [ { "matchFileNames": [".github/**"], From 8066c35c5b73f231fb44305578dd060dc913f041 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 20 Sep 2023 10:10:45 -0700 Subject: [PATCH 0598/1371] chore: update bpt dev-tools (#1847) --- .github/renovate.json | 9 +++++++++ infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index db5362e3b92..064eb208fa0 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -56,6 +56,15 @@ "datasourceTemplate": "docker", "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", "depNameTemplate": "cft/developer-tools" + }, + { + "fileMatch": ["(^|/)build/(int|lint)\\.cloudbuild\\.yaml$"], + "matchStrings": [ + " _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '(?.*?)'\\n" + ], + "datasourceTemplate": "docker", + "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", + "depNameTemplate": "cft/developer-tools" } ] } diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 4f4ee6a8b08..bb8fe089e57 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -27,7 +27,7 @@ steps: dir: 'infra/blueprint-test' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.12' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.16' options: env: - 'TF_VAR_org_id=$_ORG_ID' From 4e00ab29fbd4c9b3d5449acdb7b0b6159a569433 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 20 Sep 2023 10:21:45 -0700 Subject: [PATCH 0599/1371] chore: keep layers clean during build (#1838) --- infra/build/Makefile | 2 +- .../build/install_asmcli.sh | 5 +++- .../build/install_gator.sh | 7 +++-- .../developer-tools-krm/build/install_kind.sh | 7 +++-- .../developer-tools-krm/build/install_opa.sh | 7 +++-- .../developer-tools/build/install_bats.sh | 26 +++++++++---------- .../developer-tools/build/install_cft_cli.sh | 11 +++++--- .../build/install_cloud_sdk.sh | 2 +- .../install_gsuite_terraform_provider.sh | 12 +++++---- .../developer-tools/build/install_hadolint.sh | 7 +++-- .../developer-tools/build/install_kpt.sh | 12 +++++---- .../developer-tools/build/install_kubectl.sh | 7 +++-- .../build/install_kustomize.sh | 9 ++++--- .../developer-tools/build/install_protoc.sh | 8 +++--- .../build/install_shellcheck.sh | 8 +++--- .../build/install_terraform.sh | 9 ++++--- .../build/install_terraform_docs.sh | 9 ++++--- .../build/install_terragrunt.sh | 7 +++-- .../developer-tools/build/install_tflint.sh | 11 +++++--- .../developer-tools/build/install_tinkey.sh | 15 +++++------ 20 files changed, 112 insertions(+), 69 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 74e48b55d38..a59e588703f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-krm/build/install_asmcli.sh b/infra/build/developer-tools-krm/build/install_asmcli.sh index 837cd8d1f0e..4a366651b3d 100755 --- a/infra/build/developer-tools-krm/build/install_asmcli.sh +++ b/infra/build/developer-tools-krm/build/install_asmcli.sh @@ -16,9 +16,12 @@ set -e set -u -cd /build +mkdir -p /build/install_asmcli +cd /build/install_asmcli ASMCLI_VERSION=$1 curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_${ASMCLI_VERSION} > asmcli install -o 0 -g 0 -m 0755 asmcli /usr/local/bin/asmcli + +rm -rf /build/install_asmcli diff --git a/infra/build/developer-tools-krm/build/install_gator.sh b/infra/build/developer-tools-krm/build/install_gator.sh index 5cf6255af5a..dc8b9fe0d69 100755 --- a/infra/build/developer-tools-krm/build/install_gator.sh +++ b/infra/build/developer-tools-krm/build/install_gator.sh @@ -16,10 +16,13 @@ set -e set -u -cd /build +mkdir -p /build/install_gator +cd /build/install_gator GATOR_VERSION=$1 -wget -q https://github.com/open-policy-agent/gatekeeper/releases/download/v${GATOR_VERSION}/gator-v${GATOR_VERSION}-linux-amd64.tar.gz +wget -nv "https://github.com/open-policy-agent/gatekeeper/releases/download/v${GATOR_VERSION}/gator-v${GATOR_VERSION}-linux-amd64.tar.gz" tar -xf gator-v${GATOR_VERSION}-linux-amd64.tar.gz install -o 0 -g 0 -m 0755 gator /usr/local/bin/gator + +rm -rf /build/install_gator diff --git a/infra/build/developer-tools-krm/build/install_kind.sh b/infra/build/developer-tools-krm/build/install_kind.sh index 4638173df3e..e1dc9fcf80b 100755 --- a/infra/build/developer-tools-krm/build/install_kind.sh +++ b/infra/build/developer-tools-krm/build/install_kind.sh @@ -16,9 +16,12 @@ set -e set -u -cd /build +mkdir -p /build/install_kind +cd /build/install_kind KIND_VERSION=$1 -wget -q https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-linux-amd64 +wget -nv "https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-linux-amd64" install -o 0 -g 0 -m 0755 kind-linux-amd64 /usr/local/bin/kind + +rm -rf /build/install_kind diff --git a/infra/build/developer-tools-krm/build/install_opa.sh b/infra/build/developer-tools-krm/build/install_opa.sh index 396d9669567..da34e29b75b 100755 --- a/infra/build/developer-tools-krm/build/install_opa.sh +++ b/infra/build/developer-tools-krm/build/install_opa.sh @@ -16,9 +16,12 @@ set -e set -u -cd /build +mkdir -p /build/install_opa +cd /build/install_opa OPA_VERSION=$1 -wget -q https://openpolicyagent.org/downloads/v${OPA_VERSION}/opa_linux_amd64_static -O opa +wget -nv "https://openpolicyagent.org/downloads/v${OPA_VERSION}/opa_linux_amd64_static" -O opa install -o 0 -g 0 -m 0755 opa /usr/local/bin/opa + +rm -rf /build/install_opa diff --git a/infra/build/developer-tools/build/install_bats.sh b/infra/build/developer-tools/build/install_bats.sh index a2af5c41f9e..e17d28ed022 100755 --- a/infra/build/developer-tools/build/install_bats.sh +++ b/infra/build/developer-tools/build/install_bats.sh @@ -16,29 +16,29 @@ set -e set -u +mkdir -p /build/install_bats +cd /build/install_bats + BATS_VERSION=$1 BATS_SUPPORT_VERSION=$2 BATS_ASSERT_VERSION=$3 BATS_MOCK_VERSION=$4 -cd /build -wget "https://github.com/sstephenson/bats/archive/v${BATS_VERSION}.zip" -unzip "v${BATS_VERSION}.zip" +wget -nv "https://github.com/sstephenson/bats/archive/v${BATS_VERSION}.zip" +unzip -q "v${BATS_VERSION}.zip" cd "bats-${BATS_VERSION}" ./install.sh /usr/local -rm -rf "v${BATS_VERSION}" "bats-${BATS_VERSION}" -wget "https://github.com/ztombol/bats-support/archive/v${BATS_SUPPORT_VERSION}.zip" -unzip "v${BATS_SUPPORT_VERSION}.zip" +wget -nv "https://github.com/ztombol/bats-support/archive/v${BATS_SUPPORT_VERSION}.zip" +unzip -q "v${BATS_SUPPORT_VERSION}.zip" cp -r "bats-support-${BATS_SUPPORT_VERSION}" /usr/local/bats-support -rm -rf "v${BATS_SUPPORT_VERSION}.zip" "bats-support-${BATS_SUPPORT_VERSION}" -wget "https://github.com/jasonkarns/bats-assert-1/archive/v${BATS_ASSERT_VERSION}.zip" -unzip "v${BATS_ASSERT_VERSION}.zip" +wget -nv "https://github.com/jasonkarns/bats-assert-1/archive/v${BATS_ASSERT_VERSION}.zip" +unzip -q "v${BATS_ASSERT_VERSION}.zip" cp -r "bats-assert-${BATS_ASSERT_VERSION}" /usr/local/bats-assert -rm -rf "v${BATS_ASSERT_VERSION}.zip" "bats-assert-${BATS_ASSERT_VERSION}" -wget "https://github.com/jasonkarns/bats-mock/archive/v${BATS_MOCK_VERSION}.zip" -unzip "v${BATS_MOCK_VERSION}.zip" +wget -nv "https://github.com/jasonkarns/bats-mock/archive/v${BATS_MOCK_VERSION}.zip" +unzip -q "v${BATS_MOCK_VERSION}.zip" cp -r "bats-mock-${BATS_MOCK_VERSION}" /usr/local/bats-mock -rm -rf "v${BATS_MOCK_VERSION}.zip" "bats-mock-${BATS_MOCK_VERSION}" + +rm -rf /build/install_bats diff --git a/infra/build/developer-tools/build/install_cft_cli.sh b/infra/build/developer-tools/build/install_cft_cli.sh index ec23fbf45fe..9ad82f6c39a 100755 --- a/infra/build/developer-tools/build/install_cft_cli.sh +++ b/infra/build/developer-tools/build/install_cft_cli.sh @@ -16,12 +16,15 @@ set -e set -u -CFT_CLI_VERSION=$1 +mkdir -p /build/install_cft_cli +cd /build/install_cft_cli -cd /build +CFT_CLI_VERSION=$1 -if ! wget "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/cli%2Fv${CFT_CLI_VERSION}/cft-linux-amd64"; then - wget "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/v${CFT_CLI_VERSION}/cft-linux-amd64" +if ! wget -nv "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/cli%2Fv${CFT_CLI_VERSION}/cft-linux-amd64"; then + wget -nv "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/v${CFT_CLI_VERSION}/cft-linux-amd64" fi install -o 0 -g 0 -m 0755 cft-linux-amd64 /usr/local/bin/cft + +rm -rf /build/install_cft_cli diff --git a/infra/build/developer-tools/build/install_cloud_sdk.sh b/infra/build/developer-tools/build/install_cloud_sdk.sh index 2a7e6b9ed6b..7afff2464a0 100755 --- a/infra/build/developer-tools/build/install_cloud_sdk.sh +++ b/infra/build/developer-tools/build/install_cloud_sdk.sh @@ -20,7 +20,7 @@ CLOUD_SDK_VERSION=$1 cd /build -wget "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-${CLOUD_SDK_VERSION}-linux-x86_64.tar.gz" +wget -nv "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-${CLOUD_SDK_VERSION}-linux-x86_64.tar.gz" tar -C /usr/local -xzf "google-cloud-sdk-${CLOUD_SDK_VERSION}-linux-x86_64.tar.gz" rm "google-cloud-sdk-${CLOUD_SDK_VERSION}-linux-x86_64.tar.gz" diff --git a/infra/build/developer-tools/build/install_gsuite_terraform_provider.sh b/infra/build/developer-tools/build/install_gsuite_terraform_provider.sh index c841cd51755..18e66f15cb5 100755 --- a/infra/build/developer-tools/build/install_gsuite_terraform_provider.sh +++ b/infra/build/developer-tools/build/install_gsuite_terraform_provider.sh @@ -16,12 +16,14 @@ set -e set -u -GSUITE_PROVIDER_VERSION=$1 +mkdir -p /build/install_gsuite_terraform_provider +cd /build/install_gsuite_terraform_provider -cd /build +GSUITE_PROVIDER_VERSION=$1 -wget "https://github.com/DeviaVir/terraform-provider-gsuite/releases/download/v${GSUITE_PROVIDER_VERSION}/terraform-provider-gsuite_${GSUITE_PROVIDER_VERSION}_linux_amd64.tgz" -tar xzf "terraform-provider-gsuite_${GSUITE_PROVIDER_VERSION}_linux_amd64.tgz" -rm "terraform-provider-gsuite_${GSUITE_PROVIDER_VERSION}_linux_amd64.tgz" +wget -nv "https://github.com/DeviaVir/terraform-provider-gsuite/releases/download/v${GSUITE_PROVIDER_VERSION}/terraform-provider-gsuite_${GSUITE_PROVIDER_VERSION}_linux_amd64.tgz" +tar -xzf "terraform-provider-gsuite_${GSUITE_PROVIDER_VERSION}_linux_amd64.tgz" install -o 0 -g 0 -m 0755 -d ~/.terraform.d/plugins/ install -o 0 -g 0 -m 0755 "terraform-provider-gsuite_v${GSUITE_PROVIDER_VERSION}" ~/.terraform.d/plugins/ + +rm -rf /build/install_gsuite_terraform_provider diff --git a/infra/build/developer-tools/build/install_hadolint.sh b/infra/build/developer-tools/build/install_hadolint.sh index f32c21cd87f..4d570face90 100755 --- a/infra/build/developer-tools/build/install_hadolint.sh +++ b/infra/build/developer-tools/build/install_hadolint.sh @@ -16,7 +16,10 @@ set -e set -u -cd /build +mkdir -p /build/install_hadolint +cd /build/install_hadolint -wget https://github.com/hadolint/hadolint/releases/download/v1.15.0/hadolint-Linux-x86_64 +wget -nv "https://github.com/hadolint/hadolint/releases/download/v1.15.0/hadolint-Linux-x86_64" install -o 0 -g 0 -m 0755 hadolint-Linux-x86_64 /usr/local/bin/hadolint + +rm -rf /build/install_hadolint diff --git a/infra/build/developer-tools/build/install_kpt.sh b/infra/build/developer-tools/build/install_kpt.sh index 6a3a2747e1a..8852514e45b 100755 --- a/infra/build/developer-tools/build/install_kpt.sh +++ b/infra/build/developer-tools/build/install_kpt.sh @@ -16,11 +16,13 @@ set -e set -u -KPT_VERSION=$1 +mkdir -p /build/install_kpt +cd /build/install_kpt -cd /build +KPT_VERSION=$1 -wget "https://github.com/GoogleContainerTools/kpt/releases/download/v${KPT_VERSION}/kpt_linux_amd64-${KPT_VERSION}.tar.gz" -tar xzf "kpt_linux_amd64-${KPT_VERSION}.tar.gz" -rm "kpt_linux_amd64-${KPT_VERSION}.tar.gz" +wget -nv "https://github.com/GoogleContainerTools/kpt/releases/download/v${KPT_VERSION}/kpt_linux_amd64-${KPT_VERSION}.tar.gz" +tar -xzf "kpt_linux_amd64-${KPT_VERSION}.tar.gz" install -o 0 -g 0 -m 0755 kpt /usr/local/bin/ + +rm -rf /build/install_kpt diff --git a/infra/build/developer-tools/build/install_kubectl.sh b/infra/build/developer-tools/build/install_kubectl.sh index 3fee9bc7aee..6ef0fc016a6 100755 --- a/infra/build/developer-tools/build/install_kubectl.sh +++ b/infra/build/developer-tools/build/install_kubectl.sh @@ -16,9 +16,12 @@ set -e set -u -cd /build +mkdir -p /build/install_kubectl +cd /build/install_kubectl KUBECTL_VERSION=$1 -wget https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl +wget -nv "https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl" install -o 0 -g 0 -m 0755 kubectl /usr/local/bin/kubectl + +rm -rf /build/install_kubectl diff --git a/infra/build/developer-tools/build/install_kustomize.sh b/infra/build/developer-tools/build/install_kustomize.sh index 42cb4af3f14..917e95c74e7 100755 --- a/infra/build/developer-tools/build/install_kustomize.sh +++ b/infra/build/developer-tools/build/install_kustomize.sh @@ -16,10 +16,13 @@ set -e set -u -cd /build +mkdir -p /build/install_kustomize +cd /build/install_kustomize KUSTOMIZE_VERSION=$1 -wget -q https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v${KUSTOMIZE_VERSION}/kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz -tar xzf ./kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz +wget -nv https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v${KUSTOMIZE_VERSION}/kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz +tar -xzf kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz install -o 0 -g 0 -m 0755 kustomize /usr/local/bin/kustomize + +rm -rf /build/install_kustomize diff --git a/infra/build/developer-tools/build/install_protoc.sh b/infra/build/developer-tools/build/install_protoc.sh index d79d96fd285..1dff967feb1 100755 --- a/infra/build/developer-tools/build/install_protoc.sh +++ b/infra/build/developer-tools/build/install_protoc.sh @@ -21,11 +21,11 @@ PROTOC_GEN_GO_VERSION=$2 PROTOC_GEN_GO_GRPC_VERSION=$3 PROTOC_GEN_GO_INJECT_TAG=$4 -cd /build +mkdir -p /build/install_protoc +cd /build/install_protoc curl -LO "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip" -unzip "protoc-${PROTOC_VERSION}-linux-x86_64.zip" -d $HOME/.local -rm "protoc-${PROTOC_VERSION}-linux-x86_64.zip" +unzip -q "protoc-${PROTOC_VERSION}-linux-x86_64.zip" -d $HOME/.local chmod 755 $HOME/.local/bin/protoc cp $HOME/.local/bin/protoc /usr/local/bin/ cp -R $HOME/.local/include/ /usr/local/include/ @@ -33,3 +33,5 @@ cp -R $HOME/.local/include/ /usr/local/include/ go install google.golang.org/protobuf/cmd/protoc-gen-go@v${PROTOC_GEN_GO_VERSION} go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v${PROTOC_GEN_GO_GRPC_VERSION} go install github.com/favadi/protoc-go-inject-tag@v${PROTOC_GEN_GO_INJECT_TAG} + +rm -rf /build/install_protoc diff --git a/infra/build/developer-tools/build/install_shellcheck.sh b/infra/build/developer-tools/build/install_shellcheck.sh index 48b7db20a84..f3ecae8e31d 100755 --- a/infra/build/developer-tools/build/install_shellcheck.sh +++ b/infra/build/developer-tools/build/install_shellcheck.sh @@ -16,9 +16,11 @@ set -e set -u -cd /build +mkdir -p /build/install_shellcheck +cd /build/install_shellcheck -wget https://github.com/koalaman/shellcheck/releases/download/v0.6.0/shellcheck-v0.6.0.linux.x86_64.tar.xz +wget -nv "https://github.com/koalaman/shellcheck/releases/download/v0.6.0/shellcheck-v0.6.0.linux.x86_64.tar.xz" tar -xf shellcheck-v0.6.0.linux.x86_64.tar.xz install -o 0 -g 0 -m 0755 shellcheck-v0.6.0/shellcheck /usr/local/bin/shellcheck -rm -rf shellcheck-v0.6.0 shellcheck-v0.6.0.linux.x86_64.tar.xz + +rm -rf /build/install_shellcheck diff --git a/infra/build/developer-tools/build/install_terraform.sh b/infra/build/developer-tools/build/install_terraform.sh index aa45508013f..ebacc2e89bb 100755 --- a/infra/build/developer-tools/build/install_terraform.sh +++ b/infra/build/developer-tools/build/install_terraform.sh @@ -16,10 +16,13 @@ set -e set -u -cd /build +mkdir -p /build/install_terraform +cd /build/install_terraform TERRAFORM_VERSION=$1 -wget -q https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip -unzip ./terraform_${TERRAFORM_VERSION}_linux_amd64.zip +wget -nv "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" +unzip -q terraform_${TERRAFORM_VERSION}_linux_amd64.zip install -o 0 -g 0 -m 0755 terraform /usr/local/bin/terraform + +rm -rf /build/install_terraform diff --git a/infra/build/developer-tools/build/install_terraform_docs.sh b/infra/build/developer-tools/build/install_terraform_docs.sh index 9c9c6f2c8b7..c4b84c9edfe 100755 --- a/infra/build/developer-tools/build/install_terraform_docs.sh +++ b/infra/build/developer-tools/build/install_terraform_docs.sh @@ -16,10 +16,13 @@ set -e set -u -cd /build +mkdir -p /build/install_terraform_docs +cd /build/install_terraform_docs TERRAFORM_DOCS_VERSION=$1 -wget -q "https://github.com/segmentio/terraform-docs/releases/download/v${TERRAFORM_DOCS_VERSION}/terraform-docs-v${TERRAFORM_DOCS_VERSION}-linux-amd64.tar.gz" -tar xzf ./terraform-docs-v${TERRAFORM_DOCS_VERSION}-linux-amd64.tar.gz +wget -nv "https://github.com/segmentio/terraform-docs/releases/download/v${TERRAFORM_DOCS_VERSION}/terraform-docs-v${TERRAFORM_DOCS_VERSION}-linux-amd64.tar.gz" +tar -xzf terraform-docs-v${TERRAFORM_DOCS_VERSION}-linux-amd64.tar.gz install -o 0 -g 0 -m 0755 "terraform-docs" /usr/local/bin/terraform-docs + +rm -rf /build/install_terraform_docs diff --git a/infra/build/developer-tools/build/install_terragrunt.sh b/infra/build/developer-tools/build/install_terragrunt.sh index 54d3520eb00..435ca0315e8 100755 --- a/infra/build/developer-tools/build/install_terragrunt.sh +++ b/infra/build/developer-tools/build/install_terragrunt.sh @@ -16,9 +16,12 @@ set -e set -u -cd /build +mkdir -p /build/install_terragrunt +cd /build/install_terragrunt TERRAGRUNT_VERSION=$1 -wget -q https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_linux_amd64 +wget -nv "https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_linux_amd64" install -o 0 -g 0 -m 0755 terragrunt_linux_amd64 /usr/local/bin/terragrunt + +rm -rf /build/install_terragrunt diff --git a/infra/build/developer-tools/build/install_tflint.sh b/infra/build/developer-tools/build/install_tflint.sh index d6efa0e8af0..7562310a988 100755 --- a/infra/build/developer-tools/build/install_tflint.sh +++ b/infra/build/developer-tools/build/install_tflint.sh @@ -16,10 +16,13 @@ set -e set -u -TF_LINT_VERSION=$1 +mkdir -p /build/install_tflint +cd /build/install_tflint -cd /build +TF_LINT_VERSION=$1 -wget "https://github.com/terraform-linters/tflint/releases/download/v${TF_LINT_VERSION}/tflint_linux_amd64.zip" -unzip tflint_linux_amd64.zip +wget -nv "https://github.com/terraform-linters/tflint/releases/download/v${TF_LINT_VERSION}/tflint_linux_amd64.zip" +unzip -q tflint_linux_amd64.zip install -o 0 -g 0 -m 0755 tflint /usr/local/bin/tflint + +rm -rf /build/install_tflint diff --git a/infra/build/developer-tools/build/install_tinkey.sh b/infra/build/developer-tools/build/install_tinkey.sh index fc5ddccf5fc..47fd5bb3c2a 100755 --- a/infra/build/developer-tools/build/install_tinkey.sh +++ b/infra/build/developer-tools/build/install_tinkey.sh @@ -16,16 +16,15 @@ set -e set -u -cd /build +mkdir -p /build/install_tinkey +cd /build/install_tinkey TINKEY_VERSION=$1 -mkdir ./tinkey +gsutil cp "gs://tinkey/tinkey-${TINKEY_VERSION}.tar.gz" . +tar -xzf "tinkey-${TINKEY_VERSION}.tar.gz" -gsutil cp "gs://tinkey/tinkey-${TINKEY_VERSION}.tar.gz" ./tinkey -tar -xzvf "./tinkey/tinkey-${TINKEY_VERSION}.tar.gz" -C ./tinkey +install -o 0 -g 0 -m 0755 tinkey_deploy.jar /usr/bin/ +install -o 0 -g 0 -m 0755 tinkey /usr/bin/ -install -o 0 -g 0 -m 0755 ./tinkey/tinkey_deploy.jar /usr/bin/ -install -o 0 -g 0 -m 0755 ./tinkey/tinkey /usr/bin/ - -rm -rf ./tinkey +rm -rf /build/install_tinkey From 4e1e5b5a49201c99cc8f2166cc0256254c6a4dd2 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 20 Sep 2023 10:36:39 -0700 Subject: [PATCH 0600/1371] chore: create codeql.yml (#1833) Co-authored-by: Awais Malik --- .github/workflows/codeql.yml | 86 ++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000000..c03fd9ac387 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,86 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + paths: + - '**/*.go' + - '**/*.js' + - '**/*.py' + - '**/*.rb' + schedule: + - cron: '32 11 * * 0' + +jobs: + analyze: + name: Analyze + # Runner size impacts CodeQL analysis time. To learn more, please see: + # - https://gh.io/recommended-hardware-resources-for-running-codeql + # - https://gh.io/supported-runners-and-hardware-resources + # - https://gh.io/using-larger-runners + # Consider using larger runners for possible analysis time improvements. + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'go', 'javascript', 'python', 'ruby' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ] + # Use only 'java' to analyze code written in Java, Kotlin or both + # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" From 17752b20e62d1295a2a49ecc83e38a72a3cf816f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 20 Sep 2023 19:45:58 +0200 Subject: [PATCH 0601/1371] chore(deps): pin dependencies (#1850) --- .github/workflows/codeql.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c03fd9ac387..621f2674884 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,11 +50,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2 with: category: "/language:${{matrix.language}}" From 52db8b3bc46e662db6769276565fffa4bfb83ba9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 20 Sep 2023 19:53:11 +0200 Subject: [PATCH 0602/1371] chore(deps): update actions/checkout action to v4 (#1851) --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 621f2674884..fc08fffe6aa 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 + uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL From 68e51750c05c21d392fa139ac606f4fcb013a7d4 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 20 Sep 2023 13:25:17 -0700 Subject: [PATCH 0603/1371] fix: include .git folder when checking for doc gen in dev-tools (#1853) --- .../build/developer-tools/build/scripts/task_helper_functions.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index d436b5f94d7..24c536c8b3c 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -465,7 +465,6 @@ function check_generate_modules() { rsync -axh \ --exclude '*/.terraform' \ --exclude '*/.kitchen' \ - --exclude '*/.git' \ /workspace "${tempdir}" >/dev/null 2>/dev/null cd "${tempdir}/workspace" || exit 1 generate_modules >/dev/null 2>/dev/null From 90c6a46a09f08406327bb304c115467012e69532 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 14:22:29 -0700 Subject: [PATCH 0604/1371] chore(master): release module-swapper 0.2.2 (#1848) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 455042f105a..2cf2a860409 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.8.1", - "infra/module-swapper": "0.2.1" + "infra/module-swapper": "0.2.2" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 2b0cd6c9ac8..9034f45bd8c 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.1...infra/module-swapper/v0.2.2) (2023-09-20) + + +### Bug Fixes + +* **deps:** update module github.com/go-git/go-git/v5 to v5.9.0 ([#1842](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1842)) ([786b642](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/786b642a15fdfb6efc970859f75c359fc2d74db5)) + ## [0.2.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.0...infra/module-swapper/v0.2.1) (2023-09-06) From fc9d218ceb26f039022c63f8bb01b9a4ec46bad2 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 20 Sep 2023 18:01:37 -0500 Subject: [PATCH 0605/1371] chore: Update Tools to 1.16.3 (#1854) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index a59e588703f..7cd7759c1ef 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.5.7 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 446.0.1 +CLOUD_SDK_VERSION := 447.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.50.16 +TERRAGRUNT_VERSION := 0.51.3 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.1.1 # Updated by Update Tooling Workflow @@ -43,7 +43,7 @@ TFLINT_VERSION := 0.48.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.18 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.2.1 +MODULE_SWAPPER_VERSION := 0.2.2 # For developer-tools-krm GOLANGCI_VERSION := 1.54.1 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From fcdefc796a9aa42f658ac8526a4600a5aaaab440 Mon Sep 17 00:00:00 2001 From: Drew Brown Date: Wed, 20 Sep 2023 17:40:18 -0600 Subject: [PATCH 0606/1371] feat: Onboarding new repositories (UP 13.1 / 13.2) (#1852) Co-authored-by: Awais Malik --- .../terraform/test-org/ci-triggers/locals.tf | 2 ++ infra/terraform/test-org/org/locals.tf | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index dc38ea5247f..9944525e022 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -30,6 +30,8 @@ locals { "cloud-foundation-training" = "cloud-foundation-training", "example-foundation-app" = "terraform-example-foundation-app", "anthos-samples" = "anthos-samples" + "cloud-deployment-gce" = "terraform-cloud-deployment-gce", + "cloud-deployment-gke" = "terraform-cloud-deployment-gke", "docs-samples" = "terraform-docs-samples" "dynamic-python-webapp" = "terraform-dynamic-python-webapp" "dynamic-javascript-webapp" = "terraform-dynamic-javascript-webapp" diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index ff9247571cf..a6f1f7b7795 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -752,6 +752,28 @@ locals { owners = ["anaik91", "imrannayer"] topics = local.common_topics.db }, + { + name = "terraform-cloud-deployment-gce" + short_name = "cloud-deployment-gce" + org = "GoogleCloudPlatform" + description = "Deploy a change to a live stateful service (Java on GCE)" + groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] + enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } + }, + { + name = "terraform-cloud-deployment-gke" + short_name = "cloud-deployment-gke" + org = "GoogleCloudPlatform" + description = "Deploy a change to a live stateful service (Go on GKE)" + groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] + enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } + }, { name = "terraform-pubsub-integration-golang" org = "GoogleCloudPlatform" From 1c9e105a8f15afd9c2bc3d8b9c1b2fadc332a0eb Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 20 Sep 2023 16:59:59 -0700 Subject: [PATCH 0607/1371] chore: run update-tooling on Makefile update (#1849) Co-authored-by: Awais Malik --- .github/workflows/update-tooling.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 075a3e7ce6b..3576826409c 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -5,6 +5,11 @@ on: workflow_dispatch: release: types: [released] + push: + branches: + - "master" + paths: + - "infra/build/Makefile" env: TERRAFORM_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" @@ -26,6 +31,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + with: + ref: master - name: Update Tools run: | PR_UPDATE_BODY="" From 4cb7ecb885fec3f647815c8354452bbf7b018661 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 21 Sep 2023 08:23:09 -0700 Subject: [PATCH 0608/1371] fix: cli lint and update protbuf and yaml (#1810) Co-authored-by: Awais Malik --- cli/bpbuild/build.go | 8 ++--- cli/bpbuild/cmd.go | 1 - cli/bpcatalog/cmd.go | 1 - cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 3 +- cli/bpcatalog/tf.go | 4 +-- cli/bpcatalog/tf_test.go | 2 +- cli/bpmetadata/markdown_test.go | 16 +++++----- cli/bpmetadata/path.go | 6 ++-- cli/bpmetadata/path_test.go | 18 +++++------ cli/bpmetadata/repo.go | 2 +- .../schema/gcp-blueprint-metadata.json | 30 +++++++------------ cli/bpmetadata/tfconfig.go | 2 +- cli/bpmetadata/tfconfig_test.go | 1 - cli/bpmetadata/validate.go | 6 ++-- cli/bptest/cmd.go | 4 +-- cli/bptest/convert.go | 28 ++++++++--------- cli/bptest/init.go | 10 +++---- cli/bptest/list.go | 1 - cli/bptest/list_test.go | 2 +- cli/bptest/run.go | 7 ++--- cli/bptest/run_test.go | 1 - cli/bptest/stages_test.go | 1 - .../{intergration => integration}/.gitkeep | 0 .../bar/.gitkeep | 0 .../bar/bar_test.go | 0 .../discover_test.go | 0 .../foo/.gitkeep | 0 .../foo/foo_test.go | 0 .../quuz/quuz_test.go | 0 cli/cmd/version_test.go | 1 - cli/go.mod | 16 +++++----- cli/go.sum | 22 +++++++------- cli/launchpad/folder_test.go | 3 +- cli/launchpad/root.go | 2 +- cli/launchpad/runtime_test.go | 3 +- cli/report/cmd.go | 1 - cli/scorecard/cmd.go | 1 - cli/scorecard/proto.go | 27 ++++++++--------- cli/scorecard/score.go | 1 - cli/scorecard/violations_test.go | 1 - cli/util/file.go | 10 +++---- cli/util/file_test.go | 2 +- 43 files changed, 112 insertions(+), 134 deletions(-) rename cli/bptest/testdata/with-discovery/test/{intergration => integration}/.gitkeep (100%) rename cli/bptest/testdata/with-discovery/test/{intergration => integration}/bar/.gitkeep (100%) rename cli/bptest/testdata/with-discovery/test/{intergration => integration}/bar/bar_test.go (100%) rename cli/bptest/testdata/with-discovery/test/{intergration => integration}/discover_test.go (100%) rename cli/bptest/testdata/with-discovery/test/{intergration => integration}/foo/.gitkeep (100%) rename cli/bptest/testdata/with-discovery/test/{intergration => integration}/foo/foo_test.go (100%) rename cli/bptest/testdata/with-discovery/test/{intergration => integration}/quuz/quuz_test.go (100%) diff --git a/cli/bpbuild/build.go b/cli/bpbuild/build.go index 1eacf702cc3..1e6b7ae22d5 100644 --- a/cli/bpbuild/build.go +++ b/cli/bpbuild/build.go @@ -7,7 +7,7 @@ import ( "time" cloudbuild "google.golang.org/api/cloudbuild/v1" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" ) const ( @@ -22,12 +22,12 @@ func getCBBuildsWithFilter(projectID string, filter string, cFilters []clientBui ctx := context.Background() cloudbuildService, err := cloudbuild.NewService(ctx) if err != nil { - return nil, fmt.Errorf("error creating cloudbuild service: %v", err) + return nil, fmt.Errorf("error creating cloudbuild service: %w", err) } c, err := cloudbuildService.Projects.Builds.List(projectID).Filter(filter).Do() if err != nil { - return nil, fmt.Errorf("error listing builds with filter %s in project %s: %v", filter, projectID, err) + return nil, fmt.Errorf("error listing builds with filter %s in project %s: %w", filter, projectID, err) } cbBuilds := []*cloudbuild.Build{} @@ -56,7 +56,7 @@ func getCBBuildsWithFilter(projectID string, filter string, cFilters []clientBui for { c, err = cloudbuildService.Projects.Builds.List(projectID).Filter(filter).PageToken(c.NextPageToken).Do() if err != nil { - return nil, fmt.Errorf("error retriving next page with token %s: %v", c.NextPageToken, err) + return nil, fmt.Errorf("error retrieving next page with token %s: %w", c.NextPageToken, err) } appendClientFilteredBuilds(c.Builds) if c.NextPageToken == "" { diff --git a/cli/bpbuild/cmd.go b/cli/bpbuild/cmd.go index 58a23293a29..0d241daa9ed 100644 --- a/cli/bpbuild/cmd.go +++ b/cli/bpbuild/cmd.go @@ -34,7 +34,6 @@ func init() { avgTimeCmd.Flags().StringVar(&avgTimeFlags.lookUpEnd, "end-time", "", "Time to stop computing build step avg in form MM-DD-YYYY. Defaults to current date.") avgTimeCmd.Flags().StringVar(&avgTimeFlags.projectId, "project-id", "cloud-foundation-cicd", "Project ID where builds are executed.") avgTimeCmd.Flags().StringVar(&avgTimeFlags.repoName, "repo", "", "Name of repo that triggered the builds. Defaults to extracting from git config.") - } var Cmd = &cobra.Command{ diff --git a/cli/bpcatalog/cmd.go b/cli/bpcatalog/cmd.go index 539605b6bd3..5fac40bb326 100644 --- a/cli/bpcatalog/cmd.go +++ b/cli/bpcatalog/cmd.go @@ -36,7 +36,6 @@ func init() { listCmd.Flags().Var(&catalogListFlags.format, "format", fmt.Sprintf("Format to display catalog. Defaults to table. Options are %+v.", renderFormats)) listCmd.Flags().Var(&catalogListFlags.sort, "sort", fmt.Sprintf("Sort results. Defaults to created date. Options are %+v.", sortOptions)) - } var Cmd = &cobra.Command{ diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index ce4cc44f9cf..9b95a5551a2 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v53/github" + "github.com/google/go-github/v55/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index e12b0105f39..c26d59f9d47 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v53/github" + "github.com/google/go-github/v55/github" "github.com/stretchr/testify/assert" ) @@ -305,7 +305,6 @@ func TestRenderDocHTML(t *testing.T) { updateExpected(t, expectedPath, got) expected := readFile(t, expectedPath) assert.Equal(t, expected, got) - }) } } diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index 01d1d5b8af3..5b828648605 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v53/github" + "github.com/google/go-github/v55/github" ) // sortOption defines the set of sort options for catalog. @@ -55,7 +55,7 @@ var ( func fetchSortedTFRepos(gh *ghService, sortOpt sortOption) (repos, error) { repos, err := gh.fetchRepos() if err != nil { - return nil, fmt.Errorf("error fetching repos: %v", err) + return nil, fmt.Errorf("error fetching repos: %w", err) } repos = repos.filter(func(r *github.Repository) bool { if r.GetArchived() { diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 488d68804df..e5dd5d62f1a 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v53/github" + "github.com/google/go-github/v55/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpmetadata/markdown_test.go b/cli/bpmetadata/markdown_test.go index 1765f407c98..b76426449f9 100644 --- a/cli/bpmetadata/markdown_test.go +++ b/cli/bpmetadata/markdown_test.go @@ -100,10 +100,10 @@ func TestProcessMarkdownContent(t *testing.T) { getContent: true, want: &mdContent{ listItems: []mdListItem{ - mdListItem{ + { text: "User requests are sent to the front end, which is deployed on two Cloud Run services as containers to support high scalability applications.", }, - mdListItem{ + { text: "The request then lands on the middle tier, which is the API layer that provides access to the backend. This is also deployed on Cloud Run for scalability and ease of deployment in multiple languages. This middleware is a Golang based API.", }, }, @@ -127,19 +127,19 @@ func TestProcessMarkdownContent(t *testing.T) { getContent: true, want: &mdContent{ listItems: []mdListItem{ - mdListItem{ + { text: "document-01", url: "http://google.com/doc-01", }, - mdListItem{ + { text: "document-02", url: "http://google.com/doc-02", }, - mdListItem{ + { text: "document-03", url: "http://google.com/doc-03", }, - mdListItem{ + { text: "document-04", url: "http://google.com/doc-04", }, @@ -155,10 +155,10 @@ func TestProcessMarkdownContent(t *testing.T) { getContent: true, want: &mdContent{ listItems: []mdListItem{ - mdListItem{ + { text: "text-document-01", }, - mdListItem{ + { text: "text-document-02", }, }, diff --git a/cli/bpmetadata/path.go b/cli/bpmetadata/path.go index a5b8b297ecb..4556f0a8611 100644 --- a/cli/bpmetadata/path.go +++ b/cli/bpmetadata/path.go @@ -23,7 +23,7 @@ var ( func fileExists(path string) (bool, error) { info, err := os.Stat(path) if err != nil { - return false, fmt.Errorf("unable to read file at the provided path: %v", err) + return false, fmt.Errorf("unable to read file at the provided path: %w", err) } if info.IsDir() { @@ -48,7 +48,7 @@ func getDirPaths(configPath string, re *regexp.Regexp) ([]*BlueprintMiscContent, paths := []*BlueprintMiscContent{} err := filepath.Walk(configPath, func(path string, info fs.FileInfo, err error) error { if err != nil { - return fmt.Errorf("error accessing examples in the path %q: %v", configPath, err) + return fmt.Errorf("error accessing examples in the path %q: %w", configPath, err) } // skip if this is a .terraform dir @@ -74,7 +74,7 @@ func getDirPaths(configPath string, re *regexp.Regexp) ([]*BlueprintMiscContent, }) if err != nil { - return nil, fmt.Errorf("error accessing examples in the path %q: %v", configPath, err) + return nil, fmt.Errorf("error accessing examples in the path %q: %w", configPath, err) } // Sort by configPath name before returning diff --git a/cli/bpmetadata/path_test.go b/cli/bpmetadata/path_test.go index 993010f5dbf..7651c49dc75 100644 --- a/cli/bpmetadata/path_test.go +++ b/cli/bpmetadata/path_test.go @@ -65,19 +65,19 @@ func TestDirContent(t *testing.T) { path: "content/examples", regex: regexExamples, want: []*BlueprintMiscContent{ - &BlueprintMiscContent{ + { Name: "terraform", Location: "examples/acm/acm-terraform-blog-part1/terraform", }, - &BlueprintMiscContent{ + { Name: "acm-terraform-blog-part2", Location: "examples/acm/acm-terraform-blog-part2", }, - &BlueprintMiscContent{ + { Name: "simple_regional", Location: "examples/simple_regional", }, - &BlueprintMiscContent{ + { Name: "simple_regional_beta", Location: "examples/simple_regional_beta", }, @@ -89,15 +89,15 @@ func TestDirContent(t *testing.T) { path: "content/modules", regex: regexModules, want: []*BlueprintMiscContent{ - &BlueprintMiscContent{ + { Name: "beta-public-cluster", Location: "modules/beta-public-cluster", }, - &BlueprintMiscContent{ + { Name: "binary-authorization", Location: "modules/binary-authorization", }, - &BlueprintMiscContent{ + { Name: "private-cluster", Location: "modules/private-cluster", }, @@ -115,11 +115,11 @@ func TestDirContent(t *testing.T) { path: "content/examples-some-without-tf/examples", regex: regexExamples, want: []*BlueprintMiscContent{ - &BlueprintMiscContent{ + { Name: "terraform", Location: "examples/acm/acm-terraform-blog-part1/terraform", }, - &BlueprintMiscContent{ + { Name: "simple_regional", Location: "examples/simple_regional", }, diff --git a/cli/bpmetadata/repo.go b/cli/bpmetadata/repo.go index 406bc61d751..7c311abb58b 100644 --- a/cli/bpmetadata/repo.go +++ b/cli/bpmetadata/repo.go @@ -34,7 +34,7 @@ func getRepoDetailsByPath(bpPath string, r *repoDetail, readme []byte) { // if it's still in memory. if strings.Contains(bpPath, nestedBpPath) && r.Source != nil { // try to parse the module name from MD which will get - // overriden with "["repoName-submoduleName" if repoName is available + // overridden with "["repoName-submoduleName" if repoName is available r.ModuleName = parseRepoNameFromMd(readme) if r.RepoName != "" { r.ModuleName = r.RepoName + "-" + getBpSubmoduleNameInKebabCase(bpPath) diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 0748ed5ab15..d74e60607fc 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -381,10 +381,8 @@ ] }, "quotaType": { - "patternProperties": { - ".*": { - "type": "string" - } + "additionalProperties": { + "type": "string" }, "type": "object" } @@ -543,10 +541,8 @@ "BlueprintUIInput": { "properties": { "variables": { - "patternProperties": { - ".*": { - "$ref": "#/$defs/DisplayVariable" - } + "additionalProperties": { + "$ref": "#/$defs/DisplayVariable" }, "type": "object" }, @@ -572,10 +568,8 @@ "type": "array" }, "outputs": { - "patternProperties": { - ".*": { - "$ref": "#/$defs/DisplayOutput" - } + "additionalProperties": { + "$ref": "#/$defs/DisplayOutput" }, "type": "object" } @@ -1013,18 +1007,14 @@ "type": "string" }, "labels": { - "patternProperties": { - ".*": { - "type": "string" - } + "additionalProperties": { + "type": "string" }, "type": "object" }, "annotations": { - "patternProperties": { - ".*": { - "type": "string" - } + "additionalProperties": { + "type": "string" }, "type": "object" } diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index 41c810c88bc..b22bd1a1fe5 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -91,7 +91,7 @@ func getBlueprintVersion(configPath string) (*blueprintVersion, error) { //parse out the blueprint version from the config modName, err := parseBlueprintVersion(versionsFile, diags) if err != nil { - return nil, fmt.Errorf("error parsing blueprint version: %v", err) + return nil, fmt.Errorf("error parsing blueprint version: %w", err) } //parse out the required version from the config diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index 6abf9c6e556..7422969273c 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -174,7 +174,6 @@ func TestTFVersions(t *testing.T) { t.Errorf("getBlueprintVersion() = %v, want %v", got.moduleVersion, tt.wantModuleVersion) return } - } else { if tt.wantModuleVersion != "" && tt.wantRequiredVersion != "" { t.Errorf("getBlueprintVersion() = returned nil when we want core: %v and bpVersion: %v", tt.wantRequiredVersion, tt.wantModuleVersion) diff --git a/cli/bpmetadata/validate.go b/cli/bpmetadata/validate.go index 48f1b42e277..893d9ab8e82 100644 --- a/cli/bpmetadata/validate.go +++ b/cli/bpmetadata/validate.go @@ -54,7 +54,7 @@ func validateMetadataYaml(m string, schema gojsonschema.JSONLoader) error { // prepare metadata for validation by converting it from YAML to JSON mBytes, err := convertYamlToJson(m) if err != nil { - return fmt.Errorf("yaml to json conversion failed for metadata at path %s. error: %s", m, err) + return fmt.Errorf("yaml to json conversion failed for metadata at path %s. error: %w", m, err) } // load metadata from the path @@ -63,7 +63,7 @@ func validateMetadataYaml(m string, schema gojsonschema.JSONLoader) error { // validate metadata against the schema result, err := gojsonschema.Validate(schema, yamlLoader) if err != nil { - return fmt.Errorf("metadata validation failed for %s. error: %s", m, err) + return fmt.Errorf("metadata validation failed for %s. error: %w", m, err) } if !result.Valid() { @@ -84,7 +84,7 @@ func convertYamlToJson(m string) ([]byte, error) { // read metadata for validation b, err := os.ReadFile(m) if err != nil { - return nil, fmt.Errorf("unable to read metadata at path %s. error: %s", m, err) + return nil, fmt.Errorf("unable to read metadata at path %s. error: %w", m, err) } if len(b) == 0 { diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index db78079f7aa..8c3f0f856be 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -38,7 +38,7 @@ var Cmd = &cobra.Command{ var listCmd = &cobra.Command{ Use: "list", Short: "list tests", - Long: "Lists both auto discovered and explicit intergration tests", + Long: "Lists both auto discovered and explicit integration tests", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { @@ -80,7 +80,7 @@ var runCmd = &cobra.Command{ RunE: func(cmd *cobra.Command, args []string) error { intTestDir, err := getIntTestDir(flags.testDir) if err != nil { - return fmt.Errorf("error discovering test dir: %v", err) + return fmt.Errorf("error discovering test dir: %w", err) } testStage, err := validateAndGetStage(flags.testStage) if err != nil { diff --git a/cli/bptest/convert.go b/cli/bptest/convert.go index 0426654b512..5854fac827e 100644 --- a/cli/bptest/convert.go +++ b/cli/bptest/convert.go @@ -55,42 +55,42 @@ func convertKitchenTests() error { } err = writeFile(path.Join(intTestPath, goModFilename), fmt.Sprintf(goMod, path.Base(cwd))) if err != nil { - return fmt.Errorf("error writing go mod file: %v", err) + return fmt.Errorf("error writing go mod file: %w", err) } // write discover test discoverTest, err := getTmplFileContents(discoverTestFilename) if err != nil { return err } - err = writeFile(path.Join(intTestPath, discoverTestFilename), string(discoverTest)) + err = writeFile(path.Join(intTestPath, discoverTestFilename), discoverTest) if err != nil { - return fmt.Errorf("error writing discover_test.go: %v", err) + return fmt.Errorf("error writing discover_test.go: %w", err) } testDirs, err := getCurrentTestDirs() if err != nil { - return fmt.Errorf("error getting current test dirs: %v", err) + return fmt.Errorf("error getting current test dirs: %w", err) } for _, dir := range testDirs { err = convertTest(path.Join(intTestPath, dir)) if err != nil { - return fmt.Errorf("error converting %s: %v", dir, err) + return fmt.Errorf("error converting %s: %w", dir, err) } } // remove kitchen err = os.Remove(".kitchen.yml") if err != nil { - return fmt.Errorf("error removing .kitchen.yml: %v", err) + return fmt.Errorf("error removing .kitchen.yml: %w", err) } // convert build file // We use build to identify commands to update and update the commands in the buildFile. // This minimizes unnecessary diffs in build yaml due to round tripping. build, buildFile, err := getBuildFromFile(intTestBuildFilePath) if err != nil { - return fmt.Errorf("error unmarshalling %s: %v", intTestBuildFilePath, err) + return fmt.Errorf("error unmarshalling %s: %w", intTestBuildFilePath, err) } newBuildFile, err := transformBuild(build, buildFile) if err != nil { - return fmt.Errorf("error transforming buildfile: %v", err) + return fmt.Errorf("error transforming buildfile: %w", err) } return writeFile(intTestBuildFilePath, newBuildFile) } @@ -115,12 +115,12 @@ func convertTest(dir string) error { // read inspec.yaml f, err := os.ReadFile(path.Join(dir, inspecInputsFile)) if err != nil { - return fmt.Errorf("error reading inspec file: %s", err) + return fmt.Errorf("error reading inspec file: %w", err) } var inspec inspecInputs err = yaml.Unmarshal(f, &inspec) if err != nil { - return fmt.Errorf("error unmarshalling inspec file: %s", err) + return fmt.Errorf("error unmarshalling inspec file: %w", err) } // get inspec input attributes var inputs []string @@ -131,17 +131,17 @@ func convertTest(dir string) error { testName := path.Base(dir) bpTest, err := getBPTestFromTmpl(testName, inputs) if err != nil { - return fmt.Errorf("error creating blueprint test: %s", err) + return fmt.Errorf("error creating blueprint test: %w", err) } // remove old test err = os.RemoveAll(dir) if err != nil { - return fmt.Errorf("error removing old test dir: %s", err) + return fmt.Errorf("error removing old test dir: %w", err) } // write bpt err = os.MkdirAll(dir, os.ModePerm) if err != nil { - return fmt.Errorf("error creating test dir: %s", err) + return fmt.Errorf("error creating test dir: %w", err) } return writeFile(path.Join(dir, fmt.Sprintf("%s_test.go", strcase.ToSnake(testName))), bpTest) } @@ -151,7 +151,7 @@ func getTmplFileContents(f string) (string, error) { tmplF := path.Join("templates", fmt.Sprintf("%s%s", f, tmplSuffix)) contents, err := templateFiles.ReadFile(tmplF) if err != nil { - return "", fmt.Errorf("error reading %s : %v", tmplF, err) + return "", fmt.Errorf("error reading %s : %w", tmplF, err) } return string(contents), nil } diff --git a/cli/bptest/init.go b/cli/bptest/init.go index c597edf79d0..f522db4a949 100644 --- a/cli/bptest/init.go +++ b/cli/bptest/init.go @@ -39,20 +39,20 @@ func initTest(name string) error { } err = writeFile(goModpath, fmt.Sprintf(goMod, path.Base(cwd))) if err != nil { - return fmt.Errorf("error writing go mod file: %v", err) + return fmt.Errorf("error writing go mod file: %w", err) } } // discover test configs testCfg, err := discovery.GetConfigDirFromTestDir(testDir) if err != nil { - return fmt.Errorf("unable to discover test configs for %s: %v", testDir, err) + return fmt.Errorf("unable to discover test configs for %s: %w", testDir, err) } // Parse config to expose outputs within test mod, diags := tfconfig.LoadModule(testCfg) if diags.HasErrors() { - return fmt.Errorf("error parsing outputs: %v", diags) + return fmt.Errorf("error parsing outputs: %w", diags) } outputs := make([]string, 0, len(mod.Outputs)) for _, op := range mod.Outputs { @@ -63,11 +63,11 @@ func initTest(name string) error { // render and write test testFile, err := getBPTestFromTmpl(name, outputs) if err != nil { - return fmt.Errorf("error creating blueprint test: %v", err) + return fmt.Errorf("error creating blueprint test: %w", err) } err = os.MkdirAll(testDir, os.ModePerm) if err != nil { - return fmt.Errorf("error creating test dir: %v", err) + return fmt.Errorf("error creating test dir: %w", err) } return writeFile(path.Join(testDir, fmt.Sprintf("%s_test.go", strcase.ToSnake(name))), testFile) } diff --git a/cli/bptest/list.go b/cli/bptest/list.go index 112b6cabb72..11c6d90773e 100644 --- a/cli/bptest/list.go +++ b/cli/bptest/list.go @@ -116,7 +116,6 @@ func getExplicitTests(intTestDir string) ([]bpTest, error) { for _, fnName := range testFns { eTests = append(eTests, bpTest{name: fnName, location: testFile, config: testCfg, bptestCfg: bptestCfg}) } - } sort.SliceStable(eTests, func(i, j int) bool { return eTests[i].name < eTests[j].name }) return eTests, nil diff --git a/cli/bptest/list_test.go b/cli/bptest/list_test.go index 59ed336a7cb..f12c8602bf5 100644 --- a/cli/bptest/list_test.go +++ b/cli/bptest/list_test.go @@ -11,7 +11,7 @@ import ( const ( testDirWithDiscovery = "testdata/with-discovery" - intTestDir = "test/intergration" + intTestDir = "test/integration" ) func TestGetDiscoveredTests(t *testing.T) { diff --git a/cli/bptest/run.go b/cli/bptest/run.go index 99ba709edb4..e1597e5d02a 100644 --- a/cli/bptest/run.go +++ b/cli/bptest/run.go @@ -22,7 +22,7 @@ const ( // The tfplan.json files that are being used as input for the terraform validation tests // through the gcloud beta terraform vet are higher than the buffer default value (64*1024), - // after some tests we had evidences that the value were arround from 3MB to 5MB, so + // after some tests we had evidences that the value were around from 3MB to 5MB, so // we choosed a value that is at least 2x higher than the original one to avoid errors. // maxScanTokenSize is the maximum size used to buffer a token // startBufSize is the initial of the buffer token @@ -87,20 +87,19 @@ func streamExec(cmd *exec.Cmd) error { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { - Log.Error(fmt.Sprintf("error reading output: %v", err)) + Log.Error(fmt.Sprintf("error reading output: %s", err)) } }() // run command if err := cmd.Run(); err != nil { - return fmt.Errorf("error running command: %v", err) + return fmt.Errorf("error running command: %w", err) } return nil } // getTestCmd returns a prepared cmd for running the specified tests(s) func getTestCmd(intTestDir string, testStage string, testName string, relTestPkg string) (*exec.Cmd, error) { - // pass all current env vars to test command env := os.Environ() // set test stage env var if specified diff --git a/cli/bptest/run_test.go b/cli/bptest/run_test.go index e74a8e16810..862eb53f956 100644 --- a/cli/bptest/run_test.go +++ b/cli/bptest/run_test.go @@ -62,7 +62,6 @@ func TestIsValidTestName(t *testing.T) { } func TestGetTestCmd(t *testing.T) { - tests := []struct { name string intTestDir string diff --git a/cli/bptest/stages_test.go b/cli/bptest/stages_test.go index ab55b8871c1..33197cd1103 100644 --- a/cli/bptest/stages_test.go +++ b/cli/bptest/stages_test.go @@ -7,7 +7,6 @@ import ( ) func TestValidateAndGetStage(t *testing.T) { - tests := []struct { name string stage string diff --git a/cli/bptest/testdata/with-discovery/test/intergration/.gitkeep b/cli/bptest/testdata/with-discovery/test/integration/.gitkeep similarity index 100% rename from cli/bptest/testdata/with-discovery/test/intergration/.gitkeep rename to cli/bptest/testdata/with-discovery/test/integration/.gitkeep diff --git a/cli/bptest/testdata/with-discovery/test/intergration/bar/.gitkeep b/cli/bptest/testdata/with-discovery/test/integration/bar/.gitkeep similarity index 100% rename from cli/bptest/testdata/with-discovery/test/intergration/bar/.gitkeep rename to cli/bptest/testdata/with-discovery/test/integration/bar/.gitkeep diff --git a/cli/bptest/testdata/with-discovery/test/intergration/bar/bar_test.go b/cli/bptest/testdata/with-discovery/test/integration/bar/bar_test.go similarity index 100% rename from cli/bptest/testdata/with-discovery/test/intergration/bar/bar_test.go rename to cli/bptest/testdata/with-discovery/test/integration/bar/bar_test.go diff --git a/cli/bptest/testdata/with-discovery/test/intergration/discover_test.go b/cli/bptest/testdata/with-discovery/test/integration/discover_test.go similarity index 100% rename from cli/bptest/testdata/with-discovery/test/intergration/discover_test.go rename to cli/bptest/testdata/with-discovery/test/integration/discover_test.go diff --git a/cli/bptest/testdata/with-discovery/test/intergration/foo/.gitkeep b/cli/bptest/testdata/with-discovery/test/integration/foo/.gitkeep similarity index 100% rename from cli/bptest/testdata/with-discovery/test/intergration/foo/.gitkeep rename to cli/bptest/testdata/with-discovery/test/integration/foo/.gitkeep diff --git a/cli/bptest/testdata/with-discovery/test/intergration/foo/foo_test.go b/cli/bptest/testdata/with-discovery/test/integration/foo/foo_test.go similarity index 100% rename from cli/bptest/testdata/with-discovery/test/intergration/foo/foo_test.go rename to cli/bptest/testdata/with-discovery/test/integration/foo/foo_test.go diff --git a/cli/bptest/testdata/with-discovery/test/intergration/quuz/quuz_test.go b/cli/bptest/testdata/with-discovery/test/integration/quuz/quuz_test.go similarity index 100% rename from cli/bptest/testdata/with-discovery/test/intergration/quuz/quuz_test.go rename to cli/bptest/testdata/with-discovery/test/integration/quuz/quuz_test.go diff --git a/cli/cmd/version_test.go b/cli/cmd/version_test.go index 2d584afc63b..b509c448fe7 100644 --- a/cli/cmd/version_test.go +++ b/cli/cmd/version_test.go @@ -22,7 +22,6 @@ func TestVersionCommand(t *testing.T) { } func TestVersionCommandHelp(t *testing.T) { - output, err := ExecuteCommand(rootCmd, "version", "-h") if !strings.HasPrefix(output, versionCmd.Long) { t.Errorf("Unexpected output: %v", output) diff --git a/cli/go.mod b/cli/go.mod index 589df2ce86e..a272bf166a7 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -14,19 +14,19 @@ require ( github.com/golang/protobuf v1.5.3 github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 github.com/google/go-cmp v0.5.9 - github.com/google/go-github/v53 v53.0.0 + github.com/google/go-github/v55 v55.0.0 github.com/hashicorp/hcl/v2 v2.18.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 github.com/iancoleman/strcase v0.3.0 - github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac - github.com/invopop/jsonschema v0.7.0 + github.com/inconshreveable/log15 v2.16.0+incompatible + github.com/invopop/jsonschema v0.8.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.19 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.55.0 + github.com/open-policy-agent/opa v0.56.0 github.com/otiai10/copy v1.12.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.7.0 @@ -34,11 +34,11 @@ require ( github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20230905200255-921286631fa9 - golang.org/x/oauth2 v0.11.0 + golang.org/x/oauth2 v0.12.0 golang.org/x/text v0.13.0 google.golang.org/api v0.138.0 google.golang.org/protobuf v1.31.0 - gopkg.in/yaml.v2 v2.4.0 + gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.3.0 ) @@ -75,7 +75,6 @@ require ( github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gammazero/deque v0.2.0 // indirect - github.com/ghodss/yaml v1.0.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect @@ -98,6 +97,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic v0.6.9 // indirect + github.com/google/go-github/v53 v53.2.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.5 // indirect @@ -187,7 +187,7 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/api v0.27.2 // indirect k8s.io/apiextensions-apiserver v0.27.2 // indirect k8s.io/apimachinery v0.27.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 79cbe9cb907..3ec48a1a246 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -173,7 +173,6 @@ github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= @@ -320,8 +319,11 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github/v53 v53.0.0 h1:T1RyHbSnpHYnoF0ZYKiIPSgPtuJ8G6vgc0MKodXsQDQ= github.com/google/go-github/v53 v53.0.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= +github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= +github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= +github.com/google/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg= +github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -386,13 +388,13 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= -github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= +github.com/inconshreveable/log15 v2.16.0+incompatible h1:6nvMKxtGcpgm7q0KiGs+Vc+xDvUXaBqsPKHWKsinccw= +github.com/inconshreveable/log15 v2.16.0+incompatible/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= -github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= +github.com/invopop/jsonschema v0.8.0 h1:9Vblm5uNqURXUSaX0QUYcI/Hcu5rrvOz5MbpWgw0VkM= +github.com/invopop/jsonschema v0.8.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/itchyny/json2yaml v0.1.4 h1:/pErVOXGG5iTyXHi/QKR4y3uzhLjGTEmmJIy97YT+k8= github.com/itchyny/json2yaml v0.1.4/go.mod h1:6iudhBZdarpjLFRNj+clWLAkGft+9uCcjAZYXUH9eGI= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -479,8 +481,8 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.55.0 h1:s7Vm4ph6zDqqP/KzvUSw9fsKVsm9lhbTZhYGxxTK7mo= -github.com/open-policy-agent/opa v0.55.0/go.mod h1:2Vh8fj/bXCqSwGMbBiHGrw+O8yrho6T/fdaHt5ROmaQ= +github.com/open-policy-agent/opa v0.56.0 h1:FUSb6MyckjuffOMshEG8P+HGnckxkJ8ENZJHEzAddhk= +github.com/open-policy-agent/opa v0.56.0/go.mod h1:un01L10fkolr00KJMDSqGb2FXCjVyVQOybLtHOfSEfY= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -744,8 +746,8 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= -golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= +golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= 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= diff --git a/cli/launchpad/folder_test.go b/cli/launchpad/folder_test.go index acc848093e2..a203ebc7307 100644 --- a/cli/launchpad/folder_test.go +++ b/cli/launchpad/folder_test.go @@ -1,8 +1,9 @@ package launchpad import ( - "github.com/stretchr/testify/assert" "testing" + + "github.com/stretchr/testify/assert" ) // newTestFolder generates a fully formed folder for testing usage. diff --git a/cli/launchpad/root.go b/cli/launchpad/root.go index f385dc2c528..23cf6b1d4f6 100644 --- a/cli/launchpad/root.go +++ b/cli/launchpad/root.go @@ -8,7 +8,7 @@ import ( "strings" "github.com/pkg/errors" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" ) // NewGenerate takes file patterns as input YAMLs and output Infrastructure as diff --git a/cli/launchpad/runtime_test.go b/cli/launchpad/runtime_test.go index 465e3178b33..cabfc63ee96 100644 --- a/cli/launchpad/runtime_test.go +++ b/cli/launchpad/runtime_test.go @@ -2,8 +2,9 @@ package launchpad import ( "testing" + + "github.com/stretchr/testify/assert" ) -import "github.com/stretchr/testify/assert" type dummyResource struct { headerYAML diff --git a/cli/report/cmd.go b/cli/report/cmd.go index 9f712e0dc7e..57212cc9e9d 100644 --- a/cli/report/cmd.go +++ b/cli/report/cmd.go @@ -62,7 +62,6 @@ func init() { if err != nil { panic(err) } - } // Cmd represents the base report command diff --git a/cli/scorecard/cmd.go b/cli/scorecard/cmd.go index 2849fe494ff..0e00d1ed1b0 100644 --- a/cli/scorecard/cmd.go +++ b/cli/scorecard/cmd.go @@ -51,7 +51,6 @@ func init() { Cmd.Flags().StringVar(&flags.targetProjectID, "target-project", "", "Project ID to analyze (Works with --bucket and --refresh; conflicts with --target-folder or --target--organization)") Cmd.Flags().StringVar(&flags.targetFolderID, "target-folder", "", "Folder ID to analyze (Works with --bucket and --refresh; conflicts with --target-project or --target--organization)") Cmd.Flags().StringVar(&flags.targetOrgID, "target-organization", "", "Organization ID to analyze (Works with --bucket and --refresh; conflicts with --target-project or --target--folder)") - } // Cmd represents the base scorecard command diff --git a/cli/scorecard/proto.go b/cli/scorecard/proto.go index 55e0246a555..287443f9980 100644 --- a/cli/scorecard/proto.go +++ b/cli/scorecard/proto.go @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2019-2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,18 +17,17 @@ package scorecard import ( "encoding/json" "strconv" - "strings" - "github.com/golang/protobuf/jsonpb" //nolint //https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1571 - "github.com/golang/protobuf/proto" //nolint //https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1571 "github.com/pkg/errors" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" ) func unMarshallAsset(from []byte, to proto.Message) error { // CAI export returns org_policy [1] with update_time if Timestamp format in Seconds and Nanos - // but in jsonpb, Timestamp is expected to be a string in the RFC 3339 format [2]. + // but in protojson, Timestamp is expected to be a string in the RFC 3339 format [2]. // i.e. "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" - // Hence doing a workaround to remove the field so that jsonpb.Unmarshaler can handle org policy. + // Hence doing a workaround to remove the field so that protojson.Unmarshaler can handle org policy. // [1] https://github.com/googleapis/googleapis/blob/master/google/cloud/orgpolicy/v1/orgpolicy.proto // [2] https://godoc.org/google.golang.org/protobuf/types/known/timestamppb#Timestamp @@ -67,8 +66,8 @@ func protoViaJSON(from interface{}, to proto.Message) error { if err != nil { return errors.Wrap(err, "marshaling to json") } - umar := &jsonpb.Unmarshaler{AllowUnknownFields: true} - if err := umar.Unmarshal(strings.NewReader(string(jsn)), to); err != nil { + umar := &protojson.UnmarshalOptions{DiscardUnknown: true} + if err := umar.Unmarshal(jsn, to); err != nil { return errors.Wrap(err, "unmarshaling to proto") } @@ -78,14 +77,13 @@ func protoViaJSON(from interface{}, to proto.Message) error { // interfaceViaJSON uses JSON as an intermediary serialization to convert a protobuf message // into an interface value func interfaceViaJSON(from proto.Message) (interface{}, error) { - marshaler := &jsonpb.Marshaler{} - jsn, err := marshaler.MarshalToString(from) + jsn, err := protojson.Marshal(from) if err != nil { return nil, errors.Wrap(err, "marshaling to json") } var to interface{} - if err := json.Unmarshal([]byte(jsn), &to); err != nil { + if err := json.Unmarshal(jsn, &to); err != nil { return nil, errors.Wrap(err, "unmarshaling to interface") } @@ -95,15 +93,14 @@ func interfaceViaJSON(from proto.Message) (interface{}, error) { // stringViaJSON uses JSON as an intermediary serialization to convert a protobuf message // into an string value func stringViaJSON(from proto.Message) (string, error) { - marshaler := &jsonpb.Marshaler{} - jsn, err := marshaler.MarshalToString(from) + jsn, err := protojson.Marshal(from) if err != nil { return "", errors.Wrap(err, "marshaling to json") } - str, err := strconv.Unquote(jsn) + str, err := strconv.Unquote(string(jsn)) if err != nil { // return original json string if it's not a quoted string - return jsn, nil + return string(jsn), nil } return str, nil } diff --git a/cli/scorecard/score.go b/cli/scorecard/score.go index 42386094aab..9a50b0b350e 100644 --- a/cli/scorecard/score.go +++ b/cli/scorecard/score.go @@ -325,7 +325,6 @@ func (inventory *InventoryConfig) Score(config *ScoringConfig, outputPath string if err != nil { return err } - } else { fmt.Println("No issues found found! You have a perfect score.") } diff --git a/cli/scorecard/violations_test.go b/cli/scorecard/violations_test.go index cbd17b21d97..89f4f06e435 100644 --- a/cli/scorecard/violations_test.go +++ b/cli/scorecard/violations_test.go @@ -78,7 +78,6 @@ func TestGetAssetFromJSON(t *testing.T) { if tc.isIamPolicy && pbAsset.IamPolicy == nil { t.Errorf("wanted IAM Policy bindings, got %s", pbAsset) } - }) } } diff --git a/cli/util/file.go b/cli/util/file.go index 33163876ec7..26b6ae3b6ec 100644 --- a/cli/util/file.go +++ b/cli/util/file.go @@ -28,7 +28,7 @@ func WalkTerraformDirs(topLevelPath string) ([]string, error) { var tfDirs []string err := filepath.Walk(topLevelPath, func(path string, info fs.FileInfo, err error) error { if err != nil { - return fmt.Errorf("failure in accessing the path %q: %v\n", path, err) + return fmt.Errorf("failure in accessing the path %q: %w\n", path, err) } if info.IsDir() && (strings.HasPrefix(info.Name(), tfInternalDirPrefix) || skipDiscoverDirs[info.Name()]) { return filepath.SkipDir @@ -42,7 +42,7 @@ func WalkTerraformDirs(topLevelPath string) ([]string, error) { return nil }) if err != nil { - return nil, fmt.Errorf("error walking the path %q: %v\n", topLevelPath, err) + return nil, fmt.Errorf("error walking the path %q: %w\n", topLevelPath, err) } return tfDirs, nil @@ -51,7 +51,7 @@ func WalkTerraformDirs(topLevelPath string) ([]string, error) { func FindFilesWithPattern(dir string, pattern string, skipPaths []string) ([]string, error) { f, err := os.Stat(dir) if err != nil { - return nil, fmt.Errorf("no such dir: %v", err) + return nil, fmt.Errorf("no such dir: %w", err) } if !f.IsDir() { return nil, fmt.Errorf("expected dir %s: got file", dir) @@ -59,7 +59,7 @@ func FindFilesWithPattern(dir string, pattern string, skipPaths []string) ([]str re, err := regexp.Compile(pattern) if err != nil { - return nil, fmt.Errorf("invalid regex: %v", err) + return nil, fmt.Errorf("invalid regex: %w", err) } filePaths := []string{} @@ -102,5 +102,5 @@ func Exists(path string) (bool, error) { if errors.Is(err, os.ErrNotExist) { return false, nil } - return false, fmt.Errorf("error checking if %s exists: %v", path, err) + return false, fmt.Errorf("error checking if %s exists: %w", path, err) } diff --git a/cli/util/file_test.go b/cli/util/file_test.go index 70c55912b36..f170246e99b 100644 --- a/cli/util/file_test.go +++ b/cli/util/file_test.go @@ -19,7 +19,7 @@ func TestTFDirectories(t *testing.T) { wantErr bool }{ { - name: "multiple directores", + name: "multiple directories", path: "content/examples", want: []string{ "../testdata/bpmetadata/content/examples/acm/acm-terraform-blog-part1/terraform", From 3461278c6924c090a5ffa109701c260db158c3f4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 22 Sep 2023 00:26:36 +0200 Subject: [PATCH 0609/1371] chore(deps): update module google.golang.org/api to v0.142.0 (#1855) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index b2bb2771d5f..b33af60fb9c 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.141.0 + google.golang.org/api v0.142.0 ) require ( @@ -33,7 +33,7 @@ require ( golang.org/x/term v0.12.0 // indirect golang.org/x/text v0.13.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb // indirect google.golang.org/grpc v1.57.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index cbfecd5372b..8b23710fddd 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -127,8 +127,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.141.0 h1:Df6vfMgDoIM6ss0m7H4MPwFwY87WNXHfBIda/Bmfl4E= -google.golang.org/api v0.141.0/go.mod h1:iZqLkdPlXKyG0b90eu6KxVSE4D/ccRF2e/doKD2CnQQ= +google.golang.org/api v0.142.0 h1:mf+7EJ94fi5ZcnpPy+m0Yv2dkz8bKm+UL0snTCuwXlY= +google.golang.org/api v0.142.0/go.mod h1:zJAN5o6HRqR7O+9qJUFOWrZkYE66RH+efPBdTLA4xBA= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -138,8 +138,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 h1:o4LtQxebKIJ4vkzyhtD2rfUNZ20Zf0ik5YVP5E7G7VE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb h1:Isk1sSH7bovx8Rti2wZK0UZF6oraBDK74uoyLEEVFN0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 8365efbff6938727ec712a86ad19cd973a2f064d Mon Sep 17 00:00:00 2001 From: Marc Dougherty Date: Fri, 22 Sep 2023 08:25:24 -0700 Subject: [PATCH 0610/1371] feat: allow user to specify/override outputs from the setup stage (#1741) --- cli/bptest/cmd.go | 4 +- cli/bptest/run.go | 9 +- cli/bptest/run_test.go | 14 +- infra/blueprint-test/pkg/tft/terraform.go | 44 +++++ .../blueprint-test/pkg/tft/terraform_test.go | 161 +++++++++++++++++- 5 files changed, 224 insertions(+), 8 deletions(-) diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index 8c3f0f856be..fed6ffa6f9a 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -14,6 +14,7 @@ import ( var flags struct { testDir string testStage string + setupVars map[string]string } func init() { @@ -25,6 +26,7 @@ func init() { Cmd.PersistentFlags().StringVar(&flags.testDir, "test-dir", "", "Path to directory containing integration tests (default is computed by scanning current working directory)") runCmd.Flags().StringVar(&flags.testStage, "stage", "", "Test stage to execute (default is running all stages in order - init, apply, verify, teardown)") + runCmd.Flags().StringToStringVar(&flags.setupVars, "setup-var", map[string]string{}, "Specify outputs from the setup phase (useful with --stage=verify)") } var Cmd = &cobra.Command{ @@ -90,7 +92,7 @@ var runCmd = &cobra.Command{ if err != nil { return err } - testCmd, err := getTestCmd(intTestDir, testStage, args[0], relTestPkg) + testCmd, err := getTestCmd(intTestDir, testStage, args[0], relTestPkg, flags.setupVars) if err != nil { return err } diff --git a/cli/bptest/run.go b/cli/bptest/run.go index e1597e5d02a..6c64eb2af24 100644 --- a/cli/bptest/run.go +++ b/cli/bptest/run.go @@ -28,6 +28,8 @@ const ( // startBufSize is the initial of the buffer token maxScanTokenSize = 10 * 1024 * 1024 startBufSize = 4096 + // This must be kept in sync with what github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft parses. + setupEnvVarPrefix = "CFT_SETUP_" ) var allTestArgs = []string{"-p", "1", "-count", "1", "-timeout", "0"} @@ -99,13 +101,18 @@ func streamExec(cmd *exec.Cmd) error { } // getTestCmd returns a prepared cmd for running the specified tests(s) -func getTestCmd(intTestDir string, testStage string, testName string, relTestPkg string) (*exec.Cmd, error) { +func getTestCmd(intTestDir string, testStage string, testName string, relTestPkg string, setupVars map[string]string) (*exec.Cmd, error) { + // pass all current env vars to test command env := os.Environ() // set test stage env var if specified if testStage != "" { env = append(env, fmt.Sprintf("%s=%s", testStageEnvVarKey, testStage)) } + // Load the env with any setup-vars specified + for k, v := range setupVars { + env = append(env, fmt.Sprintf("%s%s=%s", setupEnvVarPrefix, k, v)) + } // determine binary and args used for test execution testArgs := append([]string{relTestPkg}, allTestArgs...) diff --git a/cli/bptest/run_test.go b/cli/bptest/run_test.go index 862eb53f956..15bf60ce409 100644 --- a/cli/bptest/run_test.go +++ b/cli/bptest/run_test.go @@ -68,7 +68,9 @@ func TestGetTestCmd(t *testing.T) { testStage string testName string relTestPkg string + setupVars map[string]string wantArgs []string + wantEnv []string errMsg string }{ { @@ -87,6 +89,15 @@ func TestGetTestCmd(t *testing.T) { testName: "TestFoo", testStage: "init", wantArgs: []string{"./...", "-run", "TestFoo", "-p", "1", "-count", "1", "-timeout", "0"}, + wantEnv: []string{"RUN_STAGE=init"}, + }, + { + name: "setup vars", + testName: "TestFoo", + testStage: "verify", + setupVars: map[string]string{"my-key": "my-value"}, + wantArgs: []string{"./...", "-run", "TestFoo", "-p", "1", "-count", "1", "-timeout", "0"}, + wantEnv: []string{"RUN_STAGE=verify", "CFT_SETUP_my-key=my-value"}, }, } for _, tt := range tests { @@ -98,7 +109,7 @@ func TestGetTestCmd(t *testing.T) { if tt.relTestPkg == "" { tt.relTestPkg = "./..." } - gotCmd, err := getTestCmd(tt.intTestDir, tt.testStage, tt.testName, tt.relTestPkg) + gotCmd, err := getTestCmd(tt.intTestDir, tt.testStage, tt.testName, tt.relTestPkg, tt.setupVars) if tt.errMsg != "" { assert.NotNil(err) assert.Contains(err.Error(), tt.errMsg) @@ -109,6 +120,7 @@ func TestGetTestCmd(t *testing.T) { assert.Contains(gotCmd.Env, fmt.Sprintf("RUN_STAGE=%s", tt.testStage)) } } + assert.Subset(gotCmd.Env, tt.wantEnv) }) } } diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 4e90ff11226..e08d0ccc9b9 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -70,6 +70,7 @@ type TFBlueprintTest struct { apply func(*assert.Assertions) // apply function verify func(*assert.Assertions) // verify function teardown func(*assert.Assertions) // teardown function + setupOutputOverrides map[string]interface{} // override outputs from the Setup phase } type tftOption func(*TFBlueprintTest) @@ -149,6 +150,13 @@ func WithLogger(logger *logger.Logger) tftOption { } } +// WithSetupOutputs overrides output values from the setup stage +func WithSetupOutputs(vars map[string]interface{}) tftOption { + return func(f *TFBlueprintTest) { + f.setupOutputOverrides = vars + } +} + // NewTFBlueprintTest sets defaults, validates and returns a TFBlueprintTest. func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { tft := &TFBlueprintTest{ @@ -216,6 +224,14 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { tft.logger.Logf(tft.t, "Skipping credential activation %s output from setup", setupKeyOutputName) } } + // Load env vars to supplement/override setup + tft.logger.Logf(tft.t, "Loading setup from environment") + if tft.setupOutputOverrides == nil { + tft.setupOutputOverrides = make(map[string]interface{}) + } + for k, v := range extractFromEnv("CFT_SETUP_") { + tft.setupOutputOverrides[k] = v + } tft.logger.Logf(tft.t, "Running tests TF configs in %s", tft.tfDir) return tft @@ -282,6 +298,13 @@ func (b *TFBlueprintTest) GetStringOutput(name string) string { // GetTFSetupOutputListVal returns TF output from setup for a given key as list. // It fails test if given key does not output a list type. func (b *TFBlueprintTest) GetTFSetupOutputListVal(key string) []string { + if v, ok := b.setupOutputOverrides[key]; ok { + if listval, ok := v.([]string); ok { + return listval + } else { + b.t.Fatalf("Setup Override %s is not a list value", key) + } + } if b.setupDir == "" { b.t.Fatal("Setup path not set") } @@ -291,6 +314,9 @@ func (b *TFBlueprintTest) GetTFSetupOutputListVal(key string) []string { // GetTFSetupStringOutput returns TF setup output for a given key as string. // It fails test if given key does not output a primitive or if setupDir is not configured. func (b *TFBlueprintTest) GetTFSetupStringOutput(key string) string { + if v, ok := b.setupOutputOverrides[key]; ok { + return v.(string) + } if b.setupDir == "" { b.t.Fatal("Setup path not set") } @@ -304,6 +330,24 @@ func loadTFEnvVar(m map[string]string, new map[string]string) { } } +// extractFromEnv parses environment variables with the given prefix, and returns a key-value map. +// e.g. CFT_SETUP_key=value returns map[string]string{"key": "value"} +func extractFromEnv(prefix string) map[string]interface{} { + r := make(map[string]interface{}) + for _, s := range os.Environ() { + k, v, ok := strings.Cut(s, "=") + if !ok { + // skip malformed entries in os.Environ + continue + } + // For env vars with the prefix, extract the key and value + if setupvar, ok := strings.CutPrefix(k, prefix); ok { + r[setupvar] = v + } + } + return r +} + // ShouldSkip checks if a test should be skipped func (b *TFBlueprintTest) ShouldSkip() bool { return b.BlueprintTestConfig.Spec.Skip diff --git a/infra/blueprint-test/pkg/tft/terraform_test.go b/infra/blueprint-test/pkg/tft/terraform_test.go index 150123e1572..7e2cc0cfd0c 100644 --- a/infra/blueprint-test/pkg/tft/terraform_test.go +++ b/infra/blueprint-test/pkg/tft/terraform_test.go @@ -75,20 +75,28 @@ output "simple_map" { } } -func getTFOutputMap(t *testing.T, tf string) map[string]interface{} { +// newTestDir creates a new directory suitable for use as TFDir +func newTestDir(t *testing.T, pattern string, input string) string { t.Helper() assert := assert.New(t) // setup tf file - tfDir, err := os.MkdirTemp("", "") + tfDir, err := os.MkdirTemp("", pattern) assert.NoError(err) - defer os.RemoveAll(tfDir) tfFilePath := path.Join(tfDir, "test.tf") - err = os.WriteFile(tfFilePath, []byte(tf), 0644) + err = os.WriteFile(tfFilePath, []byte(input), 0644) assert.NoError(err) + return tfDir +} + +func getTFOutputMap(t *testing.T, tf string) map[string]interface{} { + t.Helper() + + tfDir := newTestDir(t, "", tf) + defer os.RemoveAll(tfDir) // apply tf and get outputs - tOpts := &terraform.Options{TerraformDir: path.Dir(tfFilePath), Logger: logger.Discard} + tOpts := &terraform.Options{TerraformDir: tfDir, Logger: logger.Discard} terraform.Init(t, tOpts) terraform.Apply(t, tOpts) return terraform.OutputAll(t, tOpts) @@ -121,3 +129,146 @@ func TestGetKVFromOutputString(t *testing.T) { }) } } + +func TestSetupOverrideString(t *testing.T) { + tests := []struct { + name string + tfOutputs string + overrides map[string]interface{} + want map[string]string + }{ + {name: "no overrides", + tfOutputs: ` + output "simple_string" { + value = "foo" + } + + output "simple_num" { + value = 1 + } + + output "simple_bool" { + value = true + } + `, + overrides: map[string]interface{}{}, + want: map[string]string{ + "simple_string": "foo", + "simple_num": "1", + "simple_bool": "true", + }, + }, + {name: "all overrides", + tfOutputs: ` + output "simple_string" { + value = "foo" + } + + output "simple_num" { + value = 1 + } + + output "simple_bool" { + value = true + } + `, + overrides: map[string]interface{}{ + "simple_string": "bar", + "simple_num": "2", + "simple_bool": "false", + }, + want: map[string]string{ + "simple_string": "bar", + "simple_num": "2", + "simple_bool": "false", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + emptyDir := newTestDir(t, "empty*", "") + setupDir := newTestDir(t, "setup-*", tt.tfOutputs) + defer os.RemoveAll(emptyDir) + defer os.RemoveAll(setupDir) + b := NewTFBlueprintTest(&testingiface.RuntimeT{}, + WithSetupOutputs(tt.overrides), + WithTFDir(emptyDir), + WithSetupPath(setupDir)) + // create outputs from setup + _, err := terraform.ApplyE(t, &terraform.Options{TerraformDir: setupDir}) + if err != nil { + t.Fatalf("Failed to apply setup: %v", err) + } + for k, want := range tt.want { + if b.GetTFSetupStringOutput(k) != want { + t.Errorf("unexpected string output for %s: want %s got %s", k, want, b.GetStringOutput(k)) + } + } + }) + } +} +func TestSetupOverrideList(t *testing.T) { + tests := []struct { + name string + tfOutputs string + overrides map[string]interface{} + want map[string][]string + }{ + {name: "no overrides", + tfOutputs: ` + output "simple_list" { + value = ["foo","bar"] + } + `, + overrides: map[string]interface{}{}, + want: map[string][]string{ + "simple_list": {"foo", "bar"}, + }, + }, + {name: "all overrides", + tfOutputs: ` + output "simple_list" { + value = ["foo","bar"] + } + `, + overrides: map[string]interface{}{ + "simple_list": []string{"apple", "orange"}, + }, + want: map[string][]string{ + "simple_list": {"apple", "orange"}, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + emptyDir := newTestDir(t, "empty*", "") + setupDir := newTestDir(t, "setup-*", tt.tfOutputs) + defer os.RemoveAll(emptyDir) + defer os.RemoveAll(setupDir) + b := NewTFBlueprintTest(&testingiface.RuntimeT{}, + WithSetupOutputs(tt.overrides), + WithTFDir(emptyDir), + WithSetupPath(setupDir)) + // create outputs from setup + _, err := terraform.ApplyE(t, &terraform.Options{TerraformDir: setupDir}) + if err != nil { + t.Fatalf("Failed to apply setup: %v", err) + } + for k, want := range tt.want { + got := b.GetTFSetupOutputListVal(k) + assert.ElementsMatchf(t, got, want, "list mismatch: want %s got %s", want) + } + }) + } + +} + +func TestSetupOverrideFromEnv(t *testing.T) { + t.Setenv("CFT_SETUP_my-key", "my-value") + emptyDir := newTestDir(t, "empty*", "") + defer os.RemoveAll(emptyDir) + b := NewTFBlueprintTest(&testingiface.RuntimeT{}, + WithTFDir(emptyDir)) + got := b.GetTFSetupStringOutput("my-key") + assert.Equal(t, got, "my-value") +} From 34e31a20009850aea0934d6f473b13147431521c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 22 Sep 2023 17:59:25 +0200 Subject: [PATCH 0611/1371] fix(deps): update go modules (#1813) --- cli/go.mod | 68 ++++++++++++------------ cli/go.sum | 148 ++++++++++++++++++++++++++--------------------------- 2 files changed, 106 insertions(+), 110 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index a272bf166a7..28c311a1df0 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -4,15 +4,15 @@ go 1.20 require ( cloud.google.com/go/asset v1.14.1 - cloud.google.com/go/storage v1.32.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.0 + cloud.google.com/go/storage v1.33.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.15.0 github.com/gammazero/workerpool v1.1.3 - github.com/go-git/go-git/v5 v5.8.1 + github.com/go-git/go-git/v5 v5.9.0 github.com/golang/protobuf v1.5.3 - github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 + github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 github.com/google/go-cmp v0.5.9 github.com/google/go-github/v55 v55.0.0 github.com/hashicorp/hcl/v2 v2.18.0 @@ -36,59 +36,59 @@ require ( golang.org/x/exp v0.0.0-20230905200255-921286631fa9 golang.org/x/oauth2 v0.12.0 golang.org/x/text v0.13.0 - google.golang.org/api v0.138.0 + google.golang.org/api v0.141.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.3.0 ) require ( - cloud.google.com/go v0.110.6 // indirect + cloud.google.com/go v0.110.7 // indirect cloud.google.com/go/accesscontextmanager v1.8.1 // indirect cloud.google.com/go/compute v1.23.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.1 // indirect + cloud.google.com/go/iam v1.1.2 // indirect cloud.google.com/go/longrunning v0.5.1 // indirect cloud.google.com/go/orgpolicy v1.11.1 // indirect cloud.google.com/go/osconfig v1.12.1 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect - github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect + github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/cloudflare/circl v1.3.3 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.10.2 // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gammazero/deque v0.2.0 // indirect - github.com/go-errors/errors v1.4.2 // indirect + github.com/go-errors/errors v1.5.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.4.1 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-ini/ini v1.67.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.21.2 // indirect github.com/go-openapi/errors v0.20.2 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonpointer v0.20.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/loads v0.21.1 // indirect github.com/go-openapi/spec v0.20.4 // indirect github.com/go-openapi/strfmt v0.21.2 // indirect - github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-openapi/swag v0.22.4 // indirect github.com/go-openapi/validate v0.21.0 // indirect github.com/go-stack/stack v1.8.1 // indirect github.com/gobwas/glob v0.2.3 // indirect @@ -96,22 +96,22 @@ require ( github.com/golang/glog v1.1.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect - github.com/google/gnostic v0.6.9 // indirect + github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-github/v53 v53.2.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/s2a-go v0.1.5 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect - github.com/gruntwork-io/terratest v0.43.11 // indirect + github.com/gruntwork-io/terratest v0.43.13 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect - github.com/imdario/mergo v0.3.15 // indirect + github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -150,7 +150,7 @@ require ( github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect - github.com/tidwall/gjson v1.15.0 // indirect + github.com/tidwall/gjson v1.16.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect @@ -158,7 +158,7 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect - github.com/zclconf/go-cty v1.13.2 // indirect + github.com/zclconf/go-cty v1.14.0 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 // indirect @@ -179,28 +179,28 @@ require ( golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 // indirect - google.golang.org/grpc v1.57.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 // indirect + google.golang.org/grpc v1.58.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/api v0.27.2 // indirect + k8s.io/api v0.28.1 // indirect k8s.io/apiextensions-apiserver v0.27.2 // indirect - k8s.io/apimachinery v0.27.2 // indirect + k8s.io/apimachinery v0.28.1 // indirect k8s.io/apiserver v0.27.2 // indirect - k8s.io/client-go v0.27.2 // indirect + k8s.io/client-go v0.28.1 // indirect k8s.io/component-base v0.27.2 // indirect k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 // indirect + k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect k8s.io/kubectl v0.27.2 // indirect - k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/controller-runtime v0.15.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/kyaml v0.14.2 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/kustomize/kyaml v0.14.3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 3ec48a1a246..936604059dc 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -17,8 +17,8 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.110.6 h1:8uYAkj3YHTP/1iwReuHPxLSbdcyc+dSBbzFMrVwDR6Q= -cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= +cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= cloud.google.com/go/accesscontextmanager v1.8.1 h1:WIAt9lW9AXtqw/bnvrEUaE8VG/7bAAeMzRCBGMkc4+w= cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= cloud.google.com/go/asset v1.14.1 h1:vlHdznX70eYW4V1y1PxocvF6tEwxJTTarwIGwOhFF3U= @@ -36,8 +36,8 @@ cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGB cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y= -cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= +cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= cloud.google.com/go/orgpolicy v1.11.1 h1:I/7dHICQkNwym9erHqmlb50LRU588NPCvkfIY0Bx9jI= @@ -54,15 +54,15 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.32.0 h1:5w6DxEGOnktmJHarxAOUywxVW9lbNWIzlzzUltG/3+o= -cloud.google.com/go/storage v1.32.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= +cloud.google.com/go/storage v1.33.0 h1:PVrDOkIC8qQVa1P3SXGpQvfuJhN2LHOoyZvWs8D2X5M= +cloud.google.com/go/storage v1.33.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.0 h1:qir5eatHmGiaQ7CobiEjdzNWeSZ9ytQixsDKdr0gvuA= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.0/go.mod h1:KQlrvFQnkJHfAzJWKSC+JTGrXIBLI4UH8gLSh1EfoXM= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.1 h1:erzHPGm9u0JWWTLSHDRcPTV0CnEAVH1QmPoFDlYB/PU= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.1/go.mod h1:MKce59reXZa9rwYplsr7DBbDIw444JNZvH5hmGEMJTg= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -72,8 +72,8 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs= -github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= @@ -86,16 +86,14 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFI github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= -github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= -github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= @@ -134,6 +132,8 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= 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/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= 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= @@ -141,11 +141,10 @@ github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0 github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= -github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= -github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +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/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -163,7 +162,6 @@ github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= @@ -175,15 +173,15 @@ github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44 github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= -github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= +github.com/go-errors/errors v1.5.0/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= -github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= -github.com/go-git/go-git/v5 v5.8.1/go.mod h1:FHFuoD6yGz5OSKEBK+aWN9Oah0q54Jxl0abmj6GnqAo= +github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY= +github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -206,8 +204,9 @@ github.com/go-openapi/errors v0.20.2 h1:dxy7PGTqEh94zj2E3h1cUmQQWiM1+aeCROfAr02E github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +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.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= 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= @@ -222,8 +221,9 @@ github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrC github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= 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-openapi/validate v0.21.0 h1:+Wqk39yKOhfpLqNLEC0/eViCkzM5FVXVqrvt526+wcI= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -295,15 +295,15 @@ 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/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 h1:uK3X/2mt4tbSGoHvbLBHUny7CKiuwUip3MArtukol4E= -github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 h1:EcQR3gusLHN46TAD+G+EbaaqJArt5vHhNpXAa12PQf4= +github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= -github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= +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= @@ -346,12 +346,12 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.5 h1:8IYp3w9nysqv3JH+NJgXJzGbDHzLOTj43BmSkp+O7qg= -github.com/google/s2a-go v0.1.5/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -365,8 +365,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= 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/gruntwork-io/terratest v0.43.11 h1:k3U5lZjiNa38rqcTx/dus8cCaJY7qxShGIuGLeLfj/s= -github.com/gruntwork-io/terratest v0.43.11/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= +github.com/gruntwork-io/terratest v0.43.13 h1:/d0UeDj/FJM66VRP/3JA4mTw0z7BOm9ntHYfrTjIpY8= +github.com/gruntwork-io/terratest v0.43.13/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -386,8 +386,8 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +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/inconshreveable/log15 v2.16.0+incompatible h1:6nvMKxtGcpgm7q0KiGs+Vc+xDvUXaBqsPKHWKsinccw= github.com/inconshreveable/log15 v2.16.0+incompatible/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -418,12 +418,11 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= 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/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -476,7 +475,7 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= -github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f h1:dJDnp6A6LBrU/hbve5NzZNV3OzPYXdD0SJUn+xAPj+I= github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= @@ -516,7 +515,7 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 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.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= @@ -568,8 +567,8 @@ github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNG github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.15.0 h1:5n/pM+v3r5ujuNl4YLZLsQ+UE5jlkLVm7jMzT5Mpolw= -github.com/tidwall/gjson v1.15.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg= +github.com/tidwall/gjson v1.16.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= @@ -598,8 +597,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= -github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= +github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= +github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -646,7 +645,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= @@ -726,7 +724,6 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v 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-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= @@ -936,16 +933,17 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.138.0 h1:K/tVp05MxNVbHShRw9m7e9VJGdagNeTdMzqPH7AUqr0= -google.golang.org/api v0.138.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= +google.golang.org/api v0.141.0 h1:Df6vfMgDoIM6ss0m7H4MPwFwY87WNXHfBIda/Bmfl4E= +google.golang.org/api v0.141.0/go.mod h1:iZqLkdPlXKyG0b90eu6KxVSE4D/ccRF2e/doKD2CnQQ= 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= @@ -984,13 +982,12 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= -google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= -google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= -google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 h1:wukfNtZmZUurLN/atp2hiIeTKn7QJWIQdHzqmsOnAOk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 h1:o4LtQxebKIJ4vkzyhtD2rfUNZ20Zf0ik5YVP5E7G7VE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= 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= @@ -1011,9 +1008,8 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= -google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= +google.golang.org/grpc v1.58.0/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= @@ -1062,26 +1058,26 @@ 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.27.2 h1:+H17AJpUMvl+clT+BPnKf0E3ksMAzoBBg7CntpSuADo= -k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4= +k8s.io/api v0.28.1 h1:i+0O8k2NPBCPYaMB+uCkseEbawEt/eFaiRqUx8aB108= +k8s.io/api v0.28.1/go.mod h1:uBYwID+66wiL28Kn2tBjBYQdEU0Xk0z5qF8bIBqk/Dg= k8s.io/apiextensions-apiserver v0.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo= k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ= -k8s.io/apimachinery v0.27.2 h1:vBjGaKKieaIreI+oQwELalVG4d8f3YAMNpWLzDXkxeg= -k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= +k8s.io/apimachinery v0.28.1 h1:EJD40og3GizBSV3mkIoXQBsws32okPOy+MkRyzh6nPY= +k8s.io/apimachinery v0.28.1/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw= k8s.io/apiserver v0.27.2 h1:p+tjwrcQEZDrEorCZV2/qE8osGTINPuS5ZNqWAvKm5E= k8s.io/apiserver v0.27.2/go.mod h1:EsOf39d75rMivgvvwjJ3OW/u9n1/BmUMK5otEOJrb1Y= -k8s.io/client-go v0.27.2 h1:vDLSeuYvCHKeoQRhCXjxXO45nHVv2Ip4Fe0MfioMrhE= -k8s.io/client-go v0.27.2/go.mod h1:tY0gVmUsHrAmjzHX9zs7eCjxcBsf8IiNe7KQ52biTcQ= +k8s.io/client-go v0.28.1 h1:pRhMzB8HyLfVwpngWKE8hDcXRqifh1ga2Z/PU9SXVK8= +k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE= k8s.io/component-base v0.27.2 h1:neju+7s/r5O4x4/txeUONNTS9r1HsPbyoPBAtHsDCpo= k8s.io/component-base v0.27.2/go.mod h1:5UPk7EjfgrfgRIuDBFtsEFAe4DAvP3U+M8RTzoSJkpo= 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-20230525220651-2546d827e515 h1:OmK1d0WrkD3IPfkskvroRykOulHVHf0s0ZIFRjyt+UI= -k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ= +k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk= +k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= k8s.io/kubectl v0.27.2 h1:sSBM2j94MHBFRWfHIWtEXWCicViQzZsb177rNsKBhZg= k8s.io/kubectl v0.27.2/go.mod h1:GCOODtxPcrjh+EC611MqREkU8RjYBh10ldQCQ6zpFKw= -k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= -k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 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= @@ -1091,9 +1087,9 @@ sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUT sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= 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/kustomize/kyaml v0.14.2 h1:9WSwztbzwGszG1bZTziQUmVMrJccnyrLb5ZMKpJGvXw= -sigs.k8s.io/kustomize/kyaml v0.14.2/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= -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/kustomize/kyaml v0.14.3 h1:WpabVAKZe2YEp/irTSHwD6bfjwZnTtSDewd2BVJGMZs= +sigs.k8s.io/kustomize/kyaml v0.14.3/go.mod h1:npvh9epWysfQ689Rtt/U+dpOJDTBn8kUnF1O6VzvmZA= +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= From 8e7fc0a5c2a3ce0fe3f2fecaea11268979daa8d0 Mon Sep 17 00:00:00 2001 From: Brad Miro Date: Tue, 26 Sep 2023 20:55:41 -0400 Subject: [PATCH 0612/1371] feat: update locals.tf to add bradmiro as analytics lakehouse codeowner (#1861) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index a6f1f7b7795..3a7c466bb02 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -635,7 +635,7 @@ locals { name = "terraform-google-analytics-lakehouse" org = "GoogleCloudPlatform" description = "Deploys a Lakehouse Architecture Solution" - owners = ["davenportjw"] + owners = ["davenportjw", "bradmiro"] topics = local.common_topics.da groups = [local.jss_common_group] enable_periodic = true From 93f69814ef00063aedbcedf6a15460755d3597ce Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 28 Sep 2023 00:45:06 +0200 Subject: [PATCH 0613/1371] chore(deps): update github/codeql-action digest to ddccb87 (#1862) --- .github/workflows/codeql.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index fc08fffe6aa..dc94d0e9caf 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2 + uses: github/codeql-action/init@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2 + uses: github/codeql-action/autobuild@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2 + uses: github/codeql-action/analyze@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2 with: category: "/language:${{matrix.language}}" From 1d2ce9dfab7cef55d9c5f3b26b9913249fae29df Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 28 Sep 2023 00:59:46 +0200 Subject: [PATCH 0614/1371] chore(deps): update actions/checkout digest to 8ade135 (#1859) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 80f30ed13c6..a9f8ce6a7ad 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -19,7 +19,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index dc94d0e9caf..e9fd6a5a142 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 40aba38d61c..92468aaa4a3 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 358cb34df9f..76a45865634 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 459066d2a1d..752a335ade5 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac' # v4 + - uses: 'actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608' # v4 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 65775171807..97664b8ca8e 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4 - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index ae8175594f4..90c940598bc 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 2d0afd8a963..5764629b965 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 84a61b216f9..4467c20a004 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod From 77f2c58ae6f0f6be3ad94b1aafcc87e16861f376 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 29 Sep 2023 17:56:04 +0200 Subject: [PATCH 0615/1371] chore(deps): update module google.golang.org/api to v0.143.0 (#1866) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index b33af60fb9c..3ece895079a 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.7 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.142.0 + google.golang.org/api v0.143.0 ) require ( @@ -18,7 +18,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.3.1 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.1 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect @@ -33,7 +33,7 @@ require ( golang.org/x/term v0.12.0 // indirect golang.org/x/text v0.13.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect google.golang.org/grpc v1.57.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 8b23710fddd..b0a59acccb7 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -49,8 +49,8 @@ github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8 github.com/google/uuid v1.1.2/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/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= -github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= +github.com/googleapis/enterprise-certificate-proxy v0.3.1 h1:SBWmZhjUDRorQxrN0nwzf+AHBxnbFjViHQS4P0yVpmQ= +github.com/googleapis/enterprise-certificate-proxy v0.3.1/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/jedib0t/go-pretty/v6 v6.4.7 h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE= @@ -127,8 +127,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.142.0 h1:mf+7EJ94fi5ZcnpPy+m0Yv2dkz8bKm+UL0snTCuwXlY= -google.golang.org/api v0.142.0/go.mod h1:zJAN5o6HRqR7O+9qJUFOWrZkYE66RH+efPBdTLA4xBA= +google.golang.org/api v0.143.0 h1:o8cekTkqhywkbZT6p1UHJPZ9+9uuCAJs/KYomxZB8fA= +google.golang.org/api v0.143.0/go.mod h1:FoX9DO9hT7DLNn97OuoZAGSDuNAXdJRuGK98rSUgurk= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -136,10 +136,10 @@ google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= -google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb h1:Isk1sSH7bovx8Rti2wZK0UZF6oraBDK74uoyLEEVFN0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb h1:XFBgcDwm7irdHTbz4Zk2h7Mh+eis4nfJEFQFYzJzuIA= +google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 284bc7dbeb64ec61ba1011b2cd5009f1af4ec81d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 29 Sep 2023 18:13:48 +0200 Subject: [PATCH 0616/1371] chore(deps): update actions/checkout action to v4.1.0 (#1864) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 760a53e7ab3..f95b8dd7492 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -23,7 +23,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 76a45865634..a1d1fbe4fc4 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d359fe754a0..4d53de39eb5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: persist-credentials: false diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 3576826409c..741f3983cbd 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -30,7 +30,7 @@ jobs: update-tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: ref: master - name: Update Tools From 4d44899ed3f5aa2a1f3ffa29a59f1017da1ee868 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 29 Sep 2023 18:23:49 +0200 Subject: [PATCH 0617/1371] chore(deps): update github/codeql-action action to v2.21.9 (#1863) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 4d53de39eb5..783a60377f3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8 + uses: github/codeql-action/upload-sarif@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9 with: sarif_file: results.sarif From c9a300f565bb8b4b00bb95fa7c0ec652c538b967 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 29 Sep 2023 12:52:26 -0500 Subject: [PATCH 0618/1371] chore: Update Tools to 1.16.4 (#1856) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 7cd7759c1ef..9c8f5560a14 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.5.7 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 447.0.0 +CLOUD_SDK_VERSION := 448.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,11 +25,11 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.51.3 +TERRAGRUNT_VERSION := 0.51.7 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.1.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.44 +KPT_VERSION := 1.0.0-beta.45 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From dd35a3067df16f8abc42f57d5e47158a3161b798 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 29 Sep 2023 12:10:57 -0700 Subject: [PATCH 0619/1371] chore(master): release blueprint-test 0.9.0 (#1857) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Awais Malik --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2cf2a860409..bd933767918 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.8.1", + "infra/blueprint-test": "0.9.0", "infra/module-swapper": "0.2.2" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 6e517807f77..c8e68b2544b 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.9.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.8.1...infra/blueprint-test/v0.9.0) (2023-09-29) + + +### Features + +* allow user to specify/override outputs from the setup stage ([#1741](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1741)) ([8365efb](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8365efbff6938727ec712a86ad19cd973a2f064d)) + ## [0.8.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.8.0...infra/blueprint-test/v0.8.1) (2023-09-08) From e2a20dd13decf47d9caa91b8dbb5f5f97c4d2246 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 3 Oct 2023 13:31:09 -0700 Subject: [PATCH 0620/1371] chore: update renovate to widen tf (#1869) --- .github/renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index 064eb208fa0..69e40f263b0 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -23,7 +23,8 @@ }, { "matchPackageNames": ["google", "google-beta"], - "groupName": "terraform google provider" + "groupName": "terraform google provider", + "rangeStrategy": "widen" }, { "matchManagers": ["terraform"], From 2e0b1e78579d1b377a9cf0a86a37ae8d5634b5cf Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 4 Oct 2023 10:24:03 -0500 Subject: [PATCH 0621/1371] chore: Update Tools to 1.16.5 (#1870) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 9c8f5560a14..e5e02d76ddd 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.5.7 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 448.0.0 +CLOUD_SDK_VERSION := 449.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.51.7 +TERRAGRUNT_VERSION := 0.51.8 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.1.1 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From a2f832377e465a20068577d691468cba884ed0bc Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 4 Oct 2023 13:52:18 -0700 Subject: [PATCH 0622/1371] chore: centralize repo renovate config (#1871) --- infra/terraform/test-org/github/protection.tf | 4 ++-- .../test-org/github/resources/renovate-repo-config.json | 4 ++++ infra/terraform/test-org/github/resources/renovate.json | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 infra/terraform/test-org/github/resources/renovate-repo-config.json diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 97c9e789cbe..ef4a110c562 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -63,7 +63,7 @@ module "renovate_json_tgm" { source = "../../modules/repo_file" repo_list = { for k, v in module.repos_tgm.repos : k => v if k != "terraform-example-foundation" } filename = ".github/renovate.json" - content = file("${path.module}/resources/renovate.json") + content = file("${path.module}/resources/renovate-repo-config.json") providers = { github = github } } @@ -71,7 +71,7 @@ module "renovate_json_gcp" { source = "../../modules/repo_file" repo_list = module.repos_gcp.repos filename = ".github/renovate.json" - content = file("${path.module}/resources/renovate.json") + content = file("${path.module}/resources/renovate-repo-config.json") providers = { github = github.gcp } } diff --git a/infra/terraform/test-org/github/resources/renovate-repo-config.json b/infra/terraform/test-org/github/resources/renovate-repo-config.json new file mode 100644 index 00000000000..715e64bdeec --- /dev/null +++ b/infra/terraform/test-org/github/resources/renovate-repo-config.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["github>GoogleCloudPlatform/cloud-foundation-toolkit//infra/terraform/test-org/github/resources/renovate"] +} diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 96668148b9a..9a2cf894cd7 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -16,7 +16,7 @@ "constraints": {"go": "1.20"}, "packageRules": [ { - "matchFileNames": ["examples/**", "test/**", ".github/**"], + "matchFileNames": ["examples/**", "test/**", ".github/**", "infra/**"], "commitMessagePrefix": "chore(deps):" }, { @@ -42,7 +42,8 @@ }, { "matchDepNames": ["google", "google-beta"], - "groupName": "Terraform Google Provider" + "groupName": "Terraform Google Provider", + "rangeStrategy": "widen" } ], "regexManagers": [ From a1f74118fcb3fa8a3f89b35d3588de4256ee9165 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 5 Oct 2023 12:43:42 -0700 Subject: [PATCH 0623/1371] chore: use feat for widen strategy (#1873) --- infra/terraform/test-org/github/resources/renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 9a2cf894cd7..a36878875d7 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -43,7 +43,8 @@ { "matchDepNames": ["google", "google-beta"], "groupName": "Terraform Google Provider", - "rangeStrategy": "widen" + "rangeStrategy": "widen", + "commitMessagePrefix": "feat(deps):" } ], "regexManagers": [ From 6cdbed50f46007804fa41e8cde789dcadfb2705b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 16:18:10 -0700 Subject: [PATCH 0624/1371] chore(deps): bump golang.org/x/net from 0.15.0 to 0.17.0 in /infra/utils/fbf (#1875) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 8 ++++---- infra/utils/fbf/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 3ece895079a..b6bc87ad8d4 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -26,11 +26,11 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.13.0 // indirect - golang.org/x/net v0.15.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/term v0.12.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 google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index b0a59acccb7..e405e05b11e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -83,8 +83,8 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -96,8 +96,8 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +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= golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= @@ -112,10 +112,10 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +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.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= From 10ba51138264e1f675d851f4f8b08e15168c74ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 16:38:04 -0700 Subject: [PATCH 0625/1371] chore(deps): bump golang.org/x/net from 0.15.0 to 0.17.0 in /infra/module-swapper (#1877) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/module-swapper/go.mod | 6 +++--- infra/module-swapper/go.sum | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 5523f6f0d9d..5c556ba2660 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -24,10 +24,10 @@ require ( github.com/sergi/go-diff v1.3.1 // indirect github.com/skeema/knownhosts v1.2.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.13.0 // indirect + golang.org/x/crypto v0.14.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.15.0 // indirect - golang.org/x/sys v0.12.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect golang.org/x/tools v0.13.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 9b30f854783..2be41f1ea10 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -67,8 +67,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= @@ -80,8 +80,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -99,14 +99,14 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= From 334a17e81720b7235971b15ee26f6f6cbfb049c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Oct 2023 14:42:32 -0700 Subject: [PATCH 0626/1371] fix(deps): bump golang.org/x/net from 0.15.0 to 0.17.0 in /infra/blueprint-test (#1874) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 8 ++++---- infra/blueprint-test/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index c3a1a1628a9..f4f2ca6b391 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -81,12 +81,12 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/zclconf/go-cty v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.13.0 // indirect - golang.org/x/net v0.15.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/term v0.12.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/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 5933d4f5647..48cc831ca5f 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -523,8 +523,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -610,8 +610,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +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= 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= @@ -718,13 +718,13 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.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.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +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= 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= From 9c5098fd89f27b98eb4ac57a6b4219b78b1f79af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Oct 2023 14:49:33 -0700 Subject: [PATCH 0627/1371] chore(deps): bump golang.org/x/net from 0.15.0 to 0.17.0 in /cli (#1876) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli/go.mod | 8 ++++---- cli/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 28c311a1df0..53ad6f96993 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -170,12 +170,12 @@ require ( go.opentelemetry.io/otel/sdk v1.16.0 // indirect go.opentelemetry.io/otel/trace v1.16.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/crypto v0.13.0 // indirect + golang.org/x/crypto v0.14.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.15.0 // indirect + golang.org/x/net v0.17.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/term v0.12.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/term v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 936604059dc..b733d8addbc 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -649,8 +649,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -730,8 +730,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +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= 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= @@ -818,8 +818,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.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-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -827,8 +827,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +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= 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= From 51678173e129472a86047a7eff1dcf896e653558 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 16 Oct 2023 13:22:14 -0500 Subject: [PATCH 0628/1371] chore: Update Tools to 1.17.0 (#1872) Co-authored-by: Bharath KKB --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index e5e02d76ddd..5c1a63bad2d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.5.7 +TERRAFORM_VERSION := 1.6.1 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 449.0.0 +CLOUD_SDK_VERSION := 450.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,11 +25,11 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.51.8 +TERRAGRUNT_VERSION := 0.52.3 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.1.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.45 +KPT_VERSION := 1.0.0-beta.46 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 @@ -50,12 +50,12 @@ GOLANGCI_VERSION := 1.54.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.13.0 +GATOR_VERSION := 3.13.3 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 2c5c523a4d090b827c0ec3e7cd6a5d004da1782e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Oct 2023 00:54:11 +0200 Subject: [PATCH 0629/1371] chore(deps): update terraform google provider to v5 (#1868) Co-authored-by: Andrew Peabody --- cli/testdata/bpmetadata/tf/versions-beta.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/testdata/bpmetadata/tf/versions-beta.tf b/cli/testdata/bpmetadata/tf/versions-beta.tf index 2cfcd942689..0b18aa032c0 100644 --- a/cli/testdata/bpmetadata/tf/versions-beta.tf +++ b/cli/testdata/bpmetadata/tf/versions-beta.tf @@ -4,11 +4,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 4.4.0, < 5.0" + version = ">= 4.4.0, < 6" } google-beta = { source = "hashicorp/google-beta" - version = ">= 4.4.0, < 5.0" + version = ">= 4.4.0, < 6" } } From a7817a5e6f631be71ed1a3aa82cac99432bb5094 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 10:10:46 -0700 Subject: [PATCH 0630/1371] chore(master): release module-swapper 0.2.3 (#1879) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index bd933767918..f8d3807e3f3 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.9.0", - "infra/module-swapper": "0.2.2" + "infra/module-swapper": "0.2.3" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 9034f45bd8c..2b7beb7df7c 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.2...infra/module-swapper/v0.2.3) (2023-10-17) + + +### Bug Fixes + +* **deps:** bump golang.org/x/net from 0.15.0 to 0.17.0 in /infra/module-swapper ([#1877](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1877)) ([10ba511](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/10ba51138264e1f675d851f4f8b08e15168c74ad)) + ## [0.2.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.1...infra/module-swapper/v0.2.2) (2023-09-20) From 3024abbed70e7837758563d00c7ce9f4fbb8b366 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 15:04:17 -0700 Subject: [PATCH 0631/1371] chore(master): release blueprint-test 0.9.1 (#1880) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 4 ---- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 7 insertions(+), 4 deletions(-) delete mode 100644 .release-please-manifest.json diff --git a/.release-please-manifest.json b/.release-please-manifest.json deleted file mode 100644 index f8d3807e3f3..00000000000 --- a/.release-please-manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "infra/blueprint-test": "0.9.0", - "infra/module-swapper": "0.2.3" -} diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index c8e68b2544b..bcbee27be31 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.9.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.9.0...infra/blueprint-test/v0.9.1) (2023-10-17) + + +### Bug Fixes + +* **deps:** bump golang.org/x/net from 0.15.0 to 0.17.0 in /infra/blueprint-test ([#1874](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1874)) ([334a17e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/334a17e81720b7235971b15ee26f6f6cbfb049c8)) + ## [0.9.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.8.1...infra/blueprint-test/v0.9.0) (2023-09-29) From 3195e871e6d83009c892b95d6b3fd9acf3589ecb Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 19 Oct 2023 09:51:33 -0700 Subject: [PATCH 0632/1371] chore: add release-please-manifest.json (#1883) --- .release-please-manifest.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .release-please-manifest.json diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 00000000000..52617e85cc1 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,4 @@ +{ + "infra/blueprint-test": "0.9.10", + "infra/module-swapper": "0.2.3" +} From 6256bc8e662f4aa3e35cd7b65c7b02056be84c6d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 19 Oct 2023 10:19:56 -0700 Subject: [PATCH 0633/1371] chore: fix release-please-manifest.json (#1885) --- .release-please-manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 52617e85cc1..d51ba82c468 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.9.10", + "infra/blueprint-test": "0.9.1", "infra/module-swapper": "0.2.3" } From 577ad66cf11c8518067a5083495b18d156786159 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 19 Oct 2023 18:45:32 -0500 Subject: [PATCH 0634/1371] chore: Update Tools to 1.17.1 (#1881) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 5c1a63bad2d..4aa2c02b606 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.6.1 +TERRAFORM_VERSION := 1.6.2 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 450.0.0 +CLOUD_SDK_VERSION := 451.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -37,13 +37,13 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.2.6 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.26.9 +KUBECTL_VERSION := 1.26.10 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.48.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.18 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.2.2 +MODULE_SWAPPER_VERSION := 0.2.3 # For developer-tools-krm GOLANGCI_VERSION := 1.54.1 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 111f1de236270addd1fb0c961b506a1407b59dd2 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 20 Oct 2023 08:29:52 -0700 Subject: [PATCH 0635/1371] chore: remove provider version constraints (#1886) --- infra/blueprint-test/examples/simple_tf_module/versions.tf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/infra/blueprint-test/examples/simple_tf_module/versions.tf b/infra/blueprint-test/examples/simple_tf_module/versions.tf index 3aa2524f07c..28a17973531 100644 --- a/infra/blueprint-test/examples/simple_tf_module/versions.tf +++ b/infra/blueprint-test/examples/simple_tf_module/versions.tf @@ -18,12 +18,10 @@ terraform { required_version = ">= 0.13.0" required_providers { google = { - source = "hashicorp/google" - version = "< 5.0, >= 3.45" + source = "hashicorp/google" } null = { source = "hashicorp/null" - version = ">= 2.1" } } } From 4a8179f96b53dcd757be16d254fae3120b290aae Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 24 Oct 2023 16:32:44 -0700 Subject: [PATCH 0636/1371] chore: add dependabot.yml (#1891) --- .github/dependabot.yml | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..c967228d07a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,52 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: /.github + schedule: + interval: "daily" + commit-message: + prefix: "chore" + groups: + all: + patterns: + - "*" + - package-ecosystem: "gomod" + directory: /cli + schedule: + interval: "daily" + commit-message: + prefix: "fix" + groups: + all: + patterns: + - "*" + - package-ecosystem: "gomod" + directory: /infra/blueprint-test + schedule: + interval: "daily" + commit-message: + prefix: "fix" + groups: + all: + patterns: + - "*" + - package-ecosystem: "gomod" + directory: /infra/module-swapper + schedule: + interval: "daily" + commit-message: + prefix: "fix" + groups: + all: + patterns: + - "*" + - package-ecosystem: "gomod" + directory: /infra/utils/fbf + schedule: + interval: "daily" + commit-message: + prefix: "fix" + groups: + all: + patterns: + - "*" From 05757d901b2c53ab28904ad03557168c44215b81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 08:49:11 -0700 Subject: [PATCH 0637/1371] fix: bump the all group in /infra/module-swapper with 1 update (#1897) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 5c556ba2660..731dc0cdea6 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swap go 1.20 require ( - github.com/go-git/go-git/v5 v5.9.0 + github.com/go-git/go-git/v5 v5.10.0 github.com/pmezard/go-difflib v1.0.0 ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 2be41f1ea10..fd330fa4921 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -25,9 +25,9 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66D github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY= -github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git/v5 v5.10.0 h1:F0x3xXrAWmhwtzoCokU4IMPcBdncG+HAAqi9FcOOjbQ= +github.com/go-git/go-git/v5 v5.10.0/go.mod h1:1FOZ/pQnqw24ghP2n7cunVl0ON55BsjPYvhWHvZGhoo= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= From df69583d3fdad5626e8cbf90f2c787428d064a48 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 25 Oct 2023 18:57:12 +0200 Subject: [PATCH 0638/1371] fix(deps): update go modules (#1865) Co-authored-by: Andrew Peabody --- infra/blueprint-test/go.mod | 8 ++++---- infra/blueprint-test/go.sum | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index f4f2ca6b391..78f4663a879 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -6,12 +6,12 @@ require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/gruntwork-io/terratest v0.43.13 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/otiai10/copy v1.12.0 + github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.8.4 - github.com/tidwall/gjson v1.16.0 + github.com/tidwall/gjson v1.17.0 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.12.0 - sigs.k8s.io/kustomize/kyaml v0.14.3 + golang.org/x/mod v0.13.0 + sigs.k8s.io/kustomize/kyaml v0.15.0 ) require ( diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 48cc831ca5f..3dbcb679e68 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -447,8 +447,8 @@ 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/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= -github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= -github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -479,8 +479,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o 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/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg= -github.com/tidwall/gjson v1.16.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= +github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -561,8 +561,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -797,7 +797,7 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= 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= @@ -1068,8 +1068,8 @@ 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/kyaml v0.14.3 h1:WpabVAKZe2YEp/irTSHwD6bfjwZnTtSDewd2BVJGMZs= -sigs.k8s.io/kustomize/kyaml v0.14.3/go.mod h1:npvh9epWysfQ689Rtt/U+dpOJDTBn8kUnF1O6VzvmZA= +sigs.k8s.io/kustomize/kyaml v0.15.0 h1:ynlLMAxDhrY9otSg5GYE2TcIz31XkGZ2Pkj7SdolD84= +sigs.k8s.io/kustomize/kyaml v0.15.0/go.mod h1:+uMkBahdU1KNOj78Uta4rrXH+iH7wvg+nW7+GULvREA= 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= From 4b8bc3bb5e47e07f987922a76c68033b585a03b5 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 25 Oct 2023 10:19:43 -0700 Subject: [PATCH 0639/1371] chore: update dependabot.yml (#1903) --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c967228d07a..72f46e16880 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,7 +1,7 @@ version: 2 updates: - package-ecosystem: "github-actions" - directory: /.github + directory: / schedule: interval: "daily" commit-message: From 66b4df166a54628c5fe1ea5c867daaf09a4e24f7 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 25 Oct 2023 10:20:43 -0700 Subject: [PATCH 0640/1371] chore: update update-tooling.yml (#1904) --- .github/workflows/update-tooling.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 741f3983cbd..ffa54c0ab6d 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -8,8 +8,6 @@ on: push: branches: - "master" - paths: - - "infra/build/Makefile" env: TERRAFORM_URL: "https://api.github.com/repos/hashicorp/terraform/releases/latest" From 9c67dc1a75355235992bfd26533f32f4c51e487e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 25 Oct 2023 10:33:33 -0700 Subject: [PATCH 0641/1371] fix: bump fbf to go 1.20 (#1899) --- infra/utils/fbf/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index b6bc87ad8d4..088012d6f0a 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/utils/fbf -go 1.18 +go 1.20 require ( github.com/briandowns/spinner v1.23.0 From 41821c2107074fa90994f24eba233831e746a4de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:48:33 -0700 Subject: [PATCH 0642/1371] chore: bump the all group with 4 updates (#1905) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 8 ++++---- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 4 ++-- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 6 +++--- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 12 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index a9f8ce6a7ad..64d0d16e988 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -19,7 +19,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e9fd6a5a142..8596039961d 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,11 +50,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2 + uses: github/codeql-action/init@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2 + uses: github/codeql-action/autobuild@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2 + uses: github/codeql-action/analyze@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 92468aaa4a3..fb7663f99c6 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index f95b8dd7492..219c7491fb7 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -23,7 +23,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index a1d1fbe4fc4..ab2ed248e54 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 752a335ade5..84e19e57f7d 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608' # v4 + - uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' # v4 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 97664b8ca8e..c9f447ba92a 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4 - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 90c940598bc..a4ba00d5920 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 783a60377f3..a5b49dc0492 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,12 +32,12 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0 + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 with: results_file: results.sarif results_format: sarif @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9 + uses: github/codeql-action/upload-sarif@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 with: sarif_file: results.sarif diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 5764629b965..8b9510d570e 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 4467c20a004..f8f721da63e 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ffa54c0ab6d..8c3a1501f91 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -28,7 +28,7 @@ jobs: update-tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: master - name: Update Tools From 85901242ca312c6603b49c144e124c9921b42c7f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 11:44:17 -0700 Subject: [PATCH 0643/1371] fix: bump the all group in /infra/utils/fbf with 2 updates (#1894) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 10 +++++----- infra/utils/fbf/go.sum | 28 ++++++++++++++-------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 088012d6f0a..a520052086a 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,9 +4,9 @@ go 1.20 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.4.7 + github.com/jedib0t/go-pretty/v6 v6.4.8 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.143.0 + google.golang.org/api v0.148.0 ) require ( @@ -28,13 +28,13 @@ require ( go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.14.0 // indirect golang.org/x/net v0.17.0 // indirect - golang.org/x/oauth2 v0.12.0 // indirect + golang.org/x/oauth2 v0.13.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 google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect - google.golang.org/grpc v1.57.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a // indirect + google.golang.org/grpc v1.58.3 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index e405e05b11e..b5aabb34308 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -43,7 +43,7 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -53,8 +53,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.1 h1:SBWmZhjUDRorQxrN0nw github.com/googleapis/enterprise-certificate-proxy v0.3.1/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/jedib0t/go-pretty/v6 v6.4.7 h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE= -github.com/jedib0t/go-pretty/v6 v6.4.7/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/jedib0t/go-pretty/v6 v6.4.8 h1:HiNzyMSEpsBaduKhmK+CwcpulEeBrTmxutz4oX/oWkg= +github.com/jedib0t/go-pretty/v6 v6.4.8/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -99,12 +99,12 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY 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= -golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -127,8 +127,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.143.0 h1:o8cekTkqhywkbZT6p1UHJPZ9+9uuCAJs/KYomxZB8fA= -google.golang.org/api v0.143.0/go.mod h1:FoX9DO9hT7DLNn97OuoZAGSDuNAXdJRuGK98rSUgurk= +google.golang.org/api v0.148.0 h1:HBq4TZlN4/1pNcu0geJZ/Q50vIwIXT532UIMYoo0vOs= +google.golang.org/api v0.148.0/go.mod h1:8/TBgwaKjfqTdacOJrOv2+2Q6fBDU1uHKK06oGSkxzU= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -136,17 +136,17 @@ google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb h1:XFBgcDwm7irdHTbz4Zk2h7Mh+eis4nfJEFQFYzJzuIA= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 h1:SeZZZx0cP0fqUyA+oRzP9k7cSwJlvDFiROO72uwD6i0= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a h1:a2MQQVoTo96JC9PMGtGBymLp7+/RzpFc2yX/9WfFg1c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= -google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +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= From 5f118ff4fcc31a1ef887b6f13bf76da3c13cd15d Mon Sep 17 00:00:00 2001 From: HuixinLai <55810452+HuixinLai@users.noreply.github.com> Date: Wed, 25 Oct 2023 13:40:33 -0700 Subject: [PATCH 0644/1371] feat: add `level` to blueprint metadata ui proto (#1893) Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui.pb.go | 126 ++++++++++-------- cli/bpmetadata/proto/bpmetadata_ui.proto | 9 ++ .../schema/gcp-blueprint-metadata.json | 3 + 4 files changed, 84 insertions(+), 56 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 9d82f37c491..dc5721d9b9c 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.6 +VERSION=v1.2.7 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index 8811ca95744..7723dc96401 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -155,6 +155,14 @@ type DisplayVariable struct { // Values must be UTF-8 text with no markup, and at most 64 characters. // Gen: manually-authored EnumValueLabels []*ValueLabel `protobuf:"bytes,17,rep,name=enum_value_labels,json=enumValueLabels,proto3" json:"enumValueLabels,omitempty" yaml:"enumValueLabels,omitempty"` // @gotags: json:"enumValueLabels,omitempty" yaml:"enumValueLabels,omitempty" + // Indicates the "advanced" level of the input property. Level 0 (default) + // will always be shown. Level 1 corresponds to one expansion (user clicks + // "show advanced options" or "more options"). Higher levels correspond to + // further expansions, or they may be collapsed to level 1 by the UI + // implementation. + // Optional. + // Gen: manually-authored + Level int32 `protobuf:"varint,18,opt,name=level,proto3" json:"level,omitempty" yaml:"level,omitempty"` // @gotags: json:"level,omitempty" yaml:"level,omitempty" } func (x *DisplayVariable) Reset() { @@ -308,6 +316,13 @@ func (x *DisplayVariable) GetEnumValueLabels() []*ValueLabel { return nil } +func (x *DisplayVariable) GetLevel() int32 { + if x != nil { + return x.Level + } + return 0 +} + type ValueLabel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -704,7 +719,7 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xed, 0x04, + 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x05, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, @@ -743,61 +758,62 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0f, 0x65, 0x6e, - 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x38, 0x0a, - 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, - 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, - 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, + 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, + 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, + 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, + 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, + 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, - 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, - 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, - 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, - 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x68, 0x0a, 0x0d, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, - 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, - 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, - 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, - 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, + 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, + 0x49, 0x66, 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, + 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, + 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, + 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index b053b71f2e4..ddbb7401327 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -103,6 +103,15 @@ message DisplayVariable { // Values must be UTF-8 text with no markup, and at most 64 characters. // Gen: manually-authored repeated ValueLabel enum_value_labels = 17; // @gotags: json:"enumValueLabels,omitempty" yaml:"enumValueLabels,omitempty" + + // Indicates the "advanced" level of the input property. Level 0 (default) + // will always be shown. Level 1 corresponds to one expansion (user clicks + // "show advanced options" or "more options"). Higher levels correspond to + // further expansions, or they may be collapsed to level 1 by the UI + // implementation. + // Optional. + // Gen: manually-authored + int32 level = 18; // @gotags: json:"level,omitempty" yaml:"level,omitempty" } message ValueLabel { diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index d74e60607fc..d066dbb8023 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -708,6 +708,9 @@ "$ref": "#/$defs/ValueLabel" }, "type": "array" + }, + "level": { + "type": "integer" } }, "additionalProperties": false, From c57effdb061cbf9fb78868a588ea7a65a86746c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 14:32:48 -0700 Subject: [PATCH 0645/1371] fix: bump the all group in /cli with 14 updates (#1900) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- cli/bpmetadata/schema/generate.go | 2 +- cli/go.mod | 82 ++++++------ cli/go.sum | 206 +++++++++++++----------------- 3 files changed, 134 insertions(+), 156 deletions(-) diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go index 6d69ea94b4f..1f72bc357cb 100644 --- a/cli/bpmetadata/schema/generate.go +++ b/cli/bpmetadata/schema/generate.go @@ -49,7 +49,7 @@ func GenerateSchema() ([]byte, error) { // true i.e. it's presence is validated regardless of type. vDef, defExists := s.Definitions["BlueprintVariable"] if defExists { - vDef.Properties.Set("defaultValue", true) + vDef.Properties.Set("defaultValue", jsonschema.TrueSchema) } sData, err := json.MarshalIndent(s, "", " ") diff --git a/cli/go.mod b/cli/go.mod index 53ad6f96993..dca160c2312 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,47 +3,47 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.20 require ( - cloud.google.com/go/asset v1.14.1 + cloud.google.com/go/asset v1.15.1 cloud.google.com/go/storage v1.33.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.15.0 github.com/gammazero/workerpool v1.1.3 - github.com/go-git/go-git/v5 v5.9.0 + github.com/go-git/go-git/v5 v5.10.0 github.com/golang/protobuf v1.5.3 github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 - github.com/google/go-cmp v0.5.9 + github.com/google/go-cmp v0.6.0 github.com/google/go-github/v55 v55.0.0 - github.com/hashicorp/hcl/v2 v2.18.0 + github.com/hashicorp/hcl/v2 v2.19.1 github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible - github.com/invopop/jsonschema v0.8.0 + github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.4.7 + github.com/jedib0t/go-pretty/v6 v6.4.8 github.com/manifoldco/promptui v0.9.0 - github.com/migueleliasweb/go-github-mock v0.0.19 + github.com/migueleliasweb/go-github-mock v0.0.20 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.56.0 - github.com/otiai10/copy v1.12.0 + github.com/open-policy-agent/opa v0.57.1 + github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.7.0 - github.com/spf13/viper v1.16.0 + github.com/spf13/viper v1.17.0 github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20230905200255-921286631fa9 - golang.org/x/oauth2 v0.12.0 + golang.org/x/oauth2 v0.13.0 golang.org/x/text v0.13.0 - google.golang.org/api v0.141.0 + google.golang.org/api v0.148.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v3 v3.0.1 - sigs.k8s.io/yaml v1.3.0 + sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.110.7 // indirect + cloud.google.com/go v0.110.8 // indirect cloud.google.com/go/accesscontextmanager v1.8.1 // indirect cloud.google.com/go/compute v1.23.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect @@ -61,14 +61,16 @@ require ( github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect + github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/buger/jsonparser v1.1.1 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect @@ -97,20 +99,18 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-github/v53 v53.2.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.3.1 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.1 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/mux v1.8.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect github.com/gruntwork-io/terratest v0.43.13 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect @@ -131,29 +131,32 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f // indirect github.com/open-policy-agent/gatekeeper/v3 v3.13.0 // indirect - github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // 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/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect + github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.2.0 // indirect - github.com/spf13/afero v1.9.5 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.10.0 // indirect github.com/spf13/cast v1.5.1 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect - github.com/subosito/gotenv v1.4.2 // indirect + github.com/subosito/gotenv v1.6.0 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect github.com/tidwall/gjson v1.16.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect + github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect @@ -161,29 +164,30 @@ require ( github.com/zclconf/go-cty v1.14.0 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 // indirect - go.opentelemetry.io/otel v1.16.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 // indirect - go.opentelemetry.io/otel/metric v1.16.0 // indirect - go.opentelemetry.io/otel/sdk v1.16.0 // indirect - go.opentelemetry.io/otel/trace v1.16.0 // indirect - go.opentelemetry.io/proto/otlp v0.19.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect + go.opentelemetry.io/otel v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect + go.opentelemetry.io/otel/metric v1.19.0 // indirect + go.opentelemetry.io/otel/sdk v1.19.0 // indirect + go.opentelemetry.io/otel/trace v1.19.0 // indirect + go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.9.0 // indirect golang.org/x/crypto v0.14.0 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.17.0 // indirect - golang.org/x/sync v0.3.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/time v0.3.0 // indirect golang.org/x/tools v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 // indirect - google.golang.org/grpc v1.58.0 // indirect + google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a // indirect + google.golang.org/grpc v1.58.3 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index b733d8addbc..b561de50000 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -17,12 +17,12 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= -cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go/accesscontextmanager v1.8.1 h1:WIAt9lW9AXtqw/bnvrEUaE8VG/7bAAeMzRCBGMkc4+w= cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= -cloud.google.com/go/asset v1.14.1 h1:vlHdznX70eYW4V1y1PxocvF6tEwxJTTarwIGwOhFF3U= -cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= +cloud.google.com/go/asset v1.15.1 h1:+9f5/s/U0AGZSPLTOMcXSZ5NDB5jQ2Szr+WQPgPA8bk= +cloud.google.com/go/asset v1.15.1/go.mod h1:yX/amTvFWRpp5rcFq6XbCxzKT8RJUam1UoboE179jU4= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -31,7 +31,6 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= @@ -61,14 +60,13 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.1 h1:erzHPGm9u0JWWTLSHDRcPTV0CnEAVH1QmPoFDlYB/PU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.8.1/go.mod h1:MKce59reXZa9rwYplsr7DBbDIw444JNZvH5hmGEMJTg= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.1 h1:GgBjJ6MwjDOS+A14d4neKrhraeGW32EefyzkfrKheXI= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.1/go.mod h1:ZWmQ7t9ySG4GNn5CXKWQS8+UX7qkWmQUxSN2iAFEhvE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= @@ -83,7 +81,6 @@ github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= @@ -94,12 +91,15 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= +github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= +github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= @@ -108,8 +108,6 @@ github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqy github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/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 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= @@ -125,18 +123,14 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUK github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= 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/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= @@ -152,8 +146,6 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= @@ -171,7 +163,6 @@ github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= github.com/go-errors/errors v1.5.0/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= @@ -179,9 +170,9 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66D github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY= -github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git/v5 v5.10.0 h1:F0x3xXrAWmhwtzoCokU4IMPcBdncG+HAAqi9FcOOjbQ= +github.com/go-git/go-git/v5 v5.10.0/go.mod h1:1FOZ/pQnqw24ghP2n7cunVl0ON55BsjPYvhWHvZGhoo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -260,7 +251,6 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.1 h1:jxpi2eWoU84wbX9iIEyAeeoac3FLuifZpY9tcNUD9kw= github.com/golang/glog v1.1.1/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -315,13 +305,9 @@ github.com/google/go-cmp v0.5.2/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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github/v53 v53.0.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= -github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= -github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= +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/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg= github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= @@ -352,8 +338,8 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.2/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/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= -github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= +github.com/googleapis/enterprise-certificate-proxy v0.3.1 h1:SBWmZhjUDRorQxrN0nwzf+AHBxnbFjViHQS4P0yVpmQ= +github.com/googleapis/enterprise-certificate-proxy v0.3.1/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= 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/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= @@ -361,10 +347,8 @@ github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qK github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -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.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/gruntwork-io/terratest v0.43.13 h1:/d0UeDj/FJM66VRP/3JA4mTw0z7BOm9ntHYfrTjIpY8= github.com/gruntwork-io/terratest v0.43.13/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -376,12 +360,10 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= -github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= +github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= +github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 h1:SzE5lAYh9XXR3b1q3p3uBNqEY+syiiLZiFCIvr/JTsg= github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= -github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= -github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -393,16 +375,16 @@ github.com/inconshreveable/log15 v2.16.0+incompatible/go.mod h1:cOaXtrgN4ScfRrD9 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/invopop/jsonschema v0.8.0 h1:9Vblm5uNqURXUSaX0QUYcI/Hcu5rrvOz5MbpWgw0VkM= -github.com/invopop/jsonschema v0.8.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= +github.com/invopop/jsonschema v0.12.0 h1:6ovsNSuvn9wEQVOyc72aycBMVQFKz7cPdMJn10CvzRI= +github.com/invopop/jsonschema v0.12.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/itchyny/json2yaml v0.1.4 h1:/pErVOXGG5iTyXHi/QKR4y3uzhLjGTEmmJIy97YT+k8= github.com/itchyny/json2yaml v0.1.4/go.mod h1:6iudhBZdarpjLFRNj+clWLAkGft+9uCcjAZYXUH9eGI= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.4.7 h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE= -github.com/jedib0t/go-pretty/v6 v6.4.7/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/jedib0t/go-pretty/v6 v6.4.8 h1:HiNzyMSEpsBaduKhmK+CwcpulEeBrTmxutz4oX/oWkg= +github.com/jedib0t/go-pretty/v6 v6.4.8/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -418,7 +400,7 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -453,8 +435,8 @@ github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= -github.com/migueleliasweb/go-github-mock v0.0.19 h1:z/88f6wPqZVFnE7s9DbwXMhCtmV/0FofNxc4M7FuSdU= -github.com/migueleliasweb/go-github-mock v0.0.19/go.mod h1:dBoCB3W9NjzyABhoGkfI0iSlFpzulAXhI7M+9A4ONYI= +github.com/migueleliasweb/go-github-mock v0.0.20 h1:lD0+ezomm5yjfQjQwQCUYfS0IvnkGm2Whx1NtRtnFEQ= +github.com/migueleliasweb/go-github-mock v0.0.20/go.mod h1:tZKca2WcxfTR+gclTMCssA4bUNM+F3hW9aW/fkmPeZU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -480,14 +462,14 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.56.0 h1:FUSb6MyckjuffOMshEG8P+HGnckxkJ8ENZJHEzAddhk= -github.com/open-policy-agent/opa v0.56.0/go.mod h1:un01L10fkolr00KJMDSqGb2FXCjVyVQOybLtHOfSEfY= -github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= -github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/open-policy-agent/opa v0.57.1 h1:LAa4Z0UkpjV94nRLy6XCvgOacQ6N1jf8TJLMUIzFRqc= +github.com/open-policy-agent/opa v0.57.1/go.mod h1:YYcVsWcdOW47owR0zElx8HPYZK60vL0MOPsEmh13us4= +github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= -github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +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/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -496,8 +478,9 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -511,12 +494,15 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= +github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -527,21 +513,20 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= 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/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= -github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= +github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -550,7 +535,6 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/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= @@ -559,11 +543,10 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 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.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 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/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -577,6 +560,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= +github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= @@ -611,28 +596,27 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY7+onl4qN1vl0xW/V/v6OBZ0vVdH+esuJgvmM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0/go.mod h1:XiYsayHc36K3EByOO6nbAXnAWbrUxdjUROCEeeROOH8= -go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s= -go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 h1:cbsD4cUcviQGXdw8+bo5x2wazq10SKz8hEbtCRPcU78= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0/go.mod h1:JgXSGah17croqhJfhByOLVY719k1emAXC8MVhCIJlRs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 h1:TVQp/bboR4mhZSav+MdgXB8FaRho1RC8UwVn3T0vjVc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0/go.mod h1:I33vtIe0sR96wfrUcilIzLoA3mLHhRmz9S9Te0S3gDo= -go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo= -go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= -go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= -go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= -go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= -go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q= +go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= +go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 h1:3d+S281UTjM+AbF31XSOYn1qXn3BgIdWl8HNEpx08Jk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= +go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= +go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= +go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= +go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= +go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= 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= @@ -649,6 +633,7 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -722,7 +707,6 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 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-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -741,10 +725,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +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= @@ -758,8 +740,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/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.1.0/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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -800,11 +782,9 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -818,6 +798,7 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.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-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -827,6 +808,7 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= 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= @@ -843,6 +825,7 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 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/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -933,8 +916,8 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.141.0 h1:Df6vfMgDoIM6ss0m7H4MPwFwY87WNXHfBIda/Bmfl4E= -google.golang.org/api v0.141.0/go.mod h1:iZqLkdPlXKyG0b90eu6KxVSE4D/ccRF2e/doKD2CnQQ= +google.golang.org/api v0.148.0 h1:HBq4TZlN4/1pNcu0geJZ/Q50vIwIXT532UIMYoo0vOs= +google.golang.org/api v0.148.0/go.mod h1:8/TBgwaKjfqTdacOJrOv2+2Q6fBDU1uHKK06oGSkxzU= 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= @@ -967,7 +950,6 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= @@ -981,13 +963,12 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 h1:o4LtQxebKIJ4vkzyhtD2rfUNZ20Zf0ik5YVP5E7G7VE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 h1:SeZZZx0cP0fqUyA+oRzP9k7cSwJlvDFiROO72uwD6i0= +google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a h1:a2MQQVoTo96JC9PMGtGBymLp7+/RzpFc2yX/9WfFg1c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/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= @@ -1001,15 +982,11 @@ 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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= -google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +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= @@ -1022,8 +999,6 @@ 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/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/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1040,7 +1015,6 @@ gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= @@ -1091,5 +1065,5 @@ sigs.k8s.io/kustomize/kyaml v0.14.3 h1:WpabVAKZe2YEp/irTSHwD6bfjwZnTtSDewd2BVJGM sigs.k8s.io/kustomize/kyaml v0.14.3/go.mod h1:npvh9epWysfQ689Rtt/U+dpOJDTBn8kUnF1O6VzvmZA= 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= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From 5af907153307d9acc8cec009b468bdbe9a2a7bff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 15:39:25 -0700 Subject: [PATCH 0646/1371] fix: bump google.golang.org/grpc from 1.58.0 to 1.58.3 in /infra/blueprint-test (#1906) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 78f4663a879..240484cabcd 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -95,7 +95,7 @@ require ( google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/grpc v1.58.0 // 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 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 3dbcb679e68..ec522cbacd7 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -1008,8 +1008,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= -google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +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/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= From 5644c507b05647bf13778e78d313f70872654f81 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 16:29:39 -0700 Subject: [PATCH 0647/1371] chore(master): release blueprint-test 0.9.2 (#1901) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d51ba82c468..d5f8cabc42b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.9.1", + "infra/blueprint-test": "0.9.2", "infra/module-swapper": "0.2.3" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index bcbee27be31..c40b6c2b383 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.9.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.9.1...infra/blueprint-test/v0.9.2) (2023-10-25) + + +### Bug Fixes + +* bump google.golang.org/grpc from 1.58.0 to 1.58.3 in /infra/blueprint-test ([#1906](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1906)) ([5af9071](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/5af907153307d9acc8cec009b468bdbe9a2a7bff)) +* **deps:** update go modules ([#1865](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1865)) ([df69583](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/df69583d3fdad5626e8cbf90f2c787428d064a48)) + ## [0.9.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.9.0...infra/blueprint-test/v0.9.1) (2023-10-17) From 9d0594b92c4a09dbfa32c4d43023ecf4b712d55c Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 16:51:54 -0700 Subject: [PATCH 0648/1371] chore(master): release module-swapper 0.2.4 (#1898) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d5f8cabc42b..183b9600575 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.9.2", - "infra/module-swapper": "0.2.3" + "infra/module-swapper": "0.2.4" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 2b7beb7df7c..7bca489bb16 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.3...infra/module-swapper/v0.2.4) (2023-10-25) + + +### Bug Fixes + +* bump the all group in /infra/module-swapper with 1 update ([#1897](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1897)) ([05757d9](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/05757d901b2c53ab28904ad03557168c44215b81)) + ## [0.2.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.2...infra/module-swapper/v0.2.3) (2023-10-17) From 10c20572c8a2e85c1e37394fc03ca49ccd1f8ab0 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 25 Oct 2023 19:01:55 -0500 Subject: [PATCH 0649/1371] chore: Update Tools to 1.17.2 (#1887) --- infra/build/Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 4aa2c02b606..20f56c00151 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.6.2 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 451.0.1 +CLOUD_SDK_VERSION := 452.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,17 +25,17 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.52.3 +TERRAGRUNT_VERSION := 0.52.5 # Updated by Update Tooling Workflow -KUSTOMIZE_VERSION := 5.1.1 +KUSTOMIZE_VERSION := 5.2.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.46 +KPT_VERSION := 1.0.0-beta.47 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.6 +CFT_CLI_VERSION := 1.2.7 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.10 # Updated by Update Tooling Workflow @@ -43,7 +43,7 @@ TFLINT_VERSION := 0.48.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.18 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.2.3 +MODULE_SWAPPER_VERSION := 0.2.4 # For developer-tools-krm GOLANGCI_VERSION := 1.54.1 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 710adbb89c6c5e9630f9f1af01899724a59eb15a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Oct 2023 15:21:20 -0700 Subject: [PATCH 0650/1371] fix: bump the all group in /cli with 1 update (#1909) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli/go.mod | 8 ++++---- cli/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index dca160c2312..e2f18bc30f3 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -5,7 +5,7 @@ go 1.20 require ( cloud.google.com/go/asset v1.15.1 cloud.google.com/go/storage v1.33.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.2 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.15.0 @@ -152,7 +152,7 @@ require ( github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect - github.com/tidwall/gjson v1.16.0 // indirect + github.com/tidwall/gjson v1.17.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect @@ -175,7 +175,7 @@ require ( go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/crypto v0.14.0 // indirect - golang.org/x/mod v0.12.0 // indirect + golang.org/x/mod v0.13.0 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/sync v0.4.0 // indirect golang.org/x/sys v0.13.0 // indirect @@ -205,6 +205,6 @@ require ( sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/controller-runtime v0.15.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/kyaml v0.14.3 // indirect + sigs.k8s.io/kustomize/kyaml v0.15.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index b561de50000..c4bf1b9b638 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -60,8 +60,8 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.1 h1:GgBjJ6MwjDOS+A14d4neKrhraeGW32EefyzkfrKheXI= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.1/go.mod h1:ZWmQ7t9ySG4GNn5CXKWQS8+UX7qkWmQUxSN2iAFEhvE= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.2 h1:7fdp02N9fd8itrSe/p7njaSKAUYJGgxn8ajgZfbFK+I= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.2/go.mod h1:yyde2qkA+GhCou8exSJwifnJlAcWCNcU1vs911CEOJg= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -550,8 +550,8 @@ github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSW github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg= -github.com/tidwall/gjson v1.16.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= +github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= @@ -673,8 +673,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1061,8 +1061,8 @@ sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUT sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= 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/kustomize/kyaml v0.14.3 h1:WpabVAKZe2YEp/irTSHwD6bfjwZnTtSDewd2BVJGMZs= -sigs.k8s.io/kustomize/kyaml v0.14.3/go.mod h1:npvh9epWysfQ689Rtt/U+dpOJDTBn8kUnF1O6VzvmZA= +sigs.k8s.io/kustomize/kyaml v0.15.0 h1:ynlLMAxDhrY9otSg5GYE2TcIz31XkGZ2Pkj7SdolD84= +sigs.k8s.io/kustomize/kyaml v0.15.0/go.mod h1:+uMkBahdU1KNOj78Uta4rrXH+iH7wvg+nW7+GULvREA= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From adf5f06306d774c21d0309508a17913faed1f349 Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Thu, 26 Oct 2023 18:30:43 -0500 Subject: [PATCH 0651/1371] chore: onboard Tags module (#1892) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 3a7c466bb02..8b5bf45004f 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -796,6 +796,12 @@ locals { short_name = "backup-dr" description = "Terraform module for Google BackupDR components" owners = ["umeshkumhar"] + }, + { + name = "terraform-google-tags" + org = "GoogleCloudPlatform" + description = "Terraform module for creating Google Cloud Tags." + owners = ["nidhi0710"] } ] } From 79e1c5fca374b93a9ebd7bfc30e893ed006e33ae Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 27 Oct 2023 09:53:04 -0500 Subject: [PATCH 0652/1371] chore: update backup dr module desc (#1860) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 8b5bf45004f..e905e7779a0 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -794,7 +794,7 @@ locals { name = "terraform-google-backup-dr" org = "GoogleCloudPlatform" short_name = "backup-dr" - description = "Terraform module for Google BackupDR components" + description = "Deploy Backup and DR appliances" owners = ["umeshkumhar"] }, { From a79720a89d45d5efe1d6d3c3f562648169dca5bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Oct 2023 08:38:28 -0700 Subject: [PATCH 0653/1371] chore: bump the all group with 1 update (#1910) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 8596039961d..ee6dcd5a86b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2 + uses: github/codeql-action/init@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2 + uses: github/codeql-action/autobuild@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2 + uses: github/codeql-action/analyze@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a5b49dc0492..7273a651604 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 + uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5 with: sarif_file: results.sarif From 98cc6068368d9539b45800770abaed2cc2b54de8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 08:44:54 -0700 Subject: [PATCH 0654/1371] fix: bump the all group in /infra/utils/fbf with 1 update (#1914) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index a520052086a..536e004e4b0 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,7 +4,7 @@ go 1.20 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.4.8 + github.com/jedib0t/go-pretty/v6 v6.4.9 github.com/stretchr/testify v1.8.4 google.golang.org/api v0.148.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index b5aabb34308..320fdc8bd72 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -53,8 +53,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.1 h1:SBWmZhjUDRorQxrN0nw github.com/googleapis/enterprise-certificate-proxy v0.3.1/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/jedib0t/go-pretty/v6 v6.4.8 h1:HiNzyMSEpsBaduKhmK+CwcpulEeBrTmxutz4oX/oWkg= -github.com/jedib0t/go-pretty/v6 v6.4.8/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/jedib0t/go-pretty/v6 v6.4.9 h1:vZ6bjGg2eBSrJn365qlxGcaWu09Id+LHtrfDWlB2Usc= +github.com/jedib0t/go-pretty/v6 v6.4.9/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From c52a94cf75e0ffb31c5ba1dfd7767851c228eb2d Mon Sep 17 00:00:00 2001 From: Imran Nayer Date: Mon, 30 Oct 2023 22:19:53 -0500 Subject: [PATCH 0655/1371] chore: add owner for cloudsql and cloudops (#1913) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/github.tf | 1 + infra/terraform/test-org/org/locals.tf | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/org/github.tf b/infra/terraform/test-org/org/github.tf index e5c10761025..289b5efebeb 100644 --- a/infra/terraform/test-org/org/github.tf +++ b/infra/terraform/test-org/org/github.tf @@ -34,6 +34,7 @@ variable "temp_allow_invalid_owners" { description = "Googlers added as owners on TF blueprint repos but are not part of the GCP or TGM orgs yet." default = [ "dulacp", + "nidhi0710", # remove once heynidhi@ is added to GCP org ] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index e905e7779a0..5b13f760508 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -113,7 +113,7 @@ locals { name = "terraform-google-kubernetes-engine" org = "terraform-google-modules" description = "Configures opinionated GKE clusters" - owners = ["Jberlinsky", "ericyz"] + owners = ["ericyz"] topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { @@ -277,6 +277,7 @@ locals { org = "terraform-google-modules" description = "Manages Google Cloud's operations suite (Cloud Logging and Cloud Monitoring)" topics = local.common_topics.ops + owners = ["imrannayer"] }, { name = "terraform-google-cloud-router" @@ -476,7 +477,7 @@ locals { org = "terraform-google-modules" description = "Creates a Cloud SQL database instance" topics = local.common_topics.db - owners = ["isaurabhuttam"] + owners = ["isaurabhuttam", "imrannayer"] }, { name = "terraform-google-startup-scripts" From d4b0385ba88ced63bbe2ba7cd84a7d759cc4d10c Mon Sep 17 00:00:00 2001 From: Brad Miro Date: Tue, 31 Oct 2023 15:01:26 -0400 Subject: [PATCH 0656/1371] feat: adding support for bq (#1878) Co-authored-by: Andrew Peabody Co-authored-by: Awais Malik --- infra/blueprint-test/pkg/bq/bq.go | 130 ++++++++++++++++++ infra/blueprint-test/pkg/bq/bq_test.go | 51 +++++++ infra/blueprint-test/pkg/gcloud/gcloud.go | 22 +-- .../pkg/utils/string_formatter.go | 37 +++++ .../pkg/utils/string_formatter_test.go | 46 +++++++ 5 files changed, 266 insertions(+), 20 deletions(-) create mode 100644 infra/blueprint-test/pkg/bq/bq.go create mode 100644 infra/blueprint-test/pkg/bq/bq_test.go create mode 100644 infra/blueprint-test/pkg/utils/string_formatter.go create mode 100644 infra/blueprint-test/pkg/utils/string_formatter_test.go diff --git a/infra/blueprint-test/pkg/bq/bq.go b/infra/blueprint-test/pkg/bq/bq.go new file mode 100644 index 00000000000..65dc323dafe --- /dev/null +++ b/infra/blueprint-test/pkg/bq/bq.go @@ -0,0 +1,130 @@ +/** + * Copyright 2023 Google LLC + * + * 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 bq provides a set of helpers to interact with bq tool (part of CloudSDK) +package bq + +import ( + "strings" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" + "github.com/gruntwork-io/terratest/modules/logger" + "github.com/gruntwork-io/terratest/modules/shell" + "github.com/mitchellh/go-testing-interface" + "github.com/tidwall/gjson" +) + +type CmdCfg struct { + bqBinary string // path to bq binary + commonArgs []string // common arguments to pass to bq calls + logger *logger.Logger // custom logger +} + +type cmdOption func(*CmdCfg) + +func WithBinary(bqBinary string) cmdOption { + return func(f *CmdCfg) { + f.bqBinary = bqBinary + } +} + +func WithCommonArgs(commonArgs []string) cmdOption { + return func(f *CmdCfg) { + f.commonArgs = commonArgs + } +} + +func WithLogger(logger *logger.Logger) cmdOption { + return func(f *CmdCfg) { + f.logger = logger + } +} + +// newCmdConfig sets defaults and validates values for bq Options. +func newCmdConfig(opts ...cmdOption) (*CmdCfg, error) { + gOpts := &CmdCfg{} + // apply options + for _, opt := range opts { + opt(gOpts) + } + if gOpts.bqBinary == "" { + err := utils.BinaryInPath("bq") + if err != nil { + return nil, err + } + gOpts.bqBinary = "bq" + } + if gOpts.commonArgs == nil { + gOpts.commonArgs = []string{"--format", "json"} + } + if gOpts.logger == nil { + gOpts.logger = utils.GetLoggerFromT() + } + return gOpts, nil +} + +// RunCmd executes a bq command and fails test if there are any errors. +func RunCmd(t testing.TB, cmd string, opts ...cmdOption) string { + op, err := RunCmdE(t, cmd, opts...) + if err != nil { + t.Fatal(err) + } + return op +} + +// RunCmdE executes a bq command and return output. +func RunCmdE(t testing.TB, cmd string, opts ...cmdOption) (string, error) { + gOpts, err := newCmdConfig(opts...) + if err != nil { + t.Fatal(err) + } + // split command into args + args := strings.Fields(cmd) + bqCmd := shell.Command{ + Command: "bq", + Args: append(args, gOpts.commonArgs...), + Logger: gOpts.logger, + } + return shell.RunCommandAndGetStdOutE(t, bqCmd) +} + +// Run executes a bq command and returns value as gjson.Result. +// It fails the test if there are any errors executing the bq command or parsing the output value. +func Run(t testing.TB, cmd string, opts ...cmdOption) gjson.Result { + op := RunCmd(t, cmd, opts...) + if !gjson.Valid(op) { + t.Fatalf("Error parsing output, invalid json: %s", op) + } + return gjson.Parse(op) +} + +// RunWithCmdOptsf executes a bq command and returns value as gjson.Result. +// +// RunWithCmdOptsf(t, ops.., "ls --datasets --project_id=%s", "projectId") +// +// It fails the test if there are any errors executing the bq command or parsing the output value. +func RunWithCmdOptsf(t testing.TB, opts []cmdOption, cmd string, args ...interface{}) gjson.Result { + return Run(t, utils.StringFromTextAndArgs(append([]interface{}{cmd}, args...)...), opts...) +} + +// Runf executes a bq command and returns value as gjson.Result. +// +// Runf(t, "ls --datasets --project_id=%s", "projectId") +// +// It fails the test if there are any errors executing the bq command or parsing the output value. +func Runf(t testing.TB, cmd string, args ...interface{}) gjson.Result { + return Run(t, utils.StringFromTextAndArgs(append([]interface{}{cmd}, args...)...)) +} diff --git a/infra/blueprint-test/pkg/bq/bq_test.go b/infra/blueprint-test/pkg/bq/bq_test.go new file mode 100644 index 00000000000..2ba106f1f1d --- /dev/null +++ b/infra/blueprint-test/pkg/bq/bq_test.go @@ -0,0 +1,51 @@ +/** + * Copyright 2023 Google LLC + * + * 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 bq provides a set of helpers to interact with bq tool (part of CloudSDK) +package bq + +import ( + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestRunf(t *testing.T) { + tests := []struct { + name string + cmd string + projectIdEnvVar string + }{ + { + name: "Runf", + cmd: "ls --datasets --project_id=%s", + projectIdEnvVar: "bigquery-public-data", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if projectName, present := os.LookupEnv(tt.projectIdEnvVar); present { + op := Runf(t, tt.cmd, projectName) + assert := assert.New(t) + assert.Equal("bigquery#dataset", op.Array()[0].Get("kind").String()) + } else { + t.Logf("Skipping test, %s envvar not set", tt.projectIdEnvVar) + t.Skip() + } + }) + } +} diff --git a/infra/blueprint-test/pkg/gcloud/gcloud.go b/infra/blueprint-test/pkg/gcloud/gcloud.go index 779937793f5..327042481ae 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud.go @@ -130,7 +130,7 @@ func TFVet(t testing.TB, planFilePath string, policyLibraryPath, terraformVetPro // // It fails the test if there are any errors executing the gcloud command or parsing the output value. func RunWithCmdOptsf(t testing.TB, opts []cmdOption, cmd string, args ...interface{}) gjson.Result { - return Run(t, stringFromTextAndArgs(append([]interface{}{cmd}, args...)...), opts...) + return Run(t, utils.StringFromTextAndArgs(append([]interface{}{cmd}, args...)...), opts...) } // Runf executes a gcloud command and returns value as gjson.Result. @@ -139,25 +139,7 @@ func RunWithCmdOptsf(t testing.TB, opts []cmdOption, cmd string, args ...interfa // // It fails the test if there are any errors executing the gcloud command or parsing the output value. func Runf(t testing.TB, cmd string, args ...interface{}) gjson.Result { - return Run(t, stringFromTextAndArgs(append([]interface{}{cmd}, args...)...)) -} - -// stringFromTextAndArgs convert msg and args to formatted text -func stringFromTextAndArgs(msgAndArgs ...interface{}) string { - if len(msgAndArgs) == 0 || msgAndArgs == nil { - return "" - } - if len(msgAndArgs) == 1 { - msg := msgAndArgs[0] - if msgAsStr, ok := msg.(string); ok { - return msgAsStr - } - return fmt.Sprintf("%+v", msg) - } - if len(msgAndArgs) > 1 { - return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...) - } - return "" + return Run(t, utils.StringFromTextAndArgs(append([]interface{}{cmd}, args...)...)) } // ActivateCredsAndEnvVars activates credentials and exports auth related envvars. diff --git a/infra/blueprint-test/pkg/utils/string_formatter.go b/infra/blueprint-test/pkg/utils/string_formatter.go new file mode 100644 index 00000000000..5a2f7449ddb --- /dev/null +++ b/infra/blueprint-test/pkg/utils/string_formatter.go @@ -0,0 +1,37 @@ +/** + * Copyright 2023 Google LLC + * + * 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 utils + +import "fmt" + +// StringFromTextAndArgs converts msg and args to formatted text +func StringFromTextAndArgs(msgAndArgs ...interface{}) string { + if len(msgAndArgs) == 0 || msgAndArgs == nil { + return "" + } + if len(msgAndArgs) == 1 { + msg := msgAndArgs[0] + if msgAsStr, ok := msg.(string); ok { + return msgAsStr + } + return fmt.Sprintf("%+v", msg) + } + if len(msgAndArgs) > 1 { + return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...) + } + return "" +} diff --git a/infra/blueprint-test/pkg/utils/string_formatter_test.go b/infra/blueprint-test/pkg/utils/string_formatter_test.go new file mode 100644 index 00000000000..6ab77b35a7e --- /dev/null +++ b/infra/blueprint-test/pkg/utils/string_formatter_test.go @@ -0,0 +1,46 @@ +/** + * Copyright 2022 Google LLC + * + * 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 utils + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestStringFromTextAndArgs(t *testing.T) { + tests := []struct { + name string + cmd string + args []interface{} + output string + }{ + { + name: "one arg", + cmd: "project list --filter=%s", + args: []interface{}{"TEST_PROJECT"}, + output: "project list --filter=TEST_PROJECT", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + funcOut := StringFromTextAndArgs(append([]interface{}{tt.cmd}, tt.args...)...) + assert.Equal(tt.output, funcOut) + }) + } +} From 6272336bf8f49a14c88519a132b19e18e6f09f89 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 31 Oct 2023 13:01:34 -0700 Subject: [PATCH 0657/1371] chore: enable allow_auto_merge for repos (#1918) --- infra/terraform/modules/repositories/main.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index 080422f38ad..651579980e5 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -54,6 +54,7 @@ resource "github_repository" "repo" { allow_merge_commit = false allow_rebase_merge = false allow_update_branch = true + allow_auto_merge = true delete_branch_on_merge = true has_issues = true has_projects = false From d3fa12b15432a924e942ed220e825f85f640635d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 15:27:05 +0000 Subject: [PATCH 0658/1371] fix: bump the all group in /infra/utils/fbf with 1 update (#1922) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 12 ++++++------ infra/utils/fbf/go.sum | 28 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 536e004e4b0..75f008c4081 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,19 +6,19 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.9 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.148.0 + google.golang.org/api v0.149.0 ) require ( - cloud.google.com/go/compute v1.23.0 // indirect + cloud.google.com/go/compute v1.23.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.3.1 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.1 // indirect + github.com/google/uuid v1.4.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect @@ -33,8 +33,8 @@ require ( golang.org/x/term v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a // indirect - google.golang.org/grpc v1.58.3 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 320fdc8bd72..962aecd125f 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -47,10 +47,10 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/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/enterprise-certificate-proxy v0.3.1 h1:SBWmZhjUDRorQxrN0nwzf+AHBxnbFjViHQS4P0yVpmQ= -github.com/googleapis/enterprise-certificate-proxy v0.3.1/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/jedib0t/go-pretty/v6 v6.4.9 h1:vZ6bjGg2eBSrJn365qlxGcaWu09Id+LHtrfDWlB2Usc= @@ -127,8 +127,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.148.0 h1:HBq4TZlN4/1pNcu0geJZ/Q50vIwIXT532UIMYoo0vOs= -google.golang.org/api v0.148.0/go.mod h1:8/TBgwaKjfqTdacOJrOv2+2Q6fBDU1uHKK06oGSkxzU= +google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -136,17 +136,17 @@ google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 h1:SeZZZx0cP0fqUyA+oRzP9k7cSwJlvDFiROO72uwD6i0= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a h1:a2MQQVoTo96JC9PMGtGBymLp7+/RzpFc2yX/9WfFg1c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -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/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= 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= From aec0999d9c235908bf37a6e23b1ad751ef7c7ef0 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 2 Nov 2023 14:33:30 -0500 Subject: [PATCH 0659/1371] chore(master): release blueprint-test 0.10.0 (#1919) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 183b9600575..1e2b618aeee 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.9.2", + "infra/blueprint-test": "0.10.0", "infra/module-swapper": "0.2.4" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index c40b6c2b383..e30781a3488 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.10.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.9.2...infra/blueprint-test/v0.10.0) (2023-11-01) + + +### Features + +* adding support for bq ([#1878](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1878)) ([d4b0385](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/d4b0385ba88ced63bbe2ba7cd84a7d759cc4d10c)) + ## [0.9.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.9.1...infra/blueprint-test/v0.9.2) (2023-10-25) From 8cd6ff91b2c519153598a072be4479aeaf416806 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 2 Nov 2023 15:24:21 -0500 Subject: [PATCH 0660/1371] chore: Update Tools to 1.17.3 (#1908) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 20f56c00151..262cfacb1cb 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.6.2 +TERRAFORM_VERSION := 1.6.3 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 452.0.0 +CLOUD_SDK_VERSION := 453.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.52.5 +TERRAGRUNT_VERSION := 0.53.1 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.2.1 # Updated by Update Tooling Workflow @@ -50,12 +50,12 @@ GOLANGCI_VERSION := 1.54.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.13.3 +GATOR_VERSION := 3.13.4 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From f245ebfa65a9a7ba8983046fec84fef5b3713592 Mon Sep 17 00:00:00 2001 From: HuixinLai <55810452+HuixinLai@users.noreply.github.com> Date: Mon, 6 Nov 2023 09:02:50 -0800 Subject: [PATCH 0661/1371] feat: add `required` to blueprint metadata ui proto (#1930) --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui.pb.go | 121 ++++++++++-------- cli/bpmetadata/proto/bpmetadata_ui.proto | 3 + .../schema/gcp-blueprint-metadata.json | 3 + 4 files changed, 73 insertions(+), 56 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index dc5721d9b9c..236504c7844 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.7 +VERSION=v1.2.8 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index 7723dc96401..e51c3cf986f 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -163,6 +163,8 @@ type DisplayVariable struct { // Optional. // Gen: manually-authored Level int32 `protobuf:"varint,18,opt,name=level,proto3" json:"level,omitempty" yaml:"level,omitempty"` // @gotags: json:"level,omitempty" yaml:"level,omitempty" + // Whether the property is required for the deployment or not. + Required bool `protobuf:"varint,19,opt,name=required,proto3" json:"required,omitempty" yaml:"required,omitempty"` // @gotags: json:"required,omitempty" yaml:"required,omitempty" } func (x *DisplayVariable) Reset() { @@ -323,6 +325,13 @@ func (x *DisplayVariable) GetLevel() int32 { return 0 } +func (x *DisplayVariable) GetRequired() bool { + if x != nil { + return x.Required + } + return false +} + type ValueLabel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -719,7 +728,7 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x05, + 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x05, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, @@ -760,60 +769,62 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0f, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, - 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, - 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, - 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, - 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, - 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, - 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, - 0x49, 0x66, 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, - 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, - 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, - 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, - 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, + 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, + 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, + 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x68, + 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, + 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, + 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, + 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, + 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, + 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index ddbb7401327..31fb447b6c5 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -112,6 +112,9 @@ message DisplayVariable { // Optional. // Gen: manually-authored int32 level = 18; // @gotags: json:"level,omitempty" yaml:"level,omitempty" + + // Whether the property is required for the deployment or not. + bool required = 19; // @gotags: json:"required,omitempty" yaml:"required,omitempty" } message ValueLabel { diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index d066dbb8023..5be4babe7da 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -711,6 +711,9 @@ }, "level": { "type": "integer" + }, + "required": { + "type": "boolean" } }, "additionalProperties": false, From df48cad1421e511ba1a0ef85c7ea6c719ec55367 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 Nov 2023 22:50:03 +0100 Subject: [PATCH 0662/1371] chore(deps): update cft/developer-tools docker tag to v1.17 (#1940) --- infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index bb8fe089e57..6774f624c55 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -27,7 +27,7 @@ steps: dir: 'infra/blueprint-test' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.16' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.17' options: env: - 'TF_VAR_org_id=$_ORG_ID' From 8ba1c392e1527ba9fdf9bae6d606fc8b025b5964 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 Nov 2023 22:57:18 +0100 Subject: [PATCH 0663/1371] chore(deps): update cft/developer-tools docker tag to v1.17 (#1939) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 236504c7844..62b14e57ba2 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.16 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd From e465b7693f6bf68b746bcbd9c61a2aed7cdb2c80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 08:16:23 -0800 Subject: [PATCH 0664/1371] fix: bump the all group in /infra/utils/fbf with 1 update (#1953) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 75f008c4081..bd8add6b91c 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.9 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.149.0 + google.golang.org/api v0.150.0 ) require ( @@ -33,7 +33,7 @@ require ( golang.org/x/term v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 962aecd125f..beabdf05cb3 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -104,7 +104,7 @@ golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -127,8 +127,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= -google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= +google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= +google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -138,8 +138,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 0c48223a72197b90fec67c4fcb7283307a19a97f Mon Sep 17 00:00:00 2001 From: Imran Nayer Date: Tue, 7 Nov 2023 17:55:27 -0600 Subject: [PATCH 0665/1371] chore: add to owner's list for memory store and pubsub module (#1938) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 5b13f760508..9e94c3b1305 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -416,6 +416,7 @@ locals { org = "terraform-google-modules" description = "Creates a fully functional Google Memorystore (redis) instance" topics = local.common_topics.db + owners = ["imrannayer"] }, { name = "terraform-google-module-template" @@ -447,6 +448,7 @@ locals { org = "terraform-google-modules" description = "Creates Pub/Sub topic and subscriptions associated with the topic" topics = local.common_topics.da + owners = ["imrannayer"] }, { name = "terraform-google-sap" From 04d9184146efb8d6b8b94d67a91e0d4e2f748220 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 21:45:04 -0600 Subject: [PATCH 0666/1371] fix: bump the all group in /infra/blueprint-test with 2 updates (#1952) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 240484cabcd..bcce022dafd 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,13 +4,13 @@ go 1.20 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.43.13 + github.com/gruntwork-io/terratest v0.46.6 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.8.4 github.com/tidwall/gjson v1.17.0 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.13.0 + golang.org/x/mod v0.14.0 sigs.k8s.io/kustomize/kyaml v0.15.0 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index ec522cbacd7..ea4a987245c 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -370,8 +370,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.43.13 h1:/d0UeDj/FJM66VRP/3JA4mTw0z7BOm9ntHYfrTjIpY8= -github.com/gruntwork-io/terratest v0.43.13/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= +github.com/gruntwork-io/terratest v0.46.6 h1:OO+BozS6nqeu0OhkLy7opkgDoYafkDr1TPlxprma26M= +github.com/gruntwork-io/terratest v0.46.6/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -561,8 +561,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From 598a3d601c644fac70419f3cede75175e22d68e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Nov 2023 08:44:53 -0800 Subject: [PATCH 0667/1371] fix: bump the all group in /cli with 10 updates (#1951) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli/go.mod | 55 +++++++++++------------ cli/go.sum | 125 ++++++++++++++++++++++++----------------------------- 2 files changed, 85 insertions(+), 95 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index e2f18bc30f3..3d80eab0d2a 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,12 +3,12 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.20 require ( - cloud.google.com/go/asset v1.15.1 - cloud.google.com/go/storage v1.33.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.2 + cloud.google.com/go/asset v1.15.3 + cloud.google.com/go/storage v1.34.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.0 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 - github.com/fatih/color v1.15.0 + github.com/fatih/color v1.16.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.10.0 github.com/golang/protobuf v1.5.3 @@ -22,21 +22,21 @@ require ( github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.4.8 + github.com/jedib0t/go-pretty/v6 v6.4.9 github.com/manifoldco/promptui v0.9.0 - github.com/migueleliasweb/go-github-mock v0.0.20 + github.com/migueleliasweb/go-github-mock v0.0.22 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.57.1 + github.com/open-policy-agent/opa v0.58.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.7.0 + github.com/spf13/cobra v1.8.0 github.com/spf13/viper v1.17.0 github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20230905200255-921286631fa9 golang.org/x/oauth2 v0.13.0 - golang.org/x/text v0.13.0 - google.golang.org/api v0.148.0 + golang.org/x/text v0.14.0 + google.golang.org/api v0.150.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -44,13 +44,13 @@ require ( require ( cloud.google.com/go v0.110.8 // indirect - cloud.google.com/go/accesscontextmanager v1.8.1 // indirect - cloud.google.com/go/compute v1.23.0 // indirect + cloud.google.com/go/accesscontextmanager v1.8.2 // indirect + cloud.google.com/go/compute v1.23.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.2 // indirect - cloud.google.com/go/longrunning v0.5.1 // indirect - cloud.google.com/go/orgpolicy v1.11.1 // indirect - cloud.google.com/go/osconfig v1.12.1 // indirect + cloud.google.com/go/iam v1.1.3 // indirect + cloud.google.com/go/longrunning v0.5.2 // indirect + cloud.google.com/go/orgpolicy v1.11.2 // indirect + cloud.google.com/go/osconfig v1.12.2 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -75,7 +75,7 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gammazero/deque v0.2.0 // indirect github.com/go-errors/errors v1.5.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -95,15 +95,16 @@ require ( github.com/go-stack/stack v1.8.1 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.1.1 // indirect + github.com/golang/glog v1.1.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-github/v56 v56.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.3.1 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.1 // indirect + github.com/google/uuid v1.4.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect @@ -120,7 +121,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect @@ -177,17 +178,17 @@ require ( golang.org/x/crypto v0.14.0 // indirect golang.org/x/mod v0.13.0 // indirect golang.org/x/net v0.17.0 // indirect - golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.13.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.14.0 // indirect golang.org/x/term v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a // indirect - google.golang.org/grpc v1.58.3 // indirect + google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/grpc v1.59.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index c4bf1b9b638..ea5a058a8ff 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -19,30 +19,30 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= -cloud.google.com/go/accesscontextmanager v1.8.1 h1:WIAt9lW9AXtqw/bnvrEUaE8VG/7bAAeMzRCBGMkc4+w= -cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= -cloud.google.com/go/asset v1.15.1 h1:+9f5/s/U0AGZSPLTOMcXSZ5NDB5jQ2Szr+WQPgPA8bk= -cloud.google.com/go/asset v1.15.1/go.mod h1:yX/amTvFWRpp5rcFq6XbCxzKT8RJUam1UoboE179jU4= +cloud.google.com/go/accesscontextmanager v1.8.2 h1:jcOXen2u13aHgOHibUjxyPI+fZzVhElxy2gzJJlOOHg= +cloud.google.com/go/accesscontextmanager v1.8.2/go.mod h1:E6/SCRM30elQJ2PKtFMs2YhfJpZSNcJyejhuzoId4Zk= +cloud.google.com/go/asset v1.15.3 h1:uI8Bdm81s0esVWbWrTHcjFDFKNOa9aB7rI1vud1hO84= +cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= -cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= -cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= -cloud.google.com/go/orgpolicy v1.11.1 h1:I/7dHICQkNwym9erHqmlb50LRU588NPCvkfIY0Bx9jI= -cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= -cloud.google.com/go/osconfig v1.12.1 h1:dgyEHdfqML6cUW6/MkihNdTVc0INQst0qSE8Ou1ub9c= -cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= +cloud.google.com/go/iam v1.1.3 h1:18tKG7DzydKWUnLjonWcJO6wjSCAtzh4GcRKlH/Hrzc= +cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= +cloud.google.com/go/longrunning v0.5.2 h1:u+oFqfEwwU7F9dIELigxbe0XVnBAo9wqMuQLA50CZ5k= +cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= +cloud.google.com/go/orgpolicy v1.11.2 h1:Dnfh5sj3aIAuJzH4Q4rBp6lCJ/IdXRBbwQ0/nQsUySE= +cloud.google.com/go/orgpolicy v1.11.2/go.mod h1:biRDpNwfyytYnmCRWZWxrKF22Nkz9eNVj9zyaBdpm1o= +cloud.google.com/go/osconfig v1.12.2 h1:AjHbw8MgKKaTFAEJWGdOYtMED3wUXKLtvdfP8Uzbuy0= +cloud.google.com/go/osconfig v1.12.2/go.mod h1:eh9GPaMZpI6mEJEuhEjUJmaxvQ3gav+fFEJon1Y8Iw0= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -53,15 +53,15 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.33.0 h1:PVrDOkIC8qQVa1P3SXGpQvfuJhN2LHOoyZvWs8D2X5M= -cloud.google.com/go/storage v1.33.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= +cloud.google.com/go/storage v1.34.1 h1:H2Af2dU5J0PF7A5B+ECFIce+RqxVnrVilO+cu0TS3MI= +cloud.google.com/go/storage v1.34.1/go.mod h1:VN1ElqqvR9adg1k9xlkUJ55cMOP1/QjnNNuT5xQL6dY= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.2 h1:7fdp02N9fd8itrSe/p7njaSKAUYJGgxn8ajgZfbFK+I= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.9.2/go.mod h1:yyde2qkA+GhCou8exSJwifnJlAcWCNcU1vs911CEOJg= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.0 h1:z3SfgfmUGWlmYPRl4YsEqyEexAYzPNos65401mppP+o= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.0/go.mod h1:yyde2qkA+GhCou8exSJwifnJlAcWCNcU1vs911CEOJg= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -69,7 +69,6 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -101,7 +100,6 @@ github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4 github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= @@ -117,13 +115,12 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= @@ -150,15 +147,15 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= 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/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA= github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= @@ -251,8 +248,8 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.1 h1:jxpi2eWoU84wbX9iIEyAeeoac3FLuifZpY9tcNUD9kw= -github.com/golang/glog v1.1.1/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -310,6 +307,8 @@ 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/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg= github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA= +github.com/google/go-github/v56 v56.0.0 h1:TysL7dMa/r7wsQi44BjqlwaHvwlFlqkK8CtBWCX3gb4= +github.com/google/go-github/v56 v56.0.0/go.mod h1:D8cdcX98YWJvi7TLo7zM4/h8ZTx6u6fwGEkCdisopo0= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -336,10 +335,10 @@ github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/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/enterprise-certificate-proxy v0.3.1 h1:SBWmZhjUDRorQxrN0nwzf+AHBxnbFjViHQS4P0yVpmQ= -github.com/googleapis/enterprise-certificate-proxy v0.3.1/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= 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/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= @@ -383,8 +382,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.4.8 h1:HiNzyMSEpsBaduKhmK+CwcpulEeBrTmxutz4oX/oWkg= -github.com/jedib0t/go-pretty/v6 v6.4.8/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/jedib0t/go-pretty/v6 v6.4.9 h1:vZ6bjGg2eBSrJn365qlxGcaWu09Id+LHtrfDWlB2Usc= +github.com/jedib0t/go-pretty/v6 v6.4.9/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -428,15 +427,15 @@ github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlW github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= -github.com/migueleliasweb/go-github-mock v0.0.20 h1:lD0+ezomm5yjfQjQwQCUYfS0IvnkGm2Whx1NtRtnFEQ= -github.com/migueleliasweb/go-github-mock v0.0.20/go.mod h1:tZKca2WcxfTR+gclTMCssA4bUNM+F3hW9aW/fkmPeZU= +github.com/migueleliasweb/go-github-mock v0.0.22 h1:iUvUKmYd7sFq/wrb9TrbEdvc30NaYxLZNtz7Uv2D+AQ= +github.com/migueleliasweb/go-github-mock v0.0.22/go.mod h1:UVvZ3S9IdTTRqThr1lgagVaua3Jl1bmY4E+C/Vybbn4= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -462,8 +461,8 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.57.1 h1:LAa4Z0UkpjV94nRLy6XCvgOacQ6N1jf8TJLMUIzFRqc= -github.com/open-policy-agent/opa v0.57.1/go.mod h1:YYcVsWcdOW47owR0zElx8HPYZK60vL0MOPsEmh13us4= +github.com/open-policy-agent/opa v0.58.0 h1:S5qvevW8JoFizU7Hp66R/Y1SOXol0aCdFYVkzIqIpUo= +github.com/open-policy-agent/opa v0.58.0/go.mod h1:EGWBwvmyt50YURNvL8X4W5hXdlKeNhAHn3QXsetmYcc= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -520,8 +519,8 @@ github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -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/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -633,7 +632,6 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -713,7 +711,6 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 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= @@ -740,8 +737,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -786,29 +783,23 @@ golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/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-20220715151400-c0bba94af5f8/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-20220811171246-fbc7d0a398ab/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.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.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/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= 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= @@ -824,10 +815,8 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -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.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= @@ -916,8 +905,8 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.148.0 h1:HBq4TZlN4/1pNcu0geJZ/Q50vIwIXT532UIMYoo0vOs= -google.golang.org/api v0.148.0/go.mod h1:8/TBgwaKjfqTdacOJrOv2+2Q6fBDU1uHKK06oGSkxzU= +google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= +google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= 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= @@ -963,12 +952,12 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 h1:SeZZZx0cP0fqUyA+oRzP9k7cSwJlvDFiROO72uwD6i0= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a h1:a2MQQVoTo96JC9PMGtGBymLp7+/RzpFc2yX/9WfFg1c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= 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= @@ -985,8 +974,8 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -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/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= 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= From 5d2c6a52101b3a5bed84adcfca438ce64718e80a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 8 Nov 2023 08:52:46 -0800 Subject: [PATCH 0668/1371] chore: enable secret_scanning (#1920) --- infra/terraform/modules/repositories/main.tf | 9 ++++++ .../test-org/github/.terraform.lock.hcl | 32 +++++++++---------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index 651579980e5..bbed3cf5cff 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -63,6 +63,15 @@ resource "github_repository" "repo" { has_downloads = false squash_merge_commit_message = "BLANK" squash_merge_commit_title = "PR_TITLE" + + security_and_analysis { + secret_scanning { + status = "enabled" + } + secret_scanning_push_protection { + status = "enabled" + } + } } resource "github_repository_collaborator" "dpebot" { diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index d0b56a7220d..43546b1a581 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,23 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "5.25.0" + version = "5.42.0" constraints = "~> 5.0, ~> 5.15" hashes = [ - "h1:PV5RT2TVZIoaw9gLRM9iVMz1kKOoVYRz5AEsJ8OaXDM=", - "zh:15e6e652b10f225b1d2a6c675e38e7e119b0a19a3009a88e5c6a478d65f02fc5", - "zh:1a875d13507eca65d64bdac0f62910f6ce26fb1ef746bbf5f7b2bbe86c78441b", - "zh:1f41a0053d13971d7c8fd2eb0b3ce263f65d7c2a393580f72ad83a28d562a45e", - "zh:274fa0c49b3ef20f968cefd01d5e40af76437868ff7accc8430c0407b9f9d4b6", - "zh:2b30f8de0f5e0f3157e368ae034fb62ee92798329afc5bf239d384e393ef6860", - "zh:53e0da4b92ed389c766042fc60e72629896a2f6050ed3b7c036cc8fde8a22858", - "zh:5a9e3900a0e7b62c7769e8c7e993e0f87229b0a0cc4fa3064fc79bfe73fa1ec9", - "zh:7fa4a46ec94f6e1da93399955e8571ba0b20100e1bd7e34b5e75fbed7d43ae72", - "zh:bc2f75e40c8743539199f09f0fc54ff091d1bb05398539642c3f75d869a251c5", - "zh:d80a7bdfc4be101559c0bec516a73239291d18be522a2fa872fa8e07a65a3966", - "zh:ea230531bb0fe2f778a72edb6bc6a80983a7a2c82a1c5f255a6ae11d45f714f2", - "zh:f649cd014748ef498ccb8c07c4de1d55b736daeaeb8591395cd6b80a8502612a", - "zh:fb94e009e8348bb016cde0b39b8e0968f60d5fd9cbc0be82bdb3ab498e5dea46", - "zh:fbc119a51967c497d24a728d5afad72fb5f49494ef3645816336f898ac031661", + "h1:vHTdYL6eXJfUzz4bs0ICyg2f8ct/K2EnGAjwLrAmL3U=", + "zh:0f97039c6b70295c4a82347bc8a0bcea700b3fb3df0e0be53585da025584bb7c", + "zh:12e78898580cc2a72b5f2a77e191b158f88e974b0500489b691f34842288745c", + "zh:23660933e4f00293c0d4d6cd6b4d72e382c0df46b70cecf22b5c4c090d3b61e3", + "zh:74119174b46d8d197dd209a246bf8b5db113c66467e02c831e68a8ceea312d3e", + "zh:829c4c0c202fc646eb0e1759eb9c8f0757df5295be2d3344b8fd6ca8ce9ef33b", + "zh:92043e667f520aee4e08a10a183ad5abe5487f3e9c8ad5a55ea1358b14b17b1a", + "zh:998909806b4ff42cf480fcd359ec1f12b868846f89284b991987f55de24876b7", + "zh:9f758447db3bf386516562abd6da1e54d22ddc207bda25961d2b5b049f32da0f", + "zh:a6259215612d4d6a281c671b2d5aa3a0a0b0a3ae92ed60b633998bb692e922d3", + "zh:ad7d78056beb44191911db9443bf5eec41a3d60e7b01def2a9e608d1c4288d27", + "zh:b697e7b0abef3000e1db482c897b82cd455621b488bb6c4cd3d270763d7b08ac", + "zh:db8e849eded8aebff780f89ab7e1339053d2f15c1c8f94103d70266a090527ad", + "zh:e5bdbb85fb148dd75877a7b94b595d4e8680e495c241db02c4b12b91e9d08953", + "zh:ee812c5fd77d3817fb688f720e5eb42d7ff04db67a125de48b05458c9f657483", ] } From bcc7523dae45e844feb41aa19197db4db0a1b67f Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 8 Nov 2023 09:05:29 -0800 Subject: [PATCH 0669/1371] fix: updates TF versions for dev & test org configs (#1955) Co-authored-by: Andrew Peabody --- infra/terraform/dev-org/dev-project-cleanup/versions.tf | 4 ++-- infra/terraform/test-org/ci-project/versions.tf | 4 ++-- infra/terraform/test-org/ci-triggers/versions.tf | 2 +- infra/terraform/test-org/org/versions.tf | 4 ++-- infra/terraform/test-org/test-cleanup/versions.tf | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/infra/terraform/dev-org/dev-project-cleanup/versions.tf b/infra/terraform/dev-org/dev-project-cleanup/versions.tf index d30b0bdd708..82e9e303dce 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/versions.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/versions.tf @@ -21,10 +21,10 @@ terraform { version = ">= 1.3, < 3.0" } google = { - version = ">= 3.35, < 5.0" + version = ">= 3.35, < 6" } google-beta = { - version = ">= 3.35, < 5.0" + version = ">= 3.35, < 6" } null = { version = ">= 2.1, < 4.0" diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf index 520cbb3e799..de64a4d73f8 100644 --- a/infra/terraform/test-org/ci-project/versions.tf +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -22,10 +22,10 @@ terraform { version = "~> 5.0" } google = { - version = ">= 3.39, < 5.0" + version = ">= 3.39, < 6" } google-beta = { - version = ">= 3.39, < 5.0" + version = ">= 3.39, < 6" } } } diff --git a/infra/terraform/test-org/ci-triggers/versions.tf b/infra/terraform/test-org/ci-triggers/versions.tf index 22c484816f2..272dd0a1b03 100644 --- a/infra/terraform/test-org/ci-triggers/versions.tf +++ b/infra/terraform/test-org/ci-triggers/versions.tf @@ -17,6 +17,6 @@ terraform { required_version = ">= 1.4.4" required_providers { - google-beta = ">= 2.18, < 5.0" + google-beta = ">= 2.18, < 6" } } diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index 39a7bc08094..dffa2a4fd75 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -21,10 +21,10 @@ terraform { version = ">= 1.2, < 3.0" } google = { - version = ">= 3.19, < 5.0" + version = ">= 3.19, < 6" } google-beta = { - version = ">= 3.19, < 5.0" + version = ">= 3.19, < 6" } null = { version = ">= 2.1, < 4.0" diff --git a/infra/terraform/test-org/test-cleanup/versions.tf b/infra/terraform/test-org/test-cleanup/versions.tf index 5d8d76ec53b..80b10f057d8 100644 --- a/infra/terraform/test-org/test-cleanup/versions.tf +++ b/infra/terraform/test-org/test-cleanup/versions.tf @@ -21,10 +21,10 @@ terraform { version = ">= 1.3, < 3.0" } google = { - version = ">= 3.38, < 5.0" + version = ">= 3.38, < 6" } google-beta = { - version = ">= 3.38, < 5.0" + version = ">= 3.38, < 6" } null = { version = ">= 2.1, < 4.0" From 2dc6b44462152b208646a7311d55d1bf4c9eb16a Mon Sep 17 00:00:00 2001 From: Brad Miro Date: Wed, 8 Nov 2023 12:42:03 -0500 Subject: [PATCH 0670/1371] fix: changing order in which args and commonOpts slices are combined (#1943) --- infra/blueprint-test/pkg/bq/bq.go | 2 +- infra/blueprint-test/pkg/bq/bq_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/pkg/bq/bq.go b/infra/blueprint-test/pkg/bq/bq.go index 65dc323dafe..2415efd6bc6 100644 --- a/infra/blueprint-test/pkg/bq/bq.go +++ b/infra/blueprint-test/pkg/bq/bq.go @@ -95,7 +95,7 @@ func RunCmdE(t testing.TB, cmd string, opts ...cmdOption) (string, error) { args := strings.Fields(cmd) bqCmd := shell.Command{ Command: "bq", - Args: append(args, gOpts.commonArgs...), + Args: append(gOpts.commonArgs, args...), Logger: gOpts.logger, } return shell.RunCommandAndGetStdOutE(t, bqCmd) diff --git a/infra/blueprint-test/pkg/bq/bq_test.go b/infra/blueprint-test/pkg/bq/bq_test.go index 2ba106f1f1d..a46f4bf8528 100644 --- a/infra/blueprint-test/pkg/bq/bq_test.go +++ b/infra/blueprint-test/pkg/bq/bq_test.go @@ -32,7 +32,7 @@ func TestRunf(t *testing.T) { }{ { name: "Runf", - cmd: "ls --datasets --project_id=%s", + cmd: "query --nouse_legacy_sql 'select * FROM %s.samples.INFORMATION_SCHEMA.TABLES limit 1;'", projectIdEnvVar: "bigquery-public-data", }, } @@ -41,7 +41,7 @@ func TestRunf(t *testing.T) { if projectName, present := os.LookupEnv(tt.projectIdEnvVar); present { op := Runf(t, tt.cmd, projectName) assert := assert.New(t) - assert.Equal("bigquery#dataset", op.Array()[0].Get("kind").String()) + assert.Contains(op.Array()[0], "creation_time") } else { t.Logf("Skipping test, %s envvar not set", tt.projectIdEnvVar) t.Skip() From db9da88868fadf42491d6688a752b9acf84887d7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 9 Nov 2023 00:30:12 +0100 Subject: [PATCH 0671/1371] chore(deps): update terraform google to v5 (#1948) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org-iam-policy/versions.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org-iam-policy/versions.tf b/infra/terraform/test-org/org-iam-policy/versions.tf index f32914b7e7b..8f1f5b64571 100644 --- a/infra/terraform/test-org/org-iam-policy/versions.tf +++ b/infra/terraform/test-org/org-iam-policy/versions.tf @@ -18,7 +18,7 @@ terraform { required_version = ">= 1.4.4" required_providers { google = { - version = ">= 3.39, < 5.0" + version = ">= 3.39, < 6" } } } From bf59ffe97897c5c0cea065fb5b52487ea5fe5bae Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 9 Nov 2023 16:08:46 -0600 Subject: [PATCH 0672/1371] chore(master): release blueprint-test 0.10.1 (#1954) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 1e2b618aeee..1816a3ade88 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.10.0", + "infra/blueprint-test": "0.10.1", "infra/module-swapper": "0.2.4" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index e30781a3488..975ca1d3f6d 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.10.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.10.0...infra/blueprint-test/v0.10.1) (2023-11-08) + + +### Bug Fixes + +* bump the all group in /infra/blueprint-test with 2 updates ([#1952](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1952)) ([04d9184](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/04d9184146efb8d6b8b94d67a91e0d4e2f748220)) +* changing order in which args and commonOpts slices are combined ([#1943](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1943)) ([2dc6b44](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2dc6b44462152b208646a7311d55d1bf4c9eb16a)) + ## [0.10.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.9.2...infra/blueprint-test/v0.10.0) (2023-11-01) From 91faee542b9d689c06dc8502075e3a857382b9da Mon Sep 17 00:00:00 2001 From: Imran Nayer Date: Thu, 9 Nov 2023 18:11:17 -0600 Subject: [PATCH 0673/1371] chore: Add owner to composer repo (#1958) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 9e94c3b1305..9521d71f706 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -297,6 +297,7 @@ locals { org = "terraform-google-modules" description = "Manages Cloud Composer v1 and v2 along with option to manage networking" topics = join(",", [local.common_topics.da, local.common_topics.ops, local.common_topics.e2e]) + owners = ["imrannayer"] }, { name = "terraform-google-container-vm" From f23b405a447d8105ac4bfc36771808adfb36ed2b Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 10 Nov 2023 09:16:15 -0800 Subject: [PATCH 0674/1371] fix: removes redundant required field from DisplayVariable (#1959) --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui.pb.go | 120 ++++++++---------- cli/bpmetadata/proto/bpmetadata_ui.proto | 5 +- .../schema/gcp-blueprint-metadata.json | 3 - 4 files changed, 58 insertions(+), 72 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 62b14e57ba2..320014946cf 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.8 +VERSION=v1.2.9 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index e51c3cf986f..1dd9e2d034e 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -163,8 +163,6 @@ type DisplayVariable struct { // Optional. // Gen: manually-authored Level int32 `protobuf:"varint,18,opt,name=level,proto3" json:"level,omitempty" yaml:"level,omitempty"` // @gotags: json:"level,omitempty" yaml:"level,omitempty" - // Whether the property is required for the deployment or not. - Required bool `protobuf:"varint,19,opt,name=required,proto3" json:"required,omitempty" yaml:"required,omitempty"` // @gotags: json:"required,omitempty" yaml:"required,omitempty" } func (x *DisplayVariable) Reset() { @@ -325,13 +323,6 @@ func (x *DisplayVariable) GetLevel() int32 { return 0 } -func (x *DisplayVariable) GetRequired() bool { - if x != nil { - return x.Required - } - return false -} - type ValueLabel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -728,7 +719,7 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x05, + 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x89, 0x05, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, @@ -769,62 +760,61 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0f, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, - 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, - 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, - 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x76, 0x65, 0x6c, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, + 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, + 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, + 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, - 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x68, - 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, - 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, - 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, - 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, - 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, - 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, + 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, + 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, + 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, + 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, + 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 31fb447b6c5..a600dfae50f 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -21,6 +21,8 @@ message BlueprintUIInput { // Additional display specific metadata pertaining to a particular // input variable. message DisplayVariable { + reserved 19; + // The variable name from the corresponding standard metadata file. // Gen: auto-generated - the Terraform variable name string name = 1; // @gotags: json:"name" yaml:"name" @@ -112,9 +114,6 @@ message DisplayVariable { // Optional. // Gen: manually-authored int32 level = 18; // @gotags: json:"level,omitempty" yaml:"level,omitempty" - - // Whether the property is required for the deployment or not. - bool required = 19; // @gotags: json:"required,omitempty" yaml:"required,omitempty" } message ValueLabel { diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 5be4babe7da..d066dbb8023 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -711,9 +711,6 @@ }, "level": { "type": "integer" - }, - "required": { - "type": "boolean" } }, "additionalProperties": false, From 8448771e430ebee9804e985808bfdfe68492b9a7 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 10 Nov 2023 15:22:35 -0800 Subject: [PATCH 0675/1371] chore: add back example-foundation to renovate config (#1963) --- infra/terraform/test-org/github/protection.tf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index ef4a110c562..ce2332d5631 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -58,10 +58,9 @@ module "branch_protection_gcp" { providers = { github = github.gcp } } -// terraform-example-foundation renovate is a special case - below module "renovate_json_tgm" { source = "../../modules/repo_file" - repo_list = { for k, v in module.repos_tgm.repos : k => v if k != "terraform-example-foundation" } + repo_list = module.repos_tgm.repos filename = ".github/renovate.json" content = file("${path.module}/resources/renovate-repo-config.json") providers = { github = github } From 1e7fc182f8dd9795bddf103dc495fa325493c551 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 08:34:22 -0800 Subject: [PATCH 0676/1371] fix: bump the all group in /cli with 3 updates (#1962) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli/go.mod | 16 ++++++++-------- cli/go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 3d80eab0d2a..c3bf05c3a36 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -4,8 +4,8 @@ go 1.20 require ( cloud.google.com/go/asset v1.15.3 - cloud.google.com/go/storage v1.34.1 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.0 + cloud.google.com/go/storage v1.35.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.16.0 @@ -34,7 +34,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20230905200255-921286631fa9 - golang.org/x/oauth2 v0.13.0 + golang.org/x/oauth2 v0.14.0 golang.org/x/text v0.14.0 google.golang.org/api v0.150.0 google.golang.org/protobuf v1.31.0 @@ -108,7 +108,7 @@ require ( github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/gruntwork-io/terratest v0.43.13 // indirect + github.com/gruntwork-io/terratest v0.46.6 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -175,12 +175,12 @@ require ( go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/mod v0.13.0 // indirect - golang.org/x/net v0.17.0 // indirect + golang.org/x/crypto v0.15.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.18.0 // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/sys v0.14.0 // indirect - golang.org/x/term v0.13.0 // indirect + golang.org/x/term v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/cli/go.sum b/cli/go.sum index ea5a058a8ff..c4893c5f14a 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -53,15 +53,15 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.34.1 h1:H2Af2dU5J0PF7A5B+ECFIce+RqxVnrVilO+cu0TS3MI= -cloud.google.com/go/storage v1.34.1/go.mod h1:VN1ElqqvR9adg1k9xlkUJ55cMOP1/QjnNNuT5xQL6dY= +cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB//w= +cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.0 h1:z3SfgfmUGWlmYPRl4YsEqyEexAYzPNos65401mppP+o= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.0/go.mod h1:yyde2qkA+GhCou8exSJwifnJlAcWCNcU1vs911CEOJg= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.1 h1:eOqSlege+69h9JhR/ydpHCBLCfQmJuznPGdhLY/SDcU= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.1/go.mod h1:R0AXqSshPDVYHGopYGwPxguApNpFFOdaVAJ8XO2BxJ0= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -348,8 +348,8 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/gruntwork-io/terratest v0.43.13 h1:/d0UeDj/FJM66VRP/3JA4mTw0z7BOm9ntHYfrTjIpY8= -github.com/gruntwork-io/terratest v0.43.13/go.mod h1:Tw+6/fcJFiBPpsx9NNSkLG5oHKIeaqiJHVLpQ+ORIfQ= +github.com/gruntwork-io/terratest v0.46.6 h1:OO+BozS6nqeu0OhkLy7opkgDoYafkDr1TPlxprma26M= +github.com/gruntwork-io/terratest v0.46.6/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -632,8 +632,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -671,8 +671,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.8.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/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -711,8 +711,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= 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= @@ -722,8 +722,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -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/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= 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= @@ -800,8 +800,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -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/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= 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= From 1448a8855ab1f363d2fd2347afc63b3ee1b3f4a2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 13 Nov 2023 17:43:08 +0100 Subject: [PATCH 0677/1371] chore(deps): update go modules (#1942) --- cli/go.mod | 8 ++++---- cli/go.sum | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index c3bf05c3a36..1a7e4be3e37 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -15,8 +15,9 @@ require ( github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v55 v55.0.0 + github.com/google/go-github/v56 v56.0.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 + github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 @@ -33,7 +34,7 @@ require ( github.com/spf13/viper v1.17.0 github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa golang.org/x/oauth2 v0.14.0 golang.org/x/text v0.14.0 google.golang.org/api v0.150.0 @@ -99,7 +100,6 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-github/v56 v56.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect @@ -182,7 +182,7 @@ require ( golang.org/x/sys v0.14.0 // indirect golang.org/x/term v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.13.0 // indirect + golang.org/x/tools v0.15.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect diff --git a/cli/go.sum b/cli/go.sum index c4893c5f14a..6eb4981ec82 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -80,8 +80,12 @@ github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= +github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= @@ -106,6 +110,7 @@ github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqy github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.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 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= @@ -160,6 +165,7 @@ github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= github.com/go-errors/errors v1.5.0/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= @@ -219,6 +225,7 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= @@ -346,6 +353,7 @@ github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qK github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/gruntwork-io/terratest v0.46.6 h1:OO+BozS6nqeu0OhkLy7opkgDoYafkDr1TPlxprma26M= @@ -363,6 +371,8 @@ github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5R github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 h1:SzE5lAYh9XXR3b1q3p3uBNqEY+syiiLZiFCIvr/JTsg= github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= +github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d h1:g6kHlvZrFPFKeWRj5q/zyJA5gu7rlJGPf17h8hX7LHY= +github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -388,10 +398,12 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= 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= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -452,6 +464,7 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= @@ -493,6 +506,7 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -583,6 +597,7 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -646,6 +661,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= 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= @@ -879,6 +896,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= 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= From 32e4f886ccdda8ae357976e5470a71ac4dd78939 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:01:15 -0600 Subject: [PATCH 0678/1371] chore: Update Tools to 1.17.4 (#1931) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 262cfacb1cb..69a289edd8b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.6.3 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 453.0.0 +CLOUD_SDK_VERSION := 454.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.53.1 +TERRAGRUNT_VERSION := 0.53.2 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.2.1 # Updated by Update Tooling Workflow @@ -35,11 +35,11 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.7 +CFT_CLI_VERSION := 1.2.9 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.10 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.48.0 +TFLINT_VERSION := 0.49.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.18 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 5f33aa9c8fc762ede1b55f501085d39a96ad6bd1 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 14 Nov 2023 22:32:42 -0600 Subject: [PATCH 0679/1371] chore: Update Tools to 1.17.5 (#1968) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 69a289edd8b..a8f48948ce3 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.6.3 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 454.0.0 +CLOUD_SDK_VERSION := 455.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.53.2 +TERRAGRUNT_VERSION := 0.53.3 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.2.1 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 31e2ab34fd45a8277ba0b41f98bb5a8c2b220f6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Nov 2023 22:33:03 -0600 Subject: [PATCH 0680/1371] fix: bump the all group in /infra/blueprint-test with 1 update (#1965) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index bcce022dafd..d9a90c18aa9 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,7 +4,7 @@ go 1.20 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.46.6 + github.com/gruntwork-io/terratest v0.46.7 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.8.4 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index ea4a987245c..e047e66fdcb 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -370,8 +370,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.6 h1:OO+BozS6nqeu0OhkLy7opkgDoYafkDr1TPlxprma26M= -github.com/gruntwork-io/terratest v0.46.6/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= +github.com/gruntwork-io/terratest v0.46.7 h1:oqGPBBO87SEsvBYaA0R5xOq+Lm2Xc5dmFVfxEolfZeU= +github.com/gruntwork-io/terratest v0.46.7/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From 53e07f818c6e25becb1ee69497c0f6847e055d88 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 08:03:19 -0800 Subject: [PATCH 0681/1371] chore: bump the all group with 2 updates (#1967) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 64d0d16e988..8bbb25e5918 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -44,7 +44,7 @@ jobs: - name: Open issue if failed if: ${{ failure() }} - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + uses: actions/github-script@e69ef5462fd455e02edcaf4dd7708eda96b9eda0 # v7.0.0 with: script: |- github.rest.issues.create({ diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index ee6dcd5a86b..24e0d3d1631 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2 + uses: github/codeql-action/init@689fdc5193eeb735ecb2e52e819e3382876f93f4 # v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2 + uses: github/codeql-action/autobuild@689fdc5193eeb735ecb2e52e819e3382876f93f4 # v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2 + uses: github/codeql-action/analyze@689fdc5193eeb735ecb2e52e819e3382876f93f4 # v2 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7273a651604..c84911c9552 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5 + uses: github/codeql-action/upload-sarif@689fdc5193eeb735ecb2e52e819e3382876f93f4 # v2.22.6 with: sarif_file: results.sarif From 17dc1412303ad7fc518a587e9f4c77d593e8e60d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Nov 2023 08:48:50 -0800 Subject: [PATCH 0682/1371] chore: bump the all group with 3 updates (#1982) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-push-cft-devtools.yml | 4 ++-- .github/workflows/codeql.yml | 6 +++--- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 8bbb25e5918..8f502471304 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -23,7 +23,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@35b0e87d162680511bf346c299f71c9c5c379033' # v1.1.1 + uses: 'google-github-actions/auth@f105ef0cdb3b102a020be1767fcc8a974898b7c6' # v1.2.0 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' @@ -44,7 +44,7 @@ jobs: - name: Open issue if failed if: ${{ failure() }} - uses: actions/github-script@e69ef5462fd455e02edcaf4dd7708eda96b9eda0 # v7.0.0 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: |- github.rest.issues.create({ diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 24e0d3d1631..dbfc97cdd25 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@689fdc5193eeb735ecb2e52e819e3382876f93f4 # v2 + uses: github/codeql-action/init@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@689fdc5193eeb735ecb2e52e819e3382876f93f4 # v2 + uses: github/codeql-action/autobuild@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@689fdc5193eeb735ecb2e52e819e3382876f93f4 # v2 + uses: github/codeql-action/analyze@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index a4ba00d5920..056249d488d 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -28,7 +28,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@35b0e87d162680511bf346c299f71c9c5c379033' # v1 + uses: 'google-github-actions/auth@f105ef0cdb3b102a020be1767fcc8a974898b7c6' # v1 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c84911c9552..5c021ce4ccf 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@689fdc5193eeb735ecb2e52e819e3382876f93f4 # v2.22.6 + uses: github/codeql-action/upload-sarif@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8 with: sarif_file: results.sarif From 369964486d4ef3c512456d21be84b9fcd81d4134 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 27 Nov 2023 17:53:59 +0100 Subject: [PATCH 0683/1371] chore(deps): update module google.golang.org/api to v0.151.0 (#1984) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index bd8add6b91c..da62a0674c8 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.9 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.150.0 + google.golang.org/api v0.151.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index beabdf05cb3..3b4e0f37745 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -127,8 +127,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= -google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= +google.golang.org/api v0.151.0 h1:FhfXLO/NFdJIzQtCqjpysWwqKk8AzGWBUhMIx67cVDU= +google.golang.org/api v0.151.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= From dc943a77577864ac7b4923babc426f1d26973f81 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 27 Nov 2023 11:11:04 -0600 Subject: [PATCH 0684/1371] chore: Update Tools to 1.17.6 (#1970) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index a8f48948ce3..46691f2de7b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.6.3 +TERRAFORM_VERSION := 1.6.4 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 455.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -25,11 +25,11 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.53.3 +TERRAGRUNT_VERSION := 0.53.6 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.2.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.47 +KPT_VERSION := 1.0.0-beta.48 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.2.9 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.26.10 +KUBECTL_VERSION := 1.26.11 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.49.0 TINKEY_VERSION := 1.7.0 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 01d951f24dc019fcd4c4fcdcb2b4b4980bb3cb6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Nov 2023 08:13:08 -0800 Subject: [PATCH 0685/1371] fix: bump the all group in /infra/utils/fbf with 1 update (#1989) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 18 +++++++++--------- infra/utils/fbf/go.sum | 40 ++++++++++++++++++++-------------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index da62a0674c8..5365ac50146 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.9 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.151.0 + google.golang.org/api v0.152.0 ) require ( - cloud.google.com/go/compute v1.23.1 // indirect + cloud.google.com/go/compute v1.23.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect @@ -26,14 +26,14 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/oauth2 v0.13.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/crypto v0.15.0 // indirect + golang.org/x/net v0.18.0 // indirect + golang.org/x/oauth2 v0.14.0 // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/term v0.14.0 // indirect + golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 3b4e0f37745..32c3ac69ece 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= -cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -83,8 +83,8 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -96,11 +96,11 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -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/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -112,23 +112,23 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.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.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.151.0 h1:FhfXLO/NFdJIzQtCqjpysWwqKk8AzGWBUhMIx67cVDU= -google.golang.org/api v0.151.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= +google.golang.org/api v0.152.0 h1:t0r1vPnfMc260S2Ci+en7kfCZaLOPs5KI0sVV/6jZrY= +google.golang.org/api v0.152.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -136,10 +136,10 @@ google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From e76175977bc82a4ae9f15ab55166ad2dc8e52e31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Nov 2023 08:28:43 -0800 Subject: [PATCH 0686/1371] fix: bump the all group in /infra/module-swapper with 1 update (#1991) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/module-swapper/go.mod | 11 +++++------ infra/module-swapper/go.sum | 30 +++++++++++++----------------- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 731dc0cdea6..4ac60ef7750 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swap go 1.20 require ( - github.com/go-git/go-git/v5 v5.10.0 + github.com/go-git/go-git/v5 v5.10.1 github.com/pmezard/go-difflib v1.0.0 ) @@ -11,7 +11,6 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect - github.com/acomagu/bufpipe v1.0.4 // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/emirpasic/gods v1.18.1 // indirect @@ -22,12 +21,12 @@ require ( github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/sergi/go-diff v1.3.1 // indirect - github.com/skeema/knownhosts v1.2.0 // indirect + github.com/skeema/knownhosts v1.2.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.14.0 // indirect + golang.org/x/crypto v0.15.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect + golang.org/x/net v0.18.0 // indirect + golang.org/x/sys v0.14.0 // indirect golang.org/x/tools v0.13.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index fd330fa4921..1eadd5ffa4d 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -5,8 +5,6 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= -github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= @@ -26,11 +24,11 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmS github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= -github.com/go-git/go-git/v5 v5.10.0 h1:F0x3xXrAWmhwtzoCokU4IMPcBdncG+HAAqi9FcOOjbQ= -github.com/go-git/go-git/v5 v5.10.0/go.mod h1:1FOZ/pQnqw24ghP2n7cunVl0ON55BsjPYvhWHvZGhoo= +github.com/go-git/go-git/v5 v5.10.1 h1:tu8/D8i+TWxgKpzQ3Vc43e+kkhXqtsZCKI/egajKnxk= +github.com/go-git/go-git/v5 v5.10.1/go.mod h1:uEuHjxkHap8kAl//V5F/nNWwqIYtP/402ddd05mp0wg= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -40,8 +38,6 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= -github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= @@ -53,8 +49,8 @@ github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDN 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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= -github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= @@ -67,8 +63,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= @@ -80,8 +76,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -99,14 +95,14 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.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/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -114,7 +110,7 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= From c4b08ad69f9116e4ee220f5321373dff927c20ac Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 28 Nov 2023 09:50:24 -0800 Subject: [PATCH 0687/1371] chore: update renovate.json (#1987) --- infra/terraform/test-org/github/resources/renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index a36878875d7..2fe06ba8135 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -36,8 +36,8 @@ }, { "matchDatasources": ["golang-version"], - "rangeStrategy": "bump", - "allowedVersions": "<1.21.0", + "rangeStrategy": "replace", + "allowedVersions": "1.20", "postUpdateOptions": ["gomodTidy"] }, { From 275f031ee7983667255efb25f2f00996881d8c55 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 28 Nov 2023 11:22:11 -0800 Subject: [PATCH 0688/1371] chore(master): release module-swapper 0.2.5 (#1992) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 1816a3ade88..6caa9c86b85 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.10.1", - "infra/module-swapper": "0.2.4" + "infra/module-swapper": "0.2.5" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 7bca489bb16..2f0fb644231 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.5](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.4...infra/module-swapper/v0.2.5) (2023-11-28) + + +### Bug Fixes + +* bump the all group in /infra/module-swapper with 1 update ([#1991](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1991)) ([e761759](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e76175977bc82a4ae9f15ab55166ad2dc8e52e31)) + ## [0.2.4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.3...infra/module-swapper/v0.2.4) (2023-10-25) From 609d673db7734caa00a27f278083e09e81bd9c36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 08:38:16 -0800 Subject: [PATCH 0689/1371] chore: bump the all group with 1 update (#1995) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 8f502471304..30ba20d7865 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -23,7 +23,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@f105ef0cdb3b102a020be1767fcc8a974898b7c6' # v1.2.0 + uses: 'google-github-actions/auth@67e9c72af6e0492df856527b474995862b7b6591' # v2.0.0 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 056249d488d..213b4769817 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -28,7 +28,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@f105ef0cdb3b102a020be1767fcc8a974898b7c6' # v1 + uses: 'google-github-actions/auth@67e9c72af6e0492df856527b474995862b7b6591' # v1 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From b525ecff9b31ed5db3b854233af7649bc481f7dc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 29 Nov 2023 17:43:56 +0100 Subject: [PATCH 0690/1371] chore(deps): update google-github-actions/auth digest to 3a3c4c5 (#1994) Co-authored-by: Andrew Peabody --- .github/workflows/release-cli.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 213b4769817..77f9c97dfa3 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -28,7 +28,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@67e9c72af6e0492df856527b474995862b7b6591' # v1 + uses: 'google-github-actions/auth@67e9c72af6e0492df856527b474995862b7b6591' # v2.0.0 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From ca7fc98297c3f694f72f8464f7890c5d6ba90be6 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 29 Nov 2023 11:11:27 -0600 Subject: [PATCH 0691/1371] chore: Update Tools to 1.17.7 (#1988) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 46691f2de7b..0edb5ebef5c 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.6.4 +TERRAFORM_VERSION := 1.6.5 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 455.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.53.6 +TERRAGRUNT_VERSION := 0.53.8 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.2.1 # Updated by Update Tooling Workflow @@ -43,7 +43,7 @@ TFLINT_VERSION := 0.49.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.18 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.2.4 +MODULE_SWAPPER_VERSION := 0.2.5 # For developer-tools-krm GOLANGCI_VERSION := 1.54.1 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.16.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From be49cdd1bcfe996aaf0c8f5ff7dd4d93632798f0 Mon Sep 17 00:00:00 2001 From: Jason Davenport Date: Wed, 29 Nov 2023 23:00:07 +0000 Subject: [PATCH 0692/1371] chore: Update locals.tf (#1996) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/github.tf | 1 + infra/terraform/test-org/org/locals.tf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/github.tf b/infra/terraform/test-org/org/github.tf index 289b5efebeb..4483c0f523f 100644 --- a/infra/terraform/test-org/org/github.tf +++ b/infra/terraform/test-org/org/github.tf @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +provider "github" {} locals { owners = distinct( diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 9521d71f706..4f29607baa5 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -241,7 +241,7 @@ locals { org = "terraform-google-modules" description = "Creates opinionated BigQuery datasets and tables" topics = local.common_topics.da - owners = ["davenportjw"] + owners = ["davenportjw", "shanecglass"] lint_env = { ENABLE_BPMETADATA = "1" } From 1570c39087801fd941ab6c9d022c9a513f757b93 Mon Sep 17 00:00:00 2001 From: HuixinLai <55810452+HuixinLai@users.noreply.github.com> Date: Thu, 30 Nov 2023 09:12:04 -0800 Subject: [PATCH 0693/1371] fix: fix unknown field "allowStaticIPs" error (#1993) Co-authored-by: Awais Malik --- cli/bpmetadata/bpmetadata_ui_ext.pb.go | 2 +- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 2 +- cli/bpmetadata/schema/gcp-blueprint-metadata.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go index 65f974c046b..848f95cea1a 100644 --- a/cli/bpmetadata/bpmetadata_ui_ext.pb.go +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -794,7 +794,7 @@ type GCEExternalIPExtension struct { // Flag to denote if an external IP should be configurable. NotConfigurable bool `protobuf:"varint,3,opt,name=not_configurable,json=notConfigurable,proto3" json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty"` // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" // Flag to denote if static IPs are allowed for the external IP. - AllowStaticIps bool `protobuf:"varint,4,opt,name=allow_static_ips,json=allowStaticIps,proto3" json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty"` // @gotags: json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty" + AllowStaticIps bool `protobuf:"varint,4,opt,name=allow_static_ips,json=allowStaticIps,proto3" json:"allowStaticIps,omitempty" yaml:"allowStaticIps,omitempty"` // @gotags: json:"allowStaticIps,omitempty" yaml:"allowStaticIps,omitempty" } func (x *GCEExternalIPExtension) Reset() { diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index a1b8de47d0a..3422572db7c 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -164,7 +164,7 @@ message GCEExternalIPExtension { bool not_configurable = 3; // @gotags: json:"notConfigurable,omitempty" yaml:"notConfigurable,omitempty" // Flag to denote if static IPs are allowed for the external IP. - bool allow_static_ips = 4; // @gotags: json:"allowStaticIPs,omitempty" yaml:"allowStaticIPs,omitempty" + bool allow_static_ips = 4; // @gotags: json:"allowStaticIps,omitempty" yaml:"allowStaticIps,omitempty" } // GCEIPForwardingExtension specifies an IP forwarding extension for a GCE resource. diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index d066dbb8023..370bb3f2831 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -762,7 +762,7 @@ "notConfigurable": { "type": "boolean" }, - "allowStaticIPs": { + "allowStaticIps": { "type": "boolean" } }, From 59870fa9462bdb79f40bf2247633c3b1a65c6994 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 4 Dec 2023 12:21:31 -0600 Subject: [PATCH 0694/1371] chore: add dep public image tag (#1999) --- infra/build/Makefile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/infra/build/Makefile b/infra/build/Makefile index 0edb5ebef5c..6e5492c69bd 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -64,6 +64,7 @@ DOCKER_IMAGE_DEVELOPER_KRM := cft/developer-tools-krm DOCKER_IMAGE_DEVELOPER_LIGHT := cft/developer-tools-light DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS := cft/developer-tools-jenkins REGISTRY_URL := gcr.io/cloud-foundation-cicd +DEP_TAG_PREFIX := deprecated-public-image- .PHONY: build-image-developer-tools @@ -116,6 +117,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} @@ -128,6 +133,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} @@ -140,6 +149,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} @@ -152,6 +165,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} From ee8cc7c8eacd3ce5c00272259a2149279a28591b Mon Sep 17 00:00:00 2001 From: Brad Miro Date: Mon, 4 Dec 2023 21:40:44 -0500 Subject: [PATCH 0695/1371] fix: add bq init step to create local config file (#2000) --- infra/blueprint-test/pkg/bq/bq.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/infra/blueprint-test/pkg/bq/bq.go b/infra/blueprint-test/pkg/bq/bq.go index 2415efd6bc6..d7c24c505fc 100644 --- a/infra/blueprint-test/pkg/bq/bq.go +++ b/infra/blueprint-test/pkg/bq/bq.go @@ -18,6 +18,7 @@ package bq import ( + "os" "strings" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" @@ -76,6 +77,24 @@ func newCmdConfig(opts ...cmdOption) (*CmdCfg, error) { return gOpts, nil } +// initBq checks for a local .bigqueryrc file and creates an empty one if not to avoid forced bigquery initialization, which doesn't output valid json. +func initBq(t testing.TB) { + homeDir, err := os.UserHomeDir() + if err != nil { + t.Fatal(err) + } + fileName := homeDir + "/.bigqueryrc" + _ , err = os.Stat(fileName) + if err != nil && !os.IsNotExist(err) { + t.Fatal(err) + } + file, err := os.Create(fileName) + if err != nil { + t.Fatal(err) + } + file.Close() +} + // RunCmd executes a bq command and fails test if there are any errors. func RunCmd(t testing.TB, cmd string, opts ...cmdOption) string { op, err := RunCmdE(t, cmd, opts...) @@ -91,6 +110,7 @@ func RunCmdE(t testing.TB, cmd string, opts ...cmdOption) (string, error) { if err != nil { t.Fatal(err) } + initBq(t) // split command into args args := strings.Fields(cmd) bqCmd := shell.Command{ From ad4baea0d02dbfcca6ff0420108b1dba1c0ef6f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 08:09:26 -0800 Subject: [PATCH 0696/1371] chore: bump the all group with 1 update (#2003) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .github/workflows/pre-commit.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index c9f447ba92a..aef234822df 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v4.8.0 - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0 From 06b1e8cda848a4e227d2020b1d9dd2d5b945bd29 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 10:52:40 -0800 Subject: [PATCH 0697/1371] chore(master): release blueprint-test 0.10.2 (#1969) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 6caa9c86b85..d05dc454b3b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.10.1", + "infra/blueprint-test": "0.10.2", "infra/module-swapper": "0.2.5" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 975ca1d3f6d..62bc5f9e517 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.10.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.10.1...infra/blueprint-test/v0.10.2) (2023-12-05) + + +### Bug Fixes + +* add bq init step to create local config file ([#2000](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2000)) ([ee8cc7c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/ee8cc7c8eacd3ce5c00272259a2149279a28591b)) +* bump the all group in /infra/blueprint-test with 1 update ([#1965](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/1965)) ([31e2ab3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/31e2ab34fd45a8277ba0b41f98bb5a8c2b220f6c)) + ## [0.10.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.10.0...infra/blueprint-test/v0.10.1) (2023-11-08) From 4584db47d6d8ec81de3493116d42ff6be29b2fa3 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 5 Dec 2023 11:50:37 -0800 Subject: [PATCH 0698/1371] chore: update gator v3.14 (#2005) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 8c3a1501f91..481729bff90 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -17,7 +17,7 @@ env: MODULE_SWAPPER_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" KUBECTL_MINOR: "1.26" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" - GATOR_MINOR: "3.13" + GATOR_MINOR: "3.14" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" KUSTOMIZE_URL: "https://api.github.com/repos/kubernetes-sigs/kustomize/releases" From 5d7f214341d289b76a6aa9cd032f9ff4369c7a64 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 5 Dec 2023 12:28:07 -0800 Subject: [PATCH 0699/1371] chore: automate update of golangci-lint version (#2004) --- .github/renovate.json | 6 ++++++ cli/Makefile | 3 ++- infra/blueprint-test/Makefile | 3 ++- infra/build/Makefile | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 69e40f263b0..69b1a336646 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -66,6 +66,12 @@ "datasourceTemplate": "docker", "registryUrlTemplate": "https://gcr.io/cloud-foundation-cicd", "depNameTemplate": "cft/developer-tools" + }, + { + "fileMatch": ["(^|/)Makefile$"], + "matchStrings": ["GOLANGCI_VERSION := (?.*?)\\n"], + "datasourceTemplate": "docker", + "depNameTemplate": "golangci/golangci-lint" } ] } diff --git a/cli/Makefile b/cli/Makefile index 320014946cf..3c2cf6bfe6a 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,6 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd +GOLANGCI_VERSION := 1.55.2 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" @@ -60,4 +61,4 @@ test: build go_test int_test .PHONY: docker_go_lint docker_go_lint: - docker run --rm -v $(PWD):/cli -w /cli golangci/golangci-lint:v1.54.1 golangci-lint --timeout=5m -v run + docker run --rm -v $(PWD):/cli -w /cli golangci/golangci-lint:v${GOLANGCI_VERSION} golangci-lint --timeout=5m -v run diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 0cc96c2cd34..f640c58c2e8 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,6 @@ SHELL := /bin/bash +GOLANGCI_VERSION := 1.55.2 .PHONY: docker_go_lint docker_go_lint: - docker run --rm -v $(PWD):/blueprint-test -w /blueprint-test golangci/golangci-lint:v1.54.1 golangci-lint --timeout=5m -v run + docker run --rm -v $(PWD):/blueprint-test -w /blueprint-test golangci/golangci-lint:v${GOLANGCI_VERSION} golangci-lint --timeout=5m -v run diff --git a/infra/build/Makefile b/infra/build/Makefile index 6e5492c69bd..c3adab51fe7 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -46,7 +46,7 @@ ALPINE_VERSION := 3.18 MODULE_SWAPPER_VERSION := 0.2.5 # For developer-tools-krm -GOLANGCI_VERSION := 1.54.1 +GOLANGCI_VERSION := 1.55.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow From e6989dc9fd44886b3924dbd1e75520c0b9e28512 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 5 Dec 2023 14:44:11 -0600 Subject: [PATCH 0700/1371] chore: Update Tools to 1.17.8 (#1997) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index c3adab51fe7..788f5df0ff8 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.6.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 455.0.0 +CLOUD_SDK_VERSION := 456.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -50,12 +50,12 @@ GOLANGCI_VERSION := 1.55.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.13.4 +GATOR_VERSION := 3.14.0 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.16.1 +GCRANE_VERSION := 0.17.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From e93a9a1c7b78a35a02ef0685ab9714763827c2d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 08:23:49 -0800 Subject: [PATCH 0701/1371] chore: bump the all group with 2 updates (#2011) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .github/workflows/go-fbf-test.yml | 4 ++-- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 6 +++--- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 4 ++-- .github/workflows/test-cli.yml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index fb7663f99c6..092b5f18b9a 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,8 +25,8 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/utils/fbf/go.mod cache-dependency-path: infra/utils/fbf/go.sum diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 219c7491fb7..2949e7523e4 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: folder: [cli, infra/blueprint-test] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: ${{ matrix.folder }}/go.mod cache-dependency-path: ${{ matrix.folder }}/go.sum diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index ab2ed248e54..3c51f9bff2e 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,8 +25,8 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum @@ -39,7 +39,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index aef234822df..56735fc58fe 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -10,5 +10,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v4.8.0 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 77f9c97dfa3..13ca8564bd7 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -20,8 +20,8 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index f8f721da63e..33217dfa5f6 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,8 +31,8 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum From 5104b254efb76e436176905ddf2b04adf7bebc4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:45:02 -0800 Subject: [PATCH 0702/1371] fix: bump the all group in /infra/utils/fbf with 1 update (#2009) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 5365ac50146..b1030e634d8 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.9 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.152.0 + google.golang.org/api v0.153.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 32c3ac69ece..e0aed40d8c1 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -127,8 +127,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.152.0 h1:t0r1vPnfMc260S2Ci+en7kfCZaLOPs5KI0sVV/6jZrY= -google.golang.org/api v0.152.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= +google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= +google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= From 640a8858ffce99a4512904563a2b00e6768f5a31 Mon Sep 17 00:00:00 2001 From: gibbleyg <63262871+gibbleyg@users.noreply.github.com> Date: Wed, 6 Dec 2023 12:10:49 -0800 Subject: [PATCH 0703/1371] feat: Add GKE Cluster property type (#2013) --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui_ext.pb.go | 31 ++++++++++++-------- cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 3 ++ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 3c2cf6bfe6a..e19f3197a8e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.9 +VERSION=v1.2.10 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go index 848f95cea1a..2a7817577c2 100644 --- a/cli/bpmetadata/bpmetadata_ui_ext.pb.go +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -49,6 +49,8 @@ const ( ExtensionType_ET_GCS_BUCKET ExtensionType = 18 // IAM related. ExtensionType_ET_IAM_SERVICE_ACCOUNT ExtensionType = 19 + // GKE related. + ExtensionType_ET_GKE_CLUSTER ExtensionType = 20 ) // Enum value maps for ExtensionType. @@ -74,6 +76,7 @@ var ( 17: "ET_GCE_GENERIC_RESOURCE", 18: "ET_GCS_BUCKET", 19: "ET_IAM_SERVICE_ACCOUNT", + 20: "ET_GKE_CLUSTER", } ExtensionType_value = map[string]int32{ "ET_UNDEFINED": 0, @@ -96,6 +99,7 @@ var ( "ET_GCE_GENERIC_RESOURCE": 17, "ET_GCS_BUCKET": 18, "ET_IAM_SERVICE_ACCOUNT": 19, + "ET_GKE_CLUSTER": 20, } ) @@ -1353,7 +1357,7 @@ var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0xd5, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0xe9, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, @@ -1382,18 +1386,19 @@ var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, - 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x2a, 0x52, - 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, - 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, - 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, - 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x12, 0x12, + 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x4b, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, + 0x10, 0x14, 0x2a, 0x52, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, + 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, + 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, + 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index 3422572db7c..f3c0644e623 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -36,6 +36,9 @@ enum ExtensionType { // IAM related. ET_IAM_SERVICE_ACCOUNT = 19; + + // GKE related. + ET_GKE_CLUSTER = 20; } // An extension for variables defined as part of DisplayVariable. The From cc502063d59ffdfff4bdf1441d3855a8ad721716 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Dec 2023 17:54:21 +0100 Subject: [PATCH 0704/1371] chore(deps): update actions/stale action to v9 (#2019) --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index b1cd5522899..3d682a38a17 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -26,7 +26,7 @@ jobs: if: github.repository_owner == 'GoogleCloudPlatform' runs-on: ubuntu-latest steps: - - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # v8 + - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' From 10629fbb81b764a7dcfc19674c26a1c31bff8d38 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Dec 2023 17:56:34 +0100 Subject: [PATCH 0705/1371] chore(deps): update github/codeql-action action to v2.22.9 (#2017) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5c021ce4ccf..1bfe50e2325 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8 + uses: github/codeql-action/upload-sarif@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 with: sarif_file: results.sarif From 183b341d43863e0a26b8bedf3821c6d0ac17a712 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Dec 2023 18:03:23 +0100 Subject: [PATCH 0706/1371] chore(deps): update github/codeql-action digest to c0d1daa (#2015) Co-authored-by: Andrew Peabody --- .github/workflows/codeql.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index dbfc97cdd25..420eff05c16 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2 + uses: github/codeql-action/init@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2 + uses: github/codeql-action/autobuild@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2 + uses: github/codeql-action/analyze@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 with: category: "/language:${{matrix.language}}" From bca6c9483bfde81aa05da832d436908b6d40ab1d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Dec 2023 18:35:57 +0100 Subject: [PATCH 0707/1371] fix(deps): update go modules (#2018) --- infra/blueprint-test/go.mod | 12 ++++++------ infra/blueprint-test/go.sum | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index d9a90c18aa9..2e7457da15c 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,14 +4,14 @@ go 1.20 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.46.7 + github.com/gruntwork-io/terratest v0.46.8 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.8.4 github.com/tidwall/gjson v1.17.0 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.14.0 - sigs.k8s.io/kustomize/kyaml v0.15.0 + sigs.k8s.io/kustomize/kyaml v0.16.0 ) require ( @@ -100,13 +100,13 @@ require ( 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/api v0.28.1 // indirect - k8s.io/apimachinery v0.28.1 // indirect - k8s.io/client-go v0.28.1 // indirect + k8s.io/api v0.28.4 // indirect + k8s.io/apimachinery v0.28.4 // indirect + k8s.io/client-go v0.28.4 // indirect k8s.io/klog/v2 v2.100.1 // indirect k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index e047e66fdcb..22da404187c 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -370,8 +370,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.7 h1:oqGPBBO87SEsvBYaA0R5xOq+Lm2Xc5dmFVfxEolfZeU= -github.com/gruntwork-io/terratest v0.46.7/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= +github.com/gruntwork-io/terratest v0.46.8 h1:rgK7z6Dy/eMGFaclKR0WVG9Z54tR+Ehl7S09+8Y25j0= +github.com/gruntwork-io/terratest v0.46.8/go.mod h1:6MxfmOFQQEpQZjpuWRwuAK8qm836hYgAOCzSIZIWTmg= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1051,12 +1051,12 @@ 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.28.1 h1:i+0O8k2NPBCPYaMB+uCkseEbawEt/eFaiRqUx8aB108= -k8s.io/api v0.28.1/go.mod h1:uBYwID+66wiL28Kn2tBjBYQdEU0Xk0z5qF8bIBqk/Dg= -k8s.io/apimachinery v0.28.1 h1:EJD40og3GizBSV3mkIoXQBsws32okPOy+MkRyzh6nPY= -k8s.io/apimachinery v0.28.1/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw= -k8s.io/client-go v0.28.1 h1:pRhMzB8HyLfVwpngWKE8hDcXRqifh1ga2Z/PU9SXVK8= -k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE= +k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY= +k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0= +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/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-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk= @@ -1068,9 +1068,9 @@ 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/kyaml v0.15.0 h1:ynlLMAxDhrY9otSg5GYE2TcIz31XkGZ2Pkj7SdolD84= -sigs.k8s.io/kustomize/kyaml v0.15.0/go.mod h1:+uMkBahdU1KNOj78Uta4rrXH+iH7wvg+nW7+GULvREA= +sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0= +sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= 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= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From 56012c6bec1103ce2ae9378bb8dfd4898cf42c2d Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 8 Dec 2023 12:06:05 -0600 Subject: [PATCH 0708/1371] chore: Update Tools to 1.17.9 (#2014) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 788f5df0ff8..69406b9fc06 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -27,7 +27,7 @@ PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow TERRAGRUNT_VERSION := 0.53.8 # Updated by Update Tooling Workflow -KUSTOMIZE_VERSION := 5.2.1 +KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.48 PROTOC_VERSION := 23.4 @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.9 +CFT_CLI_VERSION := 1.2.10 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.11 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.17.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From d5468a3559464fff812590f1bd21a6c39d17e036 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 8 Dec 2023 10:25:33 -0800 Subject: [PATCH 0709/1371] chore: update to dev-tools 1.18 on Alpine 3.19 with GO 1.21 (#2023) --- infra/build/Makefile | 4 ++-- infra/build/developer-tools-krm/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 69406b9fc06..6a7604d165e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -41,7 +41,7 @@ KUBECTL_VERSION := 1.26.11 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.49.0 TINKEY_VERSION := 1.7.0 -ALPINE_VERSION := 3.18 +ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.2.5 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.17.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools-krm/Dockerfile b/infra/build/developer-tools-krm/Dockerfile index 87308dfac67..a963e991237 100644 --- a/infra/build/developer-tools-krm/Dockerfile +++ b/infra/build/developer-tools-krm/Dockerfile @@ -15,7 +15,7 @@ ARG BASE_IMAGE_VERSION FROM cft/developer-tools:$BASE_IMAGE_VERSION -RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc libc6-compat ansible-lint py3-jsonschema +RUN apk update && apk add --no-cache openrc docker-cli docker screen nodejs-current npm yamllint util-linux-misc libc6-compat ansible-lint py3-jsonschema pipx # Required to download and install golangci-lint ARG GOLANGCI_VERSION @@ -67,4 +67,4 @@ ADD ./build/scripts/prow_entrypoint.sh /usr/local/bin/ # cookiecutter is used for terraform-google-module-template tests # https://github.com/terraform-google-modules/terraform-google-module-template -RUN pip install cookiecutter +RUN pipx install cookiecutter From 05c5012eb7dcc8a7becf0a9741b2628ab63b3189 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 8 Dec 2023 10:57:54 -0800 Subject: [PATCH 0710/1371] chore: remove .github/dependabot.yml (#2006) --- .github/dependabot.yml | 52 ------------------------------------------ 1 file changed, 52 deletions(-) delete mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 72f46e16880..00000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,52 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "github-actions" - directory: / - schedule: - interval: "daily" - commit-message: - prefix: "chore" - groups: - all: - patterns: - - "*" - - package-ecosystem: "gomod" - directory: /cli - schedule: - interval: "daily" - commit-message: - prefix: "fix" - groups: - all: - patterns: - - "*" - - package-ecosystem: "gomod" - directory: /infra/blueprint-test - schedule: - interval: "daily" - commit-message: - prefix: "fix" - groups: - all: - patterns: - - "*" - - package-ecosystem: "gomod" - directory: /infra/module-swapper - schedule: - interval: "daily" - commit-message: - prefix: "fix" - groups: - all: - patterns: - - "*" - - package-ecosystem: "gomod" - directory: /infra/utils/fbf - schedule: - interval: "daily" - commit-message: - prefix: "fix" - groups: - all: - patterns: - - "*" From f64bc7a6c4913ba9f87f5f3193b560e9ab00ccc9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 8 Dec 2023 11:21:21 -0800 Subject: [PATCH 0711/1371] chore: update periodic-reporter.yaml (#2012) --- .../terraform/modules/workflow_files/periodic-reporter.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/infra/terraform/modules/workflow_files/periodic-reporter.yaml b/infra/terraform/modules/workflow_files/periodic-reporter.yaml index 747a3e12fac..c5d815a4189 100644 --- a/infra/terraform/modules/workflow_files/periodic-reporter.yaml +++ b/infra/terraform/modules/workflow_files/periodic-reporter.yaml @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# NOTE: This file is automatically generated from: +# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/modules/workflow_files/periodic-reporter.yaml + name: 'reporter' on: @@ -28,7 +31,7 @@ jobs: runs-on: 'ubuntu-latest' steps: - - uses: 'actions/github-script@v6' + - uses: 'actions/github-script@v7' with: script: |- // label for all issues opened by reporter From 67778f4d3da64b01ee799e1a172e42cf65fdfa6c Mon Sep 17 00:00:00 2001 From: Daniel Andrade Date: Fri, 8 Dec 2023 17:06:56 -0300 Subject: [PATCH 0712/1371] chore: update CI-trigger ignore filter to ignore png files (#2027) --- infra/terraform/test-org/ci-triggers/triggers.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 810574893c5..6519e23880f 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -419,7 +419,7 @@ resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { } filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", ".gitignore", ".github/**"] + ignored_files = ["**/*.md", "**/*.png", ".gitignore", ".github/**"] } From ca1798e512caf011aff6b1e29fba0adc8f4ad468 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 8 Dec 2023 14:40:29 -0800 Subject: [PATCH 0713/1371] chore(master): release blueprint-test 0.10.3 (#2022) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d05dc454b3b..f76b4507a05 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.10.2", + "infra/blueprint-test": "0.10.3", "infra/module-swapper": "0.2.5" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 62bc5f9e517..7fd0a583a74 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.10.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.10.2...infra/blueprint-test/v0.10.3) (2023-12-08) + + +### Bug Fixes + +* **deps:** update go modules ([#2018](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2018)) ([bca6c94](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bca6c9483bfde81aa05da832d436908b6d40ab1d)) + ## [0.10.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.10.1...infra/blueprint-test/v0.10.2) (2023-12-05) From f47e9f3e8d868650e5f301c0790382c0b5d7c521 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 8 Dec 2023 14:43:37 -0800 Subject: [PATCH 0714/1371] chore: update renovate config to GO 1.21 (#2026) --- .github/renovate.json | 4 ++-- infra/terraform/test-org/github/resources/renovate.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 69b1a336646..58223e5fca0 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -15,7 +15,7 @@ "separateMajorMinor": false, "ignorePaths": ["config-connector/**"], "additionalBranchPrefix": "{{parentDir}}-", - "constraints": {"go": "1.20"}, + "constraints": {"go": "1.21"}, "packageRules": [ { "matchFileNames": [".github/**"], @@ -38,7 +38,7 @@ }, { "matchPackageNames": ["go"], - "allowedVersions": "<1.21.0", + "allowedVersions": "1.21", "postUpdateOptions": ["gomodTidy"] } ], diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 2fe06ba8135..ed52de69dd7 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -13,7 +13,7 @@ "labels": ["type:security"], "minimumReleaseAge": null }, - "constraints": {"go": "1.20"}, + "constraints": {"go": "1.21"}, "packageRules": [ { "matchFileNames": ["examples/**", "test/**", ".github/**", "infra/**"], @@ -37,7 +37,7 @@ { "matchDatasources": ["golang-version"], "rangeStrategy": "replace", - "allowedVersions": "1.20", + "allowedVersions": "1.21", "postUpdateOptions": ["gomodTidy"] }, { From 712b282c32c3bbbf0dd808046fcfe6ef3870c9c0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 8 Dec 2023 23:54:52 +0100 Subject: [PATCH 0715/1371] chore(deps): update cft/developer-tools docker tag to v1.18 (#2029) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index e19f3197a8e..4c772e5d1c9 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.17 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd GOLANGCI_VERSION := 1.55.2 From 9eb62856200531bb7286d99a917b259e70d6d620 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 9 Dec 2023 00:29:16 +0100 Subject: [PATCH 0716/1371] chore(deps): update cft/developer-tools docker tag to v1.18 (#2030) --- infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 6774f624c55..7a0c095bad3 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -27,7 +27,7 @@ steps: dir: 'infra/blueprint-test' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.17' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.18' options: env: - 'TF_VAR_org_id=$_ORG_ID' From 3f5c2c44d7df77adcd4155aacd0aaa4c85f0fa7e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 9 Dec 2023 01:20:41 +0100 Subject: [PATCH 0717/1371] chore(deps): update google-github-actions/setup-gcloud action to v2 (#2031) Co-authored-by: Andrew Peabody --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 30ba20d7865..e3f1b0a9b11 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -28,7 +28,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@e30db14379863a8c79331b04a9969f4c1e225e0b # v1.1.1 + - uses: google-github-actions/setup-gcloud@825196879a077b7efa50db2e88409f44de4635c2 # v2.0.0 with: version: "410.0.0" project_id: ${{ env.PROJECT_ID }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 13ca8564bd7..66d1ccea7c5 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -33,7 +33,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@e30db14379863a8c79331b04a9969f4c1e225e0b # v1 + - uses: google-github-actions/setup-gcloud@825196879a077b7efa50db2e88409f44de4635c2 # v2.0.0 with: version: "410.0.0" From 7f6dfd3b1b62bd54069a0b6afc99f1c12da77de8 Mon Sep 17 00:00:00 2001 From: HuixinLai <55810452+HuixinLai@users.noreply.github.com> Date: Mon, 11 Dec 2023 08:10:05 -0800 Subject: [PATCH 0718/1371] feat: add booleanGroup to bpmetadata ui (#2007) Co-authored-by: Awais Malik Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui.pb.go | 407 ++++++++++++------ cli/bpmetadata/proto/bpmetadata_ui.proto | 42 ++ .../schema/gcp-blueprint-metadata.json | 31 ++ 4 files changed, 349 insertions(+), 133 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 4c772e5d1c9..8d4d0483c25 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.10 +VERSION=v1.2.11 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index 1dd9e2d034e..c17b88cb7f2 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -32,6 +32,9 @@ type BlueprintUIInput struct { // Sections is a generic structure for grouping inputs together. // Gen: manually-authored Sections []*DisplaySection `protobuf:"bytes,2,rep,name=sections,proto3" json:"sections,omitempty" yaml:"sections,omitempty"` // @gotags: json:"sections,omitempty" yaml:"sections,omitempty" + // List of boolean groups that will be referenced by properties. + // Gen: manually-authored + BooleanGroups []*BooleanGroup `protobuf:"bytes,3,rep,name=boolean_groups,json=booleanGroups,proto3" json:"booleanGroups,omitempty" yaml:"booleanGroups,omitempty"` // @gotags: json:"booleanGroups,omitempty" yaml:"booleanGroups,omitempty" } func (x *BlueprintUIInput) Reset() { @@ -80,6 +83,13 @@ func (x *BlueprintUIInput) GetSections() []*DisplaySection { return nil } +func (x *BlueprintUIInput) GetBooleanGroups() []*BooleanGroup { + if x != nil { + return x.BooleanGroups + } + return nil +} + // Additional display specific metadata pertaining to a particular // input variable. type DisplayVariable struct { @@ -163,6 +173,13 @@ type DisplayVariable struct { // Optional. // Gen: manually-authored Level int32 `protobuf:"varint,18,opt,name=level,proto3" json:"level,omitempty" yaml:"level,omitempty"` // @gotags: json:"level,omitempty" yaml:"level,omitempty" + // The name of a boolean group from Input.booleanGroups to which this + // property belongs. Only allowed for properties declared as type boolean in + // the schema. Properties in a boolean group must be adjacent in the + // properties list and must belong to the same section (if any). + // Optional. + // Gen: manually-authored + BooleanGroup string `protobuf:"bytes,20,opt,name=boolean_group,json=booleanGroup,proto3" json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty"` // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" } func (x *DisplayVariable) Reset() { @@ -323,6 +340,13 @@ func (x *DisplayVariable) GetLevel() int32 { return 0 } +func (x *DisplayVariable) GetBooleanGroup() string { + if x != nil { + return x.BooleanGroup + } + return "" +} + type ValueLabel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -471,6 +495,97 @@ func (x *DisplaySection) GetParent() string { return "" } +// Groups a list of boolean properties into one logical property for the +// purposes of the configuration form. The title of a [BooleanGroup][] has the +// same styling as the title of an ordinary property, and individual properties +// in the group will be packed more tightly together to indicate their +// association. Child of [Input][]. +type BooleanGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the group, referenced by [Property][] + // .booleanGroup. + // BooleanGroup names must be unique. Required. + // Gen: manually-authored + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" + // Group title. + // Required. UTF-8 text. No markup. At most 64 characters. + // Gen: manually-authored + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title" yaml:"title"` // @gotags: json:"title" yaml:"title" + // Group tooltip. + // Optional. HTML (<a href> tags only). At most 256 + // characters. + // Gen: manually-authored + Tooltip string `protobuf:"bytes,3,opt,name=tooltip,proto3" json:"tooltip,omitempty" yaml:"tooltip,omitempty"` // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" + // Group subtext. + // Optional. HTML (<a href> tags only). At most 256 + // characters. + // Gen: manually-authored + Subtext string `protobuf:"bytes,4,opt,name=subtext,proto3" json:"subtext,omitempty" yaml:"subtext,omitempty"` // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" +} + +func (x *BooleanGroup) Reset() { + *x = BooleanGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BooleanGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BooleanGroup) ProtoMessage() {} + +func (x *BooleanGroup) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BooleanGroup.ProtoReflect.Descriptor instead. +func (*BooleanGroup) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} +} + +func (x *BooleanGroup) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *BooleanGroup) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *BooleanGroup) GetTooltip() string { + if x != nil { + return x.Tooltip + } + return "" +} + +func (x *BooleanGroup) GetSubtext() string { + if x != nil { + return x.Subtext + } + return "" +} + type BlueprintUIOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -492,7 +607,7 @@ type BlueprintUIOutput struct { func (x *BlueprintUIOutput) Reset() { *x = BlueprintUIOutput{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[4] + mi := &file_bpmetadata_ui_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -505,7 +620,7 @@ func (x *BlueprintUIOutput) String() string { func (*BlueprintUIOutput) ProtoMessage() {} func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[4] + mi := &file_bpmetadata_ui_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -518,7 +633,7 @@ func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintUIOutput.ProtoReflect.Descriptor instead. func (*BlueprintUIOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} } func (x *BlueprintUIOutput) GetOutputMessage() string { @@ -573,7 +688,7 @@ type UIActionItem struct { func (x *UIActionItem) Reset() { *x = UIActionItem{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[5] + mi := &file_bpmetadata_ui_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -586,7 +701,7 @@ func (x *UIActionItem) String() string { func (*UIActionItem) ProtoMessage() {} func (x *UIActionItem) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[5] + mi := &file_bpmetadata_ui_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -599,7 +714,7 @@ func (x *UIActionItem) ProtoReflect() protoreflect.Message { // Deprecated: Use UIActionItem.ProtoReflect.Descriptor instead. func (*UIActionItem) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{6} } func (x *UIActionItem) GetHeading() string { @@ -650,7 +765,7 @@ type DisplayOutput struct { func (x *DisplayOutput) Reset() { *x = DisplayOutput{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[6] + mi := &file_bpmetadata_ui_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -663,7 +778,7 @@ func (x *DisplayOutput) String() string { func (*DisplayOutput) ProtoMessage() {} func (x *DisplayOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[6] + mi := &file_bpmetadata_ui_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -676,7 +791,7 @@ func (x *DisplayOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use DisplayOutput.ProtoReflect.Descriptor instead. func (*DisplayOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{6} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{7} } func (x *DisplayOutput) GetOpenInNewTab() bool { @@ -700,8 +815,8 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, - 0x02, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, + 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x81, + 0x03, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, @@ -712,109 +827,123 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x6d, - 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x89, 0x05, - 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, - 0x6c, 0x74, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, - 0x74, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, - 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, - 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, - 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, - 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x11, 0x78, 0x5f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x78, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, - 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x56, 0x0a, 0x11, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0f, 0x65, 0x6e, - 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, + 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x1a, 0x6d, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0xae, 0x05, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, + 0x67, 0x65, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, + 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x61, + 0x78, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x11, 0x78, + 0x5f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x0f, 0x78, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x56, 0x0a, 0x11, 0x65, 0x6e, + 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x52, 0x0f, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, + 0x65, 0x61, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x04, 0x08, + 0x13, 0x10, 0x14, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, + 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, + 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, + 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x0c, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, + 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, - 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xda, 0x02, 0x0a, - 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, - 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, - 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, - 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, - 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, - 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, - 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, - 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, + 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, + 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, + 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, + 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, + 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -829,33 +958,35 @@ func file_bpmetadata_ui_proto_rawDescGZIP() []byte { return file_bpmetadata_ui_proto_rawDescData } -var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_bpmetadata_ui_proto_goTypes = []interface{}{ (*BlueprintUIInput)(nil), // 0: google.cloud.config.bpmetadata.BlueprintUIInput (*DisplayVariable)(nil), // 1: google.cloud.config.bpmetadata.DisplayVariable (*ValueLabel)(nil), // 2: google.cloud.config.bpmetadata.ValueLabel (*DisplaySection)(nil), // 3: google.cloud.config.bpmetadata.DisplaySection - (*BlueprintUIOutput)(nil), // 4: google.cloud.config.bpmetadata.BlueprintUIOutput - (*UIActionItem)(nil), // 5: google.cloud.config.bpmetadata.UIActionItem - (*DisplayOutput)(nil), // 6: google.cloud.config.bpmetadata.DisplayOutput - nil, // 7: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - nil, // 8: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - (*GooglePropertyExtension)(nil), // 9: google.cloud.config.bpmetadata.GooglePropertyExtension + (*BooleanGroup)(nil), // 4: google.cloud.config.bpmetadata.BooleanGroup + (*BlueprintUIOutput)(nil), // 5: google.cloud.config.bpmetadata.BlueprintUIOutput + (*UIActionItem)(nil), // 6: google.cloud.config.bpmetadata.UIActionItem + (*DisplayOutput)(nil), // 7: google.cloud.config.bpmetadata.DisplayOutput + nil, // 8: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + nil, // 9: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + (*GooglePropertyExtension)(nil), // 10: google.cloud.config.bpmetadata.GooglePropertyExtension } var file_bpmetadata_ui_proto_depIdxs = []int32{ - 7, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - 3, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection - 9, // 2: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension - 2, // 3: google.cloud.config.bpmetadata.DisplayVariable.enum_value_labels:type_name -> google.cloud.config.bpmetadata.ValueLabel - 5, // 4: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem - 8, // 5: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - 1, // 6: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable - 6, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 8, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + 3, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection + 4, // 2: google.cloud.config.bpmetadata.BlueprintUIInput.boolean_groups:type_name -> google.cloud.config.bpmetadata.BooleanGroup + 10, // 3: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension + 2, // 4: google.cloud.config.bpmetadata.DisplayVariable.enum_value_labels:type_name -> google.cloud.config.bpmetadata.ValueLabel + 6, // 5: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem + 9, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + 1, // 7: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable + 7, // 8: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_bpmetadata_ui_proto_init() } @@ -914,7 +1045,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintUIOutput); i { + switch v := v.(*BooleanGroup); i { case 0: return &v.state case 1: @@ -926,7 +1057,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UIActionItem); i { + switch v := v.(*BlueprintUIOutput); i { case 0: return &v.state case 1: @@ -938,6 +1069,18 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UIActionItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DisplayOutput); i { case 0: return &v.state @@ -956,7 +1099,7 @@ func file_bpmetadata_ui_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bpmetadata_ui_proto_rawDesc, NumEnums: 0, - NumMessages: 9, + NumMessages: 10, NumExtensions: 0, NumServices: 0, }, diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index a600dfae50f..b17b41433b7 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -16,6 +16,10 @@ message BlueprintUIInput { // Sections is a generic structure for grouping inputs together. // Gen: manually-authored repeated DisplaySection sections = 2; // @gotags: json:"sections,omitempty" yaml:"sections,omitempty" + + // List of boolean groups that will be referenced by properties. + // Gen: manually-authored + repeated BooleanGroup boolean_groups = 3; // @gotags: json:"booleanGroups,omitempty" yaml:"booleanGroups,omitempty" } // Additional display specific metadata pertaining to a particular @@ -114,6 +118,14 @@ message DisplayVariable { // Optional. // Gen: manually-authored int32 level = 18; // @gotags: json:"level,omitempty" yaml:"level,omitempty" + + // The name of a boolean group from Input.booleanGroups to which this + // property belongs. Only allowed for properties declared as type boolean in + // the schema. Properties in a boolean group must be adjacent in the + // properties list and must belong to the same section (if any). + // Optional. + // Gen: manually-authored + string boolean_group = 20; // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" } message ValueLabel { @@ -147,6 +159,36 @@ message DisplaySection { string parent = 5; // @gotags: json:"parent,omitempty" yaml:"parent,omitempty" } +// Groups a list of boolean properties into one logical property for the +// purposes of the configuration form. The title of a [BooleanGroup][] has the +// same styling as the title of an ordinary property, and individual properties +// in the group will be packed more tightly together to indicate their +// association. Child of [Input][]. +message BooleanGroup { + // The name of the group, referenced by [Property][] + // .booleanGroup. + // BooleanGroup names must be unique. Required. + // Gen: manually-authored + string name = 1; // @gotags: json:"name" yaml:"name" + + // Group title. + // Required. UTF-8 text. No markup. At most 64 characters. + // Gen: manually-authored + string title = 2; // @gotags: json:"title" yaml:"title" + + // Group tooltip. + // Optional. HTML (<a href> tags only). At most 256 + // characters. + // Gen: manually-authored + string tooltip = 3; // @gotags: json:"tooltip,omitempty" yaml:"tooltip,omitempty" + + // Group subtext. + // Optional. HTML (<a href> tags only). At most 256 + // characters. + // Gen: manually-authored + string subtext = 4; // @gotags: json:"subtext,omitempty" yaml:"subtext,omitempty" +} + message BlueprintUIOutput { // Short message to be displayed while the blueprint is deploying. // At most 128 characters. diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 370bb3f2831..8cb87d34f67 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -551,6 +551,12 @@ "$ref": "#/$defs/DisplaySection" }, "type": "array" + }, + "booleanGroups": { + "items": { + "$ref": "#/$defs/BooleanGroup" + }, + "type": "array" } }, "additionalProperties": false, @@ -617,6 +623,28 @@ "name" ] }, + "BooleanGroup": { + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + }, + "tooltip": { + "type": "string" + }, + "subtext": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "title" + ] + }, "DisplayOutput": { "properties": { "openInNewTab": { @@ -711,6 +739,9 @@ }, "level": { "type": "integer" + }, + "booleanGroup": { + "type": "string" } }, "additionalProperties": false, From 9bd89035e2386fe641c4db1c39a0156b96d980f9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 11 Dec 2023 08:50:08 -0800 Subject: [PATCH 0719/1371] chore: group go version and regex (dev-tools) (#2032) --- infra/terraform/test-org/github/resources/renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index ed52de69dd7..64db5bd4dc8 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -36,8 +36,8 @@ }, { "matchDatasources": ["golang-version"], - "rangeStrategy": "replace", - "allowedVersions": "1.21", + "matchManagers": [ "regex" ], + "rangeStrategy": "bump", "postUpdateOptions": ["gomodTidy"] }, { From a7eea94b416392a24136022da7fe960f0304d8cb Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 12 Dec 2023 23:24:53 -0600 Subject: [PATCH 0720/1371] chore: run all bpt tests (#2001) Co-authored-by: Andrew Peabody --- .pre-commit-config.yaml | 3 ++- infra/blueprint-test/build/int.cloudbuild.yaml | 4 ++++ infra/blueprint-test/pkg/golden/golden_test.go | 10 +++++----- .../pkg/golden/testdata/TestUpdate-with-prev-data.json | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4fa3dc19205..04f7ce6875a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,8 @@ exclude: | dm/.*| reports/.*| cli/testdata/.*| - cli/bptest/.* + cli/bptest/.*| + infra/blueprint-test/.*.json )$ repos: - repo: https://github.com/renovatebot/pre-commit-hooks diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 7a0c095bad3..53563f1c9dc 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -17,6 +17,10 @@ steps: name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' args: ['/bin/bash', '-c', 'source /usr/local/bin/task_helper_functions.sh && prepare_environment'] dir: 'infra/blueprint-test' +- id: pkg-test + name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' + args: ['/bin/bash', '-c', 'go test ./... -v'] + dir: 'infra/blueprint-test/pkg' - id: test name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' args: ['/bin/bash', '-c', 'git config --global user.name "cft-test"; git config --global user.email "<>"; go test -v'] diff --git a/infra/blueprint-test/pkg/golden/golden_test.go b/infra/blueprint-test/pkg/golden/golden_test.go index 9529194f379..c72f22e4269 100644 --- a/infra/blueprint-test/pkg/golden/golden_test.go +++ b/infra/blueprint-test/pkg/golden/golden_test.go @@ -27,7 +27,7 @@ import ( "github.com/stretchr/testify/assert" ) -const testProjectIDEnvVar = "TEST_GCLOUD_PROJECT" +const testProjectID = "foo" func TestUpdate(t *testing.T) { tests := []struct { @@ -93,7 +93,7 @@ func TestJSONEq(t *testing.T) { }, { name: "sanitize projectID", - data: fmt.Sprintf("{\"foo\":\"bar\",\"baz\":{\"qux\":\"%s\"}}", os.Getenv(testProjectIDEnvVar)), + data: fmt.Sprintf("{\"foo\":\"bar\",\"baz\":{\"qux\":\"%s\"}}", testProjectID), opts: []goldenFileOption{WithSanitizer(ProjectIDSanitizer(t))}, setProjectID: true, eqPath: "baz", @@ -101,10 +101,10 @@ func TestJSONEq(t *testing.T) { }, { name: "no gcloud projectID set", - data: fmt.Sprintf("{\"foo\":\"bar\",\"baz\":{\"qux\":\"%s\"}}", os.Getenv(testProjectIDEnvVar)), + data: fmt.Sprintf("{\"foo\":\"bar\",\"baz\":{\"qux\":\"%s\"}}", testProjectID), opts: []goldenFileOption{WithSanitizer(ProjectIDSanitizer(t))}, eqPath: "baz", - want: fmt.Sprintf("{\"qux\":\"%s\"}", os.Getenv(testProjectIDEnvVar)), + want: fmt.Sprintf("{\"qux\":\"%s\"}", testProjectID), }, { name: "multiple sanitizers quz", @@ -121,7 +121,7 @@ func TestJSONEq(t *testing.T) { t.Run(tt.name, func(t *testing.T) { assert := assert.New(t) if tt.setProjectID { - gcloud.Runf(t, "config set project %s", os.Getenv(testProjectIDEnvVar)) + gcloud.Runf(t, "config set project %s", testProjectID) defer gcloud.Run(t, "config unset project") } os.Setenv(gfUpdateEnvVar, "true") diff --git a/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json b/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json index 2393cd01d4b..9f5dd4e3d9f 100755 --- a/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json +++ b/infra/blueprint-test/pkg/golden/testdata/TestUpdate-with-prev-data.json @@ -1 +1 @@ -{"foo":"bar"} +{"foo":"bar"} \ No newline at end of file From 775a50ca6953196d62be223fd530ea1344410141 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 13 Dec 2023 10:12:01 -0600 Subject: [PATCH 0721/1371] feat(tft): skip logging sensitive setup outputs (#2035) --- infra/blueprint-test/go.mod | 2 + infra/blueprint-test/go.sum | 4 ++ infra/blueprint-test/pkg/tft/terraform.go | 44 ++++++++++++++++- .../terraform_simple_base_api_module_test.go | 47 +++++++++++++++++++ 4 files changed, 96 insertions(+), 1 deletion(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 2e7457da15c..a34614ce57f 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -51,7 +51,9 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f // indirect github.com/hashicorp/hcl/v2 v2.18.0 // indirect + github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 // indirect github.com/hashicorp/terraform-json v0.17.1 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/jinzhu/copier v0.4.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 22da404187c..64d41a3afde 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -387,8 +387,12 @@ github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mO github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws= +github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= +github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= +github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQHgyRwf3RkyA= github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index e08d0ccc9b9..24647d70aa8 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -32,6 +32,7 @@ import ( "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" "github.com/gruntwork-io/terratest/modules/logger" "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/hashicorp/terraform-config-inspect/tfconfig" "github.com/mitchellh/go-testing-interface" "github.com/stretchr/testify/assert" ) @@ -65,6 +66,7 @@ type TFBlueprintTest struct { terraformVetProject string // optional a valid existing project that will be used when a plan has resources in a project that still does not exist. vars map[string]interface{} // variables to pass to Terraform as flags logger *logger.Logger // custom logger + sensitiveLogger *logger.Logger // custom logger for sensitive logging t testing.TB // TestingT or TestingB init func(*assert.Assertions) // init function apply func(*assert.Assertions) // apply function @@ -150,6 +152,12 @@ func WithLogger(logger *logger.Logger) tftOption { } } +func WithSensitiveLogger(logger *logger.Logger) tftOption { + return func(f *TFBlueprintTest) { + f.sensitiveLogger = logger + } +} + // WithSetupOutputs overrides output values from the setup stage func WithSetupOutputs(vars map[string]interface{}) tftOption { return func(f *TFBlueprintTest) { @@ -177,6 +185,10 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { if tft.logger == nil { tft.logger = utils.GetLoggerFromT() } + // If no custom sensitive logger, use discard logger. + if tft.sensitiveLogger == nil { + tft.sensitiveLogger = logger.Discard + } // if explicit tfDir is provided, validate it else try auto discovery if tft.tfDir != "" { _, err := os.Stat(tft.tfDir) @@ -213,7 +225,8 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { // load TFEnvVars from setup outputs if tft.setupDir != "" { tft.logger.Logf(tft.t, "Loading env vars from setup %s", tft.setupDir) - loadTFEnvVar(tft.tfEnvVars, tft.getTFOutputsAsInputs(terraform.OutputAll(tft.t, &terraform.Options{TerraformDir: tft.setupDir, Logger: tft.logger, NoColor: true}))) + outputs := tft.getOutputs(tft.sensitiveOutputs(tft.setupDir)) + loadTFEnvVar(tft.tfEnvVars, tft.getTFOutputsAsInputs(outputs)) if credsEnc, exists := tft.tfEnvVars[fmt.Sprintf("TF_VAR_%s", setupKeyOutputName)]; tft.saKey == "" && exists { if credDec, err := b64.StdEncoding.DecodeString(credsEnc); err == nil { gcloud.ActivateCredsAndEnvVars(tft.t, string(credDec)) @@ -237,6 +250,35 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { return tft } +// sensitiveOutputs returns a map of sensitive output keys for module in dir. +func (b *TFBlueprintTest) sensitiveOutputs(dir string) map[string]bool { + mod, err := tfconfig.LoadModule(dir) + if err != nil { + b.t.Fatalf("error loading module in %s: %v", dir, err) + } + sensitiveOP := map[string]bool{} + for _, op := range mod.Outputs { + if op.Sensitive { + sensitiveOP[op.Name] = true + } + } + return sensitiveOP +} + +// getOutputs returns all output values. +func (b *TFBlueprintTest) getOutputs(sensitive map[string]bool) map[string]interface{} { + outputs := terraform.OutputAll(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.sensitiveLogger, NoColor: true}) + for k, v := range outputs { + _, s := sensitive[k] + if s { + b.sensitiveLogger.Logf(b.t, "output key %q: %v", k, v) + } else { + b.logger.Logf(b.t, "output key %q: %v", k, v) + } + } + return outputs +} + // GetTFOptions generates terraform.Options used by Terratest. func (b *TFBlueprintTest) GetTFOptions() *terraform.Options { newOptions := terraform.WithDefaultRetryableErrors(b.t, &terraform.Options{ diff --git a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go index b3b3f5d8c22..3414d77f74d 100644 --- a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go +++ b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go @@ -18,17 +18,53 @@ package test import ( "fmt" + "io" "os" + "strings" "testing" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" + "github.com/gruntwork-io/terratest/modules/logger" + tt "github.com/gruntwork-io/terratest/modules/testing" "github.com/stretchr/testify/assert" ) +type customLogger struct { + w io.Writer +} + +func (c *customLogger) Logf(t tt.TestingT, format string, args ...interface{}) { + _, err := fmt.Fprintf(c.w, format, args...) + if err != nil { + t.Fatal(err) + } + _, err = fmt.Fprintln(c.w) + if err != nil { + t.Fatal(err) + } +} + func TestSimpleTFModule(t *testing.T) { path, _ := os.Getwd() + + // Regular logger that also writes to stdout. + var regularLogs strings.Builder + regularWriter := io.MultiWriter(®ularLogs, os.Stdout) + fakeRegularWriter := &customLogger{ + w: regularWriter, + } + regularLogger := logger.New(fakeRegularWriter) + + // Sensitive logger to capture sensitive output. + var sensitiveLogs strings.Builder + fakeSensitiveWriter := + &customLogger{ + w: &sensitiveLogs, + } + + sensitiveLogger := logger.New(fakeSensitiveWriter) statePath := fmt.Sprintf("%s/../examples/simple_tf_module/local_backend.tfstate", path) nt := tft.NewTFBlueprintTest(t, tft.WithTFDir("../examples/simple_tf_module"), @@ -37,6 +73,8 @@ func TestSimpleTFModule(t *testing.T) { }), tft.WithSetupPath("setup"), tft.WithEnvVars(map[string]string{"network_name": fmt.Sprintf("foo-%s", utils.RandStr(5))}), + tft.WithLogger(regularLogger), + tft.WithSensitiveLogger(sensitiveLogger), ) utils.RunStage("init", func() { nt.Init(nil) }) @@ -52,4 +90,13 @@ func TestSimpleTFModule(t *testing.T) { assert.Equal("false", op.Get("logConfig.enable").String(), "logConfig should not be enabled") assert.FileExists(statePath) }) + + // sa_key is a sensitive output key from setup. + sensitiveOP := "sa_key" + if strings.Contains(regularLogs.String(), sensitiveOP) { + t.Errorf("regular logs should not contain sensitive output") + } + if !strings.Contains(sensitiveLogs.String(), sensitiveOP) { + t.Errorf("sensitive logs should contain sensitive output") + } } From 5322332bb15066cb5953c5147cb2e92cedab76e3 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 13 Dec 2023 08:22:27 -0800 Subject: [PATCH 0722/1371] chore: update renovate.json (#2034) --- infra/terraform/test-org/github/resources/renovate.json | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 64db5bd4dc8..d7fd7c3f507 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -30,13 +30,7 @@ }, {"matchDepTypes": ["module"], "groupName": "TF modules"}, { - "matchDepTypes": ["require"], - "groupName": "GO modules", - "postUpdateOptions": ["gomodTidy"] - }, - { - "matchDatasources": ["golang-version"], - "matchManagers": [ "regex" ], + "matchManagers": ["regex", "gomod"], "rangeStrategy": "bump", "postUpdateOptions": ["gomodTidy"] }, From 80f98938dd1b5c0e90697b82e1ad5f1beeaa2813 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 13 Dec 2023 08:23:57 -0800 Subject: [PATCH 0723/1371] chore: update .pre-commit-config versions (#2033) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 04f7ce6875a..e88e282ba36 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,11 +9,11 @@ exclude: | )$ repos: - repo: https://github.com/renovatebot/pre-commit-hooks - rev: 36.40.3 + rev: 37.89.7 hooks: - id: renovate-config-validator - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: check-yaml - id: end-of-file-fixer From fcd55aaf533659e56d956c6572ba9e13233c65ea Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 13 Dec 2023 09:11:16 -0800 Subject: [PATCH 0724/1371] chore: update renovate.json (#2038) --- .../test-org/github/resources/renovate.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index d7fd7c3f507..f10c05ddae9 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -30,10 +30,19 @@ }, {"matchDepTypes": ["module"], "groupName": "TF modules"}, { - "matchManagers": ["regex", "gomod"], - "rangeStrategy": "bump", + "matchDepTypes": ["require"], + "postUpdateOptions": ["gomodTidy"] + }, + { + "matchDatasources": ["golang-version"], + "rangeStrategy": "replace", + "allowedVersions": "1.21", "postUpdateOptions": ["gomodTidy"] }, + { + "matchManagers": ["regex", "gomod"], + "groupName": "GO and Dev-Tools", + }, { "matchDepNames": ["google", "google-beta"], "groupName": "Terraform Google Provider", From e76ff55afb5ee9c8c57b7b8a802acdab1ca15130 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 13 Dec 2023 13:44:30 -0800 Subject: [PATCH 0725/1371] feat: update to GO 1.21 (#2037) --- cli/go.mod | 4 ++-- cli/go.sum | 47 +++++++++++++++++++++++-------------- go.work | 2 +- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 13 ++++++++++ infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 14 +++++++++++ infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++++ 9 files changed, 68 insertions(+), 24 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 1a7e4be3e37..aebf1e6cbf0 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli -go 1.20 +go 1.21 require ( cloud.google.com/go/asset v1.15.3 @@ -15,7 +15,6 @@ require ( github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v55 v55.0.0 - github.com/google/go-github/v56 v56.0.0 github.com/hashicorp/hcl/v2 v2.19.1 github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d github.com/iancoleman/strcase v0.3.0 @@ -100,6 +99,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-github/v56 v56.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect diff --git a/cli/go.sum b/cli/go.sum index 6eb4981ec82..fd2d1547e80 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -80,17 +80,15 @@ github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= @@ -106,6 +104,7 @@ github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMU github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= +github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -134,11 +133,15 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg= +github.com/dgraph-io/badger/v3 v3.2103.5/go.mod h1:4MPiseMeDQ3FNCYwRbbcBOGJLf5jsE0PPFzRiKjtcdw= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= 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/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= @@ -150,6 +153,7 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= +github.com/evanphx/json-patch v5.6.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/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= @@ -157,16 +161,19 @@ github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4Nij github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= +github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA= github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= github.com/go-errors/errors v1.5.0/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -174,6 +181,7 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmS github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.10.0 h1:F0x3xXrAWmhwtzoCokU4IMPcBdncG+HAAqi9FcOOjbQ= github.com/go-git/go-git/v5 v5.10.0/go.mod h1:1FOZ/pQnqw24ghP2n7cunVl0ON55BsjPYvhWHvZGhoo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -190,6 +198,7 @@ github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= 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/analysis v0.21.2 h1:hXFrOYFHUAMQdu6zwAiKKJHJQ8kqZs1ux/ru1P1wLJU= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= @@ -224,6 +233,7 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= 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/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= @@ -289,6 +299,7 @@ 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/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 h1:EcQR3gusLHN46TAD+G+EbaaqJArt5vHhNpXAa12PQf4= github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -296,6 +307,7 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= 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= @@ -326,6 +338,7 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -337,6 +350,7 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= +github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= @@ -353,7 +367,6 @@ github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qK github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/gruntwork-io/terratest v0.46.6 h1:OO+BozS6nqeu0OhkLy7opkgDoYafkDr1TPlxprma26M= @@ -369,8 +382,6 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8 h1:SzE5lAYh9XXR3b1q3p3uBNqEY+syiiLZiFCIvr/JTsg= -github.com/hashicorp/terraform-config-inspect v0.0.0-20230825013512-b800820f61b8/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d h1:g6kHlvZrFPFKeWRj5q/zyJA5gu7rlJGPf17h8hX7LHY= github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -398,12 +409,10 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= 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= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -412,17 +421,20 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= +github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 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= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -446,6 +458,7 @@ github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= +github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/migueleliasweb/go-github-mock v0.0.22 h1:iUvUKmYd7sFq/wrb9TrbEdvc30NaYxLZNtz7Uv2D+AQ= github.com/migueleliasweb/go-github-mock v0.0.22/go.mod h1:UVvZ3S9IdTTRqThr1lgagVaua3Jl1bmY4E+C/Vybbn4= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= @@ -464,12 +477,13 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f h1:dJDnp6A6LBrU/hbve5NzZNV3OzPYXdD0SJUn+xAPj+I= github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= @@ -479,6 +493,7 @@ github.com/open-policy-agent/opa v0.58.0/go.mod h1:EGWBwvmyt50YURNvL8X4W5hXdlKeN github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= 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= @@ -506,11 +521,11 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= @@ -597,7 +612,6 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -629,9 +643,11 @@ go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v8 go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= 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.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= 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-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= @@ -659,8 +675,6 @@ 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-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -894,8 +908,6 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -905,6 +917,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= +gomodules.xyz/jsonpatch/v2 v2.3.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= diff --git a/go.work b/go.work index a20e495a89c..972e3ffdb6e 100644 --- a/go.work +++ b/go.work @@ -1,4 +1,4 @@ -go 1.20 +go 1.21 use ( ./cli diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index a34614ce57f..9cb7f9c2418 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -1,10 +1,11 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test -go 1.20 +go 1.21 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/gruntwork-io/terratest v0.46.8 + github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.8.4 @@ -53,7 +54,6 @@ require ( github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f // indirect github.com/hashicorp/hcl/v2 v2.18.0 // indirect - github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 // indirect github.com/hashicorp/terraform-json v0.17.1 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/jinzhu/copier v0.4.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 64d41a3afde..f87d55a6453 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -196,6 +196,7 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.45.5 h1:bxilnhv9FngUgdPNJmOIv2bk+2sP0dpqX3e4olhWcGM= github.com/aws/aws-sdk-go v1.45.5/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= @@ -260,7 +261,9 @@ github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+ github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= 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/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -327,6 +330,7 @@ github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIG github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -419,11 +423,13 @@ github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQs github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 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= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -450,10 +456,13 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= +github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM= github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= 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= @@ -463,8 +472,11 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: 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 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -802,6 +814,7 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= 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= diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 4ac60ef7750..22b1e4b217b 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swapper -go 1.20 +go 1.21 require ( github.com/go-git/go-git/v5 v5.10.1 diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 1eadd5ffa4d..4b155ced459 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -6,7 +6,9 @@ github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5 github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= @@ -16,29 +18,36 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs 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/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.10.1 h1:tu8/D8i+TWxgKpzQ3Vc43e+kkhXqtsZCKI/egajKnxk= github.com/go-git/go-git/v5 v5.10.1/go.mod h1:uEuHjxkHap8kAl//V5F/nNWwqIYtP/402ddd05mp0wg= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -46,6 +55,7 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE 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/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= 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/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -82,6 +92,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/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/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -103,6 +114,7 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -111,6 +123,7 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= @@ -121,6 +134,7 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index b1030e634d8..1acd2d6c4b2 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/utils/fbf -go 1.20 +go 1.21 require ( github.com/briandowns/spinner v1.23.0 diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index e0aed40d8c1..d8ca057a9cc 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -44,6 +44,7 @@ github.com/google/go-cmp v0.5.0/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.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -105,6 +106,7 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -137,7 +139,9 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= From 2e54fa46ee2694c55adf79d67b84dbdb5af63665 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:47:25 -0800 Subject: [PATCH 0726/1371] chore(master): release module-swapper 0.3.0 (#2039) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f76b4507a05..a1390c6ab1c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.10.3", - "infra/module-swapper": "0.2.5" + "infra/module-swapper": "0.3.0" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 2f0fb644231..85ed07c2379 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.3.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.5...infra/module-swapper/v0.3.0) (2023-12-13) + + +### Features + +* update to GO 1.21 ([#2037](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2037)) ([e76ff55](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e76ff55afb5ee9c8c57b7b8a802acdab1ca15130)) + ## [0.2.5](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.4...infra/module-swapper/v0.2.5) (2023-11-28) From 8fb731820efe05a7b12912886784864757d83e16 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:50:44 -0800 Subject: [PATCH 0727/1371] chore(master): release blueprint-test 0.11.0 (#2036) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a1390c6ab1c..ae9ba289904 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.10.3", + "infra/blueprint-test": "0.11.0", "infra/module-swapper": "0.3.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 7fd0a583a74..8dbd5b95ad5 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.11.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.10.3...infra/blueprint-test/v0.11.0) (2023-12-13) + + +### Features + +* **tft:** skip logging sensitive setup outputs ([#2035](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2035)) ([775a50c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/775a50ca6953196d62be223fd530ea1344410141)) +* update to GO 1.21 ([#2037](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2037)) ([e76ff55](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e76ff55afb5ee9c8c57b7b8a802acdab1ca15130)) + ## [0.10.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.10.2...infra/blueprint-test/v0.10.3) (2023-12-08) From 42b7e904084e5c0acf755c172ae4f5f1fdf82a2e Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 14 Dec 2023 13:19:39 -0600 Subject: [PATCH 0728/1371] chore: Update Tools to 1.18.1 (#2025) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 6a7604d165e..dd7f75b24a2 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.6.5 +TERRAFORM_VERSION := 1.6.6 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 456.0.0 +CLOUD_SDK_VERSION := 457.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.53.8 +TERRAGRUNT_VERSION := 0.54.3 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.10 +CFT_CLI_VERSION := 1.2.11 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.11 # Updated by Update Tooling Workflow @@ -43,7 +43,7 @@ TFLINT_VERSION := 0.49.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.2.5 +MODULE_SWAPPER_VERSION := 0.3.0 # For developer-tools-krm GOLANGCI_VERSION := 1.55.2 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.17.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 384f9de317f3a47f590572730c521fe5228e9cc9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 15 Dec 2023 17:12:30 +0100 Subject: [PATCH 0729/1371] chore(deps): update module github.com/go-git/go-git/v5 to v5.11.0 (#2042) --- infra/module-swapper/go.mod | 8 ++++---- infra/module-swapper/go.sum | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 22b1e4b217b..10f21046da5 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swap go 1.21 require ( - github.com/go-git/go-git/v5 v5.10.1 + github.com/go-git/go-git/v5 v5.11.0 github.com/pmezard/go-difflib v1.0.0 ) @@ -23,10 +23,10 @@ require ( github.com/sergi/go-diff v1.3.1 // indirect github.com/skeema/knownhosts v1.2.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.15.0 // indirect + golang.org/x/crypto v0.16.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.18.0 // indirect - golang.org/x/sys v0.14.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/sys v0.15.0 // indirect golang.org/x/tools v0.13.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 4b155ced459..ed0d322693a 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -29,8 +29,8 @@ github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+ github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.10.1 h1:tu8/D8i+TWxgKpzQ3Vc43e+kkhXqtsZCKI/egajKnxk= -github.com/go-git/go-git/v5 v5.10.1/go.mod h1:uEuHjxkHap8kAl//V5F/nNWwqIYtP/402ddd05mp0wg= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -63,8 +63,9 @@ github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2 github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +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/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -73,8 +74,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= @@ -86,8 +87,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -106,15 +107,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= -golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -138,7 +139,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From cdc2cdf1f0a22d209634157af9422bf36c129624 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 15 Dec 2023 17:24:36 +0100 Subject: [PATCH 0730/1371] chore(deps): update module google.golang.org/api to v0.154.0 (#2043) --- infra/utils/fbf/go.mod | 21 +++++++++++------ infra/utils/fbf/go.sum | 51 +++++++++++++++++++++++++++--------------- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 1acd2d6c4b2..bd851ea2b92 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.4.9 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.153.0 + google.golang.org/api v0.154.0 ) require ( @@ -14,6 +14,9 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.7 // indirect @@ -26,14 +29,18 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.15.0 // indirect - golang.org/x/net v0.18.0 // indirect - golang.org/x/oauth2 v0.14.0 // indirect - golang.org/x/sys v0.14.0 // indirect - golang.org/x/term v0.14.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect + go.opentelemetry.io/otel v1.21.0 // indirect + go.opentelemetry.io/otel/metric v1.21.0 // indirect + go.opentelemetry.io/otel/trace v1.21.0 // indirect + golang.org/x/crypto v0.16.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/oauth2 v0.15.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index d8ca057a9cc..baafceee262 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -18,6 +18,13 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +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/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -82,10 +89,18 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= +go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -97,11 +112,11 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= +golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -114,10 +129,10 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= -golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -129,8 +144,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= -google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= +google.golang.org/api v0.154.0 h1:X7QkVKZBskztmpPKWQXgjJRPA2dJYrL6r+sYPRLj050= +google.golang.org/api v0.154.0/go.mod h1:qhSMkM85hgqiokIYsrRyKxrjfBeIhgl4Z2JmeRkYylc= 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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -138,12 +153,12 @@ google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= +google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 2c1392b6f70de5dcc33fad1dd8ca39aaefd2be7b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 15 Dec 2023 17:25:56 +0100 Subject: [PATCH 0731/1371] chore(deps): update actions/upload-artifact action to v4 (#2044) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 66d1ccea7c5..2c824637e56 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -54,7 +54,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 + uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1bfe50e2325..3526d93fdee 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 + uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 with: name: SARIF file path: results.sarif From c777e509f9d4764adeeeeeaf951ed1182bf6f647 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 15 Dec 2023 17:28:05 +0100 Subject: [PATCH 0732/1371] chore(deps): update github/codeql-action action to v3 (#2045) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 420eff05c16..78ccf055e7e 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 + uses: github/codeql-action/init@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 + uses: github/codeql-action/autobuild@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 + uses: github/codeql-action/analyze@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3526d93fdee..2e8d3700fbd 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 + uses: github/codeql-action/upload-sarif@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 with: sarif_file: results.sarif From cc4f2cf8853cee7540337514569cb628b3eb092c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 15 Dec 2023 17:41:58 +0100 Subject: [PATCH 0733/1371] fix(deps): update go modules (#1964) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 81 ++++++++++++++++++++++++++-------------------------- cli/go.sum | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 41 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 8d4d0483c25..aeaeaa3c485 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.11 +VERSION=v1.2.12 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index aebf1e6cbf0..6c41408a8dd 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -5,18 +5,19 @@ go 1.21 require ( cloud.google.com/go/asset v1.15.3 cloud.google.com/go/storage v1.35.1 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.2 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.16.0 github.com/gammazero/workerpool v1.1.3 - github.com/go-git/go-git/v5 v5.10.0 + github.com/go-git/go-git/v5 v5.11.0 github.com/golang/protobuf v1.5.3 - github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 + github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd github.com/google/go-cmp v0.6.0 github.com/google/go-github/v55 v55.0.0 + github.com/google/go-github/v57 v57.0.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d + github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 @@ -26,31 +27,31 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.22 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.58.0 + github.com/open-policy-agent/opa v0.59.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 - github.com/spf13/viper v1.17.0 + github.com/spf13/viper v1.18.1 github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa - golang.org/x/oauth2 v0.14.0 + golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 + golang.org/x/oauth2 v0.15.0 golang.org/x/text v0.14.0 - google.golang.org/api v0.150.0 + google.golang.org/api v0.153.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.110.8 // indirect - cloud.google.com/go/accesscontextmanager v1.8.2 // indirect - cloud.google.com/go/compute v1.23.1 // indirect + cloud.google.com/go v0.110.10 // indirect + cloud.google.com/go/accesscontextmanager v1.8.4 // indirect + cloud.google.com/go/compute v1.23.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.3 // indirect - cloud.google.com/go/longrunning v0.5.2 // indirect - cloud.google.com/go/orgpolicy v1.11.2 // indirect - cloud.google.com/go/osconfig v1.12.2 // indirect + cloud.google.com/go/iam v1.1.5 // indirect + cloud.google.com/go/longrunning v0.5.4 // indirect + cloud.google.com/go/orgpolicy v1.11.4 // indirect + cloud.google.com/go/osconfig v1.12.4 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -74,14 +75,14 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect - github.com/felixge/httpsnoop v1.0.3 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gammazero/deque v0.2.0 // indirect github.com/go-errors/errors v1.5.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-ini/ini v1.67.0 // indirect - github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/logr v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.21.2 // indirect github.com/go-openapi/errors v0.20.2 // indirect @@ -106,9 +107,9 @@ require ( github.com/google/uuid v1.4.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect - github.com/gorilla/mux v1.8.0 // indirect + github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/gruntwork-io/terratest v0.46.6 // indirect + github.com/gruntwork-io/terratest v0.46.7 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -141,14 +142,14 @@ require ( github.com/prometheus/procfs v0.10.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect - github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/skeema/knownhosts v1.2.0 // indirect + github.com/skeema/knownhosts v1.2.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.10.0 // indirect - github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect @@ -165,29 +166,29 @@ require ( github.com/zclconf/go-cty v1.14.0 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect - go.opentelemetry.io/otel v1.19.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect - go.opentelemetry.io/otel/metric v1.19.0 // indirect - go.opentelemetry.io/otel/sdk v1.19.0 // indirect - go.opentelemetry.io/otel/trace v1.19.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect + go.opentelemetry.io/otel v1.21.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect + go.opentelemetry.io/otel/metric v1.21.0 // indirect + go.opentelemetry.io/otel/sdk v1.21.0 // indirect + go.opentelemetry.io/otel/trace v1.21.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.15.0 // indirect + golang.org/x/crypto v0.16.0 // indirect golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.18.0 // indirect + golang.org/x/net v0.19.0 // indirect golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.14.0 // indirect - golang.org/x/term v0.14.0 // indirect - golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.15.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/tools v0.16.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect google.golang.org/grpc v1.59.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index fd2d1547e80..f843308fe7a 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -19,8 +19,12 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go/accesscontextmanager v1.8.2 h1:jcOXen2u13aHgOHibUjxyPI+fZzVhElxy2gzJJlOOHg= cloud.google.com/go/accesscontextmanager v1.8.2/go.mod h1:E6/SCRM30elQJ2PKtFMs2YhfJpZSNcJyejhuzoId4Zk= +cloud.google.com/go/accesscontextmanager v1.8.4 h1:Yo4g2XrBETBCqyWIibN3NHNPQKUfQqti0lI+70rubeE= +cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= cloud.google.com/go/asset v1.15.3 h1:uI8Bdm81s0esVWbWrTHcjFDFKNOa9aB7rI1vud1hO84= cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -31,18 +35,28 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/iam v1.1.3 h1:18tKG7DzydKWUnLjonWcJO6wjSCAtzh4GcRKlH/Hrzc= cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= +cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/longrunning v0.5.2 h1:u+oFqfEwwU7F9dIELigxbe0XVnBAo9wqMuQLA50CZ5k= cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= +cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= cloud.google.com/go/orgpolicy v1.11.2 h1:Dnfh5sj3aIAuJzH4Q4rBp6lCJ/IdXRBbwQ0/nQsUySE= cloud.google.com/go/orgpolicy v1.11.2/go.mod h1:biRDpNwfyytYnmCRWZWxrKF22Nkz9eNVj9zyaBdpm1o= +cloud.google.com/go/orgpolicy v1.11.4 h1:RWuXQDr9GDYhjmrredQJC7aY7cbyqP9ZuLbq5GJGves= +cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= cloud.google.com/go/osconfig v1.12.2 h1:AjHbw8MgKKaTFAEJWGdOYtMED3wUXKLtvdfP8Uzbuy0= cloud.google.com/go/osconfig v1.12.2/go.mod h1:eh9GPaMZpI6mEJEuhEjUJmaxvQ3gav+fFEJon1Y8Iw0= +cloud.google.com/go/osconfig v1.12.4 h1:OrRCIYEAbrbXdhm13/JINn9pQchvTTIzgmOCA7uJw8I= +cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -62,6 +76,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.1 h1:eOqSlege+69h9JhR/ydpHCBLCfQmJuznPGdhLY/SDcU= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.1/go.mod h1:R0AXqSshPDVYHGopYGwPxguApNpFFOdaVAJ8XO2BxJ0= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.2 h1:VumKmHhd+jO9nZCUzKltGKv4U5j1hxueRzBaoch+SvY= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.2/go.mod h1:sDPahz16/LVyT5feMgYcPPx68rozeDI3LaM9/5Ok9GA= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -160,6 +176,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= @@ -184,6 +202,8 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.10.0 h1:F0x3xXrAWmhwtzoCokU4IMPcBdncG+HAAqi9FcOOjbQ= github.com/go-git/go-git/v5 v5.10.0/go.mod h1:1FOZ/pQnqw24ghP2n7cunVl0ON55BsjPYvhWHvZGhoo= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -195,6 +215,8 @@ github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/logr v1.2.2/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/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/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= @@ -302,6 +324,8 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 h1:EcQR3gusLHN46TAD+G+EbaaqJArt5vHhNpXAa12PQf4= github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd h1:PppHBegd3uPZ3Y/Iax/2mlCFJm1w4Qf/zP1MdW4ju2o= +github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= @@ -328,6 +352,7 @@ github.com/google/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLN github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA= github.com/google/go-github/v56 v56.0.0 h1:TysL7dMa/r7wsQi44BjqlwaHvwlFlqkK8CtBWCX3gb4= github.com/google/go-github/v56 v56.0.0/go.mod h1:D8cdcX98YWJvi7TLo7zM4/h8ZTx6u6fwGEkCdisopo0= +github.com/google/go-github/v57 v57.0.0/go.mod h1:s0omdnye0hvK/ecLvpsGfJMiRt85PimQh4oygmLIxHw= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -367,10 +392,14 @@ github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qK github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/gruntwork-io/terratest v0.46.6 h1:OO+BozS6nqeu0OhkLy7opkgDoYafkDr1TPlxprma26M= github.com/gruntwork-io/terratest v0.46.6/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= +github.com/gruntwork-io/terratest v0.46.7 h1:oqGPBBO87SEsvBYaA0R5xOq+Lm2Xc5dmFVfxEolfZeU= +github.com/gruntwork-io/terratest v0.46.7/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -384,6 +413,8 @@ github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5R github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d h1:g6kHlvZrFPFKeWRj5q/zyJA5gu7rlJGPf17h8hX7LHY= github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= +github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= +github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -490,6 +521,8 @@ github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcA github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= github.com/open-policy-agent/opa v0.58.0 h1:S5qvevW8JoFizU7Hp66R/Y1SOXol0aCdFYVkzIqIpUo= github.com/open-policy-agent/opa v0.58.0/go.mod h1:EGWBwvmyt50YURNvL8X4W5hXdlKeNhAHn3QXsetmYcc= +github.com/open-policy-agent/opa v0.59.0 h1:1WFU/KUhJAr3qatm0Lf8Ea5jp10ZmlE2M07oaLiHypg= +github.com/open-policy-agent/opa v0.59.0/go.mod h1:rdJSkEc4oQ+0074/3Fsgno5bkPsYxTjU5aLNmMujIvI= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -529,6 +562,8 @@ github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUz github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= @@ -541,12 +576,18 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= @@ -555,6 +596,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= +github.com/spf13/viper v1.18.1 h1:rmuU42rScKWlhhJDyXZRKJQHXFX02chSVW1IvkPGiVM= +github.com/spf13/viper v1.18.1/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -626,18 +669,32 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 h1:3d+S281UTjM+AbF31XSOYn1qXn3BgIdWl8HNEpx08Jk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -665,6 +722,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -677,6 +736,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 h1:qCEDpW1G+vcj3Y7Fy52pEM1AWm3abj8WimGYejI3SC4= +golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= 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= @@ -744,6 +805,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= 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= @@ -755,6 +818,8 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= +golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= 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= @@ -825,6 +890,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -833,6 +900,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= 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= @@ -853,6 +922,8 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -910,6 +981,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= +golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= 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= @@ -939,6 +1012,8 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= +google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= +google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= 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= @@ -986,10 +1061,16 @@ google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= 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= From bd2df128855540c3eba71b8690300d01d06c7bfc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 16:39:22 -0800 Subject: [PATCH 0734/1371] fix(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 in /infra/blueprint-test (#2049) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 8 ++++---- infra/blueprint-test/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 9cb7f9c2418..be5f930798a 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -83,13 +83,13 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/zclconf/go-cty v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.14.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect golang.org/x/sync v0.3.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/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.138.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index f87d55a6453..d2044c8d367 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -539,8 +539,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -734,13 +734,13 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/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/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= 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= @@ -752,8 +752,8 @@ 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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= 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.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= From 3f6092f1a44b83f92c0b6b8c4529f20ac1478d7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 16:44:05 -0800 Subject: [PATCH 0735/1371] fix(deps): bump golang.org/x/crypto from 0.16.0 to 0.17.0 in /infra/module-swapper (#2050) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 10f21046da5..8d1d811619e 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -23,7 +23,7 @@ require ( github.com/sergi/go-diff v1.3.1 // indirect github.com/skeema/knownhosts v1.2.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.16.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.15.0 // indirect diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index ed0d322693a..e0017848d52 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -74,8 +74,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= From 252183f0feed38838d74dfbce396a37fd58b2318 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 17:01:29 -0800 Subject: [PATCH 0736/1371] chore(deps): bump golang.org/x/crypto from 0.16.0 to 0.17.0 in /infra/utils/fbf (#2051) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index bd851ea2b92..d4c4e2bde91 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -33,7 +33,7 @@ require ( go.opentelemetry.io/otel v1.21.0 // indirect go.opentelemetry.io/otel/metric v1.21.0 // indirect go.opentelemetry.io/otel/trace v1.21.0 // indirect - golang.org/x/crypto v0.16.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/oauth2 v0.15.0 // indirect golang.org/x/sys v0.15.0 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index baafceee262..f912497d06b 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -99,8 +99,8 @@ go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8 go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= From c2173023ceed4a6bf4b1be183149a644d052d542 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:40:36 -0800 Subject: [PATCH 0737/1371] chore(master): release blueprint-test 0.11.1 (#2053) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ae9ba289904..356c421be5d 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.11.0", + "infra/blueprint-test": "0.11.1", "infra/module-swapper": "0.3.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 8dbd5b95ad5..c6f02787f81 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.11.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.11.0...infra/blueprint-test/v0.11.1) (2023-12-19) + + +### Bug Fixes + +* **deps:** bump golang.org/x/crypto from 0.14.0 to 0.17.0 in /infra/blueprint-test ([#2049](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2049)) ([bd2df12](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bd2df128855540c3eba71b8690300d01d06c7bfc)) + ## [0.11.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.10.3...infra/blueprint-test/v0.11.0) (2023-12-13) From 0a852430e158f3be23e49e0a83ab6483a12ee362 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:49:30 -0800 Subject: [PATCH 0738/1371] chore(master): release module-swapper 0.3.1 (#2047) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 356c421be5d..796e99b308b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.11.1", - "infra/module-swapper": "0.3.0" + "infra/module-swapper": "0.3.1" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 85ed07c2379..e3ff10a98e4 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.3.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.3.0...infra/module-swapper/v0.3.1) (2023-12-19) + + +### Bug Fixes + +* **deps:** bump golang.org/x/crypto from 0.16.0 to 0.17.0 in /infra/module-swapper ([#2050](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2050)) ([3f6092f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3f6092f1a44b83f92c0b6b8c4529f20ac1478d7d)) +* **deps:** update module github.com/go-git/go-git/v5 to v5.11.0 ([#2042](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2042)) ([384f9de](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/384f9de317f3a47f590572730c521fe5228e9cc9)) + ## [0.3.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.2.5...infra/module-swapper/v0.3.0) (2023-12-13) From edd9ca58c26b3c6f64f24c27d6d1aac692a04fe4 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 19 Dec 2023 20:38:45 -0600 Subject: [PATCH 0739/1371] chore: add mod swapper to lint workflow (#2054) --- infra/terraform/modules/workflow_files/lint.yaml.tftpl | 5 +++++ infra/terraform/test-org/org/locals.tf | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/infra/terraform/modules/workflow_files/lint.yaml.tftpl b/infra/terraform/modules/workflow_files/lint.yaml.tftpl index c388e1ffa22..693b999ccb8 100644 --- a/infra/terraform/modules/workflow_files/lint.yaml.tftpl +++ b/infra/terraform/modules/workflow_files/lint.yaml.tftpl @@ -43,6 +43,11 @@ jobs: REGISTRY=$(grep "REGISTRY_URL := " $MAKEFILE | cut -d\ -f3) echo dev-tools=$${REGISTRY}/$${IMAGE}:$${VERSION} >> "$GITHUB_OUTPUT" fi + - run: docker run --rm %{if lint_env != null }%{ for key, value in lint_env ~}-e ${key} %{ endfor ~}%{ endif }-v $${{ github.workspace }}:/workspace $${{ steps.variables.outputs.dev-tools }} module-swapper%{if lint_env != null } + env: +%{ for key, value in lint_env ~} + ${key}: ${value} +%{ endfor ~}%{ endif } - run: docker run --rm %{if lint_env != null }%{ for key, value in lint_env ~}-e ${key} %{ endfor ~}%{ endif }-v $${{ github.workspace }}:/workspace $${{ steps.variables.outputs.dev-tools }} /usr/local/bin/test_lint.sh%{if lint_env != null } env: %{ for key, value in lint_env ~} diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 4f29607baa5..84051ae2cab 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -804,8 +804,16 @@ locals { { name = "terraform-google-tags" org = "GoogleCloudPlatform" - description = "Terraform module for creating Google Cloud Tags." + description = "Create and manage Google Cloud Tags." owners = ["nidhi0710"] + topics = join(",", [local.common_topics.security, local.common_topics.ops]) + }, + { + name = "terraform-google-dataplex-auto-data-quality" + org = "GoogleCloudPlatform" + description = "Move data between environments using Dataplex." + owners = ["bradmiro"] + topics = local.common_topics.da } ] } From c40933ec9fb2d4fdc66b41019f91534950920df3 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 21 Dec 2023 00:23:30 -0600 Subject: [PATCH 0740/1371] chore: Update Tools to 1.18.2 (#2040) --- infra/build/Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index dd7f75b24a2..404455c2bb2 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.6.6 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 457.0.0 +CLOUD_SDK_VERSION := 458.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,25 +25,25 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.54.3 +TERRAGRUNT_VERSION := 0.54.9 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.48 +KPT_VERSION := 1.0.0-beta.49 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.11 +CFT_CLI_VERSION := 1.2.12 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.26.11 +KUBECTL_VERSION := 1.26.12 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.49.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.3.0 +MODULE_SWAPPER_VERSION := 0.3.1 # For developer-tools-krm GOLANGCI_VERSION := 1.55.2 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.17.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 5bd11621a5e7d1c81418bdbd427efe15db16b19b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 21 Dec 2023 19:05:07 +0100 Subject: [PATCH 0741/1371] chore(deps): update google-github-actions/setup-gcloud action to v2.0.1 (#2057) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index e3f1b0a9b11..4f7a34e2da4 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -28,7 +28,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@825196879a077b7efa50db2e88409f44de4635c2 # v2.0.0 + - uses: google-github-actions/setup-gcloud@5a5f7b85fca43e76e53463acaa9d408a03c98d3a # v2.0.1 with: version: "410.0.0" project_id: ${{ env.PROJECT_ID }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 2c824637e56..f7f2b92ee65 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -33,7 +33,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@825196879a077b7efa50db2e88409f44de4635c2 # v2.0.0 + - uses: google-github-actions/setup-gcloud@5a5f7b85fca43e76e53463acaa9d408a03c98d3a # v2.0.1 with: version: "410.0.0" From e691715314f3f3d5a2cf10103f81f9ac7a80a3f1 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 26 Dec 2023 13:29:41 -0600 Subject: [PATCH 0742/1371] feat: module swapper hcl source targeting (#2056) --- infra/module-swapper/cmd/swap.go | 295 ++++++++++++++---- infra/module-swapper/cmd/swap_test.go | 106 ++++--- .../examples/example-one/main.tf | 40 +-- .../{main.tf.good => main.tf.local} | 42 +-- .../{main.tf.good => main.tf.local} | 4 +- .../{main.tf.good => main.tf.local} | 6 +- infra/module-swapper/go.mod | 2 + infra/module-swapper/go.sum | 2 + infra/module-swapper/main.go | 3 +- 9 files changed, 354 insertions(+), 146 deletions(-) rename infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/{main.tf.good => main.tf.local} (57%) rename infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/{main.tf.good => main.tf.local} (72%) rename infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/{main.tf.good => main.tf.local} (74%) diff --git a/infra/module-swapper/cmd/swap.go b/infra/module-swapper/cmd/swap.go index 5a490194f52..77deb9791dd 100644 --- a/infra/module-swapper/cmd/swap.go +++ b/infra/module-swapper/cmd/swap.go @@ -8,7 +8,14 @@ import ( "strings" "github.com/go-git/go-git/v5" + "github.com/hashicorp/hcl/v2" + "github.com/hashicorp/hcl/v2/gohcl" + "github.com/hashicorp/hcl/v2/hclparse" + "github.com/hashicorp/hcl/v2/hclwrite" "github.com/pmezard/go-difflib/difflib" + "github.com/zclconf/go-cty/cty" + + giturl "github.com/chainguard-dev/git-urls" ) type LocalTerraformModule struct { @@ -17,11 +24,16 @@ type LocalTerraformModule struct { ModuleFQN string } -var ( +const ( + moduleBlockType = "module" + sourceAttrib = "source" terraformExtension = "*.tf" restoreMarker = "[restore-marker]" linebreak = "\n" - localModules = []LocalTerraformModule{} +) + +var ( + localModules = []LocalTerraformModule{} ) // getRemoteURL gets the URL of a given remote from git repo at dir @@ -54,28 +66,30 @@ func getModuleNameRegistry(dir string) (string, string, error) { if err != nil { return "", "", err } - - // GH remote will be of form https://github.com/ModuleRegistry/ModuleName - if !strings.Contains(remote, "https://github.com/") { - return "", "", fmt.Errorf("Expected GitHub remote of form https://github.com/ModuleRegistry/ModuleRepo. Got: %s", remote) + u, err := giturl.Parse(remote) + if err != nil { + return "", "", err + } + if u.Host != "github.com" { + return "", "", fmt.Errorf("expected GitHub remote, got: %s", remote) } + orgRepo := u.Path + orgRepo = trimAnySuffixes(orgRepo, []string{"/", ".git"}) + orgRepo = strings.TrimPrefix(orgRepo, "/") - // remotes maybe suffixed with a trailing / or .git - remote = trimAnySuffixes(remote, []string{"/", ".git"}) - namePrefix := strings.ReplaceAll(remote, "https://github.com/", "") - if !strings.Contains(namePrefix, "/") { - return "", "", fmt.Errorf("Expected GitHub org/owner of form ModuleRegistry/ModuleRepo. Got: %s", namePrefix) + split := strings.Split(orgRepo, "/") + if len(split) != 2 { + return "", "", fmt.Errorf("expected GitHub remote of form https://github.com/ModuleRegistry/ModuleRepo, got: %s", remote) } - moduleRegistry := namePrefix[:strings.LastIndex(namePrefix, "/")] - repoName := namePrefix[strings.LastIndex(namePrefix, "/")+1:] + org, repoName := split[0], split[1] // module repos are prefixed with terraform-google- if !strings.HasPrefix(repoName, "terraform-google-") { - return "", "", fmt.Errorf("Expected to find repo name prefixed with terraform-google-. Got: %s", repoName) + return "", "", fmt.Errorf("expected to find repo name prefixed with terraform-google-. Got: %s", repoName) } moduleName := strings.ReplaceAll(repoName, "terraform-google-", "") log.Printf("Module name set from remote to %s", moduleName) - return moduleName, moduleRegistry, nil + return moduleName, org, nil } // findSubModules generates slice of LocalTerraformModule for submodules @@ -109,7 +123,7 @@ func restoreModules(f []byte, p string) ([]byte, error) { } strFile := string(f) if !strings.Contains(strFile, restoreMarker) { - return nil, nil + return f, nil } lines := strings.Split(strFile, linebreak) for i, line := range lines { @@ -120,59 +134,136 @@ func restoreModules(f []byte, p string) ([]byte, error) { return []byte(strings.Join(lines, linebreak)), nil } -// replaceLocalModules swaps current local module registry references with local path -func replaceLocalModules(f []byte, p string) ([]byte, error) { +// matchedModule returns matching local TF module based on local path. +func matchedModule(localPath string) *LocalTerraformModule { + for _, l := range localModules { + if localPath == l.Dir { + return &l + } + } + return nil +} + +// localToRemote converts all local references in f to remote references. +func localToRemote(f []byte, p string) ([]byte, error) { if _, err := os.Stat(p); err != nil { return nil, err } absPath, err := filepath.Abs(filepath.Dir(p)) if err != nil { - return nil, fmt.Errorf("Error finding example absolute path: %v", err) + return nil, fmt.Errorf("failed to get absolute path: %v", err) } - strFile := string(f) - lines := strings.Split(strFile, linebreak) - for _, localModule := range localModules { - // check if current file has module/submodules references that should be swapped - if !strings.Contains(strFile, localModule.ModuleFQN) { + f, err = restoreModules(f, p) + if err != nil { + return nil, err + } + + currentReferences, err := moduleSourceRefs(f, p) + if err != nil { + return nil, fmt.Errorf("failed to write find module sources: %v", err) + } + newReferences := map[string]string{} + for label, source := range currentReferences { + localModule := matchedModule(filepath.Clean(filepath.Join(absPath, source))) + if localModule == nil { + log.Printf("no matches for %s", source) + continue + } + newReferences[label] = localModule.ModuleFQN + } + if len(currentReferences) == 0 { + return f, nil + } + updated, err := writeModuleRefs(f, p, newReferences) + if err != nil { + return nil, fmt.Errorf("failed to write updated module sources: %v", err) + } + // print diff info + log.Printf("Modifications made to file %s", p) + diff := difflib.UnifiedDiff{ + A: difflib.SplitLines(string(f)), + B: difflib.SplitLines(string(updated)), + FromFile: "Original", + ToFile: "Modified", + Context: 3, + } + diffInfo, _ := difflib.GetUnifiedDiffString(diff) + log.Println(diffInfo) + return updated, nil +} + +// remoteToLocal converts all remote references in f to local references. +func remoteToLocal(f []byte, p string) ([]byte, error) { + if _, err := os.Stat(p); err != nil { + return nil, err + } + f = commentVersions(f) + absPath, err := filepath.Abs(filepath.Dir(p)) + if err != nil { + return nil, fmt.Errorf("failed to get absolute path: %v", err) + } + fqnMap := make(map[string]LocalTerraformModule, len(localModules)) + for _, l := range localModules { + fqnMap[l.ModuleFQN] = l + } + currentReferences, err := moduleSourceRefs(f, p) + if err != nil { + return nil, fmt.Errorf("failed to write find module sources: %v", err) + } + newReferences := map[string]string{} + for label, source := range currentReferences { + localModule, exists := fqnMap[source] + if !exists { continue } - // get relative path from example to local module newModulePath, err := filepath.Rel(absPath, localModule.Dir) if err != nil { - return nil, fmt.Errorf("Error finding relative path: %v", err) - } - for i, line := range lines { - if strings.Contains(line, fmt.Sprintf("\"%s\"", localModule.ModuleFQN)) && !strings.Contains(line, restoreMarker) { - // swap with local module and add restore point - leadingWhiteSpace := line[:strings.Index(line, "source")] - newSource := fmt.Sprintf("source = \"%s\"", newModulePath) - lines[i] = leadingWhiteSpace + newSource + fmt.Sprintf(" # %s %s", restoreMarker, line) - // if next line is a version declaration, disable that as well - if i < len(lines)-1 && strings.Contains(lines[i+1], "version") { - leadingWhiteSpace = lines[i+1][:strings.Index(lines[i+1], "version")] - lines[i+1] = fmt.Sprintf("%s# %s %s", leadingWhiteSpace, restoreMarker, lines[i+1]) - } - } + return nil, fmt.Errorf("failed to find relative path: %v", err) } + newReferences[label] = newModulePath } - newExample := strings.Join(lines, linebreak) - // check if any swaps have been made - if newExample == strFile { - return nil, nil + if len(currentReferences) == 0 { + return f, nil + } + updated, err := writeModuleRefs(f, p, newReferences) + if err != nil { + return nil, fmt.Errorf("failed to write updated module sources: %v", err) } // print diff info log.Printf("Modifications made to file %s", p) diff := difflib.UnifiedDiff{ - A: difflib.SplitLines(strFile), - B: difflib.SplitLines(newExample), + A: difflib.SplitLines(string(f)), + B: difflib.SplitLines(string(updated)), FromFile: "Original", ToFile: "Modified", Context: 3, } diffInfo, _ := difflib.GetUnifiedDiffString(diff) log.Println(diffInfo) - return []byte(newExample), nil + return updated, nil +} +// commentVersions comments version attributes for local modules. +func commentVersions(f []byte) []byte { + strFile := string(f) + lines := strings.Split(strFile, linebreak) + for _, localModule := range localModules { + // check if current file has module/submodules references that should be swapped + if !strings.Contains(strFile, localModule.ModuleFQN) { + continue + } + for i, line := range lines { + if !strings.Contains(line, localModule.ModuleFQN) { + continue + } + if i < len(lines)-1 && strings.Contains(lines[i+1], "version") && !strings.Contains(lines[i+1], restoreMarker) { + leadingWhiteSpace := lines[i+1][:strings.Index(lines[i+1], "version")] + lines[i+1] = fmt.Sprintf("%s# %s %s", leadingWhiteSpace, restoreMarker, lines[i+1]) + } + } + } + newExample := strings.Join(lines, linebreak) + return []byte(newExample) } // getTFFiles returns a slice of valid TF file paths @@ -199,14 +290,112 @@ func getTFFiles(path string) []string { } -func SwapModules(rootPath, moduleRegistrySuffix, subModulesDir, examplesDir string, restore bool) { - moduleName, moduleRegistryPrefix, err := getModuleNameRegistry(rootPath) +var ( + // Partial schema of examples. + exampleSchema = &hcl.BodySchema{ + Blocks: []hcl.BlockHeaderSchema{ + { + Type: moduleBlockType, + LabelNames: []string{"name"}, + }, + }, + } + // Partial schema of each module. + moduleSchema = &hcl.BodySchema{ + Attributes: []hcl.AttributeSchema{ + { + Name: sourceAttrib, + }, + }, + } +) + +// moduleSourceRefs returns a map of module label to corresponding source references. +func moduleSourceRefs(f []byte, TFFilePath string) (map[string]string, error) { + refs := map[string]string{} + p, err := hclparse.NewParser().ParseHCL(f, TFFilePath) if err != nil { - log.Fatal(err) + return nil, fmt.Errorf("failed to parse hcl: %v", err) + } + c, _, diags := p.Body.PartialContent(exampleSchema) + if diags.HasErrors() { + return nil, fmt.Errorf("failed to parse example content: %v", diags.Error()) + } + + for _, b := range c.Blocks { + if b.Type != moduleBlockType { + continue + } + if len(b.Labels) != 1 { + log.Printf("got multiple labels %v, module should only have one", b.Labels) + continue + } + + content, _, diags := b.Body.PartialContent(moduleSchema) + if diags.HasErrors() { + log.Printf("skipping %s module, failed to parse module content: %v", b.Labels[0], diags.Error()) + continue + } + + sourcrAttr, exists := content.Attributes[sourceAttrib] + if !exists { + log.Printf("skipping %s module, no source attribute", b.Labels[0]) + continue + } + var sourceName string + diags = gohcl.DecodeExpression(sourcrAttr.Expr, nil, &sourceName) + if diags.HasErrors() { + log.Printf("skipping %s module, failed to decode source value: %v", b.Labels[0], diags.Error()) + continue + } + refs[b.Labels[0]] = sourceName + } + return refs, nil +} + +// writeModuleRefs appends or overwrites provided moduleRefs to file f. +func writeModuleRefs(f []byte, p string, moduleRefs map[string]string) ([]byte, error) { + wf, diags := hclwrite.ParseConfig(f, p, hcl.Pos{}) + if diags.HasErrors() { + return nil, fmt.Errorf("failed to parse hcl: %v", diags.Error()) + } + for _, b := range wf.Body().Blocks() { + if b.Type() != moduleBlockType { + continue + } + if len(b.Labels()) != 1 { + log.Printf("got multiple labels %v, module should only have one", b.Labels()) + continue + } + newSource, exists := moduleRefs[b.Labels()[0]] + if !exists { + continue + } + b.Body().SetAttributeValue(sourceAttrib, cty.StringVal(newSource)) + } + + var testS strings.Builder + _, err := wf.WriteTo(&testS) + if err != nil { + return nil, fmt.Errorf("failed to write hcl: %v", diags.Error()) + } + return []byte(testS.String()), nil +} + +func SwapModules(rootPath, moduleRegistrySuffix, moduleRegistryPrefix, subModulesDir, examplesDir string, restore bool) { + rootPath = filepath.Clean(rootPath) + moduleName, foundRegistryPrefix, err := getModuleNameRegistry(rootPath) + if err != nil && moduleRegistryPrefix == "" { + log.Printf("failed to get module name and registry: %v", err) + return + } + + if moduleRegistryPrefix != "" { + foundRegistryPrefix = moduleRegistryPrefix } // add root module to slice of localModules - localModules = append(localModules, LocalTerraformModule{moduleName, rootPath, fmt.Sprintf("%s/%s/%s", moduleRegistryPrefix, moduleName, moduleRegistrySuffix)}) + localModules = append(localModules, LocalTerraformModule{moduleName, rootPath, fmt.Sprintf("%s/%s/%s", foundRegistryPrefix, moduleName, moduleRegistrySuffix)}) examplesPath := fmt.Sprintf("%s/%s", rootPath, examplesDir) subModulesPath := fmt.Sprintf("%s/%s", rootPath, subModulesDir) @@ -224,9 +413,9 @@ func SwapModules(rootPath, moduleRegistrySuffix, subModulesDir, examplesDir stri var newFile []byte if restore { - newFile, err = restoreModules(file, TFFilePath) + newFile, err = localToRemote(file, TFFilePath) } else { - newFile, err = replaceLocalModules(file, TFFilePath) + newFile, err = remoteToLocal(file, TFFilePath) } if err != nil { log.Printf("Error processing file: %v", err) @@ -238,7 +427,5 @@ func SwapModules(rootPath, moduleRegistrySuffix, subModulesDir, examplesDir stri log.Printf("Error writing file: %v", err) } } - } - } diff --git a/infra/module-swapper/cmd/swap_test.go b/infra/module-swapper/cmd/swap_test.go index f50683aa863..e4f25243006 100644 --- a/infra/module-swapper/cmd/swap_test.go +++ b/infra/module-swapper/cmd/swap_test.go @@ -2,9 +2,9 @@ package cmd import ( "bytes" - "fmt" "log" "os" + "path" "path/filepath" "reflect" "strings" @@ -12,6 +12,7 @@ import ( "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/config" + "github.com/google/go-cmp/cmp" ) var ( @@ -27,10 +28,10 @@ func getAbsPathHelper(p string) string { return a } -func getFileHelper(p string) []byte { +func getFileHelper(t *testing.T, p string) []byte { f, err := os.ReadFile(p) if err != nil { - log.Fatalf("Error reading file: %v", err) + t.Fatalf("Error reading file: %v", err) } return f } @@ -91,64 +92,77 @@ func Test_findSubModules(t *testing.T) { } } -func getProcessFileTestArgs(p, m string) struct { - f []byte - p string - modules []LocalTerraformModule -} { - f := struct { - f []byte - p string - modules []LocalTerraformModule - }{ - getFileHelper(p), - p, - append( - findSubModules("testdata/"+m+"/modules", "terraform-google-modules/"+m+"/google"), - LocalTerraformModule{m, getAbsPathHelper("testdata/" + m), fmt.Sprintf("%s/%s/%s", moduleRegistryPrefix, m, moduleRegistrySuffix)}, - ), - } - return f -} - func Test_processFile(t *testing.T) { - type args struct { - f []byte - p string - modules []LocalTerraformModule - } tests := []struct { - name string - args args - want []byte - wantErr bool + name string + modules []LocalTerraformModule + exampleRemotePath string + exampleLocalPath string }{ - {"simple", getProcessFileTestArgs("testdata/example-module-simple/examples/example-one/main.tf", "example-module-simple"), getFileHelper("testdata/example-module-simple/examples/example-one/main.tf.good"), false}, - {"simple-submodules-single-submod", getProcessFileTestArgs("testdata/example-module-with-submodules/examples/example-one/main.tf", "example-module-with-submodules"), getFileHelper("testdata/example-module-with-submodules/examples/example-one/main.tf.good"), false}, - {"simple-submodules-multiple-modules", getProcessFileTestArgs("testdata/example-module-with-submodules/examples/example-two/main.tf", "example-module-with-submodules"), getFileHelper("testdata/example-module-with-submodules/examples/example-two/main.tf.good"), false}, + { + name: "simple", + modules: testModules("example-module-simple"), + exampleRemotePath: "example-module-simple/examples/example-one/main.tf", + exampleLocalPath: "example-module-simple/examples/example-one/main.tf.local", + }, + { + name: "simple-submodules-single-submod", + modules: testModules("example-module-with-submodules"), + exampleRemotePath: "example-module-with-submodules/examples/example-one/main.tf", + exampleLocalPath: "example-module-with-submodules/examples/example-one/main.tf.local", + }, + { + name: "simple-submodules-multiple-modules", + modules: testModules("example-module-with-submodules"), + exampleRemotePath: "example-module-with-submodules/examples/example-two/main.tf", + exampleLocalPath: "example-module-with-submodules/examples/example-two/main.tf.local", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - setupProcessFileTest(tt.args.modules) + setupProcessFileTest(tt.modules) var buf bytes.Buffer log.SetOutput(&buf) defer func() { log.SetOutput(os.Stderr) }() - got, err := replaceLocalModules(tt.args.f, tt.args.p) + tt.exampleRemotePath = path.Join(testDataDir, tt.exampleRemotePath) + tt.exampleLocalPath = path.Join(testDataDir, tt.exampleLocalPath) + remoteExample := getFileHelper(t, tt.exampleRemotePath) + localExample := getFileHelper(t, tt.exampleLocalPath) + + // Swap remote references to local. + got, err := remoteToLocal(remoteExample, tt.exampleRemotePath) + if err != nil { + t.Fatalf("remoteToLocal() error = %v", err) + return + } + if diff := cmp.Diff(localExample, got); diff != "" { + t.Errorf("remoteToLocal() returned unexpected difference (-want +got):\n%s", diff) + } + + // Swap local references to remote. + got, err = localToRemote(localExample, tt.exampleLocalPath) t.Log(buf.String()) - if (err != nil) != tt.wantErr { - t.Errorf("processFile() error = %v, wantErr %v", err, tt.wantErr) + if err != nil { + t.Errorf("localToRemote() error = %v", err) return } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("processFile() = %v, want %v", string(got), string(tt.want)) + if diff := cmp.Diff(remoteExample, got); diff != "" { + t.Errorf("localToRemote() returned unexpected difference (-want +got):\n%s", diff) } tearDownProcessFileTest() }) } } +const testDataDir = "testdata" + +func testModules(m string) []LocalTerraformModule { + root := LocalTerraformModule{m, getAbsPathHelper(path.Join(testDataDir, m)), path.Join(moduleRegistryPrefix, m, moduleRegistrySuffix)} + return append(findSubModules(path.Join(testDataDir, m, "modules"), path.Join(moduleRegistryPrefix, m, moduleRegistrySuffix)), root) +} + func getTempDir() string { d, err := os.MkdirTemp("", "gitrmtest") if err != nil { @@ -185,14 +199,16 @@ func Test_getModuleNameRegistry(t *testing.T) { wantErr bool wantErrStr string }{ - {"simple", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar", "origin")}, "bar", "foo", false, ""}, + {"simple-https", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar", "origin")}, "bar", "foo", false, ""}, + {"simple-git", args{tempGitRepoWithRemote("git@github.com:foo/terraform-google-bar.git", "origin")}, "bar", "foo", false, ""}, {"simple-with-trailing-slash", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar/", "origin")}, "bar", "foo", false, ""}, {"simple-with-trailing-git", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar.git", "origin")}, "bar", "foo", false, ""}, {"err-no-remote-origin", args{tempGitRepoWithRemote("https://github.com/foo/terraform-google-bar", "foo")}, "", "", true, ""}, {"err-not-git-repo", args{getTempDir()}, "", "", true, ""}, - {"err-not-github-repo", args{tempGitRepoWithRemote("https://gitlab.com/foo/terraform-google-bar", "origin")}, "", "", true, "Expected GitHub remote of form https://github.com/ModuleRegistry/ModuleRepo"}, - {"err-not-prefixed-repo", args{tempGitRepoWithRemote("https://github.com/foo/bar", "origin")}, "", "", true, "Expected to find repo name prefixed with terraform-google-"}, - {"err-malformed-remote", args{tempGitRepoWithRemote("https://github.com/footerraform-google-bar", "origin")}, "", "", true, "Expected GitHub org/owner of form ModuleRegistry/ModuleRepo"}, + {"err-not-github-repo-https", args{tempGitRepoWithRemote("https://gitlab.com/foo/terraform-google-bar", "origin")}, "", "", true, "expected GitHub remote, got: https://gitlab.com/foo/terraform-google-bar"}, + {"err-not-github-repo-ssh", args{tempGitRepoWithRemote("git@gitlab.com:foo/terraform-google-bar.git", "origin")}, "", "", true, "expected GitHub remote, got: git@gitlab.com:foo/terraform-google-bar.git"}, + {"err-not-prefixed-repo", args{tempGitRepoWithRemote("https://github.com/foo/bar", "origin")}, "", "", true, "expected to find repo name prefixed with terraform-google-"}, + {"err-malformed-remote", args{tempGitRepoWithRemote("https://github.com/footerraform-google-bar", "origin")}, "", "", true, "expected GitHub remote of form https://github.com/ModuleRegistry/ModuleRepo"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf b/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf index 6ef2331ce7b..832453111fe 100644 --- a/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf +++ b/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf @@ -41,25 +41,25 @@ module "cloud_router" { # Unrelated module module "vpc" { - source = "terraform-google-modules/network/google" - version = "~> 2.0.0" - network_name = "example-vpc" + source = "terraform-google-modules/network/google" + version = "~> 2.0.0" + network_name = "example-vpc" - routes = [ - { - name = "egress-internet" - description = "route through IGW to access internet" - destination_range = "0.0.0.0/0" - tags = "egress-inet" - next_hop_internet = "true" - }, - { - name = "app-proxy" - description = "route through proxy to reach app" - destination_range = "10.50.10.0/24" - tags = "app-proxy" - next_hop_instance = "app-proxy-instance" - next_hop_instance_zone = "us-west1-a" - }, - ] + routes = [ + { + name = "egress-internet" + description = "route through IGW to access internet" + destination_range = "0.0.0.0/0" + tags = "egress-inet" + next_hop_internet = "true" + }, + { + name = "app-proxy" + description = "route through proxy to reach app" + destination_range = "10.50.10.0/24" + tags = "app-proxy" + next_hop_instance = "app-proxy-instance" + next_hop_instance_zone = "us-west1-a" + }, + ] } diff --git a/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good b/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.local similarity index 57% rename from infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good rename to infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.local index 88a72c1c5a8..54292f342b1 100644 --- a/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.good +++ b/infra/module-swapper/cmd/testdata/example-module-simple/examples/example-one/main.tf.local @@ -20,7 +20,7 @@ provider "google" { # [START cloudrouter_create] module "cloud_router" { - source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-simple/google" + source = "../.." # [restore-marker] version = "~> 0.4" name = "my-router" @@ -41,25 +41,25 @@ module "cloud_router" { # Unrelated module module "vpc" { - source = "terraform-google-modules/network/google" - version = "~> 2.0.0" - network_name = "example-vpc" + source = "terraform-google-modules/network/google" + version = "~> 2.0.0" + network_name = "example-vpc" - routes = [ - { - name = "egress-internet" - description = "route through IGW to access internet" - destination_range = "0.0.0.0/0" - tags = "egress-inet" - next_hop_internet = "true" - }, - { - name = "app-proxy" - description = "route through proxy to reach app" - destination_range = "10.50.10.0/24" - tags = "app-proxy" - next_hop_instance = "app-proxy-instance" - next_hop_instance_zone = "us-west1-a" - }, - ] + routes = [ + { + name = "egress-internet" + description = "route through IGW to access internet" + destination_range = "0.0.0.0/0" + tags = "egress-inet" + next_hop_internet = "true" + }, + { + name = "app-proxy" + description = "route through proxy to reach app" + destination_range = "10.50.10.0/24" + tags = "app-proxy" + next_hop_instance = "app-proxy-instance" + next_hop_instance_zone = "us-west1-a" + }, + ] } diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.local similarity index 72% rename from infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good rename to infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.local index 80b6b812634..c47dbc91b80 100644 --- a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.good +++ b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-one/main.tf.local @@ -1,5 +1,5 @@ module "test-module" { - source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google" + source = "../.." # [restore-marker] version = "~> 3.2.0" project_id = var.project_id # Replace this with your project ID in quotes @@ -8,7 +8,7 @@ module "test-module" { } module "test-submodule-module" { - source = "../../modules/bar-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" + source = "../../modules/bar-module" # [restore-marker] version = "~> 3.2.0" project_id = var.project_id # Replace this with your project ID in quotes diff --git a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.local similarity index 74% rename from infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good rename to infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.local index baf29e494af..c94df85f271 100644 --- a/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.good +++ b/infra/module-swapper/cmd/testdata/example-module-with-submodules/examples/example-two/main.tf.local @@ -9,7 +9,7 @@ module "test-unrelated-submodule" { } module "test-module" { - source = "../.." # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google" + source = "../.." # [restore-marker] version = "~> 3.2.0" project_id = var.project_id # Replace this with your project ID in quotes @@ -18,7 +18,7 @@ module "test-module" { } module "test-submodule-1" { - source = "../../modules/bar-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/bar-module" + source = "../../modules/bar-module" # [restore-marker] version = "~> 3.2.0" project_id = var.project_id # Replace this with your project ID in quotes @@ -27,7 +27,7 @@ module "test-submodule-1" { } module "test-submodule-2" { - source = "../../modules/foo-module" # [restore-marker] source = "terraform-google-modules/example-module-with-submodules/google//modules/foo-module" + source = "../../modules/foo-module" # [restore-marker] version = "~> 3.2.0" project_id = var.project_id # Replace this with your project ID in quotes diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 8d1d811619e..19d052de16b 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -11,12 +11,14 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/chainguard-dev/git-urls v1.0.2 // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index e0017848d52..ad486d7b876 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -10,6 +10,8 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuW github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/chainguard-dev/git-urls v1.0.2 h1:pSpT7ifrpc5X55n4aTTm7FFUE+ZQHKiqpiwNkJrVcKQ= +github.com/chainguard-dev/git-urls v1.0.2/go.mod h1:rbGgj10OS7UgZlbzdUQIQpT0k/D4+An04HJY7Ol+Y/o= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= diff --git a/infra/module-swapper/main.go b/infra/module-swapper/main.go index 791479732e8..d072d3c202a 100644 --- a/infra/module-swapper/main.go +++ b/infra/module-swapper/main.go @@ -13,6 +13,7 @@ func main() { subModulesDir := flag.String("submods-path", "modules", "Path to a submodules if any that maybe referenced. Defaults to working dir/modules") examplesDir := flag.String("examples-path", "examples", "Path to examples that should be swapped. Defaults to cwd/examples") moduleRegistrySuffix := flag.String("registry-suffix", "google", "Module registry suffix") + moduleRegistryPrefix := flag.String("registry-prefix", "", "Module registry prefix") restore := flag.Bool("restore", false, "Restores disabled modules") flag.Parse() rootPath := *workDir @@ -24,5 +25,5 @@ func main() { } rootPath = cwd } - cmd.SwapModules(rootPath, *moduleRegistrySuffix, *subModulesDir, *examplesDir, *restore) + cmd.SwapModules(rootPath, *moduleRegistrySuffix, *moduleRegistryPrefix, *subModulesDir, *examplesDir, *restore) } From 5da1b464ad64c64aadbdd39ad7f4ad7952622972 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 26 Dec 2023 23:36:58 +0100 Subject: [PATCH 0743/1371] fix(deps): update go modules (#2046) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 35 ++- cli/go.sum | 477 ++++------------------------------- 7 files changed, 65 insertions(+), 457 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index aeaeaa3c485..f63da4902ea 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.12 +VERSION=v1.2.13 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index 9b95a5551a2..77e0f3daecc 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v55/github" + "github.com/google/go-github/v57/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index c26d59f9d47..6effbce7e28 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v55/github" + "github.com/google/go-github/v57/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index 5b828648605..cd1e5f6e8b4 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v55/github" + "github.com/google/go-github/v57/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index e5dd5d62f1a..db3d8628ce2 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v55/github" + "github.com/google/go-github/v57/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index 6c41408a8dd..1dbaef15f3a 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,18 +3,17 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.21 require ( - cloud.google.com/go/asset v1.15.3 - cloud.google.com/go/storage v1.35.1 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.2 + cloud.google.com/go/asset v1.16.0 + cloud.google.com/go/storage v1.36.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.11.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.16.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.11.0 github.com/golang/protobuf v1.5.3 - github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd + github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v55 v55.0.0 github.com/google/go-github/v57 v57.0.0 github.com/hashicorp/hcl/v2 v2.19.1 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 @@ -31,13 +30,13 @@ require ( github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 - github.com/spf13/viper v1.18.1 + github.com/spf13/viper v1.18.2 github.com/stretchr/testify v1.8.4 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 + golang.org/x/exp v0.0.0-20231226003508-02704c960a9b golang.org/x/oauth2 v0.15.0 golang.org/x/text v0.14.0 - google.golang.org/api v0.153.0 + google.golang.org/api v0.154.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -56,7 +55,6 @@ require ( github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect - github.com/acomagu/bufpipe v1.0.4 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect @@ -109,7 +107,7 @@ require ( github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/gruntwork-io/terratest v0.46.7 // indirect + github.com/gruntwork-io/terratest v0.46.8 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -166,6 +164,7 @@ require ( github.com/zclconf/go-cty v1.14.0 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect go.opentelemetry.io/otel v1.21.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect @@ -176,7 +175,7 @@ require ( go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.16.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sync v0.5.0 // indirect @@ -186,19 +185,19 @@ require ( golang.org/x/tools v0.16.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect + google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect google.golang.org/grpc v1.59.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/api v0.28.1 // indirect + k8s.io/api v0.28.4 // indirect k8s.io/apiextensions-apiserver v0.27.2 // indirect - k8s.io/apimachinery v0.28.1 // indirect + k8s.io/apimachinery v0.28.4 // indirect k8s.io/apiserver v0.27.2 // indirect - k8s.io/client-go v0.28.1 // indirect + k8s.io/client-go v0.28.4 // indirect k8s.io/component-base v0.27.2 // indirect k8s.io/klog/v2 v2.100.1 // indirect k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect @@ -207,6 +206,6 @@ require ( sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/controller-runtime v0.15.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/kyaml v0.15.0 // indirect + sigs.k8s.io/kustomize/kyaml v0.16.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index f843308fe7a..2c8ad11e74e 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,83 +1,29 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= -cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= -cloud.google.com/go/accesscontextmanager v1.8.2 h1:jcOXen2u13aHgOHibUjxyPI+fZzVhElxy2gzJJlOOHg= -cloud.google.com/go/accesscontextmanager v1.8.2/go.mod h1:E6/SCRM30elQJ2PKtFMs2YhfJpZSNcJyejhuzoId4Zk= cloud.google.com/go/accesscontextmanager v1.8.4 h1:Yo4g2XrBETBCqyWIibN3NHNPQKUfQqti0lI+70rubeE= cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= -cloud.google.com/go/asset v1.15.3 h1:uI8Bdm81s0esVWbWrTHcjFDFKNOa9aB7rI1vud1hO84= -cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= -cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/asset v1.16.0 h1:VjwWNtEVsbpXfJqZbb2RLOBzSgAjN69vf2UJADHnkxk= +cloud.google.com/go/asset v1.16.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v1.1.3 h1:18tKG7DzydKWUnLjonWcJO6wjSCAtzh4GcRKlH/Hrzc= -cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= -cloud.google.com/go/longrunning v0.5.2 h1:u+oFqfEwwU7F9dIELigxbe0XVnBAo9wqMuQLA50CZ5k= -cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= -cloud.google.com/go/orgpolicy v1.11.2 h1:Dnfh5sj3aIAuJzH4Q4rBp6lCJ/IdXRBbwQ0/nQsUySE= -cloud.google.com/go/orgpolicy v1.11.2/go.mod h1:biRDpNwfyytYnmCRWZWxrKF22Nkz9eNVj9zyaBdpm1o= cloud.google.com/go/orgpolicy v1.11.4 h1:RWuXQDr9GDYhjmrredQJC7aY7cbyqP9ZuLbq5GJGves= cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= -cloud.google.com/go/osconfig v1.12.2 h1:AjHbw8MgKKaTFAEJWGdOYtMED3wUXKLtvdfP8Uzbuy0= -cloud.google.com/go/osconfig v1.12.2/go.mod h1:eh9GPaMZpI6mEJEuhEjUJmaxvQ3gav+fFEJon1Y8Iw0= cloud.google.com/go/osconfig v1.12.4 h1:OrRCIYEAbrbXdhm13/JINn9pQchvTTIzgmOCA7uJw8I= cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB//w= -cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= +cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.1 h1:eOqSlege+69h9JhR/ydpHCBLCfQmJuznPGdhLY/SDcU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.1/go.mod h1:R0AXqSshPDVYHGopYGwPxguApNpFFOdaVAJ8XO2BxJ0= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.2 h1:VumKmHhd+jO9nZCUzKltGKv4U5j1hxueRzBaoch+SvY= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.10.2/go.mod h1:sDPahz16/LVyT5feMgYcPPx68rozeDI3LaM9/5Ok9GA= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.11.1 h1:S4Y7o5RKRC9Bk71VszCx9NeheWjdSAn5ejPuD1W6lNE= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.11.1/go.mod h1:v4TFK9TmX4mYyXL3v9wFXVN3A5vrt2LaVDBX2/OVU7Y= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -89,8 +35,6 @@ github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCv github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= -github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= @@ -138,8 +82,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= @@ -165,25 +109,23 @@ github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FM github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.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/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA= @@ -200,21 +142,14 @@ github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+ github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.10.0 h1:F0x3xXrAWmhwtzoCokU4IMPcBdncG+HAAqi9FcOOjbQ= -github.com/go-git/go-git/v5 v5.10.0/go.mod h1:1FOZ/pQnqw24ghP2n7cunVl0ON55BsjPYvhWHvZGhoo= github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= 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.2/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/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/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -289,31 +224,18 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= @@ -322,12 +244,8 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 h1:EcQR3gusLHN46TAD+G+EbaaqJArt5vHhNpXAa12PQf4= -github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= -github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd h1:PppHBegd3uPZ3Y/Iax/2mlCFJm1w4Qf/zP1MdW4ju2o= -github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= -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/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 h1:k4Tw0nt6lwro3Uin8eqoET7MDA4JnT8YgbCjc/g5E3k= +github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -338,45 +256,26 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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/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/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg= -github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA= github.com/google/go-github/v56 v56.0.0 h1:TysL7dMa/r7wsQi44BjqlwaHvwlFlqkK8CtBWCX3gb4= github.com/google/go-github/v56 v56.0.0/go.mod h1:D8cdcX98YWJvi7TLo7zM4/h8ZTx6u6fwGEkCdisopo0= +github.com/google/go-github/v57 v57.0.0 h1:L+Y3UPTY8ALM8x+TV0lg+IEBI+upibemtBD8Q9u7zHs= github.com/google/go-github/v57 v57.0.0/go.mod h1:s0omdnye0hvK/ecLvpsGfJMiRt85PimQh4oygmLIxHw= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= 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= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -385,40 +284,28 @@ github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -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/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/gruntwork-io/terratest v0.46.6 h1:OO+BozS6nqeu0OhkLy7opkgDoYafkDr1TPlxprma26M= -github.com/gruntwork-io/terratest v0.46.6/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= -github.com/gruntwork-io/terratest v0.46.7 h1:oqGPBBO87SEsvBYaA0R5xOq+Lm2Xc5dmFVfxEolfZeU= -github.com/gruntwork-io/terratest v0.46.7/go.mod h1:6gI5MlLeyF+SLwqocA5GBzcTix+XiuxCy1BPwKuT+WM= +github.com/gruntwork-io/terratest v0.46.8 h1:rgK7z6Dy/eMGFaclKR0WVG9Z54tR+Ehl7S09+8Y25j0= +github.com/gruntwork-io/terratest v0.46.8/go.mod h1:6MxfmOFQQEpQZjpuWRwuAK8qm836hYgAOCzSIZIWTmg= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d h1:g6kHlvZrFPFKeWRj5q/zyJA5gu7rlJGPf17h8hX7LHY= -github.com/hashicorp/terraform-config-inspect v0.0.0-20230925220900-5a6f8d18746d/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/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/inconshreveable/log15 v2.16.0+incompatible h1:6nvMKxtGcpgm7q0KiGs+Vc+xDvUXaBqsPKHWKsinccw= @@ -442,8 +329,6 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -455,7 +340,6 @@ github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJw github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -477,8 +361,6 @@ github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYt github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= -github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -519,8 +401,6 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.58.0 h1:S5qvevW8JoFizU7Hp66R/Y1SOXol0aCdFYVkzIqIpUo= -github.com/open-policy-agent/opa v0.58.0/go.mod h1:EGWBwvmyt50YURNvL8X4W5hXdlKeNhAHn3QXsetmYcc= github.com/open-policy-agent/opa v0.59.0 h1:1WFU/KUhJAr3qatm0Lf8Ea5jp10ZmlE2M07oaLiHypg= github.com/open-policy-agent/opa v0.59.0/go.mod h1:rdJSkEc4oQ+0074/3Fsgno5bkPsYxTjU5aLNmMujIvI= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= @@ -537,7 +417,6 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -560,8 +439,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= -github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= @@ -574,18 +451,12 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= -github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= -github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -594,10 +465,8 @@ github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyh github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= -github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= -github.com/spf13/viper v1.18.1 h1:rmuU42rScKWlhhJDyXZRKJQHXFX02chSVW1IvkPGiVM= -github.com/spf13/viper v1.18.1/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -648,9 +517,7 @@ github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQ github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg= github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -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.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= @@ -659,48 +526,30 @@ go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R7 go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= -go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 h1:3d+S281UTjM+AbF31XSOYn1qXn3BgIdWl8HNEpx08Jk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= -go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= -go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -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/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= @@ -708,94 +557,37 @@ go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= 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-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -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= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= -golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 h1:qCEDpW1G+vcj3Y7Fy52pEM1AWm3abj8WimGYejI3SC4= -golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= -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/exp v0.0.0-20231226003508-02704c960a9b h1:kLiC65FbiHWFAOu+lxwNPujcsl8VYyTYYEZnsOO1WK4= +golang.org/x/exp v0.0.0-20231226003508-02704c960a9b/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -803,21 +595,9 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= 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= -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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -827,10 +607,7 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= @@ -839,45 +616,17 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -888,8 +637,6 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -898,16 +645,10 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= -golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= -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= -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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/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= @@ -917,10 +658,6 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= @@ -928,59 +665,16 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -991,102 +685,26 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3j golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.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= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= -google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= -google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= -google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= +google.golang.org/api v0.154.0 h1:X7QkVKZBskztmpPKWQXgjJRPA2dJYrL6r+sYPRLj050= +google.golang.org/api v0.154.0/go.mod h1:qhSMkM85hgqiokIYsrRyKxrjfBeIhgl4Z2JmeRkYylc= 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/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= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= +google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= 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= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1097,7 +715,6 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= 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= @@ -1128,22 +745,17 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C 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= -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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.28.1 h1:i+0O8k2NPBCPYaMB+uCkseEbawEt/eFaiRqUx8aB108= -k8s.io/api v0.28.1/go.mod h1:uBYwID+66wiL28Kn2tBjBYQdEU0Xk0z5qF8bIBqk/Dg= +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.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo= k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ= -k8s.io/apimachinery v0.28.1 h1:EJD40og3GizBSV3mkIoXQBsws32okPOy+MkRyzh6nPY= -k8s.io/apimachinery v0.28.1/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw= +k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= +k8s.io/apimachinery v0.28.4/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg= k8s.io/apiserver v0.27.2 h1:p+tjwrcQEZDrEorCZV2/qE8osGTINPuS5ZNqWAvKm5E= k8s.io/apiserver v0.27.2/go.mod h1:EsOf39d75rMivgvvwjJ3OW/u9n1/BmUMK5otEOJrb1Y= -k8s.io/client-go v0.28.1 h1:pRhMzB8HyLfVwpngWKE8hDcXRqifh1ga2Z/PU9SXVK8= -k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE= +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/component-base v0.27.2 h1:neju+7s/r5O4x4/txeUONNTS9r1HsPbyoPBAtHsDCpo= k8s.io/component-base v0.27.2/go.mod h1:5UPk7EjfgrfgRIuDBFtsEFAe4DAvP3U+M8RTzoSJkpo= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= @@ -1154,17 +766,14 @@ k8s.io/kubectl v0.27.2 h1:sSBM2j94MHBFRWfHIWtEXWCicViQzZsb177rNsKBhZg= k8s.io/kubectl v0.27.2/go.mod h1:GCOODtxPcrjh+EC611MqREkU8RjYBh10ldQCQ6zpFKw= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -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/apiserver-network-proxy/konnectivity-client v0.1.2 h1:trsWhjU5jZrx6UvFu4WzQDrN7Pga4a7Qg+zcfcj64PA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUTb/+4c= sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= 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/kustomize/kyaml v0.15.0 h1:ynlLMAxDhrY9otSg5GYE2TcIz31XkGZ2Pkj7SdolD84= -sigs.k8s.io/kustomize/kyaml v0.15.0/go.mod h1:+uMkBahdU1KNOj78Uta4rrXH+iH7wvg+nW7+GULvREA= +sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0= +sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From 420373f22d332767a7be2b252aa0dea28343fa3e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 26 Dec 2023 15:25:59 -0800 Subject: [PATCH 0744/1371] chore: update ci-foundation (#2055) --- .../test-org/ci-foundation/cloudbuild.yaml | 2 +- .../test-org/ci-project/.terraform.lock.hcl | 88 +++++++++---------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/infra/terraform/test-org/ci-foundation/cloudbuild.yaml b/infra/terraform/test-org/ci-foundation/cloudbuild.yaml index 73b5a8dd967..d87dc18c74f 100644 --- a/infra/terraform/test-org/ci-foundation/cloudbuild.yaml +++ b/infra/terraform/test-org/ci-foundation/cloudbuild.yaml @@ -20,7 +20,7 @@ steps: args: ['reconcile.sh'] substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.5' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.18' options: env: - 'FOUNDATION_CICD_PROJECT_ID=$_FOUNDATION_CICD_PROJECT_ID' diff --git a/infra/terraform/test-org/ci-project/.terraform.lock.hcl b/infra/terraform/test-org/ci-project/.terraform.lock.hcl index 60534d9c42c..30ca14a0a52 100644 --- a/infra/terraform/test-org/ci-project/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-project/.terraform.lock.hcl @@ -2,63 +2,63 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "4.64.0" - constraints = ">= 3.39.0, >= 3.53.0, >= 3.64.0, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.39.0, >= 3.53.0, >= 3.64.0, < 6.0.0" hashes = [ - "h1:e9YVOqH5JQTR0LbT+VkOlJb1pDoZEvzXkqaA0Xsn5Mo=", - "zh:097fcb0a45fa41c2476deeb7a9adeadf5142e35e4d1a9eeb7b1720900a06807c", - "zh:177e6e34f10efb5cec16b4106af5aef5240f20c33d91d40f3ea73fdc6ce9a24a", - "zh:3331b0f62f900f8f1447e654a7318f3db03723739ac5dcdc446f1a1b1bf5fd0b", - "zh:39e5a19693f8d598d35968660837d1b55ca82d7c314cd433fd957d1c2a5b6616", - "zh:44d09cb871e7ec242610d84f93367755d0c532f744e5871a032cdba430e39ec7", - "zh:77769c0f8ace0be3f85b702b7d4cc0fd43d89bfbea1493166c4f288338222f0a", - "zh:a83ca3e204a85d1d04ee7a6432fdabc7b7e2ef7f46513b6309d8e30ea9e855a3", - "zh:bbf1e983d24877a690886aacd48085b37c8c61dc65e128707f36b7ae6de11abf", - "zh:c359fcf8694af0ec490a1784575eeb355d6e5a922b225f49d5307a06e9715ad0", - "zh:f0df551e19cf8cc9a021a4148518a610b856a50a55938710837fa55b4fbd252f", + "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", + "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", + "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", + "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", + "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", + "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", + "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", + "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", + "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", + "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fb171d37178d46d711f3e09107492343f8356c1237bc6df23114920dc23c4528", + "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", + "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.64.0" - constraints = ">= 3.39.0, >= 3.64.0, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.39.0, >= 3.64.0, < 6.0.0" hashes = [ - "h1:3zF6A6S2KP79AIWHflNmbdz2v3aitZvr3iE5jH3IY4M=", - "zh:3a84df072e75042c7445d3cc9fd220a2f58199b01b0b936e220554b4e9b59b3c", - "zh:60e8a5f5824415859bc847f69f8d48e83126dbe7c440c51fd1a6d1b1df5a3ba9", - "zh:6e95c14646cd9c9c8d3f806d05911806830b513769ce32ececf26501f8e77b61", - "zh:7757bf4535219be1e8a127fada8e9f3d188c11babd7c2b8bf308a705e81c0261", - "zh:78c1b91d93259b90a48519a85bfcc127aa4a46e8180400169e76fe8976f1965f", - "zh:85dedb9aaaa4d9c95270a08edf212e1f07f253a6da6934052f6e6e5c352ac84d", - "zh:8dff151ba3dece2d12270216253f12ec9c550f437ebbb90daf5e1fb628da30d9", - "zh:b3d2797f06d97d1c85e94e5fda04d6c4191211dba954a6c45dcc6441d32bd409", - "zh:b68102e435b4071d4aa26c415a787d259373f97a9049e68844e97504672695f9", - "zh:c865728116c3ebc9b4c6bd7d942b17d5640c368eb50574a2e7edfa15cc7b2c9b", - "zh:eb550d69402a201c805f078756f4102449ce8a04620db31ab5e964d93846eb5f", + "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", + "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", + "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", + "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", + "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", + "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", + "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", + "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", + "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", + "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", + "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } provider "registry.terraform.io/integrations/github" { - version = "5.25.0" + version = "5.42.0" constraints = "~> 5.0" hashes = [ - "h1:PV5RT2TVZIoaw9gLRM9iVMz1kKOoVYRz5AEsJ8OaXDM=", - "zh:15e6e652b10f225b1d2a6c675e38e7e119b0a19a3009a88e5c6a478d65f02fc5", - "zh:1a875d13507eca65d64bdac0f62910f6ce26fb1ef746bbf5f7b2bbe86c78441b", - "zh:1f41a0053d13971d7c8fd2eb0b3ce263f65d7c2a393580f72ad83a28d562a45e", - "zh:274fa0c49b3ef20f968cefd01d5e40af76437868ff7accc8430c0407b9f9d4b6", - "zh:2b30f8de0f5e0f3157e368ae034fb62ee92798329afc5bf239d384e393ef6860", - "zh:53e0da4b92ed389c766042fc60e72629896a2f6050ed3b7c036cc8fde8a22858", - "zh:5a9e3900a0e7b62c7769e8c7e993e0f87229b0a0cc4fa3064fc79bfe73fa1ec9", - "zh:7fa4a46ec94f6e1da93399955e8571ba0b20100e1bd7e34b5e75fbed7d43ae72", - "zh:bc2f75e40c8743539199f09f0fc54ff091d1bb05398539642c3f75d869a251c5", - "zh:d80a7bdfc4be101559c0bec516a73239291d18be522a2fa872fa8e07a65a3966", - "zh:ea230531bb0fe2f778a72edb6bc6a80983a7a2c82a1c5f255a6ae11d45f714f2", - "zh:f649cd014748ef498ccb8c07c4de1d55b736daeaeb8591395cd6b80a8502612a", - "zh:fb94e009e8348bb016cde0b39b8e0968f60d5fd9cbc0be82bdb3ab498e5dea46", - "zh:fbc119a51967c497d24a728d5afad72fb5f49494ef3645816336f898ac031661", + "h1:vHTdYL6eXJfUzz4bs0ICyg2f8ct/K2EnGAjwLrAmL3U=", + "zh:0f97039c6b70295c4a82347bc8a0bcea700b3fb3df0e0be53585da025584bb7c", + "zh:12e78898580cc2a72b5f2a77e191b158f88e974b0500489b691f34842288745c", + "zh:23660933e4f00293c0d4d6cd6b4d72e382c0df46b70cecf22b5c4c090d3b61e3", + "zh:74119174b46d8d197dd209a246bf8b5db113c66467e02c831e68a8ceea312d3e", + "zh:829c4c0c202fc646eb0e1759eb9c8f0757df5295be2d3344b8fd6ca8ce9ef33b", + "zh:92043e667f520aee4e08a10a183ad5abe5487f3e9c8ad5a55ea1358b14b17b1a", + "zh:998909806b4ff42cf480fcd359ec1f12b868846f89284b991987f55de24876b7", + "zh:9f758447db3bf386516562abd6da1e54d22ddc207bda25961d2b5b049f32da0f", + "zh:a6259215612d4d6a281c671b2d5aa3a0a0b0a3ae92ed60b633998bb692e922d3", + "zh:ad7d78056beb44191911db9443bf5eec41a3d60e7b01def2a9e608d1c4288d27", + "zh:b697e7b0abef3000e1db482c897b82cd455621b488bb6c4cd3d270763d7b08ac", + "zh:db8e849eded8aebff780f89ab7e1339053d2f15c1c8f94103d70266a090527ad", + "zh:e5bdbb85fb148dd75877a7b94b595d4e8680e495c241db02c4b12b91e9d08953", + "zh:ee812c5fd77d3817fb688f720e5eb42d7ff04db67a125de48b05458c9f657483", ] } From 4ff839fa08c081b6f088b082f5ce5f0f9a7c3d55 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 27 Dec 2023 13:42:38 -0800 Subject: [PATCH 0745/1371] chore: update build-push-cft-devtools.yml (#2064) --- .github/workflows/build-push-cft-devtools.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 4f7a34e2da4..37d59589085 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -19,7 +19,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - id: 'auth' name: 'Authenticate to Google Cloud' @@ -30,7 +30,6 @@ jobs: - uses: google-github-actions/setup-gcloud@5a5f7b85fca43e76e53463acaa9d408a03c98d3a # v2.0.1 with: - version: "410.0.0" project_id: ${{ env.PROJECT_ID }} - name: Build @@ -52,5 +51,5 @@ jobs: repo: context.repo.repo, title: 'build-push-dev-tools job failed', body: 'Logs: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}', - assignee: 'bharathkkb' + assignees: ['bharathkkb','apeabody'] }) From 718c6595171a832858bfcefa6e7a3536538c4241 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 27 Dec 2023 13:50:20 -0800 Subject: [PATCH 0746/1371] chore: run workflows only on this repo (#2062) --- .github/workflows/build-push-cft-devtools.yml | 1 + .github/workflows/release-cli.yml | 1 + .github/workflows/update-tooling.yml | 2 ++ 3 files changed, 4 insertions(+) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 37d59589085..df94aaf2163 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -13,6 +13,7 @@ jobs: build-push-dev-tools: name: Build and push new CFT dev tools image runs-on: ubuntu-latest + if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' permissions: contents: 'read' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index f7f2b92ee65..25a03acab4b 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -14,6 +14,7 @@ jobs: release-new-cli: name: Release new CLI versions runs-on: ubuntu-latest + if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' permissions: contents: 'write' diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 481729bff90..7658b440a69 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -27,6 +27,8 @@ env: jobs: update-tools: runs-on: ubuntu-latest + if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' + steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: From 6308566cdc689eacb0e606b68e4918c46fc59ee4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 27 Dec 2023 16:48:00 -0800 Subject: [PATCH 0747/1371] chore(deps): bump org-iam-policy for dev-tools 1.18 and TPG v5 (#2066) --- .../org-iam-policy/.terraform.lock.hcl | 28 +++++++++---------- .../test-org/org-iam-policy/cloudbuild.yaml | 2 +- .../test-org/org-iam-policy/versions.tf | 1 + 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl b/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl index fc858c57bca..308c33eb91a 100644 --- a/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl +++ b/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl @@ -2,21 +2,21 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "4.23.0" - constraints = ">= 3.39.0, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.39.0, < 6.0.0" hashes = [ - "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", - "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", - "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", - "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", - "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", - "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", - "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", - "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", - "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", - "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", - "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", + "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", + "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", + "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", + "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", + "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", + "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", + "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", + "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", + "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", + "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } diff --git a/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml b/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml index 39285731025..20391bf1ddc 100644 --- a/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml +++ b/infra/terraform/test-org/org-iam-policy/cloudbuild.yaml @@ -30,4 +30,4 @@ steps: args: ['apply', '--auto-approve'] substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.11' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.18' diff --git a/infra/terraform/test-org/org-iam-policy/versions.tf b/infra/terraform/test-org/org-iam-policy/versions.tf index 8f1f5b64571..8a03473ef2e 100644 --- a/infra/terraform/test-org/org-iam-policy/versions.tf +++ b/infra/terraform/test-org/org-iam-policy/versions.tf @@ -18,6 +18,7 @@ terraform { required_version = ">= 1.4.4" required_providers { google = { + source = "hashicorp/google" version = ">= 3.39, < 6" } } From 2a59d86d6c67b2bc780d188db3b0df64b6072ef2 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 27 Dec 2023 16:54:59 -0800 Subject: [PATCH 0748/1371] chore(deps): bump test-org for TPG v5 (#2067) --- .../test-org/org/.terraform.lock.hcl | 223 +++++++++--------- infra/terraform/test-org/org/folders.tf | 6 +- infra/terraform/test-org/org/prow.tf | 2 +- infra/terraform/test-org/org/versions.tf | 15 +- 4 files changed, 128 insertions(+), 118 deletions(-) diff --git a/infra/terraform/test-org/org/.terraform.lock.hcl b/infra/terraform/test-org/org/.terraform.lock.hcl index dfc2f5e5472..7ef00aa8bf3 100644 --- a/infra/terraform/test-org/org/.terraform.lock.hcl +++ b/infra/terraform/test-org/org/.terraform.lock.hcl @@ -2,162 +2,163 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/external" { - version = "2.2.3" + version = "2.3.2" constraints = ">= 1.2.0, >= 2.2.2, < 3.0.0" hashes = [ - "h1:uvOYRWcVIqOZSl8YjjaB18yZFz1AWIt2CnK7O45rckg=", - "zh:184ecd339d764de845db0e5b8a9c87893dcd0c9d822167f73658f89d80ec31c9", - "zh:2661eaca31d17d6bbb18a8f673bbfe3fe1b9b7326e60d0ceb302017003274e3c", - "zh:2c0a180f6d1fc2ba6e03f7dfc5f73b617e45408681f75bca75aa82f3796df0e4", - "zh:4b92ae44c6baef4c4952c47be00541055cb5280dd3bc8031dba5a1b2ee982387", - "zh:5641694d5daf3893d7ea90be03b6fa575211a08814ffe70998d5adb8b59cdc0a", - "zh:5bd55a2be8a1c20d732ac9c604b839e1cadc8c49006315dffa4d709b6874df32", - "zh:6e0ef5d11e1597202424b7d69b9da7b881494c9b13a3d4026fc47012dc651c79", + "h1:7F6FVQh7OcCgIH3YEJg1SJDSb1CU4qrCtGuI2EBHnL8=", + "zh:020bf652739ecd841d696e6c1b85ce7dd803e9177136df8fb03aa08b87365389", + "zh:0c7ea5a1cbf2e01a8627b8a84df69c93683f39fe947b288e958e72b9d12a827f", + "zh:25a68604c7d6aa736d6e99225051279eaac3a7cf4cab33b00ff7eae7096166f6", + "zh:34f46d82ca34604f6522de3b36eda19b7ad3be1e38947afc6ac31656eab58c8a", + "zh:6959f8f2f3de93e61e0abb90dbec41e28a66daec1607c46f43976bd6da50bcfd", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:9e19f89fa25004d3b926a8d15ea630b4bde62f1fa4ed5e11a3d27aabddb77353", - "zh:b763efdd69fd097616b4a4c89cf333b4cee9699ac6432d73d2756f8335d1213f", - "zh:e3b561efdee510b2b445f76a52a902c52bee8e13095e7f4bed7c80f10f8d294a", - "zh:fe660bb8781ee043a093b9a20e53069974475dcaa5791a1f45fd03c61a26478a", + "zh:a81e5d65a343da9caa6f1d17ae0aced9faecb36b4f8554bd445dbd4f8be21ab6", + "zh:b1d3f1557214d652c9120862ce27e9a7b61cb5aec5537a28240a5a37bf0b1413", + "zh:b71588d006471ae2d4a7eca2c51d69fd7c5dec9b088315599b794e2ad0cc5e90", + "zh:cfdaae4028b644dff3530c77b49d31f7e6f4c4e2a9e5c8ac6a88e383c80c9e9c", + "zh:dbde15154c2eb38a5f54d0e7646bc67510004179696f3cc2bc1d877cecacf83b", + "zh:fb681b363f83fb5f64dfa6afbf32d100d0facd2a766cf3493b8ddb0398e1b0f7", ] } provider "registry.terraform.io/hashicorp/google" { - version = "4.46.0" - constraints = ">= 3.19.0, >= 3.39.0, >= 3.43.0, >= 3.45.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.19.0, >= 3.39.0, >= 3.43.0, >= 3.45.0, >= 3.50.0, >= 3.53.0, >= 4.28.0, < 6.0.0" hashes = [ - "h1:HSbC3sovuqGBwzlKOAeJEeQl36SiwPkMrEshBkA7Crs=", - "zh:06667e8c975734c0fbfe9cdbc6ee6789f3114e40bb97a8a721ed87f3e5c42dfc", - "zh:0e9829e326095d142ffa394f7189528001b074249b2ec8f98567ada049e35cbf", - "zh:1feceb13f5dfd658bcd94886c495b8064096f58bccb65f8386465803ae67e821", - "zh:404a642769271a290eb600c238f33ecaeb5c6d1354694d0ee6f83030941fde00", - "zh:46923a708123777a383aec56d0e834eae9095e440511f27c8ac5d0dfaf9b937b", - "zh:5f7b32404f70444dbe9e89d4ba0f9599d76f1072da2a52ca207a14e117ba165b", - "zh:a9d3d03c5e9cf904f08906ab13ad5ad8ff3f2271565fda75cd32c6ba528a4ea3", - "zh:aaef3d327fd6c8fbe33c454103ac0bad3e2043ff6bcb6c0aaa0d5974695dc8e4", - "zh:b49ea5676065543c2c28a0f5fef28058ad8fc96894782123fb9c013cd083be98", - "zh:f432cb018a4826b7a61e39f10239ca017a74313e0755b24858f082395e38bf9a", + "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", + "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", + "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", + "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", + "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", + "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", + "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", + "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", + "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", + "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fe5dde2af422510ba2a1388209dc94723ee740b4282323aafa199366705387cc", + "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", + "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.46.0" - constraints = ">= 3.19.0, >= 3.43.0, >= 3.50.0, ~> 4.11, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.19.0, >= 3.43.0, >= 3.50.0, >= 4.11.0, >= 4.28.0, < 6.0.0" hashes = [ - "h1:GQgp57Wrf3oDVB/nDtBd/VL3/uMTFN5bLPhPLLADGB4=", - "zh:08aa990fd9944061194138ad4f136f5e6b45f331d110d882e4ddb566619eb9d8", - "zh:186b9c7b49ad93a2ab2d8d713429caa8b23dab8d90763c01244205c3455dd813", - "zh:221598948eab9c64e13a778c6be17dd1e9cb2e08a3217072d9759202986c3f09", - "zh:402d386ea907923bbf36568dc481becda2dd0522c5286602dcb716f364f73d91", - "zh:84d70da182503ce312148cc86e110482c88d57041223af00d2ead60fefe851ee", - "zh:92bd8e30f6334988d6e7fedff11b99c68fe0d21bfead6f1cbbfc73acb665c36d", - "zh:a0e5815460c2a1d720955a2abbd6ca6eef450da7a76c52c223203f5d03ca45d7", - "zh:c34c0124f70b86ceb4cf79b93539539286f47175e1a648e37cfb754200cc19b7", - "zh:d00769dbfd1bea46da5ac81a9e3384d0f954ed3f912859b21ed3ea2378c2cb1d", - "zh:dadd937ed05dcc3d521cd6ca04bc9681fd30acbb42265f748e69f5feb0f5b829", - "zh:e4c2d65cf138cc868ae52e3e2cf97e37fbbdbc9c510f1c669fdbcc736256e402", + "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", + "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", + "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", + "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", + "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", + "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", + "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", + "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", + "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", + "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", + "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } provider "registry.terraform.io/hashicorp/kubernetes" { - version = "2.16.1" - constraints = "~> 2.0" + version = "2.24.0" + constraints = "~> 2.13" hashes = [ - "h1:i+DwtJK82sIWmTcQA9lL0mlET+14/QpUqv10fU2o3As=", - "zh:06224975f5910d41e73b35a4d5079861da2c24f9353e3ebb015fbb3b3b996b1c", - "zh:2bc400a8d9fe7755cca27c2551564a9e2609cfadc77f526ef855114ee02d446f", - "zh:3a479014187af1d0aec3a1d3d9c09551b801956fe6dd29af1186dec86712731b", - "zh:73fb0a69f1abdb02858b6589f7fab6d989a0f422f7ad95ed662aaa84872d3473", - "zh:a33852cd382cbc8e06d3f6c018b468ad809d24d912d64722e037aed1f9bf39db", - "zh:b533ff2214dca90296b1d22eace7eaa7e3efe5a7ae9da66a112094abc932db4f", - "zh:ddf74d8bb1aeb01dc2c36ef40e2b283d32b2a96db73f6daaf179fa2f10949c80", - "zh:e720f3a15d34e795fa9ff90bc755e838ebb4aef894aa2a423fb16dfa6d6b0667", - "zh:e789ae70a658800cb0a19ef7e4e9b26b5a38a92b43d1f41d64fc8bb46539cefb", - "zh:e8aed7dc0bd8f843d607dee5f72640dbef6835a8b1c6ea12cea5b4ec53e463f7", + "h1:u9lRMCdNXcB5/WQTZVMvGhNliW2pKOzj3SOVbu9yPpg=", + "zh:0ed83ec390a7e75c4990ebce698f14234de2b6204ed9a01cd042bb7ea5f26564", + "zh:195150e4fdab259c70088528006f4604557a051e037ebe8de64e92840f27e40a", + "zh:1a334af55f7a74adf033eb871c9fe7e9e648b41ab84321114ef4ca0e7a34fba6", + "zh:1ef68c3832691de21a61bf1a4e268123f3e08850712eda0b893cac908a0d1bc1", + "zh:44a1c58e5a6646e62b0bad653319c245f3b635dd03554dea2707a38f553e4a52", + "zh:54b5b374c4386f7f05b3fe986f9cb57bde4beab3bdf6ee33444f2b9a81b8af64", + "zh:aa8c2687ab784b72f8cdad8d3c3673dea83b33561e7b3f2d287ef0d06ff2a9e5", + "zh:e6ecba0503052ef3ad49ad56e17b2a73d9b55e30fcb82b040189d281e25e1a3b", + "zh:f105393f6487d3eb1f1636ba42d10c82950ddfef852244c1bca8d526fa23a9a3", + "zh:f17a8f1914ec66d80ccacecd40123362cf093abee3d3aa1ff9f8f687d8736f85", + "zh:f394b12ef01fa0bdf666a43ad152eb3890134f35e635ea056b18771c292de46e", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fb3ac4f43c8b0dfc0b0103dd0f062ea72b3a34518d4c8808e3a44c9a3dd5f024", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.2.1" + version = "3.2.2" constraints = ">= 2.1.0, < 4.0.0" hashes = [ - "h1:FbGfc+muBsC17Ohy5g806iuI1hQc4SIexpYCrQHQd8w=", - "zh:58ed64389620cc7b82f01332e27723856422820cfd302e304b5f6c3436fb9840", - "zh:62a5cc82c3b2ddef7ef3a6f2fedb7b9b3deff4ab7b414938b08e51d6e8be87cb", - "zh:63cff4de03af983175a7e37e52d4bd89d990be256b16b5c7f919aff5ad485aa5", - "zh:74cb22c6700e48486b7cabefa10b33b801dfcab56f1a6ac9b6624531f3d36ea3", + "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", + "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", + "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", + "zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3", + "zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606", + "zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546", + "zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539", + "zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:79e553aff77f1cfa9012a2218b8238dd672ea5e1b2924775ac9ac24d2a75c238", - "zh:a1e06ddda0b5ac48f7e7c7d59e1ab5a4073bbcf876c73c0299e4610ed53859dc", - "zh:c37a97090f1a82222925d45d84483b2aa702ef7ab66532af6cbcfb567818b970", - "zh:e4453fbebf90c53ca3323a92e7ca0f9961427d2f0ce0d2b65523cc04d5d999c2", - "zh:e80a746921946d8b6761e77305b752ad188da60688cfd2059322875d363be5f5", - "zh:fbdb892d9822ed0e4cb60f2fedbdbb556e4da0d88d3b942ae963ed6ff091e48f", - "zh:fca01a623d90d0cad0843102f9b8b9fe0d3ff8244593bd817f126582b52dd694", + "zh:913a929070c819e59e94bb37a2a253c228f83921136ff4a7aa1a178c7cce5422", + "zh:aa9015926cd152425dbf86d1abdbc74bfe0e1ba3d26b3db35051d7b9ca9f72ae", + "zh:bb04798b016e1e1d49bcc76d62c53b56c88c63d6f2dfe38821afef17c416a0e1", + "zh:c23084e1b23577de22603cff752e59128d83cfecc2e6819edadd8cf7a10af11e", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.4.3" - constraints = ">= 2.2.0, >= 2.3.1, < 4.0.0" + version = "3.6.0" + constraints = ">= 2.1.0, >= 2.2.0, >= 2.3.1, < 4.0.0" hashes = [ - "h1:xZGZf18JjMS06pFa4NErzANI98qi59SEcBsOcS2P2yQ=", - "zh:41c53ba47085d8261590990f8633c8906696fa0a3c4b384ff6a7ecbf84339752", - "zh:59d98081c4475f2ad77d881c4412c5129c56214892f490adf11c7e7a5a47de9b", - "zh:686ad1ee40b812b9e016317e7f34c0d63ef837e084dea4a1f578f64a6314ad53", + "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=", + "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d", + "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211", + "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829", + "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d", + "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:84103eae7251384c0d995f5a257c72b0096605048f757b749b7b62107a5dccb3", - "zh:8ee974b110adb78c7cd18aae82b2729e5124d8f115d484215fd5199451053de5", - "zh:9dd4561e3c847e45de603f17fa0c01ae14cae8c4b7b4e6423c9ef3904b308dda", - "zh:bb07bb3c2c0296beba0beec629ebc6474c70732387477a65966483b5efabdbc6", - "zh:e891339e96c9e5a888727b45b2e1bb3fcbdfe0fd7c5b4396e4695459b38c8cb1", - "zh:ea4739860c24dfeaac6c100b2a2e357106a89d18751f7693f3c31ecf6a996f8d", - "zh:f0c76ac303fd0ab59146c39bc121c5d7d86f878e9a69294e29444d4c653786f8", - "zh:f143a9a5af42b38fed328a161279906759ff39ac428ebcfe55606e05e1518b93", + "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17", + "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21", + "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839", + "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0", + "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c", + "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.9.1" + version = "0.10.0" + constraints = ">= 0.5.0" hashes = [ - "h1:NUv/YtEytDQncBQ2mTxnUZEy/rmDlPYmE9h2iokR0vk=", - "zh:00a1476ecf18c735cc08e27bfa835c33f8ac8fa6fa746b01cd3bcbad8ca84f7f", - "zh:3007f8fc4a4f8614c43e8ef1d4b0c773a5de1dcac50e701d8abc9fdc8fcb6bf5", - "zh:5f79d0730fdec8cb148b277de3f00485eff3e9cf1ff47fb715b1c969e5bbd9d4", + "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", + "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", + "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", + "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", + "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:8c8094689a2bed4bb597d24a418bbbf846e15507f08be447d0a5acea67c2265a", - "zh:a6d9206e95d5681229429b406bc7a9ba4b2d9b67470bda7df88fa161508ace57", - "zh:aa299ec058f23ebe68976c7581017de50da6204883950de228ed9246f309e7f1", - "zh:b129f00f45fba1991db0aa954a6ba48d90f64a738629119bfb8e9a844b66e80b", - "zh:ef6cecf5f50cda971c1b215847938ced4cb4a30a18095509c068643b14030b00", - "zh:f1f46a4f6c65886d2dd27b66d92632232adc64f92145bf8403fe64d5ffa5caea", - "zh:f79d6155cda7d559c60d74883a24879a01c4d5f6fd7e8d1e3250f3cd215fb904", - "zh:fd59fa73074805c3575f08cd627eef7acda14ab6dac2c135a66e7a38d262201c", + "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", + "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", + "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", + "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", + "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", + "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", + "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", ] } provider "registry.terraform.io/integrations/github" { - version = "5.27.0" + version = "5.42.0" constraints = "~> 5.0" hashes = [ - "h1:mpeG01ZUNfC6Cjl7E93U9YTruRK7j49GgtQtTxy6Kik=", - "zh:06479e069d764b5ddf3380bb86c82bdd525bd8e4e53d3feae8c4ca97ceb14458", - "zh:0d3ee01b39c218c91999139b09a60d528e816968de1f86cfc08bf9010d696803", - "zh:233614291a6b76cb34966233ace8da50dd7dae539098837db7f108e3986e68d2", - "zh:3f3c864b3823954945fc44ca3f2ccfae5c0517d61b73e1fb2116f65a3ea550e4", - "zh:5e10c73a8f31af8350018ebfcca4272dd9f4790c01329c5bcd9b1d460e6e382c", - "zh:5ffaa077625a49166ef830a7dd4e55ad7cb83db24d9e97dda2258ce788380212", - "zh:6ff4565b53b23b45ae32ac0061a4949e9e648f4a55d31614b40d1c336a5c2b7a", - "zh:98de43fd2959c053f84ab4692ecf3f7ecb8e4936d7be3523701ffc18c6a4db45", - "zh:b99382b1cbe8bbb8c7dde4db58209403fa44f2128b6d955d242fcf8eb37a2d99", - "zh:ccc8b8086073ba1d139ef7003c85cff1d476ce018b0f42340ae6d0ba433bbaef", - "zh:cce3dcbd3b97382d7bea51a30bbede508b3e4e034a42efa856a1dcbdb361fbbf", - "zh:e7302ad2ab030ff77e0c2c3c62bf28fddd732a759b985a535fa4f0e030dd8eaf", - "zh:eaa6d6105bf5a62e945d3307cedac8a10ef8735aafc1b4842ea28cac398c5521", - "zh:f10f6173ce442bd78278c4ba4a8b8b48d7e66124657b478c2ae82b73035fc954", + "h1:vHTdYL6eXJfUzz4bs0ICyg2f8ct/K2EnGAjwLrAmL3U=", + "zh:0f97039c6b70295c4a82347bc8a0bcea700b3fb3df0e0be53585da025584bb7c", + "zh:12e78898580cc2a72b5f2a77e191b158f88e974b0500489b691f34842288745c", + "zh:23660933e4f00293c0d4d6cd6b4d72e382c0df46b70cecf22b5c4c090d3b61e3", + "zh:74119174b46d8d197dd209a246bf8b5db113c66467e02c831e68a8ceea312d3e", + "zh:829c4c0c202fc646eb0e1759eb9c8f0757df5295be2d3344b8fd6ca8ce9ef33b", + "zh:92043e667f520aee4e08a10a183ad5abe5487f3e9c8ad5a55ea1358b14b17b1a", + "zh:998909806b4ff42cf480fcd359ec1f12b868846f89284b991987f55de24876b7", + "zh:9f758447db3bf386516562abd6da1e54d22ddc207bda25961d2b5b049f32da0f", + "zh:a6259215612d4d6a281c671b2d5aa3a0a0b0a3ae92ed60b633998bb692e922d3", + "zh:ad7d78056beb44191911db9443bf5eec41a3d60e7b01def2a9e608d1c4288d27", + "zh:b697e7b0abef3000e1db482c897b82cd455621b488bb6c4cd3d270763d7b08ac", + "zh:db8e849eded8aebff780f89ab7e1339053d2f15c1c8f94103d70266a090527ad", + "zh:e5bdbb85fb148dd75877a7b94b595d4e8680e495c241db02c4b12b91e9d08953", + "zh:ee812c5fd77d3817fb688f720e5eb42d7ff04db67a125de48b05458c9f657483", ] } diff --git a/infra/terraform/test-org/org/folders.tf b/infra/terraform/test-org/org/folders.tf index 32fb4703b01..89c77ef20b2 100644 --- a/infra/terraform/test-org/org/folders.tf +++ b/infra/terraform/test-org/org/folders.tf @@ -16,7 +16,7 @@ module "folders-root" { source = "terraform-google-modules/folders/google" - version = "~> 3.1" + version = "~> 4.0" parent = "organizations/${local.org_id}" @@ -30,7 +30,7 @@ module "folders-root" { module "folders-ci" { source = "terraform-google-modules/folders/google" - version = "~> 3.1" + version = "~> 4.0" parent = "folders/${replace(local.folders["ci-projects"], "folders/", "")}" @@ -41,7 +41,7 @@ module "folders-ci" { module "bpt_ci_folder" { source = "terraform-google-modules/folders/google" - version = "~> 3.1" + version = "~> 4.0" parent = "folders/${replace(local.folders["ci-projects"], "folders/", "")}" names = ["ci-bpt"] diff --git a/infra/terraform/test-org/org/prow.tf b/infra/terraform/test-org/org/prow.tf index 5747de22243..a87a83fa525 100644 --- a/infra/terraform/test-org/org/prow.tf +++ b/infra/terraform/test-org/org/prow.tf @@ -36,7 +36,7 @@ provider "kubernetes" { module "prow-int-sa-wi" { source = "terraform-google-modules/kubernetes-engine/google//modules/workload-identity" - version = "~> 26.0" + version = "~> 29.0" name = "int-test-sa" namespace = local.test_ns project_id = local.prow_project_id diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index dffa2a4fd75..10a77f821b2 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -18,23 +18,32 @@ terraform { required_version = ">= 1.4.4" required_providers { external = { - version = ">= 1.2, < 3.0" + source = "hashicorp/external" + version = ">= 1.2, < 3" } google = { + source = "hashicorp/google" version = ">= 3.19, < 6" } google-beta = { + source = "hashicorp/google-beta" version = ">= 3.19, < 6" } null = { - version = ">= 2.1, < 4.0" + source = "hashicorp/null" + version = ">= 2.1, < 4" } random = { - version = ">= 2.3.1, < 4.0" + source = "hashicorp/random" + version = ">= 2.3.1, < 4" } github = { source = "integrations/github" version = "~> 5.0" } + kubernetes = { + source = "hashicorp/kubernetes" + version = ">= 2.13, < 3" + } } } From b4936a1d3a5658018de8086c1202b98d9ef3c343 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 27 Dec 2023 16:58:04 -0800 Subject: [PATCH 0749/1371] chore(deps): bump ci-triggers for TPG v5 (#2071) --- .../test-org/ci-triggers/.terraform.lock.hcl | 56 +++++++++---------- infra/terraform/test-org/ci-triggers/logs.tf | 2 +- .../terraform/test-org/ci-triggers/secrets.tf | 2 +- .../test-org/ci-triggers/versions.tf | 9 ++- 4 files changed, 38 insertions(+), 31 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl index 26617b320ee..850cd5f3bc8 100644 --- a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl @@ -2,41 +2,41 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "4.46.0" - constraints = ">= 3.53.0, < 5.0.0" + version = "5.10.0" + constraints = ">= 4.46.0, < 6.0.0" hashes = [ - "h1:HSbC3sovuqGBwzlKOAeJEeQl36SiwPkMrEshBkA7Crs=", - "zh:06667e8c975734c0fbfe9cdbc6ee6789f3114e40bb97a8a721ed87f3e5c42dfc", - "zh:0e9829e326095d142ffa394f7189528001b074249b2ec8f98567ada049e35cbf", - "zh:1feceb13f5dfd658bcd94886c495b8064096f58bccb65f8386465803ae67e821", - "zh:404a642769271a290eb600c238f33ecaeb5c6d1354694d0ee6f83030941fde00", - "zh:46923a708123777a383aec56d0e834eae9095e440511f27c8ac5d0dfaf9b937b", - "zh:5f7b32404f70444dbe9e89d4ba0f9599d76f1072da2a52ca207a14e117ba165b", - "zh:a9d3d03c5e9cf904f08906ab13ad5ad8ff3f2271565fda75cd32c6ba528a4ea3", - "zh:aaef3d327fd6c8fbe33c454103ac0bad3e2043ff6bcb6c0aaa0d5974695dc8e4", - "zh:b49ea5676065543c2c28a0f5fef28058ad8fc96894782123fb9c013cd083be98", - "zh:f432cb018a4826b7a61e39f10239ca017a74313e0755b24858f082395e38bf9a", + "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", + "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", + "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", + "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", + "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", + "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", + "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", + "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", + "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", + "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fe5dde2af422510ba2a1388209dc94723ee740b4282323aafa199366705387cc", + "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", + "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.46.0" - constraints = ">= 2.18.0, < 5.0.0" + version = "5.10.0" + constraints = ">= 2.18.0, < 6.0.0" hashes = [ - "h1:GQgp57Wrf3oDVB/nDtBd/VL3/uMTFN5bLPhPLLADGB4=", - "zh:08aa990fd9944061194138ad4f136f5e6b45f331d110d882e4ddb566619eb9d8", - "zh:186b9c7b49ad93a2ab2d8d713429caa8b23dab8d90763c01244205c3455dd813", - "zh:221598948eab9c64e13a778c6be17dd1e9cb2e08a3217072d9759202986c3f09", - "zh:402d386ea907923bbf36568dc481becda2dd0522c5286602dcb716f364f73d91", - "zh:84d70da182503ce312148cc86e110482c88d57041223af00d2ead60fefe851ee", - "zh:92bd8e30f6334988d6e7fedff11b99c68fe0d21bfead6f1cbbfc73acb665c36d", - "zh:a0e5815460c2a1d720955a2abbd6ca6eef450da7a76c52c223203f5d03ca45d7", - "zh:c34c0124f70b86ceb4cf79b93539539286f47175e1a648e37cfb754200cc19b7", - "zh:d00769dbfd1bea46da5ac81a9e3384d0f954ed3f912859b21ed3ea2378c2cb1d", - "zh:dadd937ed05dcc3d521cd6ca04bc9681fd30acbb42265f748e69f5feb0f5b829", - "zh:e4c2d65cf138cc868ae52e3e2cf97e37fbbdbc9c510f1c669fdbcc736256e402", + "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", + "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", + "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", + "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", + "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", + "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", + "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", + "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", + "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", + "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", + "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } diff --git a/infra/terraform/test-org/ci-triggers/logs.tf b/infra/terraform/test-org/ci-triggers/logs.tf index d49d101f40a..9eedfa84391 100644 --- a/infra/terraform/test-org/ci-triggers/logs.tf +++ b/infra/terraform/test-org/ci-triggers/logs.tf @@ -16,7 +16,7 @@ module "filelogs_bucket" { source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket" - version = "~> 4.0" + version = "~> 5.0" name = "${local.project_id}-filelogs" project_id = local.project_id diff --git a/infra/terraform/test-org/ci-triggers/secrets.tf b/infra/terraform/test-org/ci-triggers/secrets.tf index 1e774086635..72399804da2 100644 --- a/infra/terraform/test-org/ci-triggers/secrets.tf +++ b/infra/terraform/test-org/ci-triggers/secrets.tf @@ -19,7 +19,7 @@ resource "google_secret_manager_secret" "tfe_token" { secret_id = "tke-token" replication { - automatic = true + auto {} } } diff --git a/infra/terraform/test-org/ci-triggers/versions.tf b/infra/terraform/test-org/ci-triggers/versions.tf index 272dd0a1b03..30a8eb20698 100644 --- a/infra/terraform/test-org/ci-triggers/versions.tf +++ b/infra/terraform/test-org/ci-triggers/versions.tf @@ -17,6 +17,13 @@ terraform { required_version = ">= 1.4.4" required_providers { - google-beta = ">= 2.18, < 6" + google-beta = { + source = "hashicorp/google-beta" + version = ">= 2.18, < 6" + } + google = { + source = "hashicorp/google" + version = ">= 2.18, < 6" + } } } From 6c59a047280fd65e581e7bf9581b85ada34f7f8b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 28 Dec 2023 09:20:38 -0800 Subject: [PATCH 0750/1371] chore(deps): bump test-cleanup for TPG v5 (#2069) --- .../test-org/test-cleanup/.terraform.lock.hcl | 172 +++++++++--------- .../test-org/test-cleanup/cleanup.tf | 4 +- .../test-org/test-cleanup/project.tf | 2 +- .../test-org/test-cleanup/versions.tf | 11 +- 4 files changed, 95 insertions(+), 94 deletions(-) diff --git a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl index eb0ccceae8b..2bf44d8d28a 100644 --- a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl +++ b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl @@ -2,124 +2,120 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/archive" { - version = "2.2.0" - constraints = ">= 1.3.0, < 3.0.0" + version = "2.4.1" + constraints = ">= 1.2.0, >= 1.3.0, < 3.0.0" hashes = [ - "h1:2K5LQkuWRS2YN1/YoNaHn9MAzjuTX8Gaqy6i8Mbfv8Y=", - "h1:CIWi5G6ob7p2wWoThRQbOB8AbmFlCzp7Ka81hR3cVp0=", - "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", - "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", - "zh:100fc5b3fc01ea463533d7bbfb01cb7113947a969a4ec12e27f5b2be49884d6c", - "zh:55c0d7ddddbd0a46d57c51fcfa9b91f14eed081a45101dbfc7fd9d2278aa1403", - "zh:73a5dd68379119167934c48afa1101b09abad2deb436cd5c446733e705869d6b", - "zh:841fc4ac6dc3479981330974d44ad2341deada8a5ff9e3b1b4510702dfbdbed9", - "zh:91be62c9b41edb137f7f835491183628d484e9d6efa82fcb75cfa538c92791c5", - "zh:acd5f442bd88d67eb948b18dc2ed421c6c3faee62d3a12200e442bfff0aa7d8b", - "zh:ad5720da5524641ad718a565694821be5f61f68f1c3c5d2cfa24426b8e774bef", - "zh:e63f12ea938520b3f83634fc29da28d92eed5cfbc5cc8ca08281a6a9c36cca65", - "zh:f6542918faa115df46474a36aabb4c3899650bea036b5f8a5e296be6f8f25767", + "h1:JgIo+nNySG8svjXevfoTRi0jzgHbLMDrnr55WBeRupw=", + "zh:00240c042740d18d6ba545b211ff7ed5a9e8490d30be3f865e71dba90d7a34cf", + "zh:230c285beafaffd8d60da3446157b95f8fb43b359ba94b09214c1822bf310c3d", + "zh:726672a0e61a1d39695ce5e330aa3e6caa97f2a9438cf8125360e80f4cb52fa5", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:7bc8f4a4fc7059ec01e767246df7937603dbc6ec49cb3eedffe6ecb68dbe9cb4", + "zh:800d898ce8ac96b244746c5a41f4107bd3c883fe6093d9a972a28b138ac02c4e", + "zh:9a8ea216af3840af48c08ef5ed998606c556b15be30d7b42c89a62df54285903", + "zh:b9905d0ac55b61ea78ecf0e6b07d54a9863a9f02e249d0d492e68cfcede0d89f", + "zh:c822495ba01ab7cee66c892f941097971c3be122a6200d556f462a751d446df8", + "zh:e05c31f2f4dca9eaada2726d16d2ffb03d6441b4eb55547b93d62d81383cd0ef", + "zh:ec14c68ca5d881bac73dbbd298f0ca84444001a81d473f51e36c4e29df040983", + "zh:ed32ebccb20b21c112f01d73d138ba5ada28cf8ede175441738a30711c79119a", ] } provider "registry.terraform.io/hashicorp/google" { - version = "4.23.0" - constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 4.78.0, < 6.0.0" hashes = [ - "h1:JyHPoN18hxRGyPu4jVmTepuD7yr0vdHzo84mTOieNZY=", - "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", - "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", - "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", - "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", - "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", - "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", - "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", - "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", - "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", - "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", - "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", + "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", + "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", + "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", + "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", + "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", + "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", + "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", + "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", + "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", + "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.23.0" - constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, ~> 4.11, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, >= 4.11.0, >= 4.28.0, < 6.0.0" hashes = [ - "h1:Bt0rpxFzvegGLqKu0TkkIHylaiW56a51RAPFPWzFjk0=", - "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", - "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", - "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", - "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", - "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", - "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", - "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", - "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", - "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", - "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", - "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", + "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", + "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", + "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", + "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", + "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", + "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", + "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", + "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", + "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", + "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.1.1" + version = "3.2.2" constraints = ">= 2.1.0, < 4.0.0" hashes = [ - "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", - "h1:Pctug/s/2Hg5FJqjYcTM0kPyx3AoYK1MpRWO0T9V2ns=", - "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", - "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", - "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", + "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", + "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", + "zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3", + "zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606", + "zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546", + "zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539", + "zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", - "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", - "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", - "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", - "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", - "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", - "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", - "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", + "zh:913a929070c819e59e94bb37a2a253c228f83921136ff4a7aa1a178c7cce5422", + "zh:aa9015926cd152425dbf86d1abdbc74bfe0e1ba3d26b3db35051d7b9ca9f72ae", + "zh:bb04798b016e1e1d49bcc76d62c53b56c88c63d6f2dfe38821afef17c416a0e1", + "zh:c23084e1b23577de22603cff752e59128d83cfecc2e6819edadd8cf7a10af11e", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.2.0" - constraints = ">= 2.2.0, < 4.0.0" + version = "3.6.0" + constraints = ">= 2.1.0, >= 2.2.0, < 4.0.0" hashes = [ - "h1:YD109FT06s3sFdAnpsTL/cpcSDcI4NPiWvyF89ilACc=", - "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", - "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", - "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", - "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", - "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=", + "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d", + "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211", + "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829", + "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d", + "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", - "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", - "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", - "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", - "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", - "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", - "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17", + "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21", + "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839", + "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0", + "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c", + "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.7.2" + version = "0.10.0" hashes = [ - "h1:NKy1QrNLlP5mKy5Tea6lQSRsVoyydJQKh6WvNTdBF4I=", - "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", - "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", - "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", - "zh:35e4de0437f4fa9c1ad69aaf8136413be2369ea607d78e04bb68dc66a6a520b8", - "zh:369756417a6272e79cad31eb2c82c202f6a4b6e4204a893f656644ba9e149fa2", - "zh:390370f1179d89b33c3a0731691e772d5450a7d59fc66671ec625e201db74aa2", - "zh:3d12ac905259d225c685bc42e5507ed0fbdaa5a09c30dce7c1932d908df857f7", - "zh:75f63e5e1c68e6c5bccba4568c3564e2774eb3a7a19189eb8e2b6e0d58c8f8cc", - "zh:7c22a2078a608e3e0278c4cbc9c483909062ebd1843bddaf8f176346c6d378b1", - "zh:7cfb3c02f78f0060d59c757c4726ab45a962ce4a9cf4833beca704a1020785bd", - "zh:a0325917f47c28a2ed088dedcea0d9520d91b264e63cc667fe4336ac993c0c11", - "zh:c181551d4c0a40b52e236f1755cc340aeca0fb5dcfd08b3b1c393a7667d2f327", + "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", + "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", + "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", + "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", + "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", + "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", + "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", + "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", + "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", + "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", + "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", ] } diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index 633b8f84093..714b9dc96df 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -16,14 +16,14 @@ module "scheduler-app-engine" { source = "terraform-google-modules/project-factory/google//modules/app_engine" - version = "~> 13.0" + version = "~> 14.0" location_id = local.app_location project_id = module.cft-manager-project.project_id } module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 2.5" + version = "~> 3.0" job_schedule = "17 * * * *" max_project_age_in_hours = "6" diff --git a/infra/terraform/test-org/test-cleanup/project.tf b/infra/terraform/test-org/test-cleanup/project.tf index 31e63509a39..d6256c46223 100644 --- a/infra/terraform/test-org/test-cleanup/project.tf +++ b/infra/terraform/test-org/test-cleanup/project.tf @@ -16,7 +16,7 @@ module "cft-manager-project" { source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" + version = "~> 14.0" name = "cft-project-manager" random_project_id = true diff --git a/infra/terraform/test-org/test-cleanup/versions.tf b/infra/terraform/test-org/test-cleanup/versions.tf index 80b10f057d8..bbda7795e22 100644 --- a/infra/terraform/test-org/test-cleanup/versions.tf +++ b/infra/terraform/test-org/test-cleanup/versions.tf @@ -18,19 +18,24 @@ terraform { required_version = ">= 1.4.4" required_providers { archive = { - version = ">= 1.3, < 3.0" + source = "hashicorp/archive" + version = ">= 1.3, < 3" } google = { + source = "hashicorp/google" version = ">= 3.38, < 6" } google-beta = { + source = "hashicorp/google-beta" version = ">= 3.38, < 6" } null = { - version = ">= 2.1, < 4.0" + source = "hashicorp/null" + version = ">= 2.1, < 4" } random = { - version = ">= 2.2, < 4.0" + source = "hashicorp/random" + version = ">= 2.2, < 4" } } } From c23f66bd096b5da5397163399524246587416424 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 28 Dec 2023 12:01:02 -0800 Subject: [PATCH 0751/1371] chore(deps): bump dev-project-cleanup for TPG v5 (#2070) --- .../dev-project-cleanup/.terraform.lock.hcl | 167 +++++++++--------- .../dev-org/dev-project-cleanup/cleanup.tf | 4 +- .../dev-org/dev-project-cleanup/project.tf | 2 +- .../dev-org/dev-project-cleanup/versions.tf | 11 +- 4 files changed, 96 insertions(+), 88 deletions(-) diff --git a/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl b/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl index 4ce8886e682..91978ab4d71 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl +++ b/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl @@ -2,118 +2,121 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/archive" { - version = "2.2.0" - constraints = ">= 1.3.0, < 3.0.0" + version = "2.4.1" + constraints = ">= 1.2.0, >= 1.3.0, < 3.0.0" hashes = [ - "h1:CIWi5G6ob7p2wWoThRQbOB8AbmFlCzp7Ka81hR3cVp0=", - "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", - "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", - "zh:100fc5b3fc01ea463533d7bbfb01cb7113947a969a4ec12e27f5b2be49884d6c", - "zh:55c0d7ddddbd0a46d57c51fcfa9b91f14eed081a45101dbfc7fd9d2278aa1403", - "zh:73a5dd68379119167934c48afa1101b09abad2deb436cd5c446733e705869d6b", - "zh:841fc4ac6dc3479981330974d44ad2341deada8a5ff9e3b1b4510702dfbdbed9", - "zh:91be62c9b41edb137f7f835491183628d484e9d6efa82fcb75cfa538c92791c5", - "zh:acd5f442bd88d67eb948b18dc2ed421c6c3faee62d3a12200e442bfff0aa7d8b", - "zh:ad5720da5524641ad718a565694821be5f61f68f1c3c5d2cfa24426b8e774bef", - "zh:e63f12ea938520b3f83634fc29da28d92eed5cfbc5cc8ca08281a6a9c36cca65", - "zh:f6542918faa115df46474a36aabb4c3899650bea036b5f8a5e296be6f8f25767", + "h1:JgIo+nNySG8svjXevfoTRi0jzgHbLMDrnr55WBeRupw=", + "zh:00240c042740d18d6ba545b211ff7ed5a9e8490d30be3f865e71dba90d7a34cf", + "zh:230c285beafaffd8d60da3446157b95f8fb43b359ba94b09214c1822bf310c3d", + "zh:726672a0e61a1d39695ce5e330aa3e6caa97f2a9438cf8125360e80f4cb52fa5", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:7bc8f4a4fc7059ec01e767246df7937603dbc6ec49cb3eedffe6ecb68dbe9cb4", + "zh:800d898ce8ac96b244746c5a41f4107bd3c883fe6093d9a972a28b138ac02c4e", + "zh:9a8ea216af3840af48c08ef5ed998606c556b15be30d7b42c89a62df54285903", + "zh:b9905d0ac55b61ea78ecf0e6b07d54a9863a9f02e249d0d492e68cfcede0d89f", + "zh:c822495ba01ab7cee66c892f941097971c3be122a6200d556f462a751d446df8", + "zh:e05c31f2f4dca9eaada2726d16d2ffb03d6441b4eb55547b93d62d81383cd0ef", + "zh:ec14c68ca5d881bac73dbbd298f0ca84444001a81d473f51e36c4e29df040983", + "zh:ed32ebccb20b21c112f01d73d138ba5ada28cf8ede175441738a30711c79119a", ] } provider "registry.terraform.io/hashicorp/google" { - version = "4.23.0" - constraints = ">= 3.35.0, >= 3.38.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, ~> 4.5, ~> 4.11, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.35.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 4.78.0, < 6.0.0" hashes = [ - "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", - "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", - "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", - "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", - "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", - "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", - "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", - "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", - "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", - "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", - "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", + "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", + "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", + "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", + "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", + "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", + "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", + "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", + "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", + "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", + "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.23.0" - constraints = ">= 3.1.0, >= 3.35.0, >= 3.43.0, >= 3.50.0, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.35.0, >= 3.43.0, >= 3.50.0, >= 4.11.0, >= 4.28.0, < 6.0.0" hashes = [ - "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", - "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", - "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", - "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", - "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", - "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", - "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", - "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", - "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", - "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", - "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", + "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", + "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", + "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", + "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", + "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", + "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", + "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", + "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", + "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", + "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.1.1" + version = "3.2.2" constraints = ">= 2.1.0, < 4.0.0" hashes = [ - "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", - "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", - "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", - "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", + "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", + "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", + "zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3", + "zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606", + "zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546", + "zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539", + "zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", - "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", - "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", - "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", - "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", - "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", - "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", - "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", + "zh:913a929070c819e59e94bb37a2a253c228f83921136ff4a7aa1a178c7cce5422", + "zh:aa9015926cd152425dbf86d1abdbc74bfe0e1ba3d26b3db35051d7b9ca9f72ae", + "zh:bb04798b016e1e1d49bcc76d62c53b56c88c63d6f2dfe38821afef17c416a0e1", + "zh:c23084e1b23577de22603cff752e59128d83cfecc2e6819edadd8cf7a10af11e", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.2.0" - constraints = ">= 2.2.0, < 4.0.0" + version = "3.6.0" + constraints = ">= 2.1.0, >= 2.2.0, < 4.0.0" hashes = [ - "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", - "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", - "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", - "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", - "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=", + "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d", + "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211", + "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829", + "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d", + "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", - "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", - "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", - "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", - "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", - "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", - "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17", + "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21", + "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839", + "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0", + "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c", + "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.7.2" + version = "0.10.0" + constraints = ">= 0.5.0" hashes = [ - "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", - "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", - "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", - "zh:35e4de0437f4fa9c1ad69aaf8136413be2369ea607d78e04bb68dc66a6a520b8", - "zh:369756417a6272e79cad31eb2c82c202f6a4b6e4204a893f656644ba9e149fa2", - "zh:390370f1179d89b33c3a0731691e772d5450a7d59fc66671ec625e201db74aa2", - "zh:3d12ac905259d225c685bc42e5507ed0fbdaa5a09c30dce7c1932d908df857f7", - "zh:75f63e5e1c68e6c5bccba4568c3564e2774eb3a7a19189eb8e2b6e0d58c8f8cc", - "zh:7c22a2078a608e3e0278c4cbc9c483909062ebd1843bddaf8f176346c6d378b1", - "zh:7cfb3c02f78f0060d59c757c4726ab45a962ce4a9cf4833beca704a1020785bd", - "zh:a0325917f47c28a2ed088dedcea0d9520d91b264e63cc667fe4336ac993c0c11", - "zh:c181551d4c0a40b52e236f1755cc340aeca0fb5dcfd08b3b1c393a7667d2f327", + "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", + "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", + "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", + "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", + "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", + "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", + "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", + "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", + "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", + "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", + "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", ] } diff --git a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf index b36819258a9..23d056f9c92 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf @@ -16,14 +16,14 @@ module "app-engine" { source = "terraform-google-modules/project-factory/google//modules/app_engine" - version = "~> 13.0" + version = "~> 14.0" location_id = local.app_location project_id = module.project.project_id } module "projects_cleanup" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 2.4" + version = "~> 3.0" job_schedule = "17 * * * *" max_project_age_in_hours = "24" diff --git a/infra/terraform/dev-org/dev-project-cleanup/project.tf b/infra/terraform/dev-org/dev-project-cleanup/project.tf index 0846adb4480..b9b02020ed3 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/project.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/project.tf @@ -21,7 +21,7 @@ resource "google_folder" "cft-dev-management" { module "project" { source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" + version = "~> 14.0" name = "cft-project-manager" random_project_id = true diff --git a/infra/terraform/dev-org/dev-project-cleanup/versions.tf b/infra/terraform/dev-org/dev-project-cleanup/versions.tf index 82e9e303dce..5cd982066fc 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/versions.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/versions.tf @@ -18,19 +18,24 @@ terraform { required_version = ">= 1.4.4" required_providers { archive = { - version = ">= 1.3, < 3.0" + source = "hashicorp/archive" + version = ">= 1.3, < 3" } google = { + source = "hashicorp/google" version = ">= 3.35, < 6" } google-beta = { + source = "hashicorp/google-beta" version = ">= 3.35, < 6" } null = { - version = ">= 2.1, < 4.0" + source = "hashicorp/null" + version = ">= 2.1, < 4" } random = { - version = ">= 2.2, < 4.0" + source = "hashicorp/random" + version = ">= 2.2, < 4" } } } From 285d8ad06a8d7f9f4dfd8dd9a43bad5104c97ec6 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 28 Dec 2023 13:51:21 -0800 Subject: [PATCH 0752/1371] chore(deps): bump tf-validator for TPG v5 (#2068) --- .../test-org/tf-validator/.terraform.lock.hcl | 136 +++++++++--------- .../test-org/tf-validator/project.tf | 2 +- .../test-org/tf-validator/versions.tf | 3 +- 3 files changed, 72 insertions(+), 69 deletions(-) diff --git a/infra/terraform/test-org/tf-validator/.terraform.lock.hcl b/infra/terraform/test-org/tf-validator/.terraform.lock.hcl index 2f695c4800d..c732cd04735 100644 --- a/infra/terraform/test-org/tf-validator/.terraform.lock.hcl +++ b/infra/terraform/test-org/tf-validator/.terraform.lock.hcl @@ -2,99 +2,101 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "4.23.0" - constraints = ">= 3.43.0, >= 3.50.0, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.43.0, >= 3.50.0, >= 4.28.0, < 6.0.0" hashes = [ - "h1:jy/SN60OhkytGOJUqCrV1lcDnuC/wKjtPJEmDUuoKYo=", - "zh:0827aed99587324e0f3f26f374fdbbd807ebff028f5fef02af9f88fedea07743", - "zh:1881533c70e995662241fbc33439202237c9570ae0c5e96bee0660e2f05c8e83", - "zh:195cb52ad2195c56926d6354c1ae8179a0ca63601da5aac3e9ac31537a8cffdd", - "zh:26bfff740b6ce167b6369dd99eece5a4f540b1efa13dfcba13d7b262b790873d", - "zh:5bd28272c02d4f4031d68f34c2d845167760b84b70172055cf9725315f2d0f8c", - "zh:6fda7aa01758175c025800bd29cd5c5904278c18eb225059d2d9655ce763c202", - "zh:7003b6bf8074e37b919ebcdc1dcfacba24b5244cb959dd5ea4ab2e32394da466", - "zh:9040f7bf02c473cbf87497b07bc28b1e6e137c1b5f28f3d959387f4738884b36", - "zh:b6d7752e332f7d48851e48d703254d0c2a0ee44d5ee289db89a04943c5c6c51d", - "zh:f51e41a41c358d953d08977cef118c1b192ce8968ffe4d063748903218d3b880", + "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", + "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", + "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", + "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", + "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", + "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", + "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", + "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", + "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", + "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc502588ca54660f1701d786e4edb4aadb0e51078d9c1bd33f2a8b7b6373c7f0", + "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", + "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "4.23.0" - constraints = ">= 3.1.0, >= 3.43.0, >= 3.50.0, < 5.0.0" + version = "5.10.0" + constraints = ">= 3.43.0, >= 3.50.0, >= 4.11.0, >= 4.28.0, < 6.0.0" hashes = [ - "h1:n9c2BVqJe1mIHy1EAFGxXO55czHF9JzBamxawR9HV10=", - "zh:380d218ce62878a65a16bc89a68b8584f57999a21179136869f2165f0b755a64", - "zh:5e75e82ac86081bc8fdde941084892891d16167583a0ef62916a8733c8cf4fe7", - "zh:653b5744c98af4083e0c4280c18f5578e4fab2a6a2cd9055dfce5aef845c887d", - "zh:9216fdc2add7a52c51017bb3f8c330a9931bca3dc3ed62aa0b914e9bcd343f66", - "zh:af79831805050098ea61a7c1ed59163c28ffb1011fd5cd89a70ed72692e80921", - "zh:b4f344c5de48de8f85c26cc5b520f8a88ac4cfa3ad0606a1990feaaa23b663ac", - "zh:c75d04d9f648374d033bac3d2391ba6e33e96712d66673af2ce057bc8d242e34", - "zh:cbc2e6a6afe2fcbda887b837b3102573ea61707f8e43fa05b276c7c4e42d262d", - "zh:dafe7e59a9f8ab2360ba864c7eed3014c3aa459740059b80f1f27ecbf72d67fb", - "zh:e02070b87dcd70a5bfc6415f97916cbd9cba961857609dd391fd5ca753495a4b", + "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", + "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", + "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", + "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", + "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", + "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", + "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", + "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", + "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", + "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", + "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fc8a452eb6ca39f1e62c9202de6e263c93c41a0cf5df0ead12b3965f07a2cacd", + "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.1.1" + version = "3.2.2" constraints = ">= 2.1.0" hashes = [ - "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", - "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", - "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", - "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", + "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", + "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", + "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", + "zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3", + "zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606", + "zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546", + "zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539", + "zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:8fdd792a626413502e68c195f2097352bdc6a0df694f7df350ed784741eb587e", - "zh:976bbaf268cb497400fd5b3c774d218f3933271864345f18deebe4dcbfcd6afa", - "zh:b21b78ca581f98f4cdb7a366b03ae9db23a73dfa7df12c533d7c19b68e9e72e5", - "zh:b7fc0c1615dbdb1d6fd4abb9c7dc7da286631f7ca2299fb9cd4664258ccfbff4", - "zh:d1efc942b2c44345e0c29bc976594cb7278c38cfb8897b344669eafbc3cddf46", - "zh:e356c245b3cd9d4789bab010893566acace682d7db877e52d40fc4ca34a50924", - "zh:ea98802ba92fcfa8cf12cbce2e9e7ebe999afbf8ed47fa45fc847a098d89468b", - "zh:eff8872458806499889f6927b5d954560f3d74bf20b6043409edf94d26cd906f", + "zh:913a929070c819e59e94bb37a2a253c228f83921136ff4a7aa1a178c7cce5422", + "zh:aa9015926cd152425dbf86d1abdbc74bfe0e1ba3d26b3db35051d7b9ca9f72ae", + "zh:bb04798b016e1e1d49bcc76d62c53b56c88c63d6f2dfe38821afef17c416a0e1", + "zh:c23084e1b23577de22603cff752e59128d83cfecc2e6819edadd8cf7a10af11e", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.2.0" + version = "3.6.0" constraints = ">= 2.2.0" hashes = [ - "h1:eeUh6cJ6wKLLuo4q9uQ0CA1Zvfqya4Wn1LecLCN8KKs=", - "zh:2960977ce9a7d6a7d3e934e75ec5814735626f95c186ad95a9102344a1a38ac1", - "zh:2fd012abfabe7076f3f2f402eeef4970e20574d20ffec57c162b02b6e848c32f", - "zh:4cd3234671cf01c913023418b227eb78b0659f2cd2e0b387be1f0bb607d29889", - "zh:52e695b4fa3fae735ffc901edff8183745f980923510a744db7616e8f10dc499", + "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=", + "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d", + "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211", + "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829", + "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d", + "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:848b4a294e5ba15192ee4bfd199c07f60a437d7572efcd2d89db036e1ebc0e6e", - "zh:9d49aa432a05748a9527e95448cebee1238c87c97c7e8dec694bfd709683f9c7", - "zh:b4ad4cf289d3f7408649b74b8639918833613f2a1f3cf51b51f4b2fdaa412dd2", - "zh:c1544c4b416096fb8d8dbf84c4488584a2844a30dd533b957e9e9e60a165f24e", - "zh:dc737d6b4591cad8c9a1d0b347e587e846d8d901789b29b4dd401b6cdf82c017", - "zh:f5645fd39f749dbbf847cbdc87ba0dbd141143f12917a6a8904faf8a9b64111e", - "zh:fdedf610e0d020878a8f1fedda8105e0c33a7e23c4792fca54460685552de308", + "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17", + "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21", + "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839", + "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0", + "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c", + "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.7.2" + version = "0.10.0" + constraints = ">= 0.5.0" hashes = [ - "h1:YYLAfhMFP5nhV2iZPslqsLkZN+6sZo7gMJW7pLcLfM8=", - "zh:0bbe0158c2a9e3f5be911b7e94477586110c51746bb13d102054f22754565bda", - "zh:3250af7fd49b8aaf2ccc895588af05197d886e38b727e3ba33bcbb8cc96ad34d", - "zh:35e4de0437f4fa9c1ad69aaf8136413be2369ea607d78e04bb68dc66a6a520b8", - "zh:369756417a6272e79cad31eb2c82c202f6a4b6e4204a893f656644ba9e149fa2", - "zh:390370f1179d89b33c3a0731691e772d5450a7d59fc66671ec625e201db74aa2", - "zh:3d12ac905259d225c685bc42e5507ed0fbdaa5a09c30dce7c1932d908df857f7", - "zh:75f63e5e1c68e6c5bccba4568c3564e2774eb3a7a19189eb8e2b6e0d58c8f8cc", - "zh:7c22a2078a608e3e0278c4cbc9c483909062ebd1843bddaf8f176346c6d378b1", - "zh:7cfb3c02f78f0060d59c757c4726ab45a962ce4a9cf4833beca704a1020785bd", - "zh:a0325917f47c28a2ed088dedcea0d9520d91b264e63cc667fe4336ac993c0c11", - "zh:c181551d4c0a40b52e236f1755cc340aeca0fb5dcfd08b3b1c393a7667d2f327", + "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", + "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", + "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", + "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", + "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", + "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", + "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", + "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", + "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", + "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", + "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", ] } diff --git a/infra/terraform/test-org/tf-validator/project.tf b/infra/terraform/test-org/tf-validator/project.tf index c36e8127ee0..716c349d606 100644 --- a/infra/terraform/test-org/tf-validator/project.tf +++ b/infra/terraform/test-org/tf-validator/project.tf @@ -19,7 +19,7 @@ // there are no reason to create an ephemeral test project + service account each build. module "terraform_validator_test_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 13.0" + version = "~> 14.0" name = local.terraform_validator_project_name random_project_id = true diff --git a/infra/terraform/test-org/tf-validator/versions.tf b/infra/terraform/test-org/tf-validator/versions.tf index df04f06bedd..63f76d4ed10 100644 --- a/infra/terraform/test-org/tf-validator/versions.tf +++ b/infra/terraform/test-org/tf-validator/versions.tf @@ -18,7 +18,8 @@ terraform { required_version = ">= 1.4.4" required_providers { google = { - source = "hashicorp/google" + source = "hashicorp/google" + version = "< 6" } } } From 4bddc66f34ba9692f144e0a889b5ca0a25b8b7f4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 2 Jan 2024 17:39:14 +0100 Subject: [PATCH 0753/1371] chore(deps): update github/codeql-action action to v3.22.12 (#2072) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 78ccf055e7e..830ca5ac1ef 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 + uses: github/codeql-action/init@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 + uses: github/codeql-action/autobuild@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 + uses: github/codeql-action/analyze@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2e8d3700fbd..30781b1df19 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 + uses: github/codeql-action/upload-sarif@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 with: sarif_file: results.sarif From c49c5c5ebc2a82bf9cdf358562ea02e7fd7852ee Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 3 Jan 2024 12:31:48 -0800 Subject: [PATCH 0754/1371] chore: correct stale pr exemptions (#2074) --- infra/terraform/test-org/github/resources/stale.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/github/resources/stale.yml b/infra/terraform/test-org/github/resources/stale.yml index 1f92bf9a70d..f56aead563c 100644 --- a/infra/terraform/test-org/github/resources/stale.yml +++ b/infra/terraform/test-org/github/resources/stale.yml @@ -30,4 +30,5 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' stale-pr-message: 'This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' - exempt-issue-labels: triaged,dependencies + exempt-issue-labels: 'triaged' + exempt-pr-labels: 'dependencies,autorelease: pending' From 1b5665eaf1df9720a0213ca4b5f74bf379432067 Mon Sep 17 00:00:00 2001 From: Ray Zhang <141791707+rzy-goog@users.noreply.github.com> Date: Fri, 5 Jan 2024 09:23:23 -0800 Subject: [PATCH 0755/1371] fix: omit null defaultValue in bpmetadata (#2048) Co-authored-by: Andrew Peabody Co-authored-by: Awais Malik --- cli/Makefile | 2 +- cli/bpmetadata/int-test/goldens/golden-metadata.yaml | 2 -- cli/bpmetadata/tfconfig.go | 3 +++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index f63da4902ea..0b9ddcce304 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.13 +VERSION=v1.2.14 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml index 5abd4a21311..814422849c2 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -151,7 +151,6 @@ spec: - name: names description: Bucket name suffixes. varType: list(string) - defaultValue: null required: true - name: prefix description: Prefix used to generate the bucket name. @@ -160,7 +159,6 @@ spec: - name: project_id description: Bucket project id. varType: string - defaultValue: null required: true - name: public_access_prevention description: Prevents public access to a bucket. Acceptable values are inherited or enforced. If inherited, the bucket uses public access prevention, only if the bucket is subject to the public access prevention organization policy constraint. diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index b22bd1a1fe5..ac604abcc13 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -231,6 +231,9 @@ func getBlueprintVariable(modVar *tfconfig.Variable) *BlueprintVariable { Required: modVar.Required, VarType: modVar.Type, } + if modVar.Default == nil { + return v + } vl, err := structpb.NewValue(modVar.Default) if err == nil { From 45ca36a9c9974ee10f5a177cfbdfb75d1c730168 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 5 Jan 2024 21:27:29 -0600 Subject: [PATCH 0756/1371] chore: Update Tools to 1.18.3 (#2058) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 404455c2bb2..b4c0a35c46b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.6.6 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 458.0.0 +CLOUD_SDK_VERSION := 458.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.54.9 +TERRAGRUNT_VERSION := 0.54.12 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -35,11 +35,11 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.12 +CFT_CLI_VERSION := 1.2.14 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.12 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.49.0 +TFLINT_VERSION := 0.50.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.17.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 3a015c166ed27c9a53ee743ae3d44543ae3b9f12 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 08:53:17 -0800 Subject: [PATCH 0757/1371] fix(deps): bump github.com/cloudflare/circl from 1.3.3 to 1.3.7 in /infra/module-swapper (#2077) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/module-swapper/go.mod | 12 +++++++++--- infra/module-swapper/go.sum | 17 ++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 19d052de16b..a54bb569266 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -3,24 +3,29 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swap go 1.21 require ( + github.com/chainguard-dev/git-urls v1.0.2 github.com/go-git/go-git/v5 v5.11.0 + github.com/google/go-cmp v0.6.0 + github.com/hashicorp/hcl/v2 v2.19.1 github.com/pmezard/go-difflib v1.0.0 + github.com/zclconf/go-cty v1.14.1 ) require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect - github.com/chainguard-dev/git-urls v1.0.2 // indirect - github.com/cloudflare/circl v1.3.3 // indirect + github.com/agext/levenshtein v1.2.1 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/cloudflare/circl v1.3.7 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/go-cmp v0.6.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/skeema/knownhosts v1.2.1 // indirect @@ -29,6 +34,7 @@ require ( golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.13.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index ad486d7b876..7d109819044 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -5,15 +5,20 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= +github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/chainguard-dev/git-urls v1.0.2 h1:pSpT7ifrpc5X55n4aTTm7FFUE+ZQHKiqpiwNkJrVcKQ= github.com/chainguard-dev/git-urls v1.0.2/go.mod h1:rbGgj10OS7UgZlbzdUQIQpT0k/D4+An04HJY7Ol+Y/o= -github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -33,10 +38,14 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= +github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -48,6 +57,10 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= @@ -71,6 +84,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= +github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= From d3724067af3aad73fb0d486ca890042c86240e1d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 08:58:10 -0800 Subject: [PATCH 0758/1371] chore(master): release module-swapper 0.4.0 (#2059) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 796e99b308b..a4a8f32160f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.11.1", - "infra/module-swapper": "0.3.1" + "infra/module-swapper": "0.4.0" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index e3ff10a98e4..1081b916241 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.4.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.3.1...infra/module-swapper/v0.4.0) (2024-01-08) + + +### Features + +* module swapper hcl source targeting ([#2056](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2056)) ([e691715](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e691715314f3f3d5a2cf10103f81f9ac7a80a3f1)) + + +### Bug Fixes + +* **deps:** bump github.com/cloudflare/circl from 1.3.3 to 1.3.7 in /infra/module-swapper ([#2077](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2077)) ([3a015c1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3a015c166ed27c9a53ee743ae3d44543ae3b9f12)) + ## [0.3.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.3.0...infra/module-swapper/v0.3.1) (2023-12-19) From de60e08af3a2056ae6675d488477d5fd4b8dad48 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 8 Jan 2024 11:43:26 -0600 Subject: [PATCH 0759/1371] chore: Update Tools to 1.18.4 (#2078) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index b4c0a35c46b..b9573c729f9 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -39,11 +39,11 @@ CFT_CLI_VERSION := 1.2.14 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.12 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.50.0 +TFLINT_VERSION := 0.50.1 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.3.1 +MODULE_SWAPPER_VERSION := 0.4.0 # For developer-tools-krm GOLANGCI_VERSION := 1.55.2 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.17.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 6adf22113e710309df8d12f19ea6f6164edec43c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 9 Jan 2024 23:18:37 +0100 Subject: [PATCH 0760/1371] chore(deps): update google-github-actions/auth action to v2.0.1 (#2079) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index df94aaf2163..e24b2724771 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@67e9c72af6e0492df856527b474995862b7b6591' # v2.0.0 + uses: 'google-github-actions/auth@f6de81663f7788d05bd15bcce18f0e57f23f0846' # v2.0.1 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 25a03acab4b..de697bdbdf2 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@67e9c72af6e0492df856527b474995862b7b6591' # v2.0.0 + uses: 'google-github-actions/auth@f6de81663f7788d05bd15bcce18f0e57f23f0846' # v2.0.1 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From 9d5324f4948343507e0ec19f2ad4148218c8aefe Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 9 Jan 2024 23:21:27 +0100 Subject: [PATCH 0761/1371] chore(deps): update github/codeql-action action to v3.23.0 (#2081) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 830ca5ac1ef..35acbff7bc4 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 + uses: github/codeql-action/init@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 + uses: github/codeql-action/autobuild@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 + uses: github/codeql-action/analyze@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 30781b1df19..0e460343d63 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 + uses: github/codeql-action/upload-sarif@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 with: sarif_file: results.sarif From 4bd9813599ef1f997e645afebc80ba9f06f70643 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 9 Jan 2024 23:39:55 +0100 Subject: [PATCH 0762/1371] chore(deps): update go modules (#2082) --- infra/utils/fbf/go.mod | 18 +++++------ infra/utils/fbf/go.sum | 70 +++++++++++++++++++++++++----------------- 2 files changed, 50 insertions(+), 38 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index d4c4e2bde91..e8eabbe747b 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,9 +4,9 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.4.9 + github.com/jedib0t/go-pretty/v6 v6.5.2 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.154.0 + google.golang.org/api v0.155.0 ) require ( @@ -20,12 +20,12 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.4.0 // indirect + github.com/google/uuid v1.5.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect @@ -36,12 +36,12 @@ require ( golang.org/x/crypto v0.17.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/oauth2 v0.15.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/sys v0.16.0 // indirect + golang.org/x/term v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect - google.golang.org/grpc v1.59.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/grpc v1.60.1 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index f912497d06b..9eb69885237 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -31,7 +31,6 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -41,6 +40,7 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -55,23 +55,21 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= +github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/jedib0t/go-pretty/v6 v6.4.9 h1:vZ6bjGg2eBSrJn365qlxGcaWu09Id+LHtrfDWlB2Usc= -github.com/jedib0t/go-pretty/v6 v6.4.9/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/jedib0t/go-pretty/v6 v6.5.2 h1:1zphkAo77tdoCkdqIYsMHoXmEGTnTy3GZ6Mn+NyIro0= +github.com/jedib0t/go-pretty/v6 v6.5.2/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -82,11 +80,11 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 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/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= @@ -99,19 +97,23 @@ go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8 go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -120,22 +122,29 @@ golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCA 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-20190423024810-112230192c58/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.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20210615035016-665e8c7367d1/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-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +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.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -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.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -143,29 +152,32 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.154.0 h1:X7QkVKZBskztmpPKWQXgjJRPA2dJYrL6r+sYPRLj050= -google.golang.org/api v0.154.0/go.mod h1:qhSMkM85hgqiokIYsrRyKxrjfBeIhgl4Z2JmeRkYylc= +google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= +google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= 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.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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= +google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3 h1:EWIeHfGuUf00zrVZGEgYFxok7plSAXBGcH7NNdMAWvA= +google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= +google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= 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= From da6b03f3e6eaabb8dbab8b21236cf1ffaffb8cd7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 10 Jan 2024 01:42:56 +0100 Subject: [PATCH 0763/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.46.9 (#2080) --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index be5f930798a..ba52a44efc7 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.46.8 + github.com/gruntwork-io/terratest v0.46.9 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 @@ -86,7 +86,7 @@ require ( golang.org/x/crypto v0.17.0 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/sync v0.3.0 // indirect + golang.org/x/sync v0.4.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/term v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index d2044c8d367..a9cad29e1c7 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -374,8 +374,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.8 h1:rgK7z6Dy/eMGFaclKR0WVG9Z54tR+Ehl7S09+8Y25j0= -github.com/gruntwork-io/terratest v0.46.8/go.mod h1:6MxfmOFQQEpQZjpuWRwuAK8qm836hYgAOCzSIZIWTmg= +github.com/gruntwork-io/terratest v0.46.9 h1:2K0503TC8bhz1SQTlw6vX8SjexztXmCp3WvWxE6g22c= +github.com/gruntwork-io/terratest v0.46.9/go.mod h1:DVZG/s7eP1u3KOQJJfE6n7FDriMWpDvnj85XIlZMEM8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -475,8 +475,8 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +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/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -669,8 +669,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ 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.0.0-20220929204114-8fcdb60fdcc0/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= From f03a524fe338e9337ef3e6d87be6caf83663d132 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 10 Jan 2024 22:53:55 -0800 Subject: [PATCH 0764/1371] chore: renovate.json typo (#2087) --- .pre-commit-config.yaml | 2 +- infra/terraform/test-org/github/resources/renovate.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e88e282ba36..45662c584eb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,7 +9,7 @@ exclude: | )$ repos: - repo: https://github.com/renovatebot/pre-commit-hooks - rev: 37.89.7 + rev: 37.128.3 hooks: - id: renovate-config-validator - repo: https://github.com/pre-commit/pre-commit-hooks diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index f10c05ddae9..bc412c9a7b1 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -41,7 +41,7 @@ }, { "matchManagers": ["regex", "gomod"], - "groupName": "GO and Dev-Tools", + "groupName": "GO and Dev-Tools" }, { "matchDepNames": ["google", "google-beta"], From d6ecb036df8404155d5e62ee5352f638ef1dc630 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 11 Jan 2024 12:04:12 -0600 Subject: [PATCH 0765/1371] feat: add module swapper to lint script (#2088) Co-authored-by: Andrew Peabody --- .../build/scripts/test_lint.sh | 77 +++++-------------- 1 file changed, 18 insertions(+), 59 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/test_lint.sh b/infra/build/developer-tools/build/scripts/test_lint.sh index d98bfa32395..9a6d8af2f97 100755 --- a/infra/build/developer-tools/build/scripts/test_lint.sh +++ b/infra/build/developer-tools/build/scripts/test_lint.sh @@ -1,5 +1,5 @@ #! /bin/bash -# Copyright 2019 Google LLC +# Copyright 2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,21 +25,8 @@ source /usr/local/bin/task_helper_functions.sh set +e # constants -MARKDOWN=0 -MARKDOWN_STR="" -CONTRIBUTING_GUIDE="" -# shellcheck disable=SC2089,SC2016 # Quotes/backslashes will be treated literally, expressions don't expand -messages='{ - "check_generate_modules": "The modules need to be regenerated. Please run `make_build`.", - "check_documentation": "The documentation needs to be regenerated. Please run `make generate_docs`.", - "check_whitespace": "Failed whitespace check. More details below.", - "check_shell": "Failed shell check. More info on running shellcheck locally [here](https://www.shellcheck.net).", - "check_headers": "All files need a license header. Please make sure all your files include the appropriate header. A helper tool available [here](https://github.com/google/addlicense).", - "check_python": "Failed flake8 Python lint check.", - "check_tflint": "Failed TFlint check. More details below.", - "check_terraform": "Failed Terraform check. More details below." - "check_metadata": "Failed metadata validation check. More details below." -}' +# Store working dir as module-swapper needs to be executed in this dir. +CWD="${PWD}" rval=0 failed_tests=() tests=( @@ -54,55 +41,27 @@ tests=( check_metadata ) -# parse args -for arg in "$@" -do - case $arg in - -m|--markdown) - MARKDOWN=1 - shift - ;; - -c=*|--contrib-guide=*) - CONTRIBUTING_GUIDE="${arg#*=}" - shift - ;; - *) # end argument parsing - shift - ;; - esac -done +if [[ -z "${DISABLE_MODULE_SWAPPER:-}" ]]; then + module-swapper +fi + +function restore { + cd "${CWD}" + module-swapper -restore >/dev/null 2>&1 + exit 1 +} +trap restore INT for test in "${tests[@]}"; do - # if not in markdown mode, pipe test output to stdout tty - # nested if condition is a workaround for test[[]] not echoing some outputs from check_* tests even with subshell - if [[ $MARKDOWN -eq 0 ]]; then - if ! "${test}"; then - failed_tests+=("${test}") - ((rval++)) - fi - # if control reaches here - in markdown mode, pipe test stderr to stdout for capture - elif ! output=$(${test} 2>&1); then - # add test name to list of failed_tests + if ! "${test}"; then failed_tests+=("${test}") ((rval++)) - # clean output color, sqash multiple empty blank lines - output=$(echo "$output" | sed -r "s/\x1b\[[0-9;]*m/\n/g" | tr -s '\n') - # try to get a helpful error message, otherwise unknown - error_help_message=$(echo "$messages" | jq --arg check_name "$test" -r '.[$check_name] // "🦖 An unknown error has occurred" ') - #construct markdown body - MARKDOWN_STR+="- ⚠️${test}\n ${error_help_message} \n \`\`\`bash \n${output}\n \`\`\` \n" fi done +module-swapper -restore >/dev/null 2>&1 -# if any tests have failed if [[ "${#failed_tests[@]}" -ne 0 ]]; then - # echo output in markdown - if [[ $MARKDOWN -eq 1 ]]; then - header="Thanks for the PR! 🚀\nUnfortunately it looks like some of our CI checks failed. See the [Contributing Guide](${CONTRIBUTING_GUIDE}) for details.\n" - echo -e "${header}${MARKDOWN_STR}" - else - # shellcheck disable=SC2145 # Output all elements of the array - echo "Error: The following tests have failed: ${failed_tests[@]}" - exit "${rval}" - fi + # shellcheck disable=SC2145 # Output all elements of the array + echo "Error: The following tests have failed: ${failed_tests[@]}" + exit "${rval}" fi From 5216ae49e558e5a2c64a97b654e49d4b9b575acc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 Jan 2024 00:56:34 +0100 Subject: [PATCH 0766/1371] chore(deps): update module google.golang.org/api to v0.156.0 (#2089) --- infra/utils/fbf/go.mod | 12 ++++++------ infra/utils/fbf/go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index e8eabbe747b..5309d2a34ff 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.2 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.155.0 + google.golang.org/api v0.156.0 ) require ( @@ -33,15 +33,15 @@ require ( go.opentelemetry.io/otel v1.21.0 // indirect go.opentelemetry.io/otel/metric v1.21.0 // indirect go.opentelemetry.io/otel/trace v1.21.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/oauth2 v0.15.0 // indirect + golang.org/x/crypto v0.18.0 // indirect + golang.org/x/net v0.20.0 // indirect + golang.org/x/oauth2 v0.16.0 // indirect golang.org/x/sys v0.16.0 // indirect golang.org/x/term v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect google.golang.org/grpc v1.60.1 // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 9eb69885237..fba6815a525 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -98,8 +98,8 @@ go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -114,17 +114,17 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL 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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= -golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= 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-20190423024810-112230192c58/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.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= -google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= +google.golang.org/api v0.156.0 h1:yloYcGbBtVYjLKQe4enCunxvwn3s2w/XPrrhVf6MsvQ= +google.golang.org/api v0.156.0/go.mod h1:bUSmn4KFO0Q+69zo9CNIDp4Psi6BqM0np0CbzKRSiSY= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -165,12 +165,12 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= -google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3 h1:EWIeHfGuUf00zrVZGEgYFxok7plSAXBGcH7NNdMAWvA= -google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= +google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 h1:YJ5pD9rF8o9Qtta0Cmy9rdBwkSjrTCT6XTiUQVOtIos= +google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY= +google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 h1:s1w3X6gQxwrLEpxnLd/qXTVLgQE2yXwaOaoa6IlY/+o= +google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -189,8 +189,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD 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.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 7b67a9479897eae0ff1f6f6ef8f598ad7444571e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 16 Jan 2024 17:34:29 +0100 Subject: [PATCH 0767/1371] chore(deps): update module github.com/jedib0t/go-pretty/v6 to v6.5.3 (#2090) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 5309d2a34ff..71f99429c29 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.5.2 + github.com/jedib0t/go-pretty/v6 v6.5.3 github.com/stretchr/testify v1.8.4 google.golang.org/api v0.156.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index fba6815a525..36e50e32d18 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -61,8 +61,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/jedib0t/go-pretty/v6 v6.5.2 h1:1zphkAo77tdoCkdqIYsMHoXmEGTnTy3GZ6Mn+NyIro0= -github.com/jedib0t/go-pretty/v6 v6.5.2/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= +github.com/jedib0t/go-pretty/v6 v6.5.3 h1:GIXn6Er/anHTkVUoufs7ptEvxdD6KIhR7Axa2wYCPF0= +github.com/jedib0t/go-pretty/v6 v6.5.3/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From daa14179116ca3fb9263cb20fc19955b436ab7b5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 16 Jan 2024 23:53:27 +0100 Subject: [PATCH 0768/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.46.11 (#2092) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index ba52a44efc7..ec4a382c3f8 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d - github.com/gruntwork-io/terratest v0.46.9 + github.com/gruntwork-io/terratest v0.46.11 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index a9cad29e1c7..81f702f9dca 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -374,8 +374,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.9 h1:2K0503TC8bhz1SQTlw6vX8SjexztXmCp3WvWxE6g22c= -github.com/gruntwork-io/terratest v0.46.9/go.mod h1:DVZG/s7eP1u3KOQJJfE6n7FDriMWpDvnj85XIlZMEM8= +github.com/gruntwork-io/terratest v0.46.11 h1:1Z9G18I2FNuH87Ro0YtjW4NH9ky4GDpfzE7+ivkPeB8= +github.com/gruntwork-io/terratest v0.46.11/go.mod h1:DVZG/s7eP1u3KOQJJfE6n7FDriMWpDvnj85XIlZMEM8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From 32c6b8959b75212ee95df0382a55a376dc2a4a30 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Jan 2024 22:29:12 +0100 Subject: [PATCH 0769/1371] chore(deps): update github/codeql-action action to v3.23.1 (#2093) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 35acbff7bc4..234ead81465 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 + uses: github/codeql-action/init@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 + uses: github/codeql-action/autobuild@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 + uses: github/codeql-action/analyze@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0e460343d63..6846d0fc145 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 + uses: github/codeql-action/upload-sarif@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 with: sarif_file: results.sarif From 8029808fce6a52442e5362b7374012490f6df539 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Jan 2024 22:33:24 +0100 Subject: [PATCH 0770/1371] chore(deps): update actions/upload-artifact action to v4.1.0 (#2094) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index de697bdbdf2..b013a4310d9 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 + uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6846d0fc145..b4d761f6975 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 + uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 with: name: SARIF file path: results.sarif From 0c28289a08f1d9ab57c091fd9209120547ec81bf Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 19 Jan 2024 01:46:57 +0100 Subject: [PATCH 0771/1371] chore(deps): update module google.golang.org/api to v0.157.0 (#2096) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 71f99429c29..b934b27a309 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.3 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.156.0 + google.golang.org/api v0.157.0 ) require ( @@ -40,7 +40,7 @@ require ( golang.org/x/term v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac // indirect google.golang.org/grpc v1.60.1 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 36e50e32d18..70bee9c07c9 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.156.0 h1:yloYcGbBtVYjLKQe4enCunxvwn3s2w/XPrrhVf6MsvQ= -google.golang.org/api v0.156.0/go.mod h1:bUSmn4KFO0Q+69zo9CNIDp4Psi6BqM0np0CbzKRSiSY= +google.golang.org/api v0.157.0 h1:ORAeqmbrrozeyw5NjnMxh7peHO0UzV4wWYSwZeCUb20= +google.golang.org/api v0.157.0/go.mod h1:+z4v4ufbZ1WEpld6yMGHyggs+PmAHiaLNj5ytP3N01g= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -165,12 +165,12 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 h1:YJ5pD9rF8o9Qtta0Cmy9rdBwkSjrTCT6XTiUQVOtIos= -google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 h1:s1w3X6gQxwrLEpxnLd/qXTVLgQE2yXwaOaoa6IlY/+o= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= +google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 h1:nz5NESFLZbJGPFxDT/HCn+V1mZ8JGNoY4nUpmW/Y2eg= +google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= +google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM= +google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac h1:nUQEQmH/csSvFECKYRv6HWEyypysidKl2I6Qpsglq/0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 6cac8f9499b3ed41e48239fc4f1582fe6a8c9dfc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 19 Jan 2024 01:54:04 +0100 Subject: [PATCH 0772/1371] chore(deps): update actions/upload-artifact action to v4.2.0 (#2095) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index b013a4310d9..6fe8767e6cb 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 + uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b4d761f6975..974094f0efb 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 + uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 with: name: SARIF file path: results.sarif From 199b1b09a986e12da0535e6aa032ed9fb97ccbe5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 23 Jan 2024 23:49:41 +0100 Subject: [PATCH 0773/1371] chore(deps): update actions/upload-artifact action to v4.3.0 (#2099) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 6fe8767e6cb..ef7295b524b 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 + uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 974094f0efb..2c56b11a323 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 + uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 with: name: SARIF file path: results.sarif From 62c380430580a3a6bcb14e048d74ccfefec8c97a Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:57:46 -0600 Subject: [PATCH 0774/1371] chore: Update Tools to 1.18.5 (#2083) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index b9573c729f9..4b005f351b5 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.6.6 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 458.0.1 +CLOUD_SDK_VERSION := 461.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.54.12 +TERRAGRUNT_VERSION := 0.54.22 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -37,9 +37,9 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.2.14 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.26.12 +KUBECTL_VERSION := 1.26.13 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.50.1 +TFLINT_VERSION := 0.50.2 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow @@ -53,9 +53,9 @@ KIND_VERSION := 0.18.0 GATOR_VERSION := 3.14.0 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.17.0 +GCRANE_VERSION := 0.18.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 6cf0d997ebce52fa2941a0d225d9ec1f495fd36a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 24 Jan 2024 00:28:08 +0100 Subject: [PATCH 0775/1371] chore(deps): update google-github-actions/auth action to v2.1.0 (#2098) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index e24b2724771..fc986798b62 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@f6de81663f7788d05bd15bcce18f0e57f23f0846' # v2.0.1 + uses: 'google-github-actions/auth@5a50e581162a13f4baa8916d01180d2acbc04363' # v2.1.0 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index ef7295b524b..60ba5d578ba 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@f6de81663f7788d05bd15bcce18f0e57f23f0846' # v2.0.1 + uses: 'google-github-actions/auth@5a50e581162a13f4baa8916d01180d2acbc04363' # v2.1.0 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From ccea7bcf95c48c31c9ac2e6e4468e61314ef0ee4 Mon Sep 17 00:00:00 2001 From: Ray Zhang <141791707+rzy-goog@users.noreply.github.com> Date: Tue, 23 Jan 2024 20:23:19 -0800 Subject: [PATCH 0776/1371] feat: add new cluster/location property extensions (#2097) --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui_ext.pb.go | 395 ++++++++++++------ cli/bpmetadata/proto/bpmetadata_ui_ext.proto | 12 + .../schema/gcp-blueprint-metadata.json | 22 + 4 files changed, 291 insertions(+), 140 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 0b9ddcce304..5680c58dcd8 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.14 +VERSION=v1.2.15 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui_ext.pb.go b/cli/bpmetadata/bpmetadata_ui_ext.pb.go index 2a7817577c2..87007d54364 100644 --- a/cli/bpmetadata/bpmetadata_ui_ext.pb.go +++ b/cli/bpmetadata/bpmetadata_ui_ext.pb.go @@ -29,6 +29,7 @@ const ( // General formats. ExtensionType_ET_EMAIL_ADDRESS ExtensionType = 1 ExtensionType_ET_MULTI_LINE_STRING ExtensionType = 2 + ExtensionType_ET_CREATE_RESOURCE ExtensionType = 21 // GCE related. ExtensionType_ET_GCE_DISK_IMAGE ExtensionType = 3 ExtensionType_ET_GCE_DISK_TYPE ExtensionType = 4 @@ -45,6 +46,7 @@ const ( ExtensionType_ET_GCE_FIREWALL ExtensionType = 15 ExtensionType_ET_GCE_FIREWALL_RANGE ExtensionType = 16 ExtensionType_ET_GCE_GENERIC_RESOURCE ExtensionType = 17 + ExtensionType_ET_GCE_LOCATION ExtensionType = 22 // GCS related. ExtensionType_ET_GCS_BUCKET ExtensionType = 18 // IAM related. @@ -59,6 +61,7 @@ var ( 0: "ET_UNDEFINED", 1: "ET_EMAIL_ADDRESS", 2: "ET_MULTI_LINE_STRING", + 21: "ET_CREATE_RESOURCE", 3: "ET_GCE_DISK_IMAGE", 4: "ET_GCE_DISK_TYPE", 5: "ET_GCE_DISK_SIZE", @@ -74,6 +77,7 @@ var ( 15: "ET_GCE_FIREWALL", 16: "ET_GCE_FIREWALL_RANGE", 17: "ET_GCE_GENERIC_RESOURCE", + 22: "ET_GCE_LOCATION", 18: "ET_GCS_BUCKET", 19: "ET_IAM_SERVICE_ACCOUNT", 20: "ET_GKE_CLUSTER", @@ -82,6 +86,7 @@ var ( "ET_UNDEFINED": 0, "ET_EMAIL_ADDRESS": 1, "ET_MULTI_LINE_STRING": 2, + "ET_CREATE_RESOURCE": 21, "ET_GCE_DISK_IMAGE": 3, "ET_GCE_DISK_TYPE": 4, "ET_GCE_DISK_SIZE": 5, @@ -97,6 +102,7 @@ var ( "ET_GCE_FIREWALL": 15, "ET_GCE_FIREWALL_RANGE": 16, "ET_GCE_GENERIC_RESOURCE": 17, + "ET_GCE_LOCATION": 22, "ET_GCS_BUCKET": 18, "ET_IAM_SERVICE_ACCOUNT": 19, "ET_GKE_CLUSTER": 20, @@ -219,6 +225,8 @@ type GooglePropertyExtension struct { GceRegion *GCELocationExtension `protobuf:"bytes,15,opt,name=gce_region,json=gceRegion,proto3" json:"gceRegion,omitempty" yaml:"gceRegion,omitempty"` // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" IamServiceAccount *IAMServiceAccountExtension `protobuf:"bytes,16,opt,name=iam_service_account,json=iamServiceAccount,proto3" json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty"` // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" GceDiskType *GCEDiskTypeExtension `protobuf:"bytes,17,opt,name=gce_disk_type,json=gceDiskType,proto3" json:"gceDiskType,omitempty" yaml:"gceDiskType,omitempty"` // @gotags: json:"gceDiskType,omitempty" yaml:"gceDiskType,omitempty" + GceLocation *GCELocationExtension `protobuf:"bytes,18,opt,name=gce_location,json=gceLocation,proto3" json:"gceLocation,omitempty" yaml:"gceLocation,omitempty"` // @gotags: json:"gceLocation,omitempty" yaml:"gceLocation,omitempty" + GkeCluster *GKEClusterExtension `protobuf:"bytes,19,opt,name=gke_cluster,json=gkeCluster,proto3" json:"gkeCluster,omitempty" yaml:"gkeCluster,omitempty"` // @gotags: json:"gkeCluster,omitempty" yaml:"gkeCluster,omitempty" } func (x *GooglePropertyExtension) Reset() { @@ -372,6 +380,20 @@ func (x *GooglePropertyExtension) GetGceDiskType() *GCEDiskTypeExtension { return nil } +func (x *GooglePropertyExtension) GetGceLocation() *GCELocationExtension { + if x != nil { + return x.GceLocation + } + return nil +} + +func (x *GooglePropertyExtension) GetGkeCluster() *GKEClusterExtension { + if x != nil { + return x.GkeCluster + } + return nil +} + // GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. type GCELocationExtension struct { state protoimpl.MessageState @@ -1165,13 +1187,71 @@ func (x *IAMServiceAccountExtension) GetRoles() []string { return nil } +type GKEClusterExtension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // GKE Cluster variable to be used for gathering context needed to select/create + // a GKE Cluster for GKE AI Products. + LocationVariable string `protobuf:"bytes,1,opt,name=location_variable,json=locationVariable,proto3" json:"locationVariable" yaml:"locationVariable"` // @gotags: json:"locationVariable" yaml:"locationVariable" + // Variable that will indicate if we are creating a cluster or using an existing one. + ClusterCreationVariable string `protobuf:"bytes,2,opt,name=cluster_creation_variable,json=clusterCreationVariable,proto3" json:"clusterCreationVariable" yaml:"clusterCreationVariable"` // @gotags: json:"clusterCreationVariable" yaml:"clusterCreationVariable" +} + +func (x *GKEClusterExtension) Reset() { + *x = GKEClusterExtension{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GKEClusterExtension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GKEClusterExtension) ProtoMessage() {} + +func (x *GKEClusterExtension) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_ext_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GKEClusterExtension.ProtoReflect.Descriptor instead. +func (*GKEClusterExtension) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_ext_proto_rawDescGZIP(), []int{15} +} + +func (x *GKEClusterExtension) GetLocationVariable() string { + if x != nil { + return x.LocationVariable + } + return "" +} + +func (x *GKEClusterExtension) GetClusterCreationVariable() string { + if x != nil { + return x.ClusterCreationVariable + } + return "" +} + var File_bpmetadata_ui_ext_proto protoreflect.FileDescriptor var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ 0x0a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf8, 0x0b, 0x0a, 0x17, 0x47, 0x6f, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa7, 0x0d, 0x0a, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, @@ -1267,138 +1347,160 @@ var file_bpmetadata_ui_ext_proto_rawDesc = []byte{ 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x63, 0x65, 0x44, 0x69, 0x73, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x17, 0x47, - 0x43, 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, - 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, - 0x1c, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x52, 0x61, 0x6d, 0x47, 0x62, 0x12, 0x41, 0x0a, - 0x1d, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, - 0x69, 0x73, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, - 0x22, 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, - 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x67, 0x70, - 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, - 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, - 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x56, 0x70, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x16, 0x47, 0x43, 0x45, 0x45, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, - 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, - 0x10, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, - 0x70, 0x73, 0x22, 0x70, 0x0a, 0x18, 0x47, 0x43, 0x45, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, - 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x48, 0x0a, 0x19, 0x47, 0x43, 0x45, 0x46, 0x69, - 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, - 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x22, 0x43, 0x0a, 0x16, 0x47, 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x67, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x45, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x0b, 0x67, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, + 0x0b, 0x67, 0x6b, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x47, 0x4b, 0x45, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x6b, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x17, 0x47, 0x43, + 0x45, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x43, 0x70, 0x75, 0x12, 0x1c, + 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6d, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x52, 0x61, 0x6d, 0x47, 0x62, 0x12, 0x41, 0x0a, 0x1d, + 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, + 0x73, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x22, + 0x53, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x70, 0x75, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x67, 0x70, 0x75, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x47, 0x50, 0x55, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x14, + 0x47, 0x43, 0x45, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x43, 0x45, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x56, 0x70, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x16, 0x47, 0x43, 0x45, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x49, 0x50, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, + 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, + 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x70, + 0x73, 0x22, 0x70, 0x0a, 0x18, 0x47, 0x43, 0x45, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, + 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, + 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0xe9, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, - 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, - 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, - 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4c, 0x49, 0x4e, - 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, - 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, - 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, - 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, - 0x13, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, - 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x54, - 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x45, - 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, - 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, - 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, - 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, - 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0c, - 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, - 0x4e, 0x41, 0x4c, 0x5f, 0x49, 0x50, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x47, - 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, - 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, - 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x10, 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x54, 0x5f, 0x47, 0x43, - 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, - 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x45, 0x4e, - 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, - 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, - 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, - 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x12, 0x12, - 0x0a, 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x4b, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, - 0x10, 0x14, 0x2a, 0x52, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, - 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, - 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, - 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, - 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x48, 0x0a, 0x19, 0x47, 0x43, 0x45, 0x46, 0x69, 0x72, + 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x43, 0x0a, 0x16, 0x47, 0x43, 0x45, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4a, 0x0a, 0x1b, 0x47, 0x43, 0x45, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x7e, 0x0a, 0x13, 0x47, 0x4b, 0x45, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2a, 0x96, 0x04, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x54, 0x5f, 0x55, 0x4e, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, + 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, + 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4c, 0x49, 0x4e, 0x45, + 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, 0x5f, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, + 0x15, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, + 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x14, + 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, + 0x5a, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4d, + 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, 0x12, 0x12, 0x0a, + 0x0e, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, + 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, + 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x53, 0x55, 0x42, + 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x54, 0x5f, + 0x47, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, + 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x55, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x54, 0x5f, 0x47, 0x43, + 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x49, 0x50, 0x10, 0x0d, 0x12, + 0x18, 0x0a, 0x14, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x4f, 0x52, + 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, + 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, 0x4c, 0x10, 0x0f, 0x12, 0x19, + 0x0a, 0x15, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x45, 0x57, 0x41, 0x4c, + 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x54, 0x5f, + 0x47, 0x43, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x54, 0x5f, 0x47, 0x43, 0x45, + 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x12, 0x11, 0x0a, 0x0d, 0x45, + 0x54, 0x5f, 0x47, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x12, 0x12, 0x1a, + 0x0a, 0x16, 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, + 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x54, + 0x5f, 0x47, 0x4b, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x14, 0x2a, 0x52, + 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x50, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x50, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, + 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x50, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x03, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, + 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1414,7 +1516,7 @@ func file_bpmetadata_ui_ext_proto_rawDescGZIP() []byte { } var file_bpmetadata_ui_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_bpmetadata_ui_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_bpmetadata_ui_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_bpmetadata_ui_ext_proto_goTypes = []interface{}{ (ExtensionType)(0), // 0: google.cloud.config.bpmetadata.ExtensionType (ExternalIPType)(0), // 1: google.cloud.config.bpmetadata.ExternalIPType @@ -1433,6 +1535,7 @@ var file_bpmetadata_ui_ext_proto_goTypes = []interface{}{ (*GCESubnetworkExtension)(nil), // 14: google.cloud.config.bpmetadata.GCESubnetworkExtension (*GCEGenericResourceExtension)(nil), // 15: google.cloud.config.bpmetadata.GCEGenericResourceExtension (*IAMServiceAccountExtension)(nil), // 16: google.cloud.config.bpmetadata.IAMServiceAccountExtension + (*GKEClusterExtension)(nil), // 17: google.cloud.config.bpmetadata.GKEClusterExtension } var file_bpmetadata_ui_ext_proto_depIdxs = []int32{ 0, // 0: google.cloud.config.bpmetadata.GooglePropertyExtension.type:type_name -> google.cloud.config.bpmetadata.ExtensionType @@ -1451,12 +1554,14 @@ var file_bpmetadata_ui_ext_proto_depIdxs = []int32{ 3, // 13: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_region:type_name -> google.cloud.config.bpmetadata.GCELocationExtension 16, // 14: google.cloud.config.bpmetadata.GooglePropertyExtension.iam_service_account:type_name -> google.cloud.config.bpmetadata.IAMServiceAccountExtension 7, // 15: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_disk_type:type_name -> google.cloud.config.bpmetadata.GCEDiskTypeExtension - 1, // 16: google.cloud.config.bpmetadata.GCEExternalIPExtension.type:type_name -> google.cloud.config.bpmetadata.ExternalIPType - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 3, // 16: google.cloud.config.bpmetadata.GooglePropertyExtension.gce_location:type_name -> google.cloud.config.bpmetadata.GCELocationExtension + 17, // 17: google.cloud.config.bpmetadata.GooglePropertyExtension.gke_cluster:type_name -> google.cloud.config.bpmetadata.GKEClusterExtension + 1, // 18: google.cloud.config.bpmetadata.GCEExternalIPExtension.type:type_name -> google.cloud.config.bpmetadata.ExternalIPType + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_bpmetadata_ui_ext_proto_init() } @@ -1645,6 +1750,18 @@ func file_bpmetadata_ui_ext_proto_init() { return nil } } + file_bpmetadata_ui_ext_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GKEClusterExtension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1652,7 +1769,7 @@ func file_bpmetadata_ui_ext_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bpmetadata_ui_ext_proto_rawDesc, NumEnums: 2, - NumMessages: 15, + NumMessages: 16, NumExtensions: 0, NumServices: 0, }, diff --git a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto index f3c0644e623..57d6aefa02f 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui_ext.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui_ext.proto @@ -13,6 +13,7 @@ enum ExtensionType { // General formats. ET_EMAIL_ADDRESS = 1; ET_MULTI_LINE_STRING = 2; + ET_CREATE_RESOURCE = 21; // GCE related. ET_GCE_DISK_IMAGE = 3; @@ -30,6 +31,7 @@ enum ExtensionType { ET_GCE_FIREWALL = 15; ET_GCE_FIREWALL_RANGE = 16; ET_GCE_GENERIC_RESOURCE = 17; + ET_GCE_LOCATION = 22; // GCS related. ET_GCS_BUCKET = 18; @@ -72,6 +74,8 @@ message GooglePropertyExtension { GCELocationExtension gce_region = 15; // @gotags: json:"gceRegion,omitempty" yaml:"gceRegion,omitempty" IAMServiceAccountExtension iam_service_account = 16; // @gotags: json:"iamServiceAccount,omitempty" yaml:"iamServiceAccount,omitempty" GCEDiskTypeExtension gce_disk_type = 17; // @gotags: json:"gceDiskType,omitempty" yaml:"gceDiskType,omitempty" + GCELocationExtension gce_location = 18; // @gotags: json:"gceLocation,omitempty" yaml:"gceLocation,omitempty" + GKEClusterExtension gke_cluster = 19; // @gotags: json:"gkeCluster,omitempty" yaml:"gkeCluster,omitempty" } // GCELocationExtension specifies a location extension for a Google Compute Engine (GCE) resource. @@ -209,3 +213,11 @@ message IAMServiceAccountExtension { // existing SAs with. repeated string roles = 1; // @gotags: json:"roles" yaml:"roles" } + +message GKEClusterExtension { + // GKE Cluster variable to be used for gathering context needed to select/create + // a GKE Cluster for GKE AI Products. + string location_variable = 1; // @gotags: json:"locationVariable" yaml:"locationVariable" + // Variable that will indicate if we are creating a cluster or using an existing one. + string cluster_creation_variable = 2; // @gotags: json:"clusterCreationVariable" yaml:"clusterCreationVariable" +} diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 8cb87d34f67..e1d86a3db9a 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -953,6 +953,22 @@ "networkVariable" ] }, + "GKEClusterExtension": { + "properties": { + "locationVariable": { + "type": "string" + }, + "clusterCreationVariable": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "locationVariable", + "clusterCreationVariable" + ] + }, "GooglePropertyExtension": { "properties": { "type": { @@ -1012,6 +1028,12 @@ }, "gceDiskType": { "$ref": "#/$defs/GCEDiskTypeExtension" + }, + "gceLocation": { + "$ref": "#/$defs/GCELocationExtension" + }, + "gkeCluster": { + "$ref": "#/$defs/GKEClusterExtension" } }, "additionalProperties": false, From 0440660cc31664c0c81c4ec96714c455e35d9f7d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 26 Jan 2024 08:52:50 -0800 Subject: [PATCH 0777/1371] chore(TF): reduce number of centralized labels (#2103) --- .../test-org/github/.terraform.lock.hcl | 32 ++++---- infra/terraform/test-org/github/labels.tf | 77 +------------------ 2 files changed, 17 insertions(+), 92 deletions(-) diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 43546b1a581..0457e2e98a6 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,23 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "5.42.0" + version = "5.45.0" constraints = "~> 5.0, ~> 5.15" hashes = [ - "h1:vHTdYL6eXJfUzz4bs0ICyg2f8ct/K2EnGAjwLrAmL3U=", - "zh:0f97039c6b70295c4a82347bc8a0bcea700b3fb3df0e0be53585da025584bb7c", - "zh:12e78898580cc2a72b5f2a77e191b158f88e974b0500489b691f34842288745c", - "zh:23660933e4f00293c0d4d6cd6b4d72e382c0df46b70cecf22b5c4c090d3b61e3", - "zh:74119174b46d8d197dd209a246bf8b5db113c66467e02c831e68a8ceea312d3e", - "zh:829c4c0c202fc646eb0e1759eb9c8f0757df5295be2d3344b8fd6ca8ce9ef33b", - "zh:92043e667f520aee4e08a10a183ad5abe5487f3e9c8ad5a55ea1358b14b17b1a", - "zh:998909806b4ff42cf480fcd359ec1f12b868846f89284b991987f55de24876b7", - "zh:9f758447db3bf386516562abd6da1e54d22ddc207bda25961d2b5b049f32da0f", - "zh:a6259215612d4d6a281c671b2d5aa3a0a0b0a3ae92ed60b633998bb692e922d3", - "zh:ad7d78056beb44191911db9443bf5eec41a3d60e7b01def2a9e608d1c4288d27", - "zh:b697e7b0abef3000e1db482c897b82cd455621b488bb6c4cd3d270763d7b08ac", - "zh:db8e849eded8aebff780f89ab7e1339053d2f15c1c8f94103d70266a090527ad", - "zh:e5bdbb85fb148dd75877a7b94b595d4e8680e495c241db02c4b12b91e9d08953", - "zh:ee812c5fd77d3817fb688f720e5eb42d7ff04db67a125de48b05458c9f657483", + "h1:cP5uEN9jpePr+/Kc7OyAZMhysbDhQoLGpLqgQpLFewg=", + "zh:2afb8ee5b847071e51d5a39bcad5cf466c4d22452450d37c44a5f9d2eb9879e5", + "zh:38d087b88c86ddd63b60d14d613f86a5885d154048098c0484266a9a69018b16", + "zh:3e6a787e3e40f1535d85f8dc5f2e8c90242ab8237feebd027f696fa154261394", + "zh:55dac5a813b3774b48ca45b8a797c32e6d787d4f282b43b622155cad3daac46a", + "zh:563f2782f3c4c584b249c5fa0628951a57b4593f3c5805a4efb6d494f8686716", + "zh:677180ec9376d5f926286592998e2864c85f06d6b416c1d89031d817a285c72e", + "zh:80eec141fa47131e8f60a6478e51b3a5920efe803444e684f9605fca09a24e34", + "zh:8b9f1e1f4b42b51e53767f4f927eabdcefe55fb0369e996ac2a0063148b5e48d", + "zh:95627f75848561830f8c20949f024f902a2100a022c68aa8d84320f43e75cc46", + "zh:95ac41b99dfca3ce556092e036bb04dc03367d0779071112e59d4bf11259a89d", + "zh:9e966482729ba8214b480bdd786aff9a15234e9c093c5406b56ce89ccb07dcab", + "zh:b7a9d563613f1b9a233f8f285848cc9d8c08c556aad7ea57cd63e0abb19b10cf", + "zh:ce56bb7ca876f47f5beee01de3ab84d27964b972c9adceb8e2f7824891e05c27", + "zh:f73e063ad5b84f1943eafb8a52a26dd805d06ac11d6c951175ac76c07187f553", ] } diff --git a/infra/terraform/test-org/github/labels.tf b/infra/terraform/test-org/github/labels.tf index 435dd60d4e7..ccc3d397a5d 100644 --- a/infra/terraform/test-org/github/labels.tf +++ b/infra/terraform/test-org/github/labels.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019-2023 Google LLC + * Copyright 2019-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,96 +26,21 @@ locals { color : "d73a4a" description : "Something isn't working" }, - { - name : "duplicate", - color : "cfd3d7" - description : "This issue or pull request already exists" - }, { name : "good first issue", color : "7057ff" description : "Good for newcomers" }, - { - name : "help wanted", - color : "008672", - description : "Extra attention is needed" - }, - { - name : "invalid", - color : "e4e669", - description : "Something doesn't seem right" - }, - { - name : "question", - color : "d876e3", - description : "Further information is requested" - }, - { - name : "wontfix", - color : "db643d", - description : "This will not be worked on" - }, { name : "triaged", color : "322560", description : "Scoped and ready for work" }, - { - name : "upstream", - color : "B580D1", - description : "Work required on Terraform core or provider" - }, - { - name : "security", - color : "801336", - description : "Fixes a security vulnerability or lapse in best practice" - }, - { - name : "refactor", - color : "004445", - description : "Updates for readability, code cleanliness, DRYness, etc. Only needs Terraform exp." - }, - { - name : "blocked", - color : "ef4339", - description : "Blocked by some other work" - }, - { - name : "P1", - color : "b01111", - description : "highest priority issues" - }, - { - name : "P2", - color : "b4451f", - description : "high priority issues" - }, - { - name : "P3", - color : "e7d87d", - description : "medium priority issues" - }, - { - name : "P4", - color : "62a1db", - description : "low priority issues" - }, { name : "release-please:force-run", color : "e7d87d", description : "Force release-please to check for changes." }, - { - name : "waiting-response", - color : "5319e7", - description : "Waiting for issue author to respond." - }, - { - name : "v0.13", - color : "edb761", - description : "Terraform v0.13 issue." - }, ] } From 6a9a556e22c20b9983e5dcefc42af54a2a306642 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 26 Jan 2024 17:54:21 +0100 Subject: [PATCH 0778/1371] chore(deps): update github/codeql-action action to v3.23.2 (#2104) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 234ead81465..9e48a032ede 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/init@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/autobuild@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/analyze@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2c56b11a323..34ce23164b8 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/upload-sarif@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 with: sarif_file: results.sarif From 9092b6e6a263b506a57f032294cb8bacdc698e77 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 26 Jan 2024 17:58:05 +0100 Subject: [PATCH 0779/1371] chore(deps): update module google.golang.org/api to v0.158.0 (#2102) --- infra/utils/fbf/go.mod | 12 ++++++------ infra/utils/fbf/go.sum | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index b934b27a309..8a9dcae2032 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.3 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.157.0 + google.golang.org/api v0.158.0 ) require ( @@ -15,7 +15,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect @@ -29,10 +29,10 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect - go.opentelemetry.io/otel v1.21.0 // indirect - go.opentelemetry.io/otel/metric v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.21.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect + go.opentelemetry.io/otel v1.22.0 // indirect + go.opentelemetry.io/otel/metric v1.22.0 // indirect + go.opentelemetry.io/otel/trace v1.22.0 // indirect golang.org/x/crypto v0.18.0 // indirect golang.org/x/net v0.20.0 // indirect golang.org/x/oauth2 v0.16.0 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 70bee9c07c9..dc3e91de850 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -21,8 +21,8 @@ github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBD github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -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/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -87,14 +87,14 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.157.0 h1:ORAeqmbrrozeyw5NjnMxh7peHO0UzV4wWYSwZeCUb20= -google.golang.org/api v0.157.0/go.mod h1:+z4v4ufbZ1WEpld6yMGHyggs+PmAHiaLNj5ytP3N01g= +google.golang.org/api v0.158.0 h1:7SKwlRqzrXT2ULl6a3iESb+1pOak5IOd5F+ay5ULiV4= +google.golang.org/api v0.158.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= From d519f06b9332ddf8eaf1cc811e04487eab1c0e79 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 26 Jan 2024 21:56:47 +0100 Subject: [PATCH 0780/1371] chore(deps): update module google.golang.org/api to v0.159.0 (#2105) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 8a9dcae2032..1c90e0f05cf 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.3 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.158.0 + google.golang.org/api v0.159.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index dc3e91de850..71f25652926 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.158.0 h1:7SKwlRqzrXT2ULl6a3iESb+1pOak5IOd5F+ay5ULiV4= -google.golang.org/api v0.158.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.159.0 h1:fVTj+7HHiUYz4JEZCHHoRIeQX7h5FMzrA2RF/DzDdbs= +google.golang.org/api v0.159.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= From 88a1c25f6ec0594d5009ed511344bb357608add0 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 29 Jan 2024 11:20:01 -0600 Subject: [PATCH 0781/1371] chore: Update Tools to 1.19.0 (#2101) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 4b005f351b5..1c8617c4843 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.6.6 +TERRAFORM_VERSION := 1.7.1 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 461.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.14 +CFT_CLI_VERSION := 1.2.15 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.13 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.18.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 0d7d86c53089eb875b302f824ecf77cbfc226c98 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 29 Jan 2024 13:05:21 -0800 Subject: [PATCH 0782/1371] chore: onboard terraform-google-enterprise-application (#2107) --- infra/terraform/modules/repositories/main.tf | 9 --------- infra/terraform/test-org/github/protection.tf | 9 ++++++++- infra/terraform/test-org/github/versions.tf | 4 ++-- infra/terraform/test-org/org/locals.tf | 7 +++++++ 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index bbed3cf5cff..651579980e5 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -63,15 +63,6 @@ resource "github_repository" "repo" { has_downloads = false squash_merge_commit_message = "BLANK" squash_merge_commit_title = "PR_TITLE" - - security_and_analysis { - secret_scanning { - status = "enabled" - } - secret_scanning_push_protection { - status = "enabled" - } - } } resource "github_repository_collaborator" "dpebot" { diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index ce2332d5631..2ac7274ae4e 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,6 +43,13 @@ module "repos_gcp" { providers = { github = github.gcp } } +// All new repos are created in advance in the GCP org +import { + for_each = local.gcp_modules_map + to = module.repos_gcp.github_repository.repo[each.value.name] + id = each.value.name +} + // terraform-example-foundation CI is a special case - below module "branch_protection_tgm" { source = "../../modules/branch_protection" diff --git a/infra/terraform/test-org/github/versions.tf b/infra/terraform/test-org/github/versions.tf index 8e3589be51e..9555ab6b549 100644 --- a/infra/terraform/test-org/github/versions.tf +++ b/infra/terraform/test-org/github/versions.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC + * Copyright 2019-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ */ terraform { - required_version = ">= 1.4.4" + required_version = ">= 1.7.0" required_providers { github = { source = "integrations/github" diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 84051ae2cab..c157c459035 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -814,6 +814,13 @@ locals { description = "Move data between environments using Dataplex." owners = ["bradmiro"] topics = local.common_topics.da + }, + { + name = "terraform-google-enterprise-application" + org = "GoogleCloudPlatform" + description = "Deploy an enterprise developer platform on Google Cloud." + owners = ["gtsorbo"] + topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) } ] } From db0604d5021b3eef997bbdb5ceb2cfe212d61e4c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 29 Jan 2024 22:59:39 +0100 Subject: [PATCH 0783/1371] chore(deps): update go modules (#2111) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 1c90e0f05cf..4c4ed3f0d2d 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,9 +4,9 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.5.3 + github.com/jedib0t/go-pretty/v6 v6.5.4 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.159.0 + google.golang.org/api v0.160.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 71f25652926..762f30b921e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -61,8 +61,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/jedib0t/go-pretty/v6 v6.5.3 h1:GIXn6Er/anHTkVUoufs7ptEvxdD6KIhR7Axa2wYCPF0= -github.com/jedib0t/go-pretty/v6 v6.5.3/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= +github.com/jedib0t/go-pretty/v6 v6.5.4 h1:gOGo0613MoqUcf0xCj+h/V3sHDaZasfv152G6/5l91s= +github.com/jedib0t/go-pretty/v6 v6.5.4/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.159.0 h1:fVTj+7HHiUYz4JEZCHHoRIeQX7h5FMzrA2RF/DzDdbs= -google.golang.org/api v0.159.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.160.0 h1:SEspjXHVqE1m5a1fRy8JFB+5jSu+V0GEDKDghF3ttO4= +google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= From 35581b2c891adc7c3f5795f147c7da4525c0455b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 29 Jan 2024 23:06:08 +0100 Subject: [PATCH 0784/1371] chore(deps): update cft/developer-tools docker tag to v1.19 (#2109) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 5680c58dcd8..4fcc39c3244 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.18 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd GOLANGCI_VERSION := 1.55.2 From 6085d0d35ce446aac4943519f47082187376aa68 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 29 Jan 2024 23:38:57 +0100 Subject: [PATCH 0785/1371] chore(deps): update cft/developer-tools docker tag to v1.19 (#2110) --- infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 53563f1c9dc..6dd7109f372 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -31,7 +31,7 @@ steps: dir: 'infra/blueprint-test' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.18' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.19' options: env: - 'TF_VAR_org_id=$_ORG_ID' From 5168940de0d527db1eaca2bca2357430f2a73b67 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Jan 2024 18:03:36 +0100 Subject: [PATCH 0786/1371] chore(deps): update google-github-actions/setup-gcloud action to v2.1.0 (#2113) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index fc986798b62..9b302c59ec7 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -29,7 +29,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@5a5f7b85fca43e76e53463acaa9d408a03c98d3a # v2.0.1 + - uses: google-github-actions/setup-gcloud@98ddc00a17442e89a24bbf282954a3b65ce6d200 # v2.1.0 with: project_id: ${{ env.PROJECT_ID }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 60ba5d578ba..8d44d9398e7 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -34,7 +34,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@5a5f7b85fca43e76e53463acaa9d408a03c98d3a # v2.0.1 + - uses: google-github-actions/setup-gcloud@98ddc00a17442e89a24bbf282954a3b65ce6d200 # v2.1.0 with: version: "410.0.0" From 082b01caddd46822fb393b257938d9de5b3905e4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 30 Jan 2024 09:16:58 -0800 Subject: [PATCH 0787/1371] chore: de-bundle major terraform module and go pull requests (#2106) --- .pre-commit-config.yaml | 2 +- infra/terraform/test-org/github/resources/renovate.json | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 45662c584eb..6437d6a1fca 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,7 +9,7 @@ exclude: | )$ repos: - repo: https://github.com/renovatebot/pre-commit-hooks - rev: 37.128.3 + rev: 37.162.1 hooks: - id: renovate-config-validator - repo: https://github.com/pre-commit/pre-commit-hooks diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index bc412c9a7b1..e3d163cf3c0 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -28,7 +28,11 @@ "matchUpdateTypes": "major", "commitMessagePrefix": "fix(deps)!:" }, - {"matchDepTypes": ["module"], "groupName": "TF modules"}, + { + "matchDepTypes": ["module"], + "groupName": "terraform modules", + "matchUpdateTypes": ["minor", "patch"] + }, { "matchDepTypes": ["require"], "postUpdateOptions": ["gomodTidy"] @@ -41,7 +45,8 @@ }, { "matchManagers": ["regex", "gomod"], - "groupName": "GO and Dev-Tools" + "groupName": "go modules and/or dev-tools", + "additionalBranchPrefix": "{{parentDir}}-" }, { "matchDepNames": ["google", "google-beta"], From 06affeb6a5f46031a228f3865950e755c1c00d44 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 30 Jan 2024 10:31:30 -0800 Subject: [PATCH 0788/1371] chore: update to actions/stale v9 (#2108) --- infra/terraform/test-org/github/resources/stale.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/resources/stale.yml b/infra/terraform/test-org/github/resources/stale.yml index f56aead563c..34a5677cdec 100644 --- a/infra/terraform/test-org/github/resources/stale.yml +++ b/infra/terraform/test-org/github/resources/stale.yml @@ -1,4 +1,4 @@ -# Copyright 2022-2023 Google LLC +# Copyright 2022-2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ jobs: if: github.repository_owner == 'GoogleCloudPlatform' || github.repository_owner == 'terraform-google-modules' runs-on: ubuntu-latest steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' From b26ff4e8316c724a57745cab4a52773c876e7cb5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jan 2024 17:35:33 +0100 Subject: [PATCH 0789/1371] fix(deps): update module github.com/zclconf/go-cty to v1.14.2 (#2114) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index a54bb569266..3d9aed78951 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/hashicorp/hcl/v2 v2.19.1 github.com/pmezard/go-difflib v1.0.0 - github.com/zclconf/go-cty v1.14.1 + github.com/zclconf/go-cty v1.14.2 ) require ( diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 7d109819044..9751ed6f33c 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -84,8 +84,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= -github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI= +github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= From 914df77e17e0577f5c20f1f2638fe45033c758fe Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jan 2024 17:38:27 +0100 Subject: [PATCH 0790/1371] fix(deps): update module google.golang.org/api to v0.161.0 (#2115) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 4c4ed3f0d2d..84807404cd2 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.4 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.160.0 + google.golang.org/api v0.161.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 762f30b921e..72e5c60fc00 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.160.0 h1:SEspjXHVqE1m5a1fRy8JFB+5jSu+V0GEDKDghF3ttO4= -google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.161.0 h1:oYzk/bs26WN10AV7iU7MVJVXBH8oCPS2hHyBiEeFoSU= +google.golang.org/api v0.161.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= From 715c6084dce93f23c44696896972d6833fb50fc2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jan 2024 17:42:30 +0100 Subject: [PATCH 0791/1371] chore(deps): update peter-evans/create-pull-request action to v6 (#2118) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 7658b440a69..205687b0bba 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -106,7 +106,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v5.0.2 + uses: peter-evans/create-pull-request@b1ddad2c994a25fbc81a28b3ec0e368bb2021c50 # v6.0.0 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 9df46e42e994ef083906703af1d38e5dffdbe4bb Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jan 2024 17:44:31 +0100 Subject: [PATCH 0792/1371] chore(deps): update dorny/paths-filter action to v3 (#2117) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 2949e7523e4..ec0a8081882 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -28,7 +28,7 @@ jobs: with: go-version-file: ${{ matrix.folder }}/go.mod cache-dependency-path: ${{ matrix.folder }}/go.sum - - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1 + - uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0 id: changes with: filters: | From 7d32413ac4f8c6bac6e4858cce38e65cd8ff4f32 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 2 Feb 2024 21:52:29 +0100 Subject: [PATCH 0793/1371] chore(deps): update github/codeql-action action to v3.24.0 (#2121) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9e48a032ede..d134c0d4b5c 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 + uses: github/codeql-action/init@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 + uses: github/codeql-action/autobuild@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 + uses: github/codeql-action/analyze@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 34ce23164b8..5f4c2221a6f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 + uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 with: sarif_file: results.sarif From 2c4d6e8108137240f2b97a3ab7ecee21ff45cd53 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 5 Feb 2024 08:33:46 -0800 Subject: [PATCH 0794/1371] chore(CI): update renovate config (#2122) --- infra/terraform/test-org/github/protection.tf | 3 ++- .../test-org/github/resources/renovate.json | 14 ++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 2ac7274ae4e..c2d6365e97d 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -65,9 +65,10 @@ module "branch_protection_gcp" { providers = { github = github.gcp } } +// terraform-example-foundation renovate is a special case module "renovate_json_tgm" { source = "../../modules/repo_file" - repo_list = module.repos_tgm.repos + repo_list = { for k, v in module.repos_tgm.repos : k => v if k != "terraform-example-foundation" } filename = ".github/renovate.json" content = file("${path.module}/resources/renovate-repo-config.json") providers = { github = github } diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index e3d163cf3c0..04a993b2713 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -11,16 +11,16 @@ "labels": ["dependencies"], "vulnerabilityAlerts": { "labels": ["type:security"], - "minimumReleaseAge": null + "minimumReleaseAge": "0 days" }, "constraints": {"go": "1.21"}, "packageRules": [ { - "matchFileNames": ["examples/**", "test/**", ".github/**", "infra/**"], + "matchFileNames": ["examples/**", "test/**", ".github/**", "infra/**", "Makefile"], "commitMessagePrefix": "chore(deps):" }, { - "matchFileNames": ["*", "modules/**"], + "matchFileNames": ["*", "modules/**", "!Makefile"], "commitMessagePrefix": "fix(deps):" }, { @@ -29,15 +29,17 @@ "commitMessagePrefix": "fix(deps)!:" }, { + "matchManagers": ["terraform"], "matchDepTypes": ["module"], "groupName": "terraform modules", "matchUpdateTypes": ["minor", "patch"] }, { - "matchDepTypes": ["require"], + "matchManagers": ["gomod"], "postUpdateOptions": ["gomodTidy"] }, { + "matchManagers": ["gomod"], "matchDatasources": ["golang-version"], "rangeStrategy": "replace", "allowedVersions": "1.21", @@ -45,10 +47,10 @@ }, { "matchManagers": ["regex", "gomod"], - "groupName": "go modules and/or dev-tools", - "additionalBranchPrefix": "{{parentDir}}-" + "groupName": "go modules and/or dev-tools" }, { + "matchManagers": ["terraform"], "matchDepNames": ["google", "google-beta"], "groupName": "Terraform Google Provider", "rangeStrategy": "widen", From eba3ecf153ce8766335140e13f662136e15760ec Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 5 Feb 2024 17:45:56 +0100 Subject: [PATCH 0795/1371] chore(deps): update google-github-actions/auth action to v2.1.1 (#2123) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 9b302c59ec7..a9a3912d68c 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@5a50e581162a13f4baa8916d01180d2acbc04363' # v2.1.0 + uses: 'google-github-actions/auth@a6e2e39c0a0331da29f7fd2c2a20a427e8d3ad1f' # v2.1.1 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 8d44d9398e7..b73936b9b3b 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@5a50e581162a13f4baa8916d01180d2acbc04363' # v2.1.0 + uses: 'google-github-actions/auth@a6e2e39c0a0331da29f7fd2c2a20a427e8d3ad1f' # v2.1.1 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From e1f42c8eef21a6a86920702db23e7cbf3eb9ab27 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 5 Feb 2024 09:11:53 -0800 Subject: [PATCH 0796/1371] chore(CI): add build as chore (#2124) --- infra/terraform/test-org/github/resources/renovate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 04a993b2713..a655655daeb 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -16,7 +16,7 @@ "constraints": {"go": "1.21"}, "packageRules": [ { - "matchFileNames": ["examples/**", "test/**", ".github/**", "infra/**", "Makefile"], + "matchFileNames": ["examples/**", "test/**", ".github/**", "infra/**", "build/**", "Makefile"], "commitMessagePrefix": "chore(deps):" }, { From 470e05782aac5f1570802c9daa44e979a1f621fc Mon Sep 17 00:00:00 2001 From: gibbleyg <63262871+gibbleyg@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:52:02 -0800 Subject: [PATCH 0797/1371] feat: Add label to DisplayOutput (#2125) --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui.pb.go | 30 +++++++++++++------ cli/bpmetadata/proto/bpmetadata_ui.proto | 8 +++-- .../schema/gcp-blueprint-metadata.json | 3 ++ 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 4fcc39c3244..83d0b8e34e5 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.15 +VERSION=v1.2.16 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index c17b88cb7f2..b69f5e15bba 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -679,7 +679,7 @@ type UIActionItem struct { // Gen: manually-authored Snippet string `protobuf:"bytes,3,opt,name=snippet,proto3" json:"snippet,omitempty" yaml:"snippet,omitempty"` // @gotags: json:"snippet,omitempty" yaml:"snippet,omitempty" // If present, this expression determines whether the item is shown. - // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP + // Should be in the form of a Boolean expression e.g. outputs.hasExternalIP // where `externalIP` is the output. // Gen: manually-authored ShowIf string `protobuf:"bytes,4,opt,name=show_if,json=showIf,proto3" json:"showIf,omitempty" yaml:"showIf,omitempty"` // @gotags: json:"showIf,omitempty" yaml:"showIf,omitempty" @@ -746,7 +746,7 @@ func (x *UIActionItem) GetShowIf() string { } // Additional display specific metadata pertaining to a particular -// Terraform output. +// Terraform output. Only applicable for Outputs that are URLs. type DisplayOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -760,6 +760,9 @@ type DisplayOutput struct { // notification for the deployment. // Gen: manually-authored ShowInNotification bool `protobuf:"varint,2,opt,name=show_in_notification,json=showInNotification,proto3" json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" + // label to display on the Output action button + // Gen: manually-authored + Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty" yaml:"label,omitEmpty"` // @gotags: json:"label,omitempty" yaml:"label,omitEmpty" } func (x *DisplayOutput) Reset() { @@ -808,6 +811,13 @@ func (x *DisplayOutput) GetShowInNotification() bool { return false } +func (x *DisplayOutput) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + var File_bpmetadata_ui_proto protoreflect.FileDescriptor var file_bpmetadata_ui_proto_rawDesc = []byte{ @@ -932,18 +942,20 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, - 0x22, 0x68, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x22, 0x7e, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, - 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index b17b41433b7..d4d4a834388 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -226,14 +226,14 @@ message UIActionItem { string snippet = 3; // @gotags: json:"snippet,omitempty" yaml:"snippet,omitempty" // If present, this expression determines whether the item is shown. - // Should be in the form of a Boolean expression e.g. outputs().hasExternalIP + // Should be in the form of a Boolean expression e.g. outputs.hasExternalIP // where `externalIP` is the output. // Gen: manually-authored string show_if = 4; // @gotags: json:"showIf,omitempty" yaml:"showIf,omitempty" } // Additional display specific metadata pertaining to a particular -// Terraform output. +// Terraform output. Only applicable for Outputs that are URLs. message DisplayOutput { // open_in_new_tab defines if the Output action should be opened // in a new tab. @@ -244,4 +244,8 @@ message DisplayOutput { // notification for the deployment. // Gen: manually-authored bool show_in_notification = 2; // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" + + // label to display on the Output action button + // Gen: manually-authored + string label = 3; // @gotags: json:"label,omitempty" yaml:"label,omitEmpty" } diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index e1d86a3db9a..2c9ea851b1e 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -652,6 +652,9 @@ }, "showInNotification": { "type": "boolean" + }, + "label": { + "type": "string" } }, "additionalProperties": false, From e959f48a73a0d41de3d326b742e08bd249cca7c4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 6 Feb 2024 00:20:02 +0100 Subject: [PATCH 0798/1371] chore(deps): update actions/upload-artifact action to v4.3.1 (#2126) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index b73936b9b3b..2d313a7f622 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5f4c2221a6f..3c145d5f499 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: SARIF file path: results.sarif From 460703e8432e227d4500553c154dcb0428c21cba Mon Sep 17 00:00:00 2001 From: Imran Nayer Date: Tue, 6 Feb 2024 12:36:32 -0600 Subject: [PATCH 0799/1371] chore: Add NetApp Volumes Terraform module (#2120) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index c157c459035..391ef015dfe 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -576,6 +576,13 @@ locals { owners = ["imrannayer"] topics = join(",", [local.common_topics.compute, local.common_topics.net]) }, + { + name = "terraform-google-netapp-volumes" + org = "GoogleCloudPlatform" + description = "Deploy NetApp Storage Volumes" + owners = ["imrannayer"] + topics = join(",", [local.common_topics.compute, local.common_topics.net]) + }, { name = "terraform-google-cloud-deploy" org = "GoogleCloudPlatform" From 4da6d801045b2672235a2a2f8b27ba5e7fe94793 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 6 Feb 2024 19:56:35 +0100 Subject: [PATCH 0800/1371] chore(deps): update module google.golang.org/api to v0.162.0 (#2128) --- infra/utils/fbf/go.mod | 8 ++++---- infra/utils/fbf/go.sum | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 84807404cd2..e37c86eae67 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.4 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.161.0 + google.golang.org/api v0.162.0 ) require ( @@ -20,7 +20,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.5.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -40,8 +40,8 @@ require ( golang.org/x/term v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac // indirect - google.golang.org/grpc v1.60.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect + google.golang.org/grpc v1.61.0 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 72e5c60fc00..06761c4ba5e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -55,8 +55,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= -github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.161.0 h1:oYzk/bs26WN10AV7iU7MVJVXBH8oCPS2hHyBiEeFoSU= -google.golang.org/api v0.161.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -165,19 +165,19 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 h1:nz5NESFLZbJGPFxDT/HCn+V1mZ8JGNoY4nUpmW/Y2eg= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= -google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM= -google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac h1:nUQEQmH/csSvFECKYRv6HWEyypysidKl2I6Qpsglq/0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= +google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac h1:ZL/Teoy/ZGnzyrqK/Optxxp2pmVh+fmJ97slxSRyzUg= +google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe h1:bQnxqljG/wqi4NTXu2+DJ3n7APcEA882QZ1JvhQAq9o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= +google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= 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= From 3107957252d0747bae2b0be4616f287cf2fcc63f Mon Sep 17 00:00:00 2001 From: Jason Davenport Date: Tue, 6 Feb 2024 13:16:45 -0700 Subject: [PATCH 0801/1371] feat: add new repo (#2130) Co-authored-by: Awais Malik --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 9944525e022..86ec08ef05b 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -47,6 +47,7 @@ locals { "sdw-onprem-ingest" = "terraform-google-secured-data-warehouse-onprem-ingest" "pubsub-golang-app" = "terraform-pubsub-integration-golang" "pubsub-java-app" = "terraform-pubsub-integration-java" + "genai-rag" = "terraform-genai-rag" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 391ef015dfe..65489f6beed 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -828,6 +828,18 @@ locals { description = "Deploy an enterprise developer platform on Google Cloud." owners = ["gtsorbo"] topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) + }, + { + name = "terraform-genai-rag" + short_name = "genai-rag" + org = "GoogleCloudPlatform" + description = "Deploys a Generative AI RAG solution" + owners = ["davenportjw", "bradmiro"] + groups = ["dee-platform-ops", "dee-data-ai", local.jss_common_group] + enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } } ] } From b0d5ff035fbe4d78758f385d0c8f731c30715952 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 7 Feb 2024 17:20:18 +0100 Subject: [PATCH 0802/1371] chore(deps): update module golang.org/x/mod to v0.15.0 (#2131) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index ec4a382c3f8..fc285b98cad 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -11,7 +11,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/tidwall/gjson v1.17.0 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.14.0 + golang.org/x/mod v0.15.0 sigs.k8s.io/kustomize/kyaml v0.16.0 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 81f702f9dca..c7b8469fc7c 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -577,8 +577,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From 597308a69936e7feaa8021f050827b63387c1a5f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 7 Feb 2024 18:01:45 +0100 Subject: [PATCH 0803/1371] chore(deps): update golangci/golangci-lint docker tag to v1.56.0 (#2133) Co-authored-by: Andrew Peabody --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index f640c58c2e8..10776d6ce43 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.55.2 +GOLANGCI_VERSION := 1.56.0 .PHONY: docker_go_lint docker_go_lint: From e712072536833b7374bd8e3d98f86470e8e95e62 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 7 Feb 2024 18:59:22 +0100 Subject: [PATCH 0804/1371] fix(deps): update dependency nokogiri to v1.16.2 [security] (#2127) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/build/developer-tools/build/data/Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 1c8617c4843..6aff0715de1 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.18.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index ce6b50902ba..24ecd90df17 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -457,7 +457,7 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) mini_mime (1.1.5) - mini_portile2 (2.8.4) + mini_portile2 (2.8.5) minitest (5.19.0) mixlib-config (3.0.27) tomlrb @@ -488,7 +488,7 @@ GEM net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.15.4) + nokogiri (1.16.2) mini_portile2 (~> 2.8.2) racc (~> 1.4) nori (2.6.0) @@ -508,7 +508,7 @@ GEM coderay (~> 1.1) method_source (~> 1.0) public_suffix (5.0.3) - racc (1.7.1) + racc (1.7.3) rainbow (3.1.1) rake (13.0.6) recursive-open-struct (1.1.3) From 522191aa6ad9b519f1dc4dee3c72a5652e1eea08 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 7 Feb 2024 10:44:29 -0800 Subject: [PATCH 0805/1371] feat: adding cft-bot as admin on tf repos (#2135) Co-authored-by: Andrew Peabody --- infra/terraform/modules/repositories/main.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index 651579980e5..2f52153bc39 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -72,6 +72,13 @@ resource "github_repository_collaborator" "dpebot" { permission = "pull" } +resource "github_repository_collaborator" "cftbot" { + for_each = github_repository.repo + repository = each.value.name + username = "cloud-foundation-bot" + permission = "admin" +} + resource "github_repository_collaborator" "owners" { for_each = { for v in local.owners : "${v.repo}/${v.owner}" => v From 8c02acb4b6b277d5c550ee3f155c613c278828c6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 8 Feb 2024 01:41:17 +0100 Subject: [PATCH 0806/1371] fix(deps): update golangci/golangci-lint docker tag to v1.56.0 (#2136) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 6aff0715de1..84cf9574173 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -46,7 +46,7 @@ ALPINE_VERSION := 3.19 MODULE_SWAPPER_VERSION := 0.4.0 # For developer-tools-krm -GOLANGCI_VERSION := 1.55.2 +GOLANGCI_VERSION := 1.56.0 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.18.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From b098e68d3c85b83812842ac67cc9ae70bc360d9d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 9 Feb 2024 17:03:49 +0100 Subject: [PATCH 0807/1371] chore(deps): update module google.golang.org/api to v0.163.0 (#2139) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index e37c86eae67..ce8a438a9e5 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.4 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.162.0 + google.golang.org/api v0.163.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 06761c4ba5e..0c1c69b850b 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= -google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.163.0 h1:4BBDpPaSH+H28NhnX+WwjXxbRLQ7TWuEKp4BQyEjxvk= +google.golang.org/api v0.163.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= From 3568196e2517fb62479115f6f615c827a4734e60 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 12 Feb 2024 13:34:18 -0800 Subject: [PATCH 0808/1371] feat(tft): add filemutex for tft plugin cache (#2140) --- .../examples/simple_krm_blueprint/pod.yaml | 1 - infra/blueprint-test/go.mod | 3 +- infra/blueprint-test/go.sum | 6 ++- infra/blueprint-test/pkg/tft/terraform.go | 50 ++++++++++++++++++- .../test/krm_simple_blueprint_test.go | 4 +- infra/blueprint-test/test/setup/main.tf | 4 +- 6 files changed, 59 insertions(+), 9 deletions(-) diff --git a/infra/blueprint-test/examples/simple_krm_blueprint/pod.yaml b/infra/blueprint-test/examples/simple_krm_blueprint/pod.yaml index de78753e8ca..690853cc2ab 100644 --- a/infra/blueprint-test/examples/simple_krm_blueprint/pod.yaml +++ b/infra/blueprint-test/examples/simple_krm_blueprint/pod.yaml @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. - apiVersion: v1 kind: Pod metadata: diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index fc285b98cad..73a45f8e616 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -4,6 +4,7 @@ go 1.21 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d + github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.46.11 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 @@ -87,7 +88,7 @@ require ( golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.15.0 // indirect + golang.org/x/sys v0.16.0 // indirect golang.org/x/term v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index c7b8469fc7c..642d658e818 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -192,6 +192,8 @@ github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/alexflint/go-filemutex v1.3.0 h1:LgE+nTUWnQCyRKbpoceKZsPQbs84LivvgwUymZXdOcM= +github.com/alexflint/go-filemutex v1.3.0/go.mod h1:U0+VA/i30mGBlLCrFPGtTe9y6wGQfNAWPBTekHQ+c8A= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= @@ -734,8 +736,8 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 24647d70aa8..a71e53ce736 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -30,6 +30,7 @@ import ( "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/discovery" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" + "github.com/alexflint/go-filemutex" "github.com/gruntwork-io/terratest/modules/logger" "github.com/gruntwork-io/terratest/modules/terraform" "github.com/hashicorp/terraform-config-inspect/tfconfig" @@ -37,7 +38,10 @@ import ( "github.com/stretchr/testify/assert" ) -const setupKeyOutputName = "sa_key" +const ( + setupKeyOutputName = "sa_key" + tftCacheMutexFilename = "/tmp/bpt-tft-cache.lock" +) var ( CommonRetryableErrors = map[string]string{ @@ -73,6 +77,7 @@ type TFBlueprintTest struct { verify func(*assert.Assertions) // verify function teardown func(*assert.Assertions) // teardown function setupOutputOverrides map[string]interface{} // override outputs from the Setup phase + tftCacheMutex *filemutex.FileMutex // Mutex to protect Terraform plugin cache } type tftOption func(*TFBlueprintTest) @@ -167,11 +172,17 @@ func WithSetupOutputs(vars map[string]interface{}) tftOption { // NewTFBlueprintTest sets defaults, validates and returns a TFBlueprintTest. func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { + var err error tft := &TFBlueprintTest{ name: fmt.Sprintf("%s TF Blueprint", t.Name()), tfEnvVars: make(map[string]string), t: t, } + // initiate tft cache file mutex + tft.tftCacheMutex, err = filemutex.New(tftCacheMutexFilename) + if err != nil { + t.Fatalf("tft lock file <%s> could not created: %v", tftCacheMutexFilename, err) + } // default TF blueprint methods tft.init = tft.DefaultInit tft.apply = tft.DefaultApply @@ -204,7 +215,6 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { } // discover test config - var err error tft.BlueprintTestConfig, err = discovery.GetTestConfig(path.Join(tft.tfDir, discovery.DefaultTestConfigFilename)) if err != nil { t.Fatal(err) @@ -481,21 +491,57 @@ func (b *TFBlueprintTest) DefaultApply(assert *assert.Assertions) { // Init runs the default or custom init function for the blueprint. func (b *TFBlueprintTest) Init(assert *assert.Assertions) { + // allow only single write as Terraform plugin cache isn't concurrent safe + if err := b.tftCacheMutex.Lock(); err != nil { + b.t.Fatalf("Could not acquire lock: %v", err) + } + defer func() { + if err := b.tftCacheMutex.Unlock(); err != nil { + b.t.Fatalf("Could not release lock: %v", err) + } + }() b.init(assert) } // Apply runs the default or custom apply function for the blueprint. func (b *TFBlueprintTest) Apply(assert *assert.Assertions) { + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + if err := b.tftCacheMutex.RLock(); err != nil { + b.t.Fatalf("Could not acquire read lock: %v", err) + } + defer func() { + if err := b.tftCacheMutex.RUnlock(); err != nil { + b.t.Fatalf("Could not release read lock: %v", err) + } + }() b.apply(assert) } // Verify runs the default or custom verify function for the blueprint. func (b *TFBlueprintTest) Verify(assert *assert.Assertions) { + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + if err := b.tftCacheMutex.RLock(); err != nil { + b.t.Fatalf("Could not acquire read lock: %v", err) + } + defer func() { + if err := b.tftCacheMutex.RUnlock(); err != nil { + b.t.Fatalf("Could not release read lock: %v", err) + } + }() b.verify(assert) } // Teardown runs the default or custom teardown function for the blueprint. func (b *TFBlueprintTest) Teardown(assert *assert.Assertions) { + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + if err := b.tftCacheMutex.RLock(); err != nil { + b.t.Fatalf("Could not acquire read lock:%v", err) + } + defer func() { + if err := b.tftCacheMutex.RUnlock(); err != nil { + b.t.Fatalf("Could not release read lock: %v", err) + } + }() b.teardown(assert) } diff --git a/infra/blueprint-test/test/krm_simple_blueprint_test.go b/infra/blueprint-test/test/krm_simple_blueprint_test.go index f1098dfd80b..38da3aa0dda 100644 --- a/infra/blueprint-test/test/krm_simple_blueprint_test.go +++ b/infra/blueprint-test/test/krm_simple_blueprint_test.go @@ -1,6 +1,7 @@ package test import ( + "strings" "testing" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" @@ -26,7 +27,8 @@ func TestKRMSimpleBlueprint(t *testing.T) { k8sOpts := k8s.KubectlOptions{} op, err := k8s.RunKubectlAndGetOutputE(t, &k8sOpts, "get", "pod", "simple-krm-blueprint", "--no-headers", "-o", "custom-columns=:metadata.name") assert.NoError(err) - assert.Equal("simple-krm-blueprint", op) + result := strings.Split(op, "\n") + assert.Equal("simple-krm-blueprint", result[len(result)-1]) }) networkBlueprint.Test() } diff --git a/infra/blueprint-test/test/setup/main.tf b/infra/blueprint-test/test/setup/main.tf index 0f46477fab4..ebeccc0eba6 100644 --- a/infra/blueprint-test/test/setup/main.tf +++ b/infra/blueprint-test/test/setup/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2021-2023 Google LLC + * Copyright 2021-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -64,6 +64,6 @@ resource "google_service_account_key" "key" { module "kubernetes-engine_example_simple_autopilot_public" { source = "terraform-google-modules/kubernetes-engine/google//examples/simple_autopilot_public" - version = "~> 26.0" + version = "~> 30.0" project_id = module.project.project_id } From adff593d8cedbfd76de1957f3b50be60d13bdd28 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 14:48:23 -0800 Subject: [PATCH 0809/1371] chore(master): release blueprint-test 0.12.0 (#2084) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a4a8f32160f..ed0bc8533ee 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.11.1", + "infra/blueprint-test": "0.12.0", "infra/module-swapper": "0.4.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index c6f02787f81..3e932c6759a 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.12.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.11.1...infra/blueprint-test/v0.12.0) (2024-02-12) + + +### Features + +* **tft:** add filemutex for tft plugin cache ([#2140](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2140)) ([3568196](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3568196e2517fb62479115f6f615c827a4734e60)) + + +### Bug Fixes + +* **deps:** update module github.com/gruntwork-io/terratest to v0.46.11 ([#2092](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2092)) ([daa1417](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/daa14179116ca3fb9263cb20fc19955b436ab7b5)) +* **deps:** update module github.com/gruntwork-io/terratest to v0.46.9 ([#2080](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2080)) ([da6b03f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/da6b03f3e6eaabb8dbab8b21236cf1ffaffb8cd7)) +* **deps:** update module golang.org/x/mod to v0.15.0 ([#2131](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2131)) ([b0d5ff0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/b0d5ff035fbe4d78758f385d0c8f731c30715952)) + ## [0.11.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.11.0...infra/blueprint-test/v0.11.1) (2023-12-19) From 88e9b3531dff24611e6e082cddbf03706127744b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Feb 2024 00:34:16 +0100 Subject: [PATCH 0810/1371] chore(deps): update golangci/golangci-lint-action action to v4 (#2142) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index ec0a8081882..97bc117276d 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -37,7 +37,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0 + uses: golangci/golangci-lint-action@3cfe3a4abbb849e10058ce4af15d205b6da42804 # v4.0.0 with: version: latest working-directory: ${{ matrix.folder }} diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 3c51f9bff2e..8bc77277524 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -44,7 +44,7 @@ jobs: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum - name: golangci-lint - uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0 + uses: golangci/golangci-lint-action@3cfe3a4abbb849e10058ce4af15d205b6da42804 # v4.0.0 with: version: latest working-directory: 'infra/module-swapper' From dfe4f0696627509f669b4976fe146ce9c9cc4a4e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Feb 2024 17:18:25 +0100 Subject: [PATCH 0811/1371] chore(deps): update module google.golang.org/api to v0.164.0 (#2144) --- infra/utils/fbf/go.mod | 20 +++++++++---------- infra/utils/fbf/go.sum | 44 +++++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index ce8a438a9e5..f121053ad0d 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.4 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.163.0 + google.golang.org/api v0.164.0 ) require ( @@ -30,17 +30,17 @@ require ( github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect - go.opentelemetry.io/otel v1.22.0 // indirect - go.opentelemetry.io/otel/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect - golang.org/x/crypto v0.18.0 // indirect - golang.org/x/net v0.20.0 // indirect - golang.org/x/oauth2 v0.16.0 // indirect - golang.org/x/sys v0.16.0 // indirect - golang.org/x/term v0.16.0 // indirect + go.opentelemetry.io/otel v1.23.0 // indirect + go.opentelemetry.io/otel/metric v1.23.0 // indirect + go.opentelemetry.io/otel/trace v1.23.0 // indirect + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/oauth2 v0.17.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/term v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014 // indirect google.golang.org/grpc v1.61.0 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 0c1c69b850b..b4fdb8bb39e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -89,17 +89,17 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= -go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/otel v1.23.0 h1:Df0pqjqExIywbMCMTxkAwzjLZtRf+bBKLbUcpxO2C9E= +go.opentelemetry.io/otel v1.23.0/go.mod h1:YCycw9ZeKhcJFrb34iVSkyT0iczq/zYDtZYFufObyB0= +go.opentelemetry.io/otel/metric v1.23.0 h1:pazkx7ss4LFVVYSxYew7L5I6qvLXHA0Ap2pwV+9Cnpo= +go.opentelemetry.io/otel/metric v1.23.0/go.mod h1:MqUW2X2a6Q8RN96E2/nqNoT+z9BSms20Jb7Bbp+HiTo= +go.opentelemetry.io/otel/trace v1.23.0 h1:37Ik5Ib7xfYVb4V1UtnT97T1jI+AoIYkJyPkuL4iJgI= +go.opentelemetry.io/otel/trace v1.23.0/go.mod h1:GSGTbIClEsuZrGIzoEHqsVfxgn5UkggkflQwDScNUsk= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -114,11 +114,11 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL 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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -135,12 +135,12 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.163.0 h1:4BBDpPaSH+H28NhnX+WwjXxbRLQ7TWuEKp4BQyEjxvk= -google.golang.org/api v0.163.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.164.0 h1:of5G3oE2WRMVb2yoWKME4ZP8y8zpUKC6bMhxDr8ifyk= +google.golang.org/api v0.164.0/go.mod h1:2OatzO7ZDQsoS7IFf3rvsE17/TldiU3F/zxFHeqUB5o= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -165,12 +165,12 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac h1:ZL/Teoy/ZGnzyrqK/Optxxp2pmVh+fmJ97slxSRyzUg= -google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= +google.golang.org/genproto v0.0.0-20240125205218-1f4bbc51befe h1:USL2DhxfgRchafRvt/wYyyQNzwgL7ZiURcozOE/Pkvo= +google.golang.org/genproto v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe h1:bQnxqljG/wqi4NTXu2+DJ3n7APcEA882QZ1JvhQAq9o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014 h1:FSL3lRCkhaPFxqi0s9o+V4UI2WTzAVOvkgbd4kVV4Wg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014/go.mod h1:SaPjaZGWb0lPqs6Ittu0spdfrOArqji4ZdeP5IC/9N4= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 1fe3d7c962e91280ed1414c35c790420de413619 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Feb 2024 17:20:00 +0100 Subject: [PATCH 0812/1371] chore(deps): update pre-commit/action action to v3.0.1 (#2141) --- .github/workflows/pre-commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 56735fc58fe..0945fc06eb7 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -11,4 +11,4 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # v3.0.0 + - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 From 8a56b6736dfdce85114c4c491e868f0ed482dbdf Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Feb 2024 17:22:14 +0100 Subject: [PATCH 0813/1371] chore(deps): update github/codeql-action action to v3.24.1 (#2146) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d134c0d4b5c..e2539164719 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 + uses: github/codeql-action/init@e675ced7a7522a761fc9c8eb26682c8b27c42b2b # v3.24.1 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 + uses: github/codeql-action/autobuild@e675ced7a7522a761fc9c8eb26682c8b27c42b2b # v3.24.1 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 + uses: github/codeql-action/analyze@e675ced7a7522a761fc9c8eb26682c8b27c42b2b # v3.24.1 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3c145d5f499..f5bc809e04b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 + uses: github/codeql-action/upload-sarif@e675ced7a7522a761fc9c8eb26682c8b27c42b2b # v3.24.1 with: sarif_file: results.sarif From 05fa19a647a22a48cf7b1f47a493068684e173fa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Feb 2024 17:30:32 +0100 Subject: [PATCH 0814/1371] chore(deps): update golangci/golangci-lint docker tag to v1.56.1 (#2138) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 84cf9574173..1327f681115 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -46,7 +46,7 @@ ALPINE_VERSION := 3.19 MODULE_SWAPPER_VERSION := 0.4.0 # For developer-tools-krm -GOLANGCI_VERSION := 1.56.0 +GOLANGCI_VERSION := 1.56.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow From 12a8cde44337bc7c82ef75f165b84d74fcbfa497 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 13 Feb 2024 09:05:17 -0800 Subject: [PATCH 0815/1371] chore: update golangci-lint renovate (#2147) --- .github/renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index 58223e5fca0..45ad53ff574 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -71,7 +71,8 @@ "fileMatch": ["(^|/)Makefile$"], "matchStrings": ["GOLANGCI_VERSION := (?.*?)\\n"], "datasourceTemplate": "docker", - "depNameTemplate": "golangci/golangci-lint" + "depNameTemplate": "golangci/golangci-lint", + "extractVersionTemplate": "^v?(?.*)$" } ] } From 3ba81882a48222f7897f9cabbc4388b494ce3326 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 13 Feb 2024 09:44:11 -0800 Subject: [PATCH 0816/1371] fix(tft): parallel-safe a few edge cases (#2145) --- infra/blueprint-test/pkg/tft/terraform.go | 69 +++++++++++++---------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index a71e53ce736..22425d4566b 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -1,5 +1,5 @@ /** - * Copyright 2021 Google LLC + * Copyright 2021-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,7 +40,8 @@ import ( const ( setupKeyOutputName = "sa_key" - tftCacheMutexFilename = "/tmp/bpt-tft-cache.lock" + tftCacheMutexFilename = "bpt-tft-cache.lock" + vetFilename = "plan.tfplan" ) var ( @@ -179,9 +180,9 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { t: t, } // initiate tft cache file mutex - tft.tftCacheMutex, err = filemutex.New(tftCacheMutexFilename) + tft.tftCacheMutex, err = filemutex.New(filepath.Join(os.TempDir(), tftCacheMutexFilename)) if err != nil { - t.Fatalf("tft lock file <%s> could not created: %v", tftCacheMutexFilename, err) + t.Fatalf("tft lock file <%s> could not created: %v", filepath.Join(os.TempDir(), tftCacheMutexFilename), err) } // default TF blueprint methods tft.init = tft.DefaultInit @@ -277,6 +278,9 @@ func (b *TFBlueprintTest) sensitiveOutputs(dir string) map[string]bool { // getOutputs returns all output values. func (b *TFBlueprintTest) getOutputs(sensitive map[string]bool) map[string]interface{} { + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + rUnlockFn := b.rLockFn() + defer rUnlockFn() outputs := terraform.OutputAll(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.sensitiveLogger, NoColor: true}) for k, v := range outputs { _, s := sensitive[k] @@ -360,6 +364,9 @@ func (b *TFBlueprintTest) GetTFSetupOutputListVal(key string) []string { if b.setupDir == "" { b.t.Fatal("Setup path not set") } + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + rUnlockFn := b.rLockFn() + defer rUnlockFn() return terraform.OutputList(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger, NoColor: true}, key) } @@ -372,6 +379,9 @@ func (b *TFBlueprintTest) GetTFSetupStringOutput(key string) string { if b.setupDir == "" { b.t.Fatal("Setup path not set") } + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + rUnlockFn := b.rLockFn() + defer rUnlockFn() return terraform.Output(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger, NoColor: true}, key) } @@ -469,8 +479,14 @@ func (b *TFBlueprintTest) DefaultInit(assert *assert.Assertions) { // Vet runs TF plan, TF show, and gcloud terraform vet on a blueprint. func (b *TFBlueprintTest) Vet(assert *assert.Assertions) { + vetTempDir, err := os.MkdirTemp(os.TempDir(), "btp") + if err != nil { + b.t.Fatalf("Temp directory %q could not created: %v", vetTempDir, err) + } + defer os.RemoveAll(vetTempDir) + localOptions := b.GetTFOptions() - localOptions.PlanFilePath = filepath.Join(os.TempDir(), "plan.tfplan") + localOptions.PlanFilePath = filepath.Join(vetTempDir, vetFilename) terraform.Plan(b.t, localOptions) jsonPlan := terraform.Show(b.t, localOptions) filepath, err := utils.WriteTmpFileWithExtension(jsonPlan, "json") @@ -506,42 +522,24 @@ func (b *TFBlueprintTest) Init(assert *assert.Assertions) { // Apply runs the default or custom apply function for the blueprint. func (b *TFBlueprintTest) Apply(assert *assert.Assertions) { // allow only parallel reads as Terraform plugin cache isn't concurrent safe - if err := b.tftCacheMutex.RLock(); err != nil { - b.t.Fatalf("Could not acquire read lock: %v", err) - } - defer func() { - if err := b.tftCacheMutex.RUnlock(); err != nil { - b.t.Fatalf("Could not release read lock: %v", err) - } - }() + rUnlockFn := b.rLockFn() + defer rUnlockFn() b.apply(assert) } // Verify runs the default or custom verify function for the blueprint. func (b *TFBlueprintTest) Verify(assert *assert.Assertions) { // allow only parallel reads as Terraform plugin cache isn't concurrent safe - if err := b.tftCacheMutex.RLock(); err != nil { - b.t.Fatalf("Could not acquire read lock: %v", err) - } - defer func() { - if err := b.tftCacheMutex.RUnlock(); err != nil { - b.t.Fatalf("Could not release read lock: %v", err) - } - }() + rUnlockFn := b.rLockFn() + defer rUnlockFn() b.verify(assert) } // Teardown runs the default or custom teardown function for the blueprint. func (b *TFBlueprintTest) Teardown(assert *assert.Assertions) { // allow only parallel reads as Terraform plugin cache isn't concurrent safe - if err := b.tftCacheMutex.RLock(); err != nil { - b.t.Fatalf("Could not acquire read lock:%v", err) - } - defer func() { - if err := b.tftCacheMutex.RUnlock(); err != nil { - b.t.Fatalf("Could not release read lock: %v", err) - } - }() + rUnlockFn := b.rLockFn() + defer rUnlockFn() b.teardown(assert) } @@ -594,3 +592,16 @@ func (b *TFBlueprintTest) RedeployTest(n int, nVars map[int]map[string]interface utils.RunStage("verify", func() { b.Verify(a) }) } } + +// rLockFn sets a read mutex lock, and returns the corresponding unlock function +func (b *TFBlueprintTest) rLockFn() func() { + if err := b.tftCacheMutex.RLock(); err != nil { + b.t.Fatalf("Could not acquire read lock:%v", err) + } + + return func() { + if err := b.tftCacheMutex.RUnlock(); err != nil { + b.t.Fatalf("Could not release read lock: %v", err) + } + } +} From 83e4d5df63ba08634a63d0d9c9946c309bdd1129 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 10:17:56 -0800 Subject: [PATCH 0817/1371] chore(master): release blueprint-test 0.12.1 (#2148) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ed0bc8533ee..85d21679c06 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.12.0", + "infra/blueprint-test": "0.12.1", "infra/module-swapper": "0.4.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 3e932c6759a..9c7e3c79d51 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.12.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.12.0...infra/blueprint-test/v0.12.1) (2024-02-13) + + +### Bug Fixes + +* **tft:** parallel-safe a few edge cases ([#2145](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2145)) ([3ba8188](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3ba81882a48222f7897f9cabbc4388b494ce3326)) + ## [0.12.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.11.1...infra/blueprint-test/v0.12.0) (2024-02-12) From 879a37366136ab795ea1c45b6b13d8fb1d88f2c5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Feb 2024 19:26:32 +0100 Subject: [PATCH 0818/1371] chore(deps): update golangci/golangci-lint docker tag to v1.56.1 (#2132) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 83d0b8e34e5..65e6e8ace06 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.55.2 +GOLANGCI_VERSION := 1.56.1 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From b7dda2b357ef39ade3050c70b5b4bf60b133814a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Feb 2024 20:13:01 +0100 Subject: [PATCH 0819/1371] chore(deps): update golangci/golangci-lint docker tag to v1.56.1 (#2137) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 10776d6ce43..ada1296fab3 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.56.0 +GOLANGCI_VERSION := 1.56.1 .PHONY: docker_go_lint docker_go_lint: From e1da94979fac605d0dd117325612913281b3f72c Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:29:33 -0800 Subject: [PATCH 0820/1371] chore(master): release module-swapper 0.4.1 (#2116) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 85d21679c06..9616310f6e8 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.12.1", - "infra/module-swapper": "0.4.0" + "infra/module-swapper": "0.4.1" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 1081b916241..1ba5d0b9138 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.0...infra/module-swapper/v0.4.1) (2024-02-13) + + +### Bug Fixes + +* **deps:** update module github.com/zclconf/go-cty to v1.14.2 ([#2114](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2114)) ([b26ff4e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/b26ff4e8316c724a57745cab4a52773c876e7cb5)) + ## [0.4.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.3.1...infra/module-swapper/v0.4.0) (2024-01-08) From 87ec718deedd840ad6779b328bca6af00706f359 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:39:04 -0800 Subject: [PATCH 0821/1371] chore: Update Tools to 1.19.3 (#2112) --- infra/build/Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 1327f681115..acb326d6800 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.7.1 +TERRAFORM_VERSION := 1.7.3 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 461.0.0 +CLOUD_SDK_VERSION := 464.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.54.22 +TERRAGRUNT_VERSION := 0.55.1 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -35,15 +35,15 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.15 +CFT_CLI_VERSION := 1.2.16 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.26.13 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.50.2 +TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.0 +MODULE_SWAPPER_VERSION := 0.4.1 # For developer-tools-krm GOLANGCI_VERSION := 1.56.1 @@ -53,9 +53,9 @@ KIND_VERSION := 0.18.0 GATOR_VERSION := 3.14.0 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.18.0 +GCRANE_VERSION := 0.19.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 837e5601abf9bdf9aae8c0d2af63b9eebf889ad8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 15 Feb 2024 16:53:55 +0100 Subject: [PATCH 0822/1371] chore(deps): update github/codeql-action action to v3.24.3 (#2152) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e2539164719..0aec44f06b7 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@e675ced7a7522a761fc9c8eb26682c8b27c42b2b # v3.24.1 + uses: github/codeql-action/init@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@e675ced7a7522a761fc9c8eb26682c8b27c42b2b # v3.24.1 + uses: github/codeql-action/autobuild@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@e675ced7a7522a761fc9c8eb26682c8b27c42b2b # v3.24.1 + uses: github/codeql-action/analyze@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f5bc809e04b..0ebfb88bc1a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e675ced7a7522a761fc9c8eb26682c8b27c42b2b # v3.24.1 + uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 with: sarif_file: results.sarif From b86b9b3846136d45b2bbf0e829f399ac4cd92ea9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 15 Feb 2024 17:02:40 +0100 Subject: [PATCH 0823/1371] chore(deps): update module google.golang.org/api to v0.165.0 (#2150) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index f121053ad0d..117f826456f 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.4 github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.164.0 + google.golang.org/api v0.165.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index b4fdb8bb39e..5b4bd9d904b 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.164.0 h1:of5G3oE2WRMVb2yoWKME4ZP8y8zpUKC6bMhxDr8ifyk= -google.golang.org/api v0.164.0/go.mod h1:2OatzO7ZDQsoS7IFf3rvsE17/TldiU3F/zxFHeqUB5o= +google.golang.org/api v0.165.0 h1:zd5d4JIIIaYYsfVy1HzoXYZ9rWCSBxxAglbczzo7Bgc= +google.golang.org/api v0.165.0/go.mod h1:2OatzO7ZDQsoS7IFf3rvsE17/TldiU3F/zxFHeqUB5o= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= From 03741c9b8abc3ba68faa345d3899b786452c2d76 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 15 Feb 2024 10:26:07 -0800 Subject: [PATCH 0824/1371] chore: onboard terraform-google-artifact-registry (#2153) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 65489f6beed..51ba08d5152 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -840,6 +840,12 @@ locals { lint_env = { ENABLE_BPMETADATA = "1" } + }, + { + name = "terraform-google-artifact-registry" + org = "GoogleCloudPlatform" + description = "Create and manage Google Artifact Registry Repositories" + owners = ["prabhu34"] } ] } From c9bf9f9c015e1c3b4777d28dd82169d11b7bae46 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 15 Feb 2024 19:28:22 +0100 Subject: [PATCH 0825/1371] chore(deps): update dorny/paths-filter action to v3.0.1 (#2151) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 97bc117276d..383a6d28aea 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -28,7 +28,7 @@ jobs: with: go-version-file: ${{ matrix.folder }}/go.mod cache-dependency-path: ${{ matrix.folder }}/go.sum - - uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0 + - uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1 id: changes with: filters: | From b6ad96e4f41dcdaf5b19edc380498680e1d7cce2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 16 Feb 2024 00:21:41 +0100 Subject: [PATCH 0826/1371] chore(deps): update golangci/golangci-lint docker tag to v1.56.2 (#2155) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index ada1296fab3..ad6600baee1 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.56.1 +GOLANGCI_VERSION := 1.56.2 .PHONY: docker_go_lint docker_go_lint: From 4c93af3632da7b565f4eae2cc4dbb8b776468596 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 16 Feb 2024 08:57:00 -0800 Subject: [PATCH 0827/1371] chore: Update Tools to 1.19.4 (#2149) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index acb326d6800..5d5dc08bf1f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.55.1 +TERRAGRUNT_VERSION := 0.55.2 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.2.16 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.26.13 +KUBECTL_VERSION := 1.26.14 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From d490065ef0768f0906e8516d11c3f03faf0d60c5 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 16 Feb 2024 09:05:52 -0800 Subject: [PATCH 0828/1371] chore: update kubectl minor 1.28 (#2143) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 205687b0bba..a9b78aeabc6 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -15,7 +15,7 @@ env: KPT_URL: "https://api.github.com/repos/kptdev/kpt/releases" CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" MODULE_SWAPPER_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" - KUBECTL_MINOR: "1.26" + KUBECTL_MINOR: "1.28" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" GATOR_MINOR: "3.14" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" From 48810afccc60d8ad569c5a8ff202e3bb38425891 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 16 Feb 2024 13:02:37 -0800 Subject: [PATCH 0829/1371] feat(tft): add GetStringOutputList (#2159) Co-authored-by: Bharath KKB --- infra/blueprint-test/pkg/tft/terraform.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 22425d4566b..421dbf0c988 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -348,9 +348,21 @@ func getKVFromOutputString(v string) (string, string, error) { // GetStringOutput returns TF output for a given key as string. // It fails test if given key does not output a primitive. func (b *TFBlueprintTest) GetStringOutput(name string) string { + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + rUnlockFn := b.rLockFn() + defer rUnlockFn() return terraform.Output(b.t, b.GetTFOptions(), name) } +// GetStringOutputList returns TF output for a given key as list. +// It fails test if given key does not output a primitive. +func (b *TFBlueprintTest) GetStringOutputList(name string) []string { + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + rUnlockFn := b.rLockFn() + defer rUnlockFn() + return terraform.OutputList(b.t, b.GetTFOptions(), name) +} + // GetTFSetupOutputListVal returns TF output from setup for a given key as list. // It fails test if given key does not output a list type. func (b *TFBlueprintTest) GetTFSetupOutputListVal(key string) []string { From 784030cea8a11c33749958441698725fdd960d19 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 16 Feb 2024 13:49:31 -0800 Subject: [PATCH 0830/1371] chore(master): release blueprint-test 0.13.0 (#2161) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 9616310f6e8..33a8430d505 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.12.1", + "infra/blueprint-test": "0.13.0", "infra/module-swapper": "0.4.1" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 9c7e3c79d51..f62ff69559d 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.13.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.12.1...infra/blueprint-test/v0.13.0) (2024-02-16) + + +### Features + +* **tft:** add GetStringOutputList ([#2159](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2159)) ([48810af](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/48810afccc60d8ad569c5a8ff202e3bb38425891)) + ## [0.12.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.12.0...infra/blueprint-test/v0.12.1) (2024-02-13) From 8d282c6e0aa9481eb5d9644f2e7e621c3d9d9d1c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 16 Feb 2024 23:00:25 +0100 Subject: [PATCH 0831/1371] chore(deps): update golangci/golangci-lint docker tag to v1.56.2 (#2154) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 65e6e8ace06..f34dff7c7c5 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.56.1 +GOLANGCI_VERSION := 1.56.2 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 9f4bb1ef543afb36db2fa0638f4979f598ef43c9 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Sun, 18 Feb 2024 09:27:49 -0800 Subject: [PATCH 0832/1371] chore: Update Tools to 1.19.5 (#2158) --- infra/build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 5d5dc08bf1f..8a126355e07 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.2.16 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.26.14 +KUBECTL_VERSION := 1.28.7 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From a96ab5287ad904f90cad15982955735000df57fc Mon Sep 17 00:00:00 2001 From: Joseph Thomas Date: Wed, 21 Feb 2024 12:11:10 -0800 Subject: [PATCH 0833/1371] feat: Add secrets for GitHub/GitLab tokens (#2167) --- .../terraform/test-org/ci-triggers/secrets.tf | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/secrets.tf b/infra/terraform/test-org/ci-triggers/secrets.tf index 72399804da2..741608a83cc 100644 --- a/infra/terraform/test-org/ci-triggers/secrets.tf +++ b/infra/terraform/test-org/ci-triggers/secrets.tf @@ -29,3 +29,35 @@ resource "google_secret_manager_secret_iam_member" "tfe_token_member" { role = "roles/secretmanager.secretAccessor" member = "group:${data.terraform_remote_state.org.outputs.cft_ci_group}" } + +resource "google_secret_manager_secret" "im_github_pat" { + project = local.project_id + secret_id = "im_github_pat" + + replication { + auto {} + } +} + +resource "google_secret_manager_secret_iam_member" "im_github_pat_member" { + project = google_secret_manager_secret.im_github_pat.project + secret_id = google_secret_manager_secret.im_github_pat.secret_id + role = "roles/secretmanager.secretAccessor" + member = "group:${data.terraform_remote_state.org.outputs.cft_ci_group}" +} + +resource "google_secret_manager_secret" "im_gitlab_pat" { + project = local.project_id + secret_id = "im_gitlab_pat" + + replication { + auto {} + } +} + +resource "google_secret_manager_secret_iam_member" "im_gitlab_pat_member" { + project = google_secret_manager_secret.im_gitlab_pat.project + secret_id = google_secret_manager_secret.im_gitlab_pat.secret_id + role = "roles/secretmanager.secretAccessor" + member = "group:${data.terraform_remote_state.org.outputs.cft_ci_group}" +} From f85777d414e251f8ac2709dcd19498bbb36e67b9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 21 Feb 2024 17:32:53 -0800 Subject: [PATCH 0834/1371] chore: protect all GH CODEOWNERS files (#2157) --- infra/terraform/modules/codeowners_file/main.tf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf index 5dc1dc7744d..6154a7dd96b 100644 --- a/infra/terraform/modules/codeowners_file/main.tf +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,9 @@ locals { owners = { for value in var.repos_map : value.name => "${join(" ", formatlist("@%s", value.owners))} " if length(value.owners) > 0 } groups = { for value in var.repos_map : value.name => "${join(" ", formatlist("@${value.org}/%s", value.groups))} " if length(value.groups) > 0 } header = "# NOTE: This file is automatically generated from values at:\n# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/org/locals.tf\n" + footer_prefix = "# NOTE: GitHub CODEOWNERS locations:\n# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-and-branch-protection\n" + footer_code = "CODEOWNERS @${var.org}/${var.owner}\n.github/CODEOWNERS @${var.org}/${var.owner}\ndocs/CODEOWNERS @${var.org}/${var.owner}\n" + footer = "\n${local.footer_prefix}\n${local.footer_code}\n" } resource "github_repository_file" "CODEOWNERS" { @@ -31,5 +34,5 @@ resource "github_repository_file" "CODEOWNERS" { commit_author = local.commit_author commit_email = local.commit_email overwrite_on_create = true - content = "${trimspace("${local.header}\n* @${var.org}/${var.owner} ${try(local.owners[each.key], "")}${try(local.groups[each.key], "")}")}\n" + content = "${trimspace("${local.header}\n* @${var.org}/${var.owner} ${try(local.owners[each.key], "")}${try(local.groups[each.key], "")}")}\n${local.footer}" } From e810b0e63259fbc51df88885e44b829f00c7819e Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 21 Feb 2024 19:47:22 -0600 Subject: [PATCH 0835/1371] fix: allow CI robots to create tags (#2171) --- infra/terraform/test-org/org-iam-policy/iam.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index 87e4362acde..af0ef31c4aa 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -51,6 +51,7 @@ locals { "roles/accesscontextmanager.policyReader" : ["group:${local.cft_ci_group}"], "roles/assuredworkloads.admin" : ["group:${local.cft_ci_group}"], "roles/iam.denyAdmin" : ["group:${local.cft_ci_group}"], + "roles/resourcemanager.tagAdmin" : ["group:${local.cft_ci_group}"], } billing_policy = { From ca637608e4eb13e668ef8407466e29068ac096c7 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 21 Feb 2024 18:05:48 -0800 Subject: [PATCH 0836/1371] chore(cft): add kubernetes-engine owner (#2169) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 51ba08d5152..5d4e21582f6 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -113,7 +113,7 @@ locals { name = "terraform-google-kubernetes-engine" org = "terraform-google-modules" description = "Configures opinionated GKE clusters" - owners = ["ericyz"] + owners = ["ericyz", "gtsorbo"] topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { From a18138932adbd255abe5c48759951c5de186e002 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 21 Feb 2024 18:30:12 -0800 Subject: [PATCH 0837/1371] chore: add periodic support for docs-samples (#2160) --- .../modules/workflow_files/lint.yaml.tftpl | 1 + .../test-org/ci-triggers/scheduler.tf | 18 +++++++++++++++++- .../terraform/test-org/ci-triggers/triggers.tf | 1 + infra/terraform/test-org/org/locals.tf | 7 ++++--- infra/terraform/test-org/org/outputs.tf | 4 ++++ 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/infra/terraform/modules/workflow_files/lint.yaml.tftpl b/infra/terraform/modules/workflow_files/lint.yaml.tftpl index 693b999ccb8..7f2fefb8935 100644 --- a/infra/terraform/modules/workflow_files/lint.yaml.tftpl +++ b/infra/terraform/modules/workflow_files/lint.yaml.tftpl @@ -18,6 +18,7 @@ name: 'lint' on: + workflow_dispatch: pull_request: branches: - ${branch} diff --git a/infra/terraform/test-org/ci-triggers/scheduler.tf b/infra/terraform/test-org/ci-triggers/scheduler.tf index 83aa18baac6..ccc605ee0b2 100644 --- a/infra/terraform/test-org/ci-triggers/scheduler.tf +++ b/infra/terraform/test-org/ci-triggers/scheduler.tf @@ -1,5 +1,21 @@ +/** + * Copyright 2023-2024 Google LLC + * + * 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. + */ + locals { - periodic_repos = toset([for m in data.terraform_remote_state.org.outputs.modules : m.name if lookup(m, "enable_periodic", false)]) + periodic_repos = toset([for item in data.terraform_remote_state.org.outputs.periodic_repos : contains(keys(local.custom_repo_mapping), item) ? local.custom_repo_mapping[item] : item]) } resource "google_service_account" "periodic_sa" { diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 6519e23880f..a01088836fc 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -71,6 +71,7 @@ resource "google_cloudbuild_trigger" "periodic_int_trigger" { _VOD_TEST_PROJECT_ID = each.key == "terraform-google-media-cdn-vod" ? local.vod_test_project_id : null _FILE_LOGS_BUCKET = lookup(local.enable_file_log, each.key, false) ? module.filelogs_bucket.url : null _LR_BILLING_ACCOUNT = local.lr_billing_account + _PERIODIC = true }, # add sfb substitutions contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 5d4e21582f6..cb2042152d3 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -536,9 +536,10 @@ locals { module = false }, { - short_name = "docs-samples" - org = "terraform-google-modules" - module = false + short_name = "docs-samples" + org = "terraform-google-modules" + module = false + enable_periodic = true }, { short_name = "migrate" diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index 243eae332da..c4d14cc7e24 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -113,3 +113,7 @@ output "modules" { output "bpt_folder" { value = module.bpt_ci_folder.id } + +output "periodic_repos" { + value = sort([for value in local.repos : coalesce(try(value.name, null), try(value.short_name, null)) if try(value.enable_periodic, false)]) +} From 3f3199e05baf84360fbb4a066b59cb0119ba1067 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 22 Feb 2024 17:15:04 +0100 Subject: [PATCH 0838/1371] fix(deps): update module github.com/tidwall/gjson to v1.17.1 (#2172) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 73a45f8e616..27c5710d1ea 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -10,7 +10,7 @@ require ( github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.8.4 - github.com/tidwall/gjson v1.17.0 + github.com/tidwall/gjson v1.17.1 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.15.0 sigs.k8s.io/kustomize/kyaml v0.16.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 642d658e818..c428330a77e 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -497,8 +497,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o 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/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= -github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= From 29406882f8e7a1bb8da5a118900f06d1bb756623 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 22 Feb 2024 09:27:01 -0800 Subject: [PATCH 0839/1371] chore: update renovate PR prefix (#2166) --- .../terraform/test-org/github/resources/renovate.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index a655655daeb..214cfcb5816 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -16,11 +16,7 @@ "constraints": {"go": "1.21"}, "packageRules": [ { - "matchFileNames": ["examples/**", "test/**", ".github/**", "infra/**", "build/**", "Makefile"], - "commitMessagePrefix": "chore(deps):" - }, - { - "matchFileNames": ["*", "modules/**", "!Makefile"], + "matchFileNames": ["*", "modules/**"], "commitMessagePrefix": "fix(deps):" }, { @@ -28,6 +24,10 @@ "matchUpdateTypes": "major", "commitMessagePrefix": "fix(deps)!:" }, + { + "matchFileNames": ["examples/**", "test/**", ".github/**", "infra/**", "build/**", "Makefile"], + "commitMessagePrefix": "chore(deps):" + }, { "matchManagers": ["terraform"], "matchDepTypes": ["module"], From 9af9c51fe8af61c1f2b544d1b73b092822bc41bd Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Thu, 22 Feb 2024 19:52:26 -0800 Subject: [PATCH 0840/1371] fix: adds deprecated tag to all version tags for dev-tools* (#2165) --- infra/build/Makefile | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/infra/build/Makefile b/infra/build/Makefile index 8a126355e07..c5ab8ad1e82 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -125,10 +125,18 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} @@ -141,10 +149,18 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} @@ -157,10 +173,18 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} @@ -173,10 +197,18 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + # The following tasks are provided as examples and aren't invoked from this # repository directly. These three make targets are the only targets that # should be included in every CFT module's `Makefile` From 1712b5d6f22b131a7b41092c70e0127820366220 Mon Sep 17 00:00:00 2001 From: Maitreya Mulchandani <78151681+maitreya-source@users.noreply.github.com> Date: Fri, 23 Feb 2024 23:02:49 +0530 Subject: [PATCH 0841/1371] feat: onboard secure web proxy (#2173) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index cb2042152d3..56ff04294f8 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -847,6 +847,13 @@ locals { org = "GoogleCloudPlatform" description = "Create and manage Google Artifact Registry Repositories" owners = ["prabhu34"] + }, + { + name = "terraform-google-secure-web-proxy" + org = "GoogleCloudPlatform" + description = "Create and manage Secure Web Proxy in GCP for secured egress web traffic." + owners = ["maitreya-source"] + topics = join(",", [local.common_topics.security, local.common_topics.net]) } ] } From 392315892c4957177fbb6e24c2f73e1dacf4dc99 Mon Sep 17 00:00:00 2001 From: Joseph Thomas Date: Fri, 23 Feb 2024 15:17:24 -0800 Subject: [PATCH 0842/1371] feat: Add GitHub/GitLab secrets to available trigger substitutions (#2178) Co-authored-by: Awais Malik --- infra/terraform/test-org/ci-triggers/triggers.tf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index a01088836fc..62f1b5ef72e 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -38,6 +38,8 @@ resource "google_cloudbuild_trigger" "int_trigger" { _FILE_LOGS_BUCKET = lookup(local.enable_file_log, each.key, false) ? module.filelogs_bucket.url : null _LR_BILLING_ACCOUNT = local.lr_billing_account _TFE_TOKEN_SECRET_ID = each.key == "terraform-google-tf-cloud-agents" ? google_secret_manager_secret.tfe_token.id : null + _IM_GITHUB_PAT_SECRET_ID = each.key == "terraform-google-bootstrap" ? google_secret_manager_secret.im_github_pat.id : null + _IM_GITLAB_PAT_SECRET_ID = each.key == "terraform-google-bootstrap" ? google_secret_manager_secret.im_gitlab_pat.id : null }, # add sfb substitutions contains(local.bp_on_sfb, each.key) ? local.sfb_substs : {} From 249818352b360644b4360b864fecd92eb5005f30 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 1 Mar 2024 09:36:09 +1100 Subject: [PATCH 0843/1371] feat: add terraform-cloud-client-api (#2186) --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 86ec08ef05b..c846729e1c5 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -48,6 +48,7 @@ locals { "pubsub-golang-app" = "terraform-pubsub-integration-golang" "pubsub-java-app" = "terraform-pubsub-integration-java" "genai-rag" = "terraform-genai-rag" + "cloud-client-api" = "terraform-cloud-client-api" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 56ff04294f8..4d18932c145 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -854,6 +854,18 @@ locals { description = "Create and manage Secure Web Proxy in GCP for secured egress web traffic." owners = ["maitreya-source"] topics = join(",", [local.common_topics.security, local.common_topics.net]) + }, + { + name = "terraform-cloud-client-api" + short_name = "cloud-client-api" + org = "GoogleCloudPlatform" + description = "Deploys an example application that uses Cloud Client APIs" + owners = ["glasnt", "sigje"] + groups = ["team-egg", local.jss_common_group] + enable_periodic = true + lint_env = { + ENABLE_BPMETADATA = "1" + } } ] } From 4557a456460894b0d6dfa4cb4f72d20bdcef72ec Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 5 Mar 2024 03:12:21 +1100 Subject: [PATCH 0844/1371] fix: use correct github account for sigje (#2188) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 4d18932c145..2dd4d432f2f 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -860,7 +860,7 @@ locals { short_name = "cloud-client-api" org = "GoogleCloudPlatform" description = "Deploys an example application that uses Cloud Client APIs" - owners = ["glasnt", "sigje"] + owners = ["glasnt", "iennae"] groups = ["team-egg", local.jss_common_group] enable_periodic = true lint_env = { From e632d3d5bfe608d1792fe6378ee5723d01348ffb Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 4 Mar 2024 08:31:17 -0800 Subject: [PATCH 0845/1371] chore: Update Tools to 1.19.6 (#2164) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index c5ab8ad1e82..0a451f4bd46 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.7.3 +TERRAFORM_VERSION := 1.7.4 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 464.0.0 +CLOUD_SDK_VERSION := 466.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.55.2 +TERRAGRUNT_VERSION := 0.55.11 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 9b543cc38593e9ef7a1097ebc1a64763f61e4923 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 5 Mar 2024 09:02:08 -0800 Subject: [PATCH 0846/1371] fix: tag by local image name (#2190) --- infra/build/Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 0a451f4bd46..06785c2191a 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -125,7 +125,7 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} - docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} \ + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} @@ -133,7 +133,7 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} - docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} \ + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} @@ -149,7 +149,7 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} - docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} \ + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} @@ -157,7 +157,7 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} - docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} \ + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} @@ -173,7 +173,7 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} - docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} \ + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} @@ -181,7 +181,7 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} - docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} \ + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} @@ -197,7 +197,7 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} - docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} \ + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS} @@ -205,7 +205,7 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} - docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} \ + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} From c429aa07aa2d6cc9411191e7572e8b9b29cb5914 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 7 Mar 2024 10:46:54 -0800 Subject: [PATCH 0847/1371] chore(deps): update test-org to terraform github v6 (#2187) --- .../modules/branch_protection/main.tf | 11 +++--- .../modules/branch_protection/versions.tf | 2 +- .../modules/codeowners_file/versions.tf | 2 +- infra/terraform/modules/repo_file/versions.tf | 2 +- .../terraform/modules/repo_labels/versions.tf | 2 +- .../modules/repositories/versions.tf | 2 +- .../modules/workflow_files/versions.tf | 2 +- .../test-org/github/.terraform.lock.hcl | 34 +++++++++---------- infra/terraform/test-org/github/protection.tf | 7 ++-- infra/terraform/test-org/github/versions.tf | 2 +- 10 files changed, 32 insertions(+), 34 deletions(-) diff --git a/infra/terraform/modules/branch_protection/main.tf b/infra/terraform/modules/branch_protection/main.tf index 98ef472b15a..2422cc234f2 100644 --- a/infra/terraform/modules/branch_protection/main.tf +++ b/infra/terraform/modules/branch_protection/main.tf @@ -34,11 +34,10 @@ resource "github_branch_protection" "default" { ] } - enforce_admins = false - blocks_creations = false - - push_restrictions = [ - var.admin - ] + enforce_admins = false + restrict_pushes { + push_allowances = [var.admin] + blocks_creations = false + } } diff --git a/infra/terraform/modules/branch_protection/versions.tf b/infra/terraform/modules/branch_protection/versions.tf index 56c83e7c0a2..9fe5d28d303 100644 --- a/infra/terraform/modules/branch_protection/versions.tf +++ b/infra/terraform/modules/branch_protection/versions.tf @@ -18,7 +18,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } } } diff --git a/infra/terraform/modules/codeowners_file/versions.tf b/infra/terraform/modules/codeowners_file/versions.tf index 56c83e7c0a2..9fe5d28d303 100644 --- a/infra/terraform/modules/codeowners_file/versions.tf +++ b/infra/terraform/modules/codeowners_file/versions.tf @@ -18,7 +18,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } } } diff --git a/infra/terraform/modules/repo_file/versions.tf b/infra/terraform/modules/repo_file/versions.tf index 56c83e7c0a2..9fe5d28d303 100644 --- a/infra/terraform/modules/repo_file/versions.tf +++ b/infra/terraform/modules/repo_file/versions.tf @@ -18,7 +18,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } } } diff --git a/infra/terraform/modules/repo_labels/versions.tf b/infra/terraform/modules/repo_labels/versions.tf index 56c83e7c0a2..9fe5d28d303 100644 --- a/infra/terraform/modules/repo_labels/versions.tf +++ b/infra/terraform/modules/repo_labels/versions.tf @@ -18,7 +18,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } } } diff --git a/infra/terraform/modules/repositories/versions.tf b/infra/terraform/modules/repositories/versions.tf index befca592bce..9fe5d28d303 100644 --- a/infra/terraform/modules/repositories/versions.tf +++ b/infra/terraform/modules/repositories/versions.tf @@ -18,7 +18,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.15" + version = "~> 6.0" } } } diff --git a/infra/terraform/modules/workflow_files/versions.tf b/infra/terraform/modules/workflow_files/versions.tf index dc62627037c..a18e05b5c55 100644 --- a/infra/terraform/modules/workflow_files/versions.tf +++ b/infra/terraform/modules/workflow_files/versions.tf @@ -18,7 +18,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } } } diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 0457e2e98a6..867a2a1754e 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,23 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "5.45.0" - constraints = "~> 5.0, ~> 5.15" + version = "6.0.0" + constraints = "~> 6.0" hashes = [ - "h1:cP5uEN9jpePr+/Kc7OyAZMhysbDhQoLGpLqgQpLFewg=", - "zh:2afb8ee5b847071e51d5a39bcad5cf466c4d22452450d37c44a5f9d2eb9879e5", - "zh:38d087b88c86ddd63b60d14d613f86a5885d154048098c0484266a9a69018b16", - "zh:3e6a787e3e40f1535d85f8dc5f2e8c90242ab8237feebd027f696fa154261394", - "zh:55dac5a813b3774b48ca45b8a797c32e6d787d4f282b43b622155cad3daac46a", - "zh:563f2782f3c4c584b249c5fa0628951a57b4593f3c5805a4efb6d494f8686716", - "zh:677180ec9376d5f926286592998e2864c85f06d6b416c1d89031d817a285c72e", - "zh:80eec141fa47131e8f60a6478e51b3a5920efe803444e684f9605fca09a24e34", - "zh:8b9f1e1f4b42b51e53767f4f927eabdcefe55fb0369e996ac2a0063148b5e48d", - "zh:95627f75848561830f8c20949f024f902a2100a022c68aa8d84320f43e75cc46", - "zh:95ac41b99dfca3ce556092e036bb04dc03367d0779071112e59d4bf11259a89d", - "zh:9e966482729ba8214b480bdd786aff9a15234e9c093c5406b56ce89ccb07dcab", - "zh:b7a9d563613f1b9a233f8f285848cc9d8c08c556aad7ea57cd63e0abb19b10cf", - "zh:ce56bb7ca876f47f5beee01de3ab84d27964b972c9adceb8e2f7824891e05c27", - "zh:f73e063ad5b84f1943eafb8a52a26dd805d06ac11d6c951175ac76c07187f553", + "h1:jLOsi4Qu5g5D2/n/xg/CljAKCRH9F9paiWRZtyzWR+k=", + "zh:0d12fde69c54d358af3a45cf1610b711e1cd6a5d0be8d71c24729f28faa4a67d", + "zh:501fd9a181bbb1f3e70c3a54463bc16974569dddd1311fdd682c3b893ebc8455", + "zh:69a486e2b2db2f7ff947027e5e245b48a1f71e10955e7243419c15d9d8330d54", + "zh:6f45927d00337db1ebce1da51be1033ffb632b470f901698e12cd51e1d2e16db", + "zh:7734fccb5594f72d8f0bd501f83bbdcc8cf69df27b54631a24d27cff5cead9ab", + "zh:77ffc5ec11754a1c94af468c17a95409a36b2696a4d1f656cef893d931d20b2e", + "zh:79dc9da6aff69825e66869ccdff83ce453f1374ee08152645bc324885e1d1b42", + "zh:7cbf2e8a01133b4ad442854b4baceb97cf4b9f43d69684a35583eaeb998cbc5d", + "zh:84d9788a46f57572a348a52bbbcb347786d967d2169825587b7bf1fc6d052d71", + "zh:a0b89fcce44c397c5f61286351f1752c154e1f238555c4a69a6cd49a57f79d02", + "zh:c2fe95b549239b01ae7956f00279ab6653521843b7009231aec3eb898c8dc395", + "zh:c58aa97ae9b24c260f1f8c7a4c2a7ffc75fe0c2ffa0cb9986d99e855c11a0cbb", + "zh:cb32a38fb412935ee021f70050db07dbe9ec698bcf149275fd3381565eb9b5d1", + "zh:d6ae9b8fa87f3fefe13976504731f661fd93729f8167dd5b7056b1d325b745e4", ] } diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index c2d6365e97d..256bc4c8c38 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -186,8 +186,7 @@ resource "github_branch_protection" "terraform-example-foundation" { enforce_admins = false - push_restrictions = [ - data.github_team.cft-admins.node_id - ] - + restrict_pushes { + push_allowances = [data.github_team.cft-admins.node_id] + } } diff --git a/infra/terraform/test-org/github/versions.tf b/infra/terraform/test-org/github/versions.tf index 9555ab6b549..eca0ff7296c 100644 --- a/infra/terraform/test-org/github/versions.tf +++ b/infra/terraform/test-org/github/versions.tf @@ -19,7 +19,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } } } From 7a49a1406367c7258c5d6958e3e36edc450e8caa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 19:52:59 +0100 Subject: [PATCH 0848/1371] chore(deps): update google-github-actions/auth action to v2.1.2 (#2193) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index a9a3912d68c..b86bf09dc40 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@a6e2e39c0a0331da29f7fd2c2a20a427e8d3ad1f' # v2.1.1 + uses: 'google-github-actions/auth@55bd3a7c6e2ae7cf1877fd1ccb9d54c0503c457c' # v2.1.2 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 2d313a7f622..99622b6ca60 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@a6e2e39c0a0331da29f7fd2c2a20a427e8d3ad1f' # v2.1.1 + uses: 'google-github-actions/auth@55bd3a7c6e2ae7cf1877fd1ccb9d54c0503c457c' # v2.1.2 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From 72d52aade7a492f58733d8cb4d744a5c63bb8264 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 19:57:31 +0100 Subject: [PATCH 0849/1371] chore(deps): update github/codeql-action action to v3.24.6 (#2192) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0aec44f06b7..808fdf2f275 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/init@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/autobuild@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/analyze@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0ebfb88bc1a..a63efde75cc 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/upload-sarif@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 with: sarif_file: results.sarif From 8fd139da1fd61d7b133462f6b8f1632f1f574a73 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 20:04:10 +0100 Subject: [PATCH 0850/1371] chore(deps): update peter-evans/create-pull-request action to v6.0.1 (#2194) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index a9b78aeabc6..ecb2cd11530 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -106,7 +106,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@b1ddad2c994a25fbc81a28b3ec0e368bb2021c50 # v6.0.0 + uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v6.0.1 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From af8a62cc8c0db6fe00616921d1bed527253ebaa6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 20:52:04 +0100 Subject: [PATCH 0851/1371] fix(deps): update go modules (#2195) --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 27c5710d1ea..2ae3b9f13d1 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -9,10 +9,10 @@ require ( github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.17.1 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.15.0 + golang.org/x/mod v0.16.0 sigs.k8s.io/kustomize/kyaml v0.16.0 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index c428330a77e..19219958aa4 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -484,8 +484,9 @@ 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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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= @@ -494,8 +495,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -579,8 +580,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From 3c20dea3c67dad63a793f67fb16563bdc88bb085 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 21:11:53 +0100 Subject: [PATCH 0852/1371] fix(deps): update go modules (#2196) --- infra/utils/fbf/go.mod | 14 +++++++------- infra/utils/fbf/go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 117f826456f..1c6c85bf0cf 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -5,12 +5,12 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.4 - github.com/stretchr/testify v1.8.4 - google.golang.org/api v0.165.0 + github.com/stretchr/testify v1.9.0 + google.golang.org/api v0.167.0 ) require ( - cloud.google.com/go/compute v1.23.3 // indirect + cloud.google.com/go/compute v1.23.4 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect @@ -22,14 +22,14 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0 // indirect go.opentelemetry.io/otel v1.23.0 // indirect go.opentelemetry.io/otel/metric v1.23.0 // indirect go.opentelemetry.io/otel/trace v1.23.0 // indirect @@ -40,8 +40,8 @@ require ( golang.org/x/term v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014 // indirect - google.golang.org/grpc v1.61.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 // indirect + google.golang.org/grpc v1.61.1 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 5b4bd9d904b..017a422b5b5 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.23.4 h1:EBT9Nw4q3zyE7G45Wvv3MzolIrCJEuHys5muLY0wvAw= +cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -59,8 +59,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.1 h1:9F8GV9r9ztXyAi00gsMQHNoF51xPZm8uj1dpYt2ZETM= +github.com/googleapis/gax-go/v2 v2.12.1/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= github.com/jedib0t/go-pretty/v6 v6.5.4 h1:gOGo0613MoqUcf0xCj+h/V3sHDaZasfv152G6/5l91s= github.com/jedib0t/go-pretty/v6 v6.5.4/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -82,13 +82,13 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE 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/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0 h1:doUP+ExOpH3spVTLS0FcWGLnQrPct/hD/bCPbDRUEAU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0/go.mod h1:rdENBZMT2OE6Ne/KLwpiXudnAsbdrdBaqBvTN8M8BgA= go.opentelemetry.io/otel v1.23.0 h1:Df0pqjqExIywbMCMTxkAwzjLZtRf+bBKLbUcpxO2C9E= go.opentelemetry.io/otel v1.23.0/go.mod h1:YCycw9ZeKhcJFrb34iVSkyT0iczq/zYDtZYFufObyB0= go.opentelemetry.io/otel/metric v1.23.0 h1:pazkx7ss4LFVVYSxYew7L5I6qvLXHA0Ap2pwV+9Cnpo= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.165.0 h1:zd5d4JIIIaYYsfVy1HzoXYZ9rWCSBxxAglbczzo7Bgc= -google.golang.org/api v0.165.0/go.mod h1:2OatzO7ZDQsoS7IFf3rvsE17/TldiU3F/zxFHeqUB5o= +google.golang.org/api v0.167.0 h1:CKHrQD1BLRii6xdkatBDXyKzM0mkawt2QP+H3LtPmSE= +google.golang.org/api v0.167.0/go.mod h1:4FcBc686KFi7QI/U51/2GKKevfZMpM17sCdibqe/bSA= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -165,19 +165,19 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240125205218-1f4bbc51befe h1:USL2DhxfgRchafRvt/wYyyQNzwgL7ZiURcozOE/Pkvo= -google.golang.org/genproto v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014 h1:FSL3lRCkhaPFxqi0s9o+V4UI2WTzAVOvkgbd4kVV4Wg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014/go.mod h1:SaPjaZGWb0lPqs6Ittu0spdfrOArqji4ZdeP5IC/9N4= +google.golang.org/genproto v0.0.0-20240205150955-31a09d347014 h1:g/4bk7P6TPMkAUbUhquq98xey1slwvuVJPosdBqYJlU= +google.golang.org/genproto v0.0.0-20240205150955-31a09d347014/go.mod h1:xEgQu1e4stdSSsxPDK8Azkrk/ECl5HvdPf6nbZrTS5M= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 h1:x9PwdEgd11LgK+orcck69WVRo7DezSO4VUMPI4xpc8A= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 h1:hZB7eLIaYlW9qXRfCq/qDaPdbeY3757uARz5Vvfv+cY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= -google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= +google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= 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= From 8cdbe3444ee4fa25f25dcd779b2cfc63ee158dc5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 21:17:34 +0100 Subject: [PATCH 0853/1371] fix(deps): update module github.com/hashicorp/hcl/v2 to v2.20.0 (#2197) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 3d9aed78951..5d7bd09d826 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -6,7 +6,7 @@ require ( github.com/chainguard-dev/git-urls v1.0.2 github.com/go-git/go-git/v5 v5.11.0 github.com/google/go-cmp v0.6.0 - github.com/hashicorp/hcl/v2 v2.19.1 + github.com/hashicorp/hcl/v2 v2.20.0 github.com/pmezard/go-difflib v1.0.0 github.com/zclconf/go-cty v1.14.2 ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 9751ed6f33c..f9d66e3e231 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -44,8 +44,8 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= -github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= +github.com/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= +github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= From 4d219e4c72b8b76894be0f9335115e419d30a216 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 21:25:27 +0100 Subject: [PATCH 0854/1371] fix(deps): update module google.golang.org/api to v0.169.0 (#2198) --- infra/utils/fbf/go.mod | 16 ++++++++-------- infra/utils/fbf/go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 1c6c85bf0cf..78ef3b4b688 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.4 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.167.0 + google.golang.org/api v0.169.0 ) require ( @@ -22,17 +22,17 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.1 // indirect + github.com/googleapis/gax-go/v2 v2.12.2 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0 // indirect - go.opentelemetry.io/otel v1.23.0 // indirect - go.opentelemetry.io/otel/metric v1.23.0 // indirect - go.opentelemetry.io/otel/trace v1.23.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/crypto v0.19.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/oauth2 v0.17.0 // indirect @@ -40,8 +40,8 @@ require ( golang.org/x/term v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 // indirect - google.golang.org/grpc v1.61.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 // indirect + google.golang.org/grpc v1.62.0 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 017a422b5b5..593a0bd5159 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -59,8 +59,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.1 h1:9F8GV9r9ztXyAi00gsMQHNoF51xPZm8uj1dpYt2ZETM= -github.com/googleapis/gax-go/v2 v2.12.1/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= github.com/jedib0t/go-pretty/v6 v6.5.4 h1:gOGo0613MoqUcf0xCj+h/V3sHDaZasfv152G6/5l91s= github.com/jedib0t/go-pretty/v6 v6.5.4/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -87,14 +87,14 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0 h1:doUP+ExOpH3spVTLS0FcWGLnQrPct/hD/bCPbDRUEAU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0/go.mod h1:rdENBZMT2OE6Ne/KLwpiXudnAsbdrdBaqBvTN8M8BgA= -go.opentelemetry.io/otel v1.23.0 h1:Df0pqjqExIywbMCMTxkAwzjLZtRf+bBKLbUcpxO2C9E= -go.opentelemetry.io/otel v1.23.0/go.mod h1:YCycw9ZeKhcJFrb34iVSkyT0iczq/zYDtZYFufObyB0= -go.opentelemetry.io/otel/metric v1.23.0 h1:pazkx7ss4LFVVYSxYew7L5I6qvLXHA0Ap2pwV+9Cnpo= -go.opentelemetry.io/otel/metric v1.23.0/go.mod h1:MqUW2X2a6Q8RN96E2/nqNoT+z9BSms20Jb7Bbp+HiTo= -go.opentelemetry.io/otel/trace v1.23.0 h1:37Ik5Ib7xfYVb4V1UtnT97T1jI+AoIYkJyPkuL4iJgI= -go.opentelemetry.io/otel/trace v1.23.0/go.mod h1:GSGTbIClEsuZrGIzoEHqsVfxgn5UkggkflQwDScNUsk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.167.0 h1:CKHrQD1BLRii6xdkatBDXyKzM0mkawt2QP+H3LtPmSE= -google.golang.org/api v0.167.0/go.mod h1:4FcBc686KFi7QI/U51/2GKKevfZMpM17sCdibqe/bSA= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -169,15 +169,15 @@ google.golang.org/genproto v0.0.0-20240205150955-31a09d347014 h1:g/4bk7P6TPMkAUb google.golang.org/genproto v0.0.0-20240205150955-31a09d347014/go.mod h1:xEgQu1e4stdSSsxPDK8Azkrk/ECl5HvdPf6nbZrTS5M= google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 h1:x9PwdEgd11LgK+orcck69WVRo7DezSO4VUMPI4xpc8A= google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 h1:hZB7eLIaYlW9qXRfCq/qDaPdbeY3757uARz5Vvfv+cY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 h1:Xs9lu+tLXxLIfuci70nG4cpwaRC+mRQPUL7LoIeDJC4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= +google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= 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= From e6a9f220b040fd63946eabaf8ec84385611ca8d2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 21:44:38 +0100 Subject: [PATCH 0855/1371] fix(deps): update module github.com/zclconf/go-cty to v1.14.3 (#2201) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 5d7bd09d826..50b5651f12b 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/hashicorp/hcl/v2 v2.20.0 github.com/pmezard/go-difflib v1.0.0 - github.com/zclconf/go-cty v1.14.2 + github.com/zclconf/go-cty v1.14.3 ) require ( diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index f9d66e3e231..bf9fbc6c9cd 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -84,8 +84,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI= -github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.14.3 h1:1JXy1XroaGrzZuG6X9dt7HL6s9AwbY+l4UNL8o5B6ho= +github.com/zclconf/go-cty v1.14.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= From 48ede6a964b43659171f8928e87399edca96bd94 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 21:52:57 +0100 Subject: [PATCH 0856/1371] chore(deps): update terraform github to v6 (#2185) --- .../test-org/org/.terraform.lock.hcl | 47 ++++++++++++------- infra/terraform/test-org/org/versions.tf | 2 +- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/infra/terraform/test-org/org/.terraform.lock.hcl b/infra/terraform/test-org/org/.terraform.lock.hcl index 7ef00aa8bf3..580bc431d3e 100644 --- a/infra/terraform/test-org/org/.terraform.lock.hcl +++ b/infra/terraform/test-org/org/.terraform.lock.hcl @@ -142,23 +142,36 @@ provider "registry.terraform.io/hashicorp/time" { } provider "registry.terraform.io/integrations/github" { - version = "5.42.0" - constraints = "~> 5.0" + version = "6.0.0" + constraints = "~> 6.0" hashes = [ - "h1:vHTdYL6eXJfUzz4bs0ICyg2f8ct/K2EnGAjwLrAmL3U=", - "zh:0f97039c6b70295c4a82347bc8a0bcea700b3fb3df0e0be53585da025584bb7c", - "zh:12e78898580cc2a72b5f2a77e191b158f88e974b0500489b691f34842288745c", - "zh:23660933e4f00293c0d4d6cd6b4d72e382c0df46b70cecf22b5c4c090d3b61e3", - "zh:74119174b46d8d197dd209a246bf8b5db113c66467e02c831e68a8ceea312d3e", - "zh:829c4c0c202fc646eb0e1759eb9c8f0757df5295be2d3344b8fd6ca8ce9ef33b", - "zh:92043e667f520aee4e08a10a183ad5abe5487f3e9c8ad5a55ea1358b14b17b1a", - "zh:998909806b4ff42cf480fcd359ec1f12b868846f89284b991987f55de24876b7", - "zh:9f758447db3bf386516562abd6da1e54d22ddc207bda25961d2b5b049f32da0f", - "zh:a6259215612d4d6a281c671b2d5aa3a0a0b0a3ae92ed60b633998bb692e922d3", - "zh:ad7d78056beb44191911db9443bf5eec41a3d60e7b01def2a9e608d1c4288d27", - "zh:b697e7b0abef3000e1db482c897b82cd455621b488bb6c4cd3d270763d7b08ac", - "zh:db8e849eded8aebff780f89ab7e1339053d2f15c1c8f94103d70266a090527ad", - "zh:e5bdbb85fb148dd75877a7b94b595d4e8680e495c241db02c4b12b91e9d08953", - "zh:ee812c5fd77d3817fb688f720e5eb42d7ff04db67a125de48b05458c9f657483", + "h1:9pdD0wlgzxXpJt41zvAPTBJlSVQjrivGj/PKXonvjdI=", + "h1:C0tQYTi4xfFbv49ohtqcnUS6N3zkieMUlGgVtZa2KNg=", + "h1:IsJlhZqzDak5PE4u/DGPpVuh007NWn6RGL42sZNUZtE=", + "h1:JN9FDT93mtIFE9oTZFJN8iBBkYM4VUBN35H9ejI0pKA=", + "h1:KXepSQ13ED8xN5b74H4KPbWkm03U53F5ey+Htk+SLlk=", + "h1:LeDpsKXQvLh5IPHNj0i5/2j0G3QocWKosoI4Vt+R2GY=", + "h1:YGUmIpK8zBYXssW5vJcQEaRvimE/kxcIifcEDnfThMQ=", + "h1:aPVKHd7sUHWfHO2nY2jUaEGa6YK89KPNCykbWKVMPoA=", + "h1:cHq9ip3mg1zIEXQPvi7Zqb2dQcsQBZlthQWFMaRzbUE=", + "h1:gXBHc4e5JRRkX35POfXbiuBBPNxjQ6KAH0d9QR+jeWk=", + "h1:hgxwIjasPR+EYjFCms6PkTBYYx1+VJJfcOQ5/UjTReQ=", + "h1:jLOsi4Qu5g5D2/n/xg/CljAKCRH9F9paiWRZtyzWR+k=", + "h1:mTMlNk78lzcXTm4kgqCVFETkGIt0RgwQGzwDvI5HjbQ=", + "h1:p86Nsa+Fo29MVOXYG8x+M0MP/R4QS8nl4CUu6Us+/YU=", + "zh:0d12fde69c54d358af3a45cf1610b711e1cd6a5d0be8d71c24729f28faa4a67d", + "zh:501fd9a181bbb1f3e70c3a54463bc16974569dddd1311fdd682c3b893ebc8455", + "zh:69a486e2b2db2f7ff947027e5e245b48a1f71e10955e7243419c15d9d8330d54", + "zh:6f45927d00337db1ebce1da51be1033ffb632b470f901698e12cd51e1d2e16db", + "zh:7734fccb5594f72d8f0bd501f83bbdcc8cf69df27b54631a24d27cff5cead9ab", + "zh:77ffc5ec11754a1c94af468c17a95409a36b2696a4d1f656cef893d931d20b2e", + "zh:79dc9da6aff69825e66869ccdff83ce453f1374ee08152645bc324885e1d1b42", + "zh:7cbf2e8a01133b4ad442854b4baceb97cf4b9f43d69684a35583eaeb998cbc5d", + "zh:84d9788a46f57572a348a52bbbcb347786d967d2169825587b7bf1fc6d052d71", + "zh:a0b89fcce44c397c5f61286351f1752c154e1f238555c4a69a6cd49a57f79d02", + "zh:c2fe95b549239b01ae7956f00279ab6653521843b7009231aec3eb898c8dc395", + "zh:c58aa97ae9b24c260f1f8c7a4c2a7ffc75fe0c2ffa0cb9986d99e855c11a0cbb", + "zh:cb32a38fb412935ee021f70050db07dbe9ec698bcf149275fd3381565eb9b5d1", + "zh:d6ae9b8fa87f3fefe13976504731f661fd93729f8167dd5b7056b1d325b745e4", ] } diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index 10a77f821b2..7a4b47464e8 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -39,7 +39,7 @@ terraform { } github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } kubernetes = { source = "hashicorp/kubernetes" From 249cc53f4826dbcc284ae9fb5729fe0e8db9ddd4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Mar 2024 21:56:55 +0100 Subject: [PATCH 0857/1371] chore(deps): update terraform github to v6 (#2183) --- .../test-org/ci-project/.terraform.lock.hcl | 47 ++++++++++++------- .../terraform/test-org/ci-project/versions.tf | 2 +- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/infra/terraform/test-org/ci-project/.terraform.lock.hcl b/infra/terraform/test-org/ci-project/.terraform.lock.hcl index 30ca14a0a52..34cc58f42d8 100644 --- a/infra/terraform/test-org/ci-project/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-project/.terraform.lock.hcl @@ -42,23 +42,36 @@ provider "registry.terraform.io/hashicorp/google-beta" { } provider "registry.terraform.io/integrations/github" { - version = "5.42.0" - constraints = "~> 5.0" + version = "6.0.0" + constraints = "~> 6.0" hashes = [ - "h1:vHTdYL6eXJfUzz4bs0ICyg2f8ct/K2EnGAjwLrAmL3U=", - "zh:0f97039c6b70295c4a82347bc8a0bcea700b3fb3df0e0be53585da025584bb7c", - "zh:12e78898580cc2a72b5f2a77e191b158f88e974b0500489b691f34842288745c", - "zh:23660933e4f00293c0d4d6cd6b4d72e382c0df46b70cecf22b5c4c090d3b61e3", - "zh:74119174b46d8d197dd209a246bf8b5db113c66467e02c831e68a8ceea312d3e", - "zh:829c4c0c202fc646eb0e1759eb9c8f0757df5295be2d3344b8fd6ca8ce9ef33b", - "zh:92043e667f520aee4e08a10a183ad5abe5487f3e9c8ad5a55ea1358b14b17b1a", - "zh:998909806b4ff42cf480fcd359ec1f12b868846f89284b991987f55de24876b7", - "zh:9f758447db3bf386516562abd6da1e54d22ddc207bda25961d2b5b049f32da0f", - "zh:a6259215612d4d6a281c671b2d5aa3a0a0b0a3ae92ed60b633998bb692e922d3", - "zh:ad7d78056beb44191911db9443bf5eec41a3d60e7b01def2a9e608d1c4288d27", - "zh:b697e7b0abef3000e1db482c897b82cd455621b488bb6c4cd3d270763d7b08ac", - "zh:db8e849eded8aebff780f89ab7e1339053d2f15c1c8f94103d70266a090527ad", - "zh:e5bdbb85fb148dd75877a7b94b595d4e8680e495c241db02c4b12b91e9d08953", - "zh:ee812c5fd77d3817fb688f720e5eb42d7ff04db67a125de48b05458c9f657483", + "h1:9pdD0wlgzxXpJt41zvAPTBJlSVQjrivGj/PKXonvjdI=", + "h1:C0tQYTi4xfFbv49ohtqcnUS6N3zkieMUlGgVtZa2KNg=", + "h1:IsJlhZqzDak5PE4u/DGPpVuh007NWn6RGL42sZNUZtE=", + "h1:JN9FDT93mtIFE9oTZFJN8iBBkYM4VUBN35H9ejI0pKA=", + "h1:KXepSQ13ED8xN5b74H4KPbWkm03U53F5ey+Htk+SLlk=", + "h1:LeDpsKXQvLh5IPHNj0i5/2j0G3QocWKosoI4Vt+R2GY=", + "h1:YGUmIpK8zBYXssW5vJcQEaRvimE/kxcIifcEDnfThMQ=", + "h1:aPVKHd7sUHWfHO2nY2jUaEGa6YK89KPNCykbWKVMPoA=", + "h1:cHq9ip3mg1zIEXQPvi7Zqb2dQcsQBZlthQWFMaRzbUE=", + "h1:gXBHc4e5JRRkX35POfXbiuBBPNxjQ6KAH0d9QR+jeWk=", + "h1:hgxwIjasPR+EYjFCms6PkTBYYx1+VJJfcOQ5/UjTReQ=", + "h1:jLOsi4Qu5g5D2/n/xg/CljAKCRH9F9paiWRZtyzWR+k=", + "h1:mTMlNk78lzcXTm4kgqCVFETkGIt0RgwQGzwDvI5HjbQ=", + "h1:p86Nsa+Fo29MVOXYG8x+M0MP/R4QS8nl4CUu6Us+/YU=", + "zh:0d12fde69c54d358af3a45cf1610b711e1cd6a5d0be8d71c24729f28faa4a67d", + "zh:501fd9a181bbb1f3e70c3a54463bc16974569dddd1311fdd682c3b893ebc8455", + "zh:69a486e2b2db2f7ff947027e5e245b48a1f71e10955e7243419c15d9d8330d54", + "zh:6f45927d00337db1ebce1da51be1033ffb632b470f901698e12cd51e1d2e16db", + "zh:7734fccb5594f72d8f0bd501f83bbdcc8cf69df27b54631a24d27cff5cead9ab", + "zh:77ffc5ec11754a1c94af468c17a95409a36b2696a4d1f656cef893d931d20b2e", + "zh:79dc9da6aff69825e66869ccdff83ce453f1374ee08152645bc324885e1d1b42", + "zh:7cbf2e8a01133b4ad442854b4baceb97cf4b9f43d69684a35583eaeb998cbc5d", + "zh:84d9788a46f57572a348a52bbbcb347786d967d2169825587b7bf1fc6d052d71", + "zh:a0b89fcce44c397c5f61286351f1752c154e1f238555c4a69a6cd49a57f79d02", + "zh:c2fe95b549239b01ae7956f00279ab6653521843b7009231aec3eb898c8dc395", + "zh:c58aa97ae9b24c260f1f8c7a4c2a7ffc75fe0c2ffa0cb9986d99e855c11a0cbb", + "zh:cb32a38fb412935ee021f70050db07dbe9ec698bcf149275fd3381565eb9b5d1", + "zh:d6ae9b8fa87f3fefe13976504731f661fd93729f8167dd5b7056b1d325b745e4", ] } diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf index de64a4d73f8..67d0458307c 100644 --- a/infra/terraform/test-org/ci-project/versions.tf +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -19,7 +19,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } google = { version = ">= 3.39, < 6" From acb75ea14aa2d740da32ff9f0d96a38299c4abf9 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 13:17:43 -0800 Subject: [PATCH 0858/1371] chore(master): release module-swapper 0.4.2 (#2199) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 33a8430d505..f7e99799d67 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.13.0", - "infra/module-swapper": "0.4.1" + "infra/module-swapper": "0.4.2" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 1ba5d0b9138..654f7024ae2 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.4.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.1...infra/module-swapper/v0.4.2) (2024-03-07) + + +### Bug Fixes + +* **deps:** update module github.com/hashicorp/hcl/v2 to v2.20.0 ([#2197](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2197)) ([8cdbe34](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8cdbe3444ee4fa25f25dcd779b2cfc63ee158dc5)) +* **deps:** update module github.com/zclconf/go-cty to v1.14.3 ([#2201](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2201)) ([e6a9f22](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e6a9f220b040fd63946eabaf8ec84385611ca8d2)) + ## [0.4.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.0...infra/module-swapper/v0.4.1) (2024-02-13) From a9a2edb8887f48b5882c0d6a022bb82c0aca695f Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 7 Mar 2024 13:26:59 -0800 Subject: [PATCH 0859/1371] chore: Update Tools to 1.19.7 (#2191) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 06785c2191a..725112cf0d1 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.7.4 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 466.0.0 +CLOUD_SDK_VERSION := 467.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.55.11 +TERRAGRUNT_VERSION := 0.55.12 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -43,10 +43,10 @@ TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.1 +MODULE_SWAPPER_VERSION := 0.4.2 # For developer-tools-krm -GOLANGCI_VERSION := 1.56.1 +GOLANGCI_VERSION := 1.56.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 954b5045c51dff0fbb339da51e0c334107f176e5 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Mon, 11 Mar 2024 18:47:06 -0700 Subject: [PATCH 0860/1371] feat: adding a CB trigger and periodic job for purge untagged CFT images (#2204) Co-authored-by: Andrew Peabody --- .../test-org/ci-project/.terraform.lock.hcl | 97 ++++++++----------- .../test-org/ci-project/image_purger.tf | 47 +++++++++ .../image-cleanup/cft-image-cleanup.sh | 41 ++++++++ .../test-org/image-cleanup/cloudbuild.yaml | 65 +++++++++++++ 4 files changed, 195 insertions(+), 55 deletions(-) create mode 100644 infra/terraform/test-org/ci-project/image_purger.tf create mode 100755 infra/terraform/test-org/image-cleanup/cft-image-cleanup.sh create mode 100644 infra/terraform/test-org/image-cleanup/cloudbuild.yaml diff --git a/infra/terraform/test-org/ci-project/.terraform.lock.hcl b/infra/terraform/test-org/ci-project/.terraform.lock.hcl index 34cc58f42d8..c9dad1b9f0b 100644 --- a/infra/terraform/test-org/ci-project/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-project/.terraform.lock.hcl @@ -2,76 +2,63 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "5.10.0" + version = "5.20.0" constraints = ">= 3.39.0, >= 3.53.0, >= 3.64.0, < 6.0.0" hashes = [ - "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", - "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", - "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", - "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", - "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", - "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", - "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", - "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", - "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", - "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", + "h1:1A6/7vxNHz+9Htdkr0NF3cFFStT+kR3aC5Hh8y4fyVA=", + "zh:10197fce4ddf2be32717fb3a5992b45ee1a134f8c66207ba7a2d89339bcad17e", + "zh:428c22bc9ae637adaa3c99e7ec2f5df3828c1625cebfc0ef680e520abdaff820", + "zh:4474139669a13997abd3d8282dc00905a08c695895b1b3d09e5a87753be54a24", + "zh:4bcd7a09577303d71146899f70413a7376531c940015eb6bfa047df55778d2ef", + "zh:5c5083c8deae3093a63d9a7ff18844985e35f2108fca49a812be85f3ec8e7409", + "zh:72ab7bf2a7a1ae98bf1ed790cc3babcd6399db58aa2c9bcef005f9b709b8ad98", + "zh:95cf50e8aa4fe5495b983aca1478cd7909fafc92c0e1942b764343076f367e3f", + "zh:9efd8613897beee98c11befc1f8ebfea14b5a0e88b0fdd2f737a1a2acd5e2a2f", + "zh:b91ddced2f7916338e1f7d0fa003a15bb5700d8d4f389d906f2944334d67bbc2", + "zh:db0270eb90eda9ce98668afc517365d5876c81bb12f0375d6837d204231f6df5", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", - "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", + "zh:f58e490c192698ff8655081d467e57ee13558aa47f950f1d249318bf5cc93e5e", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.10.0" + version = "5.20.0" constraints = ">= 3.39.0, >= 3.64.0, < 6.0.0" hashes = [ - "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", - "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", - "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", - "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", - "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", - "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", - "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", - "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", - "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", - "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", - "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", + "h1:VSz6LygMw9vekbL9jkhxImhjeiafFrOkVIpojyeWVOU=", + "zh:2792639ca660f373ce0c0d152f28d1d2e59b590c19d960eddea3c7b70be2e811", + "zh:5a29c775934d5fdf3960687222b0c1505741104ade9a94e42a11d6bef73c1656", + "zh:71fcdf323e7e5bf91d12450ad7f948eef3df935e1875764d5f3c6316b57faa1b", + "zh:89ca5d8cb4d17d7855b7ee7c347a3bb57d5c935c4cc6d18ac78098c9c1c6008a", + "zh:c2a1e2d093ade9a5a4d5170fa4d439c2542f7d01a114af2a5a92b071268d193e", + "zh:c4999b0bb00ce68bea7b203fdd6685c8133f7593d8ce7a9214cedac4844c22b0", + "zh:c912e8f6baa182780678b1caf44863e7d829942c0e9f4a3f04bd623e1bf5f430", + "zh:d553df714bc0d94b3bcdba37a3fca2eb099d7e494502a64a20b3d0f5213b979b", + "zh:d92266f87f3679b179a238b2a3df5309da6b9d86bdcb9311cce5f4b9537938fb", + "zh:e0daa80c3691c6b977c64d22a0c4f6e180d5d3dc888306f7057adb179baab761", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", + "zh:fee824aeb0f16837d3aaeadbabdf9e40d162344415acba8c521e43cf76d0efa8", ] } provider "registry.terraform.io/integrations/github" { - version = "6.0.0" + version = "6.0.1" constraints = "~> 6.0" hashes = [ - "h1:9pdD0wlgzxXpJt41zvAPTBJlSVQjrivGj/PKXonvjdI=", - "h1:C0tQYTi4xfFbv49ohtqcnUS6N3zkieMUlGgVtZa2KNg=", - "h1:IsJlhZqzDak5PE4u/DGPpVuh007NWn6RGL42sZNUZtE=", - "h1:JN9FDT93mtIFE9oTZFJN8iBBkYM4VUBN35H9ejI0pKA=", - "h1:KXepSQ13ED8xN5b74H4KPbWkm03U53F5ey+Htk+SLlk=", - "h1:LeDpsKXQvLh5IPHNj0i5/2j0G3QocWKosoI4Vt+R2GY=", - "h1:YGUmIpK8zBYXssW5vJcQEaRvimE/kxcIifcEDnfThMQ=", - "h1:aPVKHd7sUHWfHO2nY2jUaEGa6YK89KPNCykbWKVMPoA=", - "h1:cHq9ip3mg1zIEXQPvi7Zqb2dQcsQBZlthQWFMaRzbUE=", - "h1:gXBHc4e5JRRkX35POfXbiuBBPNxjQ6KAH0d9QR+jeWk=", - "h1:hgxwIjasPR+EYjFCms6PkTBYYx1+VJJfcOQ5/UjTReQ=", - "h1:jLOsi4Qu5g5D2/n/xg/CljAKCRH9F9paiWRZtyzWR+k=", - "h1:mTMlNk78lzcXTm4kgqCVFETkGIt0RgwQGzwDvI5HjbQ=", - "h1:p86Nsa+Fo29MVOXYG8x+M0MP/R4QS8nl4CUu6Us+/YU=", - "zh:0d12fde69c54d358af3a45cf1610b711e1cd6a5d0be8d71c24729f28faa4a67d", - "zh:501fd9a181bbb1f3e70c3a54463bc16974569dddd1311fdd682c3b893ebc8455", - "zh:69a486e2b2db2f7ff947027e5e245b48a1f71e10955e7243419c15d9d8330d54", - "zh:6f45927d00337db1ebce1da51be1033ffb632b470f901698e12cd51e1d2e16db", - "zh:7734fccb5594f72d8f0bd501f83bbdcc8cf69df27b54631a24d27cff5cead9ab", - "zh:77ffc5ec11754a1c94af468c17a95409a36b2696a4d1f656cef893d931d20b2e", - "zh:79dc9da6aff69825e66869ccdff83ce453f1374ee08152645bc324885e1d1b42", - "zh:7cbf2e8a01133b4ad442854b4baceb97cf4b9f43d69684a35583eaeb998cbc5d", - "zh:84d9788a46f57572a348a52bbbcb347786d967d2169825587b7bf1fc6d052d71", - "zh:a0b89fcce44c397c5f61286351f1752c154e1f238555c4a69a6cd49a57f79d02", - "zh:c2fe95b549239b01ae7956f00279ab6653521843b7009231aec3eb898c8dc395", - "zh:c58aa97ae9b24c260f1f8c7a4c2a7ffc75fe0c2ffa0cb9986d99e855c11a0cbb", - "zh:cb32a38fb412935ee021f70050db07dbe9ec698bcf149275fd3381565eb9b5d1", - "zh:d6ae9b8fa87f3fefe13976504731f661fd93729f8167dd5b7056b1d325b745e4", + "h1:0KIqqSJNVJeGVWmuQ/E+dMxXUyZqFcPBKx0TwCa0k58=", + "zh:02809196d73846c34f435633deb876391e036628254ec7733e991ef4be8937b8", + "zh:107974d5ee14c2116ecb175e9a98b80b49d1b16f0a9120f55fc59bb494510446", + "zh:1af00f406b490d28f105b9fec7151b467004676b829437d2f0e796409e8353fb", + "zh:1b9989d19e3b6a795e166952baaf3ade64b45d416933aa3ba14591effd15c0a0", + "zh:2b74693b5bf0d1be923acf9b34062f8a046473858bb7f22d05779f8752dd7bb2", + "zh:4845cb2a8eb59d3d3cfba8906d51681f312469fa9694ad6fd3e8f4c39396a385", + "zh:58fa1b8dbe09b553a5e92e108439c0be454181ba295afb65e9f004589619044c", + "zh:66136c381022fa6e1829d5de0ded42d75b1566b7bd431370fc716829f1bc4cb0", + "zh:680e93f5525541047b78bdac6a88779fe6656b503d60cedab6a31a134116be52", + "zh:6a9c7fb124aac014bd7f2248ae317316da52118ffdc9289850e86cea8d503717", + "zh:82250d7d4eba026a9438e7637931fc662a70a918efc346b83aebeb1fb031ee81", + "zh:858229daa25ef519c194441663b163fb03daa5f8e2376d77f523aa2c0ae1268f", + "zh:94eba25a9e491640428f5ee349f7fa00bc7d7e7928bc60ca2c5be82c51187441", + "zh:e6a75c879bb8c1f3a867a7320afb01e52bde5881459e568c0424a048ce2d4f4d", ] } diff --git a/infra/terraform/test-org/ci-project/image_purger.tf b/infra/terraform/test-org/ci-project/image_purger.tf new file mode 100644 index 00000000000..c39e9149833 --- /dev/null +++ b/infra/terraform/test-org/ci-project/image_purger.tf @@ -0,0 +1,47 @@ +/** + * Copyright 2024 Google LLC + * + * 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. + */ + +resource "google_cloudbuild_trigger" "image_purge_trigger" { + description = "Purge CFT images without tags" + github { + owner = local.gh_orgs.infra + name = local.gh_repos.infra + # this will be invoked via cloud scheduler, hence using a regex that will not match any branch + push { + branch = ".^" + } + } + + filename = "infra/terraform/test-org/image-cleanup/cloudbuild.yaml" +} + +resource "google_cloud_scheduler_job" "image_purge_job" { + name = "trigger-purge-cft-image-build" + description = "Trigger Purge CFT images without tags build" + region = "us-central1" + # run every day at 3:00 + schedule = "0 3 * * *" + + http_target { + http_method = "POST" + uri = "https://cloudbuild.googleapis.com/v1/projects/${local.project_id}/triggers/${google_cloudbuild_trigger.image_purge_trigger.trigger_id}:run" + body = base64encode("{\"branchName\": \"master\"}") + oauth_token { + service_account_email = google_service_account.service_account.email + } + } + depends_on = [google_project_iam_member.project] +} diff --git a/infra/terraform/test-org/image-cleanup/cft-image-cleanup.sh b/infra/terraform/test-org/image-cleanup/cft-image-cleanup.sh new file mode 100755 index 00000000000..e687b0042eb --- /dev/null +++ b/infra/terraform/test-org/image-cleanup/cft-image-cleanup.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +IFS=$'\n\t' +set -eou pipefail +MODE="DRYRUN" + +if [[ "$#" -lt 1 || "${1}" == '-h' || "${1}" == '--help' ]]; then + cat >&2 <<"EOF" +cft-image-cleanup.sh cleans up untagged cft-dev-tool images. +USAGE: + cft-image-cleanup.sh REPOSITORY [DELETE] + e.g. $ ./cft-image-cleanup.sh gcr.io/cloud-foundation-cicd/cft/developer-tools DELETE + would delete all image digests that do not have a tag in the gcr.io/cloud-foundation-cicd/cft/developer-tools repository +EOF + exit 1 +fi + +main(){ + local C=0 + IMAGE="${1}" + for digest in $(gcloud container images list-tags "${IMAGE}" --limit=999999 --sort-by=TIMESTAMP \ + --format='get(digest)' --filter='-tags:*'); do + if [[ "$MODE" == "DRYRUN" ]]; then + echo "to delete: $digest" + elif [[ "$MODE" == "DELETE" ]]; then + ( + set -x + gcloud container images delete -q --force-delete-tags "${IMAGE}@${digest}" + ) + fi + (( C=C+1 )) + done + echo "Deleted ${C} images in ${IMAGE}." >&2 +} + +if [[ "$#" -eq 1 ]]; then + echo ">>> executing in DRY RUN mode; use the DELETE arg for deleting the images <<<" +elif [[ "$#" -eq 2 && "${2}" == 'DELETE' ]]; then + MODE="DELETE" +fi +main "${1}" diff --git a/infra/terraform/test-org/image-cleanup/cloudbuild.yaml b/infra/terraform/test-org/image-cleanup/cloudbuild.yaml new file mode 100644 index 00000000000..e43e2f93e7a --- /dev/null +++ b/infra/terraform/test-org/image-cleanup/cloudbuild.yaml @@ -0,0 +1,65 @@ +# Copyright 2024 Google LLC +# +# 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 +# +# https://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. + +steps: + - name: "gcr.io/cloud-builders/gcloud" + dir: "infra/terraform/test-org/image-cleanup" + id: "purge-dev-tools" + waitFor: ["-"] + entrypoint: "bash" + args: + [ + "./cft-image-cleanup.sh", + "$_REGISTRY_URL/$_DOCKER_IMAGE_DEVELOPER_TOOLS", + "DELETE", + ] + - name: "gcr.io/cloud-builders/gcloud" + dir: "infra/terraform/test-org/image-cleanup" + id: "purge-dev-tools-light" + waitFor: ["-"] + entrypoint: "bash" + args: + [ + "./cft-image-cleanup.sh", + "$_REGISTRY_URL/$_DOCKER_IMAGE_DEVELOPER_TOOLS_LIGHT", + "DELETE", + ] + - name: "gcr.io/cloud-builders/gcloud" + dir: "infra/terraform/test-org/image-cleanup" + id: "purge-dev-tool-krm" + waitFor: ["-"] + entrypoint: "bash" + args: + [ + "./cft-image-cleanup.sh", + "$_REGISTRY_URL/$_DOCKER_IMAGE_DEVELOPER_TOOLS_KRM", + "DELETE", + ] + - name: "gcr.io/cloud-builders/gcloud" + dir: "infra/terraform/test-org/image-cleanup" + id: "purge-dev-tools-jenkins" + waitFor: ["-"] + entrypoint: "bash" + args: + [ + "./cft-image-cleanup.sh", + "$_REGISTRY_URL/$_DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS", + "DELETE", + ] +substitutions: + _REGISTRY_URL: "gcr.io/cloud-foundation-cicd" + _DOCKER_IMAGE_DEVELOPER_TOOLS: "cft/developer-tools" + _DOCKER_IMAGE_DEVELOPER_TOOLS_LIGHT: "cft/developer-tools-light" + _DOCKER_IMAGE_DEVELOPER_TOOLS_KRM: "cft/developer-tools-krm" + _DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS: "cft/developer-tools-jenkins" From 43f002fe3302fcbe3de487699354c76a42b03bce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:33:47 -0700 Subject: [PATCH 0861/1371] fix(deps): bump google.golang.org/protobuf from 1.31.0 to 1.33.0 in /infra/blueprint-test (#2207) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 2ae3b9f13d1..2f339160e7d 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -99,7 +99,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/grpc v1.58.3 // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/protobuf v1.33.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 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 19219958aa4..60ce5902ae9 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -1046,8 +1046,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 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= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From 886582ac518d22724d83e4ab5e093bd14b7728cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:27:54 -0700 Subject: [PATCH 0862/1371] chore(deps): bump google.golang.org/protobuf from 1.32.0 to 1.33.0 in /infra/utils/fbf (#2209) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 78ef3b4b688..fdd4f4ff36d 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -42,6 +42,6 @@ require ( google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 // indirect google.golang.org/grpc v1.62.0 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 593a0bd5159..fdcd4f1e4da 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -189,8 +189,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD 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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 7f56a5fbe6d5b3161aef24261248a38fbb8736a4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 14 Mar 2024 07:00:55 +0100 Subject: [PATCH 0863/1371] chore(deps): update dorny/paths-filter action to v3.0.2 (#2203) --- .github/workflows/go-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 383a6d28aea..352a44fa446 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -28,7 +28,7 @@ jobs: with: go-version-file: ${{ matrix.folder }}/go.mod cache-dependency-path: ${{ matrix.folder }}/go.sum - - uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 id: changes with: filters: | From 285c37fe588bec06492fc78d27e8793892d5d986 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:53:02 -0700 Subject: [PATCH 0864/1371] chore: Update Tools to 1.19.8 (#2202) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 725112cf0d1..40bfc84e0d1 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.7.4 +TERRAFORM_VERSION := 1.7.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 467.0.0 +CLOUD_SDK_VERSION := 468.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.55.12 +TERRAGRUNT_VERSION := 0.55.14 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -50,12 +50,12 @@ GOLANGCI_VERSION := 1.56.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.14.0 +GATOR_VERSION := 3.14.1 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.0 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 310cf0f964964cd9b7dfb3bc13f602781d0f1fba Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 13:27:02 -0700 Subject: [PATCH 0865/1371] chore(master): release blueprint-test 0.13.1 (#2174) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f7e99799d67..5ef89bb8f60 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.13.0", + "infra/blueprint-test": "0.13.1", "infra/module-swapper": "0.4.2" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index f62ff69559d..bbedd7e169a 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.13.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.13.0...infra/blueprint-test/v0.13.1) (2024-03-14) + + +### Bug Fixes + +* **deps:** bump google.golang.org/protobuf from 1.31.0 to 1.33.0 in /infra/blueprint-test ([#2207](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2207)) ([43f002f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/43f002fe3302fcbe3de487699354c76a42b03bce)) +* **deps:** update go modules ([#2195](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2195)) ([af8a62c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/af8a62cc8c0db6fe00616921d1bed527253ebaa6)) +* **deps:** update module github.com/tidwall/gjson to v1.17.1 ([#2172](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2172)) ([3f3199e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3f3199e05baf84360fbb4a066b59cb0119ba1067)) + ## [0.13.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.12.1...infra/blueprint-test/v0.13.0) (2024-02-16) From 2d67c60903880b2d9dacfdf8b34a53be4a20c6ed Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Wed, 20 Mar 2024 13:31:31 -0400 Subject: [PATCH 0866/1371] fix(tft): Correct message in DefaultVerify (#2213) --- infra/blueprint-test/pkg/tft/terraform.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 421dbf0c988..35807a49582 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -474,7 +474,7 @@ func (b *TFBlueprintTest) DefaultVerify(assert *assert.Assertions) { // exit code 0 is success with no diffs, 2 is success with non-empty diff // https://www.terraform.io/docs/cli/commands/plan.html#detailed-exitcode assert.NotEqual(1, e, "plan after apply should not fail") - assert.NotEqual(2, e, "plan after apply should have non-empty diff") + assert.NotEqual(2, e, "plan after apply should have no diff") } // DefaultInit runs TF init and validate on a blueprint. From 2a1b7f55c7b1c48396a6ad8f2e69af6564080602 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 20 Mar 2024 18:34:40 +0100 Subject: [PATCH 0867/1371] chore(deps): update github/codeql-action action to v3.24.7 (#2212) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 808fdf2f275..52f1acd84da 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/init@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/autobuild@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/analyze@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a63efde75cc..f7c384c3688 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/upload-sarif@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 with: sarif_file: results.sarif From 01bac43ae89af3e5e9112958e647e872d75aac76 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 20 Mar 2024 18:41:31 +0100 Subject: [PATCH 0868/1371] chore(deps): update peter-evans/create-pull-request action to v6.0.2 (#2211) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ecb2cd11530..284fb46185f 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -106,7 +106,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v6.0.1 + uses: peter-evans/create-pull-request@70a41aba780001da0a30141984ae2a0c95d8704e # v6.0.2 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 47fcc41f6c8b027deaf9b3ae549be30a025288d1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 20 Mar 2024 18:44:25 +0100 Subject: [PATCH 0869/1371] chore(deps): update github/codeql-action action to v3.24.8 (#2215) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 52f1acd84da..0f3dee8d282 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 + uses: github/codeql-action/init@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 + uses: github/codeql-action/autobuild@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 + uses: github/codeql-action/analyze@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f7c384c3688..c99378718d8 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 + uses: github/codeql-action/upload-sarif@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 with: sarif_file: results.sarif From 5add5ca7757b24ddf82e5b183eddcd1828057697 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 20 Mar 2024 18:53:22 +0100 Subject: [PATCH 0870/1371] chore(deps): update go modules (#2217) --- infra/utils/fbf/go.mod | 18 +++++++++--------- infra/utils/fbf/go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index fdd4f4ff36d..596187964d6 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,9 +4,9 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.5.4 + github.com/jedib0t/go-pretty/v6 v6.5.5 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.169.0 + google.golang.org/api v0.170.0 ) require ( @@ -33,15 +33,15 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.17.0 // indirect - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 // indirect - google.golang.org/grpc v1.62.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 // indirect + google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index fdcd4f1e4da..e25c8f6eea3 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -61,8 +61,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= -github.com/jedib0t/go-pretty/v6 v6.5.4 h1:gOGo0613MoqUcf0xCj+h/V3sHDaZasfv152G6/5l91s= -github.com/jedib0t/go-pretty/v6 v6.5.4/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= +github.com/jedib0t/go-pretty/v6 v6.5.5 h1:PpIU8lOjxvVYGGKule0QxxJfNysUSbC9lggQU2cpZJc= +github.com/jedib0t/go-pretty/v6 v6.5.5/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -98,8 +98,8 @@ go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -114,11 +114,11 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL 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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= -golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -135,12 +135,12 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/api v0.170.0 h1:zMaruDePM88zxZBG+NG8+reALO2rfLhe/JShitLyT48= +google.golang.org/api v0.170.0/go.mod h1:/xql9M2btF85xac/VAm4PsLMTLVGUOpq4BE9R8jyNy8= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -169,15 +169,15 @@ google.golang.org/genproto v0.0.0-20240205150955-31a09d347014 h1:g/4bk7P6TPMkAUb google.golang.org/genproto v0.0.0-20240205150955-31a09d347014/go.mod h1:xEgQu1e4stdSSsxPDK8Azkrk/ECl5HvdPf6nbZrTS5M= google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 h1:x9PwdEgd11LgK+orcck69WVRo7DezSO4VUMPI4xpc8A= google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 h1:Xs9lu+tLXxLIfuci70nG4cpwaRC+mRQPUL7LoIeDJC4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 h1:9IZDv+/GcI6u+a4jRFRLxQs0RUCfavGfoOgEW6jpkI0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= -google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= 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= From 765f4bbd33b3d5752f94a471beb3262609ed1e62 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 20 Mar 2024 20:02:07 +0100 Subject: [PATCH 0871/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.46.12 (#2216) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 2f339160e7d..83046ef6e44 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -5,7 +5,7 @@ go 1.21 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.46.11 + github.com/gruntwork-io/terratest v0.46.12 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 60ce5902ae9..e7a50b1cbe3 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -376,8 +376,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.11 h1:1Z9G18I2FNuH87Ro0YtjW4NH9ky4GDpfzE7+ivkPeB8= -github.com/gruntwork-io/terratest v0.46.11/go.mod h1:DVZG/s7eP1u3KOQJJfE6n7FDriMWpDvnj85XIlZMEM8= +github.com/gruntwork-io/terratest v0.46.12 h1:yz2mFk0GKnkn2Cofb587mePBkATl9HFMOlfRzZbO4D8= +github.com/gruntwork-io/terratest v0.46.12/go.mod h1:8jNhyxN3JLlzE6rmqJZa7R7UFYtUumt0NkCeJQOtxt4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From a24b0595aa1776a13ef917bb2a3ced0eb30da1b0 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 20 Mar 2024 12:11:01 -0700 Subject: [PATCH 0872/1371] chore: Update Tools to 1.19.9 (#2210) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 40bfc84e0d1..af60b0b8325 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.7.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 468.0.0 +CLOUD_SDK_VERSION := 469.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.55.14 +TERRAGRUNT_VERSION := 0.55.18 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.2.16 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.28.7 +KUBECTL_VERSION := 1.28.8 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 @@ -46,16 +46,16 @@ ALPINE_VERSION := 3.19 MODULE_SWAPPER_VERSION := 0.4.2 # For developer-tools-krm -GOLANGCI_VERSION := 1.56.2 +GOLANGCI_VERSION := 1.57.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow GATOR_VERSION := 3.14.1 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.19.0 +GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 23488b3a1e3db02b69016f2a9439c3211b27a18a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 20 Mar 2024 20:48:22 +0100 Subject: [PATCH 0873/1371] chore(deps): update golangci/golangci-lint docker tag to v1.57.1 (#2219) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index ad6600baee1..340f6ee9553 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.56.2 +GOLANGCI_VERSION := 1.57.1 .PHONY: docker_go_lint docker_go_lint: From 4004d2a2ffaae6504279130cb31c42ce2d8dfa99 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 21 Mar 2024 16:32:47 +0100 Subject: [PATCH 0874/1371] fix(deps): update module github.com/zclconf/go-cty to v1.14.4 (#2222) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 50b5651f12b..85be2724b5d 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/hashicorp/hcl/v2 v2.20.0 github.com/pmezard/go-difflib v1.0.0 - github.com/zclconf/go-cty v1.14.3 + github.com/zclconf/go-cty v1.14.4 ) require ( diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index bf9fbc6c9cd..eedc50d5278 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -84,8 +84,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.14.3 h1:1JXy1XroaGrzZuG6X9dt7HL6s9AwbY+l4UNL8o5B6ho= -github.com/zclconf/go-cty v1.14.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= +github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= From b0e2940f4c45f3aa790bcf276d32ece681383c23 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 21 Mar 2024 17:09:00 +0100 Subject: [PATCH 0875/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.46.13 (#2221) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 83046ef6e44..e56f7defb00 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -5,7 +5,7 @@ go 1.21 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.46.12 + github.com/gruntwork-io/terratest v0.46.13 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index e7a50b1cbe3..b16da465d62 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -376,8 +376,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.12 h1:yz2mFk0GKnkn2Cofb587mePBkATl9HFMOlfRzZbO4D8= -github.com/gruntwork-io/terratest v0.46.12/go.mod h1:8jNhyxN3JLlzE6rmqJZa7R7UFYtUumt0NkCeJQOtxt4= +github.com/gruntwork-io/terratest v0.46.13 h1:FDaEoZ7DtkomV8pcwLdBV/VsytdjnPRqJkIriYEYwjs= +github.com/gruntwork-io/terratest v0.46.13/go.mod h1:8sxu3Qup8TxtbzOHzq0MUrQffJj/G61/OwlsReaCwpo= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From 58662e6d5e71e33dbbe24a049dbe162db386d7c6 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 21 Mar 2024 16:34:24 -0700 Subject: [PATCH 0876/1371] chore(master): release blueprint-test 0.13.2 (#2214) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5ef89bb8f60..0cd1a326a3b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.13.1", + "infra/blueprint-test": "0.13.2", "infra/module-swapper": "0.4.2" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index bbedd7e169a..9a9f1bde00b 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.13.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.13.1...infra/blueprint-test/v0.13.2) (2024-03-21) + + +### Bug Fixes + +* **deps:** update module github.com/gruntwork-io/terratest to v0.46.12 ([#2216](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2216)) ([765f4bb](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/765f4bbd33b3d5752f94a471beb3262609ed1e62)) +* **deps:** update module github.com/gruntwork-io/terratest to v0.46.13 ([#2221](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2221)) ([b0e2940](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/b0e2940f4c45f3aa790bcf276d32ece681383c23)) +* **tft:** Correct message in DefaultVerify ([#2213](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2213)) ([2d67c60](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2d67c60903880b2d9dacfdf8b34a53be4a20c6ed)) + ## [0.13.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.13.0...infra/blueprint-test/v0.13.1) (2024-03-14) From 9da54a9ef93ad4a44344677ddd1bda76e84c0f4e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 22 Mar 2024 00:40:05 +0100 Subject: [PATCH 0877/1371] chore(deps): update module google.golang.org/api to v0.171.0 (#2225) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 19 +++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 596187964d6..ee5455bd347 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.5 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.170.0 + google.golang.org/api v0.171.0 ) require ( @@ -22,7 +22,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect @@ -40,7 +40,7 @@ require ( golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index e25c8f6eea3..b1f57c62e23 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -59,8 +59,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/jedib0t/go-pretty/v6 v6.5.5 h1:PpIU8lOjxvVYGGKule0QxxJfNysUSbC9lggQU2cpZJc= github.com/jedib0t/go-pretty/v6 v6.5.5/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.170.0 h1:zMaruDePM88zxZBG+NG8+reALO2rfLhe/JShitLyT48= -google.golang.org/api v0.170.0/go.mod h1:/xql9M2btF85xac/VAm4PsLMTLVGUOpq4BE9R8jyNy8= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -165,12 +165,11 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240205150955-31a09d347014 h1:g/4bk7P6TPMkAUbUhquq98xey1slwvuVJPosdBqYJlU= -google.golang.org/genproto v0.0.0-20240205150955-31a09d347014/go.mod h1:xEgQu1e4stdSSsxPDK8Azkrk/ECl5HvdPf6nbZrTS5M= -google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 h1:x9PwdEgd11LgK+orcck69WVRo7DezSO4VUMPI4xpc8A= -google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 h1:9IZDv+/GcI6u+a4jRFRLxQs0RUCfavGfoOgEW6jpkI0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 39343a3380d87c728db1688c118ffdd41c106d7d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 21 Mar 2024 16:41:53 -0700 Subject: [PATCH 0878/1371] chore(master): release module-swapper 0.4.3 (#2224) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0cd1a326a3b..093a45f3099 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.13.2", - "infra/module-swapper": "0.4.2" + "infra/module-swapper": "0.4.3" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 654f7024ae2..4f7cfbb450f 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.2...infra/module-swapper/v0.4.3) (2024-03-21) + + +### Bug Fixes + +* **deps:** update module github.com/zclconf/go-cty to v1.14.4 ([#2222](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2222)) ([4004d2a](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/4004d2a2ffaae6504279130cb31c42ce2d8dfa99)) + ## [0.4.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.1...infra/module-swapper/v0.4.2) (2024-03-07) From b1f7dd70f427828a63b5c80ad3b13eb80986acdc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 22 Mar 2024 16:56:24 +0100 Subject: [PATCH 0879/1371] chore(deps): update golangci/golangci-lint docker tag to v1.57.1 (#2218) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index f34dff7c7c5..0557db43d40 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.56.2 +GOLANGCI_VERSION := 1.57.1 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From ffbc009e96de87d02621f57e2939a0efef59f447 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 22 Mar 2024 11:51:29 -0700 Subject: [PATCH 0880/1371] chore: add eeaton as owner for terraform-example-foundation (#2227) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 2dd4d432f2f..a1985931494 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -144,7 +144,7 @@ locals { short_name = "example-foundation" org = "terraform-google-modules" description = "Shows how the CFT modules can be composed to build a secure cloud foundation" - owners = ["rjerrems", "gtsorbo"] + owners = ["rjerrems", "gtsorbo", "eeaton"] homepage_url = "https://cloud.google.com/architecture/security-foundations" topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) lint_env = { From a284c2ce2ebc64eeedfe0305dab1338eb439d90e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 22 Mar 2024 21:28:39 +0100 Subject: [PATCH 0881/1371] fix(deps): update cli go modules (#2162) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 102 ++++++++++++++++++++++++++------------------------- cli/go.sum | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 155 insertions(+), 51 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 0557db43d40..93cbeec7b89 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.16 +VERSION=v1.2.17 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 1dbaef15f3a..08a2f3b9930 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,54 +3,55 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.21 require ( - cloud.google.com/go/asset v1.16.0 - cloud.google.com/go/storage v1.36.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.11.1 + cloud.google.com/go/asset v1.18.1 + cloud.google.com/go/storage v1.39.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.16.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.11.0 - github.com/golang/protobuf v1.5.3 + github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v57 v57.0.0 - github.com/hashicorp/hcl/v2 v2.19.1 + github.com/google/go-github/v60 v60.0.0 + github.com/hashicorp/hcl/v2 v2.20.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.4.9 + github.com/jedib0t/go-pretty/v6 v6.5.5 github.com/manifoldco/promptui v0.9.0 - github.com/migueleliasweb/go-github-mock v0.0.22 + github.com/migueleliasweb/go-github-mock v0.0.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.59.0 + github.com/open-policy-agent/opa v0.62.1 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 github.com/spf13/viper v1.18.2 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20231226003508-02704c960a9b - golang.org/x/oauth2 v0.15.0 + golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 + golang.org/x/oauth2 v0.18.0 golang.org/x/text v0.14.0 - google.golang.org/api v0.154.0 - google.golang.org/protobuf v1.31.0 + google.golang.org/api v0.170.0 + google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.110.10 // indirect - cloud.google.com/go/accesscontextmanager v1.8.4 // indirect - cloud.google.com/go/compute v1.23.3 // indirect + cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go/accesscontextmanager v1.8.5 // indirect + cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.5 // indirect - cloud.google.com/go/longrunning v0.5.4 // indirect - cloud.google.com/go/orgpolicy v1.11.4 // indirect - cloud.google.com/go/osconfig v1.12.4 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/longrunning v0.5.5 // indirect + cloud.google.com/go/orgpolicy v1.12.1 // indirect + cloud.google.com/go/osconfig v1.12.5 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -80,7 +81,7 @@ require ( github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-ini/ini v1.67.0 // indirect - github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.21.2 // indirect github.com/go-openapi/errors v0.20.2 // indirect @@ -94,20 +95,21 @@ require ( github.com/go-stack/stack v1.8.1 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.1.2 // indirect + github.com/golang/glog v1.2.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-github/v56 v56.0.0 // indirect + github.com/google/go-github/v59 v59.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.4.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.2 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/gruntwork-io/terratest v0.46.8 // indirect + github.com/gruntwork-io/terratest v0.46.11 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -121,7 +123,7 @@ require ( github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.13 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -134,15 +136,15 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // 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/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sergi/go-diff v1.1.0 // indirect + github.com/sergi/go-diff v1.3.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.2.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -152,7 +154,7 @@ require ( github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect - github.com/tidwall/gjson v1.17.0 // indirect + github.com/tidwall/gjson v1.17.1 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect @@ -164,31 +166,31 @@ require ( github.com/zclconf/go-cty v1.14.0 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect - go.opentelemetry.io/otel v1.21.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect - go.opentelemetry.io/otel/metric v1.21.0 // indirect - go.opentelemetry.io/otel/sdk v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.21.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/sdk v1.22.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/mod v0.16.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/sync v0.6.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.16.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + golang.org/x/tools v0.19.0 // indirect + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect - google.golang.org/grpc v1.59.0 // indirect + google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 // indirect + google.golang.org/grpc v1.62.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 2c8ad11e74e..8556e7c6443 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,29 +1,49 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go/accesscontextmanager v1.8.4 h1:Yo4g2XrBETBCqyWIibN3NHNPQKUfQqti0lI+70rubeE= cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= +cloud.google.com/go/accesscontextmanager v1.8.5 h1:2GLNaNu9KRJhJBFTIVRoPwk6xE5mUDgD47abBq4Zp/I= +cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= cloud.google.com/go/asset v1.16.0 h1:VjwWNtEVsbpXfJqZbb2RLOBzSgAjN69vf2UJADHnkxk= cloud.google.com/go/asset v1.16.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= +cloud.google.com/go/asset v1.18.1 h1:+NpxL5L53VY91EoJTHeGGXSWEUllf2hhXpCyTnSrd3Q= +cloud.google.com/go/asset v1.18.1/go.mod h1:QXivw0mVqwrhZyuX6iqFbyfCdzYE9AFCJVG47Eh5dMM= cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= +cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= +cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= cloud.google.com/go/orgpolicy v1.11.4 h1:RWuXQDr9GDYhjmrredQJC7aY7cbyqP9ZuLbq5GJGves= cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= +cloud.google.com/go/orgpolicy v1.12.1 h1:2JbXigqBJVp8Dx5dONUttFqewu4fP0p3pgOdIZAhpYU= +cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= cloud.google.com/go/osconfig v1.12.4 h1:OrRCIYEAbrbXdhm13/JINn9pQchvTTIzgmOCA7uJw8I= cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= +cloud.google.com/go/osconfig v1.12.5 h1:Mo5jGAxOMKH/PmDY7fgY19yFcVbvwREb5D5zMPQjFfo= +cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY= +cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.11.1 h1:S4Y7o5RKRC9Bk71VszCx9NeheWjdSAn5ejPuD1W6lNE= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.11.1/go.mod h1:v4TFK9TmX4mYyXL3v9wFXVN3A5vrt2LaVDBX2/OVU7Y= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.1 h1:8eKlk/DQeXPb6ITTLLWk/LdmyC9FRNMQF2ZR0sKaGEA= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.1/go.mod h1:jIatwk/2sLSDtnMaExpzZpQVuBbEhx+NeiP1obo/IlY= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -152,6 +172,8 @@ github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= 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/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= @@ -224,6 +246,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -241,6 +265,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -267,6 +293,9 @@ github.com/google/go-github/v56 v56.0.0 h1:TysL7dMa/r7wsQi44BjqlwaHvwlFlqkK8CtBW github.com/google/go-github/v56 v56.0.0/go.mod h1:D8cdcX98YWJvi7TLo7zM4/h8ZTx6u6fwGEkCdisopo0= github.com/google/go-github/v57 v57.0.0 h1:L+Y3UPTY8ALM8x+TV0lg+IEBI+upibemtBD8Q9u7zHs= github.com/google/go-github/v57 v57.0.0/go.mod h1:s0omdnye0hvK/ecLvpsGfJMiRt85PimQh4oygmLIxHw= +github.com/google/go-github/v59 v59.0.0 h1:7h6bgpF5as0YQLLkEiVqpgtJqjimMYhBkD4jT5aN3VA= +github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv40oDjhV/gH6wM= +github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -282,10 +311,14 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= @@ -293,6 +326,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rH github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/gruntwork-io/terratest v0.46.8 h1:rgK7z6Dy/eMGFaclKR0WVG9Z54tR+Ehl7S09+8Y25j0= github.com/gruntwork-io/terratest v0.46.8/go.mod h1:6MxfmOFQQEpQZjpuWRwuAK8qm836hYgAOCzSIZIWTmg= +github.com/gruntwork-io/terratest v0.46.11 h1:1Z9G18I2FNuH87Ro0YtjW4NH9ky4GDpfzE7+ivkPeB8= +github.com/gruntwork-io/terratest v0.46.11/go.mod h1:DVZG/s7eP1u3KOQJJfE6n7FDriMWpDvnj85XIlZMEM8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -302,6 +337,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= +github.com/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= +github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -323,6 +360,8 @@ github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PH github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= github.com/jedib0t/go-pretty/v6 v6.4.9 h1:vZ6bjGg2eBSrJn365qlxGcaWu09Id+LHtrfDWlB2Usc= github.com/jedib0t/go-pretty/v6 v6.4.9/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= +github.com/jedib0t/go-pretty/v6 v6.5.5 h1:PpIU8lOjxvVYGGKule0QxxJfNysUSbC9lggQU2cpZJc= +github.com/jedib0t/go-pretty/v6 v6.5.5/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -368,12 +407,16 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/migueleliasweb/go-github-mock v0.0.22 h1:iUvUKmYd7sFq/wrb9TrbEdvc30NaYxLZNtz7Uv2D+AQ= github.com/migueleliasweb/go-github-mock v0.0.22/go.mod h1:UVvZ3S9IdTTRqThr1lgagVaua3Jl1bmY4E+C/Vybbn4= +github.com/migueleliasweb/go-github-mock v0.0.23 h1:GOi9oX/+Seu9JQ19V8bPDLqDI7M9iEOjo3g8v1k6L2c= +github.com/migueleliasweb/go-github-mock v0.0.23/go.mod h1:NsT8FGbkvIZQtDu38+295sZEX8snaUiiQgsGxi6GUxk= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -403,6 +446,8 @@ github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcA github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= github.com/open-policy-agent/opa v0.59.0 h1:1WFU/KUhJAr3qatm0Lf8Ea5jp10ZmlE2M07oaLiHypg= github.com/open-policy-agent/opa v0.59.0/go.mod h1:rdJSkEc4oQ+0074/3Fsgno5bkPsYxTjU5aLNmMujIvI= +github.com/open-policy-agent/opa v0.62.1 h1:UcxBQ0fe6NEjkYc775j4PWoUFFhx4f6yXKIKSTAuTVk= +github.com/open-policy-agent/opa v0.62.1/go.mod h1:YqiSIIuvKwyomtnnXkJvy0E3KtVKbavjPJ/hNMuOmeM= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -422,13 +467,21 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/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.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= 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/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= @@ -445,6 +498,8 @@ github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6g github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +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/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -485,6 +540,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO 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/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= @@ -492,6 +549,8 @@ github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwD github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= @@ -530,20 +589,32 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -567,9 +638,13 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231226003508-02704c960a9b h1:kLiC65FbiHWFAOu+lxwNPujcsl8VYyTYYEZnsOO1WK4= golang.org/x/exp v0.0.0-20231226003508-02704c960a9b/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 h1:6R2FC06FonbXQ8pK11/PDFY6N6LWlf9KlzibaCapmqc= +golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -579,6 +654,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -597,9 +674,13 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= 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= @@ -612,6 +693,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -639,6 +722,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -647,6 +732,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -677,16 +764,21 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= 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= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/api v0.154.0 h1:X7QkVKZBskztmpPKWQXgjJRPA2dJYrL6r+sYPRLj050= google.golang.org/api v0.154.0/go.mod h1:qhSMkM85hgqiokIYsrRyKxrjfBeIhgl4Z2JmeRkYylc= +google.golang.org/api v0.170.0 h1:zMaruDePM88zxZBG+NG8+reALO2rfLhe/JShitLyT48= +google.golang.org/api v0.170.0/go.mod h1:/xql9M2btF85xac/VAm4PsLMTLVGUOpq4BE9R8jyNy8= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -696,10 +788,16 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 h1:9IZDv+/GcI6u+a4jRFRLxQs0RUCfavGfoOgEW6jpkI0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -707,6 +805,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= 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= @@ -720,6 +820,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 3e2d95e3b19506bbbbd9f0804ec277e970565bb5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 22 Mar 2024 21:33:35 +0100 Subject: [PATCH 0882/1371] chore(deps): update github/codeql-action action to v3.24.9 (#2229) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0f3dee8d282..e5c40f36a8b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/init@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/autobuild@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/analyze@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c99378718d8..2eefb1d1f97 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@05963f47d870e2cb19a537396c1f668a348c7d8f # v3.24.8 + uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: sarif_file: results.sarif From 5dc06ba765b23a2aa2b8265d6e7eebc6f9629bba Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 22 Mar 2024 14:49:57 -0700 Subject: [PATCH 0883/1371] fix: updating dev-tools image tag prefix (#2205) --- infra/build/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index af60b0b8325..85cdfefb2fc 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -64,7 +64,7 @@ DOCKER_IMAGE_DEVELOPER_KRM := cft/developer-tools-krm DOCKER_IMAGE_DEVELOPER_LIGHT := cft/developer-tools-light DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS := cft/developer-tools-jenkins REGISTRY_URL := gcr.io/cloud-foundation-cicd -DEP_TAG_PREFIX := deprecated-public-image- +DEP_TAG_PREFIX := infrastructure-public-image- .PHONY: build-image-developer-tools From 1fd0c21386f6d2af5656b3dfe2e01cf3bf7fab76 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 26 Mar 2024 09:58:57 -0700 Subject: [PATCH 0884/1371] fix(deps): update cli go modules (#2231) --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 8 +-- cli/go.sum | 135 +++-------------------------------- 7 files changed, 17 insertions(+), 136 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 93cbeec7b89..c4e137760fa 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.17 +VERSION=v1.2.18 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index 77e0f3daecc..1cd0cbedde1 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v57/github" + "github.com/google/go-github/v60/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index 6effbce7e28..0080cfded99 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v57/github" + "github.com/google/go-github/v60/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index cd1e5f6e8b4..baa198fd12a 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v57/github" + "github.com/google/go-github/v60/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index db3d8628ce2..8e2fa877f4f 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v57/github" + "github.com/google/go-github/v60/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index 08a2f3b9930..762e789f01c 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -14,7 +14,6 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v57 v57.0.0 github.com/google/go-github/v60 v60.0.0 github.com/hashicorp/hcl/v2 v2.20.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 @@ -34,7 +33,7 @@ require ( github.com/spf13/viper v1.18.2 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 + golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 golang.org/x/oauth2 v0.18.0 golang.org/x/text v0.14.0 google.golang.org/api v0.170.0 @@ -68,7 +67,7 @@ require ( github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect - github.com/cloudflare/circl v1.3.3 // indirect + github.com/cloudflare/circl v1.3.7 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect @@ -99,7 +98,6 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-github/v56 v56.0.0 // indirect github.com/google/go-github/v59 v59.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect @@ -124,7 +122,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -185,7 +182,6 @@ require ( golang.org/x/term v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.19.0 // indirect - golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 8556e7c6443..1476499a908 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,47 +1,27 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= -cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= -cloud.google.com/go/accesscontextmanager v1.8.4 h1:Yo4g2XrBETBCqyWIibN3NHNPQKUfQqti0lI+70rubeE= -cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= cloud.google.com/go/accesscontextmanager v1.8.5 h1:2GLNaNu9KRJhJBFTIVRoPwk6xE5mUDgD47abBq4Zp/I= cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= -cloud.google.com/go/asset v1.16.0 h1:VjwWNtEVsbpXfJqZbb2RLOBzSgAjN69vf2UJADHnkxk= -cloud.google.com/go/asset v1.16.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/asset v1.18.1 h1:+NpxL5L53VY91EoJTHeGGXSWEUllf2hhXpCyTnSrd3Q= cloud.google.com/go/asset v1.18.1/go.mod h1:QXivw0mVqwrhZyuX6iqFbyfCdzYE9AFCJVG47Eh5dMM= -cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= -cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= -cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= -cloud.google.com/go/orgpolicy v1.11.4 h1:RWuXQDr9GDYhjmrredQJC7aY7cbyqP9ZuLbq5GJGves= -cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= cloud.google.com/go/orgpolicy v1.12.1 h1:2JbXigqBJVp8Dx5dONUttFqewu4fP0p3pgOdIZAhpYU= cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= -cloud.google.com/go/osconfig v1.12.4 h1:OrRCIYEAbrbXdhm13/JINn9pQchvTTIzgmOCA7uJw8I= -cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= cloud.google.com/go/osconfig v1.12.5 h1:Mo5jGAxOMKH/PmDY7fgY19yFcVbvwREb5D5zMPQjFfo= cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= -cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY= cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.11.1 h1:S4Y7o5RKRC9Bk71VszCx9NeheWjdSAn5ejPuD1W6lNE= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.11.1/go.mod h1:v4TFK9TmX4mYyXL3v9wFXVN3A5vrt2LaVDBX2/OVU7Y= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.1 h1:8eKlk/DQeXPb6ITTLLWk/LdmyC9FRNMQF2ZR0sKaGEA= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.1/go.mod h1:jIatwk/2sLSDtnMaExpzZpQVuBbEhx+NeiP1obo/IlY= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= @@ -99,11 +79,10 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= @@ -130,8 +109,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF 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/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= -github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= @@ -142,8 +119,8 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= -github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= +github.com/foxcpp/go-mockdns v1.1.0 h1:jI0rD8M0wuYAxL7r/ynTrCQQq0BVqfB99Vgk7DlmewI= +github.com/foxcpp/go-mockdns v1.1.0/go.mod h1:IhLeSFGed3mJIAXPH2aiRQB+kqz7oqu8ld2qVbOu7Wk= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= @@ -166,12 +143,8 @@ github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3c github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -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.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -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/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -244,8 +217,6 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -263,8 +234,6 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -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/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -289,12 +258,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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/go-github/v56 v56.0.0 h1:TysL7dMa/r7wsQi44BjqlwaHvwlFlqkK8CtBWCX3gb4= -github.com/google/go-github/v56 v56.0.0/go.mod h1:D8cdcX98YWJvi7TLo7zM4/h8ZTx6u6fwGEkCdisopo0= -github.com/google/go-github/v57 v57.0.0 h1:L+Y3UPTY8ALM8x+TV0lg+IEBI+upibemtBD8Q9u7zHs= -github.com/google/go-github/v57 v57.0.0/go.mod h1:s0omdnye0hvK/ecLvpsGfJMiRt85PimQh4oygmLIxHw= github.com/google/go-github/v59 v59.0.0 h1:7h6bgpF5as0YQLLkEiVqpgtJqjimMYhBkD4jT5aN3VA= github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv40oDjhV/gH6wM= +github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= @@ -309,23 +275,16 @@ github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/gruntwork-io/terratest v0.46.8 h1:rgK7z6Dy/eMGFaclKR0WVG9Z54tR+Ehl7S09+8Y25j0= -github.com/gruntwork-io/terratest v0.46.8/go.mod h1:6MxfmOFQQEpQZjpuWRwuAK8qm836hYgAOCzSIZIWTmg= github.com/gruntwork-io/terratest v0.46.11 h1:1Z9G18I2FNuH87Ro0YtjW4NH9ky4GDpfzE7+ivkPeB8= github.com/gruntwork-io/terratest v0.46.11/go.mod h1:DVZG/s7eP1u3KOQJJfE6n7FDriMWpDvnj85XIlZMEM8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -335,8 +294,6 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= -github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= @@ -358,8 +315,6 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.4.9 h1:vZ6bjGg2eBSrJn365qlxGcaWu09Id+LHtrfDWlB2Usc= -github.com/jedib0t/go-pretty/v6 v6.4.9/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jedib0t/go-pretty/v6 v6.5.5 h1:PpIU8lOjxvVYGGKule0QxxJfNysUSbC9lggQU2cpZJc= github.com/jedib0t/go-pretty/v6 v6.5.5/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -405,16 +360,10 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= -github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/migueleliasweb/go-github-mock v0.0.22 h1:iUvUKmYd7sFq/wrb9TrbEdvc30NaYxLZNtz7Uv2D+AQ= -github.com/migueleliasweb/go-github-mock v0.0.22/go.mod h1:UVvZ3S9IdTTRqThr1lgagVaua3Jl1bmY4E+C/Vybbn4= +github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= +github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= github.com/migueleliasweb/go-github-mock v0.0.23 h1:GOi9oX/+Seu9JQ19V8bPDLqDI7M9iEOjo3g8v1k6L2c= github.com/migueleliasweb/go-github-mock v0.0.23/go.mod h1:NsT8FGbkvIZQtDu38+295sZEX8snaUiiQgsGxi6GUxk= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= @@ -444,8 +393,6 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.59.0 h1:1WFU/KUhJAr3qatm0Lf8Ea5jp10ZmlE2M07oaLiHypg= -github.com/open-policy-agent/opa v0.59.0/go.mod h1:rdJSkEc4oQ+0074/3Fsgno5bkPsYxTjU5aLNmMujIvI= github.com/open-policy-agent/opa v0.62.1 h1:UcxBQ0fe6NEjkYc775j4PWoUFFhx4f6yXKIKSTAuTVk= github.com/open-policy-agent/opa v0.62.1/go.mod h1:YqiSIIuvKwyomtnnXkJvy0E3KtVKbavjPJ/hNMuOmeM= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= @@ -461,25 +408,16 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -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.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/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.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= -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/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= @@ -496,8 +434,6 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= 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/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -535,10 +471,8 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 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/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -547,8 +481,6 @@ github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSW github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= -github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -587,32 +519,20 @@ go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= -go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= @@ -636,15 +556,11 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20231226003508-02704c960a9b h1:kLiC65FbiHWFAOu+lxwNPujcsl8VYyTYYEZnsOO1WK4= -golang.org/x/exp v0.0.0-20231226003508-02704c960a9b/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= -golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 h1:6R2FC06FonbXQ8pK11/PDFY6N6LWlf9KlzibaCapmqc= -golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -652,8 +568,6 @@ 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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -672,18 +586,13 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= -golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -691,8 +600,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -715,13 +622,10 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -730,8 +634,6 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -745,7 +647,6 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -762,21 +663,16 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= -golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= 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= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.154.0 h1:X7QkVKZBskztmpPKWQXgjJRPA2dJYrL6r+sYPRLj050= -google.golang.org/api v0.154.0/go.mod h1:qhSMkM85hgqiokIYsrRyKxrjfBeIhgl4Z2JmeRkYylc= google.golang.org/api v0.170.0 h1:zMaruDePM88zxZBG+NG8+reALO2rfLhe/JShitLyT48= google.golang.org/api v0.170.0/go.mod h1:/xql9M2btF85xac/VAm4PsLMTLVGUOpq4BE9R8jyNy8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -786,16 +682,10 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 h1:9IZDv+/GcI6u+a4jRFRLxQs0RUCfavGfoOgEW6jpkI0= google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -803,8 +693,6 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -818,8 +706,6 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD 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.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -836,7 +722,6 @@ gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/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= From a37c1c57052ce75a881f88667cc0952aefb83e91 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Tue, 26 Mar 2024 16:31:08 -0400 Subject: [PATCH 0885/1371] feat: Onboard JSS 22.1 (GenAI Knowledge Base) (#2230) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index c846729e1c5..e6f28936494 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -43,6 +43,7 @@ locals { "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" "ml-image-annotation-gcf" = "terraform-ml-image-annotation-gcf" "genai-doc-summarization" = "terraform-genai-doc-summarization" + "genai-knowledge-base" = "terraform-genai-knowledge-base" "secured-notebook" = "notebooks-blueprint-security" "sdw-onprem-ingest" = "terraform-google-secured-data-warehouse-onprem-ingest" "pubsub-golang-app" = "terraform-pubsub-integration-golang" diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index a1985931494..af0672fdf1d 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -743,6 +743,15 @@ locals { groups = ["dee-data-ai", local.jss_common_group] enable_periodic = true }, + { + name = "terraform-genai-knowledge-base" + short_name = "genai-knowledge-base" + org = "GoogleCloudPlatform" + description = "Fine tune an LLM model to answer questions from your documents." + owners = ["davidcavazos"] + groups = [local.jss_common_group] + enable_periodic = true + }, { name = "terraform-google-secured-data-warehouse-onprem-ingest" short_name = "sdw-onprem-ingest" From d0abcaac87792cbab865f78b2e98b0ce0849f309 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 27 Mar 2024 18:49:16 +0100 Subject: [PATCH 0886/1371] chore(deps): update module github.com/hashicorp/hcl/v2 to v2.20.1 (#2234) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 85be2724b5d..b327d5633e6 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -6,7 +6,7 @@ require ( github.com/chainguard-dev/git-urls v1.0.2 github.com/go-git/go-git/v5 v5.11.0 github.com/google/go-cmp v0.6.0 - github.com/hashicorp/hcl/v2 v2.20.0 + github.com/hashicorp/hcl/v2 v2.20.1 github.com/pmezard/go-difflib v1.0.0 github.com/zclconf/go-cty v1.14.4 ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index eedc50d5278..1205de8d596 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -44,8 +44,8 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= -github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= +github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= +github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -57,8 +57,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= @@ -86,6 +84,8 @@ github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= From 60dbf6220aa9da2c4258a8ce0e5f8c2aef4843be Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 27 Mar 2024 18:52:22 +0100 Subject: [PATCH 0887/1371] chore(deps): update actions/setup-python action to v5.1.0 (#2235) --- .github/workflows/pre-commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 0945fc06eb7..c2aad769279 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -10,5 +10,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 From 4e101e5247fc639f457674bc14ad4447ab9fe21f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 27 Mar 2024 19:01:02 +0100 Subject: [PATCH 0888/1371] fix(deps): update go modules (#2233) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index ee5455bd347..6b06187f98f 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,9 +4,9 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.5.5 + github.com/jedib0t/go-pretty/v6 v6.5.6 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.171.0 + google.golang.org/api v0.172.0 ) require ( @@ -40,7 +40,7 @@ require ( golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index b1f57c62e23..1502f8149c1 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -61,8 +61,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= -github.com/jedib0t/go-pretty/v6 v6.5.5 h1:PpIU8lOjxvVYGGKule0QxxJfNysUSbC9lggQU2cpZJc= -github.com/jedib0t/go-pretty/v6 v6.5.5/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= +github.com/jedib0t/go-pretty/v6 v6.5.6 h1:nKXVLqPfAwY7sWcYXdNZZZ2fjqDpAtj9UeWupgfUxSg= +github.com/jedib0t/go-pretty/v6 v6.5.6/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= -google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= +google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= +google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -168,8 +168,8 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From ec93c44692b623ca7790829aef73541d92069d73 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 27 Mar 2024 21:56:43 +0100 Subject: [PATCH 0889/1371] fix(deps): update cli go modules (#2228) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 14 +++++++------- cli/go.sum | 32 ++++++++++++++++---------------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index c4e137760fa..7e4fb21d274 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.18 +VERSION=v1.2.19 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 762e789f01c..b743f70ba42 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -5,7 +5,7 @@ go 1.21 require ( cloud.google.com/go/asset v1.18.1 cloud.google.com/go/storage v1.39.1 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.16.0 @@ -15,14 +15,14 @@ require ( github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v60 v60.0.0 - github.com/hashicorp/hcl/v2 v2.20.0 + github.com/hashicorp/hcl/v2 v2.20.1 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.5.5 + github.com/jedib0t/go-pretty/v6 v6.5.6 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 @@ -36,7 +36,7 @@ require ( golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 golang.org/x/oauth2 v0.18.0 golang.org/x/text v0.14.0 - google.golang.org/api v0.170.0 + google.golang.org/api v0.172.0 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -104,10 +104,10 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/gruntwork-io/terratest v0.46.11 // indirect + github.com/gruntwork-io/terratest v0.46.13 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -185,7 +185,7 @@ require ( google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect google.golang.org/grpc v1.62.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index 1476499a908..7645988352a 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -22,8 +22,8 @@ cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OL dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.1 h1:8eKlk/DQeXPb6ITTLLWk/LdmyC9FRNMQF2ZR0sKaGEA= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.1/go.mod h1:jIatwk/2sLSDtnMaExpzZpQVuBbEhx+NeiP1obo/IlY= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2 h1:DQS5D0xaV1SVFNoGvHdYB0wYeZ24D9hVeFiLG2+r06I= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2/go.mod h1:uomWciQn6oAotW86ck0b0ix+sUeZHSXyS+IYAVFTPj8= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -279,14 +279,14 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/gruntwork-io/terratest v0.46.11 h1:1Z9G18I2FNuH87Ro0YtjW4NH9ky4GDpfzE7+ivkPeB8= -github.com/gruntwork-io/terratest v0.46.11/go.mod h1:DVZG/s7eP1u3KOQJJfE6n7FDriMWpDvnj85XIlZMEM8= +github.com/gruntwork-io/terratest v0.46.13 h1:FDaEoZ7DtkomV8pcwLdBV/VsytdjnPRqJkIriYEYwjs= +github.com/gruntwork-io/terratest v0.46.13/go.mod h1:8sxu3Qup8TxtbzOHzq0MUrQffJj/G61/OwlsReaCwpo= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -294,8 +294,8 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= -github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= +github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= +github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -315,8 +315,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.5.5 h1:PpIU8lOjxvVYGGKule0QxxJfNysUSbC9lggQU2cpZJc= -github.com/jedib0t/go-pretty/v6 v6.5.5/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= +github.com/jedib0t/go-pretty/v6 v6.5.6 h1:nKXVLqPfAwY7sWcYXdNZZZ2fjqDpAtj9UeWupgfUxSg= +github.com/jedib0t/go-pretty/v6 v6.5.6/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -342,8 +342,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -513,6 +511,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -673,8 +673,8 @@ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSm golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.170.0 h1:zMaruDePM88zxZBG+NG8+reALO2rfLhe/JShitLyT48= -google.golang.org/api v0.170.0/go.mod h1:/xql9M2btF85xac/VAm4PsLMTLVGUOpq4BE9R8jyNy8= +google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= +google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -686,8 +686,8 @@ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 h1:9IZDv+/GcI6u+a4jRFRLxQs0RUCfavGfoOgEW6jpkI0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From a6361c2ba97c7eb15f3e6d3926c359321f0cda4f Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:52:22 -0700 Subject: [PATCH 0890/1371] chore(master): release module-swapper 0.4.4 (#2236) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 093a45f3099..4fa71f8fef8 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.13.2", - "infra/module-swapper": "0.4.3" + "infra/module-swapper": "0.4.4" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 4f7cfbb450f..56fd1e21eab 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.3...infra/module-swapper/v0.4.4) (2024-03-27) + + +### Bug Fixes + +* **deps:** update module github.com/hashicorp/hcl/v2 to v2.20.1 ([#2234](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2234)) ([d0abcaa](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/d0abcaac87792cbab865f78b2e98b0ce0849f309)) + ## [0.4.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.2...infra/module-swapper/v0.4.3) (2024-03-21) From 3bd004a47df95b03ae56cdf28aa3df87a8b83856 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 27 Mar 2024 16:16:26 -0700 Subject: [PATCH 0891/1371] chore: Update Tools to 1.19.10 (#2226) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 85cdfefb2fc..972a75f6210 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.7.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 469.0.0 +CLOUD_SDK_VERSION := 470.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.55.18 +TERRAGRUNT_VERSION := 0.55.20 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.16 +CFT_CLI_VERSION := 1.2.19 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.8 # Updated by Update Tooling Workflow @@ -43,7 +43,7 @@ TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.2 +MODULE_SWAPPER_VERSION := 0.4.4 # For developer-tools-krm GOLANGCI_VERSION := 1.57.1 @@ -55,7 +55,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.10 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From a80046f8328194e696c4c48737d9f168646b7b6a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 1 Apr 2024 17:58:05 +0200 Subject: [PATCH 0892/1371] chore(deps): update golangci/golangci-lint docker tag to v1.57.2 (#2243) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 340f6ee9553..eb925155cd5 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.57.1 +GOLANGCI_VERSION := 1.57.2 .PHONY: docker_go_lint docker_go_lint: From fcdca77dcfe63b6e928ce551863df69e2cedc6cd Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 1 Apr 2024 18:04:50 +0200 Subject: [PATCH 0893/1371] fix(deps): update module github.com/go-git/go-git/v5 to v5.12.0 (#2244) --- infra/module-swapper/go.mod | 14 ++++++------- infra/module-swapper/go.sum | 40 ++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index b327d5633e6..66dcf3af9a8 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/chainguard-dev/git-urls v1.0.2 - github.com/go-git/go-git/v5 v5.11.0 + github.com/go-git/go-git/v5 v5.12.0 github.com/google/go-cmp v0.6.0 github.com/hashicorp/hcl/v2 v2.20.1 github.com/pmezard/go-difflib v1.0.0 @@ -14,7 +14,7 @@ require ( require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/agext/levenshtein v1.2.1 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect @@ -27,13 +27,13 @@ require ( github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/sergi/go-diff v1.3.1 // indirect - github.com/skeema/knownhosts v1.2.1 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/skeema/knownhosts v1.2.2 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.17.0 // indirect + golang.org/x/crypto v0.21.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sys v0.15.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.13.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 1205de8d596..60664c8ff43 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -3,8 +3,8 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -28,16 +28,16 @@ github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcej github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= +github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= -github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -69,16 +69,16 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -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/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= -github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -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/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -91,8 +91,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= @@ -104,8 +104,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -124,15 +124,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= From df150e214bb27fb7f50d486d49d5fe27e1ef252f Mon Sep 17 00:00:00 2001 From: Leonardo Romanini <97033241+romanini-ciandt@users.noreply.github.com> Date: Mon, 1 Apr 2024 13:26:15 -0300 Subject: [PATCH 0894/1371] feat: Add kms-solutions repo into CFT (#2238) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/locals.tf | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index e6f28936494..212e2e28831 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -50,6 +50,7 @@ locals { "pubsub-java-app" = "terraform-pubsub-integration-java" "genai-rag" = "terraform-genai-rag" "cloud-client-api" = "terraform-cloud-client-api" + "kms-solutions" = "kms-solutions" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index af0672fdf1d..5b54679484b 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -875,6 +875,15 @@ locals { lint_env = { ENABLE_BPMETADATA = "1" } + }, + { + name = "kms-solutions" + org = "GoogleCloudPlatform" + description = "Store Cloud KMS scripts, artifacts, code samples, and more." + owners = ["tdbhacks"] + lint_env = { + ENABLE_BPMETADATA = "1" + } } ] } From 6cf2cfab4c9b07d11479980e74c78d213f8d7a54 Mon Sep 17 00:00:00 2001 From: Joseph Thomas Date: Mon, 1 Apr 2024 11:10:51 -0700 Subject: [PATCH 0895/1371] chore: Add self as owner for bootstrap module (#2239) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 5b54679484b..8dec2acf5f0 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -251,6 +251,7 @@ locals { org = "terraform-google-modules" description = "Bootstraps Terraform usage and related CI/CD in a new Google Cloud organization" topics = join(",", [local.common_topics.ops, local.common_topics.devtools]) + owners = ["josephdt12"] }, { name = "terraform-google-cloud-datastore" From 90d9cc1d6d89c05799bdb3d98b5607eb4bda50b8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 1 Apr 2024 22:07:16 +0200 Subject: [PATCH 0896/1371] fix(deps): update go modules (#2241) Co-authored-by: Andrew Peabody --- cli/Makefile | 4 ++-- cli/go.mod | 10 +++++----- cli/go.sum | 24 ++++++++++++------------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 7e4fb21d274..420b3f4f624 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.19 +VERSION=v1.2.20 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.57.1 +GOLANGCI_VERSION := 1.57.2 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" diff --git a/cli/go.mod b/cli/go.mod index b743f70ba42..d860ae76bd8 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -10,9 +10,9 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.16.0 github.com/gammazero/workerpool v1.1.3 - github.com/go-git/go-git/v5 v5.11.0 + github.com/go-git/go-git/v5 v5.12.0 github.com/golang/protobuf v1.5.4 - github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 + github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v60 v60.0.0 github.com/hashicorp/hcl/v2 v2.20.1 @@ -54,7 +54,7 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect @@ -141,9 +141,9 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sergi/go-diff v1.3.1 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/skeema/knownhosts v1.2.1 // indirect + github.com/skeema/knownhosts v1.2.2 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index 7645988352a..736879c7592 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -31,8 +31,8 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -129,8 +129,8 @@ github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= -github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= +github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= github.com/go-errors/errors v1.5.0/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -139,8 +139,8 @@ github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+ github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= -github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -239,8 +239,8 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 h1:k4Tw0nt6lwro3Uin8eqoET7MDA4JnT8YgbCjc/g5E3k= -github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 h1:4gjrh/PN2MuWCCElk8/I4OCKRKWCCo2zEct3VKCbibU= +github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -432,16 +432,16 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -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/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= -github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= From 3ae2a4d765e286da629f53779a3ba6f4140bb37a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 2 Apr 2024 15:20:57 -0700 Subject: [PATCH 0897/1371] chore(CI): add GOLANGCI to update tooling workflow (#2250) --- .github/workflows/update-tooling.yml | 3 ++- infra/build/Makefile | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 284fb46185f..59937c6c2ca 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -23,6 +23,7 @@ env: KUSTOMIZE_URL: "https://api.github.com/repos/kubernetes-sigs/kustomize/releases" TERRAGRUNT_URL: "https://api.github.com/repos/gruntwork-io/terragrunt/releases/latest" TFLINT_URL: "https://api.github.com/repos/terraform-linters/tflint/releases/latest" + GOLANGCI_URL: "https://api.github.com/repos/golangci/golangci-lint/releases/latest" jobs: update-tools: @@ -37,7 +38,7 @@ jobs: run: | PR_UPDATE_BODY="" newline=$'\n' - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER" "KUSTOMIZE" "TERRAGRUNT" "TFLINT") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER" "KUSTOMIZE" "TERRAGRUNT" "TFLINT" "GOLANGCI") for tool in ${tools[@]} do diff --git a/infra/build/Makefile b/infra/build/Makefile index 972a75f6210..980086729bd 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -46,6 +46,7 @@ ALPINE_VERSION := 3.19 MODULE_SWAPPER_VERSION := 0.4.4 # For developer-tools-krm +# Updated by Update Tooling Workflow GOLANGCI_VERSION := 1.57.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 From 6996c86efbecb1ccfcec8685a74a9b0a4f139256 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 15:25:03 -0700 Subject: [PATCH 0898/1371] chore(master): release module-swapper 0.4.5 (#2247) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4fa71f8fef8..a87616f6d1d 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.13.2", - "infra/module-swapper": "0.4.4" + "infra/module-swapper": "0.4.5" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 56fd1e21eab..a667f43816c 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.5](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.4...infra/module-swapper/v0.4.5) (2024-04-02) + + +### Bug Fixes + +* **deps:** update module github.com/go-git/go-git/v5 to v5.12.0 ([#2244](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2244)) ([fcdca77](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fcdca77dcfe63b6e928ce551863df69e2cedc6cd)) + ## [0.4.4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.3...infra/module-swapper/v0.4.4) (2024-03-27) From 9af5f993b009c56cc8965eacaef2f4714e730f3d Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 2 Apr 2024 15:34:55 -0700 Subject: [PATCH 0899/1371] chore: Update Tools to 1.19.11 (#2249) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 980086729bd..14525356530 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.7.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 470.0.0 +CLOUD_SDK_VERSION := 471.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.55.20 +TERRAGRUNT_VERSION := 0.55.21 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.3.0 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.19 +CFT_CLI_VERSION := 1.2.20 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.8 # Updated by Update Tooling Workflow @@ -43,11 +43,11 @@ TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.4 +MODULE_SWAPPER_VERSION := 0.4.5 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.57.1 +GOLANGCI_VERSION := 1.57.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.10 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.11 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 6a2a1e1d74b3029e489a106fe93d84cf6a42924e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 4 Apr 2024 18:52:26 +0200 Subject: [PATCH 0900/1371] fix(deps): update module golang.org/x/mod to v0.17.0 (#2252) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index e56f7defb00..9a1cd29b179 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.17.1 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.16.0 + golang.org/x/mod v0.17.0 sigs.k8s.io/kustomize/kyaml v0.16.0 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index b16da465d62..37488945d86 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -580,8 +580,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= -golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From a5245711b744938a87fe6a420f491de97ecdda15 Mon Sep 17 00:00:00 2001 From: Fellipe Medeiros Date: Thu, 4 Apr 2024 15:36:57 -0300 Subject: [PATCH 0901/1371] feat: Add data-analytics-platform-event-driven repo into CFT (#2246) Co-authored-by: Awais Malik --- infra/terraform/test-org/ci-triggers/locals.tf | 1 + infra/terraform/test-org/org/github.tf | 1 + infra/terraform/test-org/org/locals.tf | 9 ++++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 212e2e28831..59a36e5c7d9 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -50,6 +50,7 @@ locals { "pubsub-java-app" = "terraform-pubsub-integration-java" "genai-rag" = "terraform-genai-rag" "cloud-client-api" = "terraform-cloud-client-api" + "dataanalytics-eventdriven" = "terraform-dataanalytics-eventdriven" "kms-solutions" = "kms-solutions" } # example foundation has custom test modes diff --git a/infra/terraform/test-org/org/github.tf b/infra/terraform/test-org/org/github.tf index 4483c0f523f..cfb30d91b15 100644 --- a/infra/terraform/test-org/org/github.tf +++ b/infra/terraform/test-org/org/github.tf @@ -36,6 +36,7 @@ variable "temp_allow_invalid_owners" { default = [ "dulacp", "nidhi0710", # remove once heynidhi@ is added to GCP org + "sylvioneto", ] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 8dec2acf5f0..b09f2fe8687 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -885,6 +885,13 @@ locals { lint_env = { ENABLE_BPMETADATA = "1" } - } + }, + { + name = "terraform-dataanalytics-eventdriven" + short_name = "dataanalytics-eventdriven" + org = "GoogleCloudPlatform" + description = "Uses click-to-deploy to demonstrate how to load data from Cloud Storage to BigQuery using an event-driven load function." + owners = ["fellipeamedeiros", "sylvioneto"] + }, ] } From f2e762eeb807b79b381f5a95f790f8c85a54d78e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 4 Apr 2024 22:02:06 +0200 Subject: [PATCH 0902/1371] fix(deps): update module sigs.k8s.io/kustomize/kyaml to v0.17.0 (#2255) --- infra/blueprint-test/go.mod | 12 ++++++------ infra/blueprint-test/go.sum | 24 ++++++++++++++---------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 9a1cd29b179..186fa76b178 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -13,7 +13,7 @@ require ( github.com/tidwall/gjson v1.17.1 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.17.0 - sigs.k8s.io/kustomize/kyaml v0.16.0 + sigs.k8s.io/kustomize/kyaml v0.17.0 ) require ( @@ -28,7 +28,7 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/boombuler/barcode v1.0.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/go-errors/errors v1.5.0 // indirect github.com/go-logr/logr v1.2.4 // indirect @@ -40,7 +40,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.3.1 // indirect @@ -71,7 +71,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/pquerna/otp v1.4.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect @@ -88,7 +88,7 @@ require ( golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.16.0 // indirect + golang.org/x/sys v0.17.0 // indirect golang.org/x/term v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect @@ -107,7 +107,7 @@ require ( k8s.io/apimachinery v0.28.4 // indirect k8s.io/client-go v0.28.4 // indirect k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect + k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 37488945d86..89806cd8af6 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -228,8 +228,9 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHH 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= @@ -321,8 +322,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= 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= @@ -466,15 +468,16 @@ github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= 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/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg= github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= @@ -737,8 +740,9 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= @@ -1079,8 +1083,8 @@ 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/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-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk= -k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +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= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= @@ -1088,8 +1092,8 @@ 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0= -sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= +sigs.k8s.io/kustomize/kyaml v0.17.0 h1:G2bWs03V9Ur2PinHLzTUJ8Ded+30SzXZKiO92SRDs3c= +sigs.k8s.io/kustomize/kyaml v0.17.0/go.mod h1:6lxkYF1Cv9Ic8g/N7I86cvxNc5iinUo/P2vKsHNmpyE= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From 1c1c4d7dbcf7b9893fddd538ba1cc6f4857ff9cd Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 4 Apr 2024 18:08:08 -0500 Subject: [PATCH 0903/1371] fix: minor description and topic updates for page refresh (#2251) --- infra/terraform/test-org/org/locals.tf | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index b09f2fe8687..70b5654ae7e 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -276,7 +276,7 @@ locals { { name = "terraform-google-cloud-operations" org = "terraform-google-modules" - description = "Manages Google Cloud's operations suite (Cloud Logging and Cloud Monitoring)" + description = "Manages Cloud Logging and Cloud Monitoring" topics = local.common_topics.ops owners = ["imrannayer"] }, @@ -297,7 +297,7 @@ locals { name = "terraform-google-composer" org = "terraform-google-modules" description = "Manages Cloud Composer v1 and v2 along with option to manage networking" - topics = join(",", [local.common_topics.da, local.common_topics.ops, local.common_topics.e2e]) + topics = join(",", [local.common_topics.da, local.common_topics.ops]) owners = ["imrannayer"] }, { @@ -757,7 +757,7 @@ locals { name = "terraform-google-secured-data-warehouse-onprem-ingest" short_name = "sdw-onprem-ingest" org = "GoogleCloudPlatform" - description = "Secured Data Warehouse blueprint variant for ingesting encrypted data from on-prem sources" + description = "Deploys a secured data warehouse variant for ingesting encrypted data from on-prem sources" owners = ["lanre-OG"] topics = join(",", [local.common_topics.da, local.common_topics.security, local.common_topics.e2e]) }, @@ -770,7 +770,7 @@ locals { { name = "terraform-google-cloud-spanner" org = "GoogleCloudPlatform" - description = "Deploy Spanner" + description = "Deploy Spanner instances" owners = ["anaik91", "imrannayer"] topics = local.common_topics.db }, @@ -818,25 +818,26 @@ locals { short_name = "backup-dr" description = "Deploy Backup and DR appliances" owners = ["umeshkumhar"] + topics = join(",", [local.common_topics.compute, local.common_topics.ops]) }, { name = "terraform-google-tags" org = "GoogleCloudPlatform" - description = "Create and manage Google Cloud Tags." + description = "Create and manage Google Cloud Tags" owners = ["nidhi0710"] topics = join(",", [local.common_topics.security, local.common_topics.ops]) }, { name = "terraform-google-dataplex-auto-data-quality" org = "GoogleCloudPlatform" - description = "Move data between environments using Dataplex." + description = "Move data between environments using Dataplex" owners = ["bradmiro"] topics = local.common_topics.da }, { name = "terraform-google-enterprise-application" org = "GoogleCloudPlatform" - description = "Deploy an enterprise developer platform on Google Cloud." + description = "Deploy an enterprise developer platform on Google Cloud" owners = ["gtsorbo"] topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) }, @@ -855,13 +856,14 @@ locals { { name = "terraform-google-artifact-registry" org = "GoogleCloudPlatform" - description = "Create and manage Google Artifact Registry Repositories" + description = "Create and manage Artifact Registry repositories" owners = ["prabhu34"] + topics = join(",", [local.common_topics.containers, local.common_topics.devtools]) }, { name = "terraform-google-secure-web-proxy" org = "GoogleCloudPlatform" - description = "Create and manage Secure Web Proxy in GCP for secured egress web traffic." + description = "Create and manage Secure Web Proxy on GCP for secured egress web traffic" owners = ["maitreya-source"] topics = join(",", [local.common_topics.security, local.common_topics.net]) }, From d3a53f4941577a09c2c8207bd6f7e981ad40efbb Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 5 Apr 2024 11:20:23 -0500 Subject: [PATCH 0904/1371] refactor!: remove dm/kcc templates, update readme (#2256) --- .github/ISSUE_TEMPLATE/bug.yaml | 52 + .github/ISSUE_TEMPLATE/feature.yaml | 36 + .github/ISSUE_TEMPLATE/issue-template.md | 19 - .github/issue_template.md | 5 - .github/renovate.json | 1 - .github/workflows/lint.yaml | 2 +- .gitignore | 1 - .pre-commit-config.yaml | 2 - CODEOWNERS | 6 - README.md | 19 +- config-connector/solutions/README.md | 102 - .../solutions/apps/helm/wordpress/README.md | 87 - .../charts/wordpress-gcp/.helmignore | 22 - .../wordpress/charts/wordpress-gcp/Chart.yaml | 6 - .../wordpress-gcp/templates/gcp-sql-api.yaml | 7 - .../wordpress-gcp/templates/gcp-sql-db.yaml | 8 - .../templates/gcp-sql-instance.yaml | 9 - .../templates/gcp-sql-policy-member.yaml | 11 - .../templates/gcp-sql-service-account.yaml | 6 - .../wordpress-gcp/templates/gcp-sql-user.yaml | 13 - .../templates/gcp-wi-policy.yaml | 13 - .../templates/k8s-external-load-balancer.yaml | 15 - .../templates/k8s-service-account.yaml | 6 - .../templates/k8s-sql-db-credentials.yaml | 9 - .../templates/k8s-stateful-set.yaml | 86 - .../charts/wordpress-gcp/values.yaml | 23 - .../solutions/iam/helm/folder-iam/Chart.yaml | 18 - .../solutions/iam/helm/folder-iam/README.md | 87 - .../folder-iam/templates/iampolicymember.yaml | 25 - .../solutions/iam/helm/folder-iam/values.yaml | 19 - .../iam/helm/kms-key-ring/Chart.yaml | 18 - .../solutions/iam/helm/kms-key-ring/README.md | 98 - .../templates/iampolicymember.yaml | 24 - .../kms-key-ring/templates/kmskeyring.yaml | 19 - .../iam/helm/kms-key-ring/values.yaml | 21 - .../solutions/iam/helm/member-iam/Chart.yaml | 18 - .../solutions/iam/helm/member-iam/README.md | 107 - .../member-iam/templates/iampolicymember.yaml | 25 - .../templates/iamserviceaccount.yaml | 18 - .../solutions/iam/helm/member-iam/values.yaml | 19 - .../solutions/iam/helm/project-iam/Chart.yaml | 18 - .../solutions/iam/helm/project-iam/README.md | 88 - .../templates/iampolicymember.yaml | 24 - .../iam/helm/project-iam/values.yaml | 19 - .../iam/helm/pubsub-subscription/Chart.yaml | 18 - .../iam/helm/pubsub-subscription/README.md | 100 - .../templates/iampolicymember.yaml | 25 - .../templates/pubsubsubscription.yaml | 23 - .../templates/pubsubtopic.yaml | 17 - .../iam/helm/pubsub-subscription/values.yaml | 23 - .../iam/helm/pubsub-topic/Chart.yaml | 18 - .../solutions/iam/helm/pubsub-topic/README.md | 102 - .../templates/iampolicymember.yaml | 25 - .../pubsub-topic/templates/pubsubtopic.yaml | 17 - .../iam/helm/pubsub-topic/values.yaml | 20 - .../iam/helm/service-account/Chart.yaml | 18 - .../iam/helm/service-account/README.md | 91 - .../templates/iampolicymember.yaml | 25 - .../templates/iamserviceaccount.yaml | 18 - .../iam/helm/service-account/values.yaml | 20 - .../iam/helm/storage-bucket-iam/Chart.yaml | 18 - .../iam/helm/storage-bucket-iam/README.md | 85 - .../templates/iampolicymember.yaml | 25 - .../iam/helm/storage-bucket-iam/values.yaml | 20 - .../solutions/iam/helm/subnet/Chart.yaml | 18 - .../solutions/iam/helm/subnet/README.md | 96 - .../subnet/templates/computernetwork.yaml | 21 - .../subnet/templates/iampolicymember.yaml | 25 - .../iam/helm/subnet/templates/subnet.yaml | 28 - .../solutions/iam/helm/subnet/values.yaml | 24 - .../solutions/iam/kpt/folder-iam/Kptfile | 29 - .../solutions/iam/kpt/folder-iam/README.md | 55 - .../iam/kpt/folder-iam/iampolicymember.yaml | 25 - .../solutions/iam/kpt/kms-crypto-key/Kptfile | 44 - .../iam/kpt/kms-crypto-key/README.md | 52 - .../kpt/kms-crypto-key/iampolicymember.yaml | 24 - .../iam/kpt/kms-crypto-key/kmscryptokey.yaml | 24 - .../iam/kpt/kms-crypto-key/kmskeyring.yaml | 19 - .../solutions/iam/kpt/kms-key-ring/Kptfile | 36 - .../solutions/iam/kpt/kms-key-ring/README.md | 47 - .../iam/kpt/kms-key-ring/iampolicymember.yaml | 24 - .../iam/kpt/kms-key-ring/kmskeyring.yaml | 19 - .../iam/kpt/member-iam/0-namespace.yaml | 21 - .../solutions/iam/kpt/member-iam/Kptfile | 49 - .../solutions/iam/kpt/member-iam/README.md | 65 - .../iam/kpt/member-iam/iampolicymember.yaml | 28 - .../iam/kpt/member-iam/iamserviceaccount.yaml | 19 - .../solutions/iam/kpt/project-iam/Kptfile | 37 - .../solutions/iam/kpt/project-iam/README.md | 38 - .../iam/kpt/project-iam/iampolicymember.yaml | 24 - .../iam/kpt/pubsub-subscription/Kptfile | 36 - .../iam/kpt/pubsub-subscription/README.md | 44 - .../pubsub-subscription/iampolicymember.yaml | 24 - .../pubsubsubscription.yaml | 23 - .../kpt/pubsub-subscription/pubsubtopic.yaml | 17 - .../solutions/iam/kpt/pubsub-topic/Kptfile | 29 - .../solutions/iam/kpt/pubsub-topic/README.md | 45 - .../iam/kpt/pubsub-topic/iampolicymember.yaml | 24 - .../iam/kpt/pubsub-topic/pubsubtopic.yaml | 17 - .../solutions/iam/kpt/service-account/Kptfile | 29 - .../iam/kpt/service-account/README.md | 53 - .../kpt/service-account/iampolicymember.yaml | 25 - .../service-account/iamserviceaccount.yaml | 18 - .../iam/kpt/storage-bucket-iam/Kptfile | 29 - .../iam/kpt/storage-bucket-iam/README.md | 45 - .../storage-bucket-iam/iampolicymember.yaml | 24 - .../solutions/iam/kpt/subnet/Kptfile | 45 - .../solutions/iam/kpt/subnet/README.md | 69 - .../iam/kpt/subnet/computenetwork.yaml | 21 - .../iam/kpt/subnet/iampolicymember.yaml | 25 - .../solutions/iam/kpt/subnet/subnet.yaml | 28 - .../networking/helm/autoneg/README.md | 194 -- .../helm/autoneg/clusters/Chart.yaml | 20 - .../clusters/templates/gcp-cluster-1.yaml | 39 - .../clusters/templates/gcp-cluster-2.yaml | 39 - .../templates/k8s-cluster-1-secret-pwd.yaml | 20 - .../templates/k8s-cluster-2-secret-pwd.yaml | 20 - .../helm/autoneg/clusters/values.yaml | 11 - .../networking/helm/autoneg/lb/Chart.yaml | 20 - .../lb/templates/gcp-backend-service.yaml | 25 - .../lb/templates/gcp-compute-firewall.yaml | 27 - .../gcp-compute-forwarding-rule.yaml | 27 - .../templates/gcp-compute-health-check.yaml | 24 - .../lb/templates/gcp-custom-role-autoneg.yaml | 25 - .../lb/templates/gcp-default-network.yaml | 23 - .../templates/gcp-policy-autoneg-custom.yaml | 25 - .../lb/templates/gcp-policy-autoneg-wi.yaml | 28 - .../gcp-service-account-autoneg.yaml | 20 - .../lb/templates/gcp-target-http-proxy.yaml | 24 - .../autoneg/lb/templates/gcp-url-map.yaml | 26 - .../networking/helm/autoneg/lb/values.yaml | 16 - .../helm/autoneg/workload/Chart.yaml | 20 - .../autoneg/workload/templates/autoneg.yaml | 208 -- .../workload/templates/deployment.yaml | 56 - .../autoneg/workload/templates/service.yaml | 28 - .../helm/autoneg/workload/values.yaml | 16 - .../projects/helm/owned-project/Chart.yaml | 18 - .../projects/helm/owned-project/README.md | 89 - .../templates/iampolicymember.yaml | 25 - .../helm/owned-project/templates/project.yaml | 24 - .../projects/helm/owned-project/values.yaml | 18 - .../projects/helm/project-hierarchy/README.md | 101 - .../helm/project-hierarchy/folder/Chart.yaml | 18 - .../folder/templates/folder.yaml | 22 - .../helm/project-hierarchy/folder/values.yaml | 16 - .../helm/project-hierarchy/project/Chart.yaml | 18 - .../project/templates/project.yaml | 24 - .../project-hierarchy/project/values.yaml | 17 - .../projects/helm/project-services/Chart.yaml | 18 - .../projects/helm/project-services/README.md | 97 - .../project-services/templates/service.yaml | 19 - .../helm/project-services/values.yaml | 18 - .../projects/helm/simple-project/Chart.yaml | 18 - .../projects/helm/simple-project/README.md | 81 - .../simple-project/templates/project.yaml | 24 - .../projects/helm/simple-project/values.yaml | 17 - .../projects/kpt/owned-project/Kptfile | 37 - .../projects/kpt/owned-project/README.md | 56 - .../kpt/owned-project/iampolicymember.yaml | 25 - .../projects/kpt/owned-project/project.yaml | 26 - .../projects/kpt/project-hierarchy/Kptfile | 43 - .../projects/kpt/project-hierarchy/README.md | 90 - .../kpt/project-hierarchy/folder.yaml | 23 - .../kpt/project-hierarchy/project.yaml | 26 - .../kpt/project-services/0-namespace.yaml | 20 - .../projects/kpt/project-services/Kptfile | 22 - .../projects/kpt/project-services/README.md | 42 - .../kpt/project-services/service.yaml | 18 - .../projects/kpt/shared-vpc/0-namespace.yaml | 28 - .../solutions/projects/kpt/shared-vpc/Kptfile | 51 - .../projects/kpt/shared-vpc/README.md | 82 - .../computesharedvpchostproject.yaml | 22 - .../computesharedvpcserviceproject.yaml | 24 - .../projects/kpt/shared-vpc/network.yaml | 21 - .../projects/kpt/shared-vpc/project.yaml | 38 - .../projects/kpt/shared-vpc/service.yaml | 28 - .../projects/kpt/simple-project/Kptfile | 29 - .../projects/kpt/simple-project/README.md | 49 - .../projects/kpt/simple-project/project.yaml | 25 - .../sql/helm/mysql-private/README.md | 113 - .../sql/helm/mysql-private/network/Chart.yaml | 18 - .../network/templates/computeaddress.yaml | 24 - .../network/templates/computenetwork.yaml | 17 - .../servicenetworkingconnection.yaml | 23 - .../sql/helm/mysql-private/sql/Chart.yaml | 18 - .../mysql-private/sql/templates/secret.yaml | 19 - .../sql/templates/sqldatabase.yaml | 22 - .../sql/templates/sqlinstance.yaml | 26 - .../mysql-private/sql/templates/sqluser.yaml | 26 - .../sql/helm/mysql-private/sql/values.yaml | 23 - .../solutions/sql/helm/postgres-ha/Chart.yaml | 18 - .../solutions/sql/helm/postgres-ha/README.md | 109 - .../helm/postgres-ha/templates/secret.yaml | 21 - .../postgres-ha/templates/sqldatabase.yaml | 32 - .../postgres-ha/templates/sqlinstance.yaml | 153 - .../helm/postgres-ha/templates/sqluser.yaml | 51 - .../sql/helm/postgres-ha/values.yaml | 47 - .../solutions/sql/kpt/mysql-ha/Kptfile | 68 - .../solutions/sql/kpt/mysql-ha/README.md | 59 - .../solutions/sql/kpt/mysql-ha/secret.yaml | 21 - .../sql/kpt/mysql-ha/sqldatabase.yaml | 32 - .../sql/kpt/mysql-ha/sqlinstance.yaml | 206 -- .../solutions/sql/kpt/mysql-ha/sqluser.yaml | 54 - .../solutions/sql/kpt/mysql-private/Kptfile | 43 - .../solutions/sql/kpt/mysql-private/README.md | 70 - .../mysql-private/network/computeaddress.yaml | 24 - .../mysql-private/network/computenetwork.yaml | 17 - .../network/servicenetworkingconnection.yaml | 23 - .../sql/kpt/mysql-private/sql/secret.yaml | 19 - .../kpt/mysql-private/sql/sqldatabase.yaml | 22 - .../kpt/mysql-private/sql/sqlinstance.yaml | 26 - .../sql/kpt/mysql-private/sql/sqluser.yaml | 26 - .../solutions/sql/kpt/mysql-public/Kptfile | 36 - .../solutions/sql/kpt/mysql-public/README.md | 53 - .../sql/kpt/mysql-public/secret.yaml | 19 - .../sql/kpt/mysql-public/sqldatabase.yaml | 22 - .../sql/kpt/mysql-public/sqlinstance.yaml | 42 - .../sql/kpt/mysql-public/sqluser.yaml | 25 - .../solutions/sql/kpt/postgres-ha/Kptfile | 137 - .../solutions/sql/kpt/postgres-ha/README.md | 74 - .../solutions/sql/kpt/postgres-ha/secret.yaml | 21 - .../sql/kpt/postgres-ha/sqldatabase.yaml | 32 - .../sql/kpt/postgres-ha/sqlinstance.yaml | 153 - .../sql/kpt/postgres-ha/sqluser.yaml | 51 - .../solutions/sql/kpt/postgres-public/Kptfile | 36 - .../sql/kpt/postgres-public/README.md | 54 - .../sql/kpt/postgres-public/secret.yaml | 19 - .../sql/kpt/postgres-public/sqldatabase.yaml | 22 - .../sql/kpt/postgres-public/sqlinstance.yaml | 43 - .../sql/kpt/postgres-public/sqluser.yaml | 25 - config-connector/tests/README.md | 260 -- config-connector/tests/ccs-test/cmd/root.go | 467 --- config-connector/tests/ccs-test/go.mod | 9 - config-connector/tests/ccs-test/go.sum | 133 - config-connector/tests/ccs-test/main.go | 26 - config-connector/tests/ccs-test/util/util.go | 34 - .../vendor/github.com/ghodss/yaml/.gitignore | 20 - .../vendor/github.com/ghodss/yaml/.travis.yml | 7 - .../vendor/github.com/ghodss/yaml/LICENSE | 50 - .../vendor/github.com/ghodss/yaml/README.md | 121 - .../vendor/github.com/ghodss/yaml/fields.go | 501 --- .../vendor/github.com/ghodss/yaml/yaml.go | 277 -- .../vendor/github.com/golang/glog/LICENSE | 191 -- .../vendor/github.com/golang/glog/README | 44 - .../vendor/github.com/golang/glog/glog.go | 1180 -------- .../github.com/golang/glog/glog_file.go | 124 - .../inconshreveable/mousetrap/LICENSE | 13 - .../inconshreveable/mousetrap/README.md | 23 - .../inconshreveable/mousetrap/trap_others.go | 15 - .../inconshreveable/mousetrap/trap_windows.go | 98 - .../mousetrap/trap_windows_1.4.go | 46 - .../vendor/github.com/spf13/cobra/.gitignore | 39 - .../vendor/github.com/spf13/cobra/.mailmap | 3 - .../vendor/github.com/spf13/cobra/.travis.yml | 29 - .../vendor/github.com/spf13/cobra/LICENSE.txt | 174 -- .../vendor/github.com/spf13/cobra/Makefile | 36 - .../vendor/github.com/spf13/cobra/README.md | 770 ----- .../vendor/github.com/spf13/cobra/args.go | 109 - .../spf13/cobra/bash_completions.go | 641 ---- .../spf13/cobra/bash_completions.md | 383 --- .../vendor/github.com/spf13/cobra/cobra.go | 207 -- .../vendor/github.com/spf13/cobra/command.go | 1634 ---------- .../github.com/spf13/cobra/command_notwin.go | 5 - .../github.com/spf13/cobra/command_win.go | 26 - .../spf13/cobra/custom_completions.go | 384 --- .../spf13/cobra/fish_completions.go | 172 -- .../spf13/cobra/fish_completions.md | 7 - .../vendor/github.com/spf13/cobra/go.mod | 12 - .../vendor/github.com/spf13/cobra/go.sum | 149 - .../spf13/cobra/powershell_completions.go | 100 - .../spf13/cobra/powershell_completions.md | 14 - .../spf13/cobra/shell_completions.go | 85 - .../github.com/spf13/cobra/zsh_completions.go | 336 -- .../github.com/spf13/cobra/zsh_completions.md | 39 - .../vendor/github.com/spf13/pflag/.gitignore | 2 - .../vendor/github.com/spf13/pflag/.travis.yml | 21 - .../vendor/github.com/spf13/pflag/LICENSE | 28 - .../vendor/github.com/spf13/pflag/README.md | 296 -- .../vendor/github.com/spf13/pflag/bool.go | 94 - .../github.com/spf13/pflag/bool_slice.go | 147 - .../vendor/github.com/spf13/pflag/bytes.go | 209 -- .../vendor/github.com/spf13/pflag/count.go | 96 - .../vendor/github.com/spf13/pflag/duration.go | 86 - .../github.com/spf13/pflag/duration_slice.go | 128 - .../vendor/github.com/spf13/pflag/flag.go | 1227 -------- .../vendor/github.com/spf13/pflag/float32.go | 88 - .../vendor/github.com/spf13/pflag/float64.go | 84 - .../github.com/spf13/pflag/golangflag.go | 105 - .../vendor/github.com/spf13/pflag/int.go | 84 - .../vendor/github.com/spf13/pflag/int16.go | 88 - .../vendor/github.com/spf13/pflag/int32.go | 88 - .../vendor/github.com/spf13/pflag/int64.go | 84 - .../vendor/github.com/spf13/pflag/int8.go | 88 - .../github.com/spf13/pflag/int_slice.go | 128 - .../vendor/github.com/spf13/pflag/ip.go | 94 - .../vendor/github.com/spf13/pflag/ip_slice.go | 148 - .../vendor/github.com/spf13/pflag/ipmask.go | 122 - .../vendor/github.com/spf13/pflag/ipnet.go | 98 - .../vendor/github.com/spf13/pflag/string.go | 80 - .../github.com/spf13/pflag/string_array.go | 103 - .../github.com/spf13/pflag/string_slice.go | 149 - .../github.com/spf13/pflag/string_to_int.go | 149 - .../spf13/pflag/string_to_string.go | 160 - .../vendor/github.com/spf13/pflag/uint.go | 88 - .../vendor/github.com/spf13/pflag/uint16.go | 88 - .../vendor/github.com/spf13/pflag/uint32.go | 88 - .../vendor/github.com/spf13/pflag/uint64.go | 88 - .../vendor/github.com/spf13/pflag/uint8.go | 88 - .../github.com/spf13/pflag/uint_slice.go | 126 - .../vendor/gopkg.in/yaml.v2/.travis.yml | 12 - .../ccs-test/vendor/gopkg.in/yaml.v2/LICENSE | 201 -- .../vendor/gopkg.in/yaml.v2/LICENSE.libyaml | 31 - .../ccs-test/vendor/gopkg.in/yaml.v2/NOTICE | 13 - .../vendor/gopkg.in/yaml.v2/README.md | 133 - .../ccs-test/vendor/gopkg.in/yaml.v2/apic.go | 739 ----- .../vendor/gopkg.in/yaml.v2/decode.go | 775 ----- .../vendor/gopkg.in/yaml.v2/emitterc.go | 1685 ----------- .../vendor/gopkg.in/yaml.v2/encode.go | 390 --- .../ccs-test/vendor/gopkg.in/yaml.v2/go.mod | 5 - .../vendor/gopkg.in/yaml.v2/parserc.go | 1095 ------- .../vendor/gopkg.in/yaml.v2/readerc.go | 412 --- .../vendor/gopkg.in/yaml.v2/resolve.go | 258 -- .../vendor/gopkg.in/yaml.v2/scannerc.go | 2696 ----------------- .../vendor/gopkg.in/yaml.v2/sorter.go | 113 - .../vendor/gopkg.in/yaml.v2/writerc.go | 26 - .../ccs-test/vendor/gopkg.in/yaml.v2/yaml.go | 466 --- .../ccs-test/vendor/gopkg.in/yaml.v2/yamlh.go | 738 ----- .../vendor/gopkg.in/yaml.v2/yamlprivateh.go | 173 -- .../tests/ccs-test/vendor/modules.txt | 12 - .../tests/testcases/environments.template | 31 - .../iam/kpt/folder-iam/original_values.yaml | 15 - .../kpt/folder-iam/required_fields_only.yaml | 15 - .../kpt/kms-crypto-key/original_values.yaml | 14 - .../kms-crypto-key/required_fields_only.yaml | 14 - .../iam/kpt/kms-key-ring/original_values.yaml | 14 - .../kms-key-ring/required_fields_only.yaml | 14 - .../iam/kpt/member-iam/original_values.yaml | 14 - .../kpt/member-iam/required_fields_only.yaml | 14 - .../iam/kpt/project-iam/original_values.yaml | 15 - .../kpt/project-iam/required_fields_only.yaml | 15 - .../pubsub-subscription/original_values.yaml | 14 - .../required_fields_only.yaml | 14 - .../iam/kpt/pubsub-topic/original_values.yaml | 14 - .../pubsub-topic/required_fields_only.yaml | 14 - .../kpt/service-account/original_values.yaml | 14 - .../service-account/required_fields_only.yaml | 14 - .../storage-bucket-iam/original_values.yaml | 15 - .../required_fields_only.yaml | 15 - .../iam/kpt/subnet/original_values.yaml | 14 - .../iam/kpt/subnet/required_fields_only.yaml | 14 - .../kpt/owned-project/original_values.yaml | 17 - .../owned-project/required_fields_only.yaml | 17 - .../kpt/project-services/original_values.yaml | 14 - .../required_fields_only.yaml | 14 - .../kpt/shared-vpc/original_values.yaml | 18 - .../kpt/shared-vpc/required_fields_only.yaml | 18 - .../kpt/simple-project/original_values.yaml | 16 - .../simple-project/required_fields_only.yaml | 16 - .../sql/kpt/mysql-ha/original_values.yaml | 17 - ...equired_fields_with_sql_instance_name.yaml | 17 - .../sql/kpt/mysql-public/original_values.yaml | 15 - ...equired_fields_with_sql_instance_name.yaml | 15 - .../sql/kpt/postgres-ha/original_values.yaml | 20 - ...equired_fields_with_sql_instance_name.yaml | 20 - .../kpt/postgres-public/original_values.yaml | 15 - ...equired_fields_with_sql_instance_name.yaml | 15 - .../tests/testcases/test_values.template | 13 - dm/.gitignore | 9 - dm/CHANGELOG.md | 195 -- dm/CI/cft_base_container/Dockerfile | 27 - dm/CI/cft_base_container/cloudbuild.yaml | 13 - dm/CI/cft_base_contianer/Dockerfile | 27 - dm/CI/cft_base_contianer/cloudbuild.yaml | 13 - dm/CI/cft_schema_runner/Dockerfile | 16 - dm/CI/cft_schema_runner/cloudbuild-test.yaml | 177 -- dm/CI/cft_schema_runner/cloudbuild.yaml | 13 - dm/CI/cft_schema_runner/docker-entrypoint.sh | 42 - dm/CI/cft_test_runner/Dockerfile | 14 - .../cloud-foundation-tests.conf | 5 - dm/CI/cft_test_runner/cloudbuild-test.yaml | 10 - dm/CI/cft_test_runner/cloudbuild.yaml | 13 - dm/CI/cft_test_runner/docker-entrypoint.sh | 47 - dm/CI/triggers/cft-triggers.py | 32 - dm/CI/triggers/cft-triggers.py.schema | 23 - dm/CI/triggers/cloudbuild_trigger_cft.yaml | 53 - dm/MANIFEST.in | 1 - dm/Makefile | 70 - dm/README.md | 28 - dm/VERSION | 1 - dm/docs/template_dev_guide.md | 162 - dm/docs/tool_dev_guide.md | 155 - dm/docs/userguide.md | 728 ----- .../wrapper-template/README.md | 35 - .../wrapper-template/folders-wrapper.py | 21 - .../folders-wrapper.py.schema | 86 - .../wrapper-template/generic-wrapper.py | 23 - .../wrapper-template/generic-wrapper.yaml | 12 - .../google_netblock_ip_ranges/README.md | 57 - .../google_netblock_ip_ranges_example.yaml | 42 - .../google_netblock_ip_ranges.py | 52 - .../google_netblock_ip_ranges.yaml | 230 -- dm/pipeline/README.md | 86 - dm/pipeline/app/Jenkinsfile | 47 - dm/pipeline/app/app-team-dev.yaml | 24 - dm/pipeline/app/app-team-prod.yaml | 28 - dm/pipeline/network/Jenkinsfile | 47 - dm/pipeline/network/firewall-app-team-1.yaml | 49 - dm/pipeline/network/firewall-app-team-2.yaml | 47 - dm/pipeline/network/network-app-team-1.yaml | 24 - dm/pipeline/network/network-app-team-2.yaml | 16 - dm/pipeline/network/proxy-app-team-2.yaml | 22 - dm/pipeline/pipeline-vars | 15 - dm/pipeline/project/Jenkinsfile | 47 - dm/pipeline/project/project.yaml | 25 - dm/pipeline/teardown/Jenkinsfile | 47 - dm/pylintrc | 408 --- dm/pytest.ini | 4 - dm/requirements/development.txt | 8 - dm/requirements/install.txt | 2 - dm/requirements/prerequisites.txt | 3 - dm/setup.cfg | 6 - dm/setup.py | 35 - dm/solutions/take5-demo/README.md | 98 - dm/src/cft | 11 - dm/src/cftenv | 124 - dm/src/cloud_foundation_toolkit/__init__.py | 19 - dm/src/cloud_foundation_toolkit/actions.py | 141 - dm/src/cloud_foundation_toolkit/cli.py | 138 - dm/src/cloud_foundation_toolkit/deployment.py | 753 ----- dm/src/cloud_foundation_toolkit/dm_utils.py | 118 - dm/src/cloud_foundation_toolkit/yaml_utils.py | 14 - dm/templates/README.md | 32 - dm/templates/autoscaler/README.md | 70 - dm/templates/autoscaler/autoscaler.py | 93 - dm/templates/autoscaler/autoscaler.py.schema | 176 -- .../examples/autoscaler_regional.yaml | 27 - .../autoscaler/examples/autoscaler_zonal.yaml | 28 - .../tests/integration/autoscaler.bats | 96 - .../tests/integration/autoscaler.yaml | 70 - dm/templates/backend_service/README.md | 70 - .../backend_service/backend_service.py | 96 - .../backend_service/backend_service.py.schema | 411 --- .../examples/backend_service_global.yaml | 27 - .../examples/backend_service_regional.yaml | 26 - .../tests/integration/backend_service.bats | 108 - .../tests/integration/backend_service.yaml | 84 - dm/templates/bastion/README.md | 82 - dm/templates/bastion/bastion.py | 254 -- dm/templates/bastion/bastion.py.schema | 249 -- dm/templates/bastion/examples/bastion.yaml | 28 - .../bastion/tests/integration/bastion.bats | 267 -- .../bastion/tests/integration/bastion.yaml | 67 - dm/templates/bigquery/README.md | 67 - dm/templates/bigquery/bigquery_dataset.py | 108 - .../bigquery/bigquery_dataset.py.schema | 215 -- dm/templates/bigquery/bigquery_table.py | 104 - .../bigquery/bigquery_table.py.schema | 568 ---- dm/templates/bigquery/examples/bigquery.yaml | 34 - .../bigquery/tests/integration/bigquery.bats | 100 - .../bigquery/tests/integration/bigquery.yaml | 39 - dm/templates/cloud_filestore/README.md | 66 - .../cloud_filestore/cloud_filestore.py | 67 - .../cloud_filestore/cloud_filestore.py.schema | 131 - .../examples/cloud_filestore.yaml | 27 - .../tests/integration/cloud_filestore.bats | 72 - .../tests/integration/cloud_filestore.yaml | 24 - dm/templates/cloud_function/README.md | 74 - dm/templates/cloud_function/cloud_function.py | 198 -- .../cloud_function/cloud_function.py.schema | 214 -- .../examples/cloud_function.yaml | 22 - .../cloud_function/function/helloGET.js | 10 - .../cloud_function/function/package.json | 11 - .../tests/integration/cloud_function.bats | 109 - .../tests/integration/cloud_function.yaml | 43 - dm/templates/cloud_router/README.md | 64 - dm/templates/cloud_router/cloud_router.py | 94 - .../cloud_router/cloud_router.py.schema | 425 --- .../examples/cloud_nat_router.yaml | 24 - .../cloud_router/examples/cloud_router.yaml | 18 - .../tests/integration/cloud_router.bats | 81 - .../tests/integration/cloud_router.yaml | 30 - .../schemas/invalid_additional_options.yaml | 4 - .../tests/schemas/valid_basic.yaml | 5 - dm/templates/cloud_spanner/README.md | 65 - dm/templates/cloud_spanner/cloud_spanner.py | 119 - .../cloud_spanner/cloud_spanner.py.schema | 127 - .../cloud_spanner/examples/cloud_spanner.yaml | 16 - .../tests/integration/cloud_spanner.bats | 95 - .../tests/integration/cloud_spanner.yaml | 19 - .../schemas/invalid_additional_options.yaml | 4 - .../tests/schemas/valid_basic.yaml | 5 - .../tests/schemas/valid_complex.yaml | 5 - dm/templates/cloud_sql/README.md | 91 - dm/templates/cloud_sql/cloud_sql.py | 251 -- dm/templates/cloud_sql/cloud_sql.py.schema | 576 ---- .../cloud_sql/examples/cloud_sql.yaml | 27 - .../cloud_sql/examples/cloud_sql_mssql.yaml | 30 - .../examples/cloud_sql_postgres.yaml | 29 - .../examples/cloud_sql_private_network.yaml | 32 - .../examples/cloud_sql_read_replica.yaml | 41 - .../tests/integration/cloud_sql.bats | 167 - .../tests/integration/cloud_sql.yaml | 41 - .../tests/integration/cloud_sql_mssql.bats | 136 - .../tests/integration/cloud_sql_mssql.yaml | 28 - .../tests/integration/cloud_sql_postgres.bats | 166 - .../tests/integration/cloud_sql_postgres.yaml | 41 - .../schemas/invalid_additional_options.yaml | 4 - .../invalid_additional_options_nested.yaml | 4 - .../tests/schemas/invalid_missing_region.yaml | 2 - .../tests/schemas/invalid_missing_tier.yaml | 1 - .../cloud_sql/tests/schemas/valid_basic.yaml | 5 - .../tests/schemas/valid_complex.yaml | 17 - dm/templates/cloud_tasks/README.md | 99 - .../examples/cloud_tasks_queue.yaml | 24 - .../examples/cloud_tasks_task.yaml | 20 - .../examples/create_typeprovider.sh | 19 - .../examples/delete_typeprovider.sh | 8 - dm/templates/cloud_tasks/queue.py | 56 - dm/templates/cloud_tasks/queue.py.schema | 226 -- dm/templates/cloud_tasks/task.py | 92 - dm/templates/cloud_tasks/task.py.schema | 194 -- .../tests/integration/cloud_tasks.bats | 135 - .../tests/integration/cloud_tasks.yaml | 36 - dm/templates/cloudbuild/README.md | 74 - dm/templates/cloudbuild/cloudbuild.py | 72 - dm/templates/cloudbuild/cloudbuild.py.schema | 480 --- .../cloudbuild/examples/cloudbuild.yaml | 43 - .../examples/cloudbuild_reposource.yaml | 45 - .../examples/cloudbuild_storagesource.yaml | 46 - .../tests/integration/cloudbuild.bats | 135 - .../tests/integration/cloudbuild.yaml | 21 - dm/templates/dataproc/README.md | 75 - dm/templates/dataproc/dataproc.py | 164 - dm/templates/dataproc/dataproc.py.schema | 295 -- dm/templates/dataproc/examples/dataproc.yaml | 27 - .../dataproc/tests/integration/dataproc.bats | 119 - .../dataproc/tests/integration/dataproc.yaml | 28 - dm/templates/dns_managed_zone/README.md | 74 - .../dns_managed_zone/dns_managed_zone.py | 73 - .../dns_managed_zone.py.schema | 253 -- .../examples/dns_managed_zone.yaml | 16 - .../examples/dns_managed_zone_legacy.yaml | 16 - .../examples/dns_managed_zone_private.yaml | 17 - ...anaged_zone_private_visibility_config.yaml | 24 - .../examples/dns_managed_zone_public.yaml | 17 - .../tests/integration/dns_mz_bkwrd_cmptb.bats | 86 - .../tests/integration/dns_mz_bkwrd_cmptb.yaml | 19 - .../integration/dns_mz_cross_project.bats | 91 - .../integration/dns_mz_cross_project.yaml | 22 - .../tests/integration/dns_mz_private.bats | 94 - .../tests/integration/dns_mz_private.yaml | 17 - .../integration/dns_mz_prvt_vsblt_cfg.bats | 102 - .../integration/dns_mz_prvt_vsblt_cfg.yaml | 22 - .../tests/integration/dns_mz_public.bats | 95 - .../tests/integration/dns_mz_public.yaml | 17 - .../tests/integration/dns_mz_simple.bats | 87 - .../tests/integration/dns_mz_simple.yaml | 13 - dm/templates/dns_records/README.md | 64 - dm/templates/dns_records/dns_records.py | 35 - .../dns_records/dns_records.py.schema | 113 - .../dns_records/examples/dns_records.yaml | 54 - .../tests/integration/dns_records.bats | 267 -- .../tests/integration/dns_records.yaml | 51 - dm/templates/external_load_balancer/README.md | 81 - .../examples/external_load_balancer_http.yaml | 30 - .../external_load_balancer_https.yaml | 57 - .../examples/external_load_balancer_ssl.yaml | 30 - .../examples/external_load_balancer_tcp.yaml | 28 - .../external_load_balancer.py | 313 -- .../external_load_balancer.py.schema | 641 ---- .../integration/external_load_balancer.bats | 190 -- .../integration/external_load_balancer.yaml | 234 -- dm/templates/firewall/README.md | 67 - dm/templates/firewall/examples/firewall.yaml | 40 - dm/templates/firewall/firewall.py | 58 - dm/templates/firewall/firewall.py.schema | 288 -- .../firewall/tests/integration/firewall.bats | 80 - .../firewall/tests/integration/firewall.yaml | 38 - dm/templates/folder/README.md | 66 - dm/templates/folder/examples/folder.yaml | 22 - dm/templates/folder/folder.py | 61 - dm/templates/folder/folder.py.schema | 141 - .../folder/tests/integration/folder.bats | 106 - .../folder/tests/integration/folder.yaml | 21 - dm/templates/forwarding_rule/README.md | 71 - .../examples/forwarding_rule_global.yaml | 25 - .../examples/forwarding_rule_regional.yaml | 24 - .../forwarding_rule/forwarding_rule.py | 105 - .../forwarding_rule/forwarding_rule.py.schema | 351 --- .../tests/integration/forwarding_rule.bats | 110 - .../tests/integration/forwarding_rule.yaml | 108 - dm/templates/gcs_bucket/README.md | 69 - .../gcs_bucket/examples/gcs_bucket.yaml | 25 - .../examples/gcs_bucket_iam_bindings.yaml | 36 - .../examples/gcs_bucket_lifecycle.yaml | 38 - dm/templates/gcs_bucket/gcs_bucket.py | 131 - dm/templates/gcs_bucket/gcs_bucket.py.schema | 499 --- .../integration/gcs_35_iam_bindings.bats | 96 - .../integration/gcs_35_iam_bindings.yaml | 268 -- .../tests/integration/gcs_bucket.bats | 163 - .../tests/integration/gcs_bucket.yaml | 38 - .../gcs_iam_bucket_policy_only.bats | 79 - .../gcs_iam_bucket_policy_only.yaml | 18 - dm/templates/gke/README.md | 70 - dm/templates/gke/examples/gke_regional.yaml | 32 - .../gke/examples/gke_regional_private.yaml | 65 - dm/templates/gke/examples/gke_zonal.yaml | 31 - dm/templates/gke/gke.py | 142 - dm/templates/gke/gke.py.schema | 1146 ------- dm/templates/gke/tests/integration/gke.bats | 147 - dm/templates/gke/tests/integration/gke.yaml | 39 - dm/templates/haproxy/README.md | 71 - dm/templates/haproxy/examples/haproxy.yaml | 27 - dm/templates/haproxy/haproxy.py | 216 -- dm/templates/haproxy/haproxy.py.schema | 142 - .../haproxy/tests/integration/haproxy.bats | 161 - .../haproxy/tests/integration/haproxy.yaml | 29 - dm/templates/healthcheck/README.md | 80 - .../healthcheck/examples/healthcheck.yaml | 128 - dm/templates/healthcheck/healthcheck.py | 158 - .../healthcheck/healthcheck.py.schema | 189 -- dm/templates/healthcheck/tests/.gitignore | 1 - .../tests/integration/cloudbuild-schema.yaml | 4 - .../tests/integration/healthcheck.bats | 308 -- .../tests/integration/healthcheck.yaml | 189 -- dm/templates/iam_custom_role/README.md | 68 - .../examples/iam_custom_role.yaml | 38 - .../organization_custom_role.py | 52 - .../organization_custom_role.py.schema | 92 - .../iam_custom_role/project_custom_role.py | 52 - .../project_custom_role.py.schema | 89 - .../tests/integration/iam_custom_role.bats | 82 - .../tests/integration/iam_custom_role.yaml | 32 - dm/templates/iam_member/README.md | 79 - .../iam_member/examples/iam_member.yaml | 43 - .../examples/iam_member_resource.yaml | 47 - dm/templates/iam_member/iam_member.py | 93 - dm/templates/iam_member/iam_member.py.schema | 131 - .../tests/integration/iam_35_members.bats | 99 - .../tests/integration/iam_35_members.yaml | 313 -- .../tests/integration/iam_member.bats | 132 - .../tests/integration/iam_member.yaml | 80 - dm/templates/instance/README.md | 65 - dm/templates/instance/examples/instance.yaml | 27 - .../instance/examples/instance_private.yaml | 26 - .../examples/instance_source_template.yaml | 31 - dm/templates/instance/instance.py | 167 - dm/templates/instance/instance.py.schema | 750 ----- .../instance/tests/integration/instance.bats | 100 - .../instance/tests/integration/instance.yaml | 25 - .../tests/integration/instance_1_nic.bats | 87 - .../tests/integration/instance_1_nic.yaml | 36 - .../tests/integration/instance_2_nics.bats | 94 - .../tests/integration/instance_2_nics.yaml | 48 - .../integration/instance_source_template.bats | 100 - .../integration/instance_source_template.yaml | 31 - .../instance_template/instance_template.bats | 123 - .../instance_template/instance_template.yaml | 37 - dm/templates/instance_template/README.md | 69 - .../examples/instance_template.yaml | 25 - .../instance_template/instance_template.py | 170 -- .../instance_template.py.schema | 768 ----- .../tests/integration/instance_template.bats | 122 - .../tests/integration/instance_template.yaml | 41 - .../instance_template_networks.bats | 134 - .../instance_template_networks.yaml | 63 - dm/templates/interconnect/README.md | 71 - .../examples/interconnect_dedicated.yaml | 26 - dm/templates/interconnect/interconnect.py | 72 - .../interconnect/interconnect.py.schema | 105 - .../interconnect_attachment/README.md | 71 - .../interconnect_attachment_dedicated.yaml | 27 - .../interconnect_attachment_partner.yaml | 27 - .../interconnect_attachment.py | 75 - .../interconnect_attachment.py.schema | 213 -- dm/templates/internal_load_balancer/README.md | 71 - .../examples/internal_load_balancer.yaml | 26 - .../internal_load_balancer.py | 141 - .../internal_load_balancer.py.schema | 201 -- .../integration/internal_load_balancer.bats | 120 - .../integration/internal_load_balancer.yaml | 71 - dm/templates/ip_reservation/README.md | 72 - .../examples/ip_reservation.yaml | 32 - dm/templates/ip_reservation/ip_address.py | 90 - .../ip_reservation/ip_address.py.schema | 195 -- dm/templates/ip_reservation/ip_reservation.py | 42 - .../ip_reservation/ip_reservation.py.schema | 175 -- .../tests/integration/ip_reservation.bats | 101 - .../tests/integration/ip_reservation.yaml | 28 - dm/templates/kms/README.md | 69 - dm/templates/kms/examples/kms.yaml | 24 - dm/templates/kms/examples/kms_signkey.yaml | 21 - dm/templates/kms/kms.py | 81 - dm/templates/kms/kms.py.schema | 151 - dm/templates/kms/tests/integration/kms.bats | 138 - dm/templates/kms/tests/integration/kms.yaml | 15 - dm/templates/logsink/README.md | 115 - ...ingaccount_logsink_bucket_destination.yaml | 42 - .../folder_logsink_bq_destination.yaml | 24 - ...ew_bq_destination_in_external_project.yaml | 26 - ...ucket_destination_in_external_project.yaml | 26 - ...ubsub_destination_in_external_project.yaml | 26 - .../org_logsink_pubsub_destination.yaml | 50 - .../project_logsink_bucket_destination.yaml | 41 - dm/templates/logsink/logsink.py | 243 -- dm/templates/logsink/logsink.py.schema | 196 -- .../logsink/tests/integration/logsink.bats | 333 -- .../logsink/tests/integration/logsink.yaml | 311 -- .../integration/logsink_external_project.bats | 104 - .../integration/logsink_external_project.yaml | 46 - dm/templates/managed_instance_group/README.md | 74 - .../examples/managed_instance_group.yaml | 25 - .../managed_instance_group_healthcheck.yaml | 32 - .../managed_instance_group.py | 214 -- .../managed_instance_group.py.schema | 1006 ------ .../integration/managed_instance_group.bats | 161 - .../integration/managed_instance_group.yaml | 44 - dm/templates/nat_gateway/README.md | 81 - .../nat_gateway/examples/nat_gateway.yaml | 28 - dm/templates/nat_gateway/nat_gateway.py | 424 --- .../nat_gateway/nat_gateway.py.schema | 191 -- .../tests/integration/nat_gateway.bats | 215 -- .../tests/integration/nat_gateway.yaml | 106 - dm/templates/network/README.md | 68 - dm/templates/network/examples/network.yaml | 32 - dm/templates/network/network.py | 96 - dm/templates/network/network.py.schema | 160 - dm/templates/network/subnetwork.py | 76 - dm/templates/network/subnetwork.py.schema | 134 - .../network/tests/integration/network.bats | 78 - .../network/tests/integration/network.yaml | 48 - .../tests/schemas/invalid_subnets.yaml | 15 - .../network/tests/schemas/valid_auto.yaml | 1 - .../network/tests/schemas/valid_subnets.yaml | 15 - dm/templates/project/README.md | 138 - .../project/examples/project_standalone.yaml | 39 - .../examples/project_vpc_consumer.yaml | 46 - .../project/examples/project_vpc_host.yaml | 40 - dm/templates/project/project.py | 369 --- dm/templates/project/project.py.schema | 353 --- .../project/tests/integration/project.bats | 170 -- .../project/tests/integration/project.yaml | 28 - .../tests/schemas/invalid_project.yaml | 24 - dm/templates/pubsub/README.md | 67 - dm/templates/pubsub/examples/pubsub.yaml | 22 - dm/templates/pubsub/examples/pubsub_push.yaml | 18 - dm/templates/pubsub/pubsub.py | 102 - dm/templates/pubsub/pubsub.py.schema | 208 -- .../pubsub/tests/integration/pubsub.bats | 119 - .../pubsub/tests/integration/pubsub.yaml | 24 - dm/templates/resource_policy/README.md | 64 - .../examples/resource_policy.yaml | 26 - .../resource_policy/resource_policy.py | 52 - .../resource_policy/resource_policy.py.schema | 225 -- .../tests/integration/resource_policy.bats | 90 - .../tests/integration/resource_policy.yaml | 50 - dm/templates/route/README.md | 68 - dm/templates/route/examples/route.yaml | 65 - dm/templates/route/route.py | 74 - dm/templates/route/route.py.schema | 80 - dm/templates/route/single_route.py | 119 - dm/templates/route/single_route.py.schema | 238 -- .../route/tests/integration/route.bats | 202 -- .../route/tests/integration/route.yaml | 47 - dm/templates/runtime_config/README.md | 78 - .../examples/runtime_config.yaml | 24 - dm/templates/runtime_config/runtime_config.py | 74 - .../runtime_config/runtime_config.py.schema | 89 - .../tests/integration/runtime_config.bats | 137 - .../tests/integration/runtime_config.yaml | 24 - dm/templates/runtime_config/variable.py | 52 - .../runtime_config/variable.py.schema | 95 - dm/templates/runtime_config/waiter.py | 54 - dm/templates/runtime_config/waiter.py.schema | 138 - dm/templates/shared_vpc_subnet_iam/README.md | 72 - .../shared_vpc_subnet_iam_bindings.yaml | 29 - .../shared_vpc_subnet_iam_legacy.yaml | 29 - .../shared_vpc_subnet_iam_policy.yaml | 30 - .../shared_vpc_subnet_iam.py | 67 - .../shared_vpc_subnet_iam.py.schema | 209 -- .../tests/integration/bindings.bats | 1 - .../tests/integration/bindings.yaml | 25 - .../tests/integration/legacy.bats | 1 - .../tests/integration/legacy.yaml | 25 - .../tests/integration/policy.bats | 1 - .../tests/integration/policy.yaml | 26 - .../integration/shared_vpc_subnet_iam.bats | 100 - .../integration/shared_vpc_subnet_iam.yaml | 25 - dm/templates/ssl_certificate/README.md | 72 - .../examples/ssl_certificate.yaml | 16 - .../examples/ssl_certificate_managed.yaml | 18 - .../ssl_certificate/ssl_certificate.py | 70 - .../ssl_certificate/ssl_certificate.py.schema | 140 - .../tests/integration/ssl_certificate.bats | 91 - .../tests/integration/ssl_certificate.yaml | 127 - .../stackdriver_metric_descriptor/README.md | 81 - .../stackdriver_metric_descriptor.yaml | 23 - .../stackdriver_metric_descriptor.py | 74 - .../stackdriver_metric_descriptor.py.schema | 242 -- .../stackdriver_metric_descriptor.bats | 98 - .../stackdriver_metric_descriptor.yaml | 32 - .../README.md | 78 - .../stackdriver_notification_channels.yaml | 47 - .../stackdriver_notification_channels.py | 109 - ...tackdriver_notification_channels.py.schema | 156 - .../stackdriver_notification_channels.bats | 116 - .../stackdriver_notification_channels.yaml | 45 - dm/templates/target_proxy/README.md | 82 - .../examples/target_proxy_http.yaml | 15 - .../examples/target_proxy_https.yaml | 19 - .../examples/target_proxy_ssl.yaml | 21 - .../examples/target_proxy_tcp.yaml | 15 - dm/templates/target_proxy/target_proxy.py | 184 -- .../target_proxy/target_proxy.py.schema | 191 -- .../tests/integration/target_proxy.bats | 124 - .../tests/integration/target_proxy.yaml | 162 - .../unmanaged_instance_group/README.md | 68 - ...unmanaged_instance_group_add_instance.yaml | 15 - ...anaged_instance_group_remove_instance.yaml | 16 - .../integration/unmanaged_instance_group.bats | 102 - .../integration/unmanaged_instance_group.yaml | 21 - .../unmanaged_instance_group.py | 109 - .../unmanaged_instance_group.py.schema | 93 - dm/templates/url_map/README.md | 70 - dm/templates/url_map/examples/url_map.yaml | 32 - .../url_map/tests/integration/url_map.bats | 114 - .../url_map/tests/integration/url_map.yaml | 78 - dm/templates/url_map/url_map.py | 66 - dm/templates/url_map/url_map.py.schema | 247 -- dm/templates/vpn/README.md | 69 - dm/templates/vpn/examples/vpn.yaml | 30 - dm/templates/vpn/tests/integration/vpn.bats | 151 - dm/templates/vpn/tests/integration/vpn.yaml | 21 - dm/templates/vpn/vpn.py | 234 -- dm/templates/vpn/vpn.py.schema | 161 - dm/tests/cloud-foundation-tests.conf.example | 5 - dm/tests/fixtures/configs/my-firewalls.yaml | 48 - dm/tests/fixtures/configs/my-instance-1.yaml | 23 - dm/tests/fixtures/configs/my-instance-2.yaml | 30 - dm/tests/fixtures/configs/my-networks.yaml | 27 - dm/tests/helpers.bash | 26 - dm/tests/run-tests | 11 - dm/tests/templates/__init__.py | 0 dm/tests/templates/conftest.py | 39 - dm/tests/templates/test_schemas.py | 15 - dm/tests/unit/__init__.py | 0 dm/tests/unit/conftest.py | 84 - dm/tests/unit/test_actions.py | 137 - dm/tests/unit/test_deployment.py | 90 - dm/tests/unit/test_dm_utils.py | 26 - dm/tox.ini | 18 - 851 files changed, 93 insertions(+), 78928 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug.yaml create mode 100644 .github/ISSUE_TEMPLATE/feature.yaml delete mode 100644 .github/ISSUE_TEMPLATE/issue-template.md delete mode 100644 .github/issue_template.md delete mode 100644 config-connector/solutions/README.md delete mode 100644 config-connector/solutions/apps/helm/wordpress/README.md delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/.helmignore delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/Chart.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-api.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-db.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-instance.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-policy-member.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-service-account.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-user.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-wi-policy.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-external-load-balancer.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-service-account.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-sql-db-credentials.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-stateful-set.yaml delete mode 100644 config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/values.yaml delete mode 100644 config-connector/solutions/iam/helm/folder-iam/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/folder-iam/README.md delete mode 100644 config-connector/solutions/iam/helm/folder-iam/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/folder-iam/values.yaml delete mode 100644 config-connector/solutions/iam/helm/kms-key-ring/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/kms-key-ring/README.md delete mode 100644 config-connector/solutions/iam/helm/kms-key-ring/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/kms-key-ring/templates/kmskeyring.yaml delete mode 100644 config-connector/solutions/iam/helm/kms-key-ring/values.yaml delete mode 100644 config-connector/solutions/iam/helm/member-iam/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/member-iam/README.md delete mode 100644 config-connector/solutions/iam/helm/member-iam/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/member-iam/templates/iamserviceaccount.yaml delete mode 100644 config-connector/solutions/iam/helm/member-iam/values.yaml delete mode 100644 config-connector/solutions/iam/helm/project-iam/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/project-iam/README.md delete mode 100644 config-connector/solutions/iam/helm/project-iam/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/project-iam/values.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-subscription/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-subscription/README.md delete mode 100644 config-connector/solutions/iam/helm/pubsub-subscription/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-subscription/templates/pubsubsubscription.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-subscription/templates/pubsubtopic.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-subscription/values.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-topic/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-topic/README.md delete mode 100644 config-connector/solutions/iam/helm/pubsub-topic/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-topic/templates/pubsubtopic.yaml delete mode 100644 config-connector/solutions/iam/helm/pubsub-topic/values.yaml delete mode 100644 config-connector/solutions/iam/helm/service-account/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/service-account/README.md delete mode 100644 config-connector/solutions/iam/helm/service-account/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/service-account/templates/iamserviceaccount.yaml delete mode 100644 config-connector/solutions/iam/helm/service-account/values.yaml delete mode 100644 config-connector/solutions/iam/helm/storage-bucket-iam/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/storage-bucket-iam/README.md delete mode 100644 config-connector/solutions/iam/helm/storage-bucket-iam/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/storage-bucket-iam/values.yaml delete mode 100644 config-connector/solutions/iam/helm/subnet/Chart.yaml delete mode 100644 config-connector/solutions/iam/helm/subnet/README.md delete mode 100644 config-connector/solutions/iam/helm/subnet/templates/computernetwork.yaml delete mode 100644 config-connector/solutions/iam/helm/subnet/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/helm/subnet/templates/subnet.yaml delete mode 100644 config-connector/solutions/iam/helm/subnet/values.yaml delete mode 100644 config-connector/solutions/iam/kpt/folder-iam/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/folder-iam/README.md delete mode 100644 config-connector/solutions/iam/kpt/folder-iam/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/kms-crypto-key/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/kms-crypto-key/README.md delete mode 100644 config-connector/solutions/iam/kpt/kms-crypto-key/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/kms-crypto-key/kmscryptokey.yaml delete mode 100644 config-connector/solutions/iam/kpt/kms-crypto-key/kmskeyring.yaml delete mode 100644 config-connector/solutions/iam/kpt/kms-key-ring/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/kms-key-ring/README.md delete mode 100644 config-connector/solutions/iam/kpt/kms-key-ring/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/kms-key-ring/kmskeyring.yaml delete mode 100644 config-connector/solutions/iam/kpt/member-iam/0-namespace.yaml delete mode 100644 config-connector/solutions/iam/kpt/member-iam/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/member-iam/README.md delete mode 100644 config-connector/solutions/iam/kpt/member-iam/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/member-iam/iamserviceaccount.yaml delete mode 100644 config-connector/solutions/iam/kpt/project-iam/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/project-iam/README.md delete mode 100644 config-connector/solutions/iam/kpt/project-iam/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/pubsub-subscription/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/pubsub-subscription/README.md delete mode 100644 config-connector/solutions/iam/kpt/pubsub-subscription/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/pubsub-subscription/pubsubsubscription.yaml delete mode 100644 config-connector/solutions/iam/kpt/pubsub-subscription/pubsubtopic.yaml delete mode 100644 config-connector/solutions/iam/kpt/pubsub-topic/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/pubsub-topic/README.md delete mode 100644 config-connector/solutions/iam/kpt/pubsub-topic/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/pubsub-topic/pubsubtopic.yaml delete mode 100644 config-connector/solutions/iam/kpt/service-account/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/service-account/README.md delete mode 100644 config-connector/solutions/iam/kpt/service-account/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/service-account/iamserviceaccount.yaml delete mode 100644 config-connector/solutions/iam/kpt/storage-bucket-iam/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/storage-bucket-iam/README.md delete mode 100644 config-connector/solutions/iam/kpt/storage-bucket-iam/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/subnet/Kptfile delete mode 100644 config-connector/solutions/iam/kpt/subnet/README.md delete mode 100644 config-connector/solutions/iam/kpt/subnet/computenetwork.yaml delete mode 100644 config-connector/solutions/iam/kpt/subnet/iampolicymember.yaml delete mode 100644 config-connector/solutions/iam/kpt/subnet/subnet.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/README.md delete mode 100644 config-connector/solutions/networking/helm/autoneg/clusters/Chart.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/clusters/templates/gcp-cluster-1.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/clusters/templates/gcp-cluster-2.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/clusters/templates/k8s-cluster-1-secret-pwd.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/clusters/templates/k8s-cluster-2-secret-pwd.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/clusters/values.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/Chart.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-backend-service.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-firewall.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-forwarding-rule.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-health-check.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-custom-role-autoneg.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-default-network.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-policy-autoneg-custom.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-policy-autoneg-wi.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-service-account-autoneg.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-target-http-proxy.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-url-map.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/lb/values.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/workload/Chart.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/workload/templates/autoneg.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/workload/templates/deployment.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/workload/templates/service.yaml delete mode 100644 config-connector/solutions/networking/helm/autoneg/workload/values.yaml delete mode 100644 config-connector/solutions/projects/helm/owned-project/Chart.yaml delete mode 100644 config-connector/solutions/projects/helm/owned-project/README.md delete mode 100644 config-connector/solutions/projects/helm/owned-project/templates/iampolicymember.yaml delete mode 100644 config-connector/solutions/projects/helm/owned-project/templates/project.yaml delete mode 100644 config-connector/solutions/projects/helm/owned-project/values.yaml delete mode 100644 config-connector/solutions/projects/helm/project-hierarchy/README.md delete mode 100644 config-connector/solutions/projects/helm/project-hierarchy/folder/Chart.yaml delete mode 100644 config-connector/solutions/projects/helm/project-hierarchy/folder/templates/folder.yaml delete mode 100644 config-connector/solutions/projects/helm/project-hierarchy/folder/values.yaml delete mode 100644 config-connector/solutions/projects/helm/project-hierarchy/project/Chart.yaml delete mode 100644 config-connector/solutions/projects/helm/project-hierarchy/project/templates/project.yaml delete mode 100644 config-connector/solutions/projects/helm/project-hierarchy/project/values.yaml delete mode 100644 config-connector/solutions/projects/helm/project-services/Chart.yaml delete mode 100644 config-connector/solutions/projects/helm/project-services/README.md delete mode 100644 config-connector/solutions/projects/helm/project-services/templates/service.yaml delete mode 100644 config-connector/solutions/projects/helm/project-services/values.yaml delete mode 100644 config-connector/solutions/projects/helm/simple-project/Chart.yaml delete mode 100644 config-connector/solutions/projects/helm/simple-project/README.md delete mode 100644 config-connector/solutions/projects/helm/simple-project/templates/project.yaml delete mode 100644 config-connector/solutions/projects/helm/simple-project/values.yaml delete mode 100644 config-connector/solutions/projects/kpt/owned-project/Kptfile delete mode 100644 config-connector/solutions/projects/kpt/owned-project/README.md delete mode 100644 config-connector/solutions/projects/kpt/owned-project/iampolicymember.yaml delete mode 100644 config-connector/solutions/projects/kpt/owned-project/project.yaml delete mode 100644 config-connector/solutions/projects/kpt/project-hierarchy/Kptfile delete mode 100644 config-connector/solutions/projects/kpt/project-hierarchy/README.md delete mode 100644 config-connector/solutions/projects/kpt/project-hierarchy/folder.yaml delete mode 100644 config-connector/solutions/projects/kpt/project-hierarchy/project.yaml delete mode 100644 config-connector/solutions/projects/kpt/project-services/0-namespace.yaml delete mode 100644 config-connector/solutions/projects/kpt/project-services/Kptfile delete mode 100644 config-connector/solutions/projects/kpt/project-services/README.md delete mode 100644 config-connector/solutions/projects/kpt/project-services/service.yaml delete mode 100644 config-connector/solutions/projects/kpt/shared-vpc/0-namespace.yaml delete mode 100644 config-connector/solutions/projects/kpt/shared-vpc/Kptfile delete mode 100644 config-connector/solutions/projects/kpt/shared-vpc/README.md delete mode 100644 config-connector/solutions/projects/kpt/shared-vpc/computesharedvpchostproject.yaml delete mode 100644 config-connector/solutions/projects/kpt/shared-vpc/computesharedvpcserviceproject.yaml delete mode 100644 config-connector/solutions/projects/kpt/shared-vpc/network.yaml delete mode 100644 config-connector/solutions/projects/kpt/shared-vpc/project.yaml delete mode 100644 config-connector/solutions/projects/kpt/shared-vpc/service.yaml delete mode 100644 config-connector/solutions/projects/kpt/simple-project/Kptfile delete mode 100644 config-connector/solutions/projects/kpt/simple-project/README.md delete mode 100644 config-connector/solutions/projects/kpt/simple-project/project.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/README.md delete mode 100644 config-connector/solutions/sql/helm/mysql-private/network/Chart.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/network/templates/computeaddress.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/network/templates/computenetwork.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/network/templates/servicenetworkingconnection.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/sql/Chart.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/sql/templates/secret.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/sql/templates/sqldatabase.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/sql/templates/sqlinstance.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/sql/templates/sqluser.yaml delete mode 100644 config-connector/solutions/sql/helm/mysql-private/sql/values.yaml delete mode 100644 config-connector/solutions/sql/helm/postgres-ha/Chart.yaml delete mode 100644 config-connector/solutions/sql/helm/postgres-ha/README.md delete mode 100644 config-connector/solutions/sql/helm/postgres-ha/templates/secret.yaml delete mode 100644 config-connector/solutions/sql/helm/postgres-ha/templates/sqldatabase.yaml delete mode 100644 config-connector/solutions/sql/helm/postgres-ha/templates/sqlinstance.yaml delete mode 100644 config-connector/solutions/sql/helm/postgres-ha/templates/sqluser.yaml delete mode 100644 config-connector/solutions/sql/helm/postgres-ha/values.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-ha/Kptfile delete mode 100644 config-connector/solutions/sql/kpt/mysql-ha/README.md delete mode 100644 config-connector/solutions/sql/kpt/mysql-ha/secret.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-ha/sqldatabase.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-ha/sqlinstance.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-ha/sqluser.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/Kptfile delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/README.md delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/network/computeaddress.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/network/computenetwork.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/network/servicenetworkingconnection.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/sql/secret.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/sql/sqldatabase.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/sql/sqlinstance.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-private/sql/sqluser.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-public/Kptfile delete mode 100644 config-connector/solutions/sql/kpt/mysql-public/README.md delete mode 100644 config-connector/solutions/sql/kpt/mysql-public/secret.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-public/sqldatabase.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-public/sqlinstance.yaml delete mode 100644 config-connector/solutions/sql/kpt/mysql-public/sqluser.yaml delete mode 100644 config-connector/solutions/sql/kpt/postgres-ha/Kptfile delete mode 100644 config-connector/solutions/sql/kpt/postgres-ha/README.md delete mode 100644 config-connector/solutions/sql/kpt/postgres-ha/secret.yaml delete mode 100644 config-connector/solutions/sql/kpt/postgres-ha/sqldatabase.yaml delete mode 100644 config-connector/solutions/sql/kpt/postgres-ha/sqlinstance.yaml delete mode 100644 config-connector/solutions/sql/kpt/postgres-ha/sqluser.yaml delete mode 100644 config-connector/solutions/sql/kpt/postgres-public/Kptfile delete mode 100644 config-connector/solutions/sql/kpt/postgres-public/README.md delete mode 100644 config-connector/solutions/sql/kpt/postgres-public/secret.yaml delete mode 100644 config-connector/solutions/sql/kpt/postgres-public/sqldatabase.yaml delete mode 100644 config-connector/solutions/sql/kpt/postgres-public/sqlinstance.yaml delete mode 100644 config-connector/solutions/sql/kpt/postgres-public/sqluser.yaml delete mode 100644 config-connector/tests/README.md delete mode 100644 config-connector/tests/ccs-test/cmd/root.go delete mode 100644 config-connector/tests/ccs-test/go.mod delete mode 100644 config-connector/tests/ccs-test/go.sum delete mode 100644 config-connector/tests/ccs-test/main.go delete mode 100644 config-connector/tests/ccs-test/util/util.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/.gitignore delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/.travis.yml delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/LICENSE delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/README.md delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/fields.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/yaml.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/golang/glog/LICENSE delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/golang/glog/README delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/golang/glog/glog.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/golang/glog/glog_file.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/LICENSE delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/README.md delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_others.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_windows.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.gitignore delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.mailmap delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.travis.yml delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/LICENSE.txt delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/Makefile delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/README.md delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/args.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/bash_completions.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/bash_completions.md delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/cobra.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command_notwin.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command_win.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/custom_completions.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/fish_completions.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/fish_completions.md delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/go.mod delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/go.sum delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/powershell_completions.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/powershell_completions.md delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/shell_completions.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/zsh_completions.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/zsh_completions.md delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/.gitignore delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/.travis.yml delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/LICENSE delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/README.md delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bool.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bool_slice.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bytes.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/count.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/duration.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/duration_slice.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/flag.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/float32.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/float64.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/golangflag.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int16.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int32.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int64.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int8.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int_slice.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ip.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ip_slice.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ipmask.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ipnet.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_array.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_slice.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_to_int.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_to_string.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint16.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint32.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint64.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint8.go delete mode 100644 config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint_slice.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/.travis.yml delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/LICENSE delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/LICENSE.libyaml delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/NOTICE delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/README.md delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/apic.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/decode.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/emitterc.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/encode.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/go.mod delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/parserc.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/readerc.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/resolve.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/scannerc.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/sorter.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/writerc.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yaml.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yamlh.go delete mode 100644 config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yamlprivateh.go delete mode 100644 config-connector/tests/ccs-test/vendor/modules.txt delete mode 100644 config-connector/tests/testcases/environments.template delete mode 100644 config-connector/tests/testcases/iam/kpt/folder-iam/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/folder-iam/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/kms-crypto-key/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/kms-crypto-key/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/kms-key-ring/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/kms-key-ring/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/member-iam/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/member-iam/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/project-iam/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/project-iam/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/pubsub-subscription/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/pubsub-subscription/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/pubsub-topic/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/pubsub-topic/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/service-account/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/service-account/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/storage-bucket-iam/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/storage-bucket-iam/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/subnet/original_values.yaml delete mode 100644 config-connector/tests/testcases/iam/kpt/subnet/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/projects/kpt/owned-project/original_values.yaml delete mode 100644 config-connector/tests/testcases/projects/kpt/owned-project/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/projects/kpt/project-services/original_values.yaml delete mode 100644 config-connector/tests/testcases/projects/kpt/project-services/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/projects/kpt/shared-vpc/original_values.yaml delete mode 100644 config-connector/tests/testcases/projects/kpt/shared-vpc/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/projects/kpt/simple-project/original_values.yaml delete mode 100644 config-connector/tests/testcases/projects/kpt/simple-project/required_fields_only.yaml delete mode 100644 config-connector/tests/testcases/sql/kpt/mysql-ha/original_values.yaml delete mode 100644 config-connector/tests/testcases/sql/kpt/mysql-ha/required_fields_with_sql_instance_name.yaml delete mode 100644 config-connector/tests/testcases/sql/kpt/mysql-public/original_values.yaml delete mode 100644 config-connector/tests/testcases/sql/kpt/mysql-public/required_fields_with_sql_instance_name.yaml delete mode 100644 config-connector/tests/testcases/sql/kpt/postgres-ha/original_values.yaml delete mode 100644 config-connector/tests/testcases/sql/kpt/postgres-ha/required_fields_with_sql_instance_name.yaml delete mode 100644 config-connector/tests/testcases/sql/kpt/postgres-public/original_values.yaml delete mode 100644 config-connector/tests/testcases/sql/kpt/postgres-public/required_fields_with_sql_instance_name.yaml delete mode 100644 config-connector/tests/testcases/test_values.template delete mode 100644 dm/.gitignore delete mode 100644 dm/CHANGELOG.md delete mode 100644 dm/CI/cft_base_container/Dockerfile delete mode 100644 dm/CI/cft_base_container/cloudbuild.yaml delete mode 100644 dm/CI/cft_base_contianer/Dockerfile delete mode 100644 dm/CI/cft_base_contianer/cloudbuild.yaml delete mode 100644 dm/CI/cft_schema_runner/Dockerfile delete mode 100644 dm/CI/cft_schema_runner/cloudbuild-test.yaml delete mode 100644 dm/CI/cft_schema_runner/cloudbuild.yaml delete mode 100644 dm/CI/cft_schema_runner/docker-entrypoint.sh delete mode 100644 dm/CI/cft_test_runner/Dockerfile delete mode 100644 dm/CI/cft_test_runner/cloud-foundation-tests.conf delete mode 100644 dm/CI/cft_test_runner/cloudbuild-test.yaml delete mode 100644 dm/CI/cft_test_runner/cloudbuild.yaml delete mode 100644 dm/CI/cft_test_runner/docker-entrypoint.sh delete mode 100644 dm/CI/triggers/cft-triggers.py delete mode 100644 dm/CI/triggers/cft-triggers.py.schema delete mode 100644 dm/CI/triggers/cloudbuild_trigger_cft.yaml delete mode 100644 dm/MANIFEST.in delete mode 100644 dm/Makefile delete mode 100644 dm/README.md delete mode 100644 dm/VERSION delete mode 100644 dm/docs/template_dev_guide.md delete mode 100644 dm/docs/tool_dev_guide.md delete mode 100644 dm/docs/userguide.md delete mode 100644 dm/example-solutions/wrapper-template/README.md delete mode 100644 dm/example-solutions/wrapper-template/folders-wrapper.py delete mode 100644 dm/example-solutions/wrapper-template/folders-wrapper.py.schema delete mode 100644 dm/example-solutions/wrapper-template/generic-wrapper.py delete mode 100644 dm/example-solutions/wrapper-template/generic-wrapper.yaml delete mode 100644 dm/helpers/google_netblock_ip_ranges/README.md delete mode 100644 dm/helpers/google_netblock_ip_ranges/examples/google_netblock_ip_ranges_example.yaml delete mode 100644 dm/helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.py delete mode 100644 dm/helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.yaml delete mode 100644 dm/pipeline/README.md delete mode 100644 dm/pipeline/app/Jenkinsfile delete mode 100644 dm/pipeline/app/app-team-dev.yaml delete mode 100644 dm/pipeline/app/app-team-prod.yaml delete mode 100644 dm/pipeline/network/Jenkinsfile delete mode 100644 dm/pipeline/network/firewall-app-team-1.yaml delete mode 100644 dm/pipeline/network/firewall-app-team-2.yaml delete mode 100644 dm/pipeline/network/network-app-team-1.yaml delete mode 100644 dm/pipeline/network/network-app-team-2.yaml delete mode 100644 dm/pipeline/network/proxy-app-team-2.yaml delete mode 100644 dm/pipeline/pipeline-vars delete mode 100644 dm/pipeline/project/Jenkinsfile delete mode 100644 dm/pipeline/project/project.yaml delete mode 100644 dm/pipeline/teardown/Jenkinsfile delete mode 100644 dm/pylintrc delete mode 100644 dm/pytest.ini delete mode 100644 dm/requirements/development.txt delete mode 100644 dm/requirements/install.txt delete mode 100644 dm/requirements/prerequisites.txt delete mode 100644 dm/setup.cfg delete mode 100644 dm/setup.py delete mode 100644 dm/solutions/take5-demo/README.md delete mode 100755 dm/src/cft delete mode 100755 dm/src/cftenv delete mode 100644 dm/src/cloud_foundation_toolkit/__init__.py delete mode 100644 dm/src/cloud_foundation_toolkit/actions.py delete mode 100755 dm/src/cloud_foundation_toolkit/cli.py delete mode 100644 dm/src/cloud_foundation_toolkit/deployment.py delete mode 100644 dm/src/cloud_foundation_toolkit/dm_utils.py delete mode 100644 dm/src/cloud_foundation_toolkit/yaml_utils.py delete mode 100644 dm/templates/README.md delete mode 100644 dm/templates/autoscaler/README.md delete mode 100644 dm/templates/autoscaler/autoscaler.py delete mode 100644 dm/templates/autoscaler/autoscaler.py.schema delete mode 100644 dm/templates/autoscaler/examples/autoscaler_regional.yaml delete mode 100644 dm/templates/autoscaler/examples/autoscaler_zonal.yaml delete mode 100755 dm/templates/autoscaler/tests/integration/autoscaler.bats delete mode 100644 dm/templates/autoscaler/tests/integration/autoscaler.yaml delete mode 100644 dm/templates/backend_service/README.md delete mode 100644 dm/templates/backend_service/backend_service.py delete mode 100644 dm/templates/backend_service/backend_service.py.schema delete mode 100644 dm/templates/backend_service/examples/backend_service_global.yaml delete mode 100644 dm/templates/backend_service/examples/backend_service_regional.yaml delete mode 100755 dm/templates/backend_service/tests/integration/backend_service.bats delete mode 100644 dm/templates/backend_service/tests/integration/backend_service.yaml delete mode 100644 dm/templates/bastion/README.md delete mode 100644 dm/templates/bastion/bastion.py delete mode 100644 dm/templates/bastion/bastion.py.schema delete mode 100644 dm/templates/bastion/examples/bastion.yaml delete mode 100755 dm/templates/bastion/tests/integration/bastion.bats delete mode 100644 dm/templates/bastion/tests/integration/bastion.yaml delete mode 100644 dm/templates/bigquery/README.md delete mode 100644 dm/templates/bigquery/bigquery_dataset.py delete mode 100644 dm/templates/bigquery/bigquery_dataset.py.schema delete mode 100644 dm/templates/bigquery/bigquery_table.py delete mode 100644 dm/templates/bigquery/bigquery_table.py.schema delete mode 100644 dm/templates/bigquery/examples/bigquery.yaml delete mode 100644 dm/templates/bigquery/tests/integration/bigquery.bats delete mode 100644 dm/templates/bigquery/tests/integration/bigquery.yaml delete mode 100644 dm/templates/cloud_filestore/README.md delete mode 100644 dm/templates/cloud_filestore/cloud_filestore.py delete mode 100644 dm/templates/cloud_filestore/cloud_filestore.py.schema delete mode 100644 dm/templates/cloud_filestore/examples/cloud_filestore.yaml delete mode 100755 dm/templates/cloud_filestore/tests/integration/cloud_filestore.bats delete mode 100644 dm/templates/cloud_filestore/tests/integration/cloud_filestore.yaml delete mode 100644 dm/templates/cloud_function/README.md delete mode 100644 dm/templates/cloud_function/cloud_function.py delete mode 100644 dm/templates/cloud_function/cloud_function.py.schema delete mode 100644 dm/templates/cloud_function/examples/cloud_function.yaml delete mode 100644 dm/templates/cloud_function/function/helloGET.js delete mode 100644 dm/templates/cloud_function/function/package.json delete mode 100755 dm/templates/cloud_function/tests/integration/cloud_function.bats delete mode 100644 dm/templates/cloud_function/tests/integration/cloud_function.yaml delete mode 100644 dm/templates/cloud_router/README.md delete mode 100644 dm/templates/cloud_router/cloud_router.py delete mode 100644 dm/templates/cloud_router/cloud_router.py.schema delete mode 100644 dm/templates/cloud_router/examples/cloud_nat_router.yaml delete mode 100644 dm/templates/cloud_router/examples/cloud_router.yaml delete mode 100644 dm/templates/cloud_router/tests/integration/cloud_router.bats delete mode 100644 dm/templates/cloud_router/tests/integration/cloud_router.yaml delete mode 100644 dm/templates/cloud_router/tests/schemas/invalid_additional_options.yaml delete mode 100644 dm/templates/cloud_router/tests/schemas/valid_basic.yaml delete mode 100644 dm/templates/cloud_spanner/README.md delete mode 100644 dm/templates/cloud_spanner/cloud_spanner.py delete mode 100644 dm/templates/cloud_spanner/cloud_spanner.py.schema delete mode 100644 dm/templates/cloud_spanner/examples/cloud_spanner.yaml delete mode 100755 dm/templates/cloud_spanner/tests/integration/cloud_spanner.bats delete mode 100644 dm/templates/cloud_spanner/tests/integration/cloud_spanner.yaml delete mode 100644 dm/templates/cloud_spanner/tests/schemas/invalid_additional_options.yaml delete mode 100644 dm/templates/cloud_spanner/tests/schemas/valid_basic.yaml delete mode 100644 dm/templates/cloud_spanner/tests/schemas/valid_complex.yaml delete mode 100644 dm/templates/cloud_sql/README.md delete mode 100644 dm/templates/cloud_sql/cloud_sql.py delete mode 100644 dm/templates/cloud_sql/cloud_sql.py.schema delete mode 100644 dm/templates/cloud_sql/examples/cloud_sql.yaml delete mode 100644 dm/templates/cloud_sql/examples/cloud_sql_mssql.yaml delete mode 100644 dm/templates/cloud_sql/examples/cloud_sql_postgres.yaml delete mode 100644 dm/templates/cloud_sql/examples/cloud_sql_private_network.yaml delete mode 100644 dm/templates/cloud_sql/examples/cloud_sql_read_replica.yaml delete mode 100755 dm/templates/cloud_sql/tests/integration/cloud_sql.bats delete mode 100644 dm/templates/cloud_sql/tests/integration/cloud_sql.yaml delete mode 100644 dm/templates/cloud_sql/tests/integration/cloud_sql_mssql.bats delete mode 100644 dm/templates/cloud_sql/tests/integration/cloud_sql_mssql.yaml delete mode 100755 dm/templates/cloud_sql/tests/integration/cloud_sql_postgres.bats delete mode 100644 dm/templates/cloud_sql/tests/integration/cloud_sql_postgres.yaml delete mode 100644 dm/templates/cloud_sql/tests/schemas/invalid_additional_options.yaml delete mode 100644 dm/templates/cloud_sql/tests/schemas/invalid_additional_options_nested.yaml delete mode 100644 dm/templates/cloud_sql/tests/schemas/invalid_missing_region.yaml delete mode 100644 dm/templates/cloud_sql/tests/schemas/invalid_missing_tier.yaml delete mode 100644 dm/templates/cloud_sql/tests/schemas/valid_basic.yaml delete mode 100644 dm/templates/cloud_sql/tests/schemas/valid_complex.yaml delete mode 100644 dm/templates/cloud_tasks/README.md delete mode 100644 dm/templates/cloud_tasks/examples/cloud_tasks_queue.yaml delete mode 100644 dm/templates/cloud_tasks/examples/cloud_tasks_task.yaml delete mode 100644 dm/templates/cloud_tasks/examples/create_typeprovider.sh delete mode 100644 dm/templates/cloud_tasks/examples/delete_typeprovider.sh delete mode 100644 dm/templates/cloud_tasks/queue.py delete mode 100644 dm/templates/cloud_tasks/queue.py.schema delete mode 100644 dm/templates/cloud_tasks/task.py delete mode 100644 dm/templates/cloud_tasks/task.py.schema delete mode 100644 dm/templates/cloud_tasks/tests/integration/cloud_tasks.bats delete mode 100644 dm/templates/cloud_tasks/tests/integration/cloud_tasks.yaml delete mode 100644 dm/templates/cloudbuild/README.md delete mode 100644 dm/templates/cloudbuild/cloudbuild.py delete mode 100644 dm/templates/cloudbuild/cloudbuild.py.schema delete mode 100644 dm/templates/cloudbuild/examples/cloudbuild.yaml delete mode 100644 dm/templates/cloudbuild/examples/cloudbuild_reposource.yaml delete mode 100644 dm/templates/cloudbuild/examples/cloudbuild_storagesource.yaml delete mode 100644 dm/templates/cloudbuild/tests/integration/cloudbuild.bats delete mode 100644 dm/templates/cloudbuild/tests/integration/cloudbuild.yaml delete mode 100644 dm/templates/dataproc/README.md delete mode 100644 dm/templates/dataproc/dataproc.py delete mode 100644 dm/templates/dataproc/dataproc.py.schema delete mode 100644 dm/templates/dataproc/examples/dataproc.yaml delete mode 100755 dm/templates/dataproc/tests/integration/dataproc.bats delete mode 100644 dm/templates/dataproc/tests/integration/dataproc.yaml delete mode 100644 dm/templates/dns_managed_zone/README.md delete mode 100644 dm/templates/dns_managed_zone/dns_managed_zone.py delete mode 100644 dm/templates/dns_managed_zone/dns_managed_zone.py.schema delete mode 100644 dm/templates/dns_managed_zone/examples/dns_managed_zone.yaml delete mode 100644 dm/templates/dns_managed_zone/examples/dns_managed_zone_legacy.yaml delete mode 100644 dm/templates/dns_managed_zone/examples/dns_managed_zone_private.yaml delete mode 100644 dm/templates/dns_managed_zone/examples/dns_managed_zone_private_visibility_config.yaml delete mode 100644 dm/templates/dns_managed_zone/examples/dns_managed_zone_public.yaml delete mode 100755 dm/templates/dns_managed_zone/tests/integration/dns_mz_bkwrd_cmptb.bats delete mode 100644 dm/templates/dns_managed_zone/tests/integration/dns_mz_bkwrd_cmptb.yaml delete mode 100755 dm/templates/dns_managed_zone/tests/integration/dns_mz_cross_project.bats delete mode 100644 dm/templates/dns_managed_zone/tests/integration/dns_mz_cross_project.yaml delete mode 100755 dm/templates/dns_managed_zone/tests/integration/dns_mz_private.bats delete mode 100644 dm/templates/dns_managed_zone/tests/integration/dns_mz_private.yaml delete mode 100755 dm/templates/dns_managed_zone/tests/integration/dns_mz_prvt_vsblt_cfg.bats delete mode 100644 dm/templates/dns_managed_zone/tests/integration/dns_mz_prvt_vsblt_cfg.yaml delete mode 100755 dm/templates/dns_managed_zone/tests/integration/dns_mz_public.bats delete mode 100644 dm/templates/dns_managed_zone/tests/integration/dns_mz_public.yaml delete mode 100755 dm/templates/dns_managed_zone/tests/integration/dns_mz_simple.bats delete mode 100644 dm/templates/dns_managed_zone/tests/integration/dns_mz_simple.yaml delete mode 100644 dm/templates/dns_records/README.md delete mode 100644 dm/templates/dns_records/dns_records.py delete mode 100644 dm/templates/dns_records/dns_records.py.schema delete mode 100644 dm/templates/dns_records/examples/dns_records.yaml delete mode 100755 dm/templates/dns_records/tests/integration/dns_records.bats delete mode 100644 dm/templates/dns_records/tests/integration/dns_records.yaml delete mode 100644 dm/templates/external_load_balancer/README.md delete mode 100644 dm/templates/external_load_balancer/examples/external_load_balancer_http.yaml delete mode 100644 dm/templates/external_load_balancer/examples/external_load_balancer_https.yaml delete mode 100644 dm/templates/external_load_balancer/examples/external_load_balancer_ssl.yaml delete mode 100644 dm/templates/external_load_balancer/examples/external_load_balancer_tcp.yaml delete mode 100644 dm/templates/external_load_balancer/external_load_balancer.py delete mode 100644 dm/templates/external_load_balancer/external_load_balancer.py.schema delete mode 100755 dm/templates/external_load_balancer/tests/integration/external_load_balancer.bats delete mode 100644 dm/templates/external_load_balancer/tests/integration/external_load_balancer.yaml delete mode 100644 dm/templates/firewall/README.md delete mode 100644 dm/templates/firewall/examples/firewall.yaml delete mode 100644 dm/templates/firewall/firewall.py delete mode 100644 dm/templates/firewall/firewall.py.schema delete mode 100644 dm/templates/firewall/tests/integration/firewall.bats delete mode 100644 dm/templates/firewall/tests/integration/firewall.yaml delete mode 100644 dm/templates/folder/README.md delete mode 100644 dm/templates/folder/examples/folder.yaml delete mode 100644 dm/templates/folder/folder.py delete mode 100644 dm/templates/folder/folder.py.schema delete mode 100644 dm/templates/folder/tests/integration/folder.bats delete mode 100644 dm/templates/folder/tests/integration/folder.yaml delete mode 100644 dm/templates/forwarding_rule/README.md delete mode 100644 dm/templates/forwarding_rule/examples/forwarding_rule_global.yaml delete mode 100644 dm/templates/forwarding_rule/examples/forwarding_rule_regional.yaml delete mode 100644 dm/templates/forwarding_rule/forwarding_rule.py delete mode 100644 dm/templates/forwarding_rule/forwarding_rule.py.schema delete mode 100755 dm/templates/forwarding_rule/tests/integration/forwarding_rule.bats delete mode 100644 dm/templates/forwarding_rule/tests/integration/forwarding_rule.yaml delete mode 100644 dm/templates/gcs_bucket/README.md delete mode 100644 dm/templates/gcs_bucket/examples/gcs_bucket.yaml delete mode 100644 dm/templates/gcs_bucket/examples/gcs_bucket_iam_bindings.yaml delete mode 100644 dm/templates/gcs_bucket/examples/gcs_bucket_lifecycle.yaml delete mode 100644 dm/templates/gcs_bucket/gcs_bucket.py delete mode 100644 dm/templates/gcs_bucket/gcs_bucket.py.schema delete mode 100644 dm/templates/gcs_bucket/tests/integration/gcs_35_iam_bindings.bats delete mode 100644 dm/templates/gcs_bucket/tests/integration/gcs_35_iam_bindings.yaml delete mode 100644 dm/templates/gcs_bucket/tests/integration/gcs_bucket.bats delete mode 100644 dm/templates/gcs_bucket/tests/integration/gcs_bucket.yaml delete mode 100644 dm/templates/gcs_bucket/tests/integration/gcs_iam_bucket_policy_only.bats delete mode 100644 dm/templates/gcs_bucket/tests/integration/gcs_iam_bucket_policy_only.yaml delete mode 100644 dm/templates/gke/README.md delete mode 100644 dm/templates/gke/examples/gke_regional.yaml delete mode 100644 dm/templates/gke/examples/gke_regional_private.yaml delete mode 100644 dm/templates/gke/examples/gke_zonal.yaml delete mode 100644 dm/templates/gke/gke.py delete mode 100644 dm/templates/gke/gke.py.schema delete mode 100644 dm/templates/gke/tests/integration/gke.bats delete mode 100644 dm/templates/gke/tests/integration/gke.yaml delete mode 100644 dm/templates/haproxy/README.md delete mode 100644 dm/templates/haproxy/examples/haproxy.yaml delete mode 100644 dm/templates/haproxy/haproxy.py delete mode 100644 dm/templates/haproxy/haproxy.py.schema delete mode 100755 dm/templates/haproxy/tests/integration/haproxy.bats delete mode 100644 dm/templates/haproxy/tests/integration/haproxy.yaml delete mode 100644 dm/templates/healthcheck/README.md delete mode 100644 dm/templates/healthcheck/examples/healthcheck.yaml delete mode 100644 dm/templates/healthcheck/healthcheck.py delete mode 100644 dm/templates/healthcheck/healthcheck.py.schema delete mode 100644 dm/templates/healthcheck/tests/.gitignore delete mode 100644 dm/templates/healthcheck/tests/integration/cloudbuild-schema.yaml delete mode 100644 dm/templates/healthcheck/tests/integration/healthcheck.bats delete mode 100644 dm/templates/healthcheck/tests/integration/healthcheck.yaml delete mode 100644 dm/templates/iam_custom_role/README.md delete mode 100644 dm/templates/iam_custom_role/examples/iam_custom_role.yaml delete mode 100644 dm/templates/iam_custom_role/organization_custom_role.py delete mode 100644 dm/templates/iam_custom_role/organization_custom_role.py.schema delete mode 100644 dm/templates/iam_custom_role/project_custom_role.py delete mode 100644 dm/templates/iam_custom_role/project_custom_role.py.schema delete mode 100644 dm/templates/iam_custom_role/tests/integration/iam_custom_role.bats delete mode 100644 dm/templates/iam_custom_role/tests/integration/iam_custom_role.yaml delete mode 100644 dm/templates/iam_member/README.md delete mode 100644 dm/templates/iam_member/examples/iam_member.yaml delete mode 100644 dm/templates/iam_member/examples/iam_member_resource.yaml delete mode 100644 dm/templates/iam_member/iam_member.py delete mode 100644 dm/templates/iam_member/iam_member.py.schema delete mode 100755 dm/templates/iam_member/tests/integration/iam_35_members.bats delete mode 100644 dm/templates/iam_member/tests/integration/iam_35_members.yaml delete mode 100755 dm/templates/iam_member/tests/integration/iam_member.bats delete mode 100644 dm/templates/iam_member/tests/integration/iam_member.yaml delete mode 100644 dm/templates/instance/README.md delete mode 100644 dm/templates/instance/examples/instance.yaml delete mode 100644 dm/templates/instance/examples/instance_private.yaml delete mode 100644 dm/templates/instance/examples/instance_source_template.yaml delete mode 100644 dm/templates/instance/instance.py delete mode 100644 dm/templates/instance/instance.py.schema delete mode 100755 dm/templates/instance/tests/integration/instance.bats delete mode 100644 dm/templates/instance/tests/integration/instance.yaml delete mode 100755 dm/templates/instance/tests/integration/instance_1_nic.bats delete mode 100644 dm/templates/instance/tests/integration/instance_1_nic.yaml delete mode 100755 dm/templates/instance/tests/integration/instance_2_nics.bats delete mode 100644 dm/templates/instance/tests/integration/instance_2_nics.yaml delete mode 100755 dm/templates/instance/tests/integration/instance_source_template.bats delete mode 100644 dm/templates/instance/tests/integration/instance_source_template.yaml delete mode 100755 dm/templates/instance/tests/integration/instance_template/instance_template.bats delete mode 100644 dm/templates/instance/tests/integration/instance_template/instance_template.yaml delete mode 100644 dm/templates/instance_template/README.md delete mode 100644 dm/templates/instance_template/examples/instance_template.yaml delete mode 100644 dm/templates/instance_template/instance_template.py delete mode 100644 dm/templates/instance_template/instance_template.py.schema delete mode 100755 dm/templates/instance_template/tests/integration/instance_template.bats delete mode 100644 dm/templates/instance_template/tests/integration/instance_template.yaml delete mode 100755 dm/templates/instance_template/tests/integration/instance_template_networks.bats delete mode 100644 dm/templates/instance_template/tests/integration/instance_template_networks.yaml delete mode 100644 dm/templates/interconnect/README.md delete mode 100644 dm/templates/interconnect/examples/interconnect_dedicated.yaml delete mode 100644 dm/templates/interconnect/interconnect.py delete mode 100644 dm/templates/interconnect/interconnect.py.schema delete mode 100644 dm/templates/interconnect_attachment/README.md delete mode 100644 dm/templates/interconnect_attachment/examples/interconnect_attachment_dedicated.yaml delete mode 100644 dm/templates/interconnect_attachment/examples/interconnect_attachment_partner.yaml delete mode 100644 dm/templates/interconnect_attachment/interconnect_attachment.py delete mode 100644 dm/templates/interconnect_attachment/interconnect_attachment.py.schema delete mode 100644 dm/templates/internal_load_balancer/README.md delete mode 100644 dm/templates/internal_load_balancer/examples/internal_load_balancer.yaml delete mode 100644 dm/templates/internal_load_balancer/internal_load_balancer.py delete mode 100644 dm/templates/internal_load_balancer/internal_load_balancer.py.schema delete mode 100755 dm/templates/internal_load_balancer/tests/integration/internal_load_balancer.bats delete mode 100644 dm/templates/internal_load_balancer/tests/integration/internal_load_balancer.yaml delete mode 100644 dm/templates/ip_reservation/README.md delete mode 100644 dm/templates/ip_reservation/examples/ip_reservation.yaml delete mode 100644 dm/templates/ip_reservation/ip_address.py delete mode 100644 dm/templates/ip_reservation/ip_address.py.schema delete mode 100644 dm/templates/ip_reservation/ip_reservation.py delete mode 100644 dm/templates/ip_reservation/ip_reservation.py.schema delete mode 100755 dm/templates/ip_reservation/tests/integration/ip_reservation.bats delete mode 100644 dm/templates/ip_reservation/tests/integration/ip_reservation.yaml delete mode 100644 dm/templates/kms/README.md delete mode 100644 dm/templates/kms/examples/kms.yaml delete mode 100644 dm/templates/kms/examples/kms_signkey.yaml delete mode 100644 dm/templates/kms/kms.py delete mode 100644 dm/templates/kms/kms.py.schema delete mode 100644 dm/templates/kms/tests/integration/kms.bats delete mode 100644 dm/templates/kms/tests/integration/kms.yaml delete mode 100644 dm/templates/logsink/README.md delete mode 100644 dm/templates/logsink/examples/billingaccount_logsink_bucket_destination.yaml delete mode 100644 dm/templates/logsink/examples/folder_logsink_bq_destination.yaml delete mode 100644 dm/templates/logsink/examples/logsink_new_bq_destination_in_external_project.yaml delete mode 100644 dm/templates/logsink/examples/logsink_new_bucket_destination_in_external_project.yaml delete mode 100644 dm/templates/logsink/examples/logsink_new_pubsub_destination_in_external_project.yaml delete mode 100644 dm/templates/logsink/examples/org_logsink_pubsub_destination.yaml delete mode 100644 dm/templates/logsink/examples/project_logsink_bucket_destination.yaml delete mode 100644 dm/templates/logsink/logsink.py delete mode 100644 dm/templates/logsink/logsink.py.schema delete mode 100644 dm/templates/logsink/tests/integration/logsink.bats delete mode 100644 dm/templates/logsink/tests/integration/logsink.yaml delete mode 100644 dm/templates/logsink/tests/integration/logsink_external_project.bats delete mode 100644 dm/templates/logsink/tests/integration/logsink_external_project.yaml delete mode 100644 dm/templates/managed_instance_group/README.md delete mode 100644 dm/templates/managed_instance_group/examples/managed_instance_group.yaml delete mode 100644 dm/templates/managed_instance_group/examples/managed_instance_group_healthcheck.yaml delete mode 100644 dm/templates/managed_instance_group/managed_instance_group.py delete mode 100644 dm/templates/managed_instance_group/managed_instance_group.py.schema delete mode 100755 dm/templates/managed_instance_group/tests/integration/managed_instance_group.bats delete mode 100644 dm/templates/managed_instance_group/tests/integration/managed_instance_group.yaml delete mode 100644 dm/templates/nat_gateway/README.md delete mode 100644 dm/templates/nat_gateway/examples/nat_gateway.yaml delete mode 100644 dm/templates/nat_gateway/nat_gateway.py delete mode 100644 dm/templates/nat_gateway/nat_gateway.py.schema delete mode 100755 dm/templates/nat_gateway/tests/integration/nat_gateway.bats delete mode 100644 dm/templates/nat_gateway/tests/integration/nat_gateway.yaml delete mode 100644 dm/templates/network/README.md delete mode 100644 dm/templates/network/examples/network.yaml delete mode 100644 dm/templates/network/network.py delete mode 100644 dm/templates/network/network.py.schema delete mode 100644 dm/templates/network/subnetwork.py delete mode 100644 dm/templates/network/subnetwork.py.schema delete mode 100644 dm/templates/network/tests/integration/network.bats delete mode 100644 dm/templates/network/tests/integration/network.yaml delete mode 100644 dm/templates/network/tests/schemas/invalid_subnets.yaml delete mode 100644 dm/templates/network/tests/schemas/valid_auto.yaml delete mode 100644 dm/templates/network/tests/schemas/valid_subnets.yaml delete mode 100644 dm/templates/project/README.md delete mode 100644 dm/templates/project/examples/project_standalone.yaml delete mode 100644 dm/templates/project/examples/project_vpc_consumer.yaml delete mode 100644 dm/templates/project/examples/project_vpc_host.yaml delete mode 100644 dm/templates/project/project.py delete mode 100644 dm/templates/project/project.py.schema delete mode 100644 dm/templates/project/tests/integration/project.bats delete mode 100644 dm/templates/project/tests/integration/project.yaml delete mode 100644 dm/templates/project/tests/schemas/invalid_project.yaml delete mode 100644 dm/templates/pubsub/README.md delete mode 100644 dm/templates/pubsub/examples/pubsub.yaml delete mode 100644 dm/templates/pubsub/examples/pubsub_push.yaml delete mode 100644 dm/templates/pubsub/pubsub.py delete mode 100644 dm/templates/pubsub/pubsub.py.schema delete mode 100755 dm/templates/pubsub/tests/integration/pubsub.bats delete mode 100644 dm/templates/pubsub/tests/integration/pubsub.yaml delete mode 100644 dm/templates/resource_policy/README.md delete mode 100644 dm/templates/resource_policy/examples/resource_policy.yaml delete mode 100644 dm/templates/resource_policy/resource_policy.py delete mode 100644 dm/templates/resource_policy/resource_policy.py.schema delete mode 100755 dm/templates/resource_policy/tests/integration/resource_policy.bats delete mode 100644 dm/templates/resource_policy/tests/integration/resource_policy.yaml delete mode 100644 dm/templates/route/README.md delete mode 100644 dm/templates/route/examples/route.yaml delete mode 100644 dm/templates/route/route.py delete mode 100644 dm/templates/route/route.py.schema delete mode 100644 dm/templates/route/single_route.py delete mode 100644 dm/templates/route/single_route.py.schema delete mode 100644 dm/templates/route/tests/integration/route.bats delete mode 100644 dm/templates/route/tests/integration/route.yaml delete mode 100644 dm/templates/runtime_config/README.md delete mode 100644 dm/templates/runtime_config/examples/runtime_config.yaml delete mode 100644 dm/templates/runtime_config/runtime_config.py delete mode 100644 dm/templates/runtime_config/runtime_config.py.schema delete mode 100644 dm/templates/runtime_config/tests/integration/runtime_config.bats delete mode 100644 dm/templates/runtime_config/tests/integration/runtime_config.yaml delete mode 100644 dm/templates/runtime_config/variable.py delete mode 100644 dm/templates/runtime_config/variable.py.schema delete mode 100644 dm/templates/runtime_config/waiter.py delete mode 100644 dm/templates/runtime_config/waiter.py.schema delete mode 100644 dm/templates/shared_vpc_subnet_iam/README.md delete mode 100644 dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_bindings.yaml delete mode 100644 dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_legacy.yaml delete mode 100644 dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_policy.yaml delete mode 100644 dm/templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py delete mode 100644 dm/templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py.schema delete mode 120000 dm/templates/shared_vpc_subnet_iam/tests/integration/bindings.bats delete mode 100644 dm/templates/shared_vpc_subnet_iam/tests/integration/bindings.yaml delete mode 120000 dm/templates/shared_vpc_subnet_iam/tests/integration/legacy.bats delete mode 100644 dm/templates/shared_vpc_subnet_iam/tests/integration/legacy.yaml delete mode 120000 dm/templates/shared_vpc_subnet_iam/tests/integration/policy.bats delete mode 100644 dm/templates/shared_vpc_subnet_iam/tests/integration/policy.yaml delete mode 100755 dm/templates/shared_vpc_subnet_iam/tests/integration/shared_vpc_subnet_iam.bats delete mode 100644 dm/templates/shared_vpc_subnet_iam/tests/integration/shared_vpc_subnet_iam.yaml delete mode 100644 dm/templates/ssl_certificate/README.md delete mode 100644 dm/templates/ssl_certificate/examples/ssl_certificate.yaml delete mode 100644 dm/templates/ssl_certificate/examples/ssl_certificate_managed.yaml delete mode 100644 dm/templates/ssl_certificate/ssl_certificate.py delete mode 100644 dm/templates/ssl_certificate/ssl_certificate.py.schema delete mode 100755 dm/templates/ssl_certificate/tests/integration/ssl_certificate.bats delete mode 100644 dm/templates/ssl_certificate/tests/integration/ssl_certificate.yaml delete mode 100644 dm/templates/stackdriver_metric_descriptor/README.md delete mode 100644 dm/templates/stackdriver_metric_descriptor/examples/stackdriver_metric_descriptor.yaml delete mode 100644 dm/templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py delete mode 100644 dm/templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py.schema delete mode 100644 dm/templates/stackdriver_metric_descriptor/tests/integration/stackdriver_metric_descriptor.bats delete mode 100644 dm/templates/stackdriver_metric_descriptor/tests/integration/stackdriver_metric_descriptor.yaml delete mode 100644 dm/templates/stackdriver_notification_channels/README.md delete mode 100644 dm/templates/stackdriver_notification_channels/examples/stackdriver_notification_channels.yaml delete mode 100644 dm/templates/stackdriver_notification_channels/stackdriver_notification_channels.py delete mode 100644 dm/templates/stackdriver_notification_channels/stackdriver_notification_channels.py.schema delete mode 100644 dm/templates/stackdriver_notification_channels/tests/integration/stackdriver_notification_channels.bats delete mode 100644 dm/templates/stackdriver_notification_channels/tests/integration/stackdriver_notification_channels.yaml delete mode 100644 dm/templates/target_proxy/README.md delete mode 100644 dm/templates/target_proxy/examples/target_proxy_http.yaml delete mode 100644 dm/templates/target_proxy/examples/target_proxy_https.yaml delete mode 100644 dm/templates/target_proxy/examples/target_proxy_ssl.yaml delete mode 100644 dm/templates/target_proxy/examples/target_proxy_tcp.yaml delete mode 100644 dm/templates/target_proxy/target_proxy.py delete mode 100644 dm/templates/target_proxy/target_proxy.py.schema delete mode 100755 dm/templates/target_proxy/tests/integration/target_proxy.bats delete mode 100644 dm/templates/target_proxy/tests/integration/target_proxy.yaml delete mode 100644 dm/templates/unmanaged_instance_group/README.md delete mode 100644 dm/templates/unmanaged_instance_group/examples/unmanaged_instance_group_add_instance.yaml delete mode 100644 dm/templates/unmanaged_instance_group/examples/unmanaged_instance_group_remove_instance.yaml delete mode 100755 dm/templates/unmanaged_instance_group/tests/integration/unmanaged_instance_group.bats delete mode 100644 dm/templates/unmanaged_instance_group/tests/integration/unmanaged_instance_group.yaml delete mode 100644 dm/templates/unmanaged_instance_group/unmanaged_instance_group.py delete mode 100644 dm/templates/unmanaged_instance_group/unmanaged_instance_group.py.schema delete mode 100644 dm/templates/url_map/README.md delete mode 100644 dm/templates/url_map/examples/url_map.yaml delete mode 100755 dm/templates/url_map/tests/integration/url_map.bats delete mode 100644 dm/templates/url_map/tests/integration/url_map.yaml delete mode 100644 dm/templates/url_map/url_map.py delete mode 100644 dm/templates/url_map/url_map.py.schema delete mode 100644 dm/templates/vpn/README.md delete mode 100644 dm/templates/vpn/examples/vpn.yaml delete mode 100644 dm/templates/vpn/tests/integration/vpn.bats delete mode 100644 dm/templates/vpn/tests/integration/vpn.yaml delete mode 100644 dm/templates/vpn/vpn.py delete mode 100644 dm/templates/vpn/vpn.py.schema delete mode 100644 dm/tests/cloud-foundation-tests.conf.example delete mode 100644 dm/tests/fixtures/configs/my-firewalls.yaml delete mode 100644 dm/tests/fixtures/configs/my-instance-1.yaml delete mode 100644 dm/tests/fixtures/configs/my-instance-2.yaml delete mode 100644 dm/tests/fixtures/configs/my-networks.yaml delete mode 100644 dm/tests/helpers.bash delete mode 100644 dm/tests/run-tests delete mode 100644 dm/tests/templates/__init__.py delete mode 100644 dm/tests/templates/conftest.py delete mode 100644 dm/tests/templates/test_schemas.py delete mode 100644 dm/tests/unit/__init__.py delete mode 100644 dm/tests/unit/conftest.py delete mode 100644 dm/tests/unit/test_actions.py delete mode 100644 dm/tests/unit/test_deployment.py delete mode 100644 dm/tests/unit/test_dm_utils.py delete mode 100644 dm/tox.ini diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml new file mode 100644 index 00000000000..bfad0912cab --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -0,0 +1,52 @@ +name: 'Bug report' +description: 'File a bug report' +labels: ['bug'] +body: +- type: 'markdown' + attributes: + value: |- + Thank you for filing an bug. Please complete the form below so we can triage, reproduce, and fix your issue. + +- id: 'tldr' + type: 'textarea' + attributes: + label: 'TL;DR' + description: 'Describe the bug in 1-2 sentences.' + validations: + required: true + +- id: 'expected_behavior' + type: 'textarea' + attributes: + label: 'Expected behavior' + description: 'What did you expect to happen?' + +- id: 'observed_behavior' + type: 'textarea' + attributes: + label: 'Observed behavior' + description: 'What happened instead?' + +- id: 'tf_config' + type: 'textarea' + attributes: + label: 'Terraform Configuration' + description: 'Paste your reproducible Terraform configuration, removing any sensitive values.' + render: 'hcl' + validations: + required: true + +- id: 'tf_version' + type: 'textarea' + attributes: + label: 'Terraform Version' + description: 'Paste the output of `terraform version`, removing any sensitive values.' + render: 'sh' + validations: + required: true + +- id: 'additional' + type: 'textarea' + attributes: + label: 'Additional information' + description: 'Is there anything else you think we should know?' diff --git a/.github/ISSUE_TEMPLATE/feature.yaml b/.github/ISSUE_TEMPLATE/feature.yaml new file mode 100644 index 00000000000..3f4561ab2ff --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.yaml @@ -0,0 +1,36 @@ +name: 'Feature request' +description: 'File a feature request' +labels: ['enhancement'] +body: +- type: 'markdown' + attributes: + value: |- + Thank you for requesting a feature. Please complete the form below so we can triage and prioritize your feature. + +- id: 'component' + type: 'textarea' + attributes: + label: 'Component' + description: 'Which component is this FR for? Examples: CLI, Devtools, Linter, Test framework etc' + render: 'markdown' + +- id: 'tldr' + type: 'textarea' + attributes: + label: 'TL;DR' + description: 'Describe the feature in 1-2 sentences.' + validations: + required: true + +- id: 'detailed_design' + type: 'textarea' + attributes: + label: 'Detailed design' + description: 'Do you have more information about a detailed design? Are there specific considerations to take? Include sample configuration if possible.' + render: 'markdown' + +- id: 'additional' + type: 'textarea' + attributes: + label: 'Additional information' + description: 'Is there anything else you think we should know?' diff --git a/.github/ISSUE_TEMPLATE/issue-template.md b/.github/ISSUE_TEMPLATE/issue-template.md deleted file mode 100644 index d4cb0425399..00000000000 --- a/.github/ISSUE_TEMPLATE/issue-template.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Issue template -about: Describe this issue template's purpose here. -title: '' -labels: '' -assignees: '' - ---- - -############################ NOTE ####################### - -Dear CFT User! - -If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://g.co/dev/terraformfoundation) -Terraform CFT supports the most recent GCP resources, reflects GCP best practices can be used off-the-shelf to quickly build a repeatable enterprise-ready foundation. -Additionally, if you are a looking to manage your GCP resources through Kubernetes, consider using [Config Connector CFT solutions](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/config-connector/solutions). - - -###################### REMOVE NOTE ABOVE ################# diff --git a/.github/issue_template.md b/.github/issue_template.md deleted file mode 100644 index 68ef89ad9b3..00000000000 --- a/.github/issue_template.md +++ /dev/null @@ -1,5 +0,0 @@ -Dear CFT User! - -If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://g.co/dev/terraformfoundation) -Terraform CFT supports the most recent GCP resources, reflects GCP best practices can be used off-the-shelf to quickly build a repeatable enterprise-ready foundation. -Additionally, if you are a looking to manage your GCP resources through Kubernetes, consider using [Config Connector CFT solutions](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/config-connector/solutions). diff --git a/.github/renovate.json b/.github/renovate.json index 45ad53ff574..c0e90c91a6b 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -13,7 +13,6 @@ "minimumReleaseAge": null }, "separateMajorMinor": false, - "ignorePaths": ["config-connector/**"], "additionalBranchPrefix": "{{parentDir}}-", "constraints": {"go": "1.21"}, "packageRules": [ diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 84e19e57f7d..3ec17989b2e 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -34,5 +34,5 @@ jobs: - uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' # v4 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: - EXCLUDE_LINT_DIRS: '\./dm|\./config-connector|\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' + EXCLUDE_LINT_DIRS: '\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' EXCLUDE_HEADER_CHECK: '.*' diff --git a/.gitignore b/.gitignore index 93bdab3e2ca..a75c1fbb7eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ *.iml .idea credentials.json -config-connector/tests/testcases/environments.yaml .DS_Store .vscode *.pyc diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6437d6a1fca..fb08eb9474d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,5 @@ exclude: | (?x)^( - config-connector/.*| - dm/.*| reports/.*| cli/testdata/.*| cli/bptest/.*| diff --git a/CODEOWNERS b/CODEOWNERS index 1807a648023..fc73162c532 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,8 +1,2 @@ # Main team administering overall repo * @bharathkkb @g-awmalik @apeabody - -# Deployment Manager Reviewers -/dm/ @ocsig @sjvanrossum - -# Config Connector team -/config-connector/ @ocsig @AlexBulankou @maqiuyujoyce diff --git a/README.md b/README.md index 9a1dfcd5294..1480791cecb 100644 --- a/README.md +++ b/README.md @@ -4,21 +4,10 @@ The Cloud Foundation toolkit (henceforth, CFT) includes the following parts: -- A comprehensive set of production-ready resource templates that follow - Google's best practices, which can be used with the CFT or the gcloud - utility (part of the Google Cloud SDK) - see - [the template directory](dm/templates/) -- A command-line interface (henceforth, CLI) that deploys resources defined in - single or multiple CFT-compliant config files - see: - - The CFT source Python files (the `src/` directory) - - The [CFT DM User Guide](dm/docs/userguide.md) -- A growing set of sample [Config - Connector](https://cloud.google.com/config-connector/docs/overview) - YAML configurations - see [the solutions directory](config-connector/solutions/) - -In addition, the CFT repository includes a sample pipeline that enables running -CFT deployment operations from Jenkins - see the -[pipeline directory](dm/pipeline/README.md). +- A comprehensive set of production-ready Terraform blueprints that follow + Google's best practices. See https://cloud.google.com/docs/terraform/blueprints/terraform-blueprints for a complete list. +- A command-line interface (henceforth, CLI) that provides developer tooling for creating and managing Terraform blueprints. +- For the latest Config Connector blueprints, refer to https://github.com/GoogleCloudPlatform/blueprints. Older DM and Config Connector templates can be found in [previous releases](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/v0.5.2). You can see a comparison between CFT and Fabric [here](https://github.com/GoogleCloudPlatform/cloud-foundation-fabric/blob/master/FABRIC-AND-CFT.md). diff --git a/config-connector/solutions/README.md b/config-connector/solutions/README.md deleted file mode 100644 index ce575c7f99c..00000000000 --- a/config-connector/solutions/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# Config Connector Solutions - -## Overview - -Config Connector Solutions provides best practice solutions -to common cloud applications, formatted as YAML definitions -for Config Connector CRDs. These YAMLs can be applied to -clusters running [Config -Connector](https://cloud.google.com/config-connector/docs/how-to/getting-started). - -## Structure - -Folders under this directory denote general solution areas. -In each solution area folder, there are folders for each package -& customization tool (currently helm and kpt), under which are nested all available solutions in -that solution area and package format. - -## Solutions - -The full list of solutions grouped by area: - -* **apps** - automate creation of a canonical sample application and provision required GCP services with Config Connector - * wordpress [ [helm](apps/helm/wordpress) ] - provision Wordpress application powered by GCP MySQL database -* **projects** - automate creation of GCP projects, folders and project services - using Config Connector - * owned-project [ [kpt](projects/kpt/owned-project) ] - grant the project - owner role - * project-hierarcy [ [kpt](projects/kpt/project-hierarchy) ] - get started - with a folder and a project - * project-services [ [kpt](projects/kpt/project-services) ] - enable GCP API - for a project - * shared-vpc [ [kpt](projects/kpt/shared-vpc) ] - create a shared VPC network - * simple-project [ [kpt](projects/kpt/simple-project) ] - get started with a - simple project -* **iam** - automate the management of IAM roles for resources using Config - Connector - * folder-iam [ [kpt](iam/kpt/folder-iam) ] - grant an IAM role to a GCP folder - * kms-crypto-key [ [kpt](iam/kpt/kms-crypto-key) ] - grant an IAM role to a - KMS crypto key - * kms-key-ring [ [kpt](iam/kpt/kms-key-ring) ] - grant an IAM role to a KMS - key ring - * member-iam [ [kpt](iam/kpt/member-iam) ] - grant a service account an IAM - role to a project - * project-iam [ [kpt](iam/kpt/project-iam) ] - grant an IAM role to a project - * pubsub-subscription [ [kpt](iam/kpt/pubsub-subscription) ] - grant an IAM - role to a Pub/Sub subscription - * pubsub-topic [ [kpt](iam/kpt/pubsub-topic) ] - grant an IAM role to a - Pub/Sub topic - * service-account [ [helm](iam/helm/service-account) ] \[ [kpt]( - iam/kpt/service-account) ] - grant an IAM role to a service account - * storage-bucket-iam [ [kpt](iam/kpt/storage-bucket-iam) ] - grant an IAM role - to a storage bucket - * subnet [ [kpt](iam/kpt/subnetp) ] - grant an IAM role to a subnetwork -* **sql** - automate the creation of Cloud SQL instances, databases, and users - using Config Connector - * mysql-ha [ [kpt](sql/kpt/mysql-ha) ] - create a high availability MySQL - cluster - * mysql-private [ [kpt](sql/kpt/mysql-private) ] - create a private MySQL - database - * mysql-public [ [kpt](sql/kpt/mysql-public) ] - create a public MySQL - database - * postgres-ha [ [kpt](sql/kpt/postgres-ha) ] - create a high availability - PostgreSQL cluster - * postgres-public [ [kpt](sql/kpt/postgres-public) ] - create a public - PostgreSQL database - - -## Usage - -### helm - -These solutions are consumable as [helm charts](https://helm.sh/docs/topics/charts/). -Common targets for modification are listed in `values.yaml`. - -[Install helm](https://helm.sh/docs/intro/install/). These solutions support Helm v.3+. - -Common operations, where `PATH` is the path to the relevant solution folder: -* Showing values: `helm show values PATH` -* Validating chart: `helm template PATH` -* Setting chart: `helm install PATH -generate-name` - -Comprehensive documentation at -[https://helm.sh/docs/](https://helm.sh/docs/). - -### kpt - -These samples are consumable as [kpt -packages](https://googlecontainertools.github.io/kpt/). -Common targets for modification are provided kpt setters, -and can be listed with `kpt cfg list-setters`. - -* Installing kpt: follow the instructions on [the kpt -GitHub](https://github.com/GoogleContainerTools/kpt). -* Listing setters: See which values are available for kpt to change `kpt cfg list-setters` -* Setting setters: `kpt cfg set DIR NAME VALUE --set-by NAME` - -Comprehensive documentation at -[https://googlecontainertools.github.io/kpt/](https://googlecontainertools.github.io/kpt/). - -## License - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/apps/helm/wordpress/README.md b/config-connector/solutions/apps/helm/wordpress/README.md deleted file mode 100644 index 3777aaeefc9..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# Wordpress - -================================================== - -## NAME - - wordpress - -## SYNOPSIS - -The WordPress application demonstrates how you can configure a WordPress site powered by GCP MySQL database and using Workload Identity for authentication. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the wordpress folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/apps/helm/wordpress - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) -1. Cloud Resource Manager API needs to be enabled on the project to use [ServiceUsage Resource](https://cloud.google.com/config-connector/docs/reference/resources#service). You can enable it by running: - - ```bash - gcloud services enable cloudresourcemanager.googleapis.com --project [PROJECT_ID] - ``` - -## USAGE - -All steps are run from this directory. - -1. Review and update the values in `./charts/wordpress-gcp/values.yaml`. - - **Note:** Please ensure the value of `database.instanceName` (defaults to `wp-db`) is unique and hasn't been used as an SQL instance name in the last 7 days. -1. Validate and install the sample with Helm. - - ```bash - # validate your chart - helm lint ./charts/wordpress-gcp/ --set google.projectId=[PROJECT_ID] - - # check the output of your chart - helm template ./charts/wordpress-gcp/ --set google.projectId=[PROJECT_ID] - - # install your chart - helm install ./charts/wordpress-gcp/ --set google.projectId=[PROJECT_ID] --generate-name - ``` - -1. The wordpress creation can take up to 10-15 minutes. Throughout the process you can check the status of various components: - - ```bash - # check the status of sqlinstance - kubectl describe sqlinstance [VALUE of database.instanceName] - # check the status of wordpress pod (the output should show that both containers are ready) - kubectl get pods wordpress-0 - ``` - - **Note:** If the pods can't be scheduled because of `Insufficient CPU` issue, please increase the size of nodes in your cluster. - Once the pods are ready, obtain the external IP address of your WordPress application by checking: - - ```bash - kubectl get svc wordpress-external - ``` - - Navigate to this address and validate that you see WordPress installation page. - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. Note that can take a few minutes before all K8s resources are fully deleted. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. \ No newline at end of file diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/.helmignore b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/.helmignore deleted file mode 100644 index 3eaebeb0931..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/.helmignore +++ /dev/null @@ -1,22 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode \ No newline at end of file diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/Chart.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/Chart.yaml deleted file mode 100644 index 6309ea1cdf8..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/Chart.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -appVersion: "1.0" -description: A Helm chart to deploy WordPress powered by Google Cloud SQL MySQL database and Config Connector to Kubernetes -name: wordpress-gcp -version: 0.1.0 -icon: https://s1.wp.com/i/webclip.png diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-api.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-api.yaml deleted file mode 100644 index 6fedc9c29aa..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-api.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 -kind: Service -metadata: - annotations: - cnrm.cloud.google.com/deletion-policy: abandon - cnrm.cloud.google.com/disable-dependent-services: "false" - name: sqladmin.googleapis.com diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-db.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-db.yaml deleted file mode 100644 index bccc574b9b4..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-db.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: {{ required "dbName is required!" .Values.database.dbName }} -spec: - charset: utf8 - instanceRef: - name: {{ required "instanceName is required!" .Values.database.instanceName }} \ No newline at end of file diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-instance.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-instance.yaml deleted file mode 100644 index 22f70343dcf..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-instance.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: {{ required "instanceName is required!" .Values.database.instanceName }} -spec: - databaseVersion: {{ required "version is required!" .Values.database.version }} - region: {{ required "region is required!" .Values.google.region }} - settings: - tier: {{ required "tier is required!" .Values.database.tier }} diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-policy-member.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-policy-member.yaml deleted file mode 100644 index 450cd0103e9..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-policy-member.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: sql-wp-sa-project-policymember -spec: - member: serviceAccount:sql-wp-sa@{{ required "projectId is required!" .Values.google.projectId }}.iam.gserviceaccount.com - role: roles/cloudsql.client - resourceRef: - kind: Project - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 - external: {{ required "projectId is required!" .Values.google.projectId }} diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-service-account.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-service-account.yaml deleted file mode 100644 index 37e151dc1ca..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-service-account.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMServiceAccount -metadata: - name: sql-wp-sa -spec: - displayName: Service Account for WordPress Config Connector Sample diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-user.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-user.yaml deleted file mode 100644 index 160b3f9fcac..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-sql-user.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: {{ required "user is required!" .Values.database.user }} -spec: - instanceRef: - name: {{ required "instanceName is required!" .Values.database.instanceName }} - host: "%" - password: - valueFrom: - secretKeyRef: - name: wordpress-cloudsql-db-credentials - key: password diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-wi-policy.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-wi-policy.yaml deleted file mode 100644 index c7f84e6081a..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/gcp-wi-policy.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicy -metadata: - name: sql-wp-sa-wi-policy -spec: - resourceRef: - apiVersion: iam.cnrm.cloud.google.com/v1beta1 - kind: IAMServiceAccount - name: sql-wp-sa - bindings: - - role: roles/iam.workloadIdentityUser - members: - - serviceAccount:{{ required "projectId is required!" .Values.google.projectId }}.svc.id.goog[{{ required "Namespace is requried!" .Release.Namespace }}/sql-wp-ksa-wi] diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-external-load-balancer.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-external-load-balancer.yaml deleted file mode 100644 index 724987d7768..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-external-load-balancer.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: wordpress-external - labels: - app: wordpress -spec: - type: LoadBalancer - ports: - - port: 80 - name: web - targetPort: 80 - protocol: TCP - selector: - app: wordpress diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-service-account.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-service-account.yaml deleted file mode 100644 index 024a0d41408..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-service-account.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: sql-wp-ksa-wi - annotations: - iam.gke.io/gcp-service-account: sql-wp-sa@{{ required "projectId is required!" .Values.google.projectId }}.iam.gserviceaccount.com diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-sql-db-credentials.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-sql-db-credentials.yaml deleted file mode 100644 index 5d80430b467..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-sql-db-credentials.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: wordpress-cloudsql-db-credentials -stringData: - projectId: {{ required "projectId is required!" .Values.google.projectId }} - username: {{ required "user is required!" .Values.database.user }} - password: {{ required "password is required!" .Values.database.password }} - connectionName: {{ required "region is required!" .Values.google.region }}:{{ required "instanceName is required!" .Values.database.instanceName }} diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-stateful-set.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-stateful-set.yaml deleted file mode 100644 index e1fd3ca86df..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/templates/k8s-stateful-set.yaml +++ /dev/null @@ -1,86 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: wordpress -spec: - selector: - matchLabels: - app: wordpress - serviceName: "wordpress" - replicas: 1 - template: - metadata: - labels: - app: wordpress - spec: - terminationGracePeriodSeconds: 30 - serviceAccountName: sql-wp-ksa-wi - containers: - - name: wordpress - resources: -{{ toYaml .Values.wordpress.resources | indent 10 }} - image: {{ required "image is required!" .Values.wordpress.image}} - imagePullPolicy: IfNotPresent - env: - - name: WORDPRESS_DB_HOST - value: 127.0.0.1:3306 - - name: WORDPRESS_DB_USER - valueFrom: - secretKeyRef: - name: wordpress-cloudsql-db-credentials - key: username - - name: WORDPRESS_DB_PASSWORD - valueFrom: - secretKeyRef: - name: wordpress-cloudsql-db-credentials - key: password - ports: - - containerPort: 80 - volumeMounts: - - name: wordpress-volume - mountPath: /var/www/html - readinessProbe: - httpGet: - path: / - port: 80 - initialDelaySeconds: 180 - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 10 - successThreshold: 1 - livenessProbe: - httpGet: - path: / - port: 80 - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 20 - successThreshold: 1 - - name: cloudsql-proxy - resources: - limits: - cpu: "200m" - memory: "100Mi" - image: gcr.io/cloudsql-docker/gce-proxy:1.11 - env: - - name: CONNECTION_NAME - valueFrom: - secretKeyRef: - name: wordpress-cloudsql-db-credentials - key: connectionName - - name: PROJECT_ID - valueFrom: - secretKeyRef: - name: wordpress-cloudsql-db-credentials - key: projectId - command: ["/cloud_sql_proxy", - "-instances=$(PROJECT_ID):$(CONNECTION_NAME)=tcp:3306"] - volumeClaimTemplates: - - metadata: - name: wordpress-volume - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: {{ required "storage is required!" .Values.wordpress.storage}} diff --git a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/values.yaml b/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/values.yaml deleted file mode 100644 index c5602add91d..00000000000 --- a/config-connector/solutions/apps/helm/wordpress/charts/wordpress-gcp/values.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Default values for opsman. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -google: - projectId: - region: us-central1 - -database: - instanceName: wp-db - dbName: wordpress - version: MYSQL_5_7 - tier: db-f1-micro - user: wordpress - password: change-me - -wordpress: - image: wordpress:5.2.2-apache - storage: 10Gi - resources: - limits: - cpu: "200m" - memory: "100Mi" \ No newline at end of file diff --git a/config-connector/solutions/iam/helm/folder-iam/Chart.yaml b/config-connector/solutions/iam/helm/folder-iam/Chart.yaml deleted file mode 100644 index 99c50129895..00000000000 --- a/config-connector/solutions/iam/helm/folder-iam/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: folder-iam -version: 0.1.0 -description: Configure permissions for a GCP folder diff --git a/config-connector/solutions/iam/helm/folder-iam/README.md b/config-connector/solutions/iam/helm/folder-iam/README.md deleted file mode 100644 index 3bfd6667b29..00000000000 --- a/config-connector/solutions/iam/helm/folder-iam/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# Folder IAM - -================================================== - -## NAME - - folder-iam - -## SYNOPSIS - - Config Connector compatible YAML files to grant a specific member a role (default to `roles/resourcemanager.folderEditor`) to an existing folder. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the folder-iam folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/folder-iam - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). - -1. A working Config Connector cluster using the "cnrm-system" service account with _minimally_ the permissions given by the following role on the desired folder: - - `roles/resourcemanager.folderIamAdmin` - -1. Install [Helm](../../../README.md#helm) - -## USAGE - -All steps are running from the current directory ([config-connector/solutions/iam/helm/folder-iam](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. - - ```bash - # validate your chart - helm lint . --set iamPolicyMember.iamMember=user:name@example.com,folderID=VALUE - - # check the output of your chart - helm template . --set iamPolicyMember.iamMember=user:name@example.com,folderID=VALUE - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set iamPolicyMember.iamMember=user:name@example.com,folderID=VALUE --generate-name - - # install your chart - helm install . --set iamPolicyMember.iamMember=user:name@example.com,folderID=VALUE --generate-name - ``` - -1. _Optionally_, you can also change the role granted to the member. (you can find all of the folder related IAM roles - [here](https://cloud.google.com/iam/docs/understanding-roles#resource-manager-roles)): - ```bash - # install your chart with a new IAM role. - helm install . --set iamPolicyMember.role=roles/iam.serviceAccountTokenCreator,iamPolicyMember.iamMember=user:name@example.com,folderID=VALUE --generate-name - ``` - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - - Check the status of the IAM Policy Member: - ```bash - kubectl describe iampolicymember iampolicymember-folder-iam - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/folder-iam/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/folder-iam/templates/iampolicymember.yaml deleted file mode 100644 index 9216158e6fc..00000000000 --- a/config-connector/solutions/iam/helm/folder-iam/templates/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: iampolicymember-folder-iam -spec: - member: {{ required "IAM member is required!" .Values.iamPolicyMember.iamMember }} - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 - kind: Folder - external: {{ required "folder ID is required!" .Values.folderID | quote}} diff --git a/config-connector/solutions/iam/helm/folder-iam/values.yaml b/config-connector/solutions/iam/helm/folder-iam/values.yaml deleted file mode 100644 index 1f841dcdbcc..00000000000 --- a/config-connector/solutions/iam/helm/folder-iam/values.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -iamPolicyMember: - iamMember: - role: roles/resourcemanager.folderEditor - -folderID: diff --git a/config-connector/solutions/iam/helm/kms-key-ring/Chart.yaml b/config-connector/solutions/iam/helm/kms-key-ring/Chart.yaml deleted file mode 100644 index a5145b3bd99..00000000000 --- a/config-connector/solutions/iam/helm/kms-key-ring/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: kms-key-ring -version: 0.1.0 -description: Grant an IAM role to a member for creating a kms key ring diff --git a/config-connector/solutions/iam/helm/kms-key-ring/README.md b/config-connector/solutions/iam/helm/kms-key-ring/README.md deleted file mode 100644 index 7d4a2fe1c1d..00000000000 --- a/config-connector/solutions/iam/helm/kms-key-ring/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# KMS Key Ring - -================================================== - -## NAME - - kms-key-ring - -## SYNOPSIS - - Config Connector compatible YAML files to create a KMS key ring in your desired project, and grant a specific member a role (default to roles/cloudkms.admin) for accessing the KMS key ring that just created - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the service account folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/kms-key-ring - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) -1. The "cnrm-system" service account assigned with either `roles/cloudkms.admin` or `roles/owner` in the project managed by Config Connector -1. Cloud Key Management Service (KMS) API enabled in the project where Config Connector is installed -1. Cloud Key Management Service (KMS) API enabled in the project managed by Config Connector if it is a different project - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/iam/helm/kms-key-ring](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. - - ```bash - # validate your chart - helm lint . --set iamPolicyMember.iamMember=user:name@example.com - - # check the output of your chart - helm template . --set iamPolicyMember.iamMember=user:name@example.com - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set iamPolicyMember.iamMember=user:name@example.com --generate-name - - # install your chart - helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - -1. _Optionally_, you can set the name of the KMS keyring (defaults to `allowed-ring`), set the location of the ring (defaults to `us-central1`) and the role to grant (defaults to `roles/pubsub.editor`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#cloud-kms-roles)) by explicitly setting them when installing the solution: - - ```bash - # install your chart with a different name of the KMS keyring and location - helm install . --set KMSKeyRing.name=your-ring-name,KMSKeyRing.location=us-west1,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or, - ```bash - # install your chart with a new role - helm install . --set iamPolicyMember.role=roles/cloudkms.importer,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or set there in one command. - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - Check the status of the KMS keyring resource by running: - - Note: By default value of KMS keyring name is ```allowed-ring``` - - ```bash - kubectl describe kmskeyring [KMS Keyring name] - ``` - Check the status of the IAM Policy Member: - ```bash - kubectl describe iampolicymember ring-iam-member - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/kms-key-ring/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/kms-key-ring/templates/iampolicymember.yaml deleted file mode 100644 index dea15ce9753..00000000000 --- a/config-connector/solutions/iam/helm/kms-key-ring/templates/iampolicymember.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: ring-iam-member -spec: - member: {{ required "IAM member is required!" .Values.iamPolicyMember.iamMember }} - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: kms.cnrm.cloud.google.com/v1beta1 - kind: KMSKeyRing - name: {{ .Values.KMSKeyRing.name }} diff --git a/config-connector/solutions/iam/helm/kms-key-ring/templates/kmskeyring.yaml b/config-connector/solutions/iam/helm/kms-key-ring/templates/kmskeyring.yaml deleted file mode 100644 index ef4102a7929..00000000000 --- a/config-connector/solutions/iam/helm/kms-key-ring/templates/kmskeyring.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: kms.cnrm.cloud.google.com/v1beta1 -kind: KMSKeyRing -metadata: - name: {{ .Values.KMSKeyRing.name }} -spec: - location: {{ .Values.KMSKeyRing.location }} diff --git a/config-connector/solutions/iam/helm/kms-key-ring/values.yaml b/config-connector/solutions/iam/helm/kms-key-ring/values.yaml deleted file mode 100644 index 5e692819388..00000000000 --- a/config-connector/solutions/iam/helm/kms-key-ring/values.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -iamPolicyMember: - iamMember: - role: roles/cloudkms.admin - -KMSKeyRing: - name: allowed-ring - location: us-central1 diff --git a/config-connector/solutions/iam/helm/member-iam/Chart.yaml b/config-connector/solutions/iam/helm/member-iam/Chart.yaml deleted file mode 100644 index 66863d80a9a..00000000000 --- a/config-connector/solutions/iam/helm/member-iam/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: member-iam -version: 0.1.0 -description: A Helm chart to create a service account in your desired project, and grant it a specific role. diff --git a/config-connector/solutions/iam/helm/member-iam/README.md b/config-connector/solutions/iam/helm/member-iam/README.md deleted file mode 100644 index 9b13d0552a9..00000000000 --- a/config-connector/solutions/iam/helm/member-iam/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# Member IAM - -================================================== - -## NAME - - member-iam - -## SYNOPSIS - - Config Connector compatible YAML files to create a service account in your desired project, and grant it a specific role (defaults to `compute.networkAdmin`) in the project. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the member-iam folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/member-iam - ``` - -## REQUIREMENTS - -1. GKE Cluster with [Config Connector installed using a GKE Workload Identity](https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall#workload-identity). -1. [Helm](../../../README.md#helm) -1. The "cnrm-system" service account assigned with `roles/resourcemanager.projectIamAdmin` and `roles/iam.serviceAccountAdmin` or `roles/owner` - role in your desired project (it doesn't need to be the project managed by Config Connector) -1. Cloud Resource Manager API enabled in the project where Config Connector is installed - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/iam/helm/member-iam](.)). - -1. Review and update the values in `./values.yaml`. - -1. Create a namespace. If you want to use your existing namespace skip this step and use your own namespace name instead of `member-iam-solution` in all other steps. - - ```bash - kubectl create namespace member-iam-solution - ``` - -1. Validate and install the sample with Helm. `PROJECT_ID` should be your desired project ID unique with in GCP. - - ```bash - # validate your chart - helm lint . --set projectID=PROJECT_ID --namespace member-iam-solution - - # check the output of your chart - helm template . --set projectID=PROJECT_ID --namespace member-iam-solution - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set projectID=PROJECT_ID --namespace member-iam-solution --generate-name - - # install your chart - helm install . --set projectID=PROJECT_ID --namespace member-iam-solution --generate-name - ``` - -1. _Optionally_, you can also change the service account name `iamPolicyMember.iamMember` (defaults to `member-iam-test`) and role `iamPolicyMember.role` (defaults to `roles/compute.networkAdmin`) - (you can find all the predefined GCP IAM roles [here](https://cloud.google.com/iam/docs/understanding-roles#predefined_roles)): - - ```bash - # install your chart with a different service account name - helm install . --set projectID=PROJECT_ID,iamPolicyMember.iamMember=service-account-name --namespace member-iam-solution --generate-name - ``` - Or, - ```bash - # install your chart with a different role - helm install . --set projectID=PROJECT_ID,iamPolicyMember.role=roles/compute.networkUser --namespace member-iam-solution --generate-name - ``` - Or set both in one command. - -1. Check the created helm release to verify the installation: - - ```bash - helm list - ``` - - Check the status of the IAM Service Account: - - ```bash - kubectl describe iamserviceaccount [Value of iamPolicyMember.iamMember] - ``` - - Check the status of the IAM Policy Member: - - ```bash - kubectl describe iampolicymember project-iam-member - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/member-iam/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/member-iam/templates/iampolicymember.yaml deleted file mode 100644 index a1aa749d586..00000000000 --- a/config-connector/solutions/iam/helm/member-iam/templates/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: project-iam-member -spec: - member: "serviceAccount:{{ .Values.iamPolicyMember.iamMember }}@{{ required "Desired Project ID is required" .Values.projectID }}.iam.gserviceaccount.com" - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 - kind: Project - external: "projects/{{ required "Desired Project ID is required" .Values.projectID }}" diff --git a/config-connector/solutions/iam/helm/member-iam/templates/iamserviceaccount.yaml b/config-connector/solutions/iam/helm/member-iam/templates/iamserviceaccount.yaml deleted file mode 100644 index b144e652392..00000000000 --- a/config-connector/solutions/iam/helm/member-iam/templates/iamserviceaccount.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMServiceAccount -metadata: - name: {{ .Values.iamPolicyMember.iamMember }} diff --git a/config-connector/solutions/iam/helm/member-iam/values.yaml b/config-connector/solutions/iam/helm/member-iam/values.yaml deleted file mode 100644 index 3696e2d1e94..00000000000 --- a/config-connector/solutions/iam/helm/member-iam/values.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -projectID: - -iamPolicyMember: - iamMember: member-iam-test - role: roles/compute.networkAdmin diff --git a/config-connector/solutions/iam/helm/project-iam/Chart.yaml b/config-connector/solutions/iam/helm/project-iam/Chart.yaml deleted file mode 100644 index 16eefafb8ec..00000000000 --- a/config-connector/solutions/iam/helm/project-iam/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: project-iam -version: 0.1.0 -description: Grant a role for a member in a desired project. diff --git a/config-connector/solutions/iam/helm/project-iam/README.md b/config-connector/solutions/iam/helm/project-iam/README.md deleted file mode 100644 index b86758325b7..00000000000 --- a/config-connector/solutions/iam/helm/project-iam/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Project IAM - -================================================== - -## NAME - - project-iam - -## SYNOPSIS - - Config Connector compatible YAML files to grant a role for a member in a desired project. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the project-iam folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/project-iam - ``` - -## REQUIREMENTS - -1. GKE Cluster with [Config Connector installed using a GKE Workload Identity](https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall#workload-identity). -1. [Helm](../../../README.md#helm) -1. The "cnrm-system" service account that has the `roles/resourcemanager.projectIamAdmin` - role in your desired project (it doesn't need to be the project managed by Config Connector). -1. The project managed by Config Connector has Cloud Resource Manager API enabled. - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/iam/helm/project-iam](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. `PROJECT_ID` should be your desired project ID unique with in GCP. - - ```bash - # validate your chart - helm lint . --set iamPolicyMember.iamMember=user:name@example.com,projectID=PROJECT_ID - - # check the output of your chart - helm template . --set iamPolicyMember.iamMember=user:name@example.com,projectID=PROJECT_ID - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set iamPolicyMember.iamMember=user:name@example.com,projectID=PROJECT_ID --generate-name - - # install your chart - helm install . --set iamPolicyMember.iamMember=user:name@example.com,projectID=PROJECT_ID --generate-name - ``` - -1. _Optionally_, you can also change the role (defaults to `roles/logging.viewer`): - - ```bash - # install your chart with a different role - helm install . --set iamPolicyMember.iamMember=user:name@example.com,iamPolicyMember.role=roles/logging.admin,projectID=PROJECT_ID --generate-name - ``` - -1. Check the created helm release to verify the installation: - - ```bash - helm list - ``` - - Check the status of the IAM Policy Member: - - ```bash - kubectl describe iampolicymember project-iam-member - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/project-iam/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/project-iam/templates/iampolicymember.yaml deleted file mode 100644 index 41f77eb1c8f..00000000000 --- a/config-connector/solutions/iam/helm/project-iam/templates/iampolicymember.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: project-iam-member -spec: - member: {{ required "IAM member is required!" .Values.iamPolicyMember.iamMember }} - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 - kind: Project - external: "projects/{{ required "Desired Project ID is required" .Values.projectID }}" diff --git a/config-connector/solutions/iam/helm/project-iam/values.yaml b/config-connector/solutions/iam/helm/project-iam/values.yaml deleted file mode 100644 index 07e1dc902ac..00000000000 --- a/config-connector/solutions/iam/helm/project-iam/values.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -projectID: - -iamPolicyMember: - iamMember: - role: roles/logging.viewer diff --git a/config-connector/solutions/iam/helm/pubsub-subscription/Chart.yaml b/config-connector/solutions/iam/helm/pubsub-subscription/Chart.yaml deleted file mode 100644 index 9ac3ad89e8f..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-subscription/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: pubsub-subscription -version: 0.1.0 -description: Creates a pubsub subscription and configures permissions for it diff --git a/config-connector/solutions/iam/helm/pubsub-subscription/README.md b/config-connector/solutions/iam/helm/pubsub-subscription/README.md deleted file mode 100644 index 9d36ba480ba..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-subscription/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# Pub/Sub Subscription - -================================================== - -## NAME - - pubsub-subscription - -## SYNOPSIS - - Config Connector compatible YAML files to create a Pub/Sub subscription and Pub/Sub topic if it doesn't exist in your desired project and grant a specific member a role (default to roles/pubsub.viewer) for accessing the Pub/Sub subscription that just created - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the service account folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/pubsub-subscription - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) -1. The "cnrm-system" service account assigned with either `roles/pubsub.viewer` or `roles/owner` in the project managed by Config Connector -1. Cloud Pub/Sub API enabled in the project where Config Connector is installed -1. Cloud Pub/Sub API enabled in the project managed by Config Connector if it is a different project - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/iam/helm/pubsub-subscription](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. - - ```bash - # validate your chart - helm lint . --set iamPolicyMember.iamMember=user:name@example.com - - # check the output of your chart - helm template . --set iamPolicyMember.iamMember=user:name@example.com - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set iamPolicyMember.iamMember=user:name@example.com --generate-name - - # install your chart - helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - -1. _Optionally_, you can set the name of the pubsub subscription (defaults to `allowed-subscription`), set the name of the PubSub topic (defaults to `allowed-topic`) and the role to grant (defaults to `roles/pubsub.viewer`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#pub-sub-roles)) by explicitly setting them when installing the solution: - - ```bash - # install your chart with a different pubsub subscription and pubsub topic - helm install . --set PubSubTopic.name=your-topic-name,PubSubSubscription.name=your-subscription-name,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or, - ```bash - # install your chart with a new role - helm install . --set iamPolicyMember.role=roles/pubsub.editor,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or set there in one command. - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - Check the status of the pubsub subscription and topic resource by running: - - Note: By default value of pubsub topic name is ```allowed-topic``` and pubsub subscription name is ```allowed-subscription``` - - ```bash - kubectl describe pubsubsubscriptions [pubsub subscription name] - - kubectl describe pubsubtopic [pubsub topic name] - ``` - Check the status of the IAM Policy Member: - ```bash - kubectl describe iampolicymember topic-iam-member - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/pubsub-subscription/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/pubsub-subscription/templates/iampolicymember.yaml deleted file mode 100644 index e4a38317d4b..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-subscription/templates/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: topic-iam-member -spec: - member: {{ required "IAM member is required!" .Values.iamPolicyMember.iamMember }} - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 - kind: PubSubSubscription - name: {{ .Values.PubSubSubscription.name }} diff --git a/config-connector/solutions/iam/helm/pubsub-subscription/templates/pubsubsubscription.yaml b/config-connector/solutions/iam/helm/pubsub-subscription/templates/pubsubsubscription.yaml deleted file mode 100644 index db55a63bfe2..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-subscription/templates/pubsubsubscription.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 -kind: PubSubSubscription -metadata: - name: {{ .Values.PubSubSubscription.name }} -spec: - ackDeadlineSeconds: 15 - messageRetentionDuration: 86400s - retainAckedMessages: false - topicRef: - name: {{ .Values.PubSubTopic.name }} diff --git a/config-connector/solutions/iam/helm/pubsub-subscription/templates/pubsubtopic.yaml b/config-connector/solutions/iam/helm/pubsub-subscription/templates/pubsubtopic.yaml deleted file mode 100644 index 1fef88b5fcb..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-subscription/templates/pubsubtopic.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 -kind: PubSubTopic -metadata: - name: {{ .Values.PubSubTopic.name }} diff --git a/config-connector/solutions/iam/helm/pubsub-subscription/values.yaml b/config-connector/solutions/iam/helm/pubsub-subscription/values.yaml deleted file mode 100644 index ae8c4066400..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-subscription/values.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -iamPolicyMember: - iamMember: - role: roles/pubsub.viewer - -PubSubTopic: - name: allowed-topic - -PubSubSubscription: - name: allowed-subscription diff --git a/config-connector/solutions/iam/helm/pubsub-topic/Chart.yaml b/config-connector/solutions/iam/helm/pubsub-topic/Chart.yaml deleted file mode 100644 index b33997f49e9..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-topic/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: pubsub-topic -version: 0.1.0 -description: Grant an IAM role to a member for a PubSub topic diff --git a/config-connector/solutions/iam/helm/pubsub-topic/README.md b/config-connector/solutions/iam/helm/pubsub-topic/README.md deleted file mode 100644 index acab1184699..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-topic/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# Pub/Sub Topic - -================================================== - -## NAME - - pubsub-topic - -## SYNOPSIS - - - Config Connector compatible YAML files to create a Pub/Sub topic in your desired project, and grant a specific member a role (default to roles/pubsub.editor) for accessing the Pub/Sub topic that just created - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the service account folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/pubsub-topic - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) -1. The "cnrm-system" service account assigned with either `roles/pubsub.admin` or `roles/owner` in the - project managed by Config Connector -1. Cloud Pub/Sub API enabled in the project where Config Connector is - installed -1. Cloud Pub/Sub API enabled in the project managed by Config Connector if it - is a different project - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/iam/helm/pubsub-topic](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. - - ```bash - # validate your chart - helm lint . --set iamPolicyMember.iamMember=user:name@example.com - - # check the output of your chart - helm template . --set iamPolicyMember.iamMember=user:name@example.com - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set iamPolicyMember.iamMember=user:name@example.com --generate-name - - # install your chart - helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - -1. _Optionally_, you can set the name of the PubSub topic (defaults to `allowed-topic`) and the role to grant (defaults to `roles/pubsub.editor`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#pub-sub-roles)) by explicitly setting them when installing the solution: - - ```bash - # install your chart with a different name of the PubSub topic - helm install . --set PubSubTopic.name=your-topic,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or, - ```bash - # install your chart with a new role - helm install . --set iamPolicyMember.role=roles/pubsub.viewer,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or set them both in one command. - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - Check the status of the pub/sub topic resource by running: - - Note: By default value of Pub/Sub topic name is ```allowed-topic``` - - ```bash - kubectl describe pubsubtopic [topic name] - ``` - Check the status of the IAM Policy Member: - ```bash - kubectl describe iampolicymember topic-iam-member - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/pubsub-topic/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/pubsub-topic/templates/iampolicymember.yaml deleted file mode 100644 index 2cb33b02a4e..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-topic/templates/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: topic-iam-member -spec: - member: {{ required "IAM member is required!" .Values.iamPolicyMember.iamMember }} - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 - kind: PubSubTopic - name: {{ .Values.PubSubTopic.name }} diff --git a/config-connector/solutions/iam/helm/pubsub-topic/templates/pubsubtopic.yaml b/config-connector/solutions/iam/helm/pubsub-topic/templates/pubsubtopic.yaml deleted file mode 100644 index 1fef88b5fcb..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-topic/templates/pubsubtopic.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 -kind: PubSubTopic -metadata: - name: {{ .Values.PubSubTopic.name }} diff --git a/config-connector/solutions/iam/helm/pubsub-topic/values.yaml b/config-connector/solutions/iam/helm/pubsub-topic/values.yaml deleted file mode 100644 index 8264d1aaa98..00000000000 --- a/config-connector/solutions/iam/helm/pubsub-topic/values.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -iamPolicyMember: - iamMember: - role: roles/pubsub.editor - -PubSubTopic: - name: allowed-topic diff --git a/config-connector/solutions/iam/helm/service-account/Chart.yaml b/config-connector/solutions/iam/helm/service-account/Chart.yaml deleted file mode 100644 index e346c3e387f..00000000000 --- a/config-connector/solutions/iam/helm/service-account/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: service-account -version: 0.1.0 -description: Grant an IAM role to a member for accessing a given service account diff --git a/config-connector/solutions/iam/helm/service-account/README.md b/config-connector/solutions/iam/helm/service-account/README.md deleted file mode 100644 index 8adb96f86a1..00000000000 --- a/config-connector/solutions/iam/helm/service-account/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Service Account - -================================================== - -## NAME - - service account - -## SYNOPSIS - - Config Connector compatible YAML files to create a service account in your desired project, and grant a specific member a role (default to `roles/iam.serviceAccountKeyAdmin`) for accessing the service account that just created. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the service account folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/service-account - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/iam/helm/service-account](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. - - ```bash - # validate your chart - helm lint . --set iamPolicyMember.iamMember=user:name@example.com - - # check the output of your chart - helm template . --set iamPolicyMember.iamMember=user:name@example.com - - # Do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set iamPolicyMember.iamMember=user:name@example.com --generate-name - - # install your chart - helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - -1. _Optionally_, you can customize optional values by explicitly setting them when installing the solution: - ```bash - # install your chart with a new service account name - helm install . --set serviceAccount.name=new-service-account,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or, - ```bash - # install your chart with a new role - helm install . --set iamPolicyMember.role=roles/iam.serviceAccountTokenCreator,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or set them both in one command. - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - Check the status of the service account resource by running: - ```bash - kubectl describe iamserviceaccount [service account name] - ``` - Check the status of the IAM Policy Member: - ```bash - kubectl describe iampolicymember iampolicymember-service-account - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/service-account/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/service-account/templates/iampolicymember.yaml deleted file mode 100644 index 7c49bf37770..00000000000 --- a/config-connector/solutions/iam/helm/service-account/templates/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: iampolicymember-service-account -spec: - member: {{ required "IAM member is required!" .Values.iamPolicyMember.iamMember }} - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: iam.cnrm.cloud.google.com/v1beta1 - kind: IAMServiceAccount - name: {{ .Values.serviceAccount.name }} diff --git a/config-connector/solutions/iam/helm/service-account/templates/iamserviceaccount.yaml b/config-connector/solutions/iam/helm/service-account/templates/iamserviceaccount.yaml deleted file mode 100644 index 31f02c29105..00000000000 --- a/config-connector/solutions/iam/helm/service-account/templates/iamserviceaccount.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMServiceAccount -metadata: - name: {{ .Values.serviceAccount.name }} diff --git a/config-connector/solutions/iam/helm/service-account/values.yaml b/config-connector/solutions/iam/helm/service-account/values.yaml deleted file mode 100644 index a874b2cf2cd..00000000000 --- a/config-connector/solutions/iam/helm/service-account/values.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -iamPolicyMember: - iamMember: - role: roles/iam.serviceAccountKeyAdmin - -serviceAccount: - name: service-account-solution diff --git a/config-connector/solutions/iam/helm/storage-bucket-iam/Chart.yaml b/config-connector/solutions/iam/helm/storage-bucket-iam/Chart.yaml deleted file mode 100644 index 12709a6385d..00000000000 --- a/config-connector/solutions/iam/helm/storage-bucket-iam/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: storage-bucket-iam -version: 0.1.0 -description: Grant an IAM role to a member for a Storage Bucket diff --git a/config-connector/solutions/iam/helm/storage-bucket-iam/README.md b/config-connector/solutions/iam/helm/storage-bucket-iam/README.md deleted file mode 100644 index eeeae7522bf..00000000000 --- a/config-connector/solutions/iam/helm/storage-bucket-iam/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# Storage Bucket IAM - -================================================== - -## NAME - - storage bucket iam - -## SYNOPSIS - - Config Connector compatible yaml to enable permissions for a storage bucket. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the service account folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/storage-bucket-iam - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) -1. A working Config Connector instance. -1. A storage bucket managed by [IAM](https://cloud.google.com/storage/docs/access-control#using_permissions_with_acls). -1. The "cnrm-system" service account with `roles/storage.admin` in either - the storage bucket or the project which owns the storage bucket. - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/iam/helm/storage-bucket-iam](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. - - ```bash - # validate your chart - helm lint . --set iamPolicyMember.iamMember=user:name@example.com,StorageBucket.name=your-bucket - - # check the output of your chart - helm template . --set iamPolicyMember.iamMember=user:name@example.com,StorageBucket.name=your-bucket - - # Do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set iamPolicyMember.iamMember=user:name@example.com,StorageBucket.name=your-bucket --generate-name - - # install your chart - helm install . --set iamPolicyMember.iamMember=user:name@example.com,StorageBucket.name=your-bucket --generate-name - ``` - -1. _Optionally_, you can customize optional value role of iam policy member (defaults to `roles/storage.objectViewer`, full list of roles [here](https://cloud.google.com/iam/docs/understanding-roles#storage-roles)): - ```bash - # install your chart with a new role - helm install . --set iamPolicyMember.iamMember=user:name@example.com,StorageBucket.name=your-bucket,iamPolicyMember.role=roles/storage.admin --generate-name - ``` - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - Check the status of the IAM Policy Member: - ```bash - kubectl describe iampolicymember storage-bucket-iam-member - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/storage-bucket-iam/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/storage-bucket-iam/templates/iampolicymember.yaml deleted file mode 100644 index 4a85b1fffbe..00000000000 --- a/config-connector/solutions/iam/helm/storage-bucket-iam/templates/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: storage-bucket-iam-member -spec: - member: {{ required "IAM member is required!" .Values.iamPolicyMember.iamMember }} - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: storage.cnrm.cloud.google.com/v1beta1 - kind: StorageBucket - external: {{ required "Existing Storage Bucket name is required" .Values.StorageBucket.name }} diff --git a/config-connector/solutions/iam/helm/storage-bucket-iam/values.yaml b/config-connector/solutions/iam/helm/storage-bucket-iam/values.yaml deleted file mode 100644 index 6764c9abbed..00000000000 --- a/config-connector/solutions/iam/helm/storage-bucket-iam/values.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -iamPolicyMember: - iamMember: - role: roles/storage.objectViewer - -StorageBucket: - name: diff --git a/config-connector/solutions/iam/helm/subnet/Chart.yaml b/config-connector/solutions/iam/helm/subnet/Chart.yaml deleted file mode 100644 index 21377ad4ab5..00000000000 --- a/config-connector/solutions/iam/helm/subnet/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: subnet -version: 0.1.0 -description: Create a subnet and grant a specific member a role for the subnet diff --git a/config-connector/solutions/iam/helm/subnet/README.md b/config-connector/solutions/iam/helm/subnet/README.md deleted file mode 100644 index 7c7744b0d4e..00000000000 --- a/config-connector/solutions/iam/helm/subnet/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Subnet - -================================================== - -## NAME - - subnet - -## SYNOPSIS - - Config Connector compatible YAML files to create a subnet in your desired project, and grant a specific member a role (default to `roles/compute.networkUser`) for accessing the subnet that just created. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the subnet folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/iam/helm/subnet - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/iam/helm/subnet](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. - - ```bash - # validate your chart - helm lint . --set iamPolicyMember.iamMember=user:name@example.com - - # check the output of your chart - helm template . --set iamPolicyMember.iamMember=user:name@example.com - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set iamPolicyMember.iamMember=user:name@example.com --generate-name - - # install your chart - helm install . --set iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - -1. _Optionally_, you can customize optional values by explicitly setting them when installing the solution: - ```bash - # install your chart with a new subnet name - helm install . --set subnet.name=new-subnet,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or, - ```bash - # install your chart with a IAM role - helm install . --set iamPolicyMember.role=roles/compute.networkViewer,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or, - ```bash - # install your chart with another compute network - helm install . --set computeNetwork.name=VALUE,iamPolicyMember.iamMember=user:name@example.com --generate-name - ``` - Or set any of them at the same time in one command. - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - Check the status of the subnet resource by running: - ```bash - kubectl describe ComputeSubnetwork [subnet name] - ``` - Check the status of the IAM Policy Member: - ```bash - kubectl describe iampolicymember iampolicymember-subnet - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/helm/subnet/templates/computernetwork.yaml b/config-connector/solutions/iam/helm/subnet/templates/computernetwork.yaml deleted file mode 100644 index 2a76a0b2646..00000000000 --- a/config-connector/solutions/iam/helm/subnet/templates/computernetwork.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeNetwork -metadata: - name: {{ .Values.computeNetwork.name }} -spec: - routingMode: REGIONAL - autoCreateSubnetworks: false diff --git a/config-connector/solutions/iam/helm/subnet/templates/iampolicymember.yaml b/config-connector/solutions/iam/helm/subnet/templates/iampolicymember.yaml deleted file mode 100644 index 99acab2bbf3..00000000000 --- a/config-connector/solutions/iam/helm/subnet/templates/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: iampolicymember-subnet -spec: - member: {{ required "IAM member is required!" .Values.iamPolicyMember.iamMember }} - role: {{ .Values.iamPolicyMember.role }} - resourceRef: - apiVersion: compute.cnrm.cloud.google.com/v1beta1 - kind: ComputeSubnetwork - name: {{ .Values.subnet.name }} diff --git a/config-connector/solutions/iam/helm/subnet/templates/subnet.yaml b/config-connector/solutions/iam/helm/subnet/templates/subnet.yaml deleted file mode 100644 index c9a34193d7c..00000000000 --- a/config-connector/solutions/iam/helm/subnet/templates/subnet.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeSubnetwork -metadata: - name: {{ .Values.subnet.name }} -spec: - ipCidrRange: 10.0.0.0/9 - region: {{ .Values.subnet.region }} - privateIpGoogleAccess: false - networkRef: - name: {{ .Values.computeNetwork.name }} - logConfig: - aggregationInterval: INTERVAL_10_MIN - flowSampling: 0.5 - metadata: INCLUDE_ALL_METADATA diff --git a/config-connector/solutions/iam/helm/subnet/values.yaml b/config-connector/solutions/iam/helm/subnet/values.yaml deleted file mode 100644 index f4d8329d482..00000000000 --- a/config-connector/solutions/iam/helm/subnet/values.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -iamPolicyMember: - iamMember: - role: roles/compute.networkUser - -subnet: - name: subnet-solution - region: us-central1 - -computeNetwork: - name: compute-network-example diff --git a/config-connector/solutions/iam/kpt/folder-iam/Kptfile b/config-connector/solutions/iam/kpt/folder-iam/Kptfile deleted file mode 100644 index 8fcd88ac037..00000000000 --- a/config-connector/solutions/iam/kpt/folder-iam/Kptfile +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: folder-iam -packageMetadata: - shortDescription: Configure permissions for a GCP folder -openAPI: - definitions: - io.k8s.cli.setters.folder-id: - x-k8s-cli: - setter: - name: folder-id - value: "${FOLDER_ID?}" - setBy: PLACEHOLDER - description: the numaric id of the folder - io.k8s.cli.setters.iam-member: - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER - description: GCP identity to grant role to - io.k8s.cli.setters.role: - x-k8s-cli: - setter: - name: role - value: roles/resourcemanager.folderEditor - setBy: package-default - description: the IAM role to grant to the member diff --git a/config-connector/solutions/iam/kpt/folder-iam/README.md b/config-connector/solutions/iam/kpt/folder-iam/README.md deleted file mode 100644 index b1b8ef354da..00000000000 --- a/config-connector/solutions/iam/kpt/folder-iam/README.md +++ /dev/null @@ -1,55 +0,0 @@ -Folder IAM -================================================== - -# NAME - - folder-iam - -# SYNOPSIS - - Config Connector compatible YAML files to grant a specific member a role (default to `roles/resourcemanager.folderEditor`) to an existing folder. - -# CONSUMPTION - - Download the package using [kpt](https://googlecontainertools.github.io/kpt/): - - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/folder-iam folder-iam - ``` - -# REQUIREMENTS - - - A working Config Connector instance using the "cnrm-system" service - account with the following role in the desired folder: - - `roles/resourcemanager.folderIamAdmin` - - Cloud Resource Manager API enabled in the project where Config Connector - is installed - -# USAGE - - Replace the `${FOLDER_ID?}` with a folder ID you want to add member to: - ``` - kpt cfg set . folder-id VALUE - ``` - - Replace the `${IAM_MEMBER?}` with a GCP identity to grant role to: - ``` - kpt cfg set . iam-member VALUE - ``` - - _Optionally_, you can also change the role granted to the member. (you can find all of the folder related IAM roles - [here](https://cloud.google.com/iam/docs/understanding-roles#resource-manager-roles)): - - ``` - kpt cfg set . role roles/resourcemanager.folderViewer - ``` - - Apply the YAMLs: - - ``` - kubectl apply -f . - ``` - -# LICENSE - - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/kpt/folder-iam/iampolicymember.yaml b/config-connector/solutions/iam/kpt/folder-iam/iampolicymember.yaml deleted file mode 100644 index d0f3b4966b3..00000000000 --- a/config-connector/solutions/iam/kpt/folder-iam/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: iampolicymember-folder-iam -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/resourcemanager.folderEditor # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 - kind: Folder - external: "${FOLDER_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.folder-id"} diff --git a/config-connector/solutions/iam/kpt/kms-crypto-key/Kptfile b/config-connector/solutions/iam/kpt/kms-crypto-key/Kptfile deleted file mode 100644 index 248125174a6..00000000000 --- a/config-connector/solutions/iam/kpt/kms-crypto-key/Kptfile +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: kms-crypto-key -packageMetadata: - shortDescription: create a kms key ring, a kms crypto key, and apply an IAM role - to the crypto key -openAPI: - definitions: - io.k8s.cli.setters.iam-member: - description: IAM member to grant role - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER - io.k8s.cli.setters.role: - description: IAM role to grant - x-k8s-cli: - setter: - name: role - value: roles/cloudkms.signer - setBy: package-default - io.k8s.cli.setters.key-name: - description: name of key - x-k8s-cli: - setter: - name: key-name - value: allowed-key - setBy: package-default - io.k8s.cli.setters.ring-name: - description: name of ring - x-k8s-cli: - setter: - name: ring-name - value: allowed-ring - setBy: package-default - io.k8s.cli.setters.location: - description: location of ring - x-k8s-cli: - setter: - name: location - value: us-central1 - setBy: package-default diff --git a/config-connector/solutions/iam/kpt/kms-crypto-key/README.md b/config-connector/solutions/iam/kpt/kms-crypto-key/README.md deleted file mode 100644 index 8eec8695381..00000000000 --- a/config-connector/solutions/iam/kpt/kms-crypto-key/README.md +++ /dev/null @@ -1,52 +0,0 @@ -KMS Crypto Key -================================================== -# NAME - kms-crypto-key -# SYNOPSIS - Config Connector compatible yaml files to create a kms key ring, a kms crypto key, - and apply an IAM role to the crypto key. -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/kms-crypto-key kms-crypto-key - ``` -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either `roles/cloudkms.admin` or `roles/owner` in the project - managed by Config Connector. - - Cloud Key Management Service (KMS) API enabled in the project where Config - Connector is installed - - Cloud Key Management Service (KMS) API enabled in the project managed by - Config Connector if it is a different project - - -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|------------|-----------------------|-----------------|--------------------------|-------| -| iam-member | ${IAM_MEMBER?} | PLACEHOLDER | IAM member to grant role | 1 | -| key-name | allowed-key | package-default | name of key | 2 | -| location | us-central1 | package-default | location of ring | 1 | -| ring-name | allowed-ring | package-default | name of ring | 2 | -| role | roles/cloudkms.signer | package-default | IAM role to grant | 1 | -# USAGE - Set the IAM member to apply a role to: - ``` - kpt cfg set . iam-member user:name@example.com - ``` - _Optionally_ set the role to apply: - ``` - kpt cfg set . role roles/cloudkms.cryptoKeyDecrypter - ``` - _Optionally_ set the crypto key name, key ring name, and key ring location: - ``` - kpt cfg set . key-name your-key - kpt cfg set . ring-name your-ring - kpt cfg set . location us-west1 - ``` - Once the values are satisfactory, apply: - ``` - kubectl apply -f . - ``` -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. - diff --git a/config-connector/solutions/iam/kpt/kms-crypto-key/iampolicymember.yaml b/config-connector/solutions/iam/kpt/kms-crypto-key/iampolicymember.yaml deleted file mode 100644 index 5bd4eb9da09..00000000000 --- a/config-connector/solutions/iam/kpt/kms-crypto-key/iampolicymember.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: iampolicymember-sample-condition -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/cloudkms.signer # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: kms.cnrm.cloud.google.com/v1beta1 - kind: KMSCryptoKey - name: allowed-key # {"$ref":"#/definitions/io.k8s.cli.setters.key-name"} diff --git a/config-connector/solutions/iam/kpt/kms-crypto-key/kmscryptokey.yaml b/config-connector/solutions/iam/kpt/kms-crypto-key/kmscryptokey.yaml deleted file mode 100644 index e89f252aad5..00000000000 --- a/config-connector/solutions/iam/kpt/kms-crypto-key/kmscryptokey.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: kms.cnrm.cloud.google.com/v1beta1 -kind: KMSCryptoKey -metadata: - name: allowed-key # {"$ref":"#/definitions/io.k8s.cli.setters.key-name"} -spec: - keyRingRef: - name: allowed-ring # {"$ref":"#/definitions/io.k8s.cli.setters.ring-name"} - purpose: ASYMMETRIC_SIGN - versionTemplate: - algorithm: EC_SIGN_P384_SHA384 - protectionLevel: SOFTWARE diff --git a/config-connector/solutions/iam/kpt/kms-crypto-key/kmskeyring.yaml b/config-connector/solutions/iam/kpt/kms-crypto-key/kmskeyring.yaml deleted file mode 100644 index c459e16568e..00000000000 --- a/config-connector/solutions/iam/kpt/kms-crypto-key/kmskeyring.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: kms.cnrm.cloud.google.com/v1beta1 -kind: KMSKeyRing -metadata: - name: allowed-ring # {"$ref":"#/definitions/io.k8s.cli.setters.ring-name"} -spec: - location: us-central1 # {"$ref":"#/definitions/io.k8s.cli.setters.location"} diff --git a/config-connector/solutions/iam/kpt/kms-key-ring/Kptfile b/config-connector/solutions/iam/kpt/kms-key-ring/Kptfile deleted file mode 100644 index 8ce7e0fce1d..00000000000 --- a/config-connector/solutions/iam/kpt/kms-key-ring/Kptfile +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: kms-key-ring -packageMetadata: - shortDescription: create a kms key ring and apply an IAM role to it -openAPI: - definitions: - io.k8s.cli.setters.ring-name: - description: name of key ring - x-k8s-cli: - setter: - name: ring-name - value: allowed-ring - setBy: package-default - io.k8s.cli.setters.location: - description: location of key ring - x-k8s-cli: - setter: - name: location - value: us-central1 - setBy: package-default - io.k8s.cli.setters.role: - description: IAM role to grant - x-k8s-cli: - setter: - name: role - value: roles/cloudkms.admin - setBy: package-default - io.k8s.cli.setters.iam-member: - description: member to grant role - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER diff --git a/config-connector/solutions/iam/kpt/kms-key-ring/README.md b/config-connector/solutions/iam/kpt/kms-key-ring/README.md deleted file mode 100644 index 35bef88b7f2..00000000000 --- a/config-connector/solutions/iam/kpt/kms-key-ring/README.md +++ /dev/null @@ -1,47 +0,0 @@ -KMS Key Ring -================================================== - -# NAME - kms-key-ring -# SYNOPSIS - Config Connector compatible yaml files for creating a kms key ring and applying a role to it. -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/kms-key-ring kms-key-ring - ``` -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either `roles/cloudkms.admin` or `roles/owner` in the project - managed by Config Connector. - - Cloud Key Management Service (KMS) API enabled in the project where Config - Connector is installed - - Cloud Key Management Service (KMS) API enabled in the project managed by - Config Connector if it is a different project - -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|------------|----------------------|-----------------|----------------------|-------| -| iam-member | ${IAM_MEMBER?} | PLACEHOLDER | member to grant role | 1 | -| location | us-central1 | package-default | location of key ring | 1 | -| ring-name | allowed-ring | package-default | name of key ring | 2 | -| role | roles/cloudkms.admin | package-default | IAM role to grant | 1 | -# USAGE - Set the IAM member that you would like to apply a role to. - ``` - kpt cfg set . iam-member user:name@example.com - ``` - _Optionally_ set the name of the KMS keyring (defaults to `allowed-ring`). - ``` - kpt cfg set . ring-name your-ring-name - ``` - _Optionally_ set the [IAM role](https://cloud.google.com/iam/docs/understanding-roles#cloud-kms-roles) to grant (defaults to `roles/cloudkms.admin`). - ``` - kpt cfg set . role roles/cloudkms.importer - ``` - _Optionally_ set the location of the ring (defaults to `us-central1`) - ``` - kpt cfg set . location us-west1 - ``` -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/kpt/kms-key-ring/iampolicymember.yaml b/config-connector/solutions/iam/kpt/kms-key-ring/iampolicymember.yaml deleted file mode 100644 index 904479ad88f..00000000000 --- a/config-connector/solutions/iam/kpt/kms-key-ring/iampolicymember.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: ring-iam-member -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/cloudkms.admin # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: kms.cnrm.cloud.google.com/v1beta1 - kind: KMSKeyRing - name: allowed-ring # {"$ref":"#/definitions/io.k8s.cli.setters.ring-name"} diff --git a/config-connector/solutions/iam/kpt/kms-key-ring/kmskeyring.yaml b/config-connector/solutions/iam/kpt/kms-key-ring/kmskeyring.yaml deleted file mode 100644 index c459e16568e..00000000000 --- a/config-connector/solutions/iam/kpt/kms-key-ring/kmskeyring.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: kms.cnrm.cloud.google.com/v1beta1 -kind: KMSKeyRing -metadata: - name: allowed-ring # {"$ref":"#/definitions/io.k8s.cli.setters.ring-name"} -spec: - location: us-central1 # {"$ref":"#/definitions/io.k8s.cli.setters.location"} diff --git a/config-connector/solutions/iam/kpt/member-iam/0-namespace.yaml b/config-connector/solutions/iam/kpt/member-iam/0-namespace.yaml deleted file mode 100644 index 0b1cbeef377..00000000000 --- a/config-connector/solutions/iam/kpt/member-iam/0-namespace.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -kind: Namespace -metadata: - annotations: - # Replace the ${PROJECT_ID?} below with your desired project ID. - cnrm.cloud.google.com/project-id: ${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} - name: member-iam-solution diff --git a/config-connector/solutions/iam/kpt/member-iam/Kptfile b/config-connector/solutions/iam/kpt/member-iam/Kptfile deleted file mode 100644 index 161f333a32a..00000000000 --- a/config-connector/solutions/iam/kpt/member-iam/Kptfile +++ /dev/null @@ -1,49 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: . -packageMetadata: - shortDescription: Create a service account and grant it permissions to access the - desired project. -openAPI: - definitions: - io.k8s.cli.setters.project-id: - x-k8s-cli: - setter: - name: project-id - value: ${PROJECT_ID?} - setBy: PLACEHOLDER - description: The target project where you want to create service accounts and - grant permissions. - io.k8s.cli.substitutions.project-id-in-sa-sub: - x-k8s-cli: - substitution: - name: project-id-in-sa-sub - pattern: serviceAccount:SERVICE_ACCOUNT_NAME_SETTER@PROJECT_ID_SETTER.iam.gserviceaccount.com - values: - - marker: PROJECT_ID_SETTER - ref: '#/definitions/io.k8s.cli.setters.project-id' - - marker: SERVICE_ACCOUNT_NAME_SETTER - ref: '#/definitions/io.k8s.cli.setters.service-account-name' - io.k8s.cli.substitutions.project-id-sub: - x-k8s-cli: - substitution: - name: project-id-sub - pattern: projects/PROJECT_ID_SETTER - values: - - marker: PROJECT_ID_SETTER - ref: '#/definitions/io.k8s.cli.setters.project-id' - io.k8s.cli.setters.service-account-name: - x-k8s-cli: - setter: - name: service-account-name - value: member-iam-test - setBy: package-default - description: The name of the new IAM service account. - io.k8s.cli.setters.role: - x-k8s-cli: - setter: - name: role - value: roles/compute.networkAdmin - setBy: package-default - description: The role you want to grant the service account with. diff --git a/config-connector/solutions/iam/kpt/member-iam/README.md b/config-connector/solutions/iam/kpt/member-iam/README.md deleted file mode 100644 index 1d9d1b5969b..00000000000 --- a/config-connector/solutions/iam/kpt/member-iam/README.md +++ /dev/null @@ -1,65 +0,0 @@ -Member IAM -================================================== - -# NAME - - member-iam - -# SYNOPSIS - - Config Connector compatible YAML files to create a service account in your desired project, and grant it a specific role (defaults to `compute.networkAdmin`) in the project. - -# CONSUMPTION - - Using [kpt](https://googlecontainertools.github.io/kpt/): - - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/member-iam member-iam - ``` - -# REQUIREMENTS - - * A working Config Connector cluster using "cnrm-system" service account - that has the following roles in your desired project (it doesn't need to - be the project managed by Config Connector): - - - `roles/resourcemanager.projectIamAdmin` - - `roles/iam.serviceAccountAdmin` - - * Cloud Resource Manager API enabled in the project where Config Connector - is installed - -# USAGE - - Replace `${PROJECT_ID?}` with your desired project ID value from - within this directory: - - ``` - kpt cfg set . project-id VALUE - ``` - - _Optionally_, you can also change the service account name and role - (you can find all the predefined GCP IAM roles - [here](https://cloud.google.com/iam/docs/understanding-roles#predefined_roles)): - - ``` - kpt cfg set . service-account-name VALUE - kpt cfg set . role VALUE - ``` - - Once the fields are set in the configs, apply the YAMLs: - - ``` - kubectl apply -f . - ``` - - You can check the resources you just created: - - ``` - kubectl get iamserviceaccount --namespace member-iam-solution - kubectl get iampolicymember --namespace member-iam-solution - ``` - -# LICENSE - - Apache 2.0 - See [LICENSE](/LICENSE) for more information. \ No newline at end of file diff --git a/config-connector/solutions/iam/kpt/member-iam/iampolicymember.yaml b/config-connector/solutions/iam/kpt/member-iam/iampolicymember.yaml deleted file mode 100644 index 8f320608058..00000000000 --- a/config-connector/solutions/iam/kpt/member-iam/iampolicymember.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: project-iam-member - namespace: member-iam-solution -spec: - # Replace the ${PROJECT_ID?} below with your desired project ID. - member: serviceAccount:member-iam-test@${PROJECT_ID?}.iam.gserviceaccount.com # {"$ref":"#/definitions/io.k8s.cli.substitutions.project-id-in-sa-sub"} - role: roles/compute.networkAdmin # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - # Replace the ${PROJECT_ID?} below with your desired project ID. - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 - kind: Project - external: projects/${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.substitutions.project-id-sub"} diff --git a/config-connector/solutions/iam/kpt/member-iam/iamserviceaccount.yaml b/config-connector/solutions/iam/kpt/member-iam/iamserviceaccount.yaml deleted file mode 100644 index 370aff2f4b5..00000000000 --- a/config-connector/solutions/iam/kpt/member-iam/iamserviceaccount.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMServiceAccount -metadata: - name: member-iam-test # {"$ref":"#/definitions/io.k8s.cli.setters.service-account-name"} - namespace: member-iam-solution diff --git a/config-connector/solutions/iam/kpt/project-iam/Kptfile b/config-connector/solutions/iam/kpt/project-iam/Kptfile deleted file mode 100644 index 78614fcdaa2..00000000000 --- a/config-connector/solutions/iam/kpt/project-iam/Kptfile +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: project-iam -packageMetadata: - shortDescription: configure permissions for a project -openAPI: - definitions: - io.k8s.cli.setters.member: - description: IAM member to grant role - x-k8s-cli: - setter: - name: member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER - io.k8s.cli.setters.role: - description: IAM role to grant - x-k8s-cli: - setter: - name: role - value: roles/logging.viewer - setBy: package-default - io.k8s.cli.setters.project-id: - description: ID of project - x-k8s-cli: - setter: - name: project-id - value: ${PROJECT_ID?} - setBy: PLACEHOLDER - io.k8s.cli.substitutions.project-id-sub: - x-k8s-cli: - substitution: - name: project-id-sub - pattern: projects/PROJECT_ID_SETTER - values: - - marker: PROJECT_ID_SETTER - ref: '#/definitions/io.k8s.cli.setters.project-id' diff --git a/config-connector/solutions/iam/kpt/project-iam/README.md b/config-connector/solutions/iam/kpt/project-iam/README.md deleted file mode 100644 index 60c12e011e8..00000000000 --- a/config-connector/solutions/iam/kpt/project-iam/README.md +++ /dev/null @@ -1,38 +0,0 @@ -Project IAM -================================================== - -# NAME - project-iam -# SYNOPSIS - Config Connector compatible YAML files to grant a role for a member in a project. -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/): - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/project-iam project-iam - ``` -# REQUIREMENTS - * A working Config Connector cluster using "cnrm-system" service account - that has the `roles/resourcemanager.projectIamAdmin` role in your desired - project (it doesn't need to be the project managed by Config Connector). - * The project managed by Config Connector has Cloud Resource Manager API - enabled. -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|------------|----------------------|-----------------|--------------------------|-------| -| member | ${IAM_MEMBER?} | PLACEHOLDER | IAM member to grant role | 1 | -| project-id | ${PROJECT_ID?} | PLACEHOLDER | ID of project | 1 | -| role | roles/logging.viewer | package-default | IAM role to grant | 1 | -# USAGE -Setters marked as `PLACEHOLDER` are required. Set them using kpt: -``` -kpt cfg set . member user:name@example.com -kpt cfg set . project-id your-project -``` -_Optionally_ set the role to grant in the same manner. - -Once the configuration is satisfactory, apply the YAML: -``` -kubectl apply -f . -``` -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/kpt/project-iam/iampolicymember.yaml b/config-connector/solutions/iam/kpt/project-iam/iampolicymember.yaml deleted file mode 100644 index 06ea7fbf1bf..00000000000 --- a/config-connector/solutions/iam/kpt/project-iam/iampolicymember.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: project-iam-member -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.member"} - role: roles/logging.viewer # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 - kind: Project - external: projects/${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.substitutions.project-id-sub"} diff --git a/config-connector/solutions/iam/kpt/pubsub-subscription/Kptfile b/config-connector/solutions/iam/kpt/pubsub-subscription/Kptfile deleted file mode 100644 index 6c80f410a01..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-subscription/Kptfile +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: pubsub-subscription -packageMetadata: - shortDescription: creates a pubsub subscription and configures permissions for it -openAPI: - definitions: - io.k8s.cli.setters.topic-name: - x-k8s-cli: - setter: - name: topic-name - value: allowed-topic - setBy: package-default - description: name of PubSub topic - io.k8s.cli.setters.iam-member: - description: IAM member to grant role - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER - io.k8s.cli.setters.subscription-name: - description: name of PubSub subscription - x-k8s-cli: - setter: - name: subscription-name - value: allowed-subscription - setBy: package-default - io.k8s.cli.setters.role: - description: IAM role to grant - x-k8s-cli: - setter: - name: role - value: roles/pubsub.viewer - setBy: package-default diff --git a/config-connector/solutions/iam/kpt/pubsub-subscription/README.md b/config-connector/solutions/iam/kpt/pubsub-subscription/README.md deleted file mode 100644 index dd43581e2fd..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-subscription/README.md +++ /dev/null @@ -1,44 +0,0 @@ -Pub/Sub Subscription -================================================== -# NAME - pubsub-subscription -# SYNOPSIS - This package creates a pubsub subscription and configures permissions for it by creating an IAMPolicyMember resource. -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/): - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/pubsub-subscription pubsub-subscription - ``` -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either `roles/pubsub.admin` or `roles/owner` in the project - managed by Config Connector - - Cloud Pub/Sub API enabled in the project where Config Connector is - installed - - Cloud Pub/Sub API enabled in the project managed by Config Connector if it - is a different project -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|-------------------|----------------------|-----------------|-----------------------------|-------| -| iam-member | ${IAM_MEMBER?} | PLACEHOLDER | IAM member to grant role | 1 | -| role | roles/pubsub.viewer | package-default | IAM role to grant | 1 | -| subscription-name | allowed-subscription | package-default | name of PubSub subscription | 2 | -| topic-name | allowed-topic | package-default | name of PubSub topic | 2 | -# USAGE - Set the `iam-member` to grant a role to. - ``` - kpt cfg set . iam-member user:name@example.com - ``` - _Optionally_ set the `role` to grant. The default role is `roles/pubsub.viewer`. - ``` - kpt cfg set . role roles/pubsub.editor - ``` - _Optionally_ set `topic-name` and `subscription-name` in the same manner. Defaults are `allowed-topic` and `allowed-subscription`. - - Once the configuration is satisfactory, apply: - ``` - kubectl apply -f . - ``` -# LICENSE -Apache 2.0 - See [LICENSE](/LICENSE) for more information. - diff --git a/config-connector/solutions/iam/kpt/pubsub-subscription/iampolicymember.yaml b/config-connector/solutions/iam/kpt/pubsub-subscription/iampolicymember.yaml deleted file mode 100644 index 9a981694464..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-subscription/iampolicymember.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: subscription-iam-member -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/pubsub.viewer # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 - kind: PubSubSubscription - name: allowed-subscription # {"$ref":"#/definitions/io.k8s.cli.setters.subscription-name"} diff --git a/config-connector/solutions/iam/kpt/pubsub-subscription/pubsubsubscription.yaml b/config-connector/solutions/iam/kpt/pubsub-subscription/pubsubsubscription.yaml deleted file mode 100644 index 896ff306a69..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-subscription/pubsubsubscription.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 -kind: PubSubSubscription -metadata: - name: allowed-subscription # {"$ref":"#/definitions/io.k8s.cli.setters.subscription-name"} -spec: - ackDeadlineSeconds: 15 - messageRetentionDuration: 86400s - retainAckedMessages: false - topicRef: - name: allowed-topic # {"$ref":"#/definitions/io.k8s.cli.setters.topic-name"} diff --git a/config-connector/solutions/iam/kpt/pubsub-subscription/pubsubtopic.yaml b/config-connector/solutions/iam/kpt/pubsub-subscription/pubsubtopic.yaml deleted file mode 100644 index ea6e76790cb..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-subscription/pubsubtopic.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 -kind: PubSubTopic -metadata: - name: allowed-topic # {"$ref":"#/definitions/io.k8s.cli.setters.topic-name"} diff --git a/config-connector/solutions/iam/kpt/pubsub-topic/Kptfile b/config-connector/solutions/iam/kpt/pubsub-topic/Kptfile deleted file mode 100644 index a18b32faf6f..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-topic/Kptfile +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: pubsub-topic -packageMetadata: - shortDescription: Create a PubSub topic and enable IAM roles for it -openAPI: - definitions: - io.k8s.cli.setters.iam-member: - description: identity to grant privileges - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER - io.k8s.cli.setters.topic-name: - description: name of PubSub topic - x-k8s-cli: - setter: - name: topic-name - value: allowed-topic - setBy: package-default - io.k8s.cli.setters.role: - description: IAM role to grant - x-k8s-cli: - setter: - name: role - value: roles/pubsub.editor - setBy: package-default diff --git a/config-connector/solutions/iam/kpt/pubsub-topic/README.md b/config-connector/solutions/iam/kpt/pubsub-topic/README.md deleted file mode 100644 index 5fec87600df..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-topic/README.md +++ /dev/null @@ -1,45 +0,0 @@ -Pub/Sub Topic -================================================== -# NAME - pubsub-topic -# SYNOPSIS - Config Connector compatible YAML files to grant a role to a particular IAM member for a PubSub topic. -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/config-connector/solutions/iam/kpt/pubsub-topic pubsub-topic - ``` -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either `roles/pubsub.admin` or `roles/owner` in the project - managed by Config Connector - - Cloud Pub/Sub API enabled in the project where Config Connector is - installed - - Cloud Pub/Sub API enabled in the project managed by Config Connector if it - is a different project -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|------------|---------------------|-----------------|------------------------------|-------| -| iam-member | ${IAM_MEMBER?} | PLACEHOLDER | identity to grant privileges | 1 | -| role | roles/pubsub.editor | package-default | IAM role to grant | 1 | -| topic-name | allowed-topic | package-default | name of PubSub topic | 2 | -# USAGE - - Replace `${IAM_MEMBER?}` with the GCP identity to grant access to. - ``` - kpt cfg set . iam-member user:name@example.com - ``` - Optionally set the name of the PubSub topic (defaults to `allowed-topic`) and -the role to grant (defaults to `roles/pubsub.editor`, full list of roles -[here](https://cloud.google.com/iam/docs/understanding-roles#pub-sub-roles)) - ``` - kpt cfg set . topic-name your-topic - kpt cfg set . role roles/pubsub.viewer - ``` - Once the values are satisfactory, apply the YAMLs. - ``` - kubectl apply -f . - ``` - Note: This will create the topic if it does not exist. -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/kpt/pubsub-topic/iampolicymember.yaml b/config-connector/solutions/iam/kpt/pubsub-topic/iampolicymember.yaml deleted file mode 100644 index 46cd418503e..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-topic/iampolicymember.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: topic-iam-member -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/pubsub.editor # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 - kind: PubSubTopic - name: allowed-topic # {"$ref":"#/definitions/io.k8s.cli.setters.topic-name"} diff --git a/config-connector/solutions/iam/kpt/pubsub-topic/pubsubtopic.yaml b/config-connector/solutions/iam/kpt/pubsub-topic/pubsubtopic.yaml deleted file mode 100644 index ea6e76790cb..00000000000 --- a/config-connector/solutions/iam/kpt/pubsub-topic/pubsubtopic.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 -kind: PubSubTopic -metadata: - name: allowed-topic # {"$ref":"#/definitions/io.k8s.cli.setters.topic-name"} diff --git a/config-connector/solutions/iam/kpt/service-account/Kptfile b/config-connector/solutions/iam/kpt/service-account/Kptfile deleted file mode 100644 index 899409e4cd9..00000000000 --- a/config-connector/solutions/iam/kpt/service-account/Kptfile +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: . -packageMetadata: - shortDescription: Grant an IAM role to a member for accessing a given service account -openAPI: - definitions: - io.k8s.cli.setters.service-account-name: - x-k8s-cli: - setter: - name: service-account-name - value: service-account-solution - setBy: package-default - description: The name of the new IAM service account. - io.k8s.cli.setters.iam-member: - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER - description: GCP identity to grant the role - io.k8s.cli.setters.role: - x-k8s-cli: - setter: - name: role - value: roles/iam.serviceAccountKeyAdmin - setBy: package-default - description: the IAM role to grant to the member diff --git a/config-connector/solutions/iam/kpt/service-account/README.md b/config-connector/solutions/iam/kpt/service-account/README.md deleted file mode 100644 index 13a014ddc3e..00000000000 --- a/config-connector/solutions/iam/kpt/service-account/README.md +++ /dev/null @@ -1,53 +0,0 @@ -Service Account -================================================== - -# NAME - - service-account - -# SYNOPSIS - - Config Connector compatible YAML files to create a service account in your desired project, and grant a specific member a role (default to `roles/iam.serviceAccountKeyAdmin`) for accessing the service account that just created. - -# CONSUMPTION - - Fetch the [kpt](https://googlecontainertools.github.io/kpt/) package of the solution: - - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/service-account service-account - ``` - -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service account - with either `roles/iam.serviceAccountAdmin` or `roles/owner` in the project - managed by Config Connector. - -# USAGE - Replace `${IAM_MEMBER?}` with the GCP identity to grant access to: - ``` - kpt cfg set . iam-member user:name@example.com - ``` - - _Optionally_, you can change the following fields before you apply the YAMLs: - - the name of the service account: - ``` - kpt cfg set . service-account-name VALUE - ``` - - the role granted to the GCP identity. - (you can find all of the service account related IAM roles - [here](https://cloud.google.com/iam/docs/understanding-roles#service-accounts-roles)): - - ``` - kpt cfg set . role roles/iam.serviceAccountTokenCreator - ``` - - Apply the YAMLs: - - ``` - kubectl apply -f . - ``` - -# LICENSE - - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/kpt/service-account/iampolicymember.yaml b/config-connector/solutions/iam/kpt/service-account/iampolicymember.yaml deleted file mode 100644 index d4b88961926..00000000000 --- a/config-connector/solutions/iam/kpt/service-account/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: iampolicymember-service-account -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/iam.serviceAccountKeyAdmin # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: iam.cnrm.cloud.google.com/v1beta1 - kind: IAMServiceAccount - name: service-account-solution # {"$ref":"#/definitions/io.k8s.cli.setters.service-account-name"} diff --git a/config-connector/solutions/iam/kpt/service-account/iamserviceaccount.yaml b/config-connector/solutions/iam/kpt/service-account/iamserviceaccount.yaml deleted file mode 100644 index 0bfe28b7bd4..00000000000 --- a/config-connector/solutions/iam/kpt/service-account/iamserviceaccount.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMServiceAccount -metadata: - name: service-account-solution # {"$ref":"#/definitions/io.k8s.cli.setters.service-account-name"} diff --git a/config-connector/solutions/iam/kpt/storage-bucket-iam/Kptfile b/config-connector/solutions/iam/kpt/storage-bucket-iam/Kptfile deleted file mode 100644 index bc056b06377..00000000000 --- a/config-connector/solutions/iam/kpt/storage-bucket-iam/Kptfile +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: storage-bucket-iam -packageMetadata: - shortDescription: Configure permissions for a storage bucket -openAPI: - definitions: - io.k8s.cli.setters.iam-member: - description: member to grant role - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER - io.k8s.cli.setters.bucket-name: - description: name of storage bucket - x-k8s-cli: - setter: - name: bucket-name - value: ${BUCKET_NAME?} - setBy: PLACEHOLDER - io.k8s.cli.setters.role: - description: IAM role to grant - x-k8s-cli: - setter: - name: role - value: roles/storage.objectViewer - setBy: package-default diff --git a/config-connector/solutions/iam/kpt/storage-bucket-iam/README.md b/config-connector/solutions/iam/kpt/storage-bucket-iam/README.md deleted file mode 100644 index 747349e1b97..00000000000 --- a/config-connector/solutions/iam/kpt/storage-bucket-iam/README.md +++ /dev/null @@ -1,45 +0,0 @@ -Storage Bucket IAM -================================================== -# NAME - storage-bucket-iam -# SYNOPSIS - Config Connector compatible yaml to enable permissions for a storage bucket. -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/storage-bucket-iam storage-bucket-iam - ``` -# REQUIREMENTS -- A working Config Connector instance. -- A storage bucket managed by [IAM](https://cloud.google.com/storage/docs/access-control#using_permissions_with_acls). -- The "cnrm-system" service account with `roles/storage.admin` in either - the storage bucket or the project which owns the storage bucket. - - Note: Using [uniform bucket-level access control](https://cloud.google.com/storage/docs/uniform-bucket-level-access) is recommended for this package. -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|-------------|----------------------------|-----------------|------------------------|-------| -| bucket-name | ${BUCKET_NAME?} | PLACEHOLDER | name of storage bucket | 1 | -| iam-member | ${IAM_MEMBER?} | PLACEHOLDER | member to grant role | 1 | -| role | roles/storage.objectViewer | package-default | IAM role to grant | 1 | -# USAGE - Set the name of the bucket you want to configure permissions for. - ``` - kpt cfg set . bucket-name your-bucket - ``` - Set the IAM member to grant a role to. - ``` - kpt cfg set . iam-member user:name@example.com - ``` - Optionally, set the [storage - role](https://cloud.google.com/iam/docs/understanding-roles#storage-roles) (defaults to - `roles/storage.objectViewer`) that you want to apply and the IAM member the role will apply to. - ``` - kpt cfg set . role roles/storage.admin - ``` - Once the configuration is satisfactory, apply: - ``` - kubectl apply -f . - ``` -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/kpt/storage-bucket-iam/iampolicymember.yaml b/config-connector/solutions/iam/kpt/storage-bucket-iam/iampolicymember.yaml deleted file mode 100644 index 54e0a93515f..00000000000 --- a/config-connector/solutions/iam/kpt/storage-bucket-iam/iampolicymember.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: storage-bucket-iam-member -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/storage.objectViewer # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: storage.cnrm.cloud.google.com/v1beta1 - kind: StorageBucket - external: ${BUCKET_NAME?} # {"$ref":"#/definitions/io.k8s.cli.setters.bucket-name"} diff --git a/config-connector/solutions/iam/kpt/subnet/Kptfile b/config-connector/solutions/iam/kpt/subnet/Kptfile deleted file mode 100644 index 57c0fb8d594..00000000000 --- a/config-connector/solutions/iam/kpt/subnet/Kptfile +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: subnet -packageMetadata: - shortDescription: Create a subnet and grant a specific member a role to a member - for the subnet -openAPI: - definitions: - io.k8s.cli.setters.subnet-name: - x-k8s-cli: - setter: - name: subnet-name - value: subnet-solution - setBy: package-default - description: The name of the new subnet. - io.k8s.cli.setters.subnet-region: - x-k8s-cli: - setter: - name: subnet-region - value: us-central1 - setBy: package-default - description: The region of the new subnet. - io.k8s.cli.setters.compute-network-name: - x-k8s-cli: - setter: - name: compute-network-name - value: compute-network-example - setBy: package-default - description: The name of a existing GCP compute network for which you want to - create the subnet. - io.k8s.cli.setters.iam-member: - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER - description: GCP identity to grant the role - io.k8s.cli.setters.role: - x-k8s-cli: - setter: - name: role - value: roles/compute.networkUser - setBy: package-default - description: the IAM role to grant to the member diff --git a/config-connector/solutions/iam/kpt/subnet/README.md b/config-connector/solutions/iam/kpt/subnet/README.md deleted file mode 100644 index c0a79a87da6..00000000000 --- a/config-connector/solutions/iam/kpt/subnet/README.md +++ /dev/null @@ -1,69 +0,0 @@ -Subnet -================================================== - -# NAME - - subnet - -# SYNOPSIS - - Config Connector compatible YAML files to create a subnet in your desired project, and grant a specific member a role (default to `roles/compute.networkUser`) for accessing the subnet that just created. - -# CONSUMPTION - - Fetch the [kpt](https://googlecontainertools.github.io/kpt/) package of the solution: - - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/iam/kpt/subnet subnet - ``` - -# REQUIREMENTS - - - A working Config Connector instance using the "cnrm-system" service - account with either both `roles/compute.networkAdmin` and - `roles/iam.securityAdmin` roles or `roles/owner` in the project - managed by Config Connector. - - Compute Engine API enabled in the project where Config Connector is - installed - - Compute Engine API enabled in the project managed by Config Connector if - it is a different project - -# USAGE - Replace `${IAM_MEMBER?}` with the GCP identity to grant access to: - ``` - kpt cfg set . iam-member user:name@example.com - ``` - - _Optionally_, you can change the following fields before you apply the YAMLs: - - the name of the compute network - ``` - kpt cfg set . compute-network-name VALUE - ``` - - - the name of the subnet - ``` - kpt cfg set . subnet-name new-subnet-name - ``` - - - the region of the subnet - ``` - kpt cfg set . subnet-region us-west1 - ``` - - - the role granted to the GCP identity. - (you can find all of the subnet related IAM roles - [here](https://cloud.google.com/iam/docs/understanding-roles#compute-engine-roles)): - - ``` - kpt cfg set . role roles/compute.networkViewer - ``` - - Apply the YAMLs: - - ``` - kubectl apply -f . - ``` - -# LICENSE - - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/iam/kpt/subnet/computenetwork.yaml b/config-connector/solutions/iam/kpt/subnet/computenetwork.yaml deleted file mode 100644 index 98d37363b00..00000000000 --- a/config-connector/solutions/iam/kpt/subnet/computenetwork.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeNetwork -metadata: - name: compute-network-example # {"$ref":"#/definitions/io.k8s.cli.setters.compute-network-name"} -spec: - routingMode: REGIONAL - autoCreateSubnetworks: false diff --git a/config-connector/solutions/iam/kpt/subnet/iampolicymember.yaml b/config-connector/solutions/iam/kpt/subnet/iampolicymember.yaml deleted file mode 100644 index ba90a0a419e..00000000000 --- a/config-connector/solutions/iam/kpt/subnet/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: iampolicymember-subnet -spec: - member: ${IAM_MEMBER?} # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/compute.networkUser # {"$ref":"#/definitions/io.k8s.cli.setters.role"} - resourceRef: - apiVersion: compute.cnrm.cloud.google.com/v1beta1 - kind: ComputeSubnetwork - name: subnet-solution # {"$ref":"#/definitions/io.k8s.cli.setters.subnet-name"} diff --git a/config-connector/solutions/iam/kpt/subnet/subnet.yaml b/config-connector/solutions/iam/kpt/subnet/subnet.yaml deleted file mode 100644 index 7e703d7c9e0..00000000000 --- a/config-connector/solutions/iam/kpt/subnet/subnet.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeSubnetwork -metadata: - name: subnet-solution # {"$ref":"#/definitions/io.k8s.cli.setters.subnet-name"} -spec: - ipCidrRange: "10.0.0.0/9" - region: us-central1 # {"$ref":"#/definitions/io.k8s.cli.setters.subnet-region"} - privateIpGoogleAccess: false - networkRef: - name: compute-network-example # {"$ref":"#/definitions/io.k8s.cli.setters.compute-network-name"} - logConfig: - aggregationInterval: INTERVAL_10_MIN - flowSampling: 0.5 - metadata: INCLUDE_ALL_METADATA diff --git a/config-connector/solutions/networking/helm/autoneg/README.md b/config-connector/solutions/networking/helm/autoneg/README.md deleted file mode 100644 index 04fe7a9f1eb..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/README.md +++ /dev/null @@ -1,194 +0,0 @@ -# Autoneg - -================================================== - -## NAME - - autoneg - -## SYNOPSIS - -Autoneg solution uses network endpoint groups to provision load balancing across multiple clusters. -This solution uses `./cluster/templates/autoneg.yaml` from [gke-autoneg-controller](https://github.com/GoogleCloudPlatform/gke-autoneg-controller). -For demonstration purposes it uses a docker image with a simple Node.js service (bulankou/node-hello-world) with a single endpoint that prints out a message. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the autoneg folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/networking/helm/autoneg - ``` - -## REQUIREMENTS - -1. [Helm](../../../README.md#helm) -1. GKE Cluster with Config Connector. This solution assumes that all resources are installed in the same project, where the cluster with Config Connector is installed, and that load balancing resources are installed on the same cluster where Config Connector is installed. If you would like to configure your resources in a different project, the easiest approach would be to give your Config Connector service account (`cnrm-system`) owner permissions on this target project. -1. If your Config Connector version is earlier than [1.12.0](https://github.com/GoogleCloudPlatform/k8s-config-connector/releases) you need to apply [this workaround](https://github.com/GoogleCloudPlatform/k8s-config-connector/issues/78#issuecomment-577285402) to `iampolicymembers.iam.cnrm.cloud.google.com` CRD. -1. `compute.googleapis.com`, `container.googleapis.com` and `cloudresourcemanager.googleapis.com` APIs should be enabled on the project managed by Config Connector, in addition to the default services enabled. - -## USAGE - -All steps are run from this directory. - -1. Create the clusters. - - Review and update the values in `./clusters/values.yaml`. Note that if you change cluster name and location, you will need to change how they are used in `gcloud container clusters get-credentials` commands below. [PROJECT_ID] refers to the project where all the GCP resources will be created. - - ```bash - # validate your chart - helm lint ./clusters/ --set projectId=[PROJECT_ID] - - # check the output of your chart - helm template ./clusters/ --set projectId=[PROJECT_ID] - - # install your chart - helm install ./clusters/ --set projectId=[PROJECT_ID] --generate-name - ``` - -1. Create load balancing resources. - - Review and update the values in `./lb/values.yaml`. [PROJECT_ID] refers to the project where all the GCP resources will be created. - - ```bash - # validate your chart - helm lint ./lb/ --set projectId=[PROJECT_ID] - - # check the output of your chart - helm template ./lb/ --set projectId=[PROJECT_ID] - - # install your chart - helm install ./lb/ --set projectId=[PROJECT_ID] --generate-name - ``` - -1. Wait for clusters to be created - - ```bash - # The command uses cluster names based on the values passed in the earlier step - kubectl wait --for=condition=Ready containercluster/cluster-na containercluster/cluster-eu - ``` - -1. Configure first cluster - - ```bash - # switch the context to the first cluster. The command uses cluster name and zone based on the values used to create the clusters. - gcloud container clusters get-credentials cluster-na --zone=us-central1-b - - # validate your chart - helm lint ./workload/ --set projectId=[PROJECT_ID] --set localMessage="Hello from North America\!" - - # install your chart - helm install ./workload/ --set projectId=[PROJECT_ID] --set localMessage="Hello from North America\!" --generate-name - - # annotate service account - kubectl annotate sa -n autoneg-system default iam.gke.io/gcp-service-account=autoneg-system@[PROJECT_ID].iam.gserviceaccount.com - - # ensure pods are ready - kubectl wait --for=condition=Ready pods --all - - # check the service and ensure that `anthos.cft.dev/autoneg-status` annotation is present in the output - kubectl get svc node-app-backend -o=jsonpath='{.metadata.annotations}' - ``` - -1. Repeat the step for the other cluster - - ```bash - # switch the context to the second cluster. The command uses cluster name and zone based on the values used to create the clusters. - gcloud container clusters get-credentials cluster-eu --zone=europe-west2-a - - # validate your chart - helm lint ./workload/ --set projectId=[PROJECT_ID] --set localMessage="Hello from Europe\!" - - - # install your chart - helm install ./workload/ --set projectId=[PROJECT_ID] --set localMessage="Hello from Europe\!" --generate-name - - # annotate service account - kubectl annotate sa -n autoneg-system default iam.gke.io/gcp-service-account=autoneg-system@[PROJECT_ID].iam.gserviceaccount.com - - # ensure pods are ready - kubectl wait --for=condition=Ready pods --all - - # check the service and ensure that `anthos.cft.dev/autoneg-status` annotation is present in the output - kubectl get svc node-app-backend -o=jsonpath='{.metadata.annotations}' - ``` - -1. Switch the context to the cluster that contains the configs for load balancing resources and run verify that multi-cluster ingress is configured - - ```bash - # switch the context to the main cluster - gcloud container clusters get-credentials [CLUSTER NAME] --zone=[CLUSTER ZONE] - - # if you created the load balancing resources in the namespace, other than default, switch the context to that namespace - kubectl config set-context --current --namespace [NAMESPACE] - - # verify that your backend service has 2 backends attached (select index of "global" if prompted) - gcloud compute backend-services describe node-app-backend-service - ``` - - The backends section of the output should list both backends, for example: - - ```yaml - backends: - - balancingMode: RATE - capacityScaler: 1.0 - group: https://www.googleapis.com/compute/v1/projects//zones/us-central1-b/networkEndpointGroups/k8s1-37f1db7d-default-node-app-backend-80-486adca6 - maxRatePerEndpoint: 100.0 - - balancingMode: RATE - capacityScaler: 1.0 - group: https://www.googleapis.com/compute/v1/projects//zones/europe-west2-a/networkEndpointGroups/k8s1-292a63d7-default-node-app-backend-80-636c84c5 - maxRatePerEndpoint: 100.0 - connectionDraining: - drainingTimeoutSec: 300 - ``` - - Verify that load balancing resources are forwarding the request to the backend: - - ```bash - # curl the external address of the forwarding rule. Note that it might take around 5-10 minutes for load balancing to start working. - # You will see the message ("Hello from North America!" or "Hello from Europe!" based on your location). - curl $(kubectl get computeforwardingrule -o=jsonpath='{.items[0].spec.ipAddress.addressRef.external}') - -1. Clean up the installation: - - ```bash - # switch the context to the first cluster. The command uses cluster name and zone based on the values used to create the clusters. - gcloud container clusters get-credentials cluster-na --zone=us-central1-b - - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. Note that can take a few minutes before all K8s resources are fully deleted. - helm delete [release_name] - - # switch the context to the second cluster. The command uses cluster name and zone based on the values used to create the clusters. - gcloud container clusters get-credentials cluster-eu --zone=europe-west2-a - - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. Note that can take a few minutes before all K8s resources are fully deleted. - helm delete [release_name] - - # switch the context to the cluster that contains the configs for load balancing resources - gcloud container clusters get-credentials [CLUSTER NAME] --zone=[CLUSTER ZONE] - - # if you created the load balancing resources in the namespace, other than default, switch the context to that namespace - kubectl config set-context --current --namespace [NAMESPACE] - - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. Note that can take a few minutes before all K8s resources are fully deleted. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. \ No newline at end of file diff --git a/config-connector/solutions/networking/helm/autoneg/clusters/Chart.yaml b/config-connector/solutions/networking/helm/autoneg/clusters/Chart.yaml deleted file mode 100644 index 0951d3644b0..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/clusters/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -appVersion: "1.0" -description: A Helm chart to deploy the clusters for for GCP autoneg solution -name: gcp-autoneg-clusters -version: 0.1.0 -icon: https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Globe_icon.svg/1024px-Globe_icon.svg.png diff --git a/config-connector/solutions/networking/helm/autoneg/clusters/templates/gcp-cluster-1.yaml b/config-connector/solutions/networking/helm/autoneg/clusters/templates/gcp-cluster-1.yaml deleted file mode 100644 index 367718fcb7c..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/clusters/templates/gcp-cluster-1.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: container.cnrm.cloud.google.com/v1beta1 -kind: ContainerCluster -metadata: - name: {{ required "name is required!" .Values.cluster1.name }} -spec: - location: {{ required "location is required!" .Values.cluster1.zone }} - initialNodeCount: 2 - loggingService: logging.googleapis.com/kubernetes - monitoringService: monitoring.googleapis.com/kubernetes - ipAllocationPolicy: - servicesIpv4CidrBlock: "" - nodeConfig: - oauthScopes: - - "https://www.googleapis.com/auth/cloud-platform" - workloadIdentityConfig: - identityNamespace: '{{ required "identityNamespace is required!" .Values.projectId }}.svc.id.goog' - masterAuth: - username: '{{ required "username is required!" .Values.cluster1.masterAuthUser }}' - password: - valueFrom: - secretKeyRef: - name: cluster-1-secret-pwd - key: password - clientCertificateConfig: - issueClientCertificate: false diff --git a/config-connector/solutions/networking/helm/autoneg/clusters/templates/gcp-cluster-2.yaml b/config-connector/solutions/networking/helm/autoneg/clusters/templates/gcp-cluster-2.yaml deleted file mode 100644 index b689f4f985b..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/clusters/templates/gcp-cluster-2.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: container.cnrm.cloud.google.com/v1beta1 -kind: ContainerCluster -metadata: - name: {{ required "name is required!" .Values.cluster2.name }} -spec: - location: {{ required "location is required!" .Values.cluster2.zone }} - initialNodeCount: 2 - loggingService: logging.googleapis.com/kubernetes - monitoringService: monitoring.googleapis.com/kubernetes - ipAllocationPolicy: - servicesIpv4CidrBlock: "" - nodeConfig: - oauthScopes: - - "https://www.googleapis.com/auth/cloud-platform" - workloadIdentityConfig: - identityNamespace: '{{ required "identityNamespace is required!" .Values.projectId }}.svc.id.goog' - masterAuth: - username: '{{ required "username is required!" .Values.cluster2.masterAuthUser }}' - password: - valueFrom: - secretKeyRef: - name: cluster-2-secret-pwd - key: password - clientCertificateConfig: - issueClientCertificate: false diff --git a/config-connector/solutions/networking/helm/autoneg/clusters/templates/k8s-cluster-1-secret-pwd.yaml b/config-connector/solutions/networking/helm/autoneg/clusters/templates/k8s-cluster-1-secret-pwd.yaml deleted file mode 100644 index aaec97ea8a0..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/clusters/templates/k8s-cluster-1-secret-pwd.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -kind: Secret -metadata: - name: cluster-1-secret-pwd -stringData: - password: {{ required "password is required!" .Values.cluster1.masterAuthPwd }} diff --git a/config-connector/solutions/networking/helm/autoneg/clusters/templates/k8s-cluster-2-secret-pwd.yaml b/config-connector/solutions/networking/helm/autoneg/clusters/templates/k8s-cluster-2-secret-pwd.yaml deleted file mode 100644 index 2b998f59bac..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/clusters/templates/k8s-cluster-2-secret-pwd.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -kind: Secret -metadata: - name: cluster-2-secret-pwd -stringData: - password: {{ required "password is required!" .Values.cluster2.masterAuthPwd }} diff --git a/config-connector/solutions/networking/helm/autoneg/clusters/values.yaml b/config-connector/solutions/networking/helm/autoneg/clusters/values.yaml deleted file mode 100644 index cb708fb7326..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/clusters/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -projectId: -cluster1: - name: cluster-na - zone: us-central1-b - masterAuthUser: user - masterAuthPwd: password12345678 -cluster2: - name: cluster-eu - zone: europe-west2-a - masterAuthUser: user - masterAuthPwd: password12345678 diff --git a/config-connector/solutions/networking/helm/autoneg/lb/Chart.yaml b/config-connector/solutions/networking/helm/autoneg/lb/Chart.yaml deleted file mode 100644 index 6260cb11e2b..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -appVersion: "1.0" -description: A Helm chart to deploy load balancing resources for GCP autoneg solution -name: gcp-autoneg-lb -version: 0.1.0 -icon: https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Globe_icon.svg/1024px-Globe_icon.svg.png diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-backend-service.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-backend-service.yaml deleted file mode 100644 index 66c8e4b6524..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-backend-service.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeBackendService -metadata: - name: node-app-backend-service -spec: - healthChecks: - - healthCheckRef: - name: node-app-backend-healthcheck - protocol: HTTP - location: global - diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-firewall.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-firewall.yaml deleted file mode 100644 index 594187eccc9..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-firewall.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeFirewall -metadata: - name: fw-allow-autoneg -spec: - allow: - - protocol: tcp - sourceRanges: - - "130.211.0.0/22" - - "35.191.0.0/16" - networkRef: - name: default - diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-forwarding-rule.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-forwarding-rule.yaml deleted file mode 100644 index 3867e4c0a0c..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-forwarding-rule.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeForwardingRule -metadata: - name: node-app-forwarding-rule -spec: - target: - targetHTTPProxyRef: - name: node-app-target-proxy - portRange: "80" - ipProtocol: "TCP" - ipVersion: "IPV4" - location: global - diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-health-check.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-health-check.yaml deleted file mode 100644 index b6a031d8f06..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-compute-health-check.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeHealthCheck -metadata: - name: node-app-backend-healthcheck -spec: - checkIntervalSec: 10 - tcpHealthCheck: - port: 8080 - location: global - diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-custom-role-autoneg.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-custom-role-autoneg.yaml deleted file mode 100644 index e9bf02f8b46..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-custom-role-autoneg.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMCustomRole -metadata: - name: autonegrole -spec: - title: Autoneg role - permissions: - - compute.backendServices.get - - compute.backendServices.update - - compute.networkEndpointGroups.use - - compute.healthChecks.useReadOnly diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-default-network.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-default-network.yaml deleted file mode 100644 index 09621376fe3..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-default-network.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeNetwork -metadata: - name: default - annotations: - cnrm.cloud.google.com/deletion-policy: abandon -spec: - description: Default network for the project - diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-policy-autoneg-custom.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-policy-autoneg-custom.yaml deleted file mode 100644 index f78c941868e..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-policy-autoneg-custom.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: iampolicymember-autoneg-custom -spec: - member: serviceAccount:autoneg-system@{{ required "projectId is required!" .Values.projectId }}.iam.gserviceaccount.com - role: projects/{{ required "projectId is required!" .Values.projectId }}/roles/autonegrole - resourceRef: - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 - kind: Project - external: projects/{{ required "projectId is required!" .Values.projectId }} diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-policy-autoneg-wi.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-policy-autoneg-wi.yaml deleted file mode 100644 index 59f8a1580ce..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-policy-autoneg-wi.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicy -metadata: - name: iampolicy-autoneg-workloadidentity -spec: - resourceRef: - apiVersion: iam.cnrm.cloud.google.com/v1beta1 - kind: IAMServiceAccount - name: autoneg-system - bindings: - - role: roles/iam.workloadIdentityUser - members: - - serviceAccount:{{ required "projectId is required!" .Values.projectId }}.svc.id.goog[autoneg-system/default] - diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-service-account-autoneg.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-service-account-autoneg.yaml deleted file mode 100644 index 1b7511a2c32..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-service-account-autoneg.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMServiceAccount -metadata: - name: autoneg-system -spec: - displayName: Autoneg Service Account diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-target-http-proxy.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-target-http-proxy.yaml deleted file mode 100644 index 58950a7be75..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-target-http-proxy.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeTargetHTTPProxy -metadata: - name: node-app-target-proxy -spec: - description: Proxy for node app - urlMapRef: - name: node-app-url-map - location: global - diff --git a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-url-map.yaml b/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-url-map.yaml deleted file mode 100644 index 6bda422e1e6..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/templates/gcp-url-map.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeURLMap -metadata: - name: node-app-url-map - labels: - retry: again -spec: - defaultService: - backendServiceRef: - name: node-app-backend-service - location: global - diff --git a/config-connector/solutions/networking/helm/autoneg/lb/values.yaml b/config-connector/solutions/networking/helm/autoneg/lb/values.yaml deleted file mode 100644 index 8ecefc53f10..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/lb/values.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -projectId: -region: us-central1 diff --git a/config-connector/solutions/networking/helm/autoneg/workload/Chart.yaml b/config-connector/solutions/networking/helm/autoneg/workload/Chart.yaml deleted file mode 100644 index da5f60a24f6..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/workload/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -appVersion: "1.0" -description: A Helm chart to deploy example workload configuration for GCP autoneg solution -name: gcp-autoneg-workload -version: 0.1.0 -icon: https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Globe_icon.svg/1024px-Globe_icon.svg.png diff --git a/config-connector/solutions/networking/helm/autoneg/workload/templates/autoneg.yaml b/config-connector/solutions/networking/helm/autoneg/workload/templates/autoneg.yaml deleted file mode 100644 index a609d36df60..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/workload/templates/autoneg.yaml +++ /dev/null @@ -1,208 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -kind: Namespace -metadata: - labels: - control-plane: controller-manager - name: autoneg-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: autoneg-leader-election-role - namespace: autoneg-system -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - "" - resources: - - configmaps/status - verbs: - - get - - update - - patch -- apiGroups: - - "" - resources: - - events - verbs: - - create ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: autoneg-manager-role -rules: -- apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - "" - resources: - - services/status - verbs: - - get - - update - - patch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: autoneg-proxy-role -rules: -- apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create -- apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: autoneg-leader-election-rolebinding - namespace: autoneg-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: autoneg-leader-election-role -subjects: -- kind: ServiceAccount - name: default - namespace: autoneg-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: autoneg-manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: autoneg-manager-role -subjects: -- kind: ServiceAccount - name: default - namespace: autoneg-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: autoneg-proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: autoneg-proxy-role -subjects: -- kind: ServiceAccount - name: default - namespace: autoneg-system ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - prometheus.io/port: "8443" - prometheus.io/scheme: https - prometheus.io/scrape: "true" - labels: - control-plane: controller-manager - name: autoneg-controller-manager-metrics-service - namespace: autoneg-system -spec: - ports: - - name: https - port: 8443 - targetPort: https - selector: - control-plane: controller-manager ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - control-plane: controller-manager - name: autoneg-controller-manager - namespace: autoneg-system -spec: - replicas: 1 - selector: - matchLabels: - control-plane: controller-manager - template: - metadata: - labels: - control-plane: controller-manager - spec: - containers: - - args: - - --secure-listen-address=0.0.0.0:8443 - - --upstream=http://127.0.0.1:8080/ - - --logtostderr=true - - --v=10 - image: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0 - name: kube-rbac-proxy - ports: - - containerPort: 8443 - name: https - - args: - - --metrics-addr=127.0.0.1:8080 - - --enable-leader-election - command: - - /manager - image: gcr.io/soell-labs/gke-autoneg-controller:latest - name: manager - resources: - limits: - cpu: 100m - memory: 30Mi - requests: - cpu: 100m - memory: 20Mi - terminationGracePeriodSeconds: 10 diff --git a/config-connector/solutions/networking/helm/autoneg/workload/templates/deployment.yaml b/config-connector/solutions/networking/helm/autoneg/workload/templates/deployment.yaml deleted file mode 100644 index fe6b942c09f..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/workload/templates/deployment.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: node-app-deployment - labels: - app: node-app -spec: - replicas: 3 - selector: - matchLabels: - app: node-app - template: - metadata: - labels: - app: node-app - spec: - containers: - - name: node-app-container - image: bulankou/node-hello-world - env: - - name: HELLO_MESSAGE - value: {{ .Values.localMessage}} - ports: - - containerPort: 8080 - readinessProbe: - httpGet: - path: / - port: 8080 - initialDelaySeconds: 10 - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 10 - successThreshold: 1 - livenessProbe: - httpGet: - path: / - port: 8080 - initialDelaySeconds: 10 - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 20 - successThreshold: 1 diff --git a/config-connector/solutions/networking/helm/autoneg/workload/templates/service.yaml b/config-connector/solutions/networking/helm/autoneg/workload/templates/service.yaml deleted file mode 100644 index cf58828afa5..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/workload/templates/service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -kind: Service -metadata: - name: node-app-backend - annotations: - cloud.google.com/neg: '{"exposed_ports": {"80":{}}}' - anthos.cft.dev/autoneg: '{"name":"node-app-backend-service", "max_rate_per_endpoint":100}' -spec: - type: ClusterIP - selector: - app: node-app - ports: - - port: 80 - targetPort: 8080 diff --git a/config-connector/solutions/networking/helm/autoneg/workload/values.yaml b/config-connector/solutions/networking/helm/autoneg/workload/values.yaml deleted file mode 100644 index 63a08b0d606..00000000000 --- a/config-connector/solutions/networking/helm/autoneg/workload/values.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -projectId: -localMessage: diff --git a/config-connector/solutions/projects/helm/owned-project/Chart.yaml b/config-connector/solutions/projects/helm/owned-project/Chart.yaml deleted file mode 100644 index f813dc220ce..00000000000 --- a/config-connector/solutions/projects/helm/owned-project/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: owned-project -version: 0.1.0 -description: create a project in a folder binding an IAM member as project owner diff --git a/config-connector/solutions/projects/helm/owned-project/README.md b/config-connector/solutions/projects/helm/owned-project/README.md deleted file mode 100644 index 4474dfeaf46..00000000000 --- a/config-connector/solutions/projects/helm/owned-project/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# Owned Project -================================================== - -## NAME - - owned-project - -## SYNOPSIS - - Config Connector compatible YAML files to create - a project in a folder, binding an IAM member - as project owner. - -## CONSUMPTION - -1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - -1. Go to the owned-project folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/projects/helm/owned-project - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) -1. The "cnrm-system" service account assigned with - - `roles/resourcemanager.folderViewer` - - `roles/resourcemanager.projectCreator` - - `roles/iam.securityAdmin` - in the target folder -1. The IAM member selected below must meet the requirements specified - [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy#top_of_page). - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/projects/helm/owned-project](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm, with all values replaced with the ones you desire. - - ```bash - # validate your chart - helm lint . --set billingID=BILLING_ID,folderID=FOLDER_ID,iamMember=user:name@example.com,projectID=PROJECT_ID - - # check the output of your chart - helm template . --set billingID=BILLING_ID,folderID=FOLDER_ID,iamMember=user:name@example.com,projectID=PROJECT_ID - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set billingID=BILLING_ID,folderID=FOLDER_ID,iamMember=user:name@example.com,projectID=PROJECT_ID --generate-name - - # install your chart - helm install . --set billingID=BILLING_ID,folderID=FOLDER_ID,iamMember=user:name@example.com,projectID=PROJECT_ID --generate-name - ``` - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - - Check the status of the project, where `PROJECT_ID` is the project ID value you gave above: - ```bash - kubectl describe gcpproject PROJECT_ID - ``` - - Check the status of the IAM Policy Member: - ```bash - kubectl describe iampolicymember owned-project-iampolicymember - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/projects/helm/owned-project/templates/iampolicymember.yaml b/config-connector/solutions/projects/helm/owned-project/templates/iampolicymember.yaml deleted file mode 100644 index 7526a5c0b74..00000000000 --- a/config-connector/solutions/projects/helm/owned-project/templates/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: owned-project-iampolicymember -spec: - member: {{ required "IAM member is required!" .Values.iamMember }} - role: roles/owner - resourceRef: - name: {{ required "Project ID is required!" .Values.projectID }} - kind: Project - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 diff --git a/config-connector/solutions/projects/helm/owned-project/templates/project.yaml b/config-connector/solutions/projects/helm/owned-project/templates/project.yaml deleted file mode 100644 index a0e179e5685..00000000000 --- a/config-connector/solutions/projects/helm/owned-project/templates/project.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Project -metadata: - annotations: - cnrm.cloud.google.com/folder-id: {{ required "Folder ID is required!" .Values.folderID | quote }} - name: {{ required "Project ID is required!" .Values.projectID }} -spec: - name: {{ required "Project ID is required!" .Values.projectID }} - billingAccountRef: - external: {{ required "Billing ID is required!" .Values.billingID | quote }} diff --git a/config-connector/solutions/projects/helm/owned-project/values.yaml b/config-connector/solutions/projects/helm/owned-project/values.yaml deleted file mode 100644 index f592ec03d70..00000000000 --- a/config-connector/solutions/projects/helm/owned-project/values.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -billingID: -folderID: -iamMember: -projectID: diff --git a/config-connector/solutions/projects/helm/project-hierarchy/README.md b/config-connector/solutions/projects/helm/project-hierarchy/README.md deleted file mode 100644 index b6028afcbef..00000000000 --- a/config-connector/solutions/projects/helm/project-hierarchy/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# Project Hierarchy -================================================== - -## NAME - - project-hierarchy - -## SYNOPSIS - - Config Connector compatible YAML files to create - a folder in an organization, and a project - beneath it. - -## CONSUMPTION - -1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - -1. Go to the project-hierarchy folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/projects/helm/project-hierarchy - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) -1. The "cnrm-system" service account assigned with - - `roles/resourcemanager.folderCreator` - - `roles/resourcemanager.projectCreator` - in the target organization - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/projects/helm/project-hierarchy](.)). - -1. Review and update the values in `./folder/values.yaml` and `./project/values.yaml`, except folderID, which you will find in a later step. - -1. Install the folder Helm chart: - - ```bash - # validate your chart - helm lint ./folder - - # do a dryrun on your chart and address issues if there are any - helm install ./folder --dry-run --generate-name - - # install your chart - helm install ./folder --generate-name - ``` - -1. Check the created helm release to verify the installation: - - ```bash - helm list - ``` - - Check the status of the folder you just created: - ```bash - kubectl describe gcpfolder project-hierarchy-folder - ``` - -1. Find the ID of the created folder. If you replaced the `folderName` value in step 1, replace `project-hierarchy-folder` below with the value you chose: - - ```bash - kubectl describe gcpfolder project-hierarchy-folder | grep Name:\ *folders\/ | sed "s/.*folders\///" - ``` - -1. Update `./project/values.yaml` with this folderID value. - -1. Install the project helm chart: - - ```bash - # validate your chart - helm lint ./project - - # do a dryrun on your chart and address issues if there are any - helm install ./project --dry-run --generate-name - - # install your chart - helm install ./project --generate-name - ``` - -1. Clean up the installations: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete releases specifying release names from the previous command output. - helm delete [release_name] - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/projects/helm/project-hierarchy/folder/Chart.yaml b/config-connector/solutions/projects/helm/project-hierarchy/folder/Chart.yaml deleted file mode 100644 index 1fd83abea0c..00000000000 --- a/config-connector/solutions/projects/helm/project-hierarchy/folder/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: new-folder -version: 0.1.0 -description: create a folder in an organization diff --git a/config-connector/solutions/projects/helm/project-hierarchy/folder/templates/folder.yaml b/config-connector/solutions/projects/helm/project-hierarchy/folder/templates/folder.yaml deleted file mode 100644 index f498947892f..00000000000 --- a/config-connector/solutions/projects/helm/project-hierarchy/folder/templates/folder.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Folder -metadata: - annotations: - cnrm.cloud.google.com/organization-id: {{ required "Organization ID is required!" .Values.orgID | quote }} - name: {{ .Values.folderName }} -spec: - displayName: {{ .Values.folderName }} diff --git a/config-connector/solutions/projects/helm/project-hierarchy/folder/values.yaml b/config-connector/solutions/projects/helm/project-hierarchy/folder/values.yaml deleted file mode 100644 index 317514ec405..00000000000 --- a/config-connector/solutions/projects/helm/project-hierarchy/folder/values.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -folderName: project-hierarchy-folder -orgID: diff --git a/config-connector/solutions/projects/helm/project-hierarchy/project/Chart.yaml b/config-connector/solutions/projects/helm/project-hierarchy/project/Chart.yaml deleted file mode 100644 index b81033eea68..00000000000 --- a/config-connector/solutions/projects/helm/project-hierarchy/project/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: project-hierarchy -version: 0.1.0 -description: create project in a folder diff --git a/config-connector/solutions/projects/helm/project-hierarchy/project/templates/project.yaml b/config-connector/solutions/projects/helm/project-hierarchy/project/templates/project.yaml deleted file mode 100644 index a0e179e5685..00000000000 --- a/config-connector/solutions/projects/helm/project-hierarchy/project/templates/project.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Project -metadata: - annotations: - cnrm.cloud.google.com/folder-id: {{ required "Folder ID is required!" .Values.folderID | quote }} - name: {{ required "Project ID is required!" .Values.projectID }} -spec: - name: {{ required "Project ID is required!" .Values.projectID }} - billingAccountRef: - external: {{ required "Billing ID is required!" .Values.billingID | quote }} diff --git a/config-connector/solutions/projects/helm/project-hierarchy/project/values.yaml b/config-connector/solutions/projects/helm/project-hierarchy/project/values.yaml deleted file mode 100644 index 0e23b39e89d..00000000000 --- a/config-connector/solutions/projects/helm/project-hierarchy/project/values.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -folderID: -billingID: -projectID: diff --git a/config-connector/solutions/projects/helm/project-services/Chart.yaml b/config-connector/solutions/projects/helm/project-services/Chart.yaml deleted file mode 100644 index e1e57f0b2f8..00000000000 --- a/config-connector/solutions/projects/helm/project-services/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: project-services -version: 0.1.0 -description: Enable a service on a desired project diff --git a/config-connector/solutions/projects/helm/project-services/README.md b/config-connector/solutions/projects/helm/project-services/README.md deleted file mode 100644 index f4e58b86905..00000000000 --- a/config-connector/solutions/projects/helm/project-services/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Project Services - -================================================== - -## NAME - - project-services - -## SYNOPSIS - - Config Connector compatible YAML files to enable services on a desired project. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the project-services folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/projects/helm/project-services - ``` - -## REQUIREMENTS - -1. GKE Cluster with [Config Connector installed using a GKE Workload Identity](https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall#workload-identity). - -1. Cloud Resource Manager API enabled in the project where Config Connector is installed. - -1. The "cnrm-system" service account that has the `roles/serviceusage.serviceUsageAdmin` or `roles/owner` role in your desired project. - -1. [Helm](../../../README.md#helm) - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/projects/helm/project-services](.)). - -1. Review and update the values in `./values.yaml`. - -1. Create a namespace. If you want to use your existing namespace skip this step and use your own namespace name instead of `project-annotated` in all other steps. - - ```bash - kubectl create namespace project-annotated - ``` - -1. Validate and install the sample with Helm. `PROJECT_ID` should be the project ID of the desired project. - - ```bash - # validate your chart - helm lint . --set ProjectID=PROJECT_ID --namespace project-annotated - - # check the output of your chart - helm template . --set ProjectID=PROJECT_ID --namespace project-annotated - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set ProjectID=PROJECT_ID --namespace project-annotated --generate-name - - # install your chart - helm install . --set ProjectID=PROJECT_ID --namespace project-annotated --generate-name - ``` - -1. _Optionally_ set `Service.Name` in the same manner. - - ```bash - helm install . --set ProjectID=PROJECT_ID,Service.Name=compute.googleapis.com - ``` - - The package-default value will enable [Firebase](https://firebase.google.com/docs). - -1. Check the created helm release to verify the installation: - - ```bash - helm list - ``` - - Check the status of the applied YAML by specifying namespace: - - ```bash - kubectl describe gcpservice --namespace project-annotated - ``` - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/projects/helm/project-services/templates/service.yaml b/config-connector/solutions/projects/helm/project-services/templates/service.yaml deleted file mode 100644 index fa4fe3bc26c..00000000000 --- a/config-connector/solutions/projects/helm/project-services/templates/service.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 -kind: Service -metadata: - annotations: - cnrm.cloud.google.com/project-id: {{ .Values.ProjectID }} - name: {{ .Values.Service.Name }} diff --git a/config-connector/solutions/projects/helm/project-services/values.yaml b/config-connector/solutions/projects/helm/project-services/values.yaml deleted file mode 100644 index f023dae8ff4..00000000000 --- a/config-connector/solutions/projects/helm/project-services/values.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -ProjectID: - -Service: - Name: firebasehosting.googleapis.com diff --git a/config-connector/solutions/projects/helm/simple-project/Chart.yaml b/config-connector/solutions/projects/helm/simple-project/Chart.yaml deleted file mode 100644 index 14105799c48..00000000000 --- a/config-connector/solutions/projects/helm/simple-project/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: simple-project -version: 0.1.0 -description: Create a project in an organization diff --git a/config-connector/solutions/projects/helm/simple-project/README.md b/config-connector/solutions/projects/helm/simple-project/README.md deleted file mode 100644 index 3b0d6a56b5b..00000000000 --- a/config-connector/solutions/projects/helm/simple-project/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Simple Project - -================================================== - -## NAME - - simple-project - -## SYNOPSIS - - Config Connector compatible YAML files to create a project in an organization. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the simple-project folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/projects/helm/simple-project - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). - -1. A working Config Connector cluster using the "cnrm-system" service account with _minimally_ the permissions given by the following role in the desired organization: - - `roles/resourcemanager.projectCreator` - -1. [Helm](../../../README.md#helm) - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/projects/helm/simple-project](.)). - -1. Review and update the values in `./values.yaml`. - -1. Validate and install the sample with Helm. `ORG_ID` should be your organization ID, `PROJECT_ID` should be a new project ID unique within GCS, and `BILLING_ID` should be your desired billing ID for the new project. - - ```bash - # validate your chart - helm lint . --set billingID=BILLING_ID,orgID=ORG_ID,projectID=PROJECT_ID - - # check the output of your chart - helm template . --set billingID=BILLING_ID,orgID=ORG_ID,projectID=PROJECT_ID - - # do a dryrun on your chart and address issues if there are any - helm install . --dry-run --set billingID=BILLING_ID,orgID=ORG_ID,projectID=PROJECT_ID --generate-name - - # install your chart - helm install . --set billingID=BILLING_ID,orgID=ORG_ID,projectID=PROJECT_ID --generate-name - ``` - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - - Check the status of the applied YAML: - ```bash - kubectl describe gcpprojects PROJECT_ID - ``` - where `PROJECT_ID` is your project ID above. - -1. Clean up the installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/projects/helm/simple-project/templates/project.yaml b/config-connector/solutions/projects/helm/simple-project/templates/project.yaml deleted file mode 100644 index 6437f34dda6..00000000000 --- a/config-connector/solutions/projects/helm/simple-project/templates/project.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Project -metadata: - annotations: - cnrm.cloud.google.com/organization-id: {{ required "Organization ID is required!" .Values.orgID | quote }} - name: {{ required "Project ID is required!" .Values.projectID }} -spec: - name: {{ required "Project ID is required!" .Values.projectID }} - billingAccountRef: - external: {{ required "Billing ID is required!" .Values.billingID | quote}} diff --git a/config-connector/solutions/projects/helm/simple-project/values.yaml b/config-connector/solutions/projects/helm/simple-project/values.yaml deleted file mode 100644 index b185db3a7ea..00000000000 --- a/config-connector/solutions/projects/helm/simple-project/values.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -billingID: -orgID: -projectID: diff --git a/config-connector/solutions/projects/kpt/owned-project/Kptfile b/config-connector/solutions/projects/kpt/owned-project/Kptfile deleted file mode 100644 index ceb31a522f6..00000000000 --- a/config-connector/solutions/projects/kpt/owned-project/Kptfile +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: owned-project -packageMetadata: - shortDescription: Create a project under a folder and grant the owner role for the - project -openAPI: - definitions: - io.k8s.cli.setters.project-id: - description: ID of project - x-k8s-cli: - setter: - name: project-id - value: ${PROJECT_ID?} - setBy: PLACEHOLDER - io.k8s.cli.setters.billing-account: - description: ID of project billing account - x-k8s-cli: - setter: - name: billing-account - value: ${BILLING_ACCOUNT_ID?} - setBy: PLACEHOLDER - io.k8s.cli.setters.folder-id: - description: numeric GCP ID of folder - x-k8s-cli: - setter: - name: folder-id - value: "${FOLDER_ID?}" - setBy: PLACEHOLDER - io.k8s.cli.setters.iam-member: - description: cloud identity name to give project owner permission to - x-k8s-cli: - setter: - name: iam-member - value: ${IAM_MEMBER?} - setBy: PLACEHOLDER diff --git a/config-connector/solutions/projects/kpt/owned-project/README.md b/config-connector/solutions/projects/kpt/owned-project/README.md deleted file mode 100644 index 88122827e94..00000000000 --- a/config-connector/solutions/projects/kpt/owned-project/README.md +++ /dev/null @@ -1,56 +0,0 @@ -Owned Project -================================================== - -# NAME - - owned-project - -# SYNOPSIS - - Config Connector compatible YAML files to create - a project in a folder, binding an IAM member - as project owner. - -# CONSUMPTION - - Fetch the package using [kpt](https://googlecontainertools.github.io/kpt/). - - `kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/projects/kpt/owned-project owned-project` - -# REQUIREMENTS - - - A working Config Connector cluster using the cnrm-system service account - with the following roles in the target folder: - - `roles/resourcemanager.folderViewer` - - `roles/resourcemanager.projectCreator` - - `roles/iam.securityAdmin` - - The IAM member meets the requirements specified - [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy#top_of_page). - -# USAGE - - Replace the - `${BILLING_ACCOUNT_ID?}` value. - From within this directory, run - ``` - kpt cfg set . billing-account VALUE - ``` - replacing `VALUE` with your billing account - ID. - - Replace the `${FOLDER_ID?}`, `${IAM_MEMBER?}`, and `${PROJECT_ID?}` values the same way, using: - ``` - kpt cfg set . folder-id VALUE - kpt cfg set . iam-member VALUE - kpt cfg set . project-id VALUE - ``` - where the folder-id `VALUE` is the numeric folder ID of the folder to create the new project under, the iam-member `VALUE` is the fully qualified IAM name of target member, e.g. "user:me@example.com", and the project-id `VALUE` is the globally unique name you want your project to have. - - Now you can fully apply this solution. - ``` - kubectl apply -f . - ``` - -# LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/projects/kpt/owned-project/iampolicymember.yaml b/config-connector/solutions/projects/kpt/owned-project/iampolicymember.yaml deleted file mode 100644 index 4862d3eb44a..00000000000 --- a/config-connector/solutions/projects/kpt/owned-project/iampolicymember.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: iam.cnrm.cloud.google.com/v1beta1 -kind: IAMPolicyMember -metadata: - name: owned-project-iampolicymember -spec: - member: "${IAM_MEMBER?}" # {"$ref":"#/definitions/io.k8s.cli.setters.iam-member"} - role: roles/owner - resourceRef: - name: ${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} - kind: Project - apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 diff --git a/config-connector/solutions/projects/kpt/owned-project/project.yaml b/config-connector/solutions/projects/kpt/owned-project/project.yaml deleted file mode 100644 index a09c603f8a6..00000000000 --- a/config-connector/solutions/projects/kpt/owned-project/project.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Project -metadata: - annotations: - # Set this field after finding the folder number. - cnrm.cloud.google.com/folder-id: "${FOLDER_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.folder-id"} - name: ${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} -spec: - name: ${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} - billingAccountRef: - # Replace "${BILLING_ACCOUNT_ID?}" with the numeric ID for your billing account - external: "${BILLING_ACCOUNT_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.billing-account"} diff --git a/config-connector/solutions/projects/kpt/project-hierarchy/Kptfile b/config-connector/solutions/projects/kpt/project-hierarchy/Kptfile deleted file mode 100644 index 3906abbbd44..00000000000 --- a/config-connector/solutions/projects/kpt/project-hierarchy/Kptfile +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: project-hierarchy -packageMetadata: - shortDescription: Deploy a project under a folder within an organization -openAPI: - definitions: - io.k8s.cli.setters.org-id: - description: organization ID for associated services - x-k8s-cli: - setter: - name: org-id - value: "${ORG_ID}" - setBy: PLACEHOLDER - io.k8s.cli.setters.project-id: - description: ID of project - x-k8s-cli: - setter: - name: project-id - value: project-hierarchy-project - setBy: package-default - io.k8s.cli.setters.folder-name: - description: name of folder - x-k8s-cli: - setter: - name: folder-name - value: project-hierarchy-folder - setBy: package-default - io.k8s.cli.setters.billing-account: - description: ID of billing account - x-k8s-cli: - setter: - name: billing-account - value: ${BILLING_ACCOUNT_ID?} - setBy: PLACEHOLDER - io.k8s.cli.setters.folder-number: - description: numeric GCP ID of folder - x-k8s-cli: - setter: - name: folder-number - value: "${FOLDER_NUMBER?}" - setBy: PLACEHOLDER diff --git a/config-connector/solutions/projects/kpt/project-hierarchy/README.md b/config-connector/solutions/projects/kpt/project-hierarchy/README.md deleted file mode 100644 index 875ed1d5125..00000000000 --- a/config-connector/solutions/projects/kpt/project-hierarchy/README.md +++ /dev/null @@ -1,90 +0,0 @@ -Project Hierarchy -================================================== - -# NAME - - project-hierarchy - -# SYNOPSIS - - Config Connector compatible YAML files to create - a folder in an organization, and a project - beneath it. - -# CONSUMPTION - - Using [kpt](https://googlecontainertools.github.io/kpt/): - - Run `kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/projects/kpt/project-hierarchy project-hierarchy`. - -# REQUIREMENTS - - A working Config Connector cluster using a - service account with the following roles in - the organization: - - `roles/resourcemanager.folderCreator` - - `roles/resourcemanager.projectCreator` - -# USAGE - - Replace the - `${BILLING_ACCOUNT_ID?}` and `${ORG_ID?}` values: - - From within this directory, run - ``` - kpt cfg set . billing-account VALUE - ``` - and - ``` - kpt cfg set . org-id VALUE - ``` - replacing `VALUE` with your billing account - and organization ID respectively. - - You will also need to reset the project ID, - since a project with the given ID already exists. - ``` - kpt cfg set . project-id VALUE - ``` - - - Currently, to create a project under a - folder, you must supply a numeric folder ID, - which is only available after the folder is - created. An issue outlining this shortfall in - Config Connector functionality is filed on the - project's GitHub, - https://github.com/GoogleCloudPlatform/k8s-config-connector/issues/104. - - - To be nested beneath it, the project still needs - a folder number. This can only be found after - creating the folder. You can do so with - ``` - kubectl apply -f folder.yaml - ``` - - Wait for GCP to generate the folder. - ``` - kubectl wait --for=condition=Ready -f folder.yaml - ``` - - Now extract the folder number. - ``` - FOLDER_NUMBER=$(kubectl describe -f folder.yaml | grep Name:\ *folders\/ | sed "s/.*folders\///") - ``` - You can set the folder number using the - following command: - ``` - kpt cfg set . folder-number $FOLDER_NUMBER --set-by "README-instructions" - ``` - - - Now you can fully apply this solution. - ``` - kubectl apply -f . - ``` - -# LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/projects/kpt/project-hierarchy/folder.yaml b/config-connector/solutions/projects/kpt/project-hierarchy/folder.yaml deleted file mode 100644 index e5cf7938a0a..00000000000 --- a/config-connector/solutions/projects/kpt/project-hierarchy/folder.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Folder -metadata: - annotations: - # Replace "${ORG_ID?}" with the numeric ID for your organization - cnrm.cloud.google.com/organization-id: "${ORG_ID}" # {"$ref":"#/definitions/io.k8s.cli.setters.org-id"} - name: project-hierarchy-folder # {"$ref":"#/definitions/io.k8s.cli.setters.folder-name"} -spec: - displayName: project-hierarchy-folder # {"$ref":"#/definitions/io.k8s.cli.setters.folder-name"} diff --git a/config-connector/solutions/projects/kpt/project-hierarchy/project.yaml b/config-connector/solutions/projects/kpt/project-hierarchy/project.yaml deleted file mode 100644 index d209efbdf70..00000000000 --- a/config-connector/solutions/projects/kpt/project-hierarchy/project.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Project -metadata: - annotations: - # Set this field after finding the folder number. - cnrm.cloud.google.com/folder-id: "${FOLDER_NUMBER?}" # {"$ref":"#/definitions/io.k8s.cli.setters.folder-number"} - name: project-hierarchy-project # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} -spec: - name: project-hierarchy-project # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} - billingAccountRef: - # Replace "${BILLING_ACCOUNT_ID?}" with the numeric ID for your billing account - external: "${BILLING_ACCOUNT_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.billing-account"} diff --git a/config-connector/solutions/projects/kpt/project-services/0-namespace.yaml b/config-connector/solutions/projects/kpt/project-services/0-namespace.yaml deleted file mode 100644 index 1837bc93ee8..00000000000 --- a/config-connector/solutions/projects/kpt/project-services/0-namespace.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Namespace -metadata: - annotations: - # Replace the ${PROJECT_ID?} below with your desired project ID. - cnrm.cloud.google.com/project-id: ${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} - name: project-annotated diff --git a/config-connector/solutions/projects/kpt/project-services/Kptfile b/config-connector/solutions/projects/kpt/project-services/Kptfile deleted file mode 100644 index 14a9b535124..00000000000 --- a/config-connector/solutions/projects/kpt/project-services/Kptfile +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: project-services -packageMetadata: - shortDescription: enables a service on a project -openAPI: - definitions: - io.k8s.cli.setters.service-name: - description: API service name - x-k8s-cli: - setter: - name: service-name - value: firebasehosting.googleapis.com - setBy: package-default - io.k8s.cli.setters.project-id: - description: ID of project - x-k8s-cli: - setter: - name: project-id - value: ${PROJECT_ID?} - setBy: PLACEHOLDER diff --git a/config-connector/solutions/projects/kpt/project-services/README.md b/config-connector/solutions/projects/kpt/project-services/README.md deleted file mode 100644 index b1d0b273268..00000000000 --- a/config-connector/solutions/projects/kpt/project-services/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Project Services -================================================== -# NAME - project-services -# SYNOPSIS - Config Connector compatible YAML files to enable services on a project. -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/projects/kpt/project-services project-services - ``` -# REQUIREMENTS - A working cluster with Config Connector installed. - - The "cnrm-system" service account must have -`roles/serviceusage.serviceUsageAdmin` or `roles/owner` for the desired project. -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|--------------|--------------------------------|-----------------|------------------|-------| -| project-id | ${PROJECT_ID?} | PLACEHOLDER | ID of project | 1 | -| service-name | firebasehosting.googleapis.com | package-default | API service name | 1 | -# USAGE - - Set project-id to the ID of the project to enable services for. - ``` - kpt cfg set . project-id your-project-id - ``` - _Optionally_, change the service name before applying the service. For example, to enable -[Compute Engine](https://cloud.google.com/compute/docs): - ``` - kpt cfg set . service-name compute.googleapis.com - ``` - The package-default value will enable -[Firebase](https://firebase.google.com/docs). - - Once your configuration is complete, simply apply: - ``` - kubectl apply -f . - ``` - Note: services that have been applied will have type `gcpservice` and be in the `project-annotated` namespace. -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/projects/kpt/project-services/service.yaml b/config-connector/solutions/projects/kpt/project-services/service.yaml deleted file mode 100644 index eb8b9356a82..00000000000 --- a/config-connector/solutions/projects/kpt/project-services/service.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 -kind: Service -metadata: - namespace: project-annotated - name: firebasehosting.googleapis.com # {"$ref":"#/definitions/io.k8s.cli.setters.service-name"} diff --git a/config-connector/solutions/projects/kpt/shared-vpc/0-namespace.yaml b/config-connector/solutions/projects/kpt/shared-vpc/0-namespace.yaml deleted file mode 100644 index 96607be6e34..00000000000 --- a/config-connector/solutions/projects/kpt/shared-vpc/0-namespace.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Namespace -metadata: - annotations: - # Replace the ${HOST_PROJECT_ID?} below with your desired project ID for VPC host. - cnrm.cloud.google.com/project-id: ${HOST_PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.host-project"} - name: shared-vpc-host-project-annotated ---- -apiVersion: v1 -kind: Namespace -metadata: - annotations: - # Replace the ${SERVICE_PROJECT_ID?} below with your desired project ID for VPC service. - cnrm.cloud.google.com/project-id: ${SERVICE_PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.service-project"} - name: shared-vpc-service-project-annotated diff --git a/config-connector/solutions/projects/kpt/shared-vpc/Kptfile b/config-connector/solutions/projects/kpt/shared-vpc/Kptfile deleted file mode 100644 index af73fe25688..00000000000 --- a/config-connector/solutions/projects/kpt/shared-vpc/Kptfile +++ /dev/null @@ -1,51 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: shared-vpc -packageMetadata: - shortDescription: create a VPC network inside a host project to be consumed from - within a service project -openAPI: - definitions: - io.k8s.cli.setters.host-project: - description: ID of host project - x-k8s-cli: - setter: - name: host-project - value: ${HOST_PROJECT_ID?} - setBy: PLACEHOLDER - io.k8s.cli.setters.service-project: - description: ID of project using network - x-k8s-cli: - setter: - name: service-project - value: ${SERVICE_PROJECT_ID?} - setBy: PLACEHOLDER - io.k8s.cli.setters.billing-account: - description: ID of billing account - x-k8s-cli: - setter: - name: billing-account - value: "${BILLING_ACCOUNT_ID?}" - setBy: PLACEHOLDER - io.k8s.cli.setters.network-name: - description: name of VPC network - x-k8s-cli: - setter: - name: network-name - value: sharedvpcnetwork - setBy: package-default - io.k8s.cli.setters.org-id: - description: ID of organization - x-k8s-cli: - setter: - name: org-id - value: "${ORG_ID?}" - setBy: PLACEHOLDER - io.k8s.cli.setters.default-namespace: - description: namespace where solution will be applied - x-k8s-cli: - setter: - name: default-namespace - value: ${DEFAULT_NAMESPACE?} - setBy: PLACEHOLDER diff --git a/config-connector/solutions/projects/kpt/shared-vpc/README.md b/config-connector/solutions/projects/kpt/shared-vpc/README.md deleted file mode 100644 index 7ba9f6adcd1..00000000000 --- a/config-connector/solutions/projects/kpt/shared-vpc/README.md +++ /dev/null @@ -1,82 +0,0 @@ -Shared VPC Network -================================================== - -# NAME - - shared-vpc - -# SYNOPSIS - - Config Connector YAML files to create a VPC network inside a - host project to be consumed from within a service project. - -## Consumption - - Download the package using [kpt](https://googlecontainertools.github.io/kpt/): - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/projects/kpt/shared-vpc . - ``` - -## Requirements - - A working cluster with Config Connector installed. - - The "cnrm-system" service account, which must have: - - `roles/resourcemanager.projectCreator` in the target organization if service and -host projects do not yet exist, or the `owner` role in the projects if they already exist. - - `roles/compute.xpnAdmin` in the target organization - - `roles/billing.user` in the target billing account - - Cloud Billing and Cloud Resource Manager APIs enabled in the project managed by Config Connector - -## Usage - Set the ID for billing account, host project, service project, and organization: - ``` - kpt cfg set . billing-account VALUE - kpt cfg set . host-project VALUE - kpt cfg set . service-project VALUE - kpt cfg set . org-id VALUE - ``` - Set the default namespace setter to reflect the namespace you will apply the solution YAMLs to. This may be the namespace you set [here](https://cloud.google.com/config-connector/docs/how-to/setting-default-namespace). - ``` - kpt cfg set . default-namespace VALUE - ``` - where `VALUE` is the name of the namespace you found to be applicable above. - - _Optionally,_ you can also change the name of the VPC network, from the default value of `sharedvpcnetwork`. - - Once your configuration is complete, simply apply: - ``` - kubectl apply -f . - ``` - - You can check the applied resources by running the following command: - ``` - kubectl get -f . - ``` - - **Note:** To see the applied resources for a given namespace, run - `kubectl get gcp --namespace `, where `` is replaced by - the corresponding namespace in the `0-namespace.yaml` file. You'll need to use - type `gcpservice` to check the status of Service resources defined in - `service.yaml`. - - If you want to clean up the resources, run; - ``` - kubectl delete -f . - ``` - - **Note:** If `computesharedvpchostproject` can't be deleted with - the error message `Cannot disable project as a shared VPC host because it has - active service projects.` but `computesharedvpcserviceproject` is already - deleted, you'll need to [manually detach]( - https://cloud.google.com/vpc/docs/deprovisioning-shared-vpc#detach_service_projects) - the service project (specificed using kpt setter `service-project`) from the - host project (specified using kpt setter `host-project`). More details about - the root cause can be found in [this GitHub issue]( - https://github.com/GoogleCloudPlatform/k8s-config-connector/issues/167). - - -# License - - Apache 2.0 - See [LICENSE](/LICENSE) for more information. - diff --git a/config-connector/solutions/projects/kpt/shared-vpc/computesharedvpchostproject.yaml b/config-connector/solutions/projects/kpt/shared-vpc/computesharedvpchostproject.yaml deleted file mode 100644 index d34b91fbceb..00000000000 --- a/config-connector/solutions/projects/kpt/shared-vpc/computesharedvpchostproject.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeSharedVPCHostProject -metadata: - namespace: shared-vpc-host-project-annotated - name: computesharedvpchostproject - # This resource will enable the project this namespace is bound to as a Shared - # VPC host. You should only create one of these resources per project. If you - # have multiple namespaces mapping to the same project, ensure that only one - # ComputeSharedVPCHostProject resource exists across these namespaces. diff --git a/config-connector/solutions/projects/kpt/shared-vpc/computesharedvpcserviceproject.yaml b/config-connector/solutions/projects/kpt/shared-vpc/computesharedvpcserviceproject.yaml deleted file mode 100644 index ff93e822b26..00000000000 --- a/config-connector/solutions/projects/kpt/shared-vpc/computesharedvpcserviceproject.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeSharedVPCServiceProject -metadata: - namespace: shared-vpc-host-project-annotated - name: computesharedvpcserviceproject -spec: - projectRef: - # Replace the ${DEFAULT_NAMESPACE?} below with your default namespace. - namespace: ${DEFAULT_NAMESPACE?} # {"$ref":"#/definitions/io.k8s.cli.setters.default-namespace"} - # Replace the ${SERVICE_PROJECT_ID?} below with your desired project ID for VPC service. - name: ${SERVICE_PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.service-project"} diff --git a/config-connector/solutions/projects/kpt/shared-vpc/network.yaml b/config-connector/solutions/projects/kpt/shared-vpc/network.yaml deleted file mode 100644 index a7bcf2236cd..00000000000 --- a/config-connector/solutions/projects/kpt/shared-vpc/network.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeNetwork -metadata: - namespace: shared-vpc-host-project-annotated - name: sharedvpcnetwork # {"$ref":"#/definitions/io.k8s.cli.setters.network-name"} -spec: - routingMode: GlOBAL - autoCreateSubnetworks: true diff --git a/config-connector/solutions/projects/kpt/shared-vpc/project.yaml b/config-connector/solutions/projects/kpt/shared-vpc/project.yaml deleted file mode 100644 index aa4f292aa95..00000000000 --- a/config-connector/solutions/projects/kpt/shared-vpc/project.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Project -metadata: - annotations: - cnrm.cloud.google.com/organization-id: "${ORG_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.org-id"} - name: ${HOST_PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.host-project"} -spec: - # This name can be changed to something more human-readable if desired. - name: ${HOST_PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.host-project"} - billingAccountRef: - # Replace "${BILLING_ACCOUNT_ID?}" with the numeric ID for your billing account - external: "${BILLING_ACCOUNT_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.billing-account"} ---- -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Project -metadata: - annotations: - cnrm.cloud.google.com/organization-id: "${ORG_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.org-id"} - name: ${SERVICE_PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.service-project"} -spec: - # This name can be changed to something more human-readable if desired. - name: ${SERVICE_PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.service-project"} - billingAccountRef: - # Replace "${BILLING_ACCOUNT_ID?}" with the numeric ID for your billing account - external: "${BILLING_ACCOUNT_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.billing-account"} diff --git a/config-connector/solutions/projects/kpt/shared-vpc/service.yaml b/config-connector/solutions/projects/kpt/shared-vpc/service.yaml deleted file mode 100644 index 06969a1e416..00000000000 --- a/config-connector/solutions/projects/kpt/shared-vpc/service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 -kind: Service -metadata: - namespace: shared-vpc-host-project-annotated - name: compute.googleapis.com - annotations: - cnrm.cloud.google.com/deletion-policy: abandon ---- -apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 -kind: Service -metadata: - namespace: shared-vpc-service-project-annotated - name: compute.googleapis.com - annotations: - cnrm.cloud.google.com/deletion-policy: abandon diff --git a/config-connector/solutions/projects/kpt/simple-project/Kptfile b/config-connector/solutions/projects/kpt/simple-project/Kptfile deleted file mode 100644 index dda20e75b41..00000000000 --- a/config-connector/solutions/projects/kpt/simple-project/Kptfile +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: simple-project -packageMetadata: - shortDescription: A simple project -openAPI: - definitions: - io.k8s.cli.setters.org-id: - description: organization ID for associated services - x-k8s-cli: - setter: - name: org-id - value: "${ORG_ID?}" - setBy: PLACEHOLDER - io.k8s.cli.setters.project-id: - description: ID of project - x-k8s-cli: - setter: - name: project-id - value: ${PROJECT_ID?} - setBy: PLACEHOLDER - io.k8s.cli.setters.billing-account: - description: ID of billing account - x-k8s-cli: - setter: - name: billing-account - value: "${BILLING_ACCOUNT_ID?}" - setBy: PLACEHOLDER diff --git a/config-connector/solutions/projects/kpt/simple-project/README.md b/config-connector/solutions/projects/kpt/simple-project/README.md deleted file mode 100644 index 58a626933b8..00000000000 --- a/config-connector/solutions/projects/kpt/simple-project/README.md +++ /dev/null @@ -1,49 +0,0 @@ -Simple Project -================================================== - -# NAME - - simple-project - -# SYNOPSIS - - Config Connector compatible YAML files to create a project in an organization. - -# CONSUMPTION - Using kpt: - ``` - BASE=https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - kpt pkg get $BASE/config-connector/solutions/projects/kpt/simple-project simple-project - ``` - -# REQUIREMENTS - A working cluster with Config Connector installed. - - Cloud Resource Manager API and Cloud Billing API enabled in the project where Config Connector is installed. - - The "cnrm-system" service account must have `roles/resourcemanager.projectCreator` in your organization and `roles/billing.user` for your billing account. - -# USAGE - In order to use, replace the `${PROJECT_ID?}`, `${BILLING_ACCOUNT_ID?}` and - `${ORG_ID?}` values with a unique new project ID, your billing account and - your organization id. You can do this with kpt setters: - ``` - kpt cfg set . project-id VALUE - kpt cfg set . billing-account VALUE - kpt cfg set . org-id VALUE - ``` - - Note: Updating the project-id will set both the project's ID and name to the - same value, if you want a different value for project name, edit - `project.yaml` and replace spec.name with your preferred project name. - - Once your information is in the configs, simply apply. - - ``` - kubectl apply -f . - ``` - -# License - - Apache 2.0 - See [LICENSE](/LICENSE) for more information. - diff --git a/config-connector/solutions/projects/kpt/simple-project/project.yaml b/config-connector/solutions/projects/kpt/simple-project/project.yaml deleted file mode 100644 index 9e4048806ff..00000000000 --- a/config-connector/solutions/projects/kpt/simple-project/project.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 -kind: Project -metadata: - annotations: - cnrm.cloud.google.com/organization-id: "${ORG_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.org-id"} - name: ${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} -spec: - # This name can be changed to something more human-readable if desired. - name: ${PROJECT_ID?} # {"$ref":"#/definitions/io.k8s.cli.setters.project-id"} - billingAccountRef: - # Replace "${BILLING_ACCOUNT_ID?}" with the numeric ID for your billing account - external: "${BILLING_ACCOUNT_ID?}" # {"$ref":"#/definitions/io.k8s.cli.setters.billing-account"} diff --git a/config-connector/solutions/sql/helm/mysql-private/README.md b/config-connector/solutions/sql/helm/mysql-private/README.md deleted file mode 100644 index 1803e6a81fa..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/README.md +++ /dev/null @@ -1,113 +0,0 @@ -# MySQL Private - -================================================== - -## NAME - - mysql-private - -## SYNOPSIS - - Config Connector compatible YAML files for creating a MySQL instance on a private network. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the service account folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/sql/helm/mysql-private - ``` - -## REQUIREMENTS - -1. GKE Cluster with Config Connector and [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster). -1. [Helm](../../../README.md#helm) -1. A working Config Connector instance. -1. The following APIs enabled in the project where Config Connector is installed: - - Cloud SQL Admin API - - Compute Engine API -1. The following APIs enabled in the project managed by Config Connector: - - Cloud SQL Admin API - - Compute Engine API - - Service Networking API - - Cloud Resource Manager API -1. The "cnrm-system" service account with either both `roles/cloudsql.admin` and - `roles/compute.networkAdmin` roles or `roles/owner` in the project managed by Config Connector. - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/sql/helm/mysql-private](.)). - -1. Review and update the values in `./sql/values.yaml`. - -1. install and check the private network with Helm. - - Due to the bug in Config Connector ([more details](https://github.com/GoogleCloudPlatform/k8s-config-connector/issues/148)), the following resources must be in a ready state before the SQLInstance YAML is applied: - - `ComputeNetwork` - - `ComputeAddress` - - `ServiceNetworkingConnection` - - ```bash - # Do a dryrun on your chart and address issues if there are any - helm install ./network --dry-run --generate-name - - # install network chart - helm install ./network - - # Meke sure wait Status of ComputeNetwork,ComputeAddress,ServiceNetworkingConnection is Ready - kubectl describe ComputeNetwork,ComputeAddress,ServiceNetworkingConnection - ``` - -1. install and check the MySQL instance on private network with Helm. - - ```bash - # validate your chart - helm lint ./sql --set SQLUser.Name=username,SQLUser.Password=$(echo -n 'your-password' | base64) - - # check the output of your chart - helm template ./sql --set SQLUser.Name=username,SQLUser.Password=$(echo -n 'your-password' | base64) - - # Do a dryrun on your chart and address issues if there are any - helm install ./sql --dry-run --set SQLUser.Name=username,SQLUser.Password=$(echo -n 'your-password' | base64) --generate-name - - # install your chart - helm install ./sql --set SQLUser.Name=username,SQLUser.Password=$(echo -n 'your-password' | base64) --generate-name - ``` - -1. _Optionally_ set `Database.Name`, `MySQLInstance.Name`, and `MySQLInstance.Region` in the same -manner. Note that if your instance is deleted the name you used will be -reserved for 7 days. You will need to use a new name in order to re-create the -instance: - ```bash - # install your chart with custom changes - helm install ./sql --set SQLUser.Name=username,SQLUser.Password=$(echo -n 'your-password' | base64),Database.Name=mysql-private-databasename,MySQLInstance.Name=mysql-private-instancename,MySQLInstance.Region=us-west1 --generate-name - ``` - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - Check the status of the sqlinstances,sqldatabase,sqlusers: - ```bash - kubectl describe sqlinstances,sqldatabase,sqlusers - ``` - -1. Clean up both installation: - - ```bash - # list Helm releases to obtain release name - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/sql/helm/mysql-private/network/Chart.yaml b/config-connector/solutions/sql/helm/mysql-private/network/Chart.yaml deleted file mode 100644 index 648d6192c1c..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/network/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: private-network-for-mysql -version: 0.1.0 -description: Creating a private network for MySQL instance diff --git a/config-connector/solutions/sql/helm/mysql-private/network/templates/computeaddress.yaml b/config-connector/solutions/sql/helm/mysql-private/network/templates/computeaddress.yaml deleted file mode 100644 index fa32cf3bc21..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/network/templates/computeaddress.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeAddress -metadata: - name: mysql-private-address -spec: - addressType: INTERNAL - location: global - purpose: VPC_PEERING - prefixLength: 16 - networkRef: - name: mysql-private-network diff --git a/config-connector/solutions/sql/helm/mysql-private/network/templates/computenetwork.yaml b/config-connector/solutions/sql/helm/mysql-private/network/templates/computenetwork.yaml deleted file mode 100644 index 7e40709dbf5..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/network/templates/computenetwork.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeNetwork -metadata: - name: mysql-private-network diff --git a/config-connector/solutions/sql/helm/mysql-private/network/templates/servicenetworkingconnection.yaml b/config-connector/solutions/sql/helm/mysql-private/network/templates/servicenetworkingconnection.yaml deleted file mode 100644 index 6c0d87f4a7f..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/network/templates/servicenetworkingconnection.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: servicenetworking.cnrm.cloud.google.com/v1beta1 -kind: ServiceNetworkingConnection -metadata: - name: mysql-private-connection -spec: - networkRef: - name: mysql-private-network - reservedPeeringRanges: - - name: mysql-private-address - service: servicenetworking.googleapis.com diff --git a/config-connector/solutions/sql/helm/mysql-private/sql/Chart.yaml b/config-connector/solutions/sql/helm/mysql-private/sql/Chart.yaml deleted file mode 100644 index 689c212279d..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/sql/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: mysql-private -version: 0.1.0 -description: Creating a MySQL instance on a private network diff --git a/config-connector/solutions/sql/helm/mysql-private/sql/templates/secret.yaml b/config-connector/solutions/sql/helm/mysql-private/sql/templates/secret.yaml deleted file mode 100644 index 22e152fbe7c..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/sql/templates/secret.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Secret -metadata: - name: mysql-private-secret -data: - password: {{ required "Password is required" .Values.SQLUser.Password }} diff --git a/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqldatabase.yaml b/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqldatabase.yaml deleted file mode 100644 index bfd0ea69650..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqldatabase.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: {{ .Values.Database.Name }} -spec: - charset: utf8mb4 - collation: utf8mb4_bin - instanceRef: - name: {{ .Values.MySQLInstance.Name }} diff --git a/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqlinstance.yaml b/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqlinstance.yaml deleted file mode 100644 index aef77503587..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqlinstance.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: {{ .Values.MySQLInstance.Name }} -spec: - databaseVersion: MYSQL_5_7 - region: {{ .Values.MySQLInstance.Region }} - settings: - tier: db-f1-micro - ipConfiguration: - ipv4Enabled: false - privateNetworkRef: - name: mysql-private-network diff --git a/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqluser.yaml b/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqluser.yaml deleted file mode 100644 index a61c5f00e88..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/sql/templates/sqluser.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: {{ required "User name is required field" .Values.SQLUser.Name }} -spec: - instanceRef: - name: {{ .Values.MySQLInstance.Name }} - host: "%" - password: - valueFrom: - secretKeyRef: - name: mysql-private-secret - key: password diff --git a/config-connector/solutions/sql/helm/mysql-private/sql/values.yaml b/config-connector/solutions/sql/helm/mysql-private/sql/values.yaml deleted file mode 100644 index 07221760f34..00000000000 --- a/config-connector/solutions/sql/helm/mysql-private/sql/values.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -SQLUser: - Name: - Password: - -MySQLInstance: - Name: mysql-private-instance - Region: us-central1 - -Database: - Name: mysql-private-database diff --git a/config-connector/solutions/sql/helm/postgres-ha/Chart.yaml b/config-connector/solutions/sql/helm/postgres-ha/Chart.yaml deleted file mode 100644 index c94097b0ada..00000000000 --- a/config-connector/solutions/sql/helm/postgres-ha/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -apiVersion: v1 -name: postgres-ha -version: 0.1.0 -description: Creating a Postgres high availability cluster diff --git a/config-connector/solutions/sql/helm/postgres-ha/README.md b/config-connector/solutions/sql/helm/postgres-ha/README.md deleted file mode 100644 index 6177693c25f..00000000000 --- a/config-connector/solutions/sql/helm/postgres-ha/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# PostgreSQL High Availability - -================================================== - -## NAME - - postgres-ha - -## SYNOPSIS - - Config Connector compatible yaml files to configure a high availability PostgreSQL cluster. - -## CONSUMPTION - - 1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ```bash - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - - 1. Go to the service account folder: - - ```bash - cd cloud-foundation-toolkit/config-connector/solutions/sql/helm/postgres-ha - ``` - -## REQUIREMENTS - -1. GKE Cluster with [Config Connector installed using a GKE Workload Identity](https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall#workload-identity). -1. [Helm](../../../README.md#helm). -1. Cloud SQL Admin API enabled in the project where Config Connector is installed. -1. Cloud SQL Admin API enabled in the project managed by Config Connector if it is installed in a different project. -1. The "cnrm-system" service account with either `roles/cloudsql.admin` or `roles/owner` in the project managed by Config Connector. - -## USAGE - -All steps are run from the current directory ([config-connector/solutions/sql/helm/postgres-ha](.)). - -1. Review and update the values in `./values.yaml`. - -1. Configure a high availability PostgreSQL cluster with Helm. - - ```bash - # validate your chart - helm lint . --set User1.Name=first-username,User2.Name=second-username,User3.Name=third-username,\ - User1.Password=$(echo -n 'first-password' | base64),User2.Password=$(echo -n 'second-password' | base64),\ - User3.Password=$(echo -n 'third-password' | base64) - - # check the output of your chart - helm template . --set User1.Name=first-username,User2.Name=second-username,User3.Name=third-username,\ - User1.Password=$(echo -n 'first-password' | base64),User2.Password=$(echo -n 'second-password' | base64),\ - User3.Password=$(echo -n 'third-password' | base64) - - # do a dryrun on your chart - helm install . --dry-run --set User1.Name=first-username,User2.Name=second-username,User3.Name=third-username,\ - User1.Password=$(echo -n 'first-password' | base64),User2.Password=$(echo -n 'second-password' | base64),\ - User3.Password=$(echo -n 'third-password' | base64) --generate-name - - # install your chart - helm install . --set User1.Name=first-username,User2.Name=second-username,User3.Name=third-username,\ - User1.Password=$(echo -n 'first-password' | base64),User2.Password=$(echo -n 'second-password' | base64),\ - User3.Password=$(echo -n 'third-password' | base64) --generate-name - ``` - -1. _Optionally_ here the list of things you can customize. - - | NAME | DEFAULT VALUE | DESCRIPTION | - |-------------------|------------------------|--------------------------------| - | Database1.Name | postgres-ha-database-1 | name of first SQL database | - | Database2.Name | postgres-ha-database-2 | name of second SQL database | - | external-ip-range | 192.10.10.10/32 | ip range to allow to connect | - | PostgreSQLInstance.Name | postgres-ha-solution | name of main SQL instance | - | PostgreSQLInstance.Region | us-central1 | region of SQL instance | - | PostgreSQLInstance.Zone | us-central1-c | zone of main instance | - | PostgreSQLInstance.Replica1.Zone | us-central1-a | zone of first replica instance | - | PostgreSQLInstance.Replica2.Zone | us-central1-b | zone of second replica instance| - | PostgreSQLInstance.Replica3.Zone | us-central1-c | zone of third replica instance | - - **Note:** If your SQL Instance is deleted, the name you used will be reserved -for **7 days**. In order to re-apply this solution, you need to run the following command to update the value of PostgreSQLInstance.Name to "new-instance-name". - - ```bash - helm install . --set User1.Name=first-username,User2.Name=second-username,User3.Name=third-username,\ - User1.Password=$(echo -n 'first-password' | base64),User2.Password=$(echo -n 'second-password' | base64),\ - User3.Password=$(echo -n 'third-password' | base64), PostgreSQLInstance.Name=new-instance-name --generate-name - ``` - -1. Check the created helm release to verify the installation: - ```bash - helm list - ``` - Check the status of the sqlinstances,sqldatabase,sqlusers: - ```bash - kubectl describe sqldatabase,sqlinstance,sqluser,secret - ``` - -1. Clean up installation: - - ```bash - # list Helm releases to obtain release names - helm list - - # delete release specifying release name from the previous command output. - helm delete [release_name] - ``` - -## LICENSE - -Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/sql/helm/postgres-ha/templates/secret.yaml b/config-connector/solutions/sql/helm/postgres-ha/templates/secret.yaml deleted file mode 100644 index e54a649c33e..00000000000 --- a/config-connector/solutions/sql/helm/postgres-ha/templates/secret.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Secret -metadata: - name: postgres-ha-secret -data: - password1: {{ required "Password of user1 is required!" .Values.User1.Password }} - password2: {{ required "Password of user2 is required!" .Values.User2.Password }} - password3: {{ required "Password of user3 is required!" .Values.User3.Password }} diff --git a/config-connector/solutions/sql/helm/postgres-ha/templates/sqldatabase.yaml b/config-connector/solutions/sql/helm/postgres-ha/templates/sqldatabase.yaml deleted file mode 100644 index d60ade62def..00000000000 --- a/config-connector/solutions/sql/helm/postgres-ha/templates/sqldatabase.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: {{ .Values.Database1.Name }} -spec: - charset: UTF8 - collation: en_US.UTF8 - instanceRef: - name: {{ .Values.PostgreSQLInstance.Name }} ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: {{ .Values.Database2.Name }} -spec: - charset: UTF8 - collation: en_US.UTF8 - instanceRef: - name: {{ .Values.PostgreSQLInstance.Name }} diff --git a/config-connector/solutions/sql/helm/postgres-ha/templates/sqlinstance.yaml b/config-connector/solutions/sql/helm/postgres-ha/templates/sqlinstance.yaml deleted file mode 100644 index 27a66825023..00000000000 --- a/config-connector/solutions/sql/helm/postgres-ha/templates/sqlinstance.yaml +++ /dev/null @@ -1,153 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: {{ .Values.PostgreSQLInstance.Name }} -spec: - databaseVersion: POSTGRES_9_6 - region: {{ .Values.PostgreSQLInstance.Region }} - settings: - activationPolicy: ALWAYS - diskAutoresize: true - diskSize: 10 - diskType: PD_SSD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-custom-2-13312 - availabilityType: REGIONAL - backupConfiguration: - binaryLogEnabled: false - enabled: true - startTime: 20:55 - databaseFlags: - - name: autovacuum - value: "off" - ipConfiguration: - ipv4Enabled: true - requireSsl: true - authorizedNetworks: - - name: postgres-ha-solution-cidr - value: {{ .Values.ExternalIP.Range }} - locationPreference: - zone: {{ .Values.PostgreSQLInstance.Zone }} - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: {{ .Values.PostgreSQLInstance.Replica1.Name }} -spec: - databaseVersion: POSTGRES_9_6 - region: {{ .Values.PostgreSQLInstance.Region }} - masterInstanceRef: - name: {{ .Values.PostgreSQLInstance.Name }} - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-custom-2-13312 - availabilityType: ZONAL - databaseFlags: - - name: autovacuum - value: "off" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: postgres-ha-solution-cidr - value: {{ .Values.ExternalIP.Range }} - locationPreference: - zone: {{ .Values.PostgreSQLInstance.Replica1.Zone }} - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: {{ .Values.PostgreSQLInstance.Replica2.Name }} -spec: - databaseVersion: POSTGRES_9_6 - region: {{ .Values.PostgreSQLInstance.Region }} - masterInstanceRef: - name: {{ .Values.PostgreSQLInstance.Name }} - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-custom-2-13312 - availabilityType: ZONAL - databaseFlags: - - name: autovacuum - value: "off" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: postgres-ha-solution-cidr - value: {{ .Values.ExternalIP.Range }} - locationPreference: - zone: {{ .Values.PostgreSQLInstance.Replica2.Zone }} - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: {{ .Values.PostgreSQLInstance.Replica3.Name }} -spec: - databaseVersion: POSTGRES_9_6 - region: {{ .Values.PostgreSQLInstance.Region }} - masterInstanceRef: - name: {{ .Values.PostgreSQLInstance.Name }} - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-custom-2-13312 - availabilityType: ZONAL - databaseFlags: - - name: autovacuum - value: "off" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: postgres-ha-solution-cidr - value: {{ .Values.ExternalIP.Range }} - locationPreference: - zone: {{ .Values.PostgreSQLInstance.Replica3.Zone }} - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable diff --git a/config-connector/solutions/sql/helm/postgres-ha/templates/sqluser.yaml b/config-connector/solutions/sql/helm/postgres-ha/templates/sqluser.yaml deleted file mode 100644 index 0a3ae6dd6f6..00000000000 --- a/config-connector/solutions/sql/helm/postgres-ha/templates/sqluser.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: {{ required "Username1 is required!" .Values.User1.Name }} -spec: - instanceRef: - name: {{ .Values.PostgreSQLInstance.Name }} - password: - valueFrom: - secretKeyRef: - name: postgres-ha-secret - key: password1 ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: {{ required "Username2 is required!" .Values.User2.Name }} -spec: - instanceRef: - name: {{ .Values.PostgreSQLInstance.Name }} - password: - valueFrom: - secretKeyRef: - name: postgres-ha-secret - key: password2 ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: {{ required "Username3 is required!" .Values.User3.Name }} -spec: - instanceRef: - name: {{ .Values.PostgreSQLInstance.Name }} - password: - valueFrom: - secretKeyRef: - name: postgres-ha-secret - key: password3 diff --git a/config-connector/solutions/sql/helm/postgres-ha/values.yaml b/config-connector/solutions/sql/helm/postgres-ha/values.yaml deleted file mode 100644 index d1b644bc516..00000000000 --- a/config-connector/solutions/sql/helm/postgres-ha/values.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -PostgreSQLInstance: - Name: postgres-ha-solution - Region: us-central - Zone: us-central-c - Replica1: - Name: replica-instance-1-name - Zone: us-central-a - Replica2: - Name: replica-instance-2-name - Zone: us-central-b - Replica3: - Name: replica-instance-3-name - Zone: us-central-c - -User1: - Name: - Password: - -User2: - Name: - Password: - -User3: - Name: - Password: - -Database1: - Name: postgres-ha-database-1 - -Database2: - Name: postgres-ha-database-2 - -ExternalIP: - Range: 199.10.10.10/32 diff --git a/config-connector/solutions/sql/kpt/mysql-ha/Kptfile b/config-connector/solutions/sql/kpt/mysql-ha/Kptfile deleted file mode 100644 index 6989914e10d..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-ha/Kptfile +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: mysql-ha -packageMetadata: - shortDescription: creates a mysql high availability cluster -openAPI: - definitions: - io.k8s.cli.setters.test-pw: - description: password for SQL user "test" (base64 encoded) - x-k8s-cli: - setter: - name: test-pw - value: "${PASSWORD_1?}" - setBy: PLACEHOLDER - io.k8s.cli.setters.test2-pw: - description: password for SQL user "test2" (base64 encoded) - x-k8s-cli: - setter: - name: test2-pw - value: "${PASSWORD_2?}" - setBy: PLACEHOLDER - io.k8s.cli.setters.test3-pw: - description: password for SQL user "test3" (base64 encoded) - x-k8s-cli: - setter: - name: test3-pw - value: "${PASSWORD_3?}" - setBy: PLACEHOLDER - io.k8s.cli.setters.instance-name: - description: name of SQL instance - x-k8s-cli: - setter: - name: instance-name - value: mysql-ha-solution - setBy: package-default - io.k8s.cli.substitutions.failover-instance-name: - x-k8s-cli: - substitution: - name: failover-instance-name - pattern: INSTANCE_NAME_SETTER-failover-test - values: - - marker: INSTANCE_NAME_SETTER - ref: '#/definitions/io.k8s.cli.setters.instance-name' - io.k8s.cli.substitutions.replica-instance-0-name: - x-k8s-cli: - substitution: - name: replica-instance-0-name - pattern: INSTANCE_NAME_SETTER-replica-test0 - values: - - marker: INSTANCE_NAME_SETTER - ref: '#/definitions/io.k8s.cli.setters.instance-name' - io.k8s.cli.substitutions.replica-instance-1-name: - x-k8s-cli: - substitution: - name: replica-instance-1-name - pattern: INSTANCE_NAME_SETTER-replica-test1 - values: - - marker: INSTANCE_NAME_SETTER - ref: '#/definitions/io.k8s.cli.setters.instance-name' - io.k8s.cli.substitutions.replica-instance-2-name: - x-k8s-cli: - substitution: - name: replica-instance-2-name - pattern: INSTANCE_NAME_SETTER-replica-test2 - values: - - marker: INSTANCE_NAME_SETTER - ref: '#/definitions/io.k8s.cli.setters.instance-name' diff --git a/config-connector/solutions/sql/kpt/mysql-ha/README.md b/config-connector/solutions/sql/kpt/mysql-ha/README.md deleted file mode 100644 index 2aee31c961f..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-ha/README.md +++ /dev/null @@ -1,59 +0,0 @@ -MySQL High Availability -================================================== -# NAME - mysql-ha -# SYNOPSIS - Config Connector compatible YAMLs for creating a high availability MySQL cluster -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/): - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/sql/kpt/mysql-ha mysql-ha - ``` -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either `roles/cloudsql.admin` or `roles/owner` in the project - managed by Config Connector - - Cloud SQL Admin API enabled in the project where Config Connector is - installed - - Cloud SQL Admin API enabled in the project managed by Config Connector if - it is a different project - -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|-------------------|---------------------|-----------------|-------------------------------|-------| -| instance-name | mysql-ha-solution | package-default | name of SQL instance | 14 | -| test-pw | ${PASSWORD_1?} | PLACEHOLDER | password for SQL user "test"
(base64 encoded) | 1 | -| test2-pw | ${PASSWORD_2?} | PLACEHOLDER | password for SQL user "test2"
(base64 encoded) | 1 | -| test3-pw | ${PASSWORD_3?} | PLACEHOLDER | password for SQL user "test3"
(base64 encoded) | 1 | - -# USAGE - Configure setters using kpt as follows: - ``` - kpt cfg set . NAME VALUE - ``` - Setting placeholder values is required, changing package-defaults is optional. - - Set `test-pw`, `test2-pw`, and `test3-pw` to the [base64 - encoded](https://kubernetes.io/docs/concepts/configuration/secret/#creating-a-secret-manually) passwords for user `test`, - user `test2`, and user `test3`: - ``` - kpt cfg set . test-pw $(echo -n 'first-password' | base64) - kpt cfg set . test2-pw $(echo -n 'second-password' | base64) - kpt cfg set . test3-pw $(echo -n 'third-password' | base64) - ``` - _Optionally,_ set `instance-name` in the same manner. - - **Note:** If your SQL Instance is deleted, the name you used will be reserved - for **7 days**. In order to re-apply this solution, you need to run - `kpt cfg set . instance-name new-instance-name` to change to a new - instance name that hasn't been used in the last 7 days. - - Once the configuration is satisfactory, apply: - ``` - kubectl apply -f . - ``` - **Note:** It will take up to ~40 mins for all the resources to be `Ready`. - -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. - diff --git a/config-connector/solutions/sql/kpt/mysql-ha/secret.yaml b/config-connector/solutions/sql/kpt/mysql-ha/secret.yaml deleted file mode 100644 index bdb124a64c2..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-ha/secret.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Secret -metadata: - name: mysql-ha-secret -data: - password1: "${PASSWORD_1?}" # {"$ref":"#/definitions/io.k8s.cli.setters.test-pw"} - password2: "${PASSWORD_2?}" # {"$ref":"#/definitions/io.k8s.cli.setters.test2-pw"} - password3: "${PASSWORD_3?}" # {"$ref":"#/definitions/io.k8s.cli.setters.test3-pw"} diff --git a/config-connector/solutions/sql/kpt/mysql-ha/sqldatabase.yaml b/config-connector/solutions/sql/kpt/mysql-ha/sqldatabase.yaml deleted file mode 100644 index 75b0b2bd163..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-ha/sqldatabase.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: mysql-ha-database -spec: - charset: utf8mb4 - collation: utf8mb4_general_ci - instanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: mysql-ha-database-additional -spec: - charset: utf8mb4 - collation: utf8mb4_general_ci - instanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} diff --git a/config-connector/solutions/sql/kpt/mysql-ha/sqlinstance.yaml b/config-connector/solutions/sql/kpt/mysql-ha/sqlinstance.yaml deleted file mode 100644 index 1e9afb11697..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-ha/sqlinstance.yaml +++ /dev/null @@ -1,206 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - labels: - solution: mysql-ha - node: master -spec: - databaseVersion: MYSQL_5_7 - region: us-central1 - settings: - activationPolicy: ALWAYS - diskAutoresize: true - diskSize: 10 - diskType: PD_SSD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-n1-standard-1 - backupConfiguration: - binaryLogEnabled: true - enabled: true - startTime: 20:55 - databaseFlags: - - name: long_query_time - value: "1" - ipConfiguration: - ipv4Enabled: true - requireSsl: true - authorizedNetworks: - - name: mysql-ha-solution-cidr - value: 192.10.10.10/32 - locationPreference: - zone: us-central1-c - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: mysql-ha-solution-failover-test # {"$ref":"#/definitions/io.k8s.cli.substitutions.failover-instance-name"} - labels: - solution: mysql-ha - node: failover -spec: - databaseVersion: MYSQL_5_7 - region: us-central1 - masterInstanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - replicaConfiguration: - connectRetryInterval: 5 - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_SSD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-n1-standard-1 - databaseFlags: - - name: long_query_time - value: "1" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: mysql-ha-solution-cidr - value: 192.10.10.10/32 - locationPreference: - zone: us-central1-a - maintenanceWindow: - day: 3 - hour: 20 - updateTrack: canary ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: mysql-ha-solution-replica-test0 # {"$ref":"#/definitions/io.k8s.cli.substitutions.replica-instance-0-name"} - labels: - solution: mysql-ha - node: replica-test0 -spec: - databaseVersion: MYSQL_5_7 - region: us-central1 - masterInstanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - replicaConfiguration: - connectRetryInterval: 5 - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-n1-standard-1 - databaseFlags: - - name: long_query_time - value: "1" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: mysql-ha-solution-cidr - value: 192.10.10.10/32 - locationPreference: - zone: us-central1-a - maintenanceWindow: - day: 1 - hour: 22 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: mysql-ha-solution-replica-test1 # {"$ref":"#/definitions/io.k8s.cli.substitutions.replica-instance-1-name"} - labels: - solution: mysql-ha - node: replica-test1 -spec: - databaseVersion: MYSQL_5_7 - region: us-central1 - masterInstanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - replicaConfiguration: - connectRetryInterval: 5 - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-n1-standard-1 - databaseFlags: - - name: long_query_time - value: "1" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: mysql-ha-solution-cidr - value: 192.10.10.10/32 - locationPreference: - zone: us-central1-b - maintenanceWindow: - day: 1 - hour: 22 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: mysql-ha-solution-replica-test2 # {"$ref":"#/definitions/io.k8s.cli.substitutions.replica-instance-2-name"} - labels: - solution: mysql-ha - node: replica-test2 -spec: - databaseVersion: MYSQL_5_7 - region: us-central1 - masterInstanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - replicaConfiguration: - connectRetryInterval: 5 - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-n1-standard-1 - databaseFlags: - - name: long_query_time - value: "1" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: mysql-ha-solution-cidr - value: 192.10.10.10/32 - locationPreference: - zone: us-central1-c - maintenanceWindow: - day: 1 - hour: 22 - updateTrack: stable diff --git a/config-connector/solutions/sql/kpt/mysql-ha/sqluser.yaml b/config-connector/solutions/sql/kpt/mysql-ha/sqluser.yaml deleted file mode 100644 index 4275ac41048..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-ha/sqluser.yaml +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: test -spec: - instanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - host: "%" - password: - valueFrom: - secretKeyRef: - name: mysql-ha-secret - key: password1 ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: test2 -spec: - instanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - host: localhost - password: - valueFrom: - secretKeyRef: - name: mysql-ha-secret - key: password2 ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: test3 -spec: - instanceRef: - name: mysql-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - host: localhost - password: - valueFrom: - secretKeyRef: - name: mysql-ha-secret - key: password3 diff --git a/config-connector/solutions/sql/kpt/mysql-private/Kptfile b/config-connector/solutions/sql/kpt/mysql-private/Kptfile deleted file mode 100644 index d751daa54ce..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/Kptfile +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: mysql-private -packageMetadata: - shortDescription: configure private mysql instance -openAPI: - definitions: - io.k8s.cli.setters.username: - description: name of SQL user - x-k8s-cli: - setter: - name: username - value: ${USERNAME?} - setBy: PLACEHOLDER - io.k8s.cli.setters.password: - description: SQL password (base64 encoded) - x-k8s-cli: - setter: - name: password - value: ${PASSWORD?} - setBy: PLACEHOLDER - io.k8s.cli.setters.region: - description: region of SQL instance - x-k8s-cli: - setter: - name: region - value: us-central1 - setBy: package-default - io.k8s.cli.setters.database-name: - description: name of SQL database - x-k8s-cli: - setter: - name: database-name - value: mysql-private-database - setBy: package-default - io.k8s.cli.setters.instance-name: - description: name of SQL instance - x-k8s-cli: - setter: - name: instance-name - value: mysql-private-instance - setBy: package-default diff --git a/config-connector/solutions/sql/kpt/mysql-private/README.md b/config-connector/solutions/sql/kpt/mysql-private/README.md deleted file mode 100644 index 677757f7087..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/README.md +++ /dev/null @@ -1,70 +0,0 @@ -MySQL Private -================================================== -# NAME - mysql-private -# SYNOPSIS - Config Connector compatible YAML files for creating a MySQL instance on a private network -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/sql/kpt/mysql-private mysql-private - ``` - -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either both `roles/cloudsql.admin` and - `roles/compute.networkAdmin` roles or `roles/owner` in the project managed - by Config Connector - - The following APIs enabled in the project where Config Connector is - installed: - - Cloud SQL Admin API - - Compute Engine API - - The following APIs enabled in the project managed by Config Connector: - - Cloud SQL Admin API - - Compute Engine API - - Service Networking API - -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|---------------|------------------------|-----------------|-------------------------------|-------| -| database-name | mysql-private-database | package-default | name of SQL database | 1 | -| instance-name | mysql-private-instance | package-default | name of SQL instance | 3 | -| password | ${PASSWORD?} | PLACEHOLDER | SQL password (base64 encoded) | 1 | -| region | us-central1 | package-default | region of SQL instance | 1 | -| username | ${USERNAME?} | PLACEHOLDER | name of SQL user | 1 | - -# USAGE - - Configure setters using kpt as follows: - ``` - kpt cfg set . NAME VALUE - ``` - Setting placeholder values is required, changing package-defaults is optional. - - Set `username` to the SQL username that you will use to access the database. - ``` - kpt cfg set . username your-username - ``` - _Optionally_ set `database-name`, `instance-name`, and `region` in the same -manner. Note that if your instance is deleted the name you used will be -reserved for 7 days. You will need to use a new name in order to re-create the -instance. - - `password` should be set to a [base64 encoded](https://kubernetes.io/docs/concepts/configuration/secret/#creating-a-secret-manually) value. - ``` - kpt cfg set . password $(echo -n 'your-password' | base64) - ``` - Due to the bug in Config Connector ([more details](https://github.com/GoogleCloudPlatform/k8s-config-connector/issues/148)), the following resources must be in a ready state before the SQLInstance YAML is applied: - - `ComputeNetwork` - - `ComputeAddress` - - `ServiceNetworkingConnection` - - To ensure this is the case, use the following: - ``` - kubectl apply -f network - kubectl wait --for=condition=Ready -f network - kubectl apply -f sql - ``` - -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/solutions/sql/kpt/mysql-private/network/computeaddress.yaml b/config-connector/solutions/sql/kpt/mysql-private/network/computeaddress.yaml deleted file mode 100644 index fa32cf3bc21..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/network/computeaddress.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeAddress -metadata: - name: mysql-private-address -spec: - addressType: INTERNAL - location: global - purpose: VPC_PEERING - prefixLength: 16 - networkRef: - name: mysql-private-network diff --git a/config-connector/solutions/sql/kpt/mysql-private/network/computenetwork.yaml b/config-connector/solutions/sql/kpt/mysql-private/network/computenetwork.yaml deleted file mode 100644 index 7e40709dbf5..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/network/computenetwork.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: compute.cnrm.cloud.google.com/v1beta1 -kind: ComputeNetwork -metadata: - name: mysql-private-network diff --git a/config-connector/solutions/sql/kpt/mysql-private/network/servicenetworkingconnection.yaml b/config-connector/solutions/sql/kpt/mysql-private/network/servicenetworkingconnection.yaml deleted file mode 100644 index 6c0d87f4a7f..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/network/servicenetworkingconnection.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: servicenetworking.cnrm.cloud.google.com/v1beta1 -kind: ServiceNetworkingConnection -metadata: - name: mysql-private-connection -spec: - networkRef: - name: mysql-private-network - reservedPeeringRanges: - - name: mysql-private-address - service: servicenetworking.googleapis.com diff --git a/config-connector/solutions/sql/kpt/mysql-private/sql/secret.yaml b/config-connector/solutions/sql/kpt/mysql-private/sql/secret.yaml deleted file mode 100644 index ede8e0f1279..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/sql/secret.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Secret -metadata: - name: mysql-private-secret -data: - password: ${PASSWORD?} # {"$ref":"#/definitions/io.k8s.cli.setters.password"} diff --git a/config-connector/solutions/sql/kpt/mysql-private/sql/sqldatabase.yaml b/config-connector/solutions/sql/kpt/mysql-private/sql/sqldatabase.yaml deleted file mode 100644 index 252133f3228..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/sql/sqldatabase.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: mysql-private-database # {"$ref":"#/definitions/io.k8s.cli.setters.database-name"} -spec: - charset: utf8mb4 - collation: utf8mb4_bin - instanceRef: - name: mysql-private-instance # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} diff --git a/config-connector/solutions/sql/kpt/mysql-private/sql/sqlinstance.yaml b/config-connector/solutions/sql/kpt/mysql-private/sql/sqlinstance.yaml deleted file mode 100644 index 7311d84b27d..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/sql/sqlinstance.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: mysql-private-instance # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} -spec: - databaseVersion: MYSQL_5_7 - region: us-central1 # {"$ref":"#/definitions/io.k8s.cli.setters.region"} - settings: - tier: db-f1-micro - ipConfiguration: - ipv4Enabled: false - privateNetworkRef: - name: mysql-private-network diff --git a/config-connector/solutions/sql/kpt/mysql-private/sql/sqluser.yaml b/config-connector/solutions/sql/kpt/mysql-private/sql/sqluser.yaml deleted file mode 100644 index 22414ae1531..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-private/sql/sqluser.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: ${USERNAME?} # {"$ref":"#/definitions/io.k8s.cli.setters.username"} -spec: - instanceRef: - name: mysql-private-instance # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - host: "%" - password: - valueFrom: - secretKeyRef: - name: mysql-private-secret - key: password diff --git a/config-connector/solutions/sql/kpt/mysql-public/Kptfile b/config-connector/solutions/sql/kpt/mysql-public/Kptfile deleted file mode 100644 index 861ab857767..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-public/Kptfile +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: mysql-public -packageMetadata: - shortDescription: configures a public MySQL database -openAPI: - definitions: - io.k8s.cli.setters.instance-name: - description: name of SQL instance - x-k8s-cli: - setter: - name: instance-name - value: mysql-public-solution - setBy: package-default - io.k8s.cli.setters.authorized-network: - description: name of authorized network - x-k8s-cli: - setter: - name: authorized-network - value: mysql-public-solution-sample - setBy: package-default - io.k8s.cli.setters.authorized-network-cidr: - description: authorized network CIDR range - x-k8s-cli: - setter: - name: authorized-network-cidr - value: 130.211.0.0/28 - setBy: package-default - io.k8s.cli.setters.password: - description: SQL password (base64) - x-k8s-cli: - setter: - name: password - value: ${PASSWORD?} - setBy: PLACEHOLDER diff --git a/config-connector/solutions/sql/kpt/mysql-public/README.md b/config-connector/solutions/sql/kpt/mysql-public/README.md deleted file mode 100644 index 9a156b15c63..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-public/README.md +++ /dev/null @@ -1,53 +0,0 @@ -MySQL Public -================================================== -# NAME - mysql-public -# SYNOPSIS - Config Connector compatible yaml files to configure a public MySQL database -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/sql/kpt/mysql-public mysql-public - ``` -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either `roles/cloudsql.admin` or `roles/owner` in the project - managed by Config Connector - - Cloud SQL Admin API enabled in the project where Config Connector is - installed - - Cloud SQL Admin API enabled in the project managed by Config Connector if - it is a different project - -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|-------------------------|------------------------------|-----------------|-------------------------------|-------| -| authorized-network | mysql-public-solution-sample | package-default | name of authorized network | 1 | -| authorized-network-cidr | 130.211.0.0/28 | package-default | authorized network CIDR range | 1 | -| instance-name | mysql-public-solution | package-default | name of SQL instance | 3 | -| password | ${PASSWORD?} | PLACEHOLDER | SQL password (base64) | 1 | -# USAGE - Configure setters using kpt as follows: - ``` - kpt cfg set . NAME VALUE - ``` - Setting placeholder values is required, changing package-defaults is optional. - - `password` should be set to a [base64 encoded](https://kubernetes.io/docs/concepts/configuration/secret/#creating-a-secret-manually) value. - ``` - kpt cfg set . password $(echo -n 'your-password' | base64) - ``` - - _Optionally_ set `authorized-network`, `authorized-network-cidr`, and `instance-name` in the manner specified above. - - **Note:** If your SQL Instance is deleted, the name you used will be reserved -for **7 days**. In order to re-apply this solution, you need to run -`kpt cfg set . instance-name new-instance-name` to change to a new -instance name that hasn't been used in the last 7 days. - - Once the configuration is satisfactory, apply: - ``` - kubectl apply -f . - ``` -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. - diff --git a/config-connector/solutions/sql/kpt/mysql-public/secret.yaml b/config-connector/solutions/sql/kpt/mysql-public/secret.yaml deleted file mode 100644 index 1040efc7ded..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-public/secret.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Secret -metadata: - name: mysql-public-secret -data: - password: ${PASSWORD?} # {"$ref":"#/definitions/io.k8s.cli.setters.password"} diff --git a/config-connector/solutions/sql/kpt/mysql-public/sqldatabase.yaml b/config-connector/solutions/sql/kpt/mysql-public/sqldatabase.yaml deleted file mode 100644 index 5e31be7d544..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-public/sqldatabase.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: mysql-public-database -spec: - charset: utf8 - collation: utf8_general_ci - instanceRef: - name: mysql-public-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} diff --git a/config-connector/solutions/sql/kpt/mysql-public/sqlinstance.yaml b/config-connector/solutions/sql/kpt/mysql-public/sqlinstance.yaml deleted file mode 100644 index 0d52c3c2b3c..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-public/sqlinstance.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: mysql-public-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} -spec: - databaseVersion: MYSQL_5_6 - region: us-central1 - settings: - activationPolicy: ALWAYS - diskAutoresize: true - diskSize: 10 - diskType: PD_SSD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-n1-standard-1 - backupConfiguration: - enabled: false - ipConfiguration: - ipv4Enabled: true - requireSsl: true - authorizedNetworks: - - name: mysql-public-solution-sample # {"$ref":"#/definitions/io.k8s.cli.setters.authorized-network"} - value: 130.211.0.0/28 # {"$ref":"#/definitions/io.k8s.cli.setters.authorized-network-cidr"} - locationPreference: - zone: us-central1-c - maintenanceWindow: - day: 1 - hour: 23 - updateTrack: canary diff --git a/config-connector/solutions/sql/kpt/mysql-public/sqluser.yaml b/config-connector/solutions/sql/kpt/mysql-public/sqluser.yaml deleted file mode 100644 index b1094140684..00000000000 --- a/config-connector/solutions/sql/kpt/mysql-public/sqluser.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: default -spec: - instanceRef: - name: mysql-public-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - password: - valueFrom: - secretKeyRef: - name: mysql-public-secret - key: password diff --git a/config-connector/solutions/sql/kpt/postgres-ha/Kptfile b/config-connector/solutions/sql/kpt/postgres-ha/Kptfile deleted file mode 100644 index 148b21848d6..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-ha/Kptfile +++ /dev/null @@ -1,137 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: postgres-ha -packageMetadata: - shortDescription: a Postgres high availability cluster -openAPI: - definitions: - io.k8s.cli.setters.instance-name: - description: name of main SQL instance - x-k8s-cli: - setter: - name: instance-name - value: postgres-ha-solution - setBy: package-default - io.k8s.cli.setters.region: - description: region of SQL instance - x-k8s-cli: - setter: - name: region - value: us-central1 - setBy: package-default - io.k8s.cli.setters.database-1-name: - description: name of first SQL database - x-k8s-cli: - setter: - name: database-1-name - value: postgres-ha-database-1 - setBy: package-default - io.k8s.cli.setters.database-2-name: - description: name of second SQL database - x-k8s-cli: - setter: - name: database-2-name - value: postgres-ha-database-2 - setBy: package-default - io.k8s.cli.substitutions.replica-instance-1-name: - x-k8s-cli: - substitution: - name: replica-instance-1-name - pattern: INSTANCE_NAME_SETTER-replica-1 - values: - - marker: INSTANCE_NAME_SETTER - ref: '#/definitions/io.k8s.cli.setters.instance-name' - io.k8s.cli.substitutions.replica-instance-2-name: - x-k8s-cli: - substitution: - name: replica-instance-2-name - pattern: INSTANCE_NAME_SETTER-replica-2 - values: - - marker: INSTANCE_NAME_SETTER - ref: '#/definitions/io.k8s.cli.setters.instance-name' - io.k8s.cli.substitutions.replica-instance-3-name: - x-k8s-cli: - substitution: - name: replica-instance-3-name - pattern: INSTANCE_NAME_SETTER-replica-3 - values: - - marker: INSTANCE_NAME_SETTER - ref: '#/definitions/io.k8s.cli.setters.instance-name' - io.k8s.cli.setters.zone-replica-3: - description: zone of third replica instance - x-k8s-cli: - setter: - name: zone-replica-3 - value: us-central1-c - setBy: package-default - io.k8s.cli.setters.zone: - description: zone of main instance - x-k8s-cli: - setter: - name: zone - value: us-central1-c - setBy: package-default - io.k8s.cli.setters.zone-replica-2: - description: zone of second replica instance - x-k8s-cli: - setter: - name: zone-replica-2 - value: us-central1-b - setBy: package-default - io.k8s.cli.setters.zone-replica-1: - description: zone of first replica instance - x-k8s-cli: - setter: - name: zone-replica-1 - value: us-central1-a - setBy: package-default - io.k8s.cli.setters.password-1: - description: password of user - x-k8s-cli: - setter: - name: password-1 - value: ${PASSWORD_1?} - setBy: PLACEHOLDER - io.k8s.cli.setters.password-2: - description: password of user - x-k8s-cli: - setter: - name: password-2 - value: ${PASSWORD_2?} - setBy: PLACEHOLDER - io.k8s.cli.setters.password-3: - description: password of user - x-k8s-cli: - setter: - name: password-3 - value: ${PASSWORD_3?} - setBy: PLACEHOLDER - io.k8s.cli.setters.username-1: - description: name of user - x-k8s-cli: - setter: - name: username-1 - value: ${USERNAME_1?} - setBy: PLACEHOLDER - io.k8s.cli.setters.username-2: - description: name of user - x-k8s-cli: - setter: - name: username-2 - value: ${USERNAME_2?} - setBy: PLACEHOLDER - io.k8s.cli.setters.username-3: - description: name of user - x-k8s-cli: - setter: - name: username-3 - value: ${USERNAME_3?} - setBy: PLACEHOLDER - io.k8s.cli.setters.external-ip-range: - description: ip range to allow to connect - x-k8s-cli: - setter: - name: external-ip-range - value: 192.10.10.10/32 - setBy: package-default diff --git a/config-connector/solutions/sql/kpt/postgres-ha/README.md b/config-connector/solutions/sql/kpt/postgres-ha/README.md deleted file mode 100644 index 2bdc3997cbf..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-ha/README.md +++ /dev/null @@ -1,74 +0,0 @@ -PostgreSQL High Availability -================================================== -# NAME - postgres-ha -# SYNOPSIS - Config Connector compatible yaml files to configure a high availability PostgreSQL cluster -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/sql/kpt/postgres-ha postgres-ha - ``` -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either `roles/cloudsql.admin` or `roles/owner` in the project - managed by Config Connector - - Cloud SQL Admin API enabled in the project where Config Connector is - installed - - Cloud SQL Admin API enabled in the project managed by Config Connector if - it is a different project - -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|-------------------|------------------------|-----------------|--------------------------------|-------| -| database-1-name | postgres-ha-database-1 | package-default | name of first SQL database | 1 | -| database-2-name | postgres-ha-database-2 | package-default | name of second SQL database | 1 | -| external-ip-range | 192.10.10.10/32 | package-default | ip range to allow to connect | 4 | -| instance-name | postgres-ha-solution | package-default | name of main SQL instance | 9 | -| password-1 | ${PASSWORD_1?} | PLACEHOLDER | password of user | 1 | -| password-2 | ${PASSWORD_2?} | PLACEHOLDER | password of user | 1 | -| password-3 | ${PASSWORD_3?} | PLACEHOLDER | password of user | 1 | -| region | us-central1 | package-default | region of SQL instance | 4 | -| username-1 | ${USERNAME_1?} | PLACEHOLDER | name of user | 1 | -| username-2 | ${USERNAME_2?} | PLACEHOLDER | name of user | 1 | -| username-3 | ${USERNAME_3?} | PLACEHOLDER | name of user | 1 | -| zone | us-central1-c | package-default | zone of main instance | 1 | -| zone-replica-1 | us-central1-a | package-default | zone of first replica instance | 1 | -| zone-replica-2 | us-central1-b | package-default | zone of second replica instance| 1 | -| zone-replica-3 | us-central1-c | package-default | zone of third replica instance | 1 | -# USAGE - Configure setters using kpt as follows: - ``` - kpt cfg set . NAME VALUE - ``` - Setting placeholder values is required, changing package-defaults is optional. - - Set `username-1`, `username-2', and `username-3` to the SQL usernames that you will use to access the database. - ``` - kpt cfg set . username-1 first-username - kpt cfg set . username-2 second-username - kpt cfg set . username-3 third-username - ``` - `password-1`, `password-2`, and `password-3` should be set to [base64 -encoded](https://kubernetes.io/docs/concepts/configuration/secret/#creating-a-secret-manually) -values. - ``` - kpt cfg set . password-1 $(echo -n 'first-password' | base64) - kpt cfg set . password-2 $(echo -n 'second-password' | base64) - kpt cfg set . password-3 $(echo -n 'third-password' | base64) - ``` - _Optionally_ set `database-name`, `instance-name`, `region`, `zone`, and -`zone-replica` in the same manner. - - **Note:** If your SQL Instance is deleted, the name you used will be reserved -for **7 days**. In order to re-apply this solution, you need to run -`kpt cfg set . instance-name new-instance-name` to change to a new -instance name that hasn't been used in the last 7 days. - - Once the configuration is satisfactory, apply: - ``` - kubectl apply -f . - ``` -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. - diff --git a/config-connector/solutions/sql/kpt/postgres-ha/secret.yaml b/config-connector/solutions/sql/kpt/postgres-ha/secret.yaml deleted file mode 100644 index 68e3797eeef..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-ha/secret.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Secret -metadata: - name: postgres-ha-secret -data: - password1: ${PASSWORD_1?} # {"$ref":"#/definitions/io.k8s.cli.setters.password-1"} - password2: ${PASSWORD_2?} # {"$ref":"#/definitions/io.k8s.cli.setters.password-2"} - password3: ${PASSWORD_3?} # {"$ref":"#/definitions/io.k8s.cli.setters.password-3"} diff --git a/config-connector/solutions/sql/kpt/postgres-ha/sqldatabase.yaml b/config-connector/solutions/sql/kpt/postgres-ha/sqldatabase.yaml deleted file mode 100644 index cef374a5749..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-ha/sqldatabase.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: postgres-ha-database-1 # {"$ref":"#/definitions/io.k8s.cli.setters.database-1-name"} -spec: - charset: UTF8 - collation: en_US.UTF8 - instanceRef: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: postgres-ha-database-2 # {"$ref":"#/definitions/io.k8s.cli.setters.database-2-name"} -spec: - charset: UTF8 - collation: en_US.UTF8 - instanceRef: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} diff --git a/config-connector/solutions/sql/kpt/postgres-ha/sqlinstance.yaml b/config-connector/solutions/sql/kpt/postgres-ha/sqlinstance.yaml deleted file mode 100644 index 9c8ff9c1cad..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-ha/sqlinstance.yaml +++ /dev/null @@ -1,153 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} -spec: - databaseVersion: POSTGRES_9_6 - region: us-central1 # {"$ref":"#/definitions/io.k8s.cli.setters.region"} - settings: - activationPolicy: ALWAYS - diskAutoresize: true - diskSize: 10 - diskType: PD_SSD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-custom-2-13312 - availabilityType: REGIONAL - backupConfiguration: - binaryLogEnabled: false - enabled: true - startTime: 20:55 - databaseFlags: - - name: autovacuum - value: "off" - ipConfiguration: - ipv4Enabled: true - requireSsl: true - authorizedNetworks: - - name: postgres-ha-solution-cidr - value: 192.10.10.10/32 # {"$ref":"#/definitions/io.k8s.cli.setters.external-ip-range"} - locationPreference: - zone: us-central1-c # {"$ref":"#/definitions/io.k8s.cli.setters.zone"} - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: postgres-ha-solution-replica-1 # {"$ref":"#/definitions/io.k8s.cli.substitutions.replica-instance-1-name"} -spec: - databaseVersion: POSTGRES_9_6 - region: us-central1 # {"$ref":"#/definitions/io.k8s.cli.setters.region"} - masterInstanceRef: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-custom-2-13312 - availabilityType: ZONAL - databaseFlags: - - name: autovacuum - value: "off" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: postgres-ha-solution-cidr - value: 192.10.10.10/32 # {"$ref":"#/definitions/io.k8s.cli.setters.external-ip-range"} - locationPreference: - zone: us-central1-a # {"$ref":"#/definitions/io.k8s.cli.setters.zone-replica-1"} - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: postgres-ha-solution-replica-2 # {"$ref":"#/definitions/io.k8s.cli.substitutions.replica-instance-2-name"} -spec: - databaseVersion: POSTGRES_9_6 - region: us-central1 # {"$ref":"#/definitions/io.k8s.cli.setters.region"} - masterInstanceRef: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-custom-2-13312 - availabilityType: ZONAL - databaseFlags: - - name: autovacuum - value: "off" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: postgres-ha-solution-cidr - value: 192.10.10.10/32 # {"$ref":"#/definitions/io.k8s.cli.setters.external-ip-range"} - locationPreference: - zone: us-central1-b # {"$ref":"#/definitions/io.k8s.cli.setters.zone-replica-2"} - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: postgres-ha-solution-replica-3 # {"$ref":"#/definitions/io.k8s.cli.substitutions.replica-instance-3-name"} -spec: - databaseVersion: POSTGRES_9_6 - region: us-central1 # {"$ref":"#/definitions/io.k8s.cli.setters.region"} - masterInstanceRef: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - settings: - activationPolicy: ALWAYS - crashSafeReplication: true - diskAutoresize: true - diskSize: 10 - diskType: PD_HDD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-custom-2-13312 - availabilityType: ZONAL - databaseFlags: - - name: autovacuum - value: "off" - ipConfiguration: - ipv4Enabled: true - requireSsl: false - authorizedNetworks: - - name: postgres-ha-solution-cidr - value: 192.10.10.10/32 # {"$ref":"#/definitions/io.k8s.cli.setters.external-ip-range"} - locationPreference: - zone: us-central1-c # {"$ref":"#/definitions/io.k8s.cli.setters.zone-replica-3"} - maintenanceWindow: - day: 7 - hour: 12 - updateTrack: stable diff --git a/config-connector/solutions/sql/kpt/postgres-ha/sqluser.yaml b/config-connector/solutions/sql/kpt/postgres-ha/sqluser.yaml deleted file mode 100644 index d5dcd105a32..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-ha/sqluser.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: ${USERNAME_1?} # {"$ref":"#/definitions/io.k8s.cli.setters.username-1"} -spec: - instanceRef: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - password: - valueFrom: - secretKeyRef: - name: postgres-ha-secret - key: password1 ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: ${USERNAME_2?} # {"$ref":"#/definitions/io.k8s.cli.setters.username-2"} -spec: - instanceRef: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - password: - valueFrom: - secretKeyRef: - name: postgres-ha-secret - key: password2 ---- -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: ${USERNAME_3?} # {"$ref":"#/definitions/io.k8s.cli.setters.username-3"} -spec: - instanceRef: - name: postgres-ha-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - password: - valueFrom: - secretKeyRef: - name: postgres-ha-secret - key: password3 diff --git a/config-connector/solutions/sql/kpt/postgres-public/Kptfile b/config-connector/solutions/sql/kpt/postgres-public/Kptfile deleted file mode 100644 index aa7f3c465e7..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-public/Kptfile +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: kpt.dev/v1alpha1 -kind: Kptfile -metadata: - name: postgres-public -packageMetadata: - shortDescription: configures a public PostgreSQL database -openAPI: - definitions: - io.k8s.cli.setters.instance-name: - description: name of SQL instance - x-k8s-cli: - setter: - name: instance-name - value: postgres-public-solution - setBy: package-default - io.k8s.cli.setters.password: - description: password for SQL user - x-k8s-cli: - setter: - name: password - value: ${PASSWORD?} - setBy: PLACEHOLDER - io.k8s.cli.setters.authorized-network: - description: name of authorized network - x-k8s-cli: - setter: - name: authorized-network - value: postgres-public-solution-sample - setBy: package-default - io.k8s.cli.setters.authorized-network-cidr: - description: authorized network CIDR range - x-k8s-cli: - setter: - name: authorized-network-cidr - value: 130.211.0.0/28 - setBy: package-default diff --git a/config-connector/solutions/sql/kpt/postgres-public/README.md b/config-connector/solutions/sql/kpt/postgres-public/README.md deleted file mode 100644 index 992ba525124..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-public/README.md +++ /dev/null @@ -1,54 +0,0 @@ -PostgreSQL Public -================================================== -# NAME - postgres-public -# SYNOPSIS - Config Connector compatible yaml files to configure a public PostgreSQL database -# CONSUMPTION - Download the package using [kpt](https://googlecontainertools.github.io/kpt/). - ``` - kpt pkg get https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git/config-connector/solutions/sql/kpt/postgres-public postgres-public - ``` -# REQUIREMENTS - - A working Config Connector instance using the "cnrm-system" service - account with either `roles/cloudsql.admin` or `roles/owner` in the project - managed by Config Connector - - Cloud SQL Admin API enabled in the project where Config Connector is - installed - - Cloud SQL Admin API enabled in the project managed by Config Connector if - it is a different project - -# SETTERS -| NAME | VALUE | SET BY | DESCRIPTION | COUNT | -|-------------------------|---------------------------------|-----------------|-------------------------------|-------| -| authorized-network | postgres-public-solution-sample | package-default | name of authorized network | 1 | -| authorized-network-cidr | 130.211.0.0/28 | package-default | authorized network CIDR range | 1 | -| instance-name | postgres-ha-solution | package-default | name of SQL instance | 3 | -| password | ${PASSWORD?} | PLACEHOLDER | password for SQL user | 1 | -# USAGE - Configure setters using kpt as follows: - ``` - kpt cfg set . NAME VALUE - ``` - Setting placeholder values is required, changing package-defaults is optional. - - `password` should be set to a [base64 -encoded](https://kubernetes.io/docs/concepts/configuration/secret/#creating-a-secret-manually) -value. - ``` - kpt cfg set . password $(echo -n 'password' | base64) - ``` - _Optionally_ set `authorized-network`, `authorized-network-cidr`, and `instance-name` in the same manner. - - **Note:** If your SQL Instance is deleted, the name you used will be reserved -for **7 days**. In order to re-apply this solution, you need to run -`kpt cfg set . instance-name new-instance-name` to change to a new -instance name that hasn't been used in the last 7 days. - - Once the configuration is satisfactory, apply: - ``` - kubectl apply -f . - ``` -# LICENSE - Apache 2.0 - See [LICENSE](/LICENSE) for more information. - diff --git a/config-connector/solutions/sql/kpt/postgres-public/secret.yaml b/config-connector/solutions/sql/kpt/postgres-public/secret.yaml deleted file mode 100644 index 0f5ffe2f828..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-public/secret.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: v1 -kind: Secret -metadata: - name: postgres-public-secret -data: - password: ${PASSWORD?} # {"$ref":"#/definitions/io.k8s.cli.setters.password"} diff --git a/config-connector/solutions/sql/kpt/postgres-public/sqldatabase.yaml b/config-connector/solutions/sql/kpt/postgres-public/sqldatabase.yaml deleted file mode 100644 index ff75806ad27..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-public/sqldatabase.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLDatabase -metadata: - name: postgres-public-database -spec: - charset: UTF8 - collation: en_US.UTF8 - instanceRef: - name: postgres-public-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} diff --git a/config-connector/solutions/sql/kpt/postgres-public/sqlinstance.yaml b/config-connector/solutions/sql/kpt/postgres-public/sqlinstance.yaml deleted file mode 100644 index f357a6729d8..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-public/sqlinstance.yaml +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLInstance -metadata: - name: postgres-public-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} -spec: - databaseVersion: POSTGRES_9_6 - region: us-central1 - settings: - activationPolicy: ALWAYS - diskAutoresize: true - diskSize: 10 - diskType: PD_SSD - pricingPlan: PER_USE - replicationType: SYNCHRONOUS - tier: db-f1-micro - availabilityType: ZONAL - backupConfiguration: - enabled: false - ipConfiguration: - ipv4Enabled: true - requireSsl: true - authorizedNetworks: - - name: postgres-public-solution-sample # {"$ref":"#/definitions/io.k8s.cli.setters.authorized-network"} - value: 130.211.0.0/28 # {"$ref":"#/definitions/io.k8s.cli.setters.authorized-network-cidr"} - locationPreference: - zone: us-central1-c - maintenanceWindow: - day: 1 - hour: 23 - updateTrack: canary diff --git a/config-connector/solutions/sql/kpt/postgres-public/sqluser.yaml b/config-connector/solutions/sql/kpt/postgres-public/sqluser.yaml deleted file mode 100644 index bd3e1c69315..00000000000 --- a/config-connector/solutions/sql/kpt/postgres-public/sqluser.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -apiVersion: sql.cnrm.cloud.google.com/v1beta1 -kind: SQLUser -metadata: - name: default -spec: - instanceRef: - name: postgres-public-solution # {"$ref":"#/definitions/io.k8s.cli.setters.instance-name"} - password: - valueFrom: - secretKeyRef: - name: postgres-public-secret - key: password diff --git a/config-connector/tests/README.md b/config-connector/tests/README.md deleted file mode 100644 index b77a7061ed2..00000000000 --- a/config-connector/tests/README.md +++ /dev/null @@ -1,260 +0,0 @@ -# Config Connector Solutions Testing CLI - -## Introduction - -This folder contains the Go CLI and testcases for testing the Config Connector -Solutions defined in [../solutions](../solutions) folder. - -* **[ccs-test/](./ccs-test/)** - Go code for the solutions test CLI -* **[testcases/](./testcases/)** - Testcases for each solution. If has - the same folder structure as the solutions, i.e. if the solution is under - ../solutions/iam/kpt/member-iam/, then the corresponding - testcases should be under ./testcases/iam/kpt/member-iam/ - - -**Note:** We only support testing kpt solutions. - -## Requirements - -* [gsutil](https://cloud.google.com/storage/docs/gsutil_install) -* [kpt](../solutions/README.md#kpt) -* a working Kubernetes cluster with Config Connector [installed and - configured]( - https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall) - * [Default namespace]( - https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall#setting_your_default_namespace) - should be [configured to the **project** where you want to manage the GCP - resources]( - https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall#specify_where_to_create_your_resources). - -## Consumption - -1. Clone GoogleCloudPlatform/cloud-foundation-toolkit repository: - - ``` - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git - ``` - -1. Go to the tests folder: - - ``` - cd cloud-foundation-toolkit/config-connector/tests - ``` - -1. Download the `test-cli` executable file: - - ``` - gsutil cp gs://kcc-solutions-test/test-cli test-cli - ``` -1. Change the file ACL to make it executable: - - ``` - chmod +x test-cli - ``` - -1. Set the environment variables for the tests. - - 1. Make a copy of the environments template file - ([./testcases/environments.template](./testcases/environments.template)) : - - ``` - cp ./testcases/environments.template ./testcases/environments.yaml - ``` - - 1. Edit the environments file - ([./testcases/environments.yaml](./testcases/environments.yaml)) to - update the environment variables. Use **any command or editing tool** - you prefer. E.g. you can use `sed` command: - - ``` - # YOUR_PROJECT_ID should be the project ID that your default namespace - # is annotated with. - sed -i 's/${DEFAULT_PROJECT_ID?}/[YOUR_PROJECT_ID]/g' ./testcases/environments.yaml - ``` - - **Note:** Please remember to set **ALL** the environment variables. - -1. Follow the README of each solution to configure permissions for the - "cnrm-system" service account, and enable necessary APIs. - -## How to run the tests? - -### Running a single test - -In order to run the test for a specific solution, you need to set the relative -path of the solution using `--path` or `-p` flag. - -**Note:** We only support testing **kpt** solutions specified under [testcases -folder](./testcases). - -Under the [tests](.) folder, run a test by providing the relative path: -``` -./test-cli run --path [RELATIVE_PATH] # E.g. "iam/kpt/member-iam" -``` - -Most test should take a few minutes to finish. But you'll need to specify the -timeout using the optional `--timeout` or `-t` flag for special test cases: - -**Note**: Running a special test case can take up to an hour. - -* [projects/kpt/shared-vpc](../solutions/projects/kpt/shared-vpc): 10m - ``` - ./test-cli run --path projects/kpt/shared-vpc --timeout 10m - ``` -* [sql/kpt/mysql-ha](../solutions/sql/kpt/mysql-ha): 20m - ``` - ./test-cli run --path sql/kpt/mysql-ha --timeout 20m - ``` -* [sql/kpt/mysql-public](../solutions/sql/kpt/mysql-public): 10m - ``` - ./test-cli run --path sql/kpt/mysql-public --timeout 10m - ``` -* [sql/kpt/postgres-ha](../solutions/sql/kpt/postgres-ha): 20m - ``` - ./test-cli run --path sql/kpt/postgres-ha --timeout 20m - ``` -* [sql/kpt/postgres-public](../solutions/sql/kpt/postgres-public): 10m - ``` - ./test-cli run --path sql/kpt/postgres-public --timeout 10m - ``` - -After you run the command, detailed output will be printed out. If you find the -last line of the output is `======Successfully finished the test for solution -RELATIVE_PATH]======`, it means the test run is successful. Otherwise, you'll -find the detailed error message for the failure. - -### Running all the tests - -You can also run all the tests at once using `--all` or `-a` flag. You'll need -to also set the timeout to be 20m or more in order to provide sufficient timeout -for the edge cases mentioned above. - -Under the [tests](.) folder, run all the tests: - -**Note:** It will take up to a few hours to finish running this command. - -``` -./test-cli run --all --timeout 20m -``` - -After you run the command, detailed output will be printed out. If you find the -last line of the output is `======Successfully finished all the tests======`, it -means all the tests have been completed successfully. Otherwise, you'll find the -detailed error message for the failure. - -### Exceptions - -Solutions that require manual steps can't be tested using our `test-cli`. Here -is the list of exceptions: - -* [projects/kpt/project-hierarchy]( - ../solutions/projects/kpt/project-hierarchy) - need to manually figure out - the folder ID before creating projects ([GitHub issue]( - https://github.com/GoogleCloudPlatform/k8s-config-connector/issues/104)) -* [sql/kpt/mysql-private](../solutions/sql/kpt/mysql-private) - need to create - resources following the specific order ([GitHub issue]( - https://github.com/GoogleCloudPlatform/k8s-config-connector/issues/148)) - -## How to add new tests? - -**Note:** We only support adding tests for kpt solutions. - -If you want to create tests for solution -`[SOLUTION_AREA]/kpt/[SOLUTION_NAME]` (e.g. `iam/kpt/member-iam`): - -1. Under your local copy of your - [forked](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) - cloud-foundation-toolkit repository, go to the testcases folder: - - ``` - cd cloud-foundation-toolkit/config-connector/tests/testcases - ``` - -1. Create the folder if it doesn't exist: - - ``` - mkdir -p [SOLUTION_AREA]/kpt/[SOLUTION_NAME] - ``` - -1. Create the testcase YAML file `required_fields_only.yaml` from - `test_values.template` file: - - ``` - cp test_values.template [SOLUTION_AREA]/kpt/[SOLUTION_NAME]/required_fields_only.yaml - ``` - - **Note:** We only support one testcase, which only set required kpt setters - (setters set by PLACEHOLDER). The only exception is test cases for SQL - solutions. If the test SQL Instance is deleted, the name will be reserved - for **7 days**. In order to redo the test, the `instance-name` setter is - required in SQL test cases, and the name of the test data file is changed to - `required_fields_with_sql_instance_name.yaml`. - -1. Check if the solution requires any PLACEHOLDERs to be set: - - ``` - kpt cfg list-setters ../../solutions/[SOLUTION_AREA]/kpt/[SOLUTION_NAME] - ``` - -1. For each setter that is a placeholder, decide if the value should be a **new - globally unique** value. E.g., the value of a new project ID. - - 1. If the value **MUST** be globally unique, append the following key-value - pair in the testcase YAML file: - - ``` - # \$ENV_VAR is the placeholder to reference to ENV_VAR you've set in the - # environments file (./environments.yaml). - # In order to create globally unique resource names, you need to append - # `-\$RANDOM_ID` after the `\$ENV_VAR`. E.g. `\$PROJECT_ID-\$RANDOM_ID`. - echo "[SETTER_NAME]: \$ENV_VAR-\$RANDOM_ID" >> \ - [SOLUTION_AREA]/kpt/[SOLUTION_NAME]/required_fields_only.yaml - ``` - - 1. If the value doesn't need to be globally unique, append the following - key-value pair in the testcase YAML file: - ``` - # \$ENV_VAR is the placeholder to reference to ENV_VAR you've set in the - # environments file (./environments.yaml). E.g. `\$PROJECT_ID`. - echo "[SETTER_NAME]: \$ENV_VAR" >> \ - [SOLUTION_AREA]/kpt/[SOLUTION_NAME]/required_fields_only.yaml - ``` - - **Note:** Please don't use $ENV_VAR directly in the command. The back slash - ("\\") is necessary because here, it is a string, but not a variable. We - don't want to set the value of ENV_VAR in the testcase YAML file. - - **Note:** `$RANDOM_ID` is a placeholder for the autogen randomized suffix, - and `RANDOM_ID` shouldn't be the name of the env var. - -1. Check the environments template file - ([./environments.template](./environments.template)). For each environment - variable you need but does **NOT** exist in the environments template file, - add it: - - ``` - echo "ENV_VAR: \${ENV_VAR?}" >> ./environments.template - ``` - -1. Create the YAML file for the original values of the setters from - `test_values.template` file: - - ``` - cp test_values.template [SOLUTION_AREA]/kpt/[SOLUTION_NAME]/original_values.yaml - ``` - -1. For each placeholder setter and its original value (you can find them by - running - `kpt cfg list-setters ../../solutions/[SOLUTION_AREA]/kpt/[SOLUTION_NAME]`), - append the key-pairs to the original values YAML file: - - ``` - # You need to add the back slash ("\") in front of the original value - # because it is placeholder starting with "$". - echo "[SETTER_NAME]: \[ORIGINAL_VALUE]" >> \ - [SOLUTION_AREA]/kpt/[SOLUTION_NAME]/original_values.yaml - ``` - -# License - - Apache 2.0 - See [LICENSE](/LICENSE) for more information. diff --git a/config-connector/tests/ccs-test/cmd/root.go b/config-connector/tests/ccs-test/cmd/root.go deleted file mode 100644 index e105c9c3f32..00000000000 --- a/config-connector/tests/ccs-test/cmd/root.go +++ /dev/null @@ -1,467 +0,0 @@ -// Copyright 2020 Google LLC -// -// 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 cmd - -import ( - "errors" - "fmt" - "io/ioutil" - "log" - "os" - "os/exec" - "path/filepath" - "regexp" - "strings" - "time" - - "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/config-connector/tests/ccs-test/util" - "github.com/ghodss/yaml" - "github.com/spf13/cobra" -) - -const ( - kubectlBinaryName = "kubectl" - testsDirPath = "config-connector/tests" - originalValuesFileName = "original_values.yaml" - requiredFieldsOnlyFileName = "required_fields_only.yaml" - requiredFieldsWithSQLInstanceNameFileName = "required_fields_with_sql_instance_name.yaml" - envFileRelativePath = "testcases/environments.yaml" - yamlFileSuffix = ".yaml" -) - -var ( - relativePath string - timeout string - testAll bool - - // Regex of the env vars that require a randomized suffix. - // It should be in the format of $ENV_VAR-$RANDOM_ID. - re = regexp.MustCompile(`\$(?P[A-Z]+|[A-Z]+[A-Z_]*[A-Z]+)(-\$RANDOM_ID)`) - - testFileNames = []string{requiredFieldsOnlyFileName, requiredFieldsWithSQLInstanceNameFileName} - - rootCmd = &cobra.Command{ - Use: "ccs-test", - Short: "CLI to test Config Connector Solutions", - Long: `CLI to test Config Connector Solutions`, - } - - runCmd = &cobra.Command{ - Use: "run", - Short: "Run a given test by the relative path --path", - Long: "Run a given test by the relative path --path", - Run: func(cmd *cobra.Command, args []string) { - // Check the required flag. - if relativePath == "" && !testAll { - log.Fatal("either \"--path\" or \"--all\" must be specified to run test") - } - - if relativePath != "" && testAll { - log.Fatal("\"--path\" and \"--all\" are mutually exclusive flags") - } - - relativePaths := []string{} - if testAll { - minTimeout, _ := time.ParseDuration("20m") - currentTimeout, err := time.ParseDuration(timeout) - if err != nil { - log.Fatalf("error setting the timeout to %q: %v", timeout, err) - } - - if currentTimeout < minTimeout { - log.Fatalf("\"--timeout\" must be set to 20m or more if --all is set") - } - - if relativePaths, err = getAllRelativePaths(); err != nil { - log.Fatalf("error retrieving the relative paths for all the test cases: %v", err) - } - - // Go through all the folders recursively under "./testcases" - log.Println("======Running all the tests...======\n") - - } else { - relativePaths = append(relativePaths, relativePath) - } - - for _, relativePath := range relativePaths { - log.Printf("======Testing solution %q...======\n", relativePath) - - // Calculate the path to testcase directory and solution directory. - current, err := os.Getwd() - if err != nil { - log.Fatalf("error retrieving the current directory: %v", err) - } - if !strings.HasSuffix(current, testsDirPath) { - log.Fatalf("error running tests under directory: %s. Please "+ - "follow the instructions in the README.", current) - } - testCasePath := filepath.Join(current, "testcases", relativePath) - envFilePath := filepath.Join(current, envFileRelativePath) - - parent := filepath.Dir(current) - solutionPath := filepath.Join(parent, "solutions", relativePath) - - // Clean up the left over resources if there are any. - if err := deleteResources(solutionPath); err != nil { - log.Fatalf("error cleaning up resources before running the "+ - "test. Please clean them up manually: %v", err) - } - - // Fetch the testcase values and run the test. - envValues := make(map[string]string) - if err := parseYamlToStringMap(envFilePath, envValues); err != nil { - log.Fatalf("error retrieving envrionment variables: %v", err) - } - - originalValues := make(map[string]string) - if err := parseYamlToStringMap(filepath.Join(testCasePath, originalValuesFileName), originalValues); err != nil { - log.Fatalf("error retrieving orginal values: %v", err) - } - - testValues := make(map[string]string) - for _, testFileName := range testFileNames { - if filePath, exists := hasTestFile(testCasePath, testFileName); exists { - if err := parseYamlToStringMap(filePath, testValues); err != nil { - log.Fatalf("error retrieving test values: %v", err) - } - break - } - } - - // Generate the random IDs first. - randomId, err := util.GenerateRandomizedSuffix() - if err != nil { - log.Fatalf("error generating the randomized suffix for resource names: %v", err) - } - - // Then populate the values of the env var and the random id. - realValues, err := finalizeValues(randomId, envValues, testValues) - if err != nil { - log.Fatalf("error finalizing test values: %v", err) - } - - if err := runKptTestcase(solutionPath, timeout, realValues, originalValues); err != nil { - log.Fatalf("test failed for solution %q: %v", relativePath, err) - } - - log.Printf("======Successfully finished the test for solution %q======\n", relativePath) - - } - - if testAll { - log.Println("======Successfully finished all the tests======\n") - } - }, - } -) - -func init() { - runCmd.PersistentFlags().StringVarP(&relativePath, "path", "p", "", "[Required][Mutually Exclusive with --all] The relative path to the folder of the solution's test cases, e.g. `iam/kpt/member-iam`.") - runCmd.PersistentFlags().StringVarP(&timeout, "timeout", "t", "60s", "[Optional] The timeout used to wait for resources to be READY. Default: `60s`.") - runCmd.PersistentFlags().BoolVarP(&testAll, "all", "a", false, "[Required][Mutually Exclusive with --path] Running all the solution test cases. Meanwhile, --timeout MUST be set to `20m` or more. Default: `false`.") - rootCmd.AddCommand(runCmd) -} - -// Execute adds all child commands to the root command and sets flags appropriately. -// This is called by main.main(). It only needs to happen once to the rootCmd. -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) - } -} - -func getAllRelativePaths() ([]string, error) { - var queue []string - var relativePaths []string - - current, err := os.Getwd() - if err != nil { - return nil, fmt.Errorf("error retrieving the current directory: %v", err) - } - if !strings.HasSuffix(current, testsDirPath) { - return nil, fmt.Errorf("error running tests under directory: %s. "+ - "Please follow the instructions in the README.", current) - } - - queue = append(queue, filepath.Join(current, "testcases")) - for len(queue) > 0 { - curDir := queue[0] - if len(queue) == 1 { - queue = []string{} - } else { - queue = queue[1:] - } - - fileInfos, err := ioutil.ReadDir(curDir) - if err != nil { - return nil, fmt.Errorf("error reading directory %q: %v", curDir, err) - } - // Loop through all the files under current directory. - for _, fileInfo := range fileInfos { - if fileInfo.IsDir() { - queue = append(queue, filepath.Join(curDir, fileInfo.Name())) - continue - } - // If any file under this directory is a YAML file, it means that - // we've reached the test values files and we should record the - // relative path. - if strings.HasSuffix(fileInfo.Name(), ".yaml") && fileInfo.Name() != "environments.yaml" { - relativePaths = append(relativePaths, strings.Split(curDir, "testcases/")[1]) - break - } - } - } - - return relativePaths, nil -} - -func parseYamlToStringMap(filePath string, result map[string]string) error { - bytes, err := ioutil.ReadFile(filePath) - if err != nil { - return fmt.Errorf("error reading file '%s': %v", filePath, err) - } - err = yaml.Unmarshal(bytes, &result) - if err != nil { - return fmt.Errorf("error unmarshaling file '%s': %v", filePath, err) - } - return nil -} - -func hasTestFile(testCasePath, fileName string) (string, bool) { - filePath := filepath.Join(testCasePath, fileName) - if _, err := os.Stat(filePath); err != nil { - return filePath, false - } - return filePath, true -} - -func finalizeValues(randomId string, envValues map[string]string, testValues map[string]string) (map[string]string, error) { - realValues := make(map[string]string) - for key, value := range testValues { - if !strings.HasPrefix(value, "$") { - return nil, fmt.Errorf("test value for setter %q is %q, expect a reference, e.g. $ENV_VAR", key, value) - } - realValue := "" - ok := false - if re.MatchString(value) { - submatch := re.FindStringSubmatch(value) - if len(submatch) == 0 { - return nil, fmt.Errorf("env var name is invalid in test value %q", value) - } - subexpNames := re.SubexpNames() - for i, name := range subexpNames { - if name == "EnvName" { - prefix, ok := envValues[submatch[i]] - if !ok { - return nil, fmt.Errorf("couldn't find the env var %q", submatch[i]) - } - realValue = fmt.Sprintf("%s-%s", prefix, randomId) - break - } - } - } else { - realValue, ok = envValues[strings.TrimPrefix(value, "$")] - if !ok { - return nil, fmt.Errorf("couldn't find the env var %q", strings.TrimPrefix(value, "$")) - } - } - realValues[key] = realValue - } - - return realValues, nil -} - -func runKptTestcase(solutionPath string, timeout string, testValues map[string]string, originalValues map[string]string) error { - // Set the kpt setters defined in the testcase. - log.Println("======Setting the kpt setters...======") - for key, value := range testValues { - output, err := exec.Command("kpt", "cfg", "set", solutionPath, key, - value, "--set-by", "test").CombinedOutput() - if err != nil { - log.Printf("stderr:\n%v\nstdout:\n%s\n", err, string(output)) - errToReturn := fmt.Errorf("error setting setter '%s' with value "+ - "'%s': %v\nstdout: %s", key, value, err, string(output)) - - // Clean up before exit with errors. - if err := resetKptSetters(solutionPath, originalValues); err != nil { - return concatErrors( - "error resetting kpt setters before exiting", - err, errToReturn) - } - - return errToReturn - } - log.Printf("%s\n", string(output)) - } - log.Println("======Successfully set the kpt setters======") - - // Apply all the resources. - log.Println("======Creating the resources...======") - output, err := exec.Command("kubectl", "create", "-f", solutionPath).CombinedOutput() - if err != nil { - log.Printf("stderr:\n%v\nstdout:\n%s\n", err, string(output)) - errToReturn := fmt.Errorf("error creating resources: %v\nstdout: %s", err, string(output)) - - // Clean up before exit with errors. - if err := cleanUp(solutionPath, originalValues); err != nil { - return concatErrors( - "error cleanning up resources before exiting", - err, errToReturn) - } - return errToReturn - } - log.Printf("%s\n", string(output)) - log.Println("======Successfully created the resources======") - - // Wait for all the resources to be ready. - if err := verifyReadyCondition(solutionPath, timeout); err != nil { - errToReturn := fmt.Errorf("error verifying the ready condition: %v", err) - - // Clean up before exit with errors. - if err := cleanUp(solutionPath, originalValues); err != nil { - return concatErrors( - "error cleanning up resources before exiting", - err, errToReturn) - } - return errToReturn - } - - // Clean up. - return cleanUp(solutionPath, originalValues) -} - -func cleanUp(solutionPath string, originalValues map[string]string) error { - resourceErr := deleteResources(solutionPath) - setterErr := resetKptSetters(solutionPath, originalValues) - if resourceErr != nil || setterErr != nil { - return concatErrors( - fmt.Sprintf("error cleanning up the test for solution %q. "+ - "Please manually delete the Config Connector resources and "+ - "reset the kpt setters", solutionPath), - resourceErr, setterErr) - } - return nil -} - -func verifyReadyCondition(solutionPath string, timeout string) error { - log.Println("======Verifying that all the Config Connector resources are ready...======") - - files, err := ioutil.ReadDir(solutionPath) - if err != nil { - return fmt.Errorf("error reading solution directory %q: %v", solutionPath, err) - } - - for _, file := range files { - // We should only verify the YAML config files for Config Connector - // resources. - fileName := file.Name() - if !isResourceYamlFile(fileName) { - continue - } - - resourceFilePath := filepath.Join(solutionPath, fileName) - output, err := exec.Command("kubectl", "wait", "--for=condition=ready", - "-f", resourceFilePath, fmt.Sprintf("--timeout=%s", timeout)).CombinedOutput() - if err != nil { - log.Printf("stderr:\n%v\nstdout:\n%s\n", err, string(output)) - errToReturn := fmt.Errorf("resource in file %q is not ready in %s: %v\nstdout: %s", fileName, timeout, err, string(output)) - status, err := getSolutionResourceStatus(solutionPath) - if err != nil { - return concatErrors("error printing resource status", err, errToReturn) - } - - return fmt.Errorf("%v\nResource status:\n%s", errToReturn, status) - } - log.Printf("%s\n", string(output)) - - } - - log.Println("======All the Config Connector resrouces are ready======") - return nil -} - -func isResourceYamlFile(fileName string) bool { - return strings.HasSuffix(fileName, yamlFileSuffix) && - !strings.Contains(fileName, "namespace") && - !strings.Contains(fileName, "secret") -} - -func getSolutionResourceStatus(solutionPath string) (string, error) { - output, err := exec.Command("kubectl", "get", "-f", solutionPath, - "-o=custom-columns=NAME:.metadata.name,KIND:.kind,CONDITION.REASON:.status.conditions[0].reason,CONDITION.MESSAGE:.status.conditions[0].message"). - CombinedOutput() - - if err != nil { - log.Printf("stderr:\n%v\nstdout:\n%s\n", err, string(output)) - return "", fmt.Errorf("error getting the status of the resource(s): %v\nstdout: %s", err, string(output)) - } - - return string(output), nil -} - -func deleteResources(solutionPath string) error { - log.Println("======Deleting the resources...======") - output, err := exec.Command("kubectl", "delete", "-f", solutionPath, "--wait").CombinedOutput() - if err != nil { - log.Printf("stderr:\n%v\nstdout:\n%s\n", err, string(output)) - err = fmt.Errorf("error deleting resources: %v\nstdout: %s", err, string(output)) - if isNotFoundErrorOnly(err) { - log.Println(err) - log.Println("======Finished deleting the resources======") - return nil - } - return fmt.Errorf("error deleting resources: %v\nstdout: %s", err, string(output)) - } - log.Printf("%s\n", output) - log.Println("======Successfully deleted the resources======") - return nil -} - -func isNotFoundErrorOnly(err error) bool { - numErrors := strings.Count(err.Error(), "Error from server") - numNotFoundErrors := strings.Count(err.Error(), "Error from server (NotFound)") - return numErrors == numNotFoundErrors -} - -func resetKptSetters(solutionPath string, originalValues map[string]string) error { - log.Println("======Resetting the kpt setters...======") - for key, value := range originalValues { - setByUser := "PLACEHOLDER" - if !strings.HasPrefix(value, "$") { - setByUser = "package-default" - } - - output, err := exec.Command("kpt", "cfg", "set", solutionPath, key, value, "--set-by", setByUser).CombinedOutput() - if err != nil { - log.Printf("stderr:\n%v\nstdout:\n%s\n", err, string(output)) - return fmt.Errorf("error setting setter '%s' back to the original value '%s': %v\nstdout: %s", key, value, err, string(output)) - } - log.Printf("%s\n", string(output)) - } - log.Println("======Successfully reset the kpt setters======") - return nil -} - -func concatErrors(msg string, errs ...error) error { - errToReturn := errors.New(msg) - for _, err := range errs { - if err == nil { - continue - } - errToReturn = fmt.Errorf("%v:%v", errToReturn, err) - } - return errToReturn -} diff --git a/config-connector/tests/ccs-test/go.mod b/config-connector/tests/ccs-test/go.mod deleted file mode 100644 index 4b463a7c038..00000000000 --- a/config-connector/tests/ccs-test/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -go 1.13 - -require ( - github.com/ghodss/yaml v1.0.0 - github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b - github.com/spf13/cobra v1.0.0 -) - -module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/config-connector/tests/ccs-test diff --git a/config-connector/tests/ccs-test/go.sum b/config-connector/tests/ccs-test/go.sum deleted file mode 100644 index c21d6d34ef8..00000000000 --- a/config-connector/tests/ccs-test/go.sum +++ /dev/null @@ -1,133 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -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/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -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/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -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/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -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 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/config-connector/tests/ccs-test/main.go b/config-connector/tests/ccs-test/main.go deleted file mode 100644 index 2ba5f7ca198..00000000000 --- a/config-connector/tests/ccs-test/main.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2020 Google LLC -// -// 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 main - -import ( - "github.com/golang/glog" - "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/config-connector/tests/ccs-test/cmd" -) - -func main() { - defer glog.Flush() - - cmd.Execute() -} diff --git a/config-connector/tests/ccs-test/util/util.go b/config-connector/tests/ccs-test/util/util.go deleted file mode 100644 index 14a96d952f5..00000000000 --- a/config-connector/tests/ccs-test/util/util.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2020 Google LLC -// -// 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 util - -import ( - "crypto/rand" - "encoding/base32" - "fmt" - "strings" -) - -// Generates a random ID containing [2-7][a-z] (base32 alphabets) of length 4. -func GenerateRandomizedSuffix() (string, error) { - // 3 bytes will generate base32 encoded string of length 5. - b := make([]byte, 3) - _, err := rand.Read(b) - if err != nil { - return "", fmt.Errorf("error generating random bytes: %v", err) - } - - return strings.ToLower(base32.StdEncoding.EncodeToString(b)[0:4]), nil -} \ No newline at end of file diff --git a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/.gitignore b/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/.gitignore deleted file mode 100644 index e256a31e00a..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# OSX leaves these everywhere on SMB shares -._* - -# Eclipse files -.classpath -.project -.settings/** - -# Emacs save files -*~ - -# Vim-related files -[._]*.s[a-w][a-z] -[._]s[a-w][a-z] -*.un~ -Session.vim -.netrwhist - -# Go test binaries -*.test diff --git a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/.travis.yml b/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/.travis.yml deleted file mode 100644 index 0e9d6edc010..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: go -go: - - 1.3 - - 1.4 -script: - - go test - - go build diff --git a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/LICENSE b/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/LICENSE deleted file mode 100644 index 7805d36de73..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/LICENSE +++ /dev/null @@ -1,50 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Sam Ghods - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/README.md b/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/README.md deleted file mode 100644 index 0200f75b4d1..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# YAML marshaling and unmarshaling support for Go - -[![Build Status](https://travis-ci.org/ghodss/yaml.svg)](https://travis-ci.org/ghodss/yaml) - -## Introduction - -A wrapper around [go-yaml](https://github.com/go-yaml/yaml) designed to enable a better way of handling YAML when marshaling to and from structs. - -In short, this library first converts YAML to JSON using go-yaml and then uses `json.Marshal` and `json.Unmarshal` to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods `MarshalJSON` and `UnmarshalJSON` unlike go-yaml. For a detailed overview of the rationale behind this method, [see this blog post](http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/). - -## Compatibility - -This package uses [go-yaml](https://github.com/go-yaml/yaml) and therefore supports [everything go-yaml supports](https://github.com/go-yaml/yaml#compatibility). - -## Caveats - -**Caveat #1:** When using `yaml.Marshal` and `yaml.Unmarshal`, binary data should NOT be preceded with the `!!binary` YAML tag. If you do, go-yaml will convert the binary data from base64 to native binary data, which is not compatible with JSON. You can still use binary in your YAML files though - just store them without the `!!binary` tag and decode the base64 in your code (e.g. in the custom JSON methods `MarshalJSON` and `UnmarshalJSON`). This also has the benefit that your YAML and your JSON binary data will be decoded exactly the same way. As an example: - -``` -BAD: - exampleKey: !!binary gIGC - -GOOD: - exampleKey: gIGC -... and decode the base64 data in your code. -``` - -**Caveat #2:** When using `YAMLToJSON` directly, maps with keys that are maps will result in an error since this is not supported by JSON. This error will occur in `Unmarshal` as well since you can't unmarshal map keys anyways since struct fields can't be keys. - -## Installation and usage - -To install, run: - -``` -$ go get github.com/ghodss/yaml -``` - -And import using: - -``` -import "github.com/ghodss/yaml" -``` - -Usage is very similar to the JSON library: - -```go -package main - -import ( - "fmt" - - "github.com/ghodss/yaml" -) - -type Person struct { - Name string `json:"name"` // Affects YAML field names too. - Age int `json:"age"` -} - -func main() { - // Marshal a Person struct to YAML. - p := Person{"John", 30} - y, err := yaml.Marshal(p) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(y)) - /* Output: - age: 30 - name: John - */ - - // Unmarshal the YAML back into a Person struct. - var p2 Person - err = yaml.Unmarshal(y, &p2) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(p2) - /* Output: - {John 30} - */ -} -``` - -`yaml.YAMLToJSON` and `yaml.JSONToYAML` methods are also available: - -```go -package main - -import ( - "fmt" - - "github.com/ghodss/yaml" -) - -func main() { - j := []byte(`{"name": "John", "age": 30}`) - y, err := yaml.JSONToYAML(j) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(y)) - /* Output: - name: John - age: 30 - */ - j2, err := yaml.YAMLToJSON(y) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(j2)) - /* Output: - {"age":30,"name":"John"} - */ -} -``` diff --git a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/fields.go b/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/fields.go deleted file mode 100644 index 58600740266..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/fields.go +++ /dev/null @@ -1,501 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. -package yaml - -import ( - "bytes" - "encoding" - "encoding/json" - "reflect" - "sort" - "strings" - "sync" - "unicode" - "unicode/utf8" -) - -// indirect walks down v allocating pointers as needed, -// until it gets to a non-pointer. -// if it encounters an Unmarshaler, indirect stops and returns that. -// if decodingNull is true, indirect stops at the last pointer so it can be set to nil. -func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { - // If v is a named type and is addressable, - // start with its address, so that if the type has pointer methods, - // we find them. - if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() { - v = v.Addr() - } - for { - // Load value from interface, but only if the result will be - // usefully addressable. - if v.Kind() == reflect.Interface && !v.IsNil() { - e := v.Elem() - if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { - v = e - continue - } - } - - if v.Kind() != reflect.Ptr { - break - } - - if v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() { - break - } - if v.IsNil() { - if v.CanSet() { - v.Set(reflect.New(v.Type().Elem())) - } else { - v = reflect.New(v.Type().Elem()) - } - } - if v.Type().NumMethod() > 0 { - if u, ok := v.Interface().(json.Unmarshaler); ok { - return u, nil, reflect.Value{} - } - if u, ok := v.Interface().(encoding.TextUnmarshaler); ok { - return nil, u, reflect.Value{} - } - } - v = v.Elem() - } - return nil, nil, v -} - -// A field represents a single field found in a struct. -type field struct { - name string - nameBytes []byte // []byte(name) - equalFold func(s, t []byte) bool // bytes.EqualFold or equivalent - - tag bool - index []int - typ reflect.Type - omitEmpty bool - quoted bool -} - -func fillField(f field) field { - f.nameBytes = []byte(f.name) - f.equalFold = foldFunc(f.nameBytes) - return f -} - -// byName sorts field by name, breaking ties with depth, -// then breaking ties with "name came from json tag", then -// breaking ties with index sequence. -type byName []field - -func (x byName) Len() int { return len(x) } - -func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } - -func (x byName) Less(i, j int) bool { - if x[i].name != x[j].name { - return x[i].name < x[j].name - } - if len(x[i].index) != len(x[j].index) { - return len(x[i].index) < len(x[j].index) - } - if x[i].tag != x[j].tag { - return x[i].tag - } - return byIndex(x).Less(i, j) -} - -// byIndex sorts field by index sequence. -type byIndex []field - -func (x byIndex) Len() int { return len(x) } - -func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] } - -func (x byIndex) Less(i, j int) bool { - for k, xik := range x[i].index { - if k >= len(x[j].index) { - return false - } - if xik != x[j].index[k] { - return xik < x[j].index[k] - } - } - return len(x[i].index) < len(x[j].index) -} - -// typeFields returns a list of fields that JSON should recognize for the given type. -// The algorithm is breadth-first search over the set of structs to include - the top struct -// and then any reachable anonymous structs. -func typeFields(t reflect.Type) []field { - // Anonymous fields to explore at the current level and the next. - current := []field{} - next := []field{{typ: t}} - - // Count of queued names for current level and the next. - count := map[reflect.Type]int{} - nextCount := map[reflect.Type]int{} - - // Types already visited at an earlier level. - visited := map[reflect.Type]bool{} - - // Fields found. - var fields []field - - for len(next) > 0 { - current, next = next, current[:0] - count, nextCount = nextCount, map[reflect.Type]int{} - - for _, f := range current { - if visited[f.typ] { - continue - } - visited[f.typ] = true - - // Scan f.typ for fields to include. - for i := 0; i < f.typ.NumField(); i++ { - sf := f.typ.Field(i) - if sf.PkgPath != "" { // unexported - continue - } - tag := sf.Tag.Get("json") - if tag == "-" { - continue - } - name, opts := parseTag(tag) - if !isValidTag(name) { - name = "" - } - index := make([]int, len(f.index)+1) - copy(index, f.index) - index[len(f.index)] = i - - ft := sf.Type - if ft.Name() == "" && ft.Kind() == reflect.Ptr { - // Follow pointer. - ft = ft.Elem() - } - - // Record found field and index sequence. - if name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct { - tagged := name != "" - if name == "" { - name = sf.Name - } - fields = append(fields, fillField(field{ - name: name, - tag: tagged, - index: index, - typ: ft, - omitEmpty: opts.Contains("omitempty"), - quoted: opts.Contains("string"), - })) - if count[f.typ] > 1 { - // If there were multiple instances, add a second, - // so that the annihilation code will see a duplicate. - // It only cares about the distinction between 1 or 2, - // so don't bother generating any more copies. - fields = append(fields, fields[len(fields)-1]) - } - continue - } - - // Record new anonymous struct to explore in next round. - nextCount[ft]++ - if nextCount[ft] == 1 { - next = append(next, fillField(field{name: ft.Name(), index: index, typ: ft})) - } - } - } - } - - sort.Sort(byName(fields)) - - // Delete all fields that are hidden by the Go rules for embedded fields, - // except that fields with JSON tags are promoted. - - // The fields are sorted in primary order of name, secondary order - // of field index length. Loop over names; for each name, delete - // hidden fields by choosing the one dominant field that survives. - out := fields[:0] - for advance, i := 0, 0; i < len(fields); i += advance { - // One iteration per name. - // Find the sequence of fields with the name of this first field. - fi := fields[i] - name := fi.name - for advance = 1; i+advance < len(fields); advance++ { - fj := fields[i+advance] - if fj.name != name { - break - } - } - if advance == 1 { // Only one field with this name - out = append(out, fi) - continue - } - dominant, ok := dominantField(fields[i : i+advance]) - if ok { - out = append(out, dominant) - } - } - - fields = out - sort.Sort(byIndex(fields)) - - return fields -} - -// dominantField looks through the fields, all of which are known to -// have the same name, to find the single field that dominates the -// others using Go's embedding rules, modified by the presence of -// JSON tags. If there are multiple top-level fields, the boolean -// will be false: This condition is an error in Go and we skip all -// the fields. -func dominantField(fields []field) (field, bool) { - // The fields are sorted in increasing index-length order. The winner - // must therefore be one with the shortest index length. Drop all - // longer entries, which is easy: just truncate the slice. - length := len(fields[0].index) - tagged := -1 // Index of first tagged field. - for i, f := range fields { - if len(f.index) > length { - fields = fields[:i] - break - } - if f.tag { - if tagged >= 0 { - // Multiple tagged fields at the same level: conflict. - // Return no field. - return field{}, false - } - tagged = i - } - } - if tagged >= 0 { - return fields[tagged], true - } - // All remaining fields have the same length. If there's more than one, - // we have a conflict (two fields named "X" at the same level) and we - // return no field. - if len(fields) > 1 { - return field{}, false - } - return fields[0], true -} - -var fieldCache struct { - sync.RWMutex - m map[reflect.Type][]field -} - -// cachedTypeFields is like typeFields but uses a cache to avoid repeated work. -func cachedTypeFields(t reflect.Type) []field { - fieldCache.RLock() - f := fieldCache.m[t] - fieldCache.RUnlock() - if f != nil { - return f - } - - // Compute fields without lock. - // Might duplicate effort but won't hold other computations back. - f = typeFields(t) - if f == nil { - f = []field{} - } - - fieldCache.Lock() - if fieldCache.m == nil { - fieldCache.m = map[reflect.Type][]field{} - } - fieldCache.m[t] = f - fieldCache.Unlock() - return f -} - -func isValidTag(s string) bool { - if s == "" { - return false - } - for _, c := range s { - switch { - case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c): - // Backslash and quote chars are reserved, but - // otherwise any punctuation chars are allowed - // in a tag name. - default: - if !unicode.IsLetter(c) && !unicode.IsDigit(c) { - return false - } - } - } - return true -} - -const ( - caseMask = ^byte(0x20) // Mask to ignore case in ASCII. - kelvin = '\u212a' - smallLongEss = '\u017f' -) - -// foldFunc returns one of four different case folding equivalence -// functions, from most general (and slow) to fastest: -// -// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8 -// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S') -// 3) asciiEqualFold, no special, but includes non-letters (including _) -// 4) simpleLetterEqualFold, no specials, no non-letters. -// -// The letters S and K are special because they map to 3 runes, not just 2: -// * S maps to s and to U+017F 'ſ' Latin small letter long s -// * k maps to K and to U+212A 'K' Kelvin sign -// See http://play.golang.org/p/tTxjOc0OGo -// -// The returned function is specialized for matching against s and -// should only be given s. It's not curried for performance reasons. -func foldFunc(s []byte) func(s, t []byte) bool { - nonLetter := false - special := false // special letter - for _, b := range s { - if b >= utf8.RuneSelf { - return bytes.EqualFold - } - upper := b & caseMask - if upper < 'A' || upper > 'Z' { - nonLetter = true - } else if upper == 'K' || upper == 'S' { - // See above for why these letters are special. - special = true - } - } - if special { - return equalFoldRight - } - if nonLetter { - return asciiEqualFold - } - return simpleLetterEqualFold -} - -// equalFoldRight is a specialization of bytes.EqualFold when s is -// known to be all ASCII (including punctuation), but contains an 's', -// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t. -// See comments on foldFunc. -func equalFoldRight(s, t []byte) bool { - for _, sb := range s { - if len(t) == 0 { - return false - } - tb := t[0] - if tb < utf8.RuneSelf { - if sb != tb { - sbUpper := sb & caseMask - if 'A' <= sbUpper && sbUpper <= 'Z' { - if sbUpper != tb&caseMask { - return false - } - } else { - return false - } - } - t = t[1:] - continue - } - // sb is ASCII and t is not. t must be either kelvin - // sign or long s; sb must be s, S, k, or K. - tr, size := utf8.DecodeRune(t) - switch sb { - case 's', 'S': - if tr != smallLongEss { - return false - } - case 'k', 'K': - if tr != kelvin { - return false - } - default: - return false - } - t = t[size:] - - } - if len(t) > 0 { - return false - } - return true -} - -// asciiEqualFold is a specialization of bytes.EqualFold for use when -// s is all ASCII (but may contain non-letters) and contains no -// special-folding letters. -// See comments on foldFunc. -func asciiEqualFold(s, t []byte) bool { - if len(s) != len(t) { - return false - } - for i, sb := range s { - tb := t[i] - if sb == tb { - continue - } - if ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') { - if sb&caseMask != tb&caseMask { - return false - } - } else { - return false - } - } - return true -} - -// simpleLetterEqualFold is a specialization of bytes.EqualFold for -// use when s is all ASCII letters (no underscores, etc) and also -// doesn't contain 'k', 'K', 's', or 'S'. -// See comments on foldFunc. -func simpleLetterEqualFold(s, t []byte) bool { - if len(s) != len(t) { - return false - } - for i, b := range s { - if b&caseMask != t[i]&caseMask { - return false - } - } - return true -} - -// tagOptions is the string following a comma in a struct field's "json" -// tag, or the empty string. It does not include the leading comma. -type tagOptions string - -// parseTag splits a struct field's json tag into its name and -// comma-separated options. -func parseTag(tag string) (string, tagOptions) { - if idx := strings.Index(tag, ","); idx != -1 { - return tag[:idx], tagOptions(tag[idx+1:]) - } - return tag, tagOptions("") -} - -// Contains reports whether a comma-separated list of options -// contains a particular substr flag. substr must be surrounded by a -// string boundary or commas. -func (o tagOptions) Contains(optionName string) bool { - if len(o) == 0 { - return false - } - s := string(o) - for s != "" { - var next string - i := strings.Index(s, ",") - if i >= 0 { - s, next = s[:i], s[i+1:] - } - if s == optionName { - return true - } - s = next - } - return false -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/yaml.go b/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/yaml.go deleted file mode 100644 index 4fb4054a8b7..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/ghodss/yaml/yaml.go +++ /dev/null @@ -1,277 +0,0 @@ -package yaml - -import ( - "bytes" - "encoding/json" - "fmt" - "reflect" - "strconv" - - "gopkg.in/yaml.v2" -) - -// Marshals the object into JSON then converts JSON to YAML and returns the -// YAML. -func Marshal(o interface{}) ([]byte, error) { - j, err := json.Marshal(o) - if err != nil { - return nil, fmt.Errorf("error marshaling into JSON: %v", err) - } - - y, err := JSONToYAML(j) - if err != nil { - return nil, fmt.Errorf("error converting JSON to YAML: %v", err) - } - - return y, nil -} - -// Converts YAML to JSON then uses JSON to unmarshal into an object. -func Unmarshal(y []byte, o interface{}) error { - vo := reflect.ValueOf(o) - j, err := yamlToJSON(y, &vo) - if err != nil { - return fmt.Errorf("error converting YAML to JSON: %v", err) - } - - err = json.Unmarshal(j, o) - if err != nil { - return fmt.Errorf("error unmarshaling JSON: %v", err) - } - - return nil -} - -// Convert JSON to YAML. -func JSONToYAML(j []byte) ([]byte, error) { - // Convert the JSON to an object. - var jsonObj interface{} - // We are using yaml.Unmarshal here (instead of json.Unmarshal) because the - // Go JSON library doesn't try to pick the right number type (int, float, - // etc.) when unmarshalling to interface{}, it just picks float64 - // universally. go-yaml does go through the effort of picking the right - // number type, so we can preserve number type throughout this process. - err := yaml.Unmarshal(j, &jsonObj) - if err != nil { - return nil, err - } - - // Marshal this object into YAML. - return yaml.Marshal(jsonObj) -} - -// Convert YAML to JSON. Since JSON is a subset of YAML, passing JSON through -// this method should be a no-op. -// -// Things YAML can do that are not supported by JSON: -// * In YAML you can have binary and null keys in your maps. These are invalid -// in JSON. (int and float keys are converted to strings.) -// * Binary data in YAML with the !!binary tag is not supported. If you want to -// use binary data with this library, encode the data as base64 as usual but do -// not use the !!binary tag in your YAML. This will ensure the original base64 -// encoded data makes it all the way through to the JSON. -func YAMLToJSON(y []byte) ([]byte, error) { - return yamlToJSON(y, nil) -} - -func yamlToJSON(y []byte, jsonTarget *reflect.Value) ([]byte, error) { - // Convert the YAML to an object. - var yamlObj interface{} - err := yaml.Unmarshal(y, &yamlObj) - if err != nil { - return nil, err - } - - // YAML objects are not completely compatible with JSON objects (e.g. you - // can have non-string keys in YAML). So, convert the YAML-compatible object - // to a JSON-compatible object, failing with an error if irrecoverable - // incompatibilties happen along the way. - jsonObj, err := convertToJSONableObject(yamlObj, jsonTarget) - if err != nil { - return nil, err - } - - // Convert this object to JSON and return the data. - return json.Marshal(jsonObj) -} - -func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (interface{}, error) { - var err error - - // Resolve jsonTarget to a concrete value (i.e. not a pointer or an - // interface). We pass decodingNull as false because we're not actually - // decoding into the value, we're just checking if the ultimate target is a - // string. - if jsonTarget != nil { - ju, tu, pv := indirect(*jsonTarget, false) - // We have a JSON or Text Umarshaler at this level, so we can't be trying - // to decode into a string. - if ju != nil || tu != nil { - jsonTarget = nil - } else { - jsonTarget = &pv - } - } - - // If yamlObj is a number or a boolean, check if jsonTarget is a string - - // if so, coerce. Else return normal. - // If yamlObj is a map or array, find the field that each key is - // unmarshaling to, and when you recurse pass the reflect.Value for that - // field back into this function. - switch typedYAMLObj := yamlObj.(type) { - case map[interface{}]interface{}: - // JSON does not support arbitrary keys in a map, so we must convert - // these keys to strings. - // - // From my reading of go-yaml v2 (specifically the resolve function), - // keys can only have the types string, int, int64, float64, binary - // (unsupported), or null (unsupported). - strMap := make(map[string]interface{}) - for k, v := range typedYAMLObj { - // Resolve the key to a string first. - var keyString string - switch typedKey := k.(type) { - case string: - keyString = typedKey - case int: - keyString = strconv.Itoa(typedKey) - case int64: - // go-yaml will only return an int64 as a key if the system - // architecture is 32-bit and the key's value is between 32-bit - // and 64-bit. Otherwise the key type will simply be int. - keyString = strconv.FormatInt(typedKey, 10) - case float64: - // Stolen from go-yaml to use the same conversion to string as - // the go-yaml library uses to convert float to string when - // Marshaling. - s := strconv.FormatFloat(typedKey, 'g', -1, 32) - switch s { - case "+Inf": - s = ".inf" - case "-Inf": - s = "-.inf" - case "NaN": - s = ".nan" - } - keyString = s - case bool: - if typedKey { - keyString = "true" - } else { - keyString = "false" - } - default: - return nil, fmt.Errorf("Unsupported map key of type: %s, key: %+#v, value: %+#v", - reflect.TypeOf(k), k, v) - } - - // jsonTarget should be a struct or a map. If it's a struct, find - // the field it's going to map to and pass its reflect.Value. If - // it's a map, find the element type of the map and pass the - // reflect.Value created from that type. If it's neither, just pass - // nil - JSON conversion will error for us if it's a real issue. - if jsonTarget != nil { - t := *jsonTarget - if t.Kind() == reflect.Struct { - keyBytes := []byte(keyString) - // Find the field that the JSON library would use. - var f *field - fields := cachedTypeFields(t.Type()) - for i := range fields { - ff := &fields[i] - if bytes.Equal(ff.nameBytes, keyBytes) { - f = ff - break - } - // Do case-insensitive comparison. - if f == nil && ff.equalFold(ff.nameBytes, keyBytes) { - f = ff - } - } - if f != nil { - // Find the reflect.Value of the most preferential - // struct field. - jtf := t.Field(f.index[0]) - strMap[keyString], err = convertToJSONableObject(v, &jtf) - if err != nil { - return nil, err - } - continue - } - } else if t.Kind() == reflect.Map { - // Create a zero value of the map's element type to use as - // the JSON target. - jtv := reflect.Zero(t.Type().Elem()) - strMap[keyString], err = convertToJSONableObject(v, &jtv) - if err != nil { - return nil, err - } - continue - } - } - strMap[keyString], err = convertToJSONableObject(v, nil) - if err != nil { - return nil, err - } - } - return strMap, nil - case []interface{}: - // We need to recurse into arrays in case there are any - // map[interface{}]interface{}'s inside and to convert any - // numbers to strings. - - // If jsonTarget is a slice (which it really should be), find the - // thing it's going to map to. If it's not a slice, just pass nil - // - JSON conversion will error for us if it's a real issue. - var jsonSliceElemValue *reflect.Value - if jsonTarget != nil { - t := *jsonTarget - if t.Kind() == reflect.Slice { - // By default slices point to nil, but we need a reflect.Value - // pointing to a value of the slice type, so we create one here. - ev := reflect.Indirect(reflect.New(t.Type().Elem())) - jsonSliceElemValue = &ev - } - } - - // Make and use a new array. - arr := make([]interface{}, len(typedYAMLObj)) - for i, v := range typedYAMLObj { - arr[i], err = convertToJSONableObject(v, jsonSliceElemValue) - if err != nil { - return nil, err - } - } - return arr, nil - default: - // If the target type is a string and the YAML type is a number, - // convert the YAML type to a string. - if jsonTarget != nil && (*jsonTarget).Kind() == reflect.String { - // Based on my reading of go-yaml, it may return int, int64, - // float64, or uint64. - var s string - switch typedVal := typedYAMLObj.(type) { - case int: - s = strconv.FormatInt(int64(typedVal), 10) - case int64: - s = strconv.FormatInt(typedVal, 10) - case float64: - s = strconv.FormatFloat(typedVal, 'g', -1, 32) - case uint64: - s = strconv.FormatUint(typedVal, 10) - case bool: - if typedVal { - s = "true" - } else { - s = "false" - } - } - if len(s) > 0 { - yamlObj = interface{}(s) - } - } - return yamlObj, nil - } - - return nil, nil -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/golang/glog/LICENSE b/config-connector/tests/ccs-test/vendor/github.com/golang/glog/LICENSE deleted file mode 100644 index 37ec93a14fd..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/golang/glog/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable (except as stated in this section) patent license to make, have -made, use, offer to sell, sell, import, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification within -third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. diff --git a/config-connector/tests/ccs-test/vendor/github.com/golang/glog/README b/config-connector/tests/ccs-test/vendor/github.com/golang/glog/README deleted file mode 100644 index 387b4eb6890..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/golang/glog/README +++ /dev/null @@ -1,44 +0,0 @@ -glog -==== - -Leveled execution logs for Go. - -This is an efficient pure Go implementation of leveled logs in the -manner of the open source C++ package - https://github.com/google/glog - -By binding methods to booleans it is possible to use the log package -without paying the expense of evaluating the arguments to the log. -Through the -vmodule flag, the package also provides fine-grained -control over logging at the file level. - -The comment from glog.go introduces the ideas: - - Package glog implements logging analogous to the Google-internal - C++ INFO/ERROR/V setup. It provides functions Info, Warning, - Error, Fatal, plus formatting variants such as Infof. It - also provides V-style logging controlled by the -v and - -vmodule=file=2 flags. - - Basic examples: - - glog.Info("Prepare to repel boarders") - - glog.Fatalf("Initialization failed: %s", err) - - See the documentation for the V function for an explanation - of these examples: - - if glog.V(2) { - glog.Info("Starting transaction...") - } - - glog.V(2).Infoln("Processed", nItems, "elements") - - -The repository contains an open source version of the log package -used inside Google. The master copy of the source lives inside -Google, not here. The code in this repo is for export only and is not itself -under development. Feature requests will be ignored. - -Send bug reports to golang-nuts@googlegroups.com. diff --git a/config-connector/tests/ccs-test/vendor/github.com/golang/glog/glog.go b/config-connector/tests/ccs-test/vendor/github.com/golang/glog/glog.go deleted file mode 100644 index 54bd7afdcab..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/golang/glog/glog.go +++ /dev/null @@ -1,1180 +0,0 @@ -// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ -// -// Copyright 2013 Google Inc. All Rights Reserved. -// -// 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 glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup. -// It provides functions Info, Warning, Error, Fatal, plus formatting variants such as -// Infof. It also provides V-style logging controlled by the -v and -vmodule=file=2 flags. -// -// Basic examples: -// -// glog.Info("Prepare to repel boarders") -// -// glog.Fatalf("Initialization failed: %s", err) -// -// See the documentation for the V function for an explanation of these examples: -// -// if glog.V(2) { -// glog.Info("Starting transaction...") -// } -// -// glog.V(2).Infoln("Processed", nItems, "elements") -// -// Log output is buffered and written periodically using Flush. Programs -// should call Flush before exiting to guarantee all log output is written. -// -// By default, all log statements write to files in a temporary directory. -// This package provides several flags that modify this behavior. -// As a result, flag.Parse must be called before any logging is done. -// -// -logtostderr=false -// Logs are written to standard error instead of to files. -// -alsologtostderr=false -// Logs are written to standard error as well as to files. -// -stderrthreshold=ERROR -// Log events at or above this severity are logged to standard -// error as well as to files. -// -log_dir="" -// Log files will be written to this directory instead of the -// default temporary directory. -// -// Other flags provide aids to debugging. -// -// -log_backtrace_at="" -// When set to a file and line number holding a logging statement, -// such as -// -log_backtrace_at=gopherflakes.go:234 -// a stack trace will be written to the Info log whenever execution -// hits that statement. (Unlike with -vmodule, the ".go" must be -// present.) -// -v=0 -// Enable V-leveled logging at the specified level. -// -vmodule="" -// The syntax of the argument is a comma-separated list of pattern=N, -// where pattern is a literal file name (minus the ".go" suffix) or -// "glob" pattern and N is a V level. For instance, -// -vmodule=gopher*=3 -// sets the V level to 3 in all Go files whose names begin "gopher". -// -package glog - -import ( - "bufio" - "bytes" - "errors" - "flag" - "fmt" - "io" - stdLog "log" - "os" - "path/filepath" - "runtime" - "strconv" - "strings" - "sync" - "sync/atomic" - "time" -) - -// severity identifies the sort of log: info, warning etc. It also implements -// the flag.Value interface. The -stderrthreshold flag is of type severity and -// should be modified only through the flag.Value interface. The values match -// the corresponding constants in C++. -type severity int32 // sync/atomic int32 - -// These constants identify the log levels in order of increasing severity. -// A message written to a high-severity log file is also written to each -// lower-severity log file. -const ( - infoLog severity = iota - warningLog - errorLog - fatalLog - numSeverity = 4 -) - -const severityChar = "IWEF" - -var severityName = []string{ - infoLog: "INFO", - warningLog: "WARNING", - errorLog: "ERROR", - fatalLog: "FATAL", -} - -// get returns the value of the severity. -func (s *severity) get() severity { - return severity(atomic.LoadInt32((*int32)(s))) -} - -// set sets the value of the severity. -func (s *severity) set(val severity) { - atomic.StoreInt32((*int32)(s), int32(val)) -} - -// String is part of the flag.Value interface. -func (s *severity) String() string { - return strconv.FormatInt(int64(*s), 10) -} - -// Get is part of the flag.Value interface. -func (s *severity) Get() interface{} { - return *s -} - -// Set is part of the flag.Value interface. -func (s *severity) Set(value string) error { - var threshold severity - // Is it a known name? - if v, ok := severityByName(value); ok { - threshold = v - } else { - v, err := strconv.Atoi(value) - if err != nil { - return err - } - threshold = severity(v) - } - logging.stderrThreshold.set(threshold) - return nil -} - -func severityByName(s string) (severity, bool) { - s = strings.ToUpper(s) - for i, name := range severityName { - if name == s { - return severity(i), true - } - } - return 0, false -} - -// OutputStats tracks the number of output lines and bytes written. -type OutputStats struct { - lines int64 - bytes int64 -} - -// Lines returns the number of lines written. -func (s *OutputStats) Lines() int64 { - return atomic.LoadInt64(&s.lines) -} - -// Bytes returns the number of bytes written. -func (s *OutputStats) Bytes() int64 { - return atomic.LoadInt64(&s.bytes) -} - -// Stats tracks the number of lines of output and number of bytes -// per severity level. Values must be read with atomic.LoadInt64. -var Stats struct { - Info, Warning, Error OutputStats -} - -var severityStats = [numSeverity]*OutputStats{ - infoLog: &Stats.Info, - warningLog: &Stats.Warning, - errorLog: &Stats.Error, -} - -// Level is exported because it appears in the arguments to V and is -// the type of the v flag, which can be set programmatically. -// It's a distinct type because we want to discriminate it from logType. -// Variables of type level are only changed under logging.mu. -// The -v flag is read only with atomic ops, so the state of the logging -// module is consistent. - -// Level is treated as a sync/atomic int32. - -// Level specifies a level of verbosity for V logs. *Level implements -// flag.Value; the -v flag is of type Level and should be modified -// only through the flag.Value interface. -type Level int32 - -// get returns the value of the Level. -func (l *Level) get() Level { - return Level(atomic.LoadInt32((*int32)(l))) -} - -// set sets the value of the Level. -func (l *Level) set(val Level) { - atomic.StoreInt32((*int32)(l), int32(val)) -} - -// String is part of the flag.Value interface. -func (l *Level) String() string { - return strconv.FormatInt(int64(*l), 10) -} - -// Get is part of the flag.Value interface. -func (l *Level) Get() interface{} { - return *l -} - -// Set is part of the flag.Value interface. -func (l *Level) Set(value string) error { - v, err := strconv.Atoi(value) - if err != nil { - return err - } - logging.mu.Lock() - defer logging.mu.Unlock() - logging.setVState(Level(v), logging.vmodule.filter, false) - return nil -} - -// moduleSpec represents the setting of the -vmodule flag. -type moduleSpec struct { - filter []modulePat -} - -// modulePat contains a filter for the -vmodule flag. -// It holds a verbosity level and a file pattern to match. -type modulePat struct { - pattern string - literal bool // The pattern is a literal string - level Level -} - -// match reports whether the file matches the pattern. It uses a string -// comparison if the pattern contains no metacharacters. -func (m *modulePat) match(file string) bool { - if m.literal { - return file == m.pattern - } - match, _ := filepath.Match(m.pattern, file) - return match -} - -func (m *moduleSpec) String() string { - // Lock because the type is not atomic. TODO: clean this up. - logging.mu.Lock() - defer logging.mu.Unlock() - var b bytes.Buffer - for i, f := range m.filter { - if i > 0 { - b.WriteRune(',') - } - fmt.Fprintf(&b, "%s=%d", f.pattern, f.level) - } - return b.String() -} - -// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the -// struct is not exported. -func (m *moduleSpec) Get() interface{} { - return nil -} - -var errVmoduleSyntax = errors.New("syntax error: expect comma-separated list of filename=N") - -// Syntax: -vmodule=recordio=2,file=1,gfs*=3 -func (m *moduleSpec) Set(value string) error { - var filter []modulePat - for _, pat := range strings.Split(value, ",") { - if len(pat) == 0 { - // Empty strings such as from a trailing comma can be ignored. - continue - } - patLev := strings.Split(pat, "=") - if len(patLev) != 2 || len(patLev[0]) == 0 || len(patLev[1]) == 0 { - return errVmoduleSyntax - } - pattern := patLev[0] - v, err := strconv.Atoi(patLev[1]) - if err != nil { - return errors.New("syntax error: expect comma-separated list of filename=N") - } - if v < 0 { - return errors.New("negative value for vmodule level") - } - if v == 0 { - continue // Ignore. It's harmless but no point in paying the overhead. - } - // TODO: check syntax of filter? - filter = append(filter, modulePat{pattern, isLiteral(pattern), Level(v)}) - } - logging.mu.Lock() - defer logging.mu.Unlock() - logging.setVState(logging.verbosity, filter, true) - return nil -} - -// isLiteral reports whether the pattern is a literal string, that is, has no metacharacters -// that require filepath.Match to be called to match the pattern. -func isLiteral(pattern string) bool { - return !strings.ContainsAny(pattern, `\*?[]`) -} - -// traceLocation represents the setting of the -log_backtrace_at flag. -type traceLocation struct { - file string - line int -} - -// isSet reports whether the trace location has been specified. -// logging.mu is held. -func (t *traceLocation) isSet() bool { - return t.line > 0 -} - -// match reports whether the specified file and line matches the trace location. -// The argument file name is the full path, not the basename specified in the flag. -// logging.mu is held. -func (t *traceLocation) match(file string, line int) bool { - if t.line != line { - return false - } - if i := strings.LastIndex(file, "/"); i >= 0 { - file = file[i+1:] - } - return t.file == file -} - -func (t *traceLocation) String() string { - // Lock because the type is not atomic. TODO: clean this up. - logging.mu.Lock() - defer logging.mu.Unlock() - return fmt.Sprintf("%s:%d", t.file, t.line) -} - -// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the -// struct is not exported -func (t *traceLocation) Get() interface{} { - return nil -} - -var errTraceSyntax = errors.New("syntax error: expect file.go:234") - -// Syntax: -log_backtrace_at=gopherflakes.go:234 -// Note that unlike vmodule the file extension is included here. -func (t *traceLocation) Set(value string) error { - if value == "" { - // Unset. - t.line = 0 - t.file = "" - } - fields := strings.Split(value, ":") - if len(fields) != 2 { - return errTraceSyntax - } - file, line := fields[0], fields[1] - if !strings.Contains(file, ".") { - return errTraceSyntax - } - v, err := strconv.Atoi(line) - if err != nil { - return errTraceSyntax - } - if v <= 0 { - return errors.New("negative or zero value for level") - } - logging.mu.Lock() - defer logging.mu.Unlock() - t.line = v - t.file = file - return nil -} - -// flushSyncWriter is the interface satisfied by logging destinations. -type flushSyncWriter interface { - Flush() error - Sync() error - io.Writer -} - -func init() { - flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error instead of files") - flag.BoolVar(&logging.alsoToStderr, "alsologtostderr", false, "log to standard error as well as files") - flag.Var(&logging.verbosity, "v", "log level for V logs") - flag.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr") - flag.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging") - flag.Var(&logging.traceLocation, "log_backtrace_at", "when logging hits line file:N, emit a stack trace") - - // Default stderrThreshold is ERROR. - logging.stderrThreshold = errorLog - - logging.setVState(0, nil, false) - go logging.flushDaemon() -} - -// Flush flushes all pending log I/O. -func Flush() { - logging.lockAndFlushAll() -} - -// loggingT collects all the global state of the logging setup. -type loggingT struct { - // Boolean flags. Not handled atomically because the flag.Value interface - // does not let us avoid the =true, and that shorthand is necessary for - // compatibility. TODO: does this matter enough to fix? Seems unlikely. - toStderr bool // The -logtostderr flag. - alsoToStderr bool // The -alsologtostderr flag. - - // Level flag. Handled atomically. - stderrThreshold severity // The -stderrthreshold flag. - - // freeList is a list of byte buffers, maintained under freeListMu. - freeList *buffer - // freeListMu maintains the free list. It is separate from the main mutex - // so buffers can be grabbed and printed to without holding the main lock, - // for better parallelization. - freeListMu sync.Mutex - - // mu protects the remaining elements of this structure and is - // used to synchronize logging. - mu sync.Mutex - // file holds writer for each of the log types. - file [numSeverity]flushSyncWriter - // pcs is used in V to avoid an allocation when computing the caller's PC. - pcs [1]uintptr - // vmap is a cache of the V Level for each V() call site, identified by PC. - // It is wiped whenever the vmodule flag changes state. - vmap map[uintptr]Level - // filterLength stores the length of the vmodule filter chain. If greater - // than zero, it means vmodule is enabled. It may be read safely - // using sync.LoadInt32, but is only modified under mu. - filterLength int32 - // traceLocation is the state of the -log_backtrace_at flag. - traceLocation traceLocation - // These flags are modified only under lock, although verbosity may be fetched - // safely using atomic.LoadInt32. - vmodule moduleSpec // The state of the -vmodule flag. - verbosity Level // V logging level, the value of the -v flag/ -} - -// buffer holds a byte Buffer for reuse. The zero value is ready for use. -type buffer struct { - bytes.Buffer - tmp [64]byte // temporary byte array for creating headers. - next *buffer -} - -var logging loggingT - -// setVState sets a consistent state for V logging. -// l.mu is held. -func (l *loggingT) setVState(verbosity Level, filter []modulePat, setFilter bool) { - // Turn verbosity off so V will not fire while we are in transition. - logging.verbosity.set(0) - // Ditto for filter length. - atomic.StoreInt32(&logging.filterLength, 0) - - // Set the new filters and wipe the pc->Level map if the filter has changed. - if setFilter { - logging.vmodule.filter = filter - logging.vmap = make(map[uintptr]Level) - } - - // Things are consistent now, so enable filtering and verbosity. - // They are enabled in order opposite to that in V. - atomic.StoreInt32(&logging.filterLength, int32(len(filter))) - logging.verbosity.set(verbosity) -} - -// getBuffer returns a new, ready-to-use buffer. -func (l *loggingT) getBuffer() *buffer { - l.freeListMu.Lock() - b := l.freeList - if b != nil { - l.freeList = b.next - } - l.freeListMu.Unlock() - if b == nil { - b = new(buffer) - } else { - b.next = nil - b.Reset() - } - return b -} - -// putBuffer returns a buffer to the free list. -func (l *loggingT) putBuffer(b *buffer) { - if b.Len() >= 256 { - // Let big buffers die a natural death. - return - } - l.freeListMu.Lock() - b.next = l.freeList - l.freeList = b - l.freeListMu.Unlock() -} - -var timeNow = time.Now // Stubbed out for testing. - -/* -header formats a log header as defined by the C++ implementation. -It returns a buffer containing the formatted header and the user's file and line number. -The depth specifies how many stack frames above lives the source line to be identified in the log message. - -Log lines have this form: - Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg... -where the fields are defined as follows: - L A single character, representing the log level (eg 'I' for INFO) - mm The month (zero padded; ie May is '05') - dd The day (zero padded) - hh:mm:ss.uuuuuu Time in hours, minutes and fractional seconds - threadid The space-padded thread ID as returned by GetTID() - file The file name - line The line number - msg The user-supplied message -*/ -func (l *loggingT) header(s severity, depth int) (*buffer, string, int) { - _, file, line, ok := runtime.Caller(3 + depth) - if !ok { - file = "???" - line = 1 - } else { - slash := strings.LastIndex(file, "/") - if slash >= 0 { - file = file[slash+1:] - } - } - return l.formatHeader(s, file, line), file, line -} - -// formatHeader formats a log header using the provided file name and line number. -func (l *loggingT) formatHeader(s severity, file string, line int) *buffer { - now := timeNow() - if line < 0 { - line = 0 // not a real line number, but acceptable to someDigits - } - if s > fatalLog { - s = infoLog // for safety. - } - buf := l.getBuffer() - - // Avoid Fprintf, for speed. The format is so simple that we can do it quickly by hand. - // It's worth about 3X. Fprintf is hard. - _, month, day := now.Date() - hour, minute, second := now.Clock() - // Lmmdd hh:mm:ss.uuuuuu threadid file:line] - buf.tmp[0] = severityChar[s] - buf.twoDigits(1, int(month)) - buf.twoDigits(3, day) - buf.tmp[5] = ' ' - buf.twoDigits(6, hour) - buf.tmp[8] = ':' - buf.twoDigits(9, minute) - buf.tmp[11] = ':' - buf.twoDigits(12, second) - buf.tmp[14] = '.' - buf.nDigits(6, 15, now.Nanosecond()/1000, '0') - buf.tmp[21] = ' ' - buf.nDigits(7, 22, pid, ' ') // TODO: should be TID - buf.tmp[29] = ' ' - buf.Write(buf.tmp[:30]) - buf.WriteString(file) - buf.tmp[0] = ':' - n := buf.someDigits(1, line) - buf.tmp[n+1] = ']' - buf.tmp[n+2] = ' ' - buf.Write(buf.tmp[:n+3]) - return buf -} - -// Some custom tiny helper functions to print the log header efficiently. - -const digits = "0123456789" - -// twoDigits formats a zero-prefixed two-digit integer at buf.tmp[i]. -func (buf *buffer) twoDigits(i, d int) { - buf.tmp[i+1] = digits[d%10] - d /= 10 - buf.tmp[i] = digits[d%10] -} - -// nDigits formats an n-digit integer at buf.tmp[i], -// padding with pad on the left. -// It assumes d >= 0. -func (buf *buffer) nDigits(n, i, d int, pad byte) { - j := n - 1 - for ; j >= 0 && d > 0; j-- { - buf.tmp[i+j] = digits[d%10] - d /= 10 - } - for ; j >= 0; j-- { - buf.tmp[i+j] = pad - } -} - -// someDigits formats a zero-prefixed variable-width integer at buf.tmp[i]. -func (buf *buffer) someDigits(i, d int) int { - // Print into the top, then copy down. We know there's space for at least - // a 10-digit number. - j := len(buf.tmp) - for { - j-- - buf.tmp[j] = digits[d%10] - d /= 10 - if d == 0 { - break - } - } - return copy(buf.tmp[i:], buf.tmp[j:]) -} - -func (l *loggingT) println(s severity, args ...interface{}) { - buf, file, line := l.header(s, 0) - fmt.Fprintln(buf, args...) - l.output(s, buf, file, line, false) -} - -func (l *loggingT) print(s severity, args ...interface{}) { - l.printDepth(s, 1, args...) -} - -func (l *loggingT) printDepth(s severity, depth int, args ...interface{}) { - buf, file, line := l.header(s, depth) - fmt.Fprint(buf, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, false) -} - -func (l *loggingT) printf(s severity, format string, args ...interface{}) { - buf, file, line := l.header(s, 0) - fmt.Fprintf(buf, format, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, false) -} - -// printWithFileLine behaves like print but uses the provided file and line number. If -// alsoLogToStderr is true, the log message always appears on standard error; it -// will also appear in the log file unless --logtostderr is set. -func (l *loggingT) printWithFileLine(s severity, file string, line int, alsoToStderr bool, args ...interface{}) { - buf := l.formatHeader(s, file, line) - fmt.Fprint(buf, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, alsoToStderr) -} - -// output writes the data to the log files and releases the buffer. -func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoToStderr bool) { - l.mu.Lock() - if l.traceLocation.isSet() { - if l.traceLocation.match(file, line) { - buf.Write(stacks(false)) - } - } - data := buf.Bytes() - if !flag.Parsed() { - os.Stderr.Write([]byte("ERROR: logging before flag.Parse: ")) - os.Stderr.Write(data) - } else if l.toStderr { - os.Stderr.Write(data) - } else { - if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() { - os.Stderr.Write(data) - } - if l.file[s] == nil { - if err := l.createFiles(s); err != nil { - os.Stderr.Write(data) // Make sure the message appears somewhere. - l.exit(err) - } - } - switch s { - case fatalLog: - l.file[fatalLog].Write(data) - fallthrough - case errorLog: - l.file[errorLog].Write(data) - fallthrough - case warningLog: - l.file[warningLog].Write(data) - fallthrough - case infoLog: - l.file[infoLog].Write(data) - } - } - if s == fatalLog { - // If we got here via Exit rather than Fatal, print no stacks. - if atomic.LoadUint32(&fatalNoStacks) > 0 { - l.mu.Unlock() - timeoutFlush(10 * time.Second) - os.Exit(1) - } - // Dump all goroutine stacks before exiting. - // First, make sure we see the trace for the current goroutine on standard error. - // If -logtostderr has been specified, the loop below will do that anyway - // as the first stack in the full dump. - if !l.toStderr { - os.Stderr.Write(stacks(false)) - } - // Write the stack trace for all goroutines to the files. - trace := stacks(true) - logExitFunc = func(error) {} // If we get a write error, we'll still exit below. - for log := fatalLog; log >= infoLog; log-- { - if f := l.file[log]; f != nil { // Can be nil if -logtostderr is set. - f.Write(trace) - } - } - l.mu.Unlock() - timeoutFlush(10 * time.Second) - os.Exit(255) // C++ uses -1, which is silly because it's anded with 255 anyway. - } - l.putBuffer(buf) - l.mu.Unlock() - if stats := severityStats[s]; stats != nil { - atomic.AddInt64(&stats.lines, 1) - atomic.AddInt64(&stats.bytes, int64(len(data))) - } -} - -// timeoutFlush calls Flush and returns when it completes or after timeout -// elapses, whichever happens first. This is needed because the hooks invoked -// by Flush may deadlock when glog.Fatal is called from a hook that holds -// a lock. -func timeoutFlush(timeout time.Duration) { - done := make(chan bool, 1) - go func() { - Flush() // calls logging.lockAndFlushAll() - done <- true - }() - select { - case <-done: - case <-time.After(timeout): - fmt.Fprintln(os.Stderr, "glog: Flush took longer than", timeout) - } -} - -// stacks is a wrapper for runtime.Stack that attempts to recover the data for all goroutines. -func stacks(all bool) []byte { - // We don't know how big the traces are, so grow a few times if they don't fit. Start large, though. - n := 10000 - if all { - n = 100000 - } - var trace []byte - for i := 0; i < 5; i++ { - trace = make([]byte, n) - nbytes := runtime.Stack(trace, all) - if nbytes < len(trace) { - return trace[:nbytes] - } - n *= 2 - } - return trace -} - -// logExitFunc provides a simple mechanism to override the default behavior -// of exiting on error. Used in testing and to guarantee we reach a required exit -// for fatal logs. Instead, exit could be a function rather than a method but that -// would make its use clumsier. -var logExitFunc func(error) - -// exit is called if there is trouble creating or writing log files. -// It flushes the logs and exits the program; there's no point in hanging around. -// l.mu is held. -func (l *loggingT) exit(err error) { - fmt.Fprintf(os.Stderr, "log: exiting because of error: %s\n", err) - // If logExitFunc is set, we do that instead of exiting. - if logExitFunc != nil { - logExitFunc(err) - return - } - l.flushAll() - os.Exit(2) -} - -// syncBuffer joins a bufio.Writer to its underlying file, providing access to the -// file's Sync method and providing a wrapper for the Write method that provides log -// file rotation. There are conflicting methods, so the file cannot be embedded. -// l.mu is held for all its methods. -type syncBuffer struct { - logger *loggingT - *bufio.Writer - file *os.File - sev severity - nbytes uint64 // The number of bytes written to this file -} - -func (sb *syncBuffer) Sync() error { - return sb.file.Sync() -} - -func (sb *syncBuffer) Write(p []byte) (n int, err error) { - if sb.nbytes+uint64(len(p)) >= MaxSize { - if err := sb.rotateFile(time.Now()); err != nil { - sb.logger.exit(err) - } - } - n, err = sb.Writer.Write(p) - sb.nbytes += uint64(n) - if err != nil { - sb.logger.exit(err) - } - return -} - -// rotateFile closes the syncBuffer's file and starts a new one. -func (sb *syncBuffer) rotateFile(now time.Time) error { - if sb.file != nil { - sb.Flush() - sb.file.Close() - } - var err error - sb.file, _, err = create(severityName[sb.sev], now) - sb.nbytes = 0 - if err != nil { - return err - } - - sb.Writer = bufio.NewWriterSize(sb.file, bufferSize) - - // Write header. - var buf bytes.Buffer - fmt.Fprintf(&buf, "Log file created at: %s\n", now.Format("2006/01/02 15:04:05")) - fmt.Fprintf(&buf, "Running on machine: %s\n", host) - fmt.Fprintf(&buf, "Binary: Built with %s %s for %s/%s\n", runtime.Compiler, runtime.Version(), runtime.GOOS, runtime.GOARCH) - fmt.Fprintf(&buf, "Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg\n") - n, err := sb.file.Write(buf.Bytes()) - sb.nbytes += uint64(n) - return err -} - -// bufferSize sizes the buffer associated with each log file. It's large -// so that log records can accumulate without the logging thread blocking -// on disk I/O. The flushDaemon will block instead. -const bufferSize = 256 * 1024 - -// createFiles creates all the log files for severity from sev down to infoLog. -// l.mu is held. -func (l *loggingT) createFiles(sev severity) error { - now := time.Now() - // Files are created in decreasing severity order, so as soon as we find one - // has already been created, we can stop. - for s := sev; s >= infoLog && l.file[s] == nil; s-- { - sb := &syncBuffer{ - logger: l, - sev: s, - } - if err := sb.rotateFile(now); err != nil { - return err - } - l.file[s] = sb - } - return nil -} - -const flushInterval = 30 * time.Second - -// flushDaemon periodically flushes the log file buffers. -func (l *loggingT) flushDaemon() { - for _ = range time.NewTicker(flushInterval).C { - l.lockAndFlushAll() - } -} - -// lockAndFlushAll is like flushAll but locks l.mu first. -func (l *loggingT) lockAndFlushAll() { - l.mu.Lock() - l.flushAll() - l.mu.Unlock() -} - -// flushAll flushes all the logs and attempts to "sync" their data to disk. -// l.mu is held. -func (l *loggingT) flushAll() { - // Flush from fatal down, in case there's trouble flushing. - for s := fatalLog; s >= infoLog; s-- { - file := l.file[s] - if file != nil { - file.Flush() // ignore error - file.Sync() // ignore error - } - } -} - -// CopyStandardLogTo arranges for messages written to the Go "log" package's -// default logs to also appear in the Google logs for the named and lower -// severities. Subsequent changes to the standard log's default output location -// or format may break this behavior. -// -// Valid names are "INFO", "WARNING", "ERROR", and "FATAL". If the name is not -// recognized, CopyStandardLogTo panics. -func CopyStandardLogTo(name string) { - sev, ok := severityByName(name) - if !ok { - panic(fmt.Sprintf("log.CopyStandardLogTo(%q): unrecognized severity name", name)) - } - // Set a log format that captures the user's file and line: - // d.go:23: message - stdLog.SetFlags(stdLog.Lshortfile) - stdLog.SetOutput(logBridge(sev)) -} - -// logBridge provides the Write method that enables CopyStandardLogTo to connect -// Go's standard logs to the logs provided by this package. -type logBridge severity - -// Write parses the standard logging line and passes its components to the -// logger for severity(lb). -func (lb logBridge) Write(b []byte) (n int, err error) { - var ( - file = "???" - line = 1 - text string - ) - // Split "d.go:23: message" into "d.go", "23", and "message". - if parts := bytes.SplitN(b, []byte{':'}, 3); len(parts) != 3 || len(parts[0]) < 1 || len(parts[2]) < 1 { - text = fmt.Sprintf("bad log format: %s", b) - } else { - file = string(parts[0]) - text = string(parts[2][1:]) // skip leading space - line, err = strconv.Atoi(string(parts[1])) - if err != nil { - text = fmt.Sprintf("bad line number: %s", b) - line = 1 - } - } - // printWithFileLine with alsoToStderr=true, so standard log messages - // always appear on standard error. - logging.printWithFileLine(severity(lb), file, line, true, text) - return len(b), nil -} - -// setV computes and remembers the V level for a given PC -// when vmodule is enabled. -// File pattern matching takes the basename of the file, stripped -// of its .go suffix, and uses filepath.Match, which is a little more -// general than the *? matching used in C++. -// l.mu is held. -func (l *loggingT) setV(pc uintptr) Level { - fn := runtime.FuncForPC(pc) - file, _ := fn.FileLine(pc) - // The file is something like /a/b/c/d.go. We want just the d. - if strings.HasSuffix(file, ".go") { - file = file[:len(file)-3] - } - if slash := strings.LastIndex(file, "/"); slash >= 0 { - file = file[slash+1:] - } - for _, filter := range l.vmodule.filter { - if filter.match(file) { - l.vmap[pc] = filter.level - return filter.level - } - } - l.vmap[pc] = 0 - return 0 -} - -// Verbose is a boolean type that implements Infof (like Printf) etc. -// See the documentation of V for more information. -type Verbose bool - -// V reports whether verbosity at the call site is at least the requested level. -// The returned value is a boolean of type Verbose, which implements Info, Infoln -// and Infof. These methods will write to the Info log if called. -// Thus, one may write either -// if glog.V(2) { glog.Info("log this") } -// or -// glog.V(2).Info("log this") -// The second form is shorter but the first is cheaper if logging is off because it does -// not evaluate its arguments. -// -// Whether an individual call to V generates a log record depends on the setting of -// the -v and --vmodule flags; both are off by default. If the level in the call to -// V is at least the value of -v, or of -vmodule for the source file containing the -// call, the V call will log. -func V(level Level) Verbose { - // This function tries hard to be cheap unless there's work to do. - // The fast path is two atomic loads and compares. - - // Here is a cheap but safe test to see if V logging is enabled globally. - if logging.verbosity.get() >= level { - return Verbose(true) - } - - // It's off globally but it vmodule may still be set. - // Here is another cheap but safe test to see if vmodule is enabled. - if atomic.LoadInt32(&logging.filterLength) > 0 { - // Now we need a proper lock to use the logging structure. The pcs field - // is shared so we must lock before accessing it. This is fairly expensive, - // but if V logging is enabled we're slow anyway. - logging.mu.Lock() - defer logging.mu.Unlock() - if runtime.Callers(2, logging.pcs[:]) == 0 { - return Verbose(false) - } - v, ok := logging.vmap[logging.pcs[0]] - if !ok { - v = logging.setV(logging.pcs[0]) - } - return Verbose(v >= level) - } - return Verbose(false) -} - -// Info is equivalent to the global Info function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Info(args ...interface{}) { - if v { - logging.print(infoLog, args...) - } -} - -// Infoln is equivalent to the global Infoln function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Infoln(args ...interface{}) { - if v { - logging.println(infoLog, args...) - } -} - -// Infof is equivalent to the global Infof function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Infof(format string, args ...interface{}) { - if v { - logging.printf(infoLog, format, args...) - } -} - -// Info logs to the INFO log. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Info(args ...interface{}) { - logging.print(infoLog, args...) -} - -// InfoDepth acts as Info but uses depth to determine which call frame to log. -// InfoDepth(0, "msg") is the same as Info("msg"). -func InfoDepth(depth int, args ...interface{}) { - logging.printDepth(infoLog, depth, args...) -} - -// Infoln logs to the INFO log. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Infoln(args ...interface{}) { - logging.println(infoLog, args...) -} - -// Infof logs to the INFO log. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Infof(format string, args ...interface{}) { - logging.printf(infoLog, format, args...) -} - -// Warning logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Warning(args ...interface{}) { - logging.print(warningLog, args...) -} - -// WarningDepth acts as Warning but uses depth to determine which call frame to log. -// WarningDepth(0, "msg") is the same as Warning("msg"). -func WarningDepth(depth int, args ...interface{}) { - logging.printDepth(warningLog, depth, args...) -} - -// Warningln logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Warningln(args ...interface{}) { - logging.println(warningLog, args...) -} - -// Warningf logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Warningf(format string, args ...interface{}) { - logging.printf(warningLog, format, args...) -} - -// Error logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Error(args ...interface{}) { - logging.print(errorLog, args...) -} - -// ErrorDepth acts as Error but uses depth to determine which call frame to log. -// ErrorDepth(0, "msg") is the same as Error("msg"). -func ErrorDepth(depth int, args ...interface{}) { - logging.printDepth(errorLog, depth, args...) -} - -// Errorln logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Errorln(args ...interface{}) { - logging.println(errorLog, args...) -} - -// Errorf logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Errorf(format string, args ...interface{}) { - logging.printf(errorLog, format, args...) -} - -// Fatal logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Fatal(args ...interface{}) { - logging.print(fatalLog, args...) -} - -// FatalDepth acts as Fatal but uses depth to determine which call frame to log. -// FatalDepth(0, "msg") is the same as Fatal("msg"). -func FatalDepth(depth int, args ...interface{}) { - logging.printDepth(fatalLog, depth, args...) -} - -// Fatalln logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Fatalln(args ...interface{}) { - logging.println(fatalLog, args...) -} - -// Fatalf logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Fatalf(format string, args ...interface{}) { - logging.printf(fatalLog, format, args...) -} - -// fatalNoStacks is non-zero if we are to exit without dumping goroutine stacks. -// It allows Exit and relatives to use the Fatal logs. -var fatalNoStacks uint32 - -// Exit logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Exit(args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.print(fatalLog, args...) -} - -// ExitDepth acts as Exit but uses depth to determine which call frame to log. -// ExitDepth(0, "msg") is the same as Exit("msg"). -func ExitDepth(depth int, args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.printDepth(fatalLog, depth, args...) -} - -// Exitln logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -func Exitln(args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.println(fatalLog, args...) -} - -// Exitf logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Exitf(format string, args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.printf(fatalLog, format, args...) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/golang/glog/glog_file.go b/config-connector/tests/ccs-test/vendor/github.com/golang/glog/glog_file.go deleted file mode 100644 index 65075d28111..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/golang/glog/glog_file.go +++ /dev/null @@ -1,124 +0,0 @@ -// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ -// -// Copyright 2013 Google Inc. All Rights Reserved. -// -// 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. - -// File I/O for logs. - -package glog - -import ( - "errors" - "flag" - "fmt" - "os" - "os/user" - "path/filepath" - "strings" - "sync" - "time" -) - -// MaxSize is the maximum size of a log file in bytes. -var MaxSize uint64 = 1024 * 1024 * 1800 - -// logDirs lists the candidate directories for new log files. -var logDirs []string - -// If non-empty, overrides the choice of directory in which to write logs. -// See createLogDirs for the full list of possible destinations. -var logDir = flag.String("log_dir", "", "If non-empty, write log files in this directory") - -func createLogDirs() { - if *logDir != "" { - logDirs = append(logDirs, *logDir) - } - logDirs = append(logDirs, os.TempDir()) -} - -var ( - pid = os.Getpid() - program = filepath.Base(os.Args[0]) - host = "unknownhost" - userName = "unknownuser" -) - -func init() { - h, err := os.Hostname() - if err == nil { - host = shortHostname(h) - } - - current, err := user.Current() - if err == nil { - userName = current.Username - } - - // Sanitize userName since it may contain filepath separators on Windows. - userName = strings.Replace(userName, `\`, "_", -1) -} - -// shortHostname returns its argument, truncating at the first period. -// For instance, given "www.google.com" it returns "www". -func shortHostname(hostname string) string { - if i := strings.Index(hostname, "."); i >= 0 { - return hostname[:i] - } - return hostname -} - -// logName returns a new log file name containing tag, with start time t, and -// the name for the symlink for tag. -func logName(tag string, t time.Time) (name, link string) { - name = fmt.Sprintf("%s.%s.%s.log.%s.%04d%02d%02d-%02d%02d%02d.%d", - program, - host, - userName, - tag, - t.Year(), - t.Month(), - t.Day(), - t.Hour(), - t.Minute(), - t.Second(), - pid) - return name, program + "." + tag -} - -var onceLogDirs sync.Once - -// create creates a new log file and returns the file and its filename, which -// contains tag ("INFO", "FATAL", etc.) and t. If the file is created -// successfully, create also attempts to update the symlink for that tag, ignoring -// errors. -func create(tag string, t time.Time) (f *os.File, filename string, err error) { - onceLogDirs.Do(createLogDirs) - if len(logDirs) == 0 { - return nil, "", errors.New("log: no log dirs") - } - name, link := logName(tag, t) - var lastErr error - for _, dir := range logDirs { - fname := filepath.Join(dir, name) - f, err := os.Create(fname) - if err == nil { - symlink := filepath.Join(dir, link) - os.Remove(symlink) // ignore err - os.Symlink(name, symlink) // ignore err - return f, fname, nil - } - lastErr = err - } - return nil, "", fmt.Errorf("log: cannot create log: %v", lastErr) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/LICENSE b/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/LICENSE deleted file mode 100644 index 5f0d1fb6a7b..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2014 Alan Shreve - -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. diff --git a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/README.md b/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/README.md deleted file mode 100644 index 7a950d1774f..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# mousetrap - -mousetrap is a tiny library that answers a single question. - -On a Windows machine, was the process invoked by someone double clicking on -the executable file while browsing in explorer? - -### Motivation - -Windows developers unfamiliar with command line tools will often "double-click" -the executable for a tool. Because most CLI tools print the help and then exit -when invoked without arguments, this is often very frustrating for those users. - -mousetrap provides a way to detect these invocations so that you can provide -more helpful behavior and instructions on how to run the CLI tool. To see what -this looks like, both from an organizational and a technical perspective, see -https://inconshreveable.com/09-09-2014/sweat-the-small-stuff/ - -### The interface - -The library exposes a single interface: - - func StartedByExplorer() (bool) diff --git a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_others.go b/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_others.go deleted file mode 100644 index 9d2d8a4bab9..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_others.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build !windows - -package mousetrap - -// StartedByExplorer returns true if the program was invoked by the user -// double-clicking on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -// -// On non-Windows platforms, it always returns false. -func StartedByExplorer() bool { - return false -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_windows.go b/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_windows.go deleted file mode 100644 index 336142a5e3e..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_windows.go +++ /dev/null @@ -1,98 +0,0 @@ -// +build windows -// +build !go1.4 - -package mousetrap - -import ( - "fmt" - "os" - "syscall" - "unsafe" -) - -const ( - // defined by the Win32 API - th32cs_snapprocess uintptr = 0x2 -) - -var ( - kernel = syscall.MustLoadDLL("kernel32.dll") - CreateToolhelp32Snapshot = kernel.MustFindProc("CreateToolhelp32Snapshot") - Process32First = kernel.MustFindProc("Process32FirstW") - Process32Next = kernel.MustFindProc("Process32NextW") -) - -// ProcessEntry32 structure defined by the Win32 API -type processEntry32 struct { - dwSize uint32 - cntUsage uint32 - th32ProcessID uint32 - th32DefaultHeapID int - th32ModuleID uint32 - cntThreads uint32 - th32ParentProcessID uint32 - pcPriClassBase int32 - dwFlags uint32 - szExeFile [syscall.MAX_PATH]uint16 -} - -func getProcessEntry(pid int) (pe *processEntry32, err error) { - snapshot, _, e1 := CreateToolhelp32Snapshot.Call(th32cs_snapprocess, uintptr(0)) - if snapshot == uintptr(syscall.InvalidHandle) { - err = fmt.Errorf("CreateToolhelp32Snapshot: %v", e1) - return - } - defer syscall.CloseHandle(syscall.Handle(snapshot)) - - var processEntry processEntry32 - processEntry.dwSize = uint32(unsafe.Sizeof(processEntry)) - ok, _, e1 := Process32First.Call(snapshot, uintptr(unsafe.Pointer(&processEntry))) - if ok == 0 { - err = fmt.Errorf("Process32First: %v", e1) - return - } - - for { - if processEntry.th32ProcessID == uint32(pid) { - pe = &processEntry - return - } - - ok, _, e1 = Process32Next.Call(snapshot, uintptr(unsafe.Pointer(&processEntry))) - if ok == 0 { - err = fmt.Errorf("Process32Next: %v", e1) - return - } - } -} - -func getppid() (pid int, err error) { - pe, err := getProcessEntry(os.Getpid()) - if err != nil { - return - } - - pid = int(pe.th32ParentProcessID) - return -} - -// StartedByExplorer returns true if the program was invoked by the user double-clicking -// on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -func StartedByExplorer() bool { - ppid, err := getppid() - if err != nil { - return false - } - - pe, err := getProcessEntry(ppid) - if err != nil { - return false - } - - name := syscall.UTF16ToString(pe.szExeFile[:]) - return name == "explorer.exe" -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go b/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go deleted file mode 100644 index 9a28e57c3c3..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go +++ /dev/null @@ -1,46 +0,0 @@ -// +build windows -// +build go1.4 - -package mousetrap - -import ( - "os" - "syscall" - "unsafe" -) - -func getProcessEntry(pid int) (*syscall.ProcessEntry32, error) { - snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0) - if err != nil { - return nil, err - } - defer syscall.CloseHandle(snapshot) - var procEntry syscall.ProcessEntry32 - procEntry.Size = uint32(unsafe.Sizeof(procEntry)) - if err = syscall.Process32First(snapshot, &procEntry); err != nil { - return nil, err - } - for { - if procEntry.ProcessID == uint32(pid) { - return &procEntry, nil - } - err = syscall.Process32Next(snapshot, &procEntry) - if err != nil { - return nil, err - } - } -} - -// StartedByExplorer returns true if the program was invoked by the user double-clicking -// on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -func StartedByExplorer() bool { - pe, err := getProcessEntry(os.Getppid()) - if err != nil { - return false - } - return "explorer.exe" == syscall.UTF16ToString(pe.ExeFile[:]) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.gitignore b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.gitignore deleted file mode 100644 index c7b459e4dd0..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.gitignore +++ /dev/null @@ -1,39 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -# Vim files https://github.com/github/gitignore/blob/master/Global/Vim.gitignore -# swap -[._]*.s[a-w][a-z] -[._]s[a-w][a-z] -# session -Session.vim -# temporary -.netrwhist -*~ -# auto-generated tag files -tags - -*.exe -cobra.test -bin - -.idea/ -*.iml diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.mailmap b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.mailmap deleted file mode 100644 index 94ec53068aa..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.mailmap +++ /dev/null @@ -1,3 +0,0 @@ -Steve Francia -Bjørn Erik Pedersen -Fabiano Franz diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.travis.yml b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.travis.yml deleted file mode 100644 index a9bd4e54785..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -language: go - -stages: - - diff - - test - - build - -go: - - 1.12.x - - 1.13.x - - tip - -before_install: - - go get -u github.com/kyoh86/richgo - - go get -u github.com/mitchellh/gox - -matrix: - allow_failures: - - go: tip - include: - - stage: diff - go: 1.13.x - script: make fmt - - stage: build - go: 1.13.x - script: make cobra_generator - -script: - - make test diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/LICENSE.txt b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/LICENSE.txt deleted file mode 100644 index 298f0e2665e..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/LICENSE.txt +++ /dev/null @@ -1,174 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/Makefile b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/Makefile deleted file mode 100644 index e9740d1e175..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -BIN="./bin" -SRC=$(shell find . -name "*.go") - -ifeq (, $(shell which richgo)) -$(warning "could not find richgo in $(PATH), run: go get github.com/kyoh86/richgo") -endif - -.PHONY: fmt vet test cobra_generator install_deps clean - -default: all - -all: fmt vet test cobra_generator - -fmt: - $(info ******************** checking formatting ********************) - @test -z $(shell gofmt -l $(SRC)) || (gofmt -d $(SRC); exit 1) - -test: install_deps vet - $(info ******************** running tests ********************) - richgo test -v ./... - -cobra_generator: install_deps - $(info ******************** building generator ********************) - mkdir -p $(BIN) - make -C cobra all - -install_deps: - $(info ******************** downloading dependencies ********************) - go get -v ./... - -vet: - $(info ******************** vetting ********************) - go vet ./... - -clean: - rm -rf $(BIN) diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/README.md b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/README.md deleted file mode 100644 index 9d79934260f..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/README.md +++ /dev/null @@ -1,770 +0,0 @@ -![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png) - -Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. - -Many of the most widely used Go projects are built using Cobra, such as: -[Kubernetes](http://kubernetes.io/), -[Hugo](http://gohugo.io), -[rkt](https://github.com/coreos/rkt), -[etcd](https://github.com/coreos/etcd), -[Moby (former Docker)](https://github.com/moby/moby), -[Docker (distribution)](https://github.com/docker/distribution), -[OpenShift](https://www.openshift.com/), -[Delve](https://github.com/derekparker/delve), -[GopherJS](http://www.gopherjs.org/), -[CockroachDB](http://www.cockroachlabs.com/), -[Bleve](http://www.blevesearch.com/), -[ProjectAtomic (enterprise)](http://www.projectatomic.io/), -[Giant Swarm's gsctl](https://github.com/giantswarm/gsctl), -[Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack), -[rclone](http://rclone.org/), -[nehm](https://github.com/bogem/nehm), -[Pouch](https://github.com/alibaba/pouch), -[Istio](https://istio.io), -[Prototool](https://github.com/uber/prototool), -[mattermost-server](https://github.com/mattermost/mattermost-server), -[Gardener](https://github.com/gardener/gardenctl), -[Linkerd](https://linkerd.io/), -[Github CLI](https://github.com/cli/cli) -etc. - -[![Build Status](https://travis-ci.org/spf13/cobra.svg "Travis CI status")](https://travis-ci.org/spf13/cobra) -[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra) -[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) - -# Table of Contents - -- [Overview](#overview) -- [Concepts](#concepts) - * [Commands](#commands) - * [Flags](#flags) -- [Installing](#installing) -- [Getting Started](#getting-started) - * [Using the Cobra Generator](#using-the-cobra-generator) - * [Using the Cobra Library](#using-the-cobra-library) - * [Working with Flags](#working-with-flags) - * [Positional and Custom Arguments](#positional-and-custom-arguments) - * [Example](#example) - * [Help Command](#help-command) - * [Usage Message](#usage-message) - * [PreRun and PostRun Hooks](#prerun-and-postrun-hooks) - * [Suggestions when "unknown command" happens](#suggestions-when-unknown-command-happens) - * [Generating documentation for your command](#generating-documentation-for-your-command) - * [Generating bash completions](#generating-bash-completions) - * [Generating zsh completions](#generating-zsh-completions) -- [Contributing](#contributing) -- [License](#license) - -# Overview - -Cobra is a library providing a simple interface to create powerful modern CLI -interfaces similar to git & go tools. - -Cobra is also an application that will generate your application scaffolding to rapidly -develop a Cobra-based application. - -Cobra provides: -* Easy subcommand-based CLIs: `app server`, `app fetch`, etc. -* Fully POSIX-compliant flags (including short & long versions) -* Nested subcommands -* Global, local and cascading flags -* Easy generation of applications & commands with `cobra init appname` & `cobra add cmdname` -* Intelligent suggestions (`app srver`... did you mean `app server`?) -* Automatic help generation for commands and flags -* Automatic help flag recognition of `-h`, `--help`, etc. -* Automatically generated bash autocomplete for your application -* Automatically generated man pages for your application -* Command aliases so you can change things without breaking them -* The flexibility to define your own help, usage, etc. -* Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps - -# Concepts - -Cobra is built on a structure of commands, arguments & flags. - -**Commands** represent actions, **Args** are things and **Flags** are modifiers for those actions. - -The best applications will read like sentences when used. Users will know how -to use the application because they will natively understand how to use it. - -The pattern to follow is -`APPNAME VERB NOUN --ADJECTIVE.` - or -`APPNAME COMMAND ARG --FLAG` - -A few good real world examples may better illustrate this point. - -In the following example, 'server' is a command, and 'port' is a flag: - - hugo server --port=1313 - -In this command we are telling Git to clone the url bare. - - git clone URL --bare - -## Commands - -Command is the central point of the application. Each interaction that -the application supports will be contained in a Command. A command can -have children commands and optionally run an action. - -In the example above, 'server' is the command. - -[More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command) - -## Flags - -A flag is a way to modify the behavior of a command. Cobra supports -fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/). -A Cobra command can define flags that persist through to children commands -and flags that are only available to that command. - -In the example above, 'port' is the flag. - -Flag functionality is provided by the [pflag -library](https://github.com/spf13/pflag), a fork of the flag standard library -which maintains the same interface while adding POSIX compliance. - -# Installing -Using Cobra is easy. First, use `go get` to install the latest version -of the library. This command will install the `cobra` generator executable -along with the library and its dependencies: - - go get -u github.com/spf13/cobra/cobra - -Next, include Cobra in your application: - -```go -import "github.com/spf13/cobra" -``` - -# Getting Started - -While you are welcome to provide your own organization, typically a Cobra-based -application will follow the following organizational structure: - -``` - ▾ appName/ - ▾ cmd/ - add.go - your.go - commands.go - here.go - main.go -``` - -In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -## Using the Cobra Generator - -Cobra provides its own program that will create your application and add any -commands you want. It's the easiest way to incorporate Cobra into your application. - -[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it. - -## Using the Cobra Library - -To manually implement Cobra you need to create a bare main.go file and a rootCmd file. -You will optionally provide additional commands as you see fit. - -### Create rootCmd - -Cobra doesn't require any special constructors. Simply create your commands. - -Ideally you place this in app/cmd/root.go: - -```go -var rootCmd = &cobra.Command{ - Use: "hugo", - Short: "Hugo is a very fast static site generator", - Long: `A Fast and Flexible Static Site Generator built with - love by spf13 and friends in Go. - Complete documentation is available at http://hugo.spf13.com`, - Run: func(cmd *cobra.Command, args []string) { - // Do Stuff Here - }, -} - -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) - } -} -``` - -You will additionally define flags and handle configuration in your init() function. - -For example cmd/root.go: - -```go -package cmd - -import ( - "fmt" - "os" - - homedir "github.com/mitchellh/go-homedir" - "github.com/spf13/cobra" - "github.com/spf13/viper" -) - -var ( - // Used for flags. - cfgFile string - userLicense string - - rootCmd = &cobra.Command{ - Use: "cobra", - Short: "A generator for Cobra based Applications", - Long: `Cobra is a CLI library for Go that empowers applications. -This application is a tool to generate the needed files -to quickly create a Cobra application.`, - } -) - -// Execute executes the root command. -func Execute() error { - return rootCmd.Execute() -} - -func init() { - cobra.OnInitialize(initConfig) - - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") - rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") - rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") - rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) - viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) - viper.SetDefault("author", "NAME HERE ") - viper.SetDefault("license", "apache") - - rootCmd.AddCommand(addCmd) - rootCmd.AddCommand(initCmd) -} - -func er(msg interface{}) { - fmt.Println("Error:", msg) - os.Exit(1) -} - -func initConfig() { - if cfgFile != "" { - // Use config file from the flag. - viper.SetConfigFile(cfgFile) - } else { - // Find home directory. - home, err := homedir.Dir() - if err != nil { - er(err) - } - - // Search config in home directory with name ".cobra" (without extension). - viper.AddConfigPath(home) - viper.SetConfigName(".cobra") - } - - viper.AutomaticEnv() - - if err := viper.ReadInConfig(); err == nil { - fmt.Println("Using config file:", viper.ConfigFileUsed()) - } -} -``` - -### Create your main.go - -With the root command you need to have your main function execute it. -Execute should be run on the root for clarity, though it can be called on any command. - -In a Cobra app, typically the main.go file is very bare. It serves, one purpose, to initialize Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -### Create additional commands - -Additional commands can be defined and typically are each given their own file -inside of the cmd/ directory. - -If you wanted to create a version command you would create cmd/version.go and -populate it with the following: - -```go -package cmd - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(versionCmd) -} - -var versionCmd = &cobra.Command{ - Use: "version", - Short: "Print the version number of Hugo", - Long: `All software has versions. This is Hugo's`, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hugo Static Site Generator v0.9 -- HEAD") - }, -} -``` - -## Working with Flags - -Flags provide modifiers to control how the action command operates. - -### Assign flags to a command - -Since the flags are defined and used in different locations, we need to -define a variable outside with the correct scope to assign the flag to -work with. - -```go -var Verbose bool -var Source string -``` - -There are two different approaches to assign a flag. - -### Persistent Flags - -A flag can be 'persistent' meaning that this flag will be available to the -command it's assigned to as well as every command under that command. For -global flags, assign a flag as a persistent flag on the root. - -```go -rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output") -``` - -### Local Flags - -A flag can also be assigned locally which will only apply to that specific command. - -```go -localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") -``` - -### Local Flag on Parent Commands - -By default Cobra only parses local flags on the target command, any local flags on -parent commands are ignored. By enabling `Command.TraverseChildren` Cobra will -parse local flags on each command before executing the target command. - -```go -command := cobra.Command{ - Use: "print [OPTIONS] [COMMANDS]", - TraverseChildren: true, -} -``` - -### Bind Flags with Config - -You can also bind your flags with [viper](https://github.com/spf13/viper): -```go -var author string - -func init() { - rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) -} -``` - -In this example the persistent flag `author` is bound with `viper`. -**Note**, that the variable `author` will not be set to the value from config, -when the `--author` flag is not provided by user. - -More in [viper documentation](https://github.com/spf13/viper#working-with-flags). - -### Required flags - -Flags are optional by default. If instead you wish your command to report an error -when a flag has not been set, mark it as required: -```go -rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)") -rootCmd.MarkFlagRequired("region") -``` - -## Positional and Custom Arguments - -Validation of positional arguments can be specified using the `Args` field -of `Command`. - -The following validators are built in: - -- `NoArgs` - the command will report an error if there are any positional args. -- `ArbitraryArgs` - the command will accept any args. -- `OnlyValidArgs` - the command will report an error if there are any positional args that are not in the `ValidArgs` field of `Command`. -- `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args. -- `MaximumNArgs(int)` - the command will report an error if there are more than N positional args. -- `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. -- `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` -- `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. - -An example of setting the custom validator: - -```go -var cmd = &cobra.Command{ - Short: "hello", - Args: func(cmd *cobra.Command, args []string) error { - if len(args) < 1 { - return errors.New("requires a color argument") - } - if myapp.IsValidColor(args[0]) { - return nil - } - return fmt.Errorf("invalid color specified: %s", args[0]) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hello, World!") - }, -} -``` - -## Example - -In the example below, we have defined three commands. Two are at the top level -and one (cmdTimes) is a child of one of the top commands. In this case the root -is not executable meaning that a subcommand is required. This is accomplished -by not providing a 'Run' for the 'rootCmd'. - -We have only defined one flag for a single command. - -More documentation about flags is available at https://github.com/spf13/pflag - -```go -package main - -import ( - "fmt" - "strings" - - "github.com/spf13/cobra" -) - -func main() { - var echoTimes int - - var cmdPrint = &cobra.Command{ - Use: "print [string to print]", - Short: "Print anything to the screen", - Long: `print is for printing anything back to the screen. -For many years people have printed back to the screen.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Print: " + strings.Join(args, " ")) - }, - } - - var cmdEcho = &cobra.Command{ - Use: "echo [string to echo]", - Short: "Echo anything to the screen", - Long: `echo is for echoing anything back. -Echo works a lot like print, except it has a child command.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Echo: " + strings.Join(args, " ")) - }, - } - - var cmdTimes = &cobra.Command{ - Use: "times [string to echo]", - Short: "Echo anything to the screen more times", - Long: `echo things multiple times back to the user by providing -a count and a string.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - for i := 0; i < echoTimes; i++ { - fmt.Println("Echo: " + strings.Join(args, " ")) - } - }, - } - - cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input") - - var rootCmd = &cobra.Command{Use: "app"} - rootCmd.AddCommand(cmdPrint, cmdEcho) - cmdEcho.AddCommand(cmdTimes) - rootCmd.Execute() -} -``` - -For a more complete example of a larger application, please checkout [Hugo](http://gohugo.io/). - -## Help Command - -Cobra automatically adds a help command to your application when you have subcommands. -This will be called when a user runs 'app help'. Additionally, help will also -support all other commands as input. Say, for instance, you have a command called -'create' without any additional configuration; Cobra will work when 'app help -create' is called. Every command will automatically have the '--help' flag added. - -### Example - -The following output is automatically generated by Cobra. Nothing beyond the -command and flag definitions are needed. - - $ cobra help - - Cobra is a CLI library for Go that empowers applications. - This application is a tool to generate the needed files - to quickly create a Cobra application. - - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - - -Help is just a command like any other. There is no special logic or behavior -around it. In fact, you can provide your own if you want. - -### Defining your own help - -You can provide your own Help command or your own template for the default command to use -with following functions: - -```go -cmd.SetHelpCommand(cmd *Command) -cmd.SetHelpFunc(f func(*Command, []string)) -cmd.SetHelpTemplate(s string) -``` - -The latter two will also apply to any children commands. - -## Usage Message - -When the user provides an invalid flag or invalid command, Cobra responds by -showing the user the 'usage'. - -### Example -You may recognize this from the help above. That's because the default help -embeds the usage as part of its output. - - $ cobra --invalid - Error: unknown flag: --invalid - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - -### Defining your own usage -You can provide your own usage function or template for Cobra to use. -Like help, the function and template are overridable through public methods: - -```go -cmd.SetUsageFunc(f func(*Command) error) -cmd.SetUsageTemplate(s string) -``` - -## Version Flag - -Cobra adds a top-level '--version' flag if the Version field is set on the root command. -Running an application with the '--version' flag will print the version to stdout using -the version template. The template can be customized using the -`cmd.SetVersionTemplate(s string)` function. - -## PreRun and PostRun Hooks - -It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order: - -- `PersistentPreRun` -- `PreRun` -- `Run` -- `PostRun` -- `PersistentPostRun` - -An example of two commands which use all of these features is below. When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`: - -```go -package main - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func main() { - - var rootCmd = &cobra.Command{ - Use: "root [sub]", - Short: "My root command", - PersistentPreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args) - }, - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args) - }, - } - - var subCmd = &cobra.Command{ - Use: "sub [no options!]", - Short: "My subcommand", - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args) - }, - } - - rootCmd.AddCommand(subCmd) - - rootCmd.SetArgs([]string{""}) - rootCmd.Execute() - fmt.Println() - rootCmd.SetArgs([]string{"sub", "arg1", "arg2"}) - rootCmd.Execute() -} -``` - -Output: -``` -Inside rootCmd PersistentPreRun with args: [] -Inside rootCmd PreRun with args: [] -Inside rootCmd Run with args: [] -Inside rootCmd PostRun with args: [] -Inside rootCmd PersistentPostRun with args: [] - -Inside rootCmd PersistentPreRun with args: [arg1 arg2] -Inside subCmd PreRun with args: [arg1 arg2] -Inside subCmd Run with args: [arg1 arg2] -Inside subCmd PostRun with args: [arg1 arg2] -Inside subCmd PersistentPostRun with args: [arg1 arg2] -``` - -## Suggestions when "unknown command" happens - -Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example: - -``` -$ hugo srever -Error: unknown command "srever" for "hugo" - -Did you mean this? - server - -Run 'hugo --help' for usage. -``` - -Suggestions are automatic based on every subcommand registered and use an implementation of [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion. - -If you need to disable suggestions or tweak the string distance in your command, use: - -```go -command.DisableSuggestions = true -``` - -or - -```go -command.SuggestionsMinimumDistance = 1 -``` - -You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but makes sense in your set of commands and for some which you don't want aliases. Example: - -``` -$ kubectl remove -Error: unknown command "remove" for "kubectl" - -Did you mean this? - delete - -Run 'kubectl help' for usage. -``` - -## Generating documentation for your command - -Cobra can generate documentation based on subcommands, flags, etc. in the following formats: - -- [Markdown](doc/md_docs.md) -- [ReStructured Text](doc/rest_docs.md) -- [Man Page](doc/man_docs.md) - -## Generating bash completions - -Cobra can generate a bash-completion file. If you add more information to your command, these completions can be amazingly powerful and flexible. Read more about it in [Bash Completions](bash_completions.md). - -## Generating zsh completions - -Cobra can generate zsh-completion file. Read more about it in -[Zsh Completions](zsh_completions.md). - -# Contributing - -1. Fork it -2. Download your fork to your PC (`git clone https://github.com/your_username/cobra && cd cobra`) -3. Create your feature branch (`git checkout -b my-new-feature`) -4. Make changes and add them (`git add .`) -5. Commit your changes (`git commit -m 'Add some feature'`) -6. Push to the branch (`git push origin my-new-feature`) -7. Create new pull request - -# License - -Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt) diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/args.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/args.go deleted file mode 100644 index 70e9b262912..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/args.go +++ /dev/null @@ -1,109 +0,0 @@ -package cobra - -import ( - "fmt" - "strings" -) - -type PositionalArgs func(cmd *Command, args []string) error - -// Legacy arg validation has the following behaviour: -// - root commands with no subcommands can take arbitrary arguments -// - root commands with subcommands will do subcommand validity checking -// - subcommands will always accept arbitrary arguments -func legacyArgs(cmd *Command, args []string) error { - // no subcommand, always take args - if !cmd.HasSubCommands() { - return nil - } - - // root command with subcommands, do subcommand checking. - if !cmd.HasParent() && len(args) > 0 { - return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0])) - } - return nil -} - -// NoArgs returns an error if any args are included. -func NoArgs(cmd *Command, args []string) error { - if len(args) > 0 { - return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath()) - } - return nil -} - -// OnlyValidArgs returns an error if any args are not in the list of ValidArgs. -func OnlyValidArgs(cmd *Command, args []string) error { - if len(cmd.ValidArgs) > 0 { - // Remove any description that may be included in ValidArgs. - // A description is following a tab character. - var validArgs []string - for _, v := range cmd.ValidArgs { - validArgs = append(validArgs, strings.Split(v, "\t")[0]) - } - - for _, v := range args { - if !stringInSlice(v, validArgs) { - return fmt.Errorf("invalid argument %q for %q%s", v, cmd.CommandPath(), cmd.findSuggestions(args[0])) - } - } - } - return nil -} - -// ArbitraryArgs never returns an error. -func ArbitraryArgs(cmd *Command, args []string) error { - return nil -} - -// MinimumNArgs returns an error if there is not at least N args. -func MinimumNArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) < n { - return fmt.Errorf("requires at least %d arg(s), only received %d", n, len(args)) - } - return nil - } -} - -// MaximumNArgs returns an error if there are more than N args. -func MaximumNArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) > n { - return fmt.Errorf("accepts at most %d arg(s), received %d", n, len(args)) - } - return nil - } -} - -// ExactArgs returns an error if there are not exactly n args. -func ExactArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) != n { - return fmt.Errorf("accepts %d arg(s), received %d", n, len(args)) - } - return nil - } -} - -// ExactValidArgs returns an error if -// there are not exactly N positional args OR -// there are any positional args that are not in the `ValidArgs` field of `Command` -func ExactValidArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if err := ExactArgs(n)(cmd, args); err != nil { - return err - } - return OnlyValidArgs(cmd, args) - } -} - -// RangeArgs returns an error if the number of args is not within the expected range. -func RangeArgs(min int, max int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) < min || len(args) > max { - return fmt.Errorf("accepts between %d and %d arg(s), received %d", min, max, len(args)) - } - return nil - } -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/bash_completions.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/bash_completions.go deleted file mode 100644 index 1e27188c3d2..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/bash_completions.go +++ /dev/null @@ -1,641 +0,0 @@ -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" - "sort" - "strings" - - "github.com/spf13/pflag" -) - -// Annotations for Bash completion. -const ( - BashCompFilenameExt = "cobra_annotation_bash_completion_filename_extensions" - BashCompCustom = "cobra_annotation_bash_completion_custom" - BashCompOneRequiredFlag = "cobra_annotation_bash_completion_one_required_flag" - BashCompSubdirsInDir = "cobra_annotation_bash_completion_subdirs_in_dir" -) - -func writePreamble(buf *bytes.Buffer, name string) { - buf.WriteString(fmt.Sprintf("# bash completion for %-36s -*- shell-script -*-\n", name)) - buf.WriteString(fmt.Sprintf(` -__%[1]s_debug() -{ - if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then - echo "$*" >> "${BASH_COMP_DEBUG_FILE}" - fi -} - -# Homebrew on Macs have version 1.3 of bash-completion which doesn't include -# _init_completion. This is a very minimal version of that function. -__%[1]s_init_completion() -{ - COMPREPLY=() - _get_comp_words_by_ref "$@" cur prev words cword -} - -__%[1]s_index_of_word() -{ - local w word=$1 - shift - index=0 - for w in "$@"; do - [[ $w = "$word" ]] && return - index=$((index+1)) - done - index=-1 -} - -__%[1]s_contains_word() -{ - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 -} - -__%[1]s_handle_go_custom_completion() -{ - __%[1]s_debug "${FUNCNAME[0]}: cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}" - - local out requestComp lastParam lastChar comp directive args - - # Prepare the command to request completions for the program. - # Calling ${words[0]} instead of directly %[1]s allows to handle aliases - args=("${words[@]:1}") - requestComp="${words[0]} %[2]s ${args[*]}" - - lastParam=${words[$((${#words[@]}-1))]} - lastChar=${lastParam:$((${#lastParam}-1)):1} - __%[1]s_debug "${FUNCNAME[0]}: lastParam ${lastParam}, lastChar ${lastChar}" - - if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then - # If the last parameter is complete (there is a space following it) - # We add an extra empty parameter so we can indicate this to the go method. - __%[1]s_debug "${FUNCNAME[0]}: Adding extra empty parameter" - requestComp="${requestComp} \"\"" - fi - - __%[1]s_debug "${FUNCNAME[0]}: calling ${requestComp}" - # Use eval to handle any environment variables and such - out=$(eval "${requestComp}" 2>/dev/null) - - # Extract the directive integer at the very end of the output following a colon (:) - directive=${out##*:} - # Remove the directive - out=${out%%:*} - if [ "${directive}" = "${out}" ]; then - # There is not directive specified - directive=0 - fi - __%[1]s_debug "${FUNCNAME[0]}: the completion directive is: ${directive}" - __%[1]s_debug "${FUNCNAME[0]}: the completions are: ${out[*]}" - - if [ $((directive & %[3]d)) -ne 0 ]; then - # Error code. No completion. - __%[1]s_debug "${FUNCNAME[0]}: received error from custom completion go code" - return - else - if [ $((directive & %[4]d)) -ne 0 ]; then - if [[ $(type -t compopt) = "builtin" ]]; then - __%[1]s_debug "${FUNCNAME[0]}: activating no space" - compopt -o nospace - fi - fi - if [ $((directive & %[5]d)) -ne 0 ]; then - if [[ $(type -t compopt) = "builtin" ]]; then - __%[1]s_debug "${FUNCNAME[0]}: activating no file completion" - compopt +o default - fi - fi - - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${out[*]}" -- "$cur") - fi -} - -__%[1]s_handle_reply() -{ - __%[1]s_debug "${FUNCNAME[0]}" - local comp - case $cur in - -*) - if [[ $(type -t compopt) = "builtin" ]]; then - compopt -o nospace - fi - local allflags - if [ ${#must_have_one_flag[@]} -ne 0 ]; then - allflags=("${must_have_one_flag[@]}") - else - allflags=("${flags[*]} ${two_word_flags[*]}") - fi - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${allflags[*]}" -- "$cur") - if [[ $(type -t compopt) = "builtin" ]]; then - [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace - fi - - # complete after --flag=abc - if [[ $cur == *=* ]]; then - if [[ $(type -t compopt) = "builtin" ]]; then - compopt +o nospace - fi - - local index flag - flag="${cur%%=*}" - __%[1]s_index_of_word "${flag}" "${flags_with_completion[@]}" - COMPREPLY=() - if [[ ${index} -ge 0 ]]; then - PREFIX="" - cur="${cur#*=}" - ${flags_completion[${index}]} - if [ -n "${ZSH_VERSION}" ]; then - # zsh completion needs --flag= prefix - eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" - fi - fi - fi - return 0; - ;; - esac - - # check if we are handling a flag with special work handling - local index - __%[1]s_index_of_word "${prev}" "${flags_with_completion[@]}" - if [[ ${index} -ge 0 ]]; then - ${flags_completion[${index}]} - return - fi - - # we are parsing a flag and don't have a special handler, no completion - if [[ ${cur} != "${words[cword]}" ]]; then - return - fi - - local completions - completions=("${commands[@]}") - if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then - completions=("${must_have_one_noun[@]}") - elif [[ -n "${has_completion_function}" ]]; then - # if a go completion function is provided, defer to that function - completions=() - __%[1]s_handle_go_custom_completion - fi - if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then - completions+=("${must_have_one_flag[@]}") - fi - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${completions[*]}" -- "$cur") - - if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${noun_aliases[*]}" -- "$cur") - fi - - if [[ ${#COMPREPLY[@]} -eq 0 ]]; then - if declare -F __%[1]s_custom_func >/dev/null; then - # try command name qualified custom func - __%[1]s_custom_func - else - # otherwise fall back to unqualified for compatibility - declare -F __custom_func >/dev/null && __custom_func - fi - fi - - # available in bash-completion >= 2, not always present on macOS - if declare -F __ltrim_colon_completions >/dev/null; then - __ltrim_colon_completions "$cur" - fi - - # If there is only 1 completion and it is a flag with an = it will be completed - # but we don't want a space after the = - if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then - compopt -o nospace - fi -} - -# The arguments should be in the form "ext1|ext2|extn" -__%[1]s_handle_filename_extension_flag() -{ - local ext="$1" - _filedir "@(${ext})" -} - -__%[1]s_handle_subdirs_in_dir_flag() -{ - local dir="$1" - pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return -} - -__%[1]s_handle_flag() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - # if a command required a flag, and we found it, unset must_have_one_flag() - local flagname=${words[c]} - local flagvalue - # if the word contained an = - if [[ ${words[c]} == *"="* ]]; then - flagvalue=${flagname#*=} # take in as flagvalue after the = - flagname=${flagname%%=*} # strip everything after the = - flagname="${flagname}=" # but put the = back - fi - __%[1]s_debug "${FUNCNAME[0]}: looking for ${flagname}" - if __%[1]s_contains_word "${flagname}" "${must_have_one_flag[@]}"; then - must_have_one_flag=() - fi - - # if you set a flag which only applies to this command, don't show subcommands - if __%[1]s_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then - commands=() - fi - - # keep flag value with flagname as flaghash - # flaghash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then - if [ -n "${flagvalue}" ] ; then - flaghash[${flagname}]=${flagvalue} - elif [ -n "${words[ $((c+1)) ]}" ] ; then - flaghash[${flagname}]=${words[ $((c+1)) ]} - else - flaghash[${flagname}]="true" # pad "true" for bool flag - fi - fi - - # skip the argument to a two word flag - if [[ ${words[c]} != *"="* ]] && __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then - __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" - c=$((c+1)) - # if we are looking for a flags value, don't show commands - if [[ $c -eq $cword ]]; then - commands=() - fi - fi - - c=$((c+1)) - -} - -__%[1]s_handle_noun() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - if __%[1]s_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then - must_have_one_noun=() - elif __%[1]s_contains_word "${words[c]}" "${noun_aliases[@]}"; then - must_have_one_noun=() - fi - - nouns+=("${words[c]}") - c=$((c+1)) -} - -__%[1]s_handle_command() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - local next_command - if [[ -n ${last_command} ]]; then - next_command="_${last_command}_${words[c]//:/__}" - else - if [[ $c -eq 0 ]]; then - next_command="_%[1]s_root_command" - else - next_command="_${words[c]//:/__}" - fi - fi - c=$((c+1)) - __%[1]s_debug "${FUNCNAME[0]}: looking for ${next_command}" - declare -F "$next_command" >/dev/null && $next_command -} - -__%[1]s_handle_word() -{ - if [[ $c -ge $cword ]]; then - __%[1]s_handle_reply - return - fi - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - if [[ "${words[c]}" == -* ]]; then - __%[1]s_handle_flag - elif __%[1]s_contains_word "${words[c]}" "${commands[@]}"; then - __%[1]s_handle_command - elif [[ $c -eq 0 ]]; then - __%[1]s_handle_command - elif __%[1]s_contains_word "${words[c]}" "${command_aliases[@]}"; then - # aliashash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then - words[c]=${aliashash[${words[c]}]} - __%[1]s_handle_command - else - __%[1]s_handle_noun - fi - else - __%[1]s_handle_noun - fi - __%[1]s_handle_word -} - -`, name, ShellCompNoDescRequestCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp)) -} - -func writePostscript(buf *bytes.Buffer, name string) { - name = strings.Replace(name, ":", "__", -1) - buf.WriteString(fmt.Sprintf("__start_%s()\n", name)) - buf.WriteString(fmt.Sprintf(`{ - local cur prev words cword - declare -A flaghash 2>/dev/null || : - declare -A aliashash 2>/dev/null || : - if declare -F _init_completion >/dev/null 2>&1; then - _init_completion -s || return - else - __%[1]s_init_completion -n "=" || return - fi - - local c=0 - local flags=() - local two_word_flags=() - local local_nonpersistent_flags=() - local flags_with_completion=() - local flags_completion=() - local commands=("%[1]s") - local must_have_one_flag=() - local must_have_one_noun=() - local has_completion_function - local last_command - local nouns=() - - __%[1]s_handle_word -} - -`, name)) - buf.WriteString(fmt.Sprintf(`if [[ $(type -t compopt) = "builtin" ]]; then - complete -o default -F __start_%s %s -else - complete -o default -o nospace -F __start_%s %s -fi - -`, name, name, name, name)) - buf.WriteString("# ex: ts=4 sw=4 et filetype=sh\n") -} - -func writeCommands(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(" commands=()\n") - for _, c := range cmd.Commands() { - if !c.IsAvailableCommand() || c == cmd.helpCommand { - continue - } - buf.WriteString(fmt.Sprintf(" commands+=(%q)\n", c.Name())) - writeCmdAliases(buf, c) - } - buf.WriteString("\n") -} - -func writeFlagHandler(buf *bytes.Buffer, name string, annotations map[string][]string, cmd *Command) { - for key, value := range annotations { - switch key { - case BashCompFilenameExt: - buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - - var ext string - if len(value) > 0 { - ext = fmt.Sprintf("__%s_handle_filename_extension_flag ", cmd.Root().Name()) + strings.Join(value, "|") - } else { - ext = "_filedir" - } - buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", ext)) - case BashCompCustom: - buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - if len(value) > 0 { - handlers := strings.Join(value, "; ") - buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", handlers)) - } else { - buf.WriteString(" flags_completion+=(:)\n") - } - case BashCompSubdirsInDir: - buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - - var ext string - if len(value) == 1 { - ext = fmt.Sprintf("__%s_handle_subdirs_in_dir_flag ", cmd.Root().Name()) + value[0] - } else { - ext = "_filedir -d" - } - buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", ext)) - } - } -} - -func writeShortFlag(buf *bytes.Buffer, flag *pflag.Flag, cmd *Command) { - name := flag.Shorthand - format := " " - if len(flag.NoOptDefVal) == 0 { - format += "two_word_" - } - format += "flags+=(\"-%s\")\n" - buf.WriteString(fmt.Sprintf(format, name)) - writeFlagHandler(buf, "-"+name, flag.Annotations, cmd) -} - -func writeFlag(buf *bytes.Buffer, flag *pflag.Flag, cmd *Command) { - name := flag.Name - format := " flags+=(\"--%s" - if len(flag.NoOptDefVal) == 0 { - format += "=" - } - format += "\")\n" - buf.WriteString(fmt.Sprintf(format, name)) - if len(flag.NoOptDefVal) == 0 { - format = " two_word_flags+=(\"--%s\")\n" - buf.WriteString(fmt.Sprintf(format, name)) - } - writeFlagHandler(buf, "--"+name, flag.Annotations, cmd) -} - -func writeLocalNonPersistentFlag(buf *bytes.Buffer, flag *pflag.Flag) { - name := flag.Name - format := " local_nonpersistent_flags+=(\"--%s" - if len(flag.NoOptDefVal) == 0 { - format += "=" - } - format += "\")\n" - buf.WriteString(fmt.Sprintf(format, name)) -} - -// Setup annotations for go completions for registered flags -func prepareCustomAnnotationsForFlags(cmd *Command) { - for flag := range flagCompletionFunctions { - // Make sure the completion script calls the __*_go_custom_completion function for - // every registered flag. We need to do this here (and not when the flag was registered - // for completion) so that we can know the root command name for the prefix - // of ___go_custom_completion - if flag.Annotations == nil { - flag.Annotations = map[string][]string{} - } - flag.Annotations[BashCompCustom] = []string{fmt.Sprintf("__%[1]s_handle_go_custom_completion", cmd.Root().Name())} - } -} - -func writeFlags(buf *bytes.Buffer, cmd *Command) { - prepareCustomAnnotationsForFlags(cmd) - buf.WriteString(` flags=() - two_word_flags=() - local_nonpersistent_flags=() - flags_with_completion=() - flags_completion=() - -`) - localNonPersistentFlags := cmd.LocalNonPersistentFlags() - cmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - writeFlag(buf, flag, cmd) - if len(flag.Shorthand) > 0 { - writeShortFlag(buf, flag, cmd) - } - if localNonPersistentFlags.Lookup(flag.Name) != nil { - writeLocalNonPersistentFlag(buf, flag) - } - }) - cmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - writeFlag(buf, flag, cmd) - if len(flag.Shorthand) > 0 { - writeShortFlag(buf, flag, cmd) - } - }) - - buf.WriteString("\n") -} - -func writeRequiredFlag(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(" must_have_one_flag=()\n") - flags := cmd.NonInheritedFlags() - flags.VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - for key := range flag.Annotations { - switch key { - case BashCompOneRequiredFlag: - format := " must_have_one_flag+=(\"--%s" - if flag.Value.Type() != "bool" { - format += "=" - } - format += "\")\n" - buf.WriteString(fmt.Sprintf(format, flag.Name)) - - if len(flag.Shorthand) > 0 { - buf.WriteString(fmt.Sprintf(" must_have_one_flag+=(\"-%s\")\n", flag.Shorthand)) - } - } - } - }) -} - -func writeRequiredNouns(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(" must_have_one_noun=()\n") - sort.Sort(sort.StringSlice(cmd.ValidArgs)) - for _, value := range cmd.ValidArgs { - // Remove any description that may be included following a tab character. - // Descriptions are not supported by bash completion. - value = strings.Split(value, "\t")[0] - buf.WriteString(fmt.Sprintf(" must_have_one_noun+=(%q)\n", value)) - } - if cmd.ValidArgsFunction != nil { - buf.WriteString(" has_completion_function=1\n") - } -} - -func writeCmdAliases(buf *bytes.Buffer, cmd *Command) { - if len(cmd.Aliases) == 0 { - return - } - - sort.Sort(sort.StringSlice(cmd.Aliases)) - - buf.WriteString(fmt.Sprint(` if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then`, "\n")) - for _, value := range cmd.Aliases { - buf.WriteString(fmt.Sprintf(" command_aliases+=(%q)\n", value)) - buf.WriteString(fmt.Sprintf(" aliashash[%q]=%q\n", value, cmd.Name())) - } - buf.WriteString(` fi`) - buf.WriteString("\n") -} -func writeArgAliases(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(" noun_aliases=()\n") - sort.Sort(sort.StringSlice(cmd.ArgAliases)) - for _, value := range cmd.ArgAliases { - buf.WriteString(fmt.Sprintf(" noun_aliases+=(%q)\n", value)) - } -} - -func gen(buf *bytes.Buffer, cmd *Command) { - for _, c := range cmd.Commands() { - if !c.IsAvailableCommand() || c == cmd.helpCommand { - continue - } - gen(buf, c) - } - commandName := cmd.CommandPath() - commandName = strings.Replace(commandName, " ", "_", -1) - commandName = strings.Replace(commandName, ":", "__", -1) - - if cmd.Root() == cmd { - buf.WriteString(fmt.Sprintf("_%s_root_command()\n{\n", commandName)) - } else { - buf.WriteString(fmt.Sprintf("_%s()\n{\n", commandName)) - } - - buf.WriteString(fmt.Sprintf(" last_command=%q\n", commandName)) - buf.WriteString("\n") - buf.WriteString(" command_aliases=()\n") - buf.WriteString("\n") - - writeCommands(buf, cmd) - writeFlags(buf, cmd) - writeRequiredFlag(buf, cmd) - writeRequiredNouns(buf, cmd) - writeArgAliases(buf, cmd) - buf.WriteString("}\n\n") -} - -// GenBashCompletion generates bash completion file and writes to the passed writer. -func (c *Command) GenBashCompletion(w io.Writer) error { - buf := new(bytes.Buffer) - writePreamble(buf, c.Name()) - if len(c.BashCompletionFunction) > 0 { - buf.WriteString(c.BashCompletionFunction + "\n") - } - gen(buf, c) - writePostscript(buf, c.Name()) - - _, err := buf.WriteTo(w) - return err -} - -func nonCompletableFlag(flag *pflag.Flag) bool { - return flag.Hidden || len(flag.Deprecated) > 0 -} - -// GenBashCompletionFile generates bash completion file. -func (c *Command) GenBashCompletionFile(filename string) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenBashCompletion(outFile) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/bash_completions.md b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/bash_completions.md deleted file mode 100644 index e61a3a6546b..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/bash_completions.md +++ /dev/null @@ -1,383 +0,0 @@ -# Generating Bash Completions For Your Own cobra.Command - -If you are using the generator you can create a completion command by running - -```bash -cobra add completion -``` - -Update the help text show how to install the bash_completion Linux show here [Kubectl docs show mac options](https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion) - -Writing the shell script to stdout allows the most flexible use. - -```go -// completionCmd represents the completion command -var completionCmd = &cobra.Command{ - Use: "completion", - Short: "Generates bash completion scripts", - Long: `To load completion run - -. <(bitbucket completion) - -To configure your bash shell to load completions for each session add to your bashrc - -# ~/.bashrc or ~/.profile -. <(bitbucket completion) -`, - Run: func(cmd *cobra.Command, args []string) { - rootCmd.GenBashCompletion(os.Stdout); - }, -} -``` - -**Note:** The cobra generator may include messages printed to stdout for example if the config file is loaded, this will break the auto complete script - - -## Example from kubectl - -Generating bash completions from a cobra command is incredibly easy. An actual program which does so for the kubernetes kubectl binary is as follows: - -```go -package main - -import ( - "io/ioutil" - "os" - - "k8s.io/kubernetes/pkg/kubectl/cmd" - "k8s.io/kubernetes/pkg/kubectl/cmd/util" -) - -func main() { - kubectl := cmd.NewKubectlCommand(util.NewFactory(nil), os.Stdin, ioutil.Discard, ioutil.Discard) - kubectl.GenBashCompletionFile("out.sh") -} -``` - -`out.sh` will get you completions of subcommands and flags. Copy it to `/etc/bash_completion.d/` as described [here](https://debian-administration.org/article/316/An_introduction_to_bash_completion_part_1) and reset your terminal to use autocompletion. If you make additional annotations to your code, you can get even more intelligent and flexible behavior. - -## Have the completions code complete your 'nouns' - -### Static completion of nouns - -This method allows you to provide a pre-defined list of completion choices for your nouns using the `validArgs` field. -For example, if you want `kubectl get [tab][tab]` to show a list of valid "nouns" you have to set them. Simplified code from `kubectl get` looks like: - -```go -validArgs []string = { "pod", "node", "service", "replicationcontroller" } - -cmd := &cobra.Command{ - Use: "get [(-o|--output=)json|yaml|template|...] (RESOURCE [NAME] | RESOURCE/NAME ...)", - Short: "Display one or many resources", - Long: get_long, - Example: get_example, - Run: func(cmd *cobra.Command, args []string) { - err := RunGet(f, out, cmd, args) - util.CheckErr(err) - }, - ValidArgs: validArgs, -} -``` - -Notice we put the "ValidArgs" on the "get" subcommand. Doing so will give results like - -```bash -# kubectl get [tab][tab] -node pod replicationcontroller service -``` - -### Plural form and shortcuts for nouns - -If your nouns have a number of aliases, you can define them alongside `ValidArgs` using `ArgAliases`: - -```go -argAliases []string = { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" } - -cmd := &cobra.Command{ - ... - ValidArgs: validArgs, - ArgAliases: argAliases -} -``` - -The aliases are not shown to the user on tab completion, but they are accepted as valid nouns by -the completion algorithm if entered manually, e.g. in: - -```bash -# kubectl get rc [tab][tab] -backend frontend database -``` - -Note that without declaring `rc` as an alias, the completion algorithm would show the list of nouns -in this example again instead of the replication controllers. - -### Dynamic completion of nouns - -In some cases it is not possible to provide a list of possible completions in advance. Instead, the list of completions must be determined at execution-time. Cobra provides two ways of defining such dynamic completion of nouns. Note that both these methods can be used along-side each other as long as they are not both used for the same command. - -**Note**: *Custom Completions written in Go* will automatically work for other shell-completion scripts (e.g., Fish shell), while *Custom Completions written in Bash* will only work for Bash shell-completion. It is therefore recommended to use *Custom Completions written in Go*. - -#### 1. Custom completions of nouns written in Go - -In a similar fashion as for static completions, you can use the `ValidArgsFunction` field to provide a Go function that Cobra will execute when it needs the list of completion choices for the nouns of a command. Note that either `ValidArgs` or `ValidArgsFunction` can be used for a single cobra command, but not both. -Simplified code from `helm status` looks like: - -```go -cmd := &cobra.Command{ - Use: "status RELEASE_NAME", - Short: "Display the status of the named release", - Long: status_long, - RunE: func(cmd *cobra.Command, args []string) { - RunGet(args[0]) - }, - ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - if len(args) != 0 { - return nil, cobra.ShellCompDirectiveNoFileComp - } - return getReleasesFromCluster(toComplete), cobra.ShellCompDirectiveNoFileComp - }, -} -``` -Where `getReleasesFromCluster()` is a Go function that obtains the list of current Helm releases running on the Kubernetes cluster. -Notice we put the `ValidArgsFunction` on the `status` subcommand. Let's assume the Helm releases on the cluster are: `harbor`, `notary`, `rook` and `thanos` then this dynamic completion will give results like - -```bash -# helm status [tab][tab] -harbor notary rook thanos -``` -You may have noticed the use of `cobra.ShellCompDirective`. These directives are bit fields allowing to control some shell completion behaviors for your particular completion. You can combine them with the bit-or operator such as `cobra.ShellCompDirectiveNoSpace | cobra.ShellCompDirectiveNoFileComp` -```go -// Indicates an error occurred and completions should be ignored. -ShellCompDirectiveError -// Indicates that the shell should not add a space after the completion, -// even if there is a single completion provided. -ShellCompDirectiveNoSpace -// Indicates that the shell should not provide file completion even when -// no completion is provided. -// This currently does not work for zsh or bash < 4 -ShellCompDirectiveNoFileComp -// Indicates that the shell will perform its default behavior after completions -// have been provided (this implies !ShellCompDirectiveNoSpace && !ShellCompDirectiveNoFileComp). -ShellCompDirectiveDefault -``` - -When using the `ValidArgsFunction`, Cobra will call your registered function after having parsed all flags and arguments provided in the command-line. You therefore don't need to do this parsing yourself. For example, when a user calls `helm status --namespace my-rook-ns [tab][tab]`, Cobra will call your registered `ValidArgsFunction` after having parsed the `--namespace` flag, as it would have done when calling the `RunE` function. - -##### Debugging - -Cobra achieves dynamic completions written in Go through the use of a hidden command called by the completion script. To debug your Go completion code, you can call this hidden command directly: -```bash -# helm __complete status har -harbor -:4 -Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr -``` -***Important:*** If the noun to complete is empty, you must pass an empty parameter to the `__complete` command: -```bash -# helm __complete status "" -harbor -notary -rook -thanos -:4 -Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr -``` -Calling the `__complete` command directly allows you to run the Go debugger to troubleshoot your code. You can also add printouts to your code; Cobra provides the following functions to use for printouts in Go completion code: -```go -// Prints to the completion script debug file (if BASH_COMP_DEBUG_FILE -// is set to a file path) and optionally prints to stderr. -cobra.CompDebug(msg string, printToStdErr bool) { -cobra.CompDebugln(msg string, printToStdErr bool) - -// Prints to the completion script debug file (if BASH_COMP_DEBUG_FILE -// is set to a file path) and to stderr. -cobra.CompError(msg string) -cobra.CompErrorln(msg string) -``` -***Important:*** You should **not** leave traces that print to stdout in your completion code as they will be interpreted as completion choices by the completion script. Instead, use the cobra-provided debugging traces functions mentioned above. - -#### 2. Custom completions of nouns written in Bash - -This method allows you to inject bash functions into the completion script. Those bash functions are responsible for providing the completion choices for your own completions. - -Some more actual code that works in kubernetes: - -```bash -const ( - bash_completion_func = `__kubectl_parse_get() -{ - local kubectl_output out - if kubectl_output=$(kubectl get --no-headers "$1" 2>/dev/null); then - out=($(echo "${kubectl_output}" | awk '{print $1}')) - COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) ) - fi -} - -__kubectl_get_resource() -{ - if [[ ${#nouns[@]} -eq 0 ]]; then - return 1 - fi - __kubectl_parse_get ${nouns[${#nouns[@]} -1]} - if [[ $? -eq 0 ]]; then - return 0 - fi -} - -__kubectl_custom_func() { - case ${last_command} in - kubectl_get | kubectl_describe | kubectl_delete | kubectl_stop) - __kubectl_get_resource - return - ;; - *) - ;; - esac -} -`) -``` - -And then I set that in my command definition: - -```go -cmds := &cobra.Command{ - Use: "kubectl", - Short: "kubectl controls the Kubernetes cluster manager", - Long: `kubectl controls the Kubernetes cluster manager. - -Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`, - Run: runHelp, - BashCompletionFunction: bash_completion_func, -} -``` - -The `BashCompletionFunction` option is really only valid/useful on the root command. Doing the above will cause `__kubectl_custom_func()` (`___custom_func()`) to be called when the built in processor was unable to find a solution. In the case of kubernetes a valid command might look something like `kubectl get pod [mypod]`. If you type `kubectl get pod [tab][tab]` the `__kubectl_customc_func()` will run because the cobra.Command only understood "kubectl" and "get." `__kubectl_custom_func()` will see that the cobra.Command is "kubectl_get" and will thus call another helper `__kubectl_get_resource()`. `__kubectl_get_resource` will look at the 'nouns' collected. In our example the only noun will be `pod`. So it will call `__kubectl_parse_get pod`. `__kubectl_parse_get` will actually call out to kubernetes and get any pods. It will then set `COMPREPLY` to valid pods! - -## Mark flags as required - -Most of the time completions will only show subcommands. But if a flag is required to make a subcommand work, you probably want it to show up when the user types [tab][tab]. Marking a flag as 'Required' is incredibly easy. - -```go -cmd.MarkFlagRequired("pod") -cmd.MarkFlagRequired("container") -``` - -and you'll get something like - -```bash -# kubectl exec [tab][tab][tab] --c --container= -p --pod= -``` - -# Specify valid filename extensions for flags that take a filename - -In this example we use --filename= and expect to get a json or yaml file as the argument. To make this easier we annotate the --filename flag with valid filename extensions. - -```go - annotations := []string{"json", "yaml", "yml"} - annotation := make(map[string][]string) - annotation[cobra.BashCompFilenameExt] = annotations - - flag := &pflag.Flag{ - Name: "filename", - Shorthand: "f", - Usage: usage, - Value: value, - DefValue: value.String(), - Annotations: annotation, - } - cmd.Flags().AddFlag(flag) -``` - -Now when you run a command with this filename flag you'll get something like - -```bash -# kubectl create -f -test/ example/ rpmbuild/ -hello.yml test.json -``` - -So while there are many other files in the CWD it only shows me subdirs and those with valid extensions. - -# Specify custom flag completion - -As for nouns, Cobra provides two ways of defining dynamic completion of flags. Note that both these methods can be used along-side each other as long as they are not both used for the same flag. - -**Note**: *Custom Completions written in Go* will automatically work for other shell-completion scripts (e.g., Fish shell), while *Custom Completions written in Bash* will only work for Bash shell-completion. It is therefore recommended to use *Custom Completions written in Go*. - -## 1. Custom completions of flags written in Go - -To provide a Go function that Cobra will execute when it needs the list of completion choices for a flag, you must register the function in the following manner: - -```go -flagName := "output" -cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - return []string{"json", "table", "yaml"}, cobra.ShellCompDirectiveDefault -}) -``` -Notice that calling `RegisterFlagCompletionFunc()` is done through the `command` with which the flag is associated. In our example this dynamic completion will give results like so: - -```bash -# helm status --output [tab][tab] -json table yaml -``` - -### Debugging - -You can also easily debug your Go completion code for flags: -```bash -# helm __complete status --output "" -json -table -yaml -:4 -Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr -``` -***Important:*** You should **not** leave traces that print to stdout in your completion code as they will be interpreted as completion choices by the completion script. Instead, use the cobra-provided debugging traces functions mentioned in the above section. - -## 2. Custom completions of flags written in Bash - -Alternatively, you can use bash code for flag custom completion. Similar to the filename -completion and filtering using `cobra.BashCompFilenameExt`, you can specify -a custom flag completion bash function with `cobra.BashCompCustom`: - -```go - annotation := make(map[string][]string) - annotation[cobra.BashCompCustom] = []string{"__kubectl_get_namespaces"} - - flag := &pflag.Flag{ - Name: "namespace", - Usage: usage, - Annotations: annotation, - } - cmd.Flags().AddFlag(flag) -``` - -In addition add the `__kubectl_get_namespaces` implementation in the `BashCompletionFunction` -value, e.g.: - -```bash -__kubectl_get_namespaces() -{ - local template - template="{{ range .items }}{{ .metadata.name }} {{ end }}" - local kubectl_out - if kubectl_out=$(kubectl get -o template --template="${template}" namespace 2>/dev/null); then - COMPREPLY=( $( compgen -W "${kubectl_out}[*]" -- "$cur" ) ) - fi -} -``` -# Using bash aliases for commands - -You can also configure the `bash aliases` for the commands and they will also support completions. - -```bash -alias aliasname=origcommand -complete -o default -F __start_origcommand aliasname - -# and now when you run `aliasname` completion will make -# suggestions as it did for `origcommand`. - -$) aliasname -completion firstcommand secondcommand -``` diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/cobra.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/cobra.go deleted file mode 100644 index d01becc8fa6..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/cobra.go +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright © 2013 Steve Francia . -// -// 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. - -// Commands similar to git, go tools and other modern CLI tools -// inspired by go, go-Commander, gh and subcommand - -package cobra - -import ( - "fmt" - "io" - "reflect" - "strconv" - "strings" - "text/template" - "time" - "unicode" -) - -var templateFuncs = template.FuncMap{ - "trim": strings.TrimSpace, - "trimRightSpace": trimRightSpace, - "trimTrailingWhitespaces": trimRightSpace, - "appendIfNotPresent": appendIfNotPresent, - "rpad": rpad, - "gt": Gt, - "eq": Eq, -} - -var initializers []func() - -// EnablePrefixMatching allows to set automatic prefix matching. Automatic prefix matching can be a dangerous thing -// to automatically enable in CLI tools. -// Set this to true to enable it. -var EnablePrefixMatching = false - -// EnableCommandSorting controls sorting of the slice of commands, which is turned on by default. -// To disable sorting, set it to false. -var EnableCommandSorting = true - -// MousetrapHelpText enables an information splash screen on Windows -// if the CLI is started from explorer.exe. -// To disable the mousetrap, just set this variable to blank string (""). -// Works only on Microsoft Windows. -var MousetrapHelpText = `This is a command line tool. - -You need to open cmd.exe and run it from there. -` - -// MousetrapDisplayDuration controls how long the MousetrapHelpText message is displayed on Windows -// if the CLI is started from explorer.exe. Set to 0 to wait for the return key to be pressed. -// To disable the mousetrap, just set MousetrapHelpText to blank string (""). -// Works only on Microsoft Windows. -var MousetrapDisplayDuration = 5 * time.Second - -// AddTemplateFunc adds a template function that's available to Usage and Help -// template generation. -func AddTemplateFunc(name string, tmplFunc interface{}) { - templateFuncs[name] = tmplFunc -} - -// AddTemplateFuncs adds multiple template functions that are available to Usage and -// Help template generation. -func AddTemplateFuncs(tmplFuncs template.FuncMap) { - for k, v := range tmplFuncs { - templateFuncs[k] = v - } -} - -// OnInitialize sets the passed functions to be run when each command's -// Execute method is called. -func OnInitialize(y ...func()) { - initializers = append(initializers, y...) -} - -// FIXME Gt is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// Gt takes two types and checks whether the first type is greater than the second. In case of types Arrays, Chans, -// Maps and Slices, Gt will compare their lengths. Ints are compared directly while strings are first parsed as -// ints and then compared. -func Gt(a interface{}, b interface{}) bool { - var left, right int64 - av := reflect.ValueOf(a) - - switch av.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - left = int64(av.Len()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - left = av.Int() - case reflect.String: - left, _ = strconv.ParseInt(av.String(), 10, 64) - } - - bv := reflect.ValueOf(b) - - switch bv.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - right = int64(bv.Len()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - right = bv.Int() - case reflect.String: - right, _ = strconv.ParseInt(bv.String(), 10, 64) - } - - return left > right -} - -// FIXME Eq is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// Eq takes two types and checks whether they are equal. Supported types are int and string. Unsupported types will panic. -func Eq(a interface{}, b interface{}) bool { - av := reflect.ValueOf(a) - bv := reflect.ValueOf(b) - - switch av.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - panic("Eq called on unsupported type") - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return av.Int() == bv.Int() - case reflect.String: - return av.String() == bv.String() - } - return false -} - -func trimRightSpace(s string) string { - return strings.TrimRightFunc(s, unicode.IsSpace) -} - -// FIXME appendIfNotPresent is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// appendIfNotPresent will append stringToAppend to the end of s, but only if it's not yet present in s. -func appendIfNotPresent(s, stringToAppend string) string { - if strings.Contains(s, stringToAppend) { - return s - } - return s + " " + stringToAppend -} - -// rpad adds padding to the right of a string. -func rpad(s string, padding int) string { - template := fmt.Sprintf("%%-%ds", padding) - return fmt.Sprintf(template, s) -} - -// tmpl executes the given template text on data, writing the result to w. -func tmpl(w io.Writer, text string, data interface{}) error { - t := template.New("top") - t.Funcs(templateFuncs) - template.Must(t.Parse(text)) - return t.Execute(w, data) -} - -// ld compares two strings and returns the levenshtein distance between them. -func ld(s, t string, ignoreCase bool) int { - if ignoreCase { - s = strings.ToLower(s) - t = strings.ToLower(t) - } - d := make([][]int, len(s)+1) - for i := range d { - d[i] = make([]int, len(t)+1) - } - for i := range d { - d[i][0] = i - } - for j := range d[0] { - d[0][j] = j - } - for j := 1; j <= len(t); j++ { - for i := 1; i <= len(s); i++ { - if s[i-1] == t[j-1] { - d[i][j] = d[i-1][j-1] - } else { - min := d[i-1][j] - if d[i][j-1] < min { - min = d[i][j-1] - } - if d[i-1][j-1] < min { - min = d[i-1][j-1] - } - d[i][j] = min + 1 - } - } - - } - return d[len(s)][len(t)] -} - -func stringInSlice(a string, list []string) bool { - for _, b := range list { - if b == a { - return true - } - } - return false -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command.go deleted file mode 100644 index 88e6ed77d0e..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command.go +++ /dev/null @@ -1,1634 +0,0 @@ -// Copyright © 2013 Steve Francia . -// -// 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 cobra is a commander providing a simple interface to create powerful modern CLI interfaces. -// In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code. -package cobra - -import ( - "bytes" - "context" - "fmt" - "io" - "os" - "path/filepath" - "sort" - "strings" - - flag "github.com/spf13/pflag" -) - -// FParseErrWhitelist configures Flag parse errors to be ignored -type FParseErrWhitelist flag.ParseErrorsWhitelist - -// Command is just that, a command for your application. -// E.g. 'go run ...' - 'run' is the command. Cobra requires -// you to define the usage and description as part of your command -// definition to ensure usability. -type Command struct { - // Use is the one-line usage message. - Use string - - // Aliases is an array of aliases that can be used instead of the first word in Use. - Aliases []string - - // SuggestFor is an array of command names for which this command will be suggested - - // similar to aliases but only suggests. - SuggestFor []string - - // Short is the short description shown in the 'help' output. - Short string - - // Long is the long message shown in the 'help ' output. - Long string - - // Example is examples of how to use the command. - Example string - - // ValidArgs is list of all valid non-flag arguments that are accepted in bash completions - ValidArgs []string - // ValidArgsFunction is an optional function that provides valid non-flag arguments for bash completion. - // It is a dynamic version of using ValidArgs. - // Only one of ValidArgs and ValidArgsFunction can be used for a command. - ValidArgsFunction func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) - - // Expected arguments - Args PositionalArgs - - // ArgAliases is List of aliases for ValidArgs. - // These are not suggested to the user in the bash completion, - // but accepted if entered manually. - ArgAliases []string - - // BashCompletionFunction is custom functions used by the bash autocompletion generator. - BashCompletionFunction string - - // Deprecated defines, if this command is deprecated and should print this string when used. - Deprecated string - - // Hidden defines, if this command is hidden and should NOT show up in the list of available commands. - Hidden bool - - // Annotations are key/value pairs that can be used by applications to identify or - // group commands. - Annotations map[string]string - - // Version defines the version for this command. If this value is non-empty and the command does not - // define a "version" flag, a "version" boolean flag will be added to the command and, if specified, - // will print content of the "Version" variable. A shorthand "v" flag will also be added if the - // command does not define one. - Version string - - // The *Run functions are executed in the following order: - // * PersistentPreRun() - // * PreRun() - // * Run() - // * PostRun() - // * PersistentPostRun() - // All functions get the same args, the arguments after the command name. - // - // PersistentPreRun: children of this command will inherit and execute. - PersistentPreRun func(cmd *Command, args []string) - // PersistentPreRunE: PersistentPreRun but returns an error. - PersistentPreRunE func(cmd *Command, args []string) error - // PreRun: children of this command will not inherit. - PreRun func(cmd *Command, args []string) - // PreRunE: PreRun but returns an error. - PreRunE func(cmd *Command, args []string) error - // Run: Typically the actual work function. Most commands will only implement this. - Run func(cmd *Command, args []string) - // RunE: Run but returns an error. - RunE func(cmd *Command, args []string) error - // PostRun: run after the Run command. - PostRun func(cmd *Command, args []string) - // PostRunE: PostRun but returns an error. - PostRunE func(cmd *Command, args []string) error - // PersistentPostRun: children of this command will inherit and execute after PostRun. - PersistentPostRun func(cmd *Command, args []string) - // PersistentPostRunE: PersistentPostRun but returns an error. - PersistentPostRunE func(cmd *Command, args []string) error - - // SilenceErrors is an option to quiet errors down stream. - SilenceErrors bool - - // SilenceUsage is an option to silence usage when an error occurs. - SilenceUsage bool - - // DisableFlagParsing disables the flag parsing. - // If this is true all flags will be passed to the command as arguments. - DisableFlagParsing bool - - // DisableAutoGenTag defines, if gen tag ("Auto generated by spf13/cobra...") - // will be printed by generating docs for this command. - DisableAutoGenTag bool - - // DisableFlagsInUseLine will disable the addition of [flags] to the usage - // line of a command when printing help or generating docs - DisableFlagsInUseLine bool - - // DisableSuggestions disables the suggestions based on Levenshtein distance - // that go along with 'unknown command' messages. - DisableSuggestions bool - // SuggestionsMinimumDistance defines minimum levenshtein distance to display suggestions. - // Must be > 0. - SuggestionsMinimumDistance int - - // TraverseChildren parses flags on all parents before executing child command. - TraverseChildren bool - - // FParseErrWhitelist flag parse errors to be ignored - FParseErrWhitelist FParseErrWhitelist - - ctx context.Context - - // commands is the list of commands supported by this program. - commands []*Command - // parent is a parent command for this command. - parent *Command - // Max lengths of commands' string lengths for use in padding. - commandsMaxUseLen int - commandsMaxCommandPathLen int - commandsMaxNameLen int - // commandsAreSorted defines, if command slice are sorted or not. - commandsAreSorted bool - // commandCalledAs is the name or alias value used to call this command. - commandCalledAs struct { - name string - called bool - } - - // args is actual args parsed from flags. - args []string - // flagErrorBuf contains all error messages from pflag. - flagErrorBuf *bytes.Buffer - // flags is full set of flags. - flags *flag.FlagSet - // pflags contains persistent flags. - pflags *flag.FlagSet - // lflags contains local flags. - lflags *flag.FlagSet - // iflags contains inherited flags. - iflags *flag.FlagSet - // parentsPflags is all persistent flags of cmd's parents. - parentsPflags *flag.FlagSet - // globNormFunc is the global normalization function - // that we can use on every pflag set and children commands - globNormFunc func(f *flag.FlagSet, name string) flag.NormalizedName - - // usageFunc is usage func defined by user. - usageFunc func(*Command) error - // usageTemplate is usage template defined by user. - usageTemplate string - // flagErrorFunc is func defined by user and it's called when the parsing of - // flags returns an error. - flagErrorFunc func(*Command, error) error - // helpTemplate is help template defined by user. - helpTemplate string - // helpFunc is help func defined by user. - helpFunc func(*Command, []string) - // helpCommand is command with usage 'help'. If it's not defined by user, - // cobra uses default help command. - helpCommand *Command - // versionTemplate is the version template defined by user. - versionTemplate string - - // inReader is a reader defined by the user that replaces stdin - inReader io.Reader - // outWriter is a writer defined by the user that replaces stdout - outWriter io.Writer - // errWriter is a writer defined by the user that replaces stderr - errWriter io.Writer -} - -// Context returns underlying command context. If command wasn't -// executed with ExecuteContext Context returns Background context. -func (c *Command) Context() context.Context { - return c.ctx -} - -// SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden -// particularly useful when testing. -func (c *Command) SetArgs(a []string) { - c.args = a -} - -// SetOutput sets the destination for usage and error messages. -// If output is nil, os.Stderr is used. -// Deprecated: Use SetOut and/or SetErr instead -func (c *Command) SetOutput(output io.Writer) { - c.outWriter = output - c.errWriter = output -} - -// SetOut sets the destination for usage messages. -// If newOut is nil, os.Stdout is used. -func (c *Command) SetOut(newOut io.Writer) { - c.outWriter = newOut -} - -// SetErr sets the destination for error messages. -// If newErr is nil, os.Stderr is used. -func (c *Command) SetErr(newErr io.Writer) { - c.errWriter = newErr -} - -// SetIn sets the source for input data -// If newIn is nil, os.Stdin is used. -func (c *Command) SetIn(newIn io.Reader) { - c.inReader = newIn -} - -// SetUsageFunc sets usage function. Usage can be defined by application. -func (c *Command) SetUsageFunc(f func(*Command) error) { - c.usageFunc = f -} - -// SetUsageTemplate sets usage template. Can be defined by Application. -func (c *Command) SetUsageTemplate(s string) { - c.usageTemplate = s -} - -// SetFlagErrorFunc sets a function to generate an error when flag parsing -// fails. -func (c *Command) SetFlagErrorFunc(f func(*Command, error) error) { - c.flagErrorFunc = f -} - -// SetHelpFunc sets help function. Can be defined by Application. -func (c *Command) SetHelpFunc(f func(*Command, []string)) { - c.helpFunc = f -} - -// SetHelpCommand sets help command. -func (c *Command) SetHelpCommand(cmd *Command) { - c.helpCommand = cmd -} - -// SetHelpTemplate sets help template to be used. Application can use it to set custom template. -func (c *Command) SetHelpTemplate(s string) { - c.helpTemplate = s -} - -// SetVersionTemplate sets version template to be used. Application can use it to set custom template. -func (c *Command) SetVersionTemplate(s string) { - c.versionTemplate = s -} - -// SetGlobalNormalizationFunc sets a normalization function to all flag sets and also to child commands. -// The user should not have a cyclic dependency on commands. -func (c *Command) SetGlobalNormalizationFunc(n func(f *flag.FlagSet, name string) flag.NormalizedName) { - c.Flags().SetNormalizeFunc(n) - c.PersistentFlags().SetNormalizeFunc(n) - c.globNormFunc = n - - for _, command := range c.commands { - command.SetGlobalNormalizationFunc(n) - } -} - -// OutOrStdout returns output to stdout. -func (c *Command) OutOrStdout() io.Writer { - return c.getOut(os.Stdout) -} - -// OutOrStderr returns output to stderr -func (c *Command) OutOrStderr() io.Writer { - return c.getOut(os.Stderr) -} - -// ErrOrStderr returns output to stderr -func (c *Command) ErrOrStderr() io.Writer { - return c.getErr(os.Stderr) -} - -// InOrStdin returns input to stdin -func (c *Command) InOrStdin() io.Reader { - return c.getIn(os.Stdin) -} - -func (c *Command) getOut(def io.Writer) io.Writer { - if c.outWriter != nil { - return c.outWriter - } - if c.HasParent() { - return c.parent.getOut(def) - } - return def -} - -func (c *Command) getErr(def io.Writer) io.Writer { - if c.errWriter != nil { - return c.errWriter - } - if c.HasParent() { - return c.parent.getErr(def) - } - return def -} - -func (c *Command) getIn(def io.Reader) io.Reader { - if c.inReader != nil { - return c.inReader - } - if c.HasParent() { - return c.parent.getIn(def) - } - return def -} - -// UsageFunc returns either the function set by SetUsageFunc for this command -// or a parent, or it returns a default usage function. -func (c *Command) UsageFunc() (f func(*Command) error) { - if c.usageFunc != nil { - return c.usageFunc - } - if c.HasParent() { - return c.Parent().UsageFunc() - } - return func(c *Command) error { - c.mergePersistentFlags() - err := tmpl(c.OutOrStderr(), c.UsageTemplate(), c) - if err != nil { - c.Println(err) - } - return err - } -} - -// Usage puts out the usage for the command. -// Used when a user provides invalid input. -// Can be defined by user by overriding UsageFunc. -func (c *Command) Usage() error { - return c.UsageFunc()(c) -} - -// HelpFunc returns either the function set by SetHelpFunc for this command -// or a parent, or it returns a function with default help behavior. -func (c *Command) HelpFunc() func(*Command, []string) { - if c.helpFunc != nil { - return c.helpFunc - } - if c.HasParent() { - return c.Parent().HelpFunc() - } - return func(c *Command, a []string) { - c.mergePersistentFlags() - // The help should be sent to stdout - // See https://github.com/spf13/cobra/issues/1002 - err := tmpl(c.OutOrStdout(), c.HelpTemplate(), c) - if err != nil { - c.Println(err) - } - } -} - -// Help puts out the help for the command. -// Used when a user calls help [command]. -// Can be defined by user by overriding HelpFunc. -func (c *Command) Help() error { - c.HelpFunc()(c, []string{}) - return nil -} - -// UsageString returns usage string. -func (c *Command) UsageString() string { - // Storing normal writers - tmpOutput := c.outWriter - tmpErr := c.errWriter - - bb := new(bytes.Buffer) - c.outWriter = bb - c.errWriter = bb - - c.Usage() - - // Setting things back to normal - c.outWriter = tmpOutput - c.errWriter = tmpErr - - return bb.String() -} - -// FlagErrorFunc returns either the function set by SetFlagErrorFunc for this -// command or a parent, or it returns a function which returns the original -// error. -func (c *Command) FlagErrorFunc() (f func(*Command, error) error) { - if c.flagErrorFunc != nil { - return c.flagErrorFunc - } - - if c.HasParent() { - return c.parent.FlagErrorFunc() - } - return func(c *Command, err error) error { - return err - } -} - -var minUsagePadding = 25 - -// UsagePadding return padding for the usage. -func (c *Command) UsagePadding() int { - if c.parent == nil || minUsagePadding > c.parent.commandsMaxUseLen { - return minUsagePadding - } - return c.parent.commandsMaxUseLen -} - -var minCommandPathPadding = 11 - -// CommandPathPadding return padding for the command path. -func (c *Command) CommandPathPadding() int { - if c.parent == nil || minCommandPathPadding > c.parent.commandsMaxCommandPathLen { - return minCommandPathPadding - } - return c.parent.commandsMaxCommandPathLen -} - -var minNamePadding = 11 - -// NamePadding returns padding for the name. -func (c *Command) NamePadding() int { - if c.parent == nil || minNamePadding > c.parent.commandsMaxNameLen { - return minNamePadding - } - return c.parent.commandsMaxNameLen -} - -// UsageTemplate returns usage template for the command. -func (c *Command) UsageTemplate() string { - if c.usageTemplate != "" { - return c.usageTemplate - } - - if c.HasParent() { - return c.parent.UsageTemplate() - } - return `Usage:{{if .Runnable}} - {{.UseLine}}{{end}}{{if .HasAvailableSubCommands}} - {{.CommandPath}} [command]{{end}}{{if gt (len .Aliases) 0}} - -Aliases: - {{.NameAndAliases}}{{end}}{{if .HasExample}} - -Examples: -{{.Example}}{{end}}{{if .HasAvailableSubCommands}} - -Available Commands:{{range .Commands}}{{if (or .IsAvailableCommand (eq .Name "help"))}} - {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableLocalFlags}} - -Flags: -{{.LocalFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasAvailableInheritedFlags}} - -Global Flags: -{{.InheritedFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasHelpSubCommands}} - -Additional help topics:{{range .Commands}}{{if .IsAdditionalHelpTopicCommand}} - {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableSubCommands}} - -Use "{{.CommandPath}} [command] --help" for more information about a command.{{end}} -` -} - -// HelpTemplate return help template for the command. -func (c *Command) HelpTemplate() string { - if c.helpTemplate != "" { - return c.helpTemplate - } - - if c.HasParent() { - return c.parent.HelpTemplate() - } - return `{{with (or .Long .Short)}}{{. | trimTrailingWhitespaces}} - -{{end}}{{if or .Runnable .HasSubCommands}}{{.UsageString}}{{end}}` -} - -// VersionTemplate return version template for the command. -func (c *Command) VersionTemplate() string { - if c.versionTemplate != "" { - return c.versionTemplate - } - - if c.HasParent() { - return c.parent.VersionTemplate() - } - return `{{with .Name}}{{printf "%s " .}}{{end}}{{printf "version %s" .Version}} -` -} - -func hasNoOptDefVal(name string, fs *flag.FlagSet) bool { - flag := fs.Lookup(name) - if flag == nil { - return false - } - return flag.NoOptDefVal != "" -} - -func shortHasNoOptDefVal(name string, fs *flag.FlagSet) bool { - if len(name) == 0 { - return false - } - - flag := fs.ShorthandLookup(name[:1]) - if flag == nil { - return false - } - return flag.NoOptDefVal != "" -} - -func stripFlags(args []string, c *Command) []string { - if len(args) == 0 { - return args - } - c.mergePersistentFlags() - - commands := []string{} - flags := c.Flags() - -Loop: - for len(args) > 0 { - s := args[0] - args = args[1:] - switch { - case s == "--": - // "--" terminates the flags - break Loop - case strings.HasPrefix(s, "--") && !strings.Contains(s, "=") && !hasNoOptDefVal(s[2:], flags): - // If '--flag arg' then - // delete arg from args. - fallthrough // (do the same as below) - case strings.HasPrefix(s, "-") && !strings.Contains(s, "=") && len(s) == 2 && !shortHasNoOptDefVal(s[1:], flags): - // If '-f arg' then - // delete 'arg' from args or break the loop if len(args) <= 1. - if len(args) <= 1 { - break Loop - } else { - args = args[1:] - continue - } - case s != "" && !strings.HasPrefix(s, "-"): - commands = append(commands, s) - } - } - - return commands -} - -// argsMinusFirstX removes only the first x from args. Otherwise, commands that look like -// openshift admin policy add-role-to-user admin my-user, lose the admin argument (arg[4]). -func argsMinusFirstX(args []string, x string) []string { - for i, y := range args { - if x == y { - ret := []string{} - ret = append(ret, args[:i]...) - ret = append(ret, args[i+1:]...) - return ret - } - } - return args -} - -func isFlagArg(arg string) bool { - return ((len(arg) >= 3 && arg[1] == '-') || - (len(arg) >= 2 && arg[0] == '-' && arg[1] != '-')) -} - -// Find the target command given the args and command tree -// Meant to be run on the highest node. Only searches down. -func (c *Command) Find(args []string) (*Command, []string, error) { - var innerfind func(*Command, []string) (*Command, []string) - - innerfind = func(c *Command, innerArgs []string) (*Command, []string) { - argsWOflags := stripFlags(innerArgs, c) - if len(argsWOflags) == 0 { - return c, innerArgs - } - nextSubCmd := argsWOflags[0] - - cmd := c.findNext(nextSubCmd) - if cmd != nil { - return innerfind(cmd, argsMinusFirstX(innerArgs, nextSubCmd)) - } - return c, innerArgs - } - - commandFound, a := innerfind(c, args) - if commandFound.Args == nil { - return commandFound, a, legacyArgs(commandFound, stripFlags(a, commandFound)) - } - return commandFound, a, nil -} - -func (c *Command) findSuggestions(arg string) string { - if c.DisableSuggestions { - return "" - } - if c.SuggestionsMinimumDistance <= 0 { - c.SuggestionsMinimumDistance = 2 - } - suggestionsString := "" - if suggestions := c.SuggestionsFor(arg); len(suggestions) > 0 { - suggestionsString += "\n\nDid you mean this?\n" - for _, s := range suggestions { - suggestionsString += fmt.Sprintf("\t%v\n", s) - } - } - return suggestionsString -} - -func (c *Command) findNext(next string) *Command { - matches := make([]*Command, 0) - for _, cmd := range c.commands { - if cmd.Name() == next || cmd.HasAlias(next) { - cmd.commandCalledAs.name = next - return cmd - } - if EnablePrefixMatching && cmd.hasNameOrAliasPrefix(next) { - matches = append(matches, cmd) - } - } - - if len(matches) == 1 { - return matches[0] - } - - return nil -} - -// Traverse the command tree to find the command, and parse args for -// each parent. -func (c *Command) Traverse(args []string) (*Command, []string, error) { - flags := []string{} - inFlag := false - - for i, arg := range args { - switch { - // A long flag with a space separated value - case strings.HasPrefix(arg, "--") && !strings.Contains(arg, "="): - // TODO: this isn't quite right, we should really check ahead for 'true' or 'false' - inFlag = !hasNoOptDefVal(arg[2:], c.Flags()) - flags = append(flags, arg) - continue - // A short flag with a space separated value - case strings.HasPrefix(arg, "-") && !strings.Contains(arg, "=") && len(arg) == 2 && !shortHasNoOptDefVal(arg[1:], c.Flags()): - inFlag = true - flags = append(flags, arg) - continue - // The value for a flag - case inFlag: - inFlag = false - flags = append(flags, arg) - continue - // A flag without a value, or with an `=` separated value - case isFlagArg(arg): - flags = append(flags, arg) - continue - } - - cmd := c.findNext(arg) - if cmd == nil { - return c, args, nil - } - - if err := c.ParseFlags(flags); err != nil { - return nil, args, err - } - return cmd.Traverse(args[i+1:]) - } - return c, args, nil -} - -// SuggestionsFor provides suggestions for the typedName. -func (c *Command) SuggestionsFor(typedName string) []string { - suggestions := []string{} - for _, cmd := range c.commands { - if cmd.IsAvailableCommand() { - levenshteinDistance := ld(typedName, cmd.Name(), true) - suggestByLevenshtein := levenshteinDistance <= c.SuggestionsMinimumDistance - suggestByPrefix := strings.HasPrefix(strings.ToLower(cmd.Name()), strings.ToLower(typedName)) - if suggestByLevenshtein || suggestByPrefix { - suggestions = append(suggestions, cmd.Name()) - } - for _, explicitSuggestion := range cmd.SuggestFor { - if strings.EqualFold(typedName, explicitSuggestion) { - suggestions = append(suggestions, cmd.Name()) - } - } - } - } - return suggestions -} - -// VisitParents visits all parents of the command and invokes fn on each parent. -func (c *Command) VisitParents(fn func(*Command)) { - if c.HasParent() { - fn(c.Parent()) - c.Parent().VisitParents(fn) - } -} - -// Root finds root command. -func (c *Command) Root() *Command { - if c.HasParent() { - return c.Parent().Root() - } - return c -} - -// ArgsLenAtDash will return the length of c.Flags().Args at the moment -// when a -- was found during args parsing. -func (c *Command) ArgsLenAtDash() int { - return c.Flags().ArgsLenAtDash() -} - -func (c *Command) execute(a []string) (err error) { - if c == nil { - return fmt.Errorf("Called Execute() on a nil Command") - } - - if len(c.Deprecated) > 0 { - c.Printf("Command %q is deprecated, %s\n", c.Name(), c.Deprecated) - } - - // initialize help and version flag at the last point possible to allow for user - // overriding - c.InitDefaultHelpFlag() - c.InitDefaultVersionFlag() - - err = c.ParseFlags(a) - if err != nil { - return c.FlagErrorFunc()(c, err) - } - - // If help is called, regardless of other flags, return we want help. - // Also say we need help if the command isn't runnable. - helpVal, err := c.Flags().GetBool("help") - if err != nil { - // should be impossible to get here as we always declare a help - // flag in InitDefaultHelpFlag() - c.Println("\"help\" flag declared as non-bool. Please correct your code") - return err - } - - if helpVal { - return flag.ErrHelp - } - - // for back-compat, only add version flag behavior if version is defined - if c.Version != "" { - versionVal, err := c.Flags().GetBool("version") - if err != nil { - c.Println("\"version\" flag declared as non-bool. Please correct your code") - return err - } - if versionVal { - err := tmpl(c.OutOrStdout(), c.VersionTemplate(), c) - if err != nil { - c.Println(err) - } - return err - } - } - - if !c.Runnable() { - return flag.ErrHelp - } - - c.preRun() - - argWoFlags := c.Flags().Args() - if c.DisableFlagParsing { - argWoFlags = a - } - - if err := c.ValidateArgs(argWoFlags); err != nil { - return err - } - - for p := c; p != nil; p = p.Parent() { - if p.PersistentPreRunE != nil { - if err := p.PersistentPreRunE(c, argWoFlags); err != nil { - return err - } - break - } else if p.PersistentPreRun != nil { - p.PersistentPreRun(c, argWoFlags) - break - } - } - if c.PreRunE != nil { - if err := c.PreRunE(c, argWoFlags); err != nil { - return err - } - } else if c.PreRun != nil { - c.PreRun(c, argWoFlags) - } - - if err := c.validateRequiredFlags(); err != nil { - return err - } - if c.RunE != nil { - if err := c.RunE(c, argWoFlags); err != nil { - return err - } - } else { - c.Run(c, argWoFlags) - } - if c.PostRunE != nil { - if err := c.PostRunE(c, argWoFlags); err != nil { - return err - } - } else if c.PostRun != nil { - c.PostRun(c, argWoFlags) - } - for p := c; p != nil; p = p.Parent() { - if p.PersistentPostRunE != nil { - if err := p.PersistentPostRunE(c, argWoFlags); err != nil { - return err - } - break - } else if p.PersistentPostRun != nil { - p.PersistentPostRun(c, argWoFlags) - break - } - } - - return nil -} - -func (c *Command) preRun() { - for _, x := range initializers { - x() - } -} - -// ExecuteContext is the same as Execute(), but sets the ctx on the command. -// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle functions. -func (c *Command) ExecuteContext(ctx context.Context) error { - c.ctx = ctx - return c.Execute() -} - -// Execute uses the args (os.Args[1:] by default) -// and run through the command tree finding appropriate matches -// for commands and then corresponding flags. -func (c *Command) Execute() error { - _, err := c.ExecuteC() - return err -} - -// ExecuteC executes the command. -func (c *Command) ExecuteC() (cmd *Command, err error) { - if c.ctx == nil { - c.ctx = context.Background() - } - - // Regardless of what command execute is called on, run on Root only - if c.HasParent() { - return c.Root().ExecuteC() - } - - // windows hook - if preExecHookFn != nil { - preExecHookFn(c) - } - - // initialize help as the last point possible to allow for user - // overriding - c.InitDefaultHelpCmd() - - args := c.args - - // Workaround FAIL with "go test -v" or "cobra.test -test.v", see #155 - if c.args == nil && filepath.Base(os.Args[0]) != "cobra.test" { - args = os.Args[1:] - } - - // initialize the hidden command to be used for bash completion - c.initCompleteCmd(args) - - var flags []string - if c.TraverseChildren { - cmd, flags, err = c.Traverse(args) - } else { - cmd, flags, err = c.Find(args) - } - if err != nil { - // If found parse to a subcommand and then failed, talk about the subcommand - if cmd != nil { - c = cmd - } - if !c.SilenceErrors { - c.Println("Error:", err.Error()) - c.Printf("Run '%v --help' for usage.\n", c.CommandPath()) - } - return c, err - } - - cmd.commandCalledAs.called = true - if cmd.commandCalledAs.name == "" { - cmd.commandCalledAs.name = cmd.Name() - } - - // We have to pass global context to children command - // if context is present on the parent command. - if cmd.ctx == nil { - cmd.ctx = c.ctx - } - - err = cmd.execute(flags) - if err != nil { - // Always show help if requested, even if SilenceErrors is in - // effect - if err == flag.ErrHelp { - cmd.HelpFunc()(cmd, args) - return cmd, nil - } - - // If root command has SilentErrors flagged, - // all subcommands should respect it - if !cmd.SilenceErrors && !c.SilenceErrors { - c.Println("Error:", err.Error()) - } - - // If root command has SilentUsage flagged, - // all subcommands should respect it - if !cmd.SilenceUsage && !c.SilenceUsage { - c.Println(cmd.UsageString()) - } - } - return cmd, err -} - -func (c *Command) ValidateArgs(args []string) error { - if c.Args == nil { - return nil - } - return c.Args(c, args) -} - -func (c *Command) validateRequiredFlags() error { - flags := c.Flags() - missingFlagNames := []string{} - flags.VisitAll(func(pflag *flag.Flag) { - requiredAnnotation, found := pflag.Annotations[BashCompOneRequiredFlag] - if !found { - return - } - if (requiredAnnotation[0] == "true") && !pflag.Changed { - missingFlagNames = append(missingFlagNames, pflag.Name) - } - }) - - if len(missingFlagNames) > 0 { - return fmt.Errorf(`required flag(s) "%s" not set`, strings.Join(missingFlagNames, `", "`)) - } - return nil -} - -// InitDefaultHelpFlag adds default help flag to c. -// It is called automatically by executing the c or by calling help and usage. -// If c already has help flag, it will do nothing. -func (c *Command) InitDefaultHelpFlag() { - c.mergePersistentFlags() - if c.Flags().Lookup("help") == nil { - usage := "help for " - if c.Name() == "" { - usage += "this command" - } else { - usage += c.Name() - } - c.Flags().BoolP("help", "h", false, usage) - } -} - -// InitDefaultVersionFlag adds default version flag to c. -// It is called automatically by executing the c. -// If c already has a version flag, it will do nothing. -// If c.Version is empty, it will do nothing. -func (c *Command) InitDefaultVersionFlag() { - if c.Version == "" { - return - } - - c.mergePersistentFlags() - if c.Flags().Lookup("version") == nil { - usage := "version for " - if c.Name() == "" { - usage += "this command" - } else { - usage += c.Name() - } - if c.Flags().ShorthandLookup("v") == nil { - c.Flags().BoolP("version", "v", false, usage) - } else { - c.Flags().Bool("version", false, usage) - } - } -} - -// InitDefaultHelpCmd adds default help command to c. -// It is called automatically by executing the c or by calling help and usage. -// If c already has help command or c has no subcommands, it will do nothing. -func (c *Command) InitDefaultHelpCmd() { - if !c.HasSubCommands() { - return - } - - if c.helpCommand == nil { - c.helpCommand = &Command{ - Use: "help [command]", - Short: "Help about any command", - Long: `Help provides help for any command in the application. -Simply type ` + c.Name() + ` help [path to command] for full details.`, - - Run: func(c *Command, args []string) { - cmd, _, e := c.Root().Find(args) - if cmd == nil || e != nil { - c.Printf("Unknown help topic %#q\n", args) - c.Root().Usage() - } else { - cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown - cmd.Help() - } - }, - } - } - c.RemoveCommand(c.helpCommand) - c.AddCommand(c.helpCommand) -} - -// ResetCommands delete parent, subcommand and help command from c. -func (c *Command) ResetCommands() { - c.parent = nil - c.commands = nil - c.helpCommand = nil - c.parentsPflags = nil -} - -// Sorts commands by their names. -type commandSorterByName []*Command - -func (c commandSorterByName) Len() int { return len(c) } -func (c commandSorterByName) Swap(i, j int) { c[i], c[j] = c[j], c[i] } -func (c commandSorterByName) Less(i, j int) bool { return c[i].Name() < c[j].Name() } - -// Commands returns a sorted slice of child commands. -func (c *Command) Commands() []*Command { - // do not sort commands if it already sorted or sorting was disabled - if EnableCommandSorting && !c.commandsAreSorted { - sort.Sort(commandSorterByName(c.commands)) - c.commandsAreSorted = true - } - return c.commands -} - -// AddCommand adds one or more commands to this parent command. -func (c *Command) AddCommand(cmds ...*Command) { - for i, x := range cmds { - if cmds[i] == c { - panic("Command can't be a child of itself") - } - cmds[i].parent = c - // update max lengths - usageLen := len(x.Use) - if usageLen > c.commandsMaxUseLen { - c.commandsMaxUseLen = usageLen - } - commandPathLen := len(x.CommandPath()) - if commandPathLen > c.commandsMaxCommandPathLen { - c.commandsMaxCommandPathLen = commandPathLen - } - nameLen := len(x.Name()) - if nameLen > c.commandsMaxNameLen { - c.commandsMaxNameLen = nameLen - } - // If global normalization function exists, update all children - if c.globNormFunc != nil { - x.SetGlobalNormalizationFunc(c.globNormFunc) - } - c.commands = append(c.commands, x) - c.commandsAreSorted = false - } -} - -// RemoveCommand removes one or more commands from a parent command. -func (c *Command) RemoveCommand(cmds ...*Command) { - commands := []*Command{} -main: - for _, command := range c.commands { - for _, cmd := range cmds { - if command == cmd { - command.parent = nil - continue main - } - } - commands = append(commands, command) - } - c.commands = commands - // recompute all lengths - c.commandsMaxUseLen = 0 - c.commandsMaxCommandPathLen = 0 - c.commandsMaxNameLen = 0 - for _, command := range c.commands { - usageLen := len(command.Use) - if usageLen > c.commandsMaxUseLen { - c.commandsMaxUseLen = usageLen - } - commandPathLen := len(command.CommandPath()) - if commandPathLen > c.commandsMaxCommandPathLen { - c.commandsMaxCommandPathLen = commandPathLen - } - nameLen := len(command.Name()) - if nameLen > c.commandsMaxNameLen { - c.commandsMaxNameLen = nameLen - } - } -} - -// Print is a convenience method to Print to the defined output, fallback to Stderr if not set. -func (c *Command) Print(i ...interface{}) { - fmt.Fprint(c.OutOrStderr(), i...) -} - -// Println is a convenience method to Println to the defined output, fallback to Stderr if not set. -func (c *Command) Println(i ...interface{}) { - c.Print(fmt.Sprintln(i...)) -} - -// Printf is a convenience method to Printf to the defined output, fallback to Stderr if not set. -func (c *Command) Printf(format string, i ...interface{}) { - c.Print(fmt.Sprintf(format, i...)) -} - -// PrintErr is a convenience method to Print to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErr(i ...interface{}) { - fmt.Fprint(c.ErrOrStderr(), i...) -} - -// PrintErrln is a convenience method to Println to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErrln(i ...interface{}) { - c.Print(fmt.Sprintln(i...)) -} - -// PrintErrf is a convenience method to Printf to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErrf(format string, i ...interface{}) { - c.Print(fmt.Sprintf(format, i...)) -} - -// CommandPath returns the full path to this command. -func (c *Command) CommandPath() string { - if c.HasParent() { - return c.Parent().CommandPath() + " " + c.Name() - } - return c.Name() -} - -// UseLine puts out the full usage for a given command (including parents). -func (c *Command) UseLine() string { - var useline string - if c.HasParent() { - useline = c.parent.CommandPath() + " " + c.Use - } else { - useline = c.Use - } - if c.DisableFlagsInUseLine { - return useline - } - if c.HasAvailableFlags() && !strings.Contains(useline, "[flags]") { - useline += " [flags]" - } - return useline -} - -// DebugFlags used to determine which flags have been assigned to which commands -// and which persist. -func (c *Command) DebugFlags() { - c.Println("DebugFlags called on", c.Name()) - var debugflags func(*Command) - - debugflags = func(x *Command) { - if x.HasFlags() || x.HasPersistentFlags() { - c.Println(x.Name()) - } - if x.HasFlags() { - x.flags.VisitAll(func(f *flag.Flag) { - if x.HasPersistentFlags() && x.persistentFlag(f.Name) != nil { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [LP]") - } else { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [L]") - } - }) - } - if x.HasPersistentFlags() { - x.pflags.VisitAll(func(f *flag.Flag) { - if x.HasFlags() { - if x.flags.Lookup(f.Name) == nil { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [P]") - } - } else { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [P]") - } - }) - } - c.Println(x.flagErrorBuf) - if x.HasSubCommands() { - for _, y := range x.commands { - debugflags(y) - } - } - } - - debugflags(c) -} - -// Name returns the command's name: the first word in the use line. -func (c *Command) Name() string { - name := c.Use - i := strings.Index(name, " ") - if i >= 0 { - name = name[:i] - } - return name -} - -// HasAlias determines if a given string is an alias of the command. -func (c *Command) HasAlias(s string) bool { - for _, a := range c.Aliases { - if a == s { - return true - } - } - return false -} - -// CalledAs returns the command name or alias that was used to invoke -// this command or an empty string if the command has not been called. -func (c *Command) CalledAs() string { - if c.commandCalledAs.called { - return c.commandCalledAs.name - } - return "" -} - -// hasNameOrAliasPrefix returns true if the Name or any of aliases start -// with prefix -func (c *Command) hasNameOrAliasPrefix(prefix string) bool { - if strings.HasPrefix(c.Name(), prefix) { - c.commandCalledAs.name = c.Name() - return true - } - for _, alias := range c.Aliases { - if strings.HasPrefix(alias, prefix) { - c.commandCalledAs.name = alias - return true - } - } - return false -} - -// NameAndAliases returns a list of the command name and all aliases -func (c *Command) NameAndAliases() string { - return strings.Join(append([]string{c.Name()}, c.Aliases...), ", ") -} - -// HasExample determines if the command has example. -func (c *Command) HasExample() bool { - return len(c.Example) > 0 -} - -// Runnable determines if the command is itself runnable. -func (c *Command) Runnable() bool { - return c.Run != nil || c.RunE != nil -} - -// HasSubCommands determines if the command has children commands. -func (c *Command) HasSubCommands() bool { - return len(c.commands) > 0 -} - -// IsAvailableCommand determines if a command is available as a non-help command -// (this includes all non deprecated/hidden commands). -func (c *Command) IsAvailableCommand() bool { - if len(c.Deprecated) != 0 || c.Hidden { - return false - } - - if c.HasParent() && c.Parent().helpCommand == c { - return false - } - - if c.Runnable() || c.HasAvailableSubCommands() { - return true - } - - return false -} - -// IsAdditionalHelpTopicCommand determines if a command is an additional -// help topic command; additional help topic command is determined by the -// fact that it is NOT runnable/hidden/deprecated, and has no sub commands that -// are runnable/hidden/deprecated. -// Concrete example: https://github.com/spf13/cobra/issues/393#issuecomment-282741924. -func (c *Command) IsAdditionalHelpTopicCommand() bool { - // if a command is runnable, deprecated, or hidden it is not a 'help' command - if c.Runnable() || len(c.Deprecated) != 0 || c.Hidden { - return false - } - - // if any non-help sub commands are found, the command is not a 'help' command - for _, sub := range c.commands { - if !sub.IsAdditionalHelpTopicCommand() { - return false - } - } - - // the command either has no sub commands, or no non-help sub commands - return true -} - -// HasHelpSubCommands determines if a command has any available 'help' sub commands -// that need to be shown in the usage/help default template under 'additional help -// topics'. -func (c *Command) HasHelpSubCommands() bool { - // return true on the first found available 'help' sub command - for _, sub := range c.commands { - if sub.IsAdditionalHelpTopicCommand() { - return true - } - } - - // the command either has no sub commands, or no available 'help' sub commands - return false -} - -// HasAvailableSubCommands determines if a command has available sub commands that -// need to be shown in the usage/help default template under 'available commands'. -func (c *Command) HasAvailableSubCommands() bool { - // return true on the first found available (non deprecated/help/hidden) - // sub command - for _, sub := range c.commands { - if sub.IsAvailableCommand() { - return true - } - } - - // the command either has no sub commands, or no available (non deprecated/help/hidden) - // sub commands - return false -} - -// HasParent determines if the command is a child command. -func (c *Command) HasParent() bool { - return c.parent != nil -} - -// GlobalNormalizationFunc returns the global normalization function or nil if it doesn't exist. -func (c *Command) GlobalNormalizationFunc() func(f *flag.FlagSet, name string) flag.NormalizedName { - return c.globNormFunc -} - -// Flags returns the complete FlagSet that applies -// to this command (local and persistent declared here and by all parents). -func (c *Command) Flags() *flag.FlagSet { - if c.flags == nil { - c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.flags.SetOutput(c.flagErrorBuf) - } - - return c.flags -} - -// LocalNonPersistentFlags are flags specific to this command which will NOT persist to subcommands. -func (c *Command) LocalNonPersistentFlags() *flag.FlagSet { - persistentFlags := c.PersistentFlags() - - out := flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.LocalFlags().VisitAll(func(f *flag.Flag) { - if persistentFlags.Lookup(f.Name) == nil { - out.AddFlag(f) - } - }) - return out -} - -// LocalFlags returns the local FlagSet specifically set in the current command. -func (c *Command) LocalFlags() *flag.FlagSet { - c.mergePersistentFlags() - - if c.lflags == nil { - c.lflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.lflags.SetOutput(c.flagErrorBuf) - } - c.lflags.SortFlags = c.Flags().SortFlags - if c.globNormFunc != nil { - c.lflags.SetNormalizeFunc(c.globNormFunc) - } - - addToLocal := func(f *flag.Flag) { - if c.lflags.Lookup(f.Name) == nil && c.parentsPflags.Lookup(f.Name) == nil { - c.lflags.AddFlag(f) - } - } - c.Flags().VisitAll(addToLocal) - c.PersistentFlags().VisitAll(addToLocal) - return c.lflags -} - -// InheritedFlags returns all flags which were inherited from parent commands. -func (c *Command) InheritedFlags() *flag.FlagSet { - c.mergePersistentFlags() - - if c.iflags == nil { - c.iflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.iflags.SetOutput(c.flagErrorBuf) - } - - local := c.LocalFlags() - if c.globNormFunc != nil { - c.iflags.SetNormalizeFunc(c.globNormFunc) - } - - c.parentsPflags.VisitAll(func(f *flag.Flag) { - if c.iflags.Lookup(f.Name) == nil && local.Lookup(f.Name) == nil { - c.iflags.AddFlag(f) - } - }) - return c.iflags -} - -// NonInheritedFlags returns all flags which were not inherited from parent commands. -func (c *Command) NonInheritedFlags() *flag.FlagSet { - return c.LocalFlags() -} - -// PersistentFlags returns the persistent FlagSet specifically set in the current command. -func (c *Command) PersistentFlags() *flag.FlagSet { - if c.pflags == nil { - c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.pflags.SetOutput(c.flagErrorBuf) - } - return c.pflags -} - -// ResetFlags deletes all flags from command. -func (c *Command) ResetFlags() { - c.flagErrorBuf = new(bytes.Buffer) - c.flagErrorBuf.Reset() - c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.flags.SetOutput(c.flagErrorBuf) - c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.pflags.SetOutput(c.flagErrorBuf) - - c.lflags = nil - c.iflags = nil - c.parentsPflags = nil -} - -// HasFlags checks if the command contains any flags (local plus persistent from the entire structure). -func (c *Command) HasFlags() bool { - return c.Flags().HasFlags() -} - -// HasPersistentFlags checks if the command contains persistent flags. -func (c *Command) HasPersistentFlags() bool { - return c.PersistentFlags().HasFlags() -} - -// HasLocalFlags checks if the command has flags specifically declared locally. -func (c *Command) HasLocalFlags() bool { - return c.LocalFlags().HasFlags() -} - -// HasInheritedFlags checks if the command has flags inherited from its parent command. -func (c *Command) HasInheritedFlags() bool { - return c.InheritedFlags().HasFlags() -} - -// HasAvailableFlags checks if the command contains any flags (local plus persistent from the entire -// structure) which are not hidden or deprecated. -func (c *Command) HasAvailableFlags() bool { - return c.Flags().HasAvailableFlags() -} - -// HasAvailablePersistentFlags checks if the command contains persistent flags which are not hidden or deprecated. -func (c *Command) HasAvailablePersistentFlags() bool { - return c.PersistentFlags().HasAvailableFlags() -} - -// HasAvailableLocalFlags checks if the command has flags specifically declared locally which are not hidden -// or deprecated. -func (c *Command) HasAvailableLocalFlags() bool { - return c.LocalFlags().HasAvailableFlags() -} - -// HasAvailableInheritedFlags checks if the command has flags inherited from its parent command which are -// not hidden or deprecated. -func (c *Command) HasAvailableInheritedFlags() bool { - return c.InheritedFlags().HasAvailableFlags() -} - -// Flag climbs up the command tree looking for matching flag. -func (c *Command) Flag(name string) (flag *flag.Flag) { - flag = c.Flags().Lookup(name) - - if flag == nil { - flag = c.persistentFlag(name) - } - - return -} - -// Recursively find matching persistent flag. -func (c *Command) persistentFlag(name string) (flag *flag.Flag) { - if c.HasPersistentFlags() { - flag = c.PersistentFlags().Lookup(name) - } - - if flag == nil { - c.updateParentsPflags() - flag = c.parentsPflags.Lookup(name) - } - return -} - -// ParseFlags parses persistent flag tree and local flags. -func (c *Command) ParseFlags(args []string) error { - if c.DisableFlagParsing { - return nil - } - - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - beforeErrorBufLen := c.flagErrorBuf.Len() - c.mergePersistentFlags() - - // do it here after merging all flags and just before parse - c.Flags().ParseErrorsWhitelist = flag.ParseErrorsWhitelist(c.FParseErrWhitelist) - - err := c.Flags().Parse(args) - // Print warnings if they occurred (e.g. deprecated flag messages). - if c.flagErrorBuf.Len()-beforeErrorBufLen > 0 && err == nil { - c.Print(c.flagErrorBuf.String()) - } - - return err -} - -// Parent returns a commands parent command. -func (c *Command) Parent() *Command { - return c.parent -} - -// mergePersistentFlags merges c.PersistentFlags() to c.Flags() -// and adds missing persistent flags of all parents. -func (c *Command) mergePersistentFlags() { - c.updateParentsPflags() - c.Flags().AddFlagSet(c.PersistentFlags()) - c.Flags().AddFlagSet(c.parentsPflags) -} - -// updateParentsPflags updates c.parentsPflags by adding -// new persistent flags of all parents. -// If c.parentsPflags == nil, it makes new. -func (c *Command) updateParentsPflags() { - if c.parentsPflags == nil { - c.parentsPflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.parentsPflags.SetOutput(c.flagErrorBuf) - c.parentsPflags.SortFlags = false - } - - if c.globNormFunc != nil { - c.parentsPflags.SetNormalizeFunc(c.globNormFunc) - } - - c.Root().PersistentFlags().AddFlagSet(flag.CommandLine) - - c.VisitParents(func(parent *Command) { - c.parentsPflags.AddFlagSet(parent.PersistentFlags()) - }) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command_notwin.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command_notwin.go deleted file mode 100644 index 6159c1cc19d..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command_notwin.go +++ /dev/null @@ -1,5 +0,0 @@ -// +build !windows - -package cobra - -var preExecHookFn func(*Command) diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command_win.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command_win.go deleted file mode 100644 index 8768b1736dc..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/command_win.go +++ /dev/null @@ -1,26 +0,0 @@ -// +build windows - -package cobra - -import ( - "fmt" - "os" - "time" - - "github.com/inconshreveable/mousetrap" -) - -var preExecHookFn = preExecHook - -func preExecHook(c *Command) { - if MousetrapHelpText != "" && mousetrap.StartedByExplorer() { - c.Print(MousetrapHelpText) - if MousetrapDisplayDuration > 0 { - time.Sleep(MousetrapDisplayDuration) - } else { - c.Println("Press return to continue...") - fmt.Scanln() - } - os.Exit(1) - } -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/custom_completions.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/custom_completions.go deleted file mode 100644 index ba57327c153..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/custom_completions.go +++ /dev/null @@ -1,384 +0,0 @@ -package cobra - -import ( - "errors" - "fmt" - "os" - "strings" - - "github.com/spf13/pflag" -) - -const ( - // ShellCompRequestCmd is the name of the hidden command that is used to request - // completion results from the program. It is used by the shell completion scripts. - ShellCompRequestCmd = "__complete" - // ShellCompNoDescRequestCmd is the name of the hidden command that is used to request - // completion results without their description. It is used by the shell completion scripts. - ShellCompNoDescRequestCmd = "__completeNoDesc" -) - -// Global map of flag completion functions. -var flagCompletionFunctions = map[*pflag.Flag]func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective){} - -// ShellCompDirective is a bit map representing the different behaviors the shell -// can be instructed to have once completions have been provided. -type ShellCompDirective int - -const ( - // ShellCompDirectiveError indicates an error occurred and completions should be ignored. - ShellCompDirectiveError ShellCompDirective = 1 << iota - - // ShellCompDirectiveNoSpace indicates that the shell should not add a space - // after the completion even if there is a single completion provided. - ShellCompDirectiveNoSpace - - // ShellCompDirectiveNoFileComp indicates that the shell should not provide - // file completion even when no completion is provided. - // This currently does not work for zsh or bash < 4 - ShellCompDirectiveNoFileComp - - // ShellCompDirectiveDefault indicates to let the shell perform its default - // behavior after completions have been provided. - ShellCompDirectiveDefault ShellCompDirective = 0 -) - -// RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag. -func (c *Command) RegisterFlagCompletionFunc(flagName string, f func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective)) error { - flag := c.Flag(flagName) - if flag == nil { - return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' does not exist", flagName) - } - if _, exists := flagCompletionFunctions[flag]; exists { - return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' already registered", flagName) - } - flagCompletionFunctions[flag] = f - return nil -} - -// Returns a string listing the different directive enabled in the specified parameter -func (d ShellCompDirective) string() string { - var directives []string - if d&ShellCompDirectiveError != 0 { - directives = append(directives, "ShellCompDirectiveError") - } - if d&ShellCompDirectiveNoSpace != 0 { - directives = append(directives, "ShellCompDirectiveNoSpace") - } - if d&ShellCompDirectiveNoFileComp != 0 { - directives = append(directives, "ShellCompDirectiveNoFileComp") - } - if len(directives) == 0 { - directives = append(directives, "ShellCompDirectiveDefault") - } - - if d > ShellCompDirectiveError+ShellCompDirectiveNoSpace+ShellCompDirectiveNoFileComp { - return fmt.Sprintf("ERROR: unexpected ShellCompDirective value: %d", d) - } - return strings.Join(directives, ", ") -} - -// Adds a special hidden command that can be used to request custom completions. -func (c *Command) initCompleteCmd(args []string) { - completeCmd := &Command{ - Use: fmt.Sprintf("%s [command-line]", ShellCompRequestCmd), - Aliases: []string{ShellCompNoDescRequestCmd}, - DisableFlagsInUseLine: true, - Hidden: true, - DisableFlagParsing: true, - Args: MinimumNArgs(1), - Short: "Request shell completion choices for the specified command-line", - Long: fmt.Sprintf("%[2]s is a special command that is used by the shell completion logic\n%[1]s", - "to request completion choices for the specified command-line.", ShellCompRequestCmd), - Run: func(cmd *Command, args []string) { - finalCmd, completions, directive, err := cmd.getCompletions(args) - if err != nil { - CompErrorln(err.Error()) - // Keep going for multiple reasons: - // 1- There could be some valid completions even though there was an error - // 2- Even without completions, we need to print the directive - } - - noDescriptions := (cmd.CalledAs() == ShellCompNoDescRequestCmd) - for _, comp := range completions { - if noDescriptions { - // Remove any description that may be included following a tab character. - comp = strings.Split(comp, "\t")[0] - } - // Print each possible completion to stdout for the completion script to consume. - fmt.Fprintln(finalCmd.OutOrStdout(), comp) - } - - if directive > ShellCompDirectiveError+ShellCompDirectiveNoSpace+ShellCompDirectiveNoFileComp { - directive = ShellCompDirectiveDefault - } - - // As the last printout, print the completion directive for the completion script to parse. - // The directive integer must be that last character following a single colon (:). - // The completion script expects : - fmt.Fprintf(finalCmd.OutOrStdout(), ":%d\n", directive) - - // Print some helpful info to stderr for the user to understand. - // Output from stderr must be ignored by the completion script. - fmt.Fprintf(finalCmd.ErrOrStderr(), "Completion ended with directive: %s\n", directive.string()) - }, - } - c.AddCommand(completeCmd) - subCmd, _, err := c.Find(args) - if err != nil || subCmd.Name() != ShellCompRequestCmd { - // Only create this special command if it is actually being called. - // This reduces possible side-effects of creating such a command; - // for example, having this command would cause problems to a - // cobra program that only consists of the root command, since this - // command would cause the root command to suddenly have a subcommand. - c.RemoveCommand(completeCmd) - } -} - -func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDirective, error) { - var completions []string - - // The last argument, which is not completely typed by the user, - // should not be part of the list of arguments - toComplete := args[len(args)-1] - trimmedArgs := args[:len(args)-1] - - // Find the real command for which completion must be performed - finalCmd, finalArgs, err := c.Root().Find(trimmedArgs) - if err != nil { - // Unable to find the real command. E.g., someInvalidCmd - return c, completions, ShellCompDirectiveDefault, fmt.Errorf("Unable to find a command for arguments: %v", trimmedArgs) - } - - // When doing completion of a flag name, as soon as an argument starts with - // a '-' we know it is a flag. We cannot use isFlagArg() here as it requires - // the flag to be complete - if len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") { - // We are completing a flag name - finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - completions = append(completions, getFlagNameCompletions(flag, toComplete)...) - }) - finalCmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { - completions = append(completions, getFlagNameCompletions(flag, toComplete)...) - }) - - directive := ShellCompDirectiveDefault - if len(completions) > 0 { - if strings.HasSuffix(completions[0], "=") { - directive = ShellCompDirectiveNoSpace - } - } - return finalCmd, completions, directive, nil - } - - var flag *pflag.Flag - if !finalCmd.DisableFlagParsing { - // We only do flag completion if we are allowed to parse flags - // This is important for commands which have requested to do their own flag completion. - flag, finalArgs, toComplete, err = checkIfFlagCompletion(finalCmd, finalArgs, toComplete) - if err != nil { - // Error while attempting to parse flags - return finalCmd, completions, ShellCompDirectiveDefault, err - } - } - - if flag == nil { - // Complete subcommand names - for _, subCmd := range finalCmd.Commands() { - if subCmd.IsAvailableCommand() && strings.HasPrefix(subCmd.Name(), toComplete) { - completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) - } - } - - if len(finalCmd.ValidArgs) > 0 { - // Always complete ValidArgs, even if we are completing a subcommand name. - // This is for commands that have both subcommands and ValidArgs. - for _, validArg := range finalCmd.ValidArgs { - if strings.HasPrefix(validArg, toComplete) { - completions = append(completions, validArg) - } - } - - // If there are ValidArgs specified (even if they don't match), we stop completion. - // Only one of ValidArgs or ValidArgsFunction can be used for a single command. - return finalCmd, completions, ShellCompDirectiveNoFileComp, nil - } - - // Always let the logic continue so as to add any ValidArgsFunction completions, - // even if we already found sub-commands. - // This is for commands that have subcommands but also specify a ValidArgsFunction. - } - - // Parse the flags and extract the arguments to prepare for calling the completion function - if err = finalCmd.ParseFlags(finalArgs); err != nil { - return finalCmd, completions, ShellCompDirectiveDefault, fmt.Errorf("Error while parsing flags from args %v: %s", finalArgs, err.Error()) - } - - // We only remove the flags from the arguments if DisableFlagParsing is not set. - // This is important for commands which have requested to do their own flag completion. - if !finalCmd.DisableFlagParsing { - finalArgs = finalCmd.Flags().Args() - } - - // Find the completion function for the flag or command - var completionFn func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) - if flag != nil { - completionFn = flagCompletionFunctions[flag] - } else { - completionFn = finalCmd.ValidArgsFunction - } - if completionFn == nil { - // Go custom completion not supported/needed for this flag or command - return finalCmd, completions, ShellCompDirectiveDefault, nil - } - - // Call the registered completion function to get the completions - comps, directive := completionFn(finalCmd, finalArgs, toComplete) - completions = append(completions, comps...) - return finalCmd, completions, directive, nil -} - -func getFlagNameCompletions(flag *pflag.Flag, toComplete string) []string { - if nonCompletableFlag(flag) { - return []string{} - } - - var completions []string - flagName := "--" + flag.Name - if strings.HasPrefix(flagName, toComplete) { - // Flag without the = - completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) - - if len(flag.NoOptDefVal) == 0 { - // Flag requires a value, so it can be suffixed with = - flagName += "=" - completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) - } - } - - flagName = "-" + flag.Shorthand - if len(flag.Shorthand) > 0 && strings.HasPrefix(flagName, toComplete) { - completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) - } - - return completions -} - -func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*pflag.Flag, []string, string, error) { - var flagName string - trimmedArgs := args - flagWithEqual := false - if isFlagArg(lastArg) { - if index := strings.Index(lastArg, "="); index >= 0 { - flagName = strings.TrimLeft(lastArg[:index], "-") - lastArg = lastArg[index+1:] - flagWithEqual = true - } else { - return nil, nil, "", errors.New("Unexpected completion request for flag") - } - } - - if len(flagName) == 0 { - if len(args) > 0 { - prevArg := args[len(args)-1] - if isFlagArg(prevArg) { - // Only consider the case where the flag does not contain an =. - // If the flag contains an = it means it has already been fully processed, - // so we don't need to deal with it here. - if index := strings.Index(prevArg, "="); index < 0 { - flagName = strings.TrimLeft(prevArg, "-") - - // Remove the uncompleted flag or else there could be an error created - // for an invalid value for that flag - trimmedArgs = args[:len(args)-1] - } - } - } - } - - if len(flagName) == 0 { - // Not doing flag completion - return nil, trimmedArgs, lastArg, nil - } - - flag := findFlag(finalCmd, flagName) - if flag == nil { - // Flag not supported by this command, nothing to complete - err := fmt.Errorf("Subcommand '%s' does not support flag '%s'", finalCmd.Name(), flagName) - return nil, nil, "", err - } - - if !flagWithEqual { - if len(flag.NoOptDefVal) != 0 { - // We had assumed dealing with a two-word flag but the flag is a boolean flag. - // In that case, there is no value following it, so we are not really doing flag completion. - // Reset everything to do noun completion. - trimmedArgs = args - flag = nil - } - } - - return flag, trimmedArgs, lastArg, nil -} - -func findFlag(cmd *Command, name string) *pflag.Flag { - flagSet := cmd.Flags() - if len(name) == 1 { - // First convert the short flag into a long flag - // as the cmd.Flag() search only accepts long flags - if short := flagSet.ShorthandLookup(name); short != nil { - name = short.Name - } else { - set := cmd.InheritedFlags() - if short = set.ShorthandLookup(name); short != nil { - name = short.Name - } else { - return nil - } - } - } - return cmd.Flag(name) -} - -// CompDebug prints the specified string to the same file as where the -// completion script prints its logs. -// Note that completion printouts should never be on stdout as they would -// be wrongly interpreted as actual completion choices by the completion script. -func CompDebug(msg string, printToStdErr bool) { - msg = fmt.Sprintf("[Debug] %s", msg) - - // Such logs are only printed when the user has set the environment - // variable BASH_COMP_DEBUG_FILE to the path of some file to be used. - if path := os.Getenv("BASH_COMP_DEBUG_FILE"); path != "" { - f, err := os.OpenFile(path, - os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if err == nil { - defer f.Close() - f.WriteString(msg) - } - } - - if printToStdErr { - // Must print to stderr for this not to be read by the completion script. - fmt.Fprintf(os.Stderr, msg) - } -} - -// CompDebugln prints the specified string with a newline at the end -// to the same file as where the completion script prints its logs. -// Such logs are only printed when the user has set the environment -// variable BASH_COMP_DEBUG_FILE to the path of some file to be used. -func CompDebugln(msg string, printToStdErr bool) { - CompDebug(fmt.Sprintf("%s\n", msg), printToStdErr) -} - -// CompError prints the specified completion message to stderr. -func CompError(msg string) { - msg = fmt.Sprintf("[Error] %s", msg) - CompDebug(msg, true) -} - -// CompErrorln prints the specified completion message to stderr with a newline at the end. -func CompErrorln(msg string) { - CompError(fmt.Sprintf("%s\n", msg)) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/fish_completions.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/fish_completions.go deleted file mode 100644 index c83609c83b6..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/fish_completions.go +++ /dev/null @@ -1,172 +0,0 @@ -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" -) - -func genFishComp(buf *bytes.Buffer, name string, includeDesc bool) { - compCmd := ShellCompRequestCmd - if !includeDesc { - compCmd = ShellCompNoDescRequestCmd - } - buf.WriteString(fmt.Sprintf("# fish completion for %-36s -*- shell-script -*-\n", name)) - buf.WriteString(fmt.Sprintf(` -function __%[1]s_debug - set file "$BASH_COMP_DEBUG_FILE" - if test -n "$file" - echo "$argv" >> $file - end -end - -function __%[1]s_perform_completion - __%[1]s_debug "Starting __%[1]s_perform_completion with: $argv" - - set args (string split -- " " "$argv") - set lastArg "$args[-1]" - - __%[1]s_debug "args: $args" - __%[1]s_debug "last arg: $lastArg" - - set emptyArg "" - if test -z "$lastArg" - __%[1]s_debug "Setting emptyArg" - set emptyArg \"\" - end - __%[1]s_debug "emptyArg: $emptyArg" - - set requestComp "$args[1] %[2]s $args[2..-1] $emptyArg" - __%[1]s_debug "Calling $requestComp" - - set results (eval $requestComp 2> /dev/null) - set comps $results[1..-2] - set directiveLine $results[-1] - - # For Fish, when completing a flag with an = (e.g., -n=) - # completions must be prefixed with the flag - set flagPrefix (string match -r -- '-.*=' "$lastArg") - - __%[1]s_debug "Comps: $comps" - __%[1]s_debug "DirectiveLine: $directiveLine" - __%[1]s_debug "flagPrefix: $flagPrefix" - - for comp in $comps - printf "%%s%%s\n" "$flagPrefix" "$comp" - end - - printf "%%s\n" "$directiveLine" -end - -# This function does three things: -# 1- Obtain the completions and store them in the global __%[1]s_comp_results -# 2- Set the __%[1]s_comp_do_file_comp flag if file completion should be performed -# and unset it otherwise -# 3- Return true if the completion results are not empty -function __%[1]s_prepare_completions - # Start fresh - set --erase __%[1]s_comp_do_file_comp - set --erase __%[1]s_comp_results - - # Check if the command-line is already provided. This is useful for testing. - if not set --query __%[1]s_comp_commandLine - set __%[1]s_comp_commandLine (commandline) - end - __%[1]s_debug "commandLine is: $__%[1]s_comp_commandLine" - - set results (__%[1]s_perform_completion "$__%[1]s_comp_commandLine") - set --erase __%[1]s_comp_commandLine - __%[1]s_debug "Completion results: $results" - - if test -z "$results" - __%[1]s_debug "No completion, probably due to a failure" - # Might as well do file completion, in case it helps - set --global __%[1]s_comp_do_file_comp 1 - return 0 - end - - set directive (string sub --start 2 $results[-1]) - set --global __%[1]s_comp_results $results[1..-2] - - __%[1]s_debug "Completions are: $__%[1]s_comp_results" - __%[1]s_debug "Directive is: $directive" - - if test -z "$directive" - set directive 0 - end - - set compErr (math (math --scale 0 $directive / %[3]d) %% 2) - if test $compErr -eq 1 - __%[1]s_debug "Received error directive: aborting." - # Might as well do file completion, in case it helps - set --global __%[1]s_comp_do_file_comp 1 - return 0 - end - - set nospace (math (math --scale 0 $directive / %[4]d) %% 2) - set nofiles (math (math --scale 0 $directive / %[5]d) %% 2) - - __%[1]s_debug "nospace: $nospace, nofiles: $nofiles" - - # Important not to quote the variable for count to work - set numComps (count $__%[1]s_comp_results) - __%[1]s_debug "numComps: $numComps" - - if test $numComps -eq 1; and test $nospace -ne 0 - # To support the "nospace" directive we trick the shell - # by outputting an extra, longer completion. - __%[1]s_debug "Adding second completion to perform nospace directive" - set --append __%[1]s_comp_results $__%[1]s_comp_results[1]. - end - - if test $numComps -eq 0; and test $nofiles -eq 0 - __%[1]s_debug "Requesting file completion" - set --global __%[1]s_comp_do_file_comp 1 - end - - # If we don't want file completion, we must return true even if there - # are no completions found. This is because fish will perform the last - # completion command, even if its condition is false, if no other - # completion command was triggered - return (not set --query __%[1]s_comp_do_file_comp) -end - -# Remove any pre-existing completions for the program since we will be handling all of them -# TODO this cleanup is not sufficient. Fish completions are only loaded once the user triggers -# them, so the below deletion will not work as it is run too early. What else can we do? -complete -c %[1]s -e - -# The order in which the below two lines are defined is very important so that __%[1]s_prepare_completions -# is called first. It is __%[1]s_prepare_completions that sets up the __%[1]s_comp_do_file_comp variable. -# -# This completion will be run second as complete commands are added FILO. -# It triggers file completion choices when __%[1]s_comp_do_file_comp is set. -complete -c %[1]s -n 'set --query __%[1]s_comp_do_file_comp' - -# This completion will be run first as complete commands are added FILO. -# The call to __%[1]s_prepare_completions will setup both __%[1]s_comp_results abd __%[1]s_comp_do_file_comp. -# It provides the program's completion choices. -complete -c %[1]s -n '__%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' - -`, name, compCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp)) -} - -// GenFishCompletion generates fish completion file and writes to the passed writer. -func (c *Command) GenFishCompletion(w io.Writer, includeDesc bool) error { - buf := new(bytes.Buffer) - genFishComp(buf, c.Name(), includeDesc) - _, err := buf.WriteTo(w) - return err -} - -// GenFishCompletionFile generates fish completion file. -func (c *Command) GenFishCompletionFile(filename string, includeDesc bool) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenFishCompletion(outFile, includeDesc) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/fish_completions.md b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/fish_completions.md deleted file mode 100644 index 6bfe5f88ef2..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/fish_completions.md +++ /dev/null @@ -1,7 +0,0 @@ -## Generating Fish Completions for your own cobra.Command - -Cobra supports native Fish completions generated from the root `cobra.Command`. You can use the `command.GenFishCompletion()` or `command.GenFishCompletionFile()` functions. You must provide these functions with a parameter indicating if the completions should be annotated with a description; Cobra will provide the description automatically based on usage information. You can choose to make this option configurable by your users. - -### Limitations - -* Custom completions implemented using the `ValidArgsFunction` and `RegisterFlagCompletionFunc()` are supported automatically but the ones implemented in Bash scripting are not. diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/go.mod b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/go.mod deleted file mode 100644 index dea1030ba43..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/go.mod +++ /dev/null @@ -1,12 +0,0 @@ -module github.com/spf13/cobra - -go 1.12 - -require ( - github.com/cpuguy83/go-md2man/v2 v2.0.0 - github.com/inconshreveable/mousetrap v1.0.0 - github.com/mitchellh/go-homedir v1.1.0 - github.com/spf13/pflag v1.0.3 - github.com/spf13/viper v1.4.0 - gopkg.in/yaml.v2 v2.2.2 -) diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/go.sum b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/go.sum deleted file mode 100644 index 3aaa2ac0fd6..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/go.sum +++ /dev/null @@ -1,149 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -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/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -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/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -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/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/powershell_completions.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/powershell_completions.go deleted file mode 100644 index 756c61b9dcb..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/powershell_completions.go +++ /dev/null @@ -1,100 +0,0 @@ -// PowerShell completions are based on the amazing work from clap: -// https://github.com/clap-rs/clap/blob/3294d18efe5f264d12c9035f404c7d189d4824e1/src/completions/powershell.rs -// -// The generated scripts require PowerShell v5.0+ (which comes Windows 10, but -// can be downloaded separately for windows 7 or 8.1). - -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" - "strings" - - "github.com/spf13/pflag" -) - -var powerShellCompletionTemplate = `using namespace System.Management.Automation -using namespace System.Management.Automation.Language -Register-ArgumentCompleter -Native -CommandName '%s' -ScriptBlock { - param($wordToComplete, $commandAst, $cursorPosition) - $commandElements = $commandAst.CommandElements - $command = @( - '%s' - for ($i = 1; $i -lt $commandElements.Count; $i++) { - $element = $commandElements[$i] - if ($element -isnot [StringConstantExpressionAst] -or - $element.StringConstantType -ne [StringConstantType]::BareWord -or - $element.Value.StartsWith('-')) { - break - } - $element.Value - } - ) -join ';' - $completions = @(switch ($command) {%s - }) - $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | - Sort-Object -Property ListItemText -}` - -func generatePowerShellSubcommandCases(out io.Writer, cmd *Command, previousCommandName string) { - var cmdName string - if previousCommandName == "" { - cmdName = cmd.Name() - } else { - cmdName = fmt.Sprintf("%s;%s", previousCommandName, cmd.Name()) - } - - fmt.Fprintf(out, "\n '%s' {", cmdName) - - cmd.Flags().VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - usage := escapeStringForPowerShell(flag.Usage) - if len(flag.Shorthand) > 0 { - fmt.Fprintf(out, "\n [CompletionResult]::new('-%s', '%s', [CompletionResultType]::ParameterName, '%s')", flag.Shorthand, flag.Shorthand, usage) - } - fmt.Fprintf(out, "\n [CompletionResult]::new('--%s', '%s', [CompletionResultType]::ParameterName, '%s')", flag.Name, flag.Name, usage) - }) - - for _, subCmd := range cmd.Commands() { - usage := escapeStringForPowerShell(subCmd.Short) - fmt.Fprintf(out, "\n [CompletionResult]::new('%s', '%s', [CompletionResultType]::ParameterValue, '%s')", subCmd.Name(), subCmd.Name(), usage) - } - - fmt.Fprint(out, "\n break\n }") - - for _, subCmd := range cmd.Commands() { - generatePowerShellSubcommandCases(out, subCmd, cmdName) - } -} - -func escapeStringForPowerShell(s string) string { - return strings.Replace(s, "'", "''", -1) -} - -// GenPowerShellCompletion generates PowerShell completion file and writes to the passed writer. -func (c *Command) GenPowerShellCompletion(w io.Writer) error { - buf := new(bytes.Buffer) - - var subCommandCases bytes.Buffer - generatePowerShellSubcommandCases(&subCommandCases, c, "") - fmt.Fprintf(buf, powerShellCompletionTemplate, c.Name(), c.Name(), subCommandCases.String()) - - _, err := buf.WriteTo(w) - return err -} - -// GenPowerShellCompletionFile generates PowerShell completion file. -func (c *Command) GenPowerShellCompletionFile(filename string) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenPowerShellCompletion(outFile) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/powershell_completions.md b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/powershell_completions.md deleted file mode 100644 index afed8024087..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/powershell_completions.md +++ /dev/null @@ -1,14 +0,0 @@ -# Generating PowerShell Completions For Your Own cobra.Command - -Cobra can generate PowerShell completion scripts. Users need PowerShell version 5.0 or above, which comes with Windows 10 and can be downloaded separately for Windows 7 or 8.1. They can then write the completions to a file and source this file from their PowerShell profile, which is referenced by the `$Profile` environment variable. See `Get-Help about_Profiles` for more info about PowerShell profiles. - -# What's supported - -- Completion for subcommands using their `.Short` description -- Completion for non-hidden flags using their `.Name` and `.Shorthand` - -# What's not yet supported - -- Command aliases -- Required, filename or custom flags (they will work like normal flags) -- Custom completion scripts diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/shell_completions.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/shell_completions.go deleted file mode 100644 index ba0af9cb553..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/shell_completions.go +++ /dev/null @@ -1,85 +0,0 @@ -package cobra - -import ( - "github.com/spf13/pflag" -) - -// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, -// and causes your command to report an error if invoked without the flag. -func (c *Command) MarkFlagRequired(name string) error { - return MarkFlagRequired(c.Flags(), name) -} - -// MarkPersistentFlagRequired adds the BashCompOneRequiredFlag annotation to the named persistent flag if it exists, -// and causes your command to report an error if invoked without the flag. -func (c *Command) MarkPersistentFlagRequired(name string) error { - return MarkFlagRequired(c.PersistentFlags(), name) -} - -// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, -// and causes your command to report an error if invoked without the flag. -func MarkFlagRequired(flags *pflag.FlagSet, name string) error { - return flags.SetAnnotation(name, BashCompOneRequiredFlag, []string{"true"}) -} - -// MarkFlagFilename adds the BashCompFilenameExt annotation to the named flag, if it exists. -// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided. -func (c *Command) MarkFlagFilename(name string, extensions ...string) error { - return MarkFlagFilename(c.Flags(), name, extensions...) -} - -// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. -// Generated bash autocompletion will call the bash function f for the flag. -func (c *Command) MarkFlagCustom(name string, f string) error { - return MarkFlagCustom(c.Flags(), name, f) -} - -// MarkPersistentFlagFilename instructs the various shell completion -// implementations to limit completions for this persistent flag to the -// specified extensions (patterns). -// -// Shell Completion compatibility matrix: bash, zsh -func (c *Command) MarkPersistentFlagFilename(name string, extensions ...string) error { - return MarkFlagFilename(c.PersistentFlags(), name, extensions...) -} - -// MarkFlagFilename instructs the various shell completion implementations to -// limit completions for this flag to the specified extensions (patterns). -// -// Shell Completion compatibility matrix: bash, zsh -func MarkFlagFilename(flags *pflag.FlagSet, name string, extensions ...string) error { - return flags.SetAnnotation(name, BashCompFilenameExt, extensions) -} - -// MarkFlagCustom instructs the various shell completion implementations to -// limit completions for this flag to the specified extensions (patterns). -// -// Shell Completion compatibility matrix: bash, zsh -func MarkFlagCustom(flags *pflag.FlagSet, name string, f string) error { - return flags.SetAnnotation(name, BashCompCustom, []string{f}) -} - -// MarkFlagDirname instructs the various shell completion implementations to -// complete only directories with this named flag. -// -// Shell Completion compatibility matrix: zsh -func (c *Command) MarkFlagDirname(name string) error { - return MarkFlagDirname(c.Flags(), name) -} - -// MarkPersistentFlagDirname instructs the various shell completion -// implementations to complete only directories with this persistent named flag. -// -// Shell Completion compatibility matrix: zsh -func (c *Command) MarkPersistentFlagDirname(name string) error { - return MarkFlagDirname(c.PersistentFlags(), name) -} - -// MarkFlagDirname instructs the various shell completion implementations to -// complete only directories with this specified flag. -// -// Shell Completion compatibility matrix: zsh -func MarkFlagDirname(flags *pflag.FlagSet, name string) error { - zshPattern := "-(/)" - return flags.SetAnnotation(name, zshCompDirname, []string{zshPattern}) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/zsh_completions.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/zsh_completions.go deleted file mode 100644 index 12755482f0c..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/zsh_completions.go +++ /dev/null @@ -1,336 +0,0 @@ -package cobra - -import ( - "encoding/json" - "fmt" - "io" - "os" - "sort" - "strings" - "text/template" - - "github.com/spf13/pflag" -) - -const ( - zshCompArgumentAnnotation = "cobra_annotations_zsh_completion_argument_annotation" - zshCompArgumentFilenameComp = "cobra_annotations_zsh_completion_argument_file_completion" - zshCompArgumentWordComp = "cobra_annotations_zsh_completion_argument_word_completion" - zshCompDirname = "cobra_annotations_zsh_dirname" -) - -var ( - zshCompFuncMap = template.FuncMap{ - "genZshFuncName": zshCompGenFuncName, - "extractFlags": zshCompExtractFlag, - "genFlagEntryForZshArguments": zshCompGenFlagEntryForArguments, - "extractArgsCompletions": zshCompExtractArgumentCompletionHintsForRendering, - } - zshCompletionText = ` -{{/* should accept Command (that contains subcommands) as parameter */}} -{{define "argumentsC" -}} -{{ $cmdPath := genZshFuncName .}} -function {{$cmdPath}} { - local -a commands - - _arguments -C \{{- range extractFlags .}} - {{genFlagEntryForZshArguments .}} \{{- end}} - "1: :->cmnds" \ - "*::arg:->args" - - case $state in - cmnds) - commands=({{range .Commands}}{{if not .Hidden}} - "{{.Name}}:{{.Short}}"{{end}}{{end}} - ) - _describe "command" commands - ;; - esac - - case "$words[1]" in {{- range .Commands}}{{if not .Hidden}} - {{.Name}}) - {{$cmdPath}}_{{.Name}} - ;;{{end}}{{end}} - esac -} -{{range .Commands}}{{if not .Hidden}} -{{template "selectCmdTemplate" .}} -{{- end}}{{end}} -{{- end}} - -{{/* should accept Command without subcommands as parameter */}} -{{define "arguments" -}} -function {{genZshFuncName .}} { -{{" _arguments"}}{{range extractFlags .}} \ - {{genFlagEntryForZshArguments . -}} -{{end}}{{range extractArgsCompletions .}} \ - {{.}}{{end}} -} -{{end}} - -{{/* dispatcher for commands with or without subcommands */}} -{{define "selectCmdTemplate" -}} -{{if .Hidden}}{{/* ignore hidden*/}}{{else -}} -{{if .Commands}}{{template "argumentsC" .}}{{else}}{{template "arguments" .}}{{end}} -{{- end}} -{{- end}} - -{{/* template entry point */}} -{{define "Main" -}} -#compdef _{{.Name}} {{.Name}} - -{{template "selectCmdTemplate" .}} -{{end}} -` -) - -// zshCompArgsAnnotation is used to encode/decode zsh completion for -// arguments to/from Command.Annotations. -type zshCompArgsAnnotation map[int]zshCompArgHint - -type zshCompArgHint struct { - // Indicates the type of the completion to use. One of: - // zshCompArgumentFilenameComp or zshCompArgumentWordComp - Tipe string `json:"type"` - - // A value for the type above (globs for file completion or words) - Options []string `json:"options"` -} - -// GenZshCompletionFile generates zsh completion file. -func (c *Command) GenZshCompletionFile(filename string) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenZshCompletion(outFile) -} - -// GenZshCompletion generates a zsh completion file and writes to the passed -// writer. The completion always run on the root command regardless of the -// command it was called from. -func (c *Command) GenZshCompletion(w io.Writer) error { - tmpl, err := template.New("Main").Funcs(zshCompFuncMap).Parse(zshCompletionText) - if err != nil { - return fmt.Errorf("error creating zsh completion template: %v", err) - } - return tmpl.Execute(w, c.Root()) -} - -// MarkZshCompPositionalArgumentFile marks the specified argument (first -// argument is 1) as completed by file selection. patterns (e.g. "*.txt") are -// optional - if not provided the completion will search for all files. -func (c *Command) MarkZshCompPositionalArgumentFile(argPosition int, patterns ...string) error { - if argPosition < 1 { - return fmt.Errorf("Invalid argument position (%d)", argPosition) - } - annotation, err := c.zshCompGetArgsAnnotations() - if err != nil { - return err - } - if c.zshcompArgsAnnotationnIsDuplicatePosition(annotation, argPosition) { - return fmt.Errorf("Duplicate annotation for positional argument at index %d", argPosition) - } - annotation[argPosition] = zshCompArgHint{ - Tipe: zshCompArgumentFilenameComp, - Options: patterns, - } - return c.zshCompSetArgsAnnotations(annotation) -} - -// MarkZshCompPositionalArgumentWords marks the specified positional argument -// (first argument is 1) as completed by the provided words. At east one word -// must be provided, spaces within words will be offered completion with -// "word\ word". -func (c *Command) MarkZshCompPositionalArgumentWords(argPosition int, words ...string) error { - if argPosition < 1 { - return fmt.Errorf("Invalid argument position (%d)", argPosition) - } - if len(words) == 0 { - return fmt.Errorf("Trying to set empty word list for positional argument %d", argPosition) - } - annotation, err := c.zshCompGetArgsAnnotations() - if err != nil { - return err - } - if c.zshcompArgsAnnotationnIsDuplicatePosition(annotation, argPosition) { - return fmt.Errorf("Duplicate annotation for positional argument at index %d", argPosition) - } - annotation[argPosition] = zshCompArgHint{ - Tipe: zshCompArgumentWordComp, - Options: words, - } - return c.zshCompSetArgsAnnotations(annotation) -} - -func zshCompExtractArgumentCompletionHintsForRendering(c *Command) ([]string, error) { - var result []string - annotation, err := c.zshCompGetArgsAnnotations() - if err != nil { - return nil, err - } - for k, v := range annotation { - s, err := zshCompRenderZshCompArgHint(k, v) - if err != nil { - return nil, err - } - result = append(result, s) - } - if len(c.ValidArgs) > 0 { - if _, positionOneExists := annotation[1]; !positionOneExists { - s, err := zshCompRenderZshCompArgHint(1, zshCompArgHint{ - Tipe: zshCompArgumentWordComp, - Options: c.ValidArgs, - }) - if err != nil { - return nil, err - } - result = append(result, s) - } - } - sort.Strings(result) - return result, nil -} - -func zshCompRenderZshCompArgHint(i int, z zshCompArgHint) (string, error) { - switch t := z.Tipe; t { - case zshCompArgumentFilenameComp: - var globs []string - for _, g := range z.Options { - globs = append(globs, fmt.Sprintf(`-g "%s"`, g)) - } - return fmt.Sprintf(`'%d: :_files %s'`, i, strings.Join(globs, " ")), nil - case zshCompArgumentWordComp: - var words []string - for _, w := range z.Options { - words = append(words, fmt.Sprintf("%q", w)) - } - return fmt.Sprintf(`'%d: :(%s)'`, i, strings.Join(words, " ")), nil - default: - return "", fmt.Errorf("Invalid zsh argument completion annotation: %s", t) - } -} - -func (c *Command) zshcompArgsAnnotationnIsDuplicatePosition(annotation zshCompArgsAnnotation, position int) bool { - _, dup := annotation[position] - return dup -} - -func (c *Command) zshCompGetArgsAnnotations() (zshCompArgsAnnotation, error) { - annotation := make(zshCompArgsAnnotation) - annotationString, ok := c.Annotations[zshCompArgumentAnnotation] - if !ok { - return annotation, nil - } - err := json.Unmarshal([]byte(annotationString), &annotation) - if err != nil { - return annotation, fmt.Errorf("Error unmarshaling zsh argument annotation: %v", err) - } - return annotation, nil -} - -func (c *Command) zshCompSetArgsAnnotations(annotation zshCompArgsAnnotation) error { - jsn, err := json.Marshal(annotation) - if err != nil { - return fmt.Errorf("Error marshaling zsh argument annotation: %v", err) - } - if c.Annotations == nil { - c.Annotations = make(map[string]string) - } - c.Annotations[zshCompArgumentAnnotation] = string(jsn) - return nil -} - -func zshCompGenFuncName(c *Command) string { - if c.HasParent() { - return zshCompGenFuncName(c.Parent()) + "_" + c.Name() - } - return "_" + c.Name() -} - -func zshCompExtractFlag(c *Command) []*pflag.Flag { - var flags []*pflag.Flag - c.LocalFlags().VisitAll(func(f *pflag.Flag) { - if !f.Hidden { - flags = append(flags, f) - } - }) - c.InheritedFlags().VisitAll(func(f *pflag.Flag) { - if !f.Hidden { - flags = append(flags, f) - } - }) - return flags -} - -// zshCompGenFlagEntryForArguments returns an entry that matches _arguments -// zsh-completion parameters. It's too complicated to generate in a template. -func zshCompGenFlagEntryForArguments(f *pflag.Flag) string { - if f.Name == "" || f.Shorthand == "" { - return zshCompGenFlagEntryForSingleOptionFlag(f) - } - return zshCompGenFlagEntryForMultiOptionFlag(f) -} - -func zshCompGenFlagEntryForSingleOptionFlag(f *pflag.Flag) string { - var option, multiMark, extras string - - if zshCompFlagCouldBeSpecifiedMoreThenOnce(f) { - multiMark = "*" - } - - option = "--" + f.Name - if option == "--" { - option = "-" + f.Shorthand - } - extras = zshCompGenFlagEntryExtras(f) - - return fmt.Sprintf(`'%s%s[%s]%s'`, multiMark, option, zshCompQuoteFlagDescription(f.Usage), extras) -} - -func zshCompGenFlagEntryForMultiOptionFlag(f *pflag.Flag) string { - var options, parenMultiMark, curlyMultiMark, extras string - - if zshCompFlagCouldBeSpecifiedMoreThenOnce(f) { - parenMultiMark = "*" - curlyMultiMark = "\\*" - } - - options = fmt.Sprintf(`'(%s-%s %s--%s)'{%s-%s,%s--%s}`, - parenMultiMark, f.Shorthand, parenMultiMark, f.Name, curlyMultiMark, f.Shorthand, curlyMultiMark, f.Name) - extras = zshCompGenFlagEntryExtras(f) - - return fmt.Sprintf(`%s'[%s]%s'`, options, zshCompQuoteFlagDescription(f.Usage), extras) -} - -func zshCompGenFlagEntryExtras(f *pflag.Flag) string { - if f.NoOptDefVal != "" { - return "" - } - - extras := ":" // allow options for flag (even without assistance) - for key, values := range f.Annotations { - switch key { - case zshCompDirname: - extras = fmt.Sprintf(":filename:_files -g %q", values[0]) - case BashCompFilenameExt: - extras = ":filename:_files" - for _, pattern := range values { - extras = extras + fmt.Sprintf(` -g "%s"`, pattern) - } - } - } - - return extras -} - -func zshCompFlagCouldBeSpecifiedMoreThenOnce(f *pflag.Flag) bool { - return strings.Contains(f.Value.Type(), "Slice") || - strings.Contains(f.Value.Type(), "Array") -} - -func zshCompQuoteFlagDescription(s string) string { - return strings.Replace(s, "'", `'\''`, -1) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/zsh_completions.md b/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/zsh_completions.md deleted file mode 100644 index df9c2eac93c..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/cobra/zsh_completions.md +++ /dev/null @@ -1,39 +0,0 @@ -## Generating Zsh Completion for your cobra.Command - -Cobra supports native Zsh completion generated from the root `cobra.Command`. -The generated completion script should be put somewhere in your `$fpath` named -`_`. - -### What's Supported - -* Completion for all non-hidden subcommands using their `.Short` description. -* Completion for all non-hidden flags using the following rules: - * Filename completion works by marking the flag with `cmd.MarkFlagFilename...` - family of commands. - * The requirement for argument to the flag is decided by the `.NoOptDefVal` - flag value - if it's empty then completion will expect an argument. - * Flags of one of the various `*Array` and `*Slice` types supports multiple - specifications (with or without argument depending on the specific type). -* Completion of positional arguments using the following rules: - * Argument position for all options below starts at `1`. If argument position - `0` is requested it will raise an error. - * Use `command.MarkZshCompPositionalArgumentFile` to complete filenames. Glob - patterns (e.g. `"*.log"`) are optional - if not specified it will offer to - complete all file types. - * Use `command.MarkZshCompPositionalArgumentWords` to offer specific words for - completion. At least one word is required. - * It's possible to specify completion for some arguments and leave some - unspecified (e.g. offer words for second argument but nothing for first - argument). This will cause no completion for first argument but words - completion for second argument. - * If no argument completion was specified for 1st argument (but optionally was - specified for 2nd) and the command has `ValidArgs` it will be used as - completion options for 1st argument. - * Argument completions only offered for commands with no subcommands. - -### What's not yet Supported - -* Custom completion scripts are not supported yet (We should probably create zsh - specific one, doesn't make sense to re-use the bash one as the functions will - be different). -* Whatever other feature you're looking for and doesn't exist :) diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/.gitignore b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/.gitignore deleted file mode 100644 index c3da2901346..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.idea/* - diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/.travis.yml b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/.travis.yml deleted file mode 100644 index f8a63b308ba..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -sudo: false - -language: go - -go: - - 1.7.3 - - 1.8.1 - - tip - -matrix: - allow_failures: - - go: tip - -install: - - go get github.com/golang/lint/golint - - export PATH=$GOPATH/bin:$PATH - - go install ./... - -script: - - verify/all.sh -v - - go test ./... diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/LICENSE b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/LICENSE deleted file mode 100644 index 63ed1cfea1f..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2012 Alex Ogier. All rights reserved. -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/README.md b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/README.md deleted file mode 100644 index b052414d129..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/README.md +++ /dev/null @@ -1,296 +0,0 @@ -[![Build Status](https://travis-ci.org/spf13/pflag.svg?branch=master)](https://travis-ci.org/spf13/pflag) -[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/pflag)](https://goreportcard.com/report/github.com/spf13/pflag) -[![GoDoc](https://godoc.org/github.com/spf13/pflag?status.svg)](https://godoc.org/github.com/spf13/pflag) - -## Description - -pflag is a drop-in replacement for Go's flag package, implementing -POSIX/GNU-style --flags. - -pflag is compatible with the [GNU extensions to the POSIX recommendations -for command-line options][1]. For a more precise description, see the -"Command-line flag syntax" section below. - -[1]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html - -pflag is available under the same style of BSD license as the Go language, -which can be found in the LICENSE file. - -## Installation - -pflag is available using the standard `go get` command. - -Install by running: - - go get github.com/spf13/pflag - -Run tests by running: - - go test github.com/spf13/pflag - -## Usage - -pflag is a drop-in replacement of Go's native flag package. If you import -pflag under the name "flag" then all code should continue to function -with no changes. - -``` go -import flag "github.com/spf13/pflag" -``` - -There is one exception to this: if you directly instantiate the Flag struct -there is one more field "Shorthand" that you will need to set. -Most code never instantiates this struct directly, and instead uses -functions such as String(), BoolVar(), and Var(), and is therefore -unaffected. - -Define flags using flag.String(), Bool(), Int(), etc. - -This declares an integer flag, -flagname, stored in the pointer ip, with type *int. - -``` go -var ip *int = flag.Int("flagname", 1234, "help message for flagname") -``` - -If you like, you can bind the flag to a variable using the Var() functions. - -``` go -var flagvar int -func init() { - flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname") -} -``` - -Or you can create custom flags that satisfy the Value interface (with -pointer receivers) and couple them to flag parsing by - -``` go -flag.Var(&flagVal, "name", "help message for flagname") -``` - -For such flags, the default value is just the initial value of the variable. - -After all flags are defined, call - -``` go -flag.Parse() -``` - -to parse the command line into the defined flags. - -Flags may then be used directly. If you're using the flags themselves, -they are all pointers; if you bind to variables, they're values. - -``` go -fmt.Println("ip has value ", *ip) -fmt.Println("flagvar has value ", flagvar) -``` - -There are helpers function to get values later if you have the FlagSet but -it was difficult to keep up with all of the flag pointers in your code. -If you have a pflag.FlagSet with a flag called 'flagname' of type int you -can use GetInt() to get the int value. But notice that 'flagname' must exist -and it must be an int. GetString("flagname") will fail. - -``` go -i, err := flagset.GetInt("flagname") -``` - -After parsing, the arguments after the flag are available as the -slice flag.Args() or individually as flag.Arg(i). -The arguments are indexed from 0 through flag.NArg()-1. - -The pflag package also defines some new functions that are not in flag, -that give one-letter shorthands for flags. You can use these by appending -'P' to the name of any function that defines a flag. - -``` go -var ip = flag.IntP("flagname", "f", 1234, "help message") -var flagvar bool -func init() { - flag.BoolVarP(&flagvar, "boolname", "b", true, "help message") -} -flag.VarP(&flagVal, "varname", "v", "help message") -``` - -Shorthand letters can be used with single dashes on the command line. -Boolean shorthand flags can be combined with other shorthand flags. - -The default set of command-line flags is controlled by -top-level functions. The FlagSet type allows one to define -independent sets of flags, such as to implement subcommands -in a command-line interface. The methods of FlagSet are -analogous to the top-level functions for the command-line -flag set. - -## Setting no option default values for flags - -After you create a flag it is possible to set the pflag.NoOptDefVal for -the given flag. Doing this changes the meaning of the flag slightly. If -a flag has a NoOptDefVal and the flag is set on the command line without -an option the flag will be set to the NoOptDefVal. For example given: - -``` go -var ip = flag.IntP("flagname", "f", 1234, "help message") -flag.Lookup("flagname").NoOptDefVal = "4321" -``` - -Would result in something like - -| Parsed Arguments | Resulting Value | -| ------------- | ------------- | -| --flagname=1357 | ip=1357 | -| --flagname | ip=4321 | -| [nothing] | ip=1234 | - -## Command line flag syntax - -``` ---flag // boolean flags, or flags with no option default values ---flag x // only on flags without a default value ---flag=x -``` - -Unlike the flag package, a single dash before an option means something -different than a double dash. Single dashes signify a series of shorthand -letters for flags. All but the last shorthand letter must be boolean flags -or a flag with a default value - -``` -// boolean or flags where the 'no option default value' is set --f --f=true --abc -but --b true is INVALID - -// non-boolean and flags without a 'no option default value' --n 1234 --n=1234 --n1234 - -// mixed --abcs "hello" --absd="hello" --abcs1234 -``` - -Flag parsing stops after the terminator "--". Unlike the flag package, -flags can be interspersed with arguments anywhere on the command line -before this terminator. - -Integer flags accept 1234, 0664, 0x1234 and may be negative. -Boolean flags (in their long form) accept 1, 0, t, f, true, false, -TRUE, FALSE, True, False. -Duration flags accept any input valid for time.ParseDuration. - -## Mutating or "Normalizing" Flag names - -It is possible to set a custom flag name 'normalization function.' It allows flag names to be mutated both when created in the code and when used on the command line to some 'normalized' form. The 'normalized' form is used for comparison. Two examples of using the custom normalization func follow. - -**Example #1**: You want -, _, and . in flags to compare the same. aka --my-flag == --my_flag == --my.flag - -``` go -func wordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName { - from := []string{"-", "_"} - to := "." - for _, sep := range from { - name = strings.Replace(name, sep, to, -1) - } - return pflag.NormalizedName(name) -} - -myFlagSet.SetNormalizeFunc(wordSepNormalizeFunc) -``` - -**Example #2**: You want to alias two flags. aka --old-flag-name == --new-flag-name - -``` go -func aliasNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName { - switch name { - case "old-flag-name": - name = "new-flag-name" - break - } - return pflag.NormalizedName(name) -} - -myFlagSet.SetNormalizeFunc(aliasNormalizeFunc) -``` - -## Deprecating a flag or its shorthand -It is possible to deprecate a flag, or just its shorthand. Deprecating a flag/shorthand hides it from help text and prints a usage message when the deprecated flag/shorthand is used. - -**Example #1**: You want to deprecate a flag named "badflag" as well as inform the users what flag they should use instead. -```go -// deprecate a flag by specifying its name and a usage message -flags.MarkDeprecated("badflag", "please use --good-flag instead") -``` -This hides "badflag" from help text, and prints `Flag --badflag has been deprecated, please use --good-flag instead` when "badflag" is used. - -**Example #2**: You want to keep a flag name "noshorthandflag" but deprecate its shortname "n". -```go -// deprecate a flag shorthand by specifying its flag name and a usage message -flags.MarkShorthandDeprecated("noshorthandflag", "please use --noshorthandflag only") -``` -This hides the shortname "n" from help text, and prints `Flag shorthand -n has been deprecated, please use --noshorthandflag only` when the shorthand "n" is used. - -Note that usage message is essential here, and it should not be empty. - -## Hidden flags -It is possible to mark a flag as hidden, meaning it will still function as normal, however will not show up in usage/help text. - -**Example**: You have a flag named "secretFlag" that you need for internal use only and don't want it showing up in help text, or for its usage text to be available. -```go -// hide a flag by specifying its name -flags.MarkHidden("secretFlag") -``` - -## Disable sorting of flags -`pflag` allows you to disable sorting of flags for help and usage message. - -**Example**: -```go -flags.BoolP("verbose", "v", false, "verbose output") -flags.String("coolflag", "yeaah", "it's really cool flag") -flags.Int("usefulflag", 777, "sometimes it's very useful") -flags.SortFlags = false -flags.PrintDefaults() -``` -**Output**: -``` - -v, --verbose verbose output - --coolflag string it's really cool flag (default "yeaah") - --usefulflag int sometimes it's very useful (default 777) -``` - - -## Supporting Go flags when using pflag -In order to support flags defined using Go's `flag` package, they must be added to the `pflag` flagset. This is usually necessary -to support flags defined by third-party dependencies (e.g. `golang/glog`). - -**Example**: You want to add the Go flags to the `CommandLine` flagset -```go -import ( - goflag "flag" - flag "github.com/spf13/pflag" -) - -var ip *int = flag.Int("flagname", 1234, "help message for flagname") - -func main() { - flag.CommandLine.AddGoFlagSet(goflag.CommandLine) - flag.Parse() -} -``` - -## More info - -You can see the full reference documentation of the pflag package -[at godoc.org][3], or through go's standard documentation system by -running `godoc -http=:6060` and browsing to -[http://localhost:6060/pkg/github.com/spf13/pflag][2] after -installation. - -[2]: http://localhost:6060/pkg/github.com/spf13/pflag -[3]: http://godoc.org/github.com/spf13/pflag diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bool.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bool.go deleted file mode 100644 index c4c5c0bfda0..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bool.go +++ /dev/null @@ -1,94 +0,0 @@ -package pflag - -import "strconv" - -// optional interface to indicate boolean flags that can be -// supplied without "=value" text -type boolFlag interface { - Value - IsBoolFlag() bool -} - -// -- bool Value -type boolValue bool - -func newBoolValue(val bool, p *bool) *boolValue { - *p = val - return (*boolValue)(p) -} - -func (b *boolValue) Set(s string) error { - v, err := strconv.ParseBool(s) - *b = boolValue(v) - return err -} - -func (b *boolValue) Type() string { - return "bool" -} - -func (b *boolValue) String() string { return strconv.FormatBool(bool(*b)) } - -func (b *boolValue) IsBoolFlag() bool { return true } - -func boolConv(sval string) (interface{}, error) { - return strconv.ParseBool(sval) -} - -// GetBool return the bool value of a flag with the given name -func (f *FlagSet) GetBool(name string) (bool, error) { - val, err := f.getFlagType(name, "bool", boolConv) - if err != nil { - return false, err - } - return val.(bool), nil -} - -// BoolVar defines a bool flag with specified name, default value, and usage string. -// The argument p points to a bool variable in which to store the value of the flag. -func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string) { - f.BoolVarP(p, name, "", value, usage) -} - -// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) BoolVarP(p *bool, name, shorthand string, value bool, usage string) { - flag := f.VarPF(newBoolValue(value, p), name, shorthand, usage) - flag.NoOptDefVal = "true" -} - -// BoolVar defines a bool flag with specified name, default value, and usage string. -// The argument p points to a bool variable in which to store the value of the flag. -func BoolVar(p *bool, name string, value bool, usage string) { - BoolVarP(p, name, "", value, usage) -} - -// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash. -func BoolVarP(p *bool, name, shorthand string, value bool, usage string) { - flag := CommandLine.VarPF(newBoolValue(value, p), name, shorthand, usage) - flag.NoOptDefVal = "true" -} - -// Bool defines a bool flag with specified name, default value, and usage string. -// The return value is the address of a bool variable that stores the value of the flag. -func (f *FlagSet) Bool(name string, value bool, usage string) *bool { - return f.BoolP(name, "", value, usage) -} - -// BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) BoolP(name, shorthand string, value bool, usage string) *bool { - p := new(bool) - f.BoolVarP(p, name, shorthand, value, usage) - return p -} - -// Bool defines a bool flag with specified name, default value, and usage string. -// The return value is the address of a bool variable that stores the value of the flag. -func Bool(name string, value bool, usage string) *bool { - return BoolP(name, "", value, usage) -} - -// BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash. -func BoolP(name, shorthand string, value bool, usage string) *bool { - b := CommandLine.BoolP(name, shorthand, value, usage) - return b -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bool_slice.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bool_slice.go deleted file mode 100644 index 5af02f1a75a..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bool_slice.go +++ /dev/null @@ -1,147 +0,0 @@ -package pflag - -import ( - "io" - "strconv" - "strings" -) - -// -- boolSlice Value -type boolSliceValue struct { - value *[]bool - changed bool -} - -func newBoolSliceValue(val []bool, p *[]bool) *boolSliceValue { - bsv := new(boolSliceValue) - bsv.value = p - *bsv.value = val - return bsv -} - -// Set converts, and assigns, the comma-separated boolean argument string representation as the []bool value of this flag. -// If Set is called on a flag that already has a []bool assigned, the newly converted values will be appended. -func (s *boolSliceValue) Set(val string) error { - - // remove all quote characters - rmQuote := strings.NewReplacer(`"`, "", `'`, "", "`", "") - - // read flag arguments with CSV parser - boolStrSlice, err := readAsCSV(rmQuote.Replace(val)) - if err != nil && err != io.EOF { - return err - } - - // parse boolean values into slice - out := make([]bool, 0, len(boolStrSlice)) - for _, boolStr := range boolStrSlice { - b, err := strconv.ParseBool(strings.TrimSpace(boolStr)) - if err != nil { - return err - } - out = append(out, b) - } - - if !s.changed { - *s.value = out - } else { - *s.value = append(*s.value, out...) - } - - s.changed = true - - return nil -} - -// Type returns a string that uniquely represents this flag's type. -func (s *boolSliceValue) Type() string { - return "boolSlice" -} - -// String defines a "native" format for this boolean slice flag value. -func (s *boolSliceValue) String() string { - - boolStrSlice := make([]string, len(*s.value)) - for i, b := range *s.value { - boolStrSlice[i] = strconv.FormatBool(b) - } - - out, _ := writeAsCSV(boolStrSlice) - - return "[" + out + "]" -} - -func boolSliceConv(val string) (interface{}, error) { - val = strings.Trim(val, "[]") - // Empty string would cause a slice with one (empty) entry - if len(val) == 0 { - return []bool{}, nil - } - ss := strings.Split(val, ",") - out := make([]bool, len(ss)) - for i, t := range ss { - var err error - out[i], err = strconv.ParseBool(t) - if err != nil { - return nil, err - } - } - return out, nil -} - -// GetBoolSlice returns the []bool value of a flag with the given name. -func (f *FlagSet) GetBoolSlice(name string) ([]bool, error) { - val, err := f.getFlagType(name, "boolSlice", boolSliceConv) - if err != nil { - return []bool{}, err - } - return val.([]bool), nil -} - -// BoolSliceVar defines a boolSlice flag with specified name, default value, and usage string. -// The argument p points to a []bool variable in which to store the value of the flag. -func (f *FlagSet) BoolSliceVar(p *[]bool, name string, value []bool, usage string) { - f.VarP(newBoolSliceValue(value, p), name, "", usage) -} - -// BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) BoolSliceVarP(p *[]bool, name, shorthand string, value []bool, usage string) { - f.VarP(newBoolSliceValue(value, p), name, shorthand, usage) -} - -// BoolSliceVar defines a []bool flag with specified name, default value, and usage string. -// The argument p points to a []bool variable in which to store the value of the flag. -func BoolSliceVar(p *[]bool, name string, value []bool, usage string) { - CommandLine.VarP(newBoolSliceValue(value, p), name, "", usage) -} - -// BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash. -func BoolSliceVarP(p *[]bool, name, shorthand string, value []bool, usage string) { - CommandLine.VarP(newBoolSliceValue(value, p), name, shorthand, usage) -} - -// BoolSlice defines a []bool flag with specified name, default value, and usage string. -// The return value is the address of a []bool variable that stores the value of the flag. -func (f *FlagSet) BoolSlice(name string, value []bool, usage string) *[]bool { - p := []bool{} - f.BoolSliceVarP(&p, name, "", value, usage) - return &p -} - -// BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) BoolSliceP(name, shorthand string, value []bool, usage string) *[]bool { - p := []bool{} - f.BoolSliceVarP(&p, name, shorthand, value, usage) - return &p -} - -// BoolSlice defines a []bool flag with specified name, default value, and usage string. -// The return value is the address of a []bool variable that stores the value of the flag. -func BoolSlice(name string, value []bool, usage string) *[]bool { - return CommandLine.BoolSliceP(name, "", value, usage) -} - -// BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash. -func BoolSliceP(name, shorthand string, value []bool, usage string) *[]bool { - return CommandLine.BoolSliceP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bytes.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bytes.go deleted file mode 100644 index 67d53045708..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/bytes.go +++ /dev/null @@ -1,209 +0,0 @@ -package pflag - -import ( - "encoding/base64" - "encoding/hex" - "fmt" - "strings" -) - -// BytesHex adapts []byte for use as a flag. Value of flag is HEX encoded -type bytesHexValue []byte - -// String implements pflag.Value.String. -func (bytesHex bytesHexValue) String() string { - return fmt.Sprintf("%X", []byte(bytesHex)) -} - -// Set implements pflag.Value.Set. -func (bytesHex *bytesHexValue) Set(value string) error { - bin, err := hex.DecodeString(strings.TrimSpace(value)) - - if err != nil { - return err - } - - *bytesHex = bin - - return nil -} - -// Type implements pflag.Value.Type. -func (*bytesHexValue) Type() string { - return "bytesHex" -} - -func newBytesHexValue(val []byte, p *[]byte) *bytesHexValue { - *p = val - return (*bytesHexValue)(p) -} - -func bytesHexConv(sval string) (interface{}, error) { - - bin, err := hex.DecodeString(sval) - - if err == nil { - return bin, nil - } - - return nil, fmt.Errorf("invalid string being converted to Bytes: %s %s", sval, err) -} - -// GetBytesHex return the []byte value of a flag with the given name -func (f *FlagSet) GetBytesHex(name string) ([]byte, error) { - val, err := f.getFlagType(name, "bytesHex", bytesHexConv) - - if err != nil { - return []byte{}, err - } - - return val.([]byte), nil -} - -// BytesHexVar defines an []byte flag with specified name, default value, and usage string. -// The argument p points to an []byte variable in which to store the value of the flag. -func (f *FlagSet) BytesHexVar(p *[]byte, name string, value []byte, usage string) { - f.VarP(newBytesHexValue(value, p), name, "", usage) -} - -// BytesHexVarP is like BytesHexVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) BytesHexVarP(p *[]byte, name, shorthand string, value []byte, usage string) { - f.VarP(newBytesHexValue(value, p), name, shorthand, usage) -} - -// BytesHexVar defines an []byte flag with specified name, default value, and usage string. -// The argument p points to an []byte variable in which to store the value of the flag. -func BytesHexVar(p *[]byte, name string, value []byte, usage string) { - CommandLine.VarP(newBytesHexValue(value, p), name, "", usage) -} - -// BytesHexVarP is like BytesHexVar, but accepts a shorthand letter that can be used after a single dash. -func BytesHexVarP(p *[]byte, name, shorthand string, value []byte, usage string) { - CommandLine.VarP(newBytesHexValue(value, p), name, shorthand, usage) -} - -// BytesHex defines an []byte flag with specified name, default value, and usage string. -// The return value is the address of an []byte variable that stores the value of the flag. -func (f *FlagSet) BytesHex(name string, value []byte, usage string) *[]byte { - p := new([]byte) - f.BytesHexVarP(p, name, "", value, usage) - return p -} - -// BytesHexP is like BytesHex, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) BytesHexP(name, shorthand string, value []byte, usage string) *[]byte { - p := new([]byte) - f.BytesHexVarP(p, name, shorthand, value, usage) - return p -} - -// BytesHex defines an []byte flag with specified name, default value, and usage string. -// The return value is the address of an []byte variable that stores the value of the flag. -func BytesHex(name string, value []byte, usage string) *[]byte { - return CommandLine.BytesHexP(name, "", value, usage) -} - -// BytesHexP is like BytesHex, but accepts a shorthand letter that can be used after a single dash. -func BytesHexP(name, shorthand string, value []byte, usage string) *[]byte { - return CommandLine.BytesHexP(name, shorthand, value, usage) -} - -// BytesBase64 adapts []byte for use as a flag. Value of flag is Base64 encoded -type bytesBase64Value []byte - -// String implements pflag.Value.String. -func (bytesBase64 bytesBase64Value) String() string { - return base64.StdEncoding.EncodeToString([]byte(bytesBase64)) -} - -// Set implements pflag.Value.Set. -func (bytesBase64 *bytesBase64Value) Set(value string) error { - bin, err := base64.StdEncoding.DecodeString(strings.TrimSpace(value)) - - if err != nil { - return err - } - - *bytesBase64 = bin - - return nil -} - -// Type implements pflag.Value.Type. -func (*bytesBase64Value) Type() string { - return "bytesBase64" -} - -func newBytesBase64Value(val []byte, p *[]byte) *bytesBase64Value { - *p = val - return (*bytesBase64Value)(p) -} - -func bytesBase64ValueConv(sval string) (interface{}, error) { - - bin, err := base64.StdEncoding.DecodeString(sval) - if err == nil { - return bin, nil - } - - return nil, fmt.Errorf("invalid string being converted to Bytes: %s %s", sval, err) -} - -// GetBytesBase64 return the []byte value of a flag with the given name -func (f *FlagSet) GetBytesBase64(name string) ([]byte, error) { - val, err := f.getFlagType(name, "bytesBase64", bytesBase64ValueConv) - - if err != nil { - return []byte{}, err - } - - return val.([]byte), nil -} - -// BytesBase64Var defines an []byte flag with specified name, default value, and usage string. -// The argument p points to an []byte variable in which to store the value of the flag. -func (f *FlagSet) BytesBase64Var(p *[]byte, name string, value []byte, usage string) { - f.VarP(newBytesBase64Value(value, p), name, "", usage) -} - -// BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) BytesBase64VarP(p *[]byte, name, shorthand string, value []byte, usage string) { - f.VarP(newBytesBase64Value(value, p), name, shorthand, usage) -} - -// BytesBase64Var defines an []byte flag with specified name, default value, and usage string. -// The argument p points to an []byte variable in which to store the value of the flag. -func BytesBase64Var(p *[]byte, name string, value []byte, usage string) { - CommandLine.VarP(newBytesBase64Value(value, p), name, "", usage) -} - -// BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash. -func BytesBase64VarP(p *[]byte, name, shorthand string, value []byte, usage string) { - CommandLine.VarP(newBytesBase64Value(value, p), name, shorthand, usage) -} - -// BytesBase64 defines an []byte flag with specified name, default value, and usage string. -// The return value is the address of an []byte variable that stores the value of the flag. -func (f *FlagSet) BytesBase64(name string, value []byte, usage string) *[]byte { - p := new([]byte) - f.BytesBase64VarP(p, name, "", value, usage) - return p -} - -// BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) BytesBase64P(name, shorthand string, value []byte, usage string) *[]byte { - p := new([]byte) - f.BytesBase64VarP(p, name, shorthand, value, usage) - return p -} - -// BytesBase64 defines an []byte flag with specified name, default value, and usage string. -// The return value is the address of an []byte variable that stores the value of the flag. -func BytesBase64(name string, value []byte, usage string) *[]byte { - return CommandLine.BytesBase64P(name, "", value, usage) -} - -// BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash. -func BytesBase64P(name, shorthand string, value []byte, usage string) *[]byte { - return CommandLine.BytesBase64P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/count.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/count.go deleted file mode 100644 index aa126e44d1c..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/count.go +++ /dev/null @@ -1,96 +0,0 @@ -package pflag - -import "strconv" - -// -- count Value -type countValue int - -func newCountValue(val int, p *int) *countValue { - *p = val - return (*countValue)(p) -} - -func (i *countValue) Set(s string) error { - // "+1" means that no specific value was passed, so increment - if s == "+1" { - *i = countValue(*i + 1) - return nil - } - v, err := strconv.ParseInt(s, 0, 0) - *i = countValue(v) - return err -} - -func (i *countValue) Type() string { - return "count" -} - -func (i *countValue) String() string { return strconv.Itoa(int(*i)) } - -func countConv(sval string) (interface{}, error) { - i, err := strconv.Atoi(sval) - if err != nil { - return nil, err - } - return i, nil -} - -// GetCount return the int value of a flag with the given name -func (f *FlagSet) GetCount(name string) (int, error) { - val, err := f.getFlagType(name, "count", countConv) - if err != nil { - return 0, err - } - return val.(int), nil -} - -// CountVar defines a count flag with specified name, default value, and usage string. -// The argument p points to an int variable in which to store the value of the flag. -// A count flag will add 1 to its value evey time it is found on the command line -func (f *FlagSet) CountVar(p *int, name string, usage string) { - f.CountVarP(p, name, "", usage) -} - -// CountVarP is like CountVar only take a shorthand for the flag name. -func (f *FlagSet) CountVarP(p *int, name, shorthand string, usage string) { - flag := f.VarPF(newCountValue(0, p), name, shorthand, usage) - flag.NoOptDefVal = "+1" -} - -// CountVar like CountVar only the flag is placed on the CommandLine instead of a given flag set -func CountVar(p *int, name string, usage string) { - CommandLine.CountVar(p, name, usage) -} - -// CountVarP is like CountVar only take a shorthand for the flag name. -func CountVarP(p *int, name, shorthand string, usage string) { - CommandLine.CountVarP(p, name, shorthand, usage) -} - -// Count defines a count flag with specified name, default value, and usage string. -// The return value is the address of an int variable that stores the value of the flag. -// A count flag will add 1 to its value evey time it is found on the command line -func (f *FlagSet) Count(name string, usage string) *int { - p := new(int) - f.CountVarP(p, name, "", usage) - return p -} - -// CountP is like Count only takes a shorthand for the flag name. -func (f *FlagSet) CountP(name, shorthand string, usage string) *int { - p := new(int) - f.CountVarP(p, name, shorthand, usage) - return p -} - -// Count defines a count flag with specified name, default value, and usage string. -// The return value is the address of an int variable that stores the value of the flag. -// A count flag will add 1 to its value evey time it is found on the command line -func Count(name string, usage string) *int { - return CommandLine.CountP(name, "", usage) -} - -// CountP is like Count only takes a shorthand for the flag name. -func CountP(name, shorthand string, usage string) *int { - return CommandLine.CountP(name, shorthand, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/duration.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/duration.go deleted file mode 100644 index e9debef88ee..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/duration.go +++ /dev/null @@ -1,86 +0,0 @@ -package pflag - -import ( - "time" -) - -// -- time.Duration Value -type durationValue time.Duration - -func newDurationValue(val time.Duration, p *time.Duration) *durationValue { - *p = val - return (*durationValue)(p) -} - -func (d *durationValue) Set(s string) error { - v, err := time.ParseDuration(s) - *d = durationValue(v) - return err -} - -func (d *durationValue) Type() string { - return "duration" -} - -func (d *durationValue) String() string { return (*time.Duration)(d).String() } - -func durationConv(sval string) (interface{}, error) { - return time.ParseDuration(sval) -} - -// GetDuration return the duration value of a flag with the given name -func (f *FlagSet) GetDuration(name string) (time.Duration, error) { - val, err := f.getFlagType(name, "duration", durationConv) - if err != nil { - return 0, err - } - return val.(time.Duration), nil -} - -// DurationVar defines a time.Duration flag with specified name, default value, and usage string. -// The argument p points to a time.Duration variable in which to store the value of the flag. -func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string) { - f.VarP(newDurationValue(value, p), name, "", usage) -} - -// DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) { - f.VarP(newDurationValue(value, p), name, shorthand, usage) -} - -// DurationVar defines a time.Duration flag with specified name, default value, and usage string. -// The argument p points to a time.Duration variable in which to store the value of the flag. -func DurationVar(p *time.Duration, name string, value time.Duration, usage string) { - CommandLine.VarP(newDurationValue(value, p), name, "", usage) -} - -// DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash. -func DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) { - CommandLine.VarP(newDurationValue(value, p), name, shorthand, usage) -} - -// Duration defines a time.Duration flag with specified name, default value, and usage string. -// The return value is the address of a time.Duration variable that stores the value of the flag. -func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration { - p := new(time.Duration) - f.DurationVarP(p, name, "", value, usage) - return p -} - -// DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration { - p := new(time.Duration) - f.DurationVarP(p, name, shorthand, value, usage) - return p -} - -// Duration defines a time.Duration flag with specified name, default value, and usage string. -// The return value is the address of a time.Duration variable that stores the value of the flag. -func Duration(name string, value time.Duration, usage string) *time.Duration { - return CommandLine.DurationP(name, "", value, usage) -} - -// DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash. -func DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration { - return CommandLine.DurationP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/duration_slice.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/duration_slice.go deleted file mode 100644 index 52c6b6dc104..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/duration_slice.go +++ /dev/null @@ -1,128 +0,0 @@ -package pflag - -import ( - "fmt" - "strings" - "time" -) - -// -- durationSlice Value -type durationSliceValue struct { - value *[]time.Duration - changed bool -} - -func newDurationSliceValue(val []time.Duration, p *[]time.Duration) *durationSliceValue { - dsv := new(durationSliceValue) - dsv.value = p - *dsv.value = val - return dsv -} - -func (s *durationSliceValue) Set(val string) error { - ss := strings.Split(val, ",") - out := make([]time.Duration, len(ss)) - for i, d := range ss { - var err error - out[i], err = time.ParseDuration(d) - if err != nil { - return err - } - - } - if !s.changed { - *s.value = out - } else { - *s.value = append(*s.value, out...) - } - s.changed = true - return nil -} - -func (s *durationSliceValue) Type() string { - return "durationSlice" -} - -func (s *durationSliceValue) String() string { - out := make([]string, len(*s.value)) - for i, d := range *s.value { - out[i] = fmt.Sprintf("%s", d) - } - return "[" + strings.Join(out, ",") + "]" -} - -func durationSliceConv(val string) (interface{}, error) { - val = strings.Trim(val, "[]") - // Empty string would cause a slice with one (empty) entry - if len(val) == 0 { - return []time.Duration{}, nil - } - ss := strings.Split(val, ",") - out := make([]time.Duration, len(ss)) - for i, d := range ss { - var err error - out[i], err = time.ParseDuration(d) - if err != nil { - return nil, err - } - - } - return out, nil -} - -// GetDurationSlice returns the []time.Duration value of a flag with the given name -func (f *FlagSet) GetDurationSlice(name string) ([]time.Duration, error) { - val, err := f.getFlagType(name, "durationSlice", durationSliceConv) - if err != nil { - return []time.Duration{}, err - } - return val.([]time.Duration), nil -} - -// DurationSliceVar defines a durationSlice flag with specified name, default value, and usage string. -// The argument p points to a []time.Duration variable in which to store the value of the flag. -func (f *FlagSet) DurationSliceVar(p *[]time.Duration, name string, value []time.Duration, usage string) { - f.VarP(newDurationSliceValue(value, p), name, "", usage) -} - -// DurationSliceVarP is like DurationSliceVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) DurationSliceVarP(p *[]time.Duration, name, shorthand string, value []time.Duration, usage string) { - f.VarP(newDurationSliceValue(value, p), name, shorthand, usage) -} - -// DurationSliceVar defines a duration[] flag with specified name, default value, and usage string. -// The argument p points to a duration[] variable in which to store the value of the flag. -func DurationSliceVar(p *[]time.Duration, name string, value []time.Duration, usage string) { - CommandLine.VarP(newDurationSliceValue(value, p), name, "", usage) -} - -// DurationSliceVarP is like DurationSliceVar, but accepts a shorthand letter that can be used after a single dash. -func DurationSliceVarP(p *[]time.Duration, name, shorthand string, value []time.Duration, usage string) { - CommandLine.VarP(newDurationSliceValue(value, p), name, shorthand, usage) -} - -// DurationSlice defines a []time.Duration flag with specified name, default value, and usage string. -// The return value is the address of a []time.Duration variable that stores the value of the flag. -func (f *FlagSet) DurationSlice(name string, value []time.Duration, usage string) *[]time.Duration { - p := []time.Duration{} - f.DurationSliceVarP(&p, name, "", value, usage) - return &p -} - -// DurationSliceP is like DurationSlice, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) DurationSliceP(name, shorthand string, value []time.Duration, usage string) *[]time.Duration { - p := []time.Duration{} - f.DurationSliceVarP(&p, name, shorthand, value, usage) - return &p -} - -// DurationSlice defines a []time.Duration flag with specified name, default value, and usage string. -// The return value is the address of a []time.Duration variable that stores the value of the flag. -func DurationSlice(name string, value []time.Duration, usage string) *[]time.Duration { - return CommandLine.DurationSliceP(name, "", value, usage) -} - -// DurationSliceP is like DurationSlice, but accepts a shorthand letter that can be used after a single dash. -func DurationSliceP(name, shorthand string, value []time.Duration, usage string) *[]time.Duration { - return CommandLine.DurationSliceP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/flag.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/flag.go deleted file mode 100644 index 9beeda8ecca..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/flag.go +++ /dev/null @@ -1,1227 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package pflag is a drop-in replacement for Go's flag package, implementing -POSIX/GNU-style --flags. - -pflag is compatible with the GNU extensions to the POSIX recommendations -for command-line options. See -http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html - -Usage: - -pflag is a drop-in replacement of Go's native flag package. If you import -pflag under the name "flag" then all code should continue to function -with no changes. - - import flag "github.com/spf13/pflag" - -There is one exception to this: if you directly instantiate the Flag struct -there is one more field "Shorthand" that you will need to set. -Most code never instantiates this struct directly, and instead uses -functions such as String(), BoolVar(), and Var(), and is therefore -unaffected. - -Define flags using flag.String(), Bool(), Int(), etc. - -This declares an integer flag, -flagname, stored in the pointer ip, with type *int. - var ip = flag.Int("flagname", 1234, "help message for flagname") -If you like, you can bind the flag to a variable using the Var() functions. - var flagvar int - func init() { - flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname") - } -Or you can create custom flags that satisfy the Value interface (with -pointer receivers) and couple them to flag parsing by - flag.Var(&flagVal, "name", "help message for flagname") -For such flags, the default value is just the initial value of the variable. - -After all flags are defined, call - flag.Parse() -to parse the command line into the defined flags. - -Flags may then be used directly. If you're using the flags themselves, -they are all pointers; if you bind to variables, they're values. - fmt.Println("ip has value ", *ip) - fmt.Println("flagvar has value ", flagvar) - -After parsing, the arguments after the flag are available as the -slice flag.Args() or individually as flag.Arg(i). -The arguments are indexed from 0 through flag.NArg()-1. - -The pflag package also defines some new functions that are not in flag, -that give one-letter shorthands for flags. You can use these by appending -'P' to the name of any function that defines a flag. - var ip = flag.IntP("flagname", "f", 1234, "help message") - var flagvar bool - func init() { - flag.BoolVarP("boolname", "b", true, "help message") - } - flag.VarP(&flagVar, "varname", "v", 1234, "help message") -Shorthand letters can be used with single dashes on the command line. -Boolean shorthand flags can be combined with other shorthand flags. - -Command line flag syntax: - --flag // boolean flags only - --flag=x - -Unlike the flag package, a single dash before an option means something -different than a double dash. Single dashes signify a series of shorthand -letters for flags. All but the last shorthand letter must be boolean flags. - // boolean flags - -f - -abc - // non-boolean flags - -n 1234 - -Ifile - // mixed - -abcs "hello" - -abcn1234 - -Flag parsing stops after the terminator "--". Unlike the flag package, -flags can be interspersed with arguments anywhere on the command line -before this terminator. - -Integer flags accept 1234, 0664, 0x1234 and may be negative. -Boolean flags (in their long form) accept 1, 0, t, f, true, false, -TRUE, FALSE, True, False. -Duration flags accept any input valid for time.ParseDuration. - -The default set of command-line flags is controlled by -top-level functions. The FlagSet type allows one to define -independent sets of flags, such as to implement subcommands -in a command-line interface. The methods of FlagSet are -analogous to the top-level functions for the command-line -flag set. -*/ -package pflag - -import ( - "bytes" - "errors" - goflag "flag" - "fmt" - "io" - "os" - "sort" - "strings" -) - -// ErrHelp is the error returned if the flag -help is invoked but no such flag is defined. -var ErrHelp = errors.New("pflag: help requested") - -// ErrorHandling defines how to handle flag parsing errors. -type ErrorHandling int - -const ( - // ContinueOnError will return an err from Parse() if an error is found - ContinueOnError ErrorHandling = iota - // ExitOnError will call os.Exit(2) if an error is found when parsing - ExitOnError - // PanicOnError will panic() if an error is found when parsing flags - PanicOnError -) - -// ParseErrorsWhitelist defines the parsing errors that can be ignored -type ParseErrorsWhitelist struct { - // UnknownFlags will ignore unknown flags errors and continue parsing rest of the flags - UnknownFlags bool -} - -// NormalizedName is a flag name that has been normalized according to rules -// for the FlagSet (e.g. making '-' and '_' equivalent). -type NormalizedName string - -// A FlagSet represents a set of defined flags. -type FlagSet struct { - // Usage is the function called when an error occurs while parsing flags. - // The field is a function (not a method) that may be changed to point to - // a custom error handler. - Usage func() - - // SortFlags is used to indicate, if user wants to have sorted flags in - // help/usage messages. - SortFlags bool - - // ParseErrorsWhitelist is used to configure a whitelist of errors - ParseErrorsWhitelist ParseErrorsWhitelist - - name string - parsed bool - actual map[NormalizedName]*Flag - orderedActual []*Flag - sortedActual []*Flag - formal map[NormalizedName]*Flag - orderedFormal []*Flag - sortedFormal []*Flag - shorthands map[byte]*Flag - args []string // arguments after flags - argsLenAtDash int // len(args) when a '--' was located when parsing, or -1 if no -- - errorHandling ErrorHandling - output io.Writer // nil means stderr; use out() accessor - interspersed bool // allow interspersed option/non-option args - normalizeNameFunc func(f *FlagSet, name string) NormalizedName - - addedGoFlagSets []*goflag.FlagSet -} - -// A Flag represents the state of a flag. -type Flag struct { - Name string // name as it appears on command line - Shorthand string // one-letter abbreviated flag - Usage string // help message - Value Value // value as set - DefValue string // default value (as text); for usage message - Changed bool // If the user set the value (or if left to default) - NoOptDefVal string // default value (as text); if the flag is on the command line without any options - Deprecated string // If this flag is deprecated, this string is the new or now thing to use - Hidden bool // used by cobra.Command to allow flags to be hidden from help/usage text - ShorthandDeprecated string // If the shorthand of this flag is deprecated, this string is the new or now thing to use - Annotations map[string][]string // used by cobra.Command bash autocomple code -} - -// Value is the interface to the dynamic value stored in a flag. -// (The default value is represented as a string.) -type Value interface { - String() string - Set(string) error - Type() string -} - -// sortFlags returns the flags as a slice in lexicographical sorted order. -func sortFlags(flags map[NormalizedName]*Flag) []*Flag { - list := make(sort.StringSlice, len(flags)) - i := 0 - for k := range flags { - list[i] = string(k) - i++ - } - list.Sort() - result := make([]*Flag, len(list)) - for i, name := range list { - result[i] = flags[NormalizedName(name)] - } - return result -} - -// SetNormalizeFunc allows you to add a function which can translate flag names. -// Flags added to the FlagSet will be translated and then when anything tries to -// look up the flag that will also be translated. So it would be possible to create -// a flag named "getURL" and have it translated to "geturl". A user could then pass -// "--getUrl" which may also be translated to "geturl" and everything will work. -func (f *FlagSet) SetNormalizeFunc(n func(f *FlagSet, name string) NormalizedName) { - f.normalizeNameFunc = n - f.sortedFormal = f.sortedFormal[:0] - for fname, flag := range f.formal { - nname := f.normalizeFlagName(flag.Name) - if fname == nname { - continue - } - flag.Name = string(nname) - delete(f.formal, fname) - f.formal[nname] = flag - if _, set := f.actual[fname]; set { - delete(f.actual, fname) - f.actual[nname] = flag - } - } -} - -// GetNormalizeFunc returns the previously set NormalizeFunc of a function which -// does no translation, if not set previously. -func (f *FlagSet) GetNormalizeFunc() func(f *FlagSet, name string) NormalizedName { - if f.normalizeNameFunc != nil { - return f.normalizeNameFunc - } - return func(f *FlagSet, name string) NormalizedName { return NormalizedName(name) } -} - -func (f *FlagSet) normalizeFlagName(name string) NormalizedName { - n := f.GetNormalizeFunc() - return n(f, name) -} - -func (f *FlagSet) out() io.Writer { - if f.output == nil { - return os.Stderr - } - return f.output -} - -// SetOutput sets the destination for usage and error messages. -// If output is nil, os.Stderr is used. -func (f *FlagSet) SetOutput(output io.Writer) { - f.output = output -} - -// VisitAll visits the flags in lexicographical order or -// in primordial order if f.SortFlags is false, calling fn for each. -// It visits all flags, even those not set. -func (f *FlagSet) VisitAll(fn func(*Flag)) { - if len(f.formal) == 0 { - return - } - - var flags []*Flag - if f.SortFlags { - if len(f.formal) != len(f.sortedFormal) { - f.sortedFormal = sortFlags(f.formal) - } - flags = f.sortedFormal - } else { - flags = f.orderedFormal - } - - for _, flag := range flags { - fn(flag) - } -} - -// HasFlags returns a bool to indicate if the FlagSet has any flags defined. -func (f *FlagSet) HasFlags() bool { - return len(f.formal) > 0 -} - -// HasAvailableFlags returns a bool to indicate if the FlagSet has any flags -// that are not hidden. -func (f *FlagSet) HasAvailableFlags() bool { - for _, flag := range f.formal { - if !flag.Hidden { - return true - } - } - return false -} - -// VisitAll visits the command-line flags in lexicographical order or -// in primordial order if f.SortFlags is false, calling fn for each. -// It visits all flags, even those not set. -func VisitAll(fn func(*Flag)) { - CommandLine.VisitAll(fn) -} - -// Visit visits the flags in lexicographical order or -// in primordial order if f.SortFlags is false, calling fn for each. -// It visits only those flags that have been set. -func (f *FlagSet) Visit(fn func(*Flag)) { - if len(f.actual) == 0 { - return - } - - var flags []*Flag - if f.SortFlags { - if len(f.actual) != len(f.sortedActual) { - f.sortedActual = sortFlags(f.actual) - } - flags = f.sortedActual - } else { - flags = f.orderedActual - } - - for _, flag := range flags { - fn(flag) - } -} - -// Visit visits the command-line flags in lexicographical order or -// in primordial order if f.SortFlags is false, calling fn for each. -// It visits only those flags that have been set. -func Visit(fn func(*Flag)) { - CommandLine.Visit(fn) -} - -// Lookup returns the Flag structure of the named flag, returning nil if none exists. -func (f *FlagSet) Lookup(name string) *Flag { - return f.lookup(f.normalizeFlagName(name)) -} - -// ShorthandLookup returns the Flag structure of the short handed flag, -// returning nil if none exists. -// It panics, if len(name) > 1. -func (f *FlagSet) ShorthandLookup(name string) *Flag { - if name == "" { - return nil - } - if len(name) > 1 { - msg := fmt.Sprintf("can not look up shorthand which is more than one ASCII character: %q", name) - fmt.Fprintf(f.out(), msg) - panic(msg) - } - c := name[0] - return f.shorthands[c] -} - -// lookup returns the Flag structure of the named flag, returning nil if none exists. -func (f *FlagSet) lookup(name NormalizedName) *Flag { - return f.formal[name] -} - -// func to return a given type for a given flag name -func (f *FlagSet) getFlagType(name string, ftype string, convFunc func(sval string) (interface{}, error)) (interface{}, error) { - flag := f.Lookup(name) - if flag == nil { - err := fmt.Errorf("flag accessed but not defined: %s", name) - return nil, err - } - - if flag.Value.Type() != ftype { - err := fmt.Errorf("trying to get %s value of flag of type %s", ftype, flag.Value.Type()) - return nil, err - } - - sval := flag.Value.String() - result, err := convFunc(sval) - if err != nil { - return nil, err - } - return result, nil -} - -// ArgsLenAtDash will return the length of f.Args at the moment when a -- was -// found during arg parsing. This allows your program to know which args were -// before the -- and which came after. -func (f *FlagSet) ArgsLenAtDash() int { - return f.argsLenAtDash -} - -// MarkDeprecated indicated that a flag is deprecated in your program. It will -// continue to function but will not show up in help or usage messages. Using -// this flag will also print the given usageMessage. -func (f *FlagSet) MarkDeprecated(name string, usageMessage string) error { - flag := f.Lookup(name) - if flag == nil { - return fmt.Errorf("flag %q does not exist", name) - } - if usageMessage == "" { - return fmt.Errorf("deprecated message for flag %q must be set", name) - } - flag.Deprecated = usageMessage - flag.Hidden = true - return nil -} - -// MarkShorthandDeprecated will mark the shorthand of a flag deprecated in your -// program. It will continue to function but will not show up in help or usage -// messages. Using this flag will also print the given usageMessage. -func (f *FlagSet) MarkShorthandDeprecated(name string, usageMessage string) error { - flag := f.Lookup(name) - if flag == nil { - return fmt.Errorf("flag %q does not exist", name) - } - if usageMessage == "" { - return fmt.Errorf("deprecated message for flag %q must be set", name) - } - flag.ShorthandDeprecated = usageMessage - return nil -} - -// MarkHidden sets a flag to 'hidden' in your program. It will continue to -// function but will not show up in help or usage messages. -func (f *FlagSet) MarkHidden(name string) error { - flag := f.Lookup(name) - if flag == nil { - return fmt.Errorf("flag %q does not exist", name) - } - flag.Hidden = true - return nil -} - -// Lookup returns the Flag structure of the named command-line flag, -// returning nil if none exists. -func Lookup(name string) *Flag { - return CommandLine.Lookup(name) -} - -// ShorthandLookup returns the Flag structure of the short handed flag, -// returning nil if none exists. -func ShorthandLookup(name string) *Flag { - return CommandLine.ShorthandLookup(name) -} - -// Set sets the value of the named flag. -func (f *FlagSet) Set(name, value string) error { - normalName := f.normalizeFlagName(name) - flag, ok := f.formal[normalName] - if !ok { - return fmt.Errorf("no such flag -%v", name) - } - - err := flag.Value.Set(value) - if err != nil { - var flagName string - if flag.Shorthand != "" && flag.ShorthandDeprecated == "" { - flagName = fmt.Sprintf("-%s, --%s", flag.Shorthand, flag.Name) - } else { - flagName = fmt.Sprintf("--%s", flag.Name) - } - return fmt.Errorf("invalid argument %q for %q flag: %v", value, flagName, err) - } - - if !flag.Changed { - if f.actual == nil { - f.actual = make(map[NormalizedName]*Flag) - } - f.actual[normalName] = flag - f.orderedActual = append(f.orderedActual, flag) - - flag.Changed = true - } - - if flag.Deprecated != "" { - fmt.Fprintf(f.out(), "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated) - } - return nil -} - -// SetAnnotation allows one to set arbitrary annotations on a flag in the FlagSet. -// This is sometimes used by spf13/cobra programs which want to generate additional -// bash completion information. -func (f *FlagSet) SetAnnotation(name, key string, values []string) error { - normalName := f.normalizeFlagName(name) - flag, ok := f.formal[normalName] - if !ok { - return fmt.Errorf("no such flag -%v", name) - } - if flag.Annotations == nil { - flag.Annotations = map[string][]string{} - } - flag.Annotations[key] = values - return nil -} - -// Changed returns true if the flag was explicitly set during Parse() and false -// otherwise -func (f *FlagSet) Changed(name string) bool { - flag := f.Lookup(name) - // If a flag doesn't exist, it wasn't changed.... - if flag == nil { - return false - } - return flag.Changed -} - -// Set sets the value of the named command-line flag. -func Set(name, value string) error { - return CommandLine.Set(name, value) -} - -// PrintDefaults prints, to standard error unless configured -// otherwise, the default values of all defined flags in the set. -func (f *FlagSet) PrintDefaults() { - usages := f.FlagUsages() - fmt.Fprint(f.out(), usages) -} - -// defaultIsZeroValue returns true if the default value for this flag represents -// a zero value. -func (f *Flag) defaultIsZeroValue() bool { - switch f.Value.(type) { - case boolFlag: - return f.DefValue == "false" - case *durationValue: - // Beginning in Go 1.7, duration zero values are "0s" - return f.DefValue == "0" || f.DefValue == "0s" - case *intValue, *int8Value, *int32Value, *int64Value, *uintValue, *uint8Value, *uint16Value, *uint32Value, *uint64Value, *countValue, *float32Value, *float64Value: - return f.DefValue == "0" - case *stringValue: - return f.DefValue == "" - case *ipValue, *ipMaskValue, *ipNetValue: - return f.DefValue == "" - case *intSliceValue, *stringSliceValue, *stringArrayValue: - return f.DefValue == "[]" - default: - switch f.Value.String() { - case "false": - return true - case "": - return true - case "": - return true - case "0": - return true - } - return false - } -} - -// UnquoteUsage extracts a back-quoted name from the usage -// string for a flag and returns it and the un-quoted usage. -// Given "a `name` to show" it returns ("name", "a name to show"). -// If there are no back quotes, the name is an educated guess of the -// type of the flag's value, or the empty string if the flag is boolean. -func UnquoteUsage(flag *Flag) (name string, usage string) { - // Look for a back-quoted name, but avoid the strings package. - usage = flag.Usage - for i := 0; i < len(usage); i++ { - if usage[i] == '`' { - for j := i + 1; j < len(usage); j++ { - if usage[j] == '`' { - name = usage[i+1 : j] - usage = usage[:i] + name + usage[j+1:] - return name, usage - } - } - break // Only one back quote; use type name. - } - } - - name = flag.Value.Type() - switch name { - case "bool": - name = "" - case "float64": - name = "float" - case "int64": - name = "int" - case "uint64": - name = "uint" - case "stringSlice": - name = "strings" - case "intSlice": - name = "ints" - case "uintSlice": - name = "uints" - case "boolSlice": - name = "bools" - } - - return -} - -// Splits the string `s` on whitespace into an initial substring up to -// `i` runes in length and the remainder. Will go `slop` over `i` if -// that encompasses the entire string (which allows the caller to -// avoid short orphan words on the final line). -func wrapN(i, slop int, s string) (string, string) { - if i+slop > len(s) { - return s, "" - } - - w := strings.LastIndexAny(s[:i], " \t\n") - if w <= 0 { - return s, "" - } - nlPos := strings.LastIndex(s[:i], "\n") - if nlPos > 0 && nlPos < w { - return s[:nlPos], s[nlPos+1:] - } - return s[:w], s[w+1:] -} - -// Wraps the string `s` to a maximum width `w` with leading indent -// `i`. The first line is not indented (this is assumed to be done by -// caller). Pass `w` == 0 to do no wrapping -func wrap(i, w int, s string) string { - if w == 0 { - return strings.Replace(s, "\n", "\n"+strings.Repeat(" ", i), -1) - } - - // space between indent i and end of line width w into which - // we should wrap the text. - wrap := w - i - - var r, l string - - // Not enough space for sensible wrapping. Wrap as a block on - // the next line instead. - if wrap < 24 { - i = 16 - wrap = w - i - r += "\n" + strings.Repeat(" ", i) - } - // If still not enough space then don't even try to wrap. - if wrap < 24 { - return strings.Replace(s, "\n", r, -1) - } - - // Try to avoid short orphan words on the final line, by - // allowing wrapN to go a bit over if that would fit in the - // remainder of the line. - slop := 5 - wrap = wrap - slop - - // Handle first line, which is indented by the caller (or the - // special case above) - l, s = wrapN(wrap, slop, s) - r = r + strings.Replace(l, "\n", "\n"+strings.Repeat(" ", i), -1) - - // Now wrap the rest - for s != "" { - var t string - - t, s = wrapN(wrap, slop, s) - r = r + "\n" + strings.Repeat(" ", i) + strings.Replace(t, "\n", "\n"+strings.Repeat(" ", i), -1) - } - - return r - -} - -// FlagUsagesWrapped returns a string containing the usage information -// for all flags in the FlagSet. Wrapped to `cols` columns (0 for no -// wrapping) -func (f *FlagSet) FlagUsagesWrapped(cols int) string { - buf := new(bytes.Buffer) - - lines := make([]string, 0, len(f.formal)) - - maxlen := 0 - f.VisitAll(func(flag *Flag) { - if flag.Hidden { - return - } - - line := "" - if flag.Shorthand != "" && flag.ShorthandDeprecated == "" { - line = fmt.Sprintf(" -%s, --%s", flag.Shorthand, flag.Name) - } else { - line = fmt.Sprintf(" --%s", flag.Name) - } - - varname, usage := UnquoteUsage(flag) - if varname != "" { - line += " " + varname - } - if flag.NoOptDefVal != "" { - switch flag.Value.Type() { - case "string": - line += fmt.Sprintf("[=\"%s\"]", flag.NoOptDefVal) - case "bool": - if flag.NoOptDefVal != "true" { - line += fmt.Sprintf("[=%s]", flag.NoOptDefVal) - } - case "count": - if flag.NoOptDefVal != "+1" { - line += fmt.Sprintf("[=%s]", flag.NoOptDefVal) - } - default: - line += fmt.Sprintf("[=%s]", flag.NoOptDefVal) - } - } - - // This special character will be replaced with spacing once the - // correct alignment is calculated - line += "\x00" - if len(line) > maxlen { - maxlen = len(line) - } - - line += usage - if !flag.defaultIsZeroValue() { - if flag.Value.Type() == "string" { - line += fmt.Sprintf(" (default %q)", flag.DefValue) - } else { - line += fmt.Sprintf(" (default %s)", flag.DefValue) - } - } - if len(flag.Deprecated) != 0 { - line += fmt.Sprintf(" (DEPRECATED: %s)", flag.Deprecated) - } - - lines = append(lines, line) - }) - - for _, line := range lines { - sidx := strings.Index(line, "\x00") - spacing := strings.Repeat(" ", maxlen-sidx) - // maxlen + 2 comes from + 1 for the \x00 and + 1 for the (deliberate) off-by-one in maxlen-sidx - fmt.Fprintln(buf, line[:sidx], spacing, wrap(maxlen+2, cols, line[sidx+1:])) - } - - return buf.String() -} - -// FlagUsages returns a string containing the usage information for all flags in -// the FlagSet -func (f *FlagSet) FlagUsages() string { - return f.FlagUsagesWrapped(0) -} - -// PrintDefaults prints to standard error the default values of all defined command-line flags. -func PrintDefaults() { - CommandLine.PrintDefaults() -} - -// defaultUsage is the default function to print a usage message. -func defaultUsage(f *FlagSet) { - fmt.Fprintf(f.out(), "Usage of %s:\n", f.name) - f.PrintDefaults() -} - -// NOTE: Usage is not just defaultUsage(CommandLine) -// because it serves (via godoc flag Usage) as the example -// for how to write your own usage function. - -// Usage prints to standard error a usage message documenting all defined command-line flags. -// The function is a variable that may be changed to point to a custom function. -// By default it prints a simple header and calls PrintDefaults; for details about the -// format of the output and how to control it, see the documentation for PrintDefaults. -var Usage = func() { - fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) - PrintDefaults() -} - -// NFlag returns the number of flags that have been set. -func (f *FlagSet) NFlag() int { return len(f.actual) } - -// NFlag returns the number of command-line flags that have been set. -func NFlag() int { return len(CommandLine.actual) } - -// Arg returns the i'th argument. Arg(0) is the first remaining argument -// after flags have been processed. -func (f *FlagSet) Arg(i int) string { - if i < 0 || i >= len(f.args) { - return "" - } - return f.args[i] -} - -// Arg returns the i'th command-line argument. Arg(0) is the first remaining argument -// after flags have been processed. -func Arg(i int) string { - return CommandLine.Arg(i) -} - -// NArg is the number of arguments remaining after flags have been processed. -func (f *FlagSet) NArg() int { return len(f.args) } - -// NArg is the number of arguments remaining after flags have been processed. -func NArg() int { return len(CommandLine.args) } - -// Args returns the non-flag arguments. -func (f *FlagSet) Args() []string { return f.args } - -// Args returns the non-flag command-line arguments. -func Args() []string { return CommandLine.args } - -// Var defines a flag with the specified name and usage string. The type and -// value of the flag are represented by the first argument, of type Value, which -// typically holds a user-defined implementation of Value. For instance, the -// caller could create a flag that turns a comma-separated string into a slice -// of strings by giving the slice the methods of Value; in particular, Set would -// decompose the comma-separated string into the slice. -func (f *FlagSet) Var(value Value, name string, usage string) { - f.VarP(value, name, "", usage) -} - -// VarPF is like VarP, but returns the flag created -func (f *FlagSet) VarPF(value Value, name, shorthand, usage string) *Flag { - // Remember the default value as a string; it won't change. - flag := &Flag{ - Name: name, - Shorthand: shorthand, - Usage: usage, - Value: value, - DefValue: value.String(), - } - f.AddFlag(flag) - return flag -} - -// VarP is like Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) VarP(value Value, name, shorthand, usage string) { - f.VarPF(value, name, shorthand, usage) -} - -// AddFlag will add the flag to the FlagSet -func (f *FlagSet) AddFlag(flag *Flag) { - normalizedFlagName := f.normalizeFlagName(flag.Name) - - _, alreadyThere := f.formal[normalizedFlagName] - if alreadyThere { - msg := fmt.Sprintf("%s flag redefined: %s", f.name, flag.Name) - fmt.Fprintln(f.out(), msg) - panic(msg) // Happens only if flags are declared with identical names - } - if f.formal == nil { - f.formal = make(map[NormalizedName]*Flag) - } - - flag.Name = string(normalizedFlagName) - f.formal[normalizedFlagName] = flag - f.orderedFormal = append(f.orderedFormal, flag) - - if flag.Shorthand == "" { - return - } - if len(flag.Shorthand) > 1 { - msg := fmt.Sprintf("%q shorthand is more than one ASCII character", flag.Shorthand) - fmt.Fprintf(f.out(), msg) - panic(msg) - } - if f.shorthands == nil { - f.shorthands = make(map[byte]*Flag) - } - c := flag.Shorthand[0] - used, alreadyThere := f.shorthands[c] - if alreadyThere { - msg := fmt.Sprintf("unable to redefine %q shorthand in %q flagset: it's already used for %q flag", c, f.name, used.Name) - fmt.Fprintf(f.out(), msg) - panic(msg) - } - f.shorthands[c] = flag -} - -// AddFlagSet adds one FlagSet to another. If a flag is already present in f -// the flag from newSet will be ignored. -func (f *FlagSet) AddFlagSet(newSet *FlagSet) { - if newSet == nil { - return - } - newSet.VisitAll(func(flag *Flag) { - if f.Lookup(flag.Name) == nil { - f.AddFlag(flag) - } - }) -} - -// Var defines a flag with the specified name and usage string. The type and -// value of the flag are represented by the first argument, of type Value, which -// typically holds a user-defined implementation of Value. For instance, the -// caller could create a flag that turns a comma-separated string into a slice -// of strings by giving the slice the methods of Value; in particular, Set would -// decompose the comma-separated string into the slice. -func Var(value Value, name string, usage string) { - CommandLine.VarP(value, name, "", usage) -} - -// VarP is like Var, but accepts a shorthand letter that can be used after a single dash. -func VarP(value Value, name, shorthand, usage string) { - CommandLine.VarP(value, name, shorthand, usage) -} - -// failf prints to standard error a formatted error and usage message and -// returns the error. -func (f *FlagSet) failf(format string, a ...interface{}) error { - err := fmt.Errorf(format, a...) - if f.errorHandling != ContinueOnError { - fmt.Fprintln(f.out(), err) - f.usage() - } - return err -} - -// usage calls the Usage method for the flag set, or the usage function if -// the flag set is CommandLine. -func (f *FlagSet) usage() { - if f == CommandLine { - Usage() - } else if f.Usage == nil { - defaultUsage(f) - } else { - f.Usage() - } -} - -//--unknown (args will be empty) -//--unknown --next-flag ... (args will be --next-flag ...) -//--unknown arg ... (args will be arg ...) -func stripUnknownFlagValue(args []string) []string { - if len(args) == 0 { - //--unknown - return args - } - - first := args[0] - if len(first) > 0 && first[0] == '-' { - //--unknown --next-flag ... - return args - } - - //--unknown arg ... (args will be arg ...) - if len(args) > 1 { - return args[1:] - } - return nil -} - -func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) { - a = args - name := s[2:] - if len(name) == 0 || name[0] == '-' || name[0] == '=' { - err = f.failf("bad flag syntax: %s", s) - return - } - - split := strings.SplitN(name, "=", 2) - name = split[0] - flag, exists := f.formal[f.normalizeFlagName(name)] - - if !exists { - switch { - case name == "help": - f.usage() - return a, ErrHelp - case f.ParseErrorsWhitelist.UnknownFlags: - // --unknown=unknownval arg ... - // we do not want to lose arg in this case - if len(split) >= 2 { - return a, nil - } - - return stripUnknownFlagValue(a), nil - default: - err = f.failf("unknown flag: --%s", name) - return - } - } - - var value string - if len(split) == 2 { - // '--flag=arg' - value = split[1] - } else if flag.NoOptDefVal != "" { - // '--flag' (arg was optional) - value = flag.NoOptDefVal - } else if len(a) > 0 { - // '--flag arg' - value = a[0] - a = a[1:] - } else { - // '--flag' (arg was required) - err = f.failf("flag needs an argument: %s", s) - return - } - - err = fn(flag, value) - if err != nil { - f.failf(err.Error()) - } - return -} - -func (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parseFunc) (outShorts string, outArgs []string, err error) { - outArgs = args - - if strings.HasPrefix(shorthands, "test.") { - return - } - - outShorts = shorthands[1:] - c := shorthands[0] - - flag, exists := f.shorthands[c] - if !exists { - switch { - case c == 'h': - f.usage() - err = ErrHelp - return - case f.ParseErrorsWhitelist.UnknownFlags: - // '-f=arg arg ...' - // we do not want to lose arg in this case - if len(shorthands) > 2 && shorthands[1] == '=' { - outShorts = "" - return - } - - outArgs = stripUnknownFlagValue(outArgs) - return - default: - err = f.failf("unknown shorthand flag: %q in -%s", c, shorthands) - return - } - } - - var value string - if len(shorthands) > 2 && shorthands[1] == '=' { - // '-f=arg' - value = shorthands[2:] - outShorts = "" - } else if flag.NoOptDefVal != "" { - // '-f' (arg was optional) - value = flag.NoOptDefVal - } else if len(shorthands) > 1 { - // '-farg' - value = shorthands[1:] - outShorts = "" - } else if len(args) > 0 { - // '-f arg' - value = args[0] - outArgs = args[1:] - } else { - // '-f' (arg was required) - err = f.failf("flag needs an argument: %q in -%s", c, shorthands) - return - } - - if flag.ShorthandDeprecated != "" { - fmt.Fprintf(f.out(), "Flag shorthand -%s has been deprecated, %s\n", flag.Shorthand, flag.ShorthandDeprecated) - } - - err = fn(flag, value) - if err != nil { - f.failf(err.Error()) - } - return -} - -func (f *FlagSet) parseShortArg(s string, args []string, fn parseFunc) (a []string, err error) { - a = args - shorthands := s[1:] - - // "shorthands" can be a series of shorthand letters of flags (e.g. "-vvv"). - for len(shorthands) > 0 { - shorthands, a, err = f.parseSingleShortArg(shorthands, args, fn) - if err != nil { - return - } - } - - return -} - -func (f *FlagSet) parseArgs(args []string, fn parseFunc) (err error) { - for len(args) > 0 { - s := args[0] - args = args[1:] - if len(s) == 0 || s[0] != '-' || len(s) == 1 { - if !f.interspersed { - f.args = append(f.args, s) - f.args = append(f.args, args...) - return nil - } - f.args = append(f.args, s) - continue - } - - if s[1] == '-' { - if len(s) == 2 { // "--" terminates the flags - f.argsLenAtDash = len(f.args) - f.args = append(f.args, args...) - break - } - args, err = f.parseLongArg(s, args, fn) - } else { - args, err = f.parseShortArg(s, args, fn) - } - if err != nil { - return - } - } - return -} - -// Parse parses flag definitions from the argument list, which should not -// include the command name. Must be called after all flags in the FlagSet -// are defined and before flags are accessed by the program. -// The return value will be ErrHelp if -help was set but not defined. -func (f *FlagSet) Parse(arguments []string) error { - if f.addedGoFlagSets != nil { - for _, goFlagSet := range f.addedGoFlagSets { - goFlagSet.Parse(nil) - } - } - f.parsed = true - - if len(arguments) < 0 { - return nil - } - - f.args = make([]string, 0, len(arguments)) - - set := func(flag *Flag, value string) error { - return f.Set(flag.Name, value) - } - - err := f.parseArgs(arguments, set) - if err != nil { - switch f.errorHandling { - case ContinueOnError: - return err - case ExitOnError: - fmt.Println(err) - os.Exit(2) - case PanicOnError: - panic(err) - } - } - return nil -} - -type parseFunc func(flag *Flag, value string) error - -// ParseAll parses flag definitions from the argument list, which should not -// include the command name. The arguments for fn are flag and value. Must be -// called after all flags in the FlagSet are defined and before flags are -// accessed by the program. The return value will be ErrHelp if -help was set -// but not defined. -func (f *FlagSet) ParseAll(arguments []string, fn func(flag *Flag, value string) error) error { - f.parsed = true - f.args = make([]string, 0, len(arguments)) - - err := f.parseArgs(arguments, fn) - if err != nil { - switch f.errorHandling { - case ContinueOnError: - return err - case ExitOnError: - os.Exit(2) - case PanicOnError: - panic(err) - } - } - return nil -} - -// Parsed reports whether f.Parse has been called. -func (f *FlagSet) Parsed() bool { - return f.parsed -} - -// Parse parses the command-line flags from os.Args[1:]. Must be called -// after all flags are defined and before flags are accessed by the program. -func Parse() { - // Ignore errors; CommandLine is set for ExitOnError. - CommandLine.Parse(os.Args[1:]) -} - -// ParseAll parses the command-line flags from os.Args[1:] and called fn for each. -// The arguments for fn are flag and value. Must be called after all flags are -// defined and before flags are accessed by the program. -func ParseAll(fn func(flag *Flag, value string) error) { - // Ignore errors; CommandLine is set for ExitOnError. - CommandLine.ParseAll(os.Args[1:], fn) -} - -// SetInterspersed sets whether to support interspersed option/non-option arguments. -func SetInterspersed(interspersed bool) { - CommandLine.SetInterspersed(interspersed) -} - -// Parsed returns true if the command-line flags have been parsed. -func Parsed() bool { - return CommandLine.Parsed() -} - -// CommandLine is the default set of command-line flags, parsed from os.Args. -var CommandLine = NewFlagSet(os.Args[0], ExitOnError) - -// NewFlagSet returns a new, empty flag set with the specified name, -// error handling property and SortFlags set to true. -func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet { - f := &FlagSet{ - name: name, - errorHandling: errorHandling, - argsLenAtDash: -1, - interspersed: true, - SortFlags: true, - } - return f -} - -// SetInterspersed sets whether to support interspersed option/non-option arguments. -func (f *FlagSet) SetInterspersed(interspersed bool) { - f.interspersed = interspersed -} - -// Init sets the name and error handling property for a flag set. -// By default, the zero FlagSet uses an empty name and the -// ContinueOnError error handling policy. -func (f *FlagSet) Init(name string, errorHandling ErrorHandling) { - f.name = name - f.errorHandling = errorHandling - f.argsLenAtDash = -1 -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/float32.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/float32.go deleted file mode 100644 index a243f81f7fb..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/float32.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- float32 Value -type float32Value float32 - -func newFloat32Value(val float32, p *float32) *float32Value { - *p = val - return (*float32Value)(p) -} - -func (f *float32Value) Set(s string) error { - v, err := strconv.ParseFloat(s, 32) - *f = float32Value(v) - return err -} - -func (f *float32Value) Type() string { - return "float32" -} - -func (f *float32Value) String() string { return strconv.FormatFloat(float64(*f), 'g', -1, 32) } - -func float32Conv(sval string) (interface{}, error) { - v, err := strconv.ParseFloat(sval, 32) - if err != nil { - return 0, err - } - return float32(v), nil -} - -// GetFloat32 return the float32 value of a flag with the given name -func (f *FlagSet) GetFloat32(name string) (float32, error) { - val, err := f.getFlagType(name, "float32", float32Conv) - if err != nil { - return 0, err - } - return val.(float32), nil -} - -// Float32Var defines a float32 flag with specified name, default value, and usage string. -// The argument p points to a float32 variable in which to store the value of the flag. -func (f *FlagSet) Float32Var(p *float32, name string, value float32, usage string) { - f.VarP(newFloat32Value(value, p), name, "", usage) -} - -// Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Float32VarP(p *float32, name, shorthand string, value float32, usage string) { - f.VarP(newFloat32Value(value, p), name, shorthand, usage) -} - -// Float32Var defines a float32 flag with specified name, default value, and usage string. -// The argument p points to a float32 variable in which to store the value of the flag. -func Float32Var(p *float32, name string, value float32, usage string) { - CommandLine.VarP(newFloat32Value(value, p), name, "", usage) -} - -// Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash. -func Float32VarP(p *float32, name, shorthand string, value float32, usage string) { - CommandLine.VarP(newFloat32Value(value, p), name, shorthand, usage) -} - -// Float32 defines a float32 flag with specified name, default value, and usage string. -// The return value is the address of a float32 variable that stores the value of the flag. -func (f *FlagSet) Float32(name string, value float32, usage string) *float32 { - p := new(float32) - f.Float32VarP(p, name, "", value, usage) - return p -} - -// Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Float32P(name, shorthand string, value float32, usage string) *float32 { - p := new(float32) - f.Float32VarP(p, name, shorthand, value, usage) - return p -} - -// Float32 defines a float32 flag with specified name, default value, and usage string. -// The return value is the address of a float32 variable that stores the value of the flag. -func Float32(name string, value float32, usage string) *float32 { - return CommandLine.Float32P(name, "", value, usage) -} - -// Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash. -func Float32P(name, shorthand string, value float32, usage string) *float32 { - return CommandLine.Float32P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/float64.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/float64.go deleted file mode 100644 index 04b5492a7d3..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/float64.go +++ /dev/null @@ -1,84 +0,0 @@ -package pflag - -import "strconv" - -// -- float64 Value -type float64Value float64 - -func newFloat64Value(val float64, p *float64) *float64Value { - *p = val - return (*float64Value)(p) -} - -func (f *float64Value) Set(s string) error { - v, err := strconv.ParseFloat(s, 64) - *f = float64Value(v) - return err -} - -func (f *float64Value) Type() string { - return "float64" -} - -func (f *float64Value) String() string { return strconv.FormatFloat(float64(*f), 'g', -1, 64) } - -func float64Conv(sval string) (interface{}, error) { - return strconv.ParseFloat(sval, 64) -} - -// GetFloat64 return the float64 value of a flag with the given name -func (f *FlagSet) GetFloat64(name string) (float64, error) { - val, err := f.getFlagType(name, "float64", float64Conv) - if err != nil { - return 0, err - } - return val.(float64), nil -} - -// Float64Var defines a float64 flag with specified name, default value, and usage string. -// The argument p points to a float64 variable in which to store the value of the flag. -func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string) { - f.VarP(newFloat64Value(value, p), name, "", usage) -} - -// Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Float64VarP(p *float64, name, shorthand string, value float64, usage string) { - f.VarP(newFloat64Value(value, p), name, shorthand, usage) -} - -// Float64Var defines a float64 flag with specified name, default value, and usage string. -// The argument p points to a float64 variable in which to store the value of the flag. -func Float64Var(p *float64, name string, value float64, usage string) { - CommandLine.VarP(newFloat64Value(value, p), name, "", usage) -} - -// Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash. -func Float64VarP(p *float64, name, shorthand string, value float64, usage string) { - CommandLine.VarP(newFloat64Value(value, p), name, shorthand, usage) -} - -// Float64 defines a float64 flag with specified name, default value, and usage string. -// The return value is the address of a float64 variable that stores the value of the flag. -func (f *FlagSet) Float64(name string, value float64, usage string) *float64 { - p := new(float64) - f.Float64VarP(p, name, "", value, usage) - return p -} - -// Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Float64P(name, shorthand string, value float64, usage string) *float64 { - p := new(float64) - f.Float64VarP(p, name, shorthand, value, usage) - return p -} - -// Float64 defines a float64 flag with specified name, default value, and usage string. -// The return value is the address of a float64 variable that stores the value of the flag. -func Float64(name string, value float64, usage string) *float64 { - return CommandLine.Float64P(name, "", value, usage) -} - -// Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash. -func Float64P(name, shorthand string, value float64, usage string) *float64 { - return CommandLine.Float64P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/golangflag.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/golangflag.go deleted file mode 100644 index d3dd72b7fee..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/golangflag.go +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package pflag - -import ( - goflag "flag" - "reflect" - "strings" -) - -// flagValueWrapper implements pflag.Value around a flag.Value. The main -// difference here is the addition of the Type method that returns a string -// name of the type. As this is generally unknown, we approximate that with -// reflection. -type flagValueWrapper struct { - inner goflag.Value - flagType string -} - -// We are just copying the boolFlag interface out of goflag as that is what -// they use to decide if a flag should get "true" when no arg is given. -type goBoolFlag interface { - goflag.Value - IsBoolFlag() bool -} - -func wrapFlagValue(v goflag.Value) Value { - // If the flag.Value happens to also be a pflag.Value, just use it directly. - if pv, ok := v.(Value); ok { - return pv - } - - pv := &flagValueWrapper{ - inner: v, - } - - t := reflect.TypeOf(v) - if t.Kind() == reflect.Interface || t.Kind() == reflect.Ptr { - t = t.Elem() - } - - pv.flagType = strings.TrimSuffix(t.Name(), "Value") - return pv -} - -func (v *flagValueWrapper) String() string { - return v.inner.String() -} - -func (v *flagValueWrapper) Set(s string) error { - return v.inner.Set(s) -} - -func (v *flagValueWrapper) Type() string { - return v.flagType -} - -// PFlagFromGoFlag will return a *pflag.Flag given a *flag.Flag -// If the *flag.Flag.Name was a single character (ex: `v`) it will be accessiblei -// with both `-v` and `--v` in flags. If the golang flag was more than a single -// character (ex: `verbose`) it will only be accessible via `--verbose` -func PFlagFromGoFlag(goflag *goflag.Flag) *Flag { - // Remember the default value as a string; it won't change. - flag := &Flag{ - Name: goflag.Name, - Usage: goflag.Usage, - Value: wrapFlagValue(goflag.Value), - // Looks like golang flags don't set DefValue correctly :-( - //DefValue: goflag.DefValue, - DefValue: goflag.Value.String(), - } - // Ex: if the golang flag was -v, allow both -v and --v to work - if len(flag.Name) == 1 { - flag.Shorthand = flag.Name - } - if fv, ok := goflag.Value.(goBoolFlag); ok && fv.IsBoolFlag() { - flag.NoOptDefVal = "true" - } - return flag -} - -// AddGoFlag will add the given *flag.Flag to the pflag.FlagSet -func (f *FlagSet) AddGoFlag(goflag *goflag.Flag) { - if f.Lookup(goflag.Name) != nil { - return - } - newflag := PFlagFromGoFlag(goflag) - f.AddFlag(newflag) -} - -// AddGoFlagSet will add the given *flag.FlagSet to the pflag.FlagSet -func (f *FlagSet) AddGoFlagSet(newSet *goflag.FlagSet) { - if newSet == nil { - return - } - newSet.VisitAll(func(goflag *goflag.Flag) { - f.AddGoFlag(goflag) - }) - if f.addedGoFlagSets == nil { - f.addedGoFlagSets = make([]*goflag.FlagSet, 0) - } - f.addedGoFlagSets = append(f.addedGoFlagSets, newSet) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int.go deleted file mode 100644 index 1474b89df66..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int.go +++ /dev/null @@ -1,84 +0,0 @@ -package pflag - -import "strconv" - -// -- int Value -type intValue int - -func newIntValue(val int, p *int) *intValue { - *p = val - return (*intValue)(p) -} - -func (i *intValue) Set(s string) error { - v, err := strconv.ParseInt(s, 0, 64) - *i = intValue(v) - return err -} - -func (i *intValue) Type() string { - return "int" -} - -func (i *intValue) String() string { return strconv.Itoa(int(*i)) } - -func intConv(sval string) (interface{}, error) { - return strconv.Atoi(sval) -} - -// GetInt return the int value of a flag with the given name -func (f *FlagSet) GetInt(name string) (int, error) { - val, err := f.getFlagType(name, "int", intConv) - if err != nil { - return 0, err - } - return val.(int), nil -} - -// IntVar defines an int flag with specified name, default value, and usage string. -// The argument p points to an int variable in which to store the value of the flag. -func (f *FlagSet) IntVar(p *int, name string, value int, usage string) { - f.VarP(newIntValue(value, p), name, "", usage) -} - -// IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IntVarP(p *int, name, shorthand string, value int, usage string) { - f.VarP(newIntValue(value, p), name, shorthand, usage) -} - -// IntVar defines an int flag with specified name, default value, and usage string. -// The argument p points to an int variable in which to store the value of the flag. -func IntVar(p *int, name string, value int, usage string) { - CommandLine.VarP(newIntValue(value, p), name, "", usage) -} - -// IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash. -func IntVarP(p *int, name, shorthand string, value int, usage string) { - CommandLine.VarP(newIntValue(value, p), name, shorthand, usage) -} - -// Int defines an int flag with specified name, default value, and usage string. -// The return value is the address of an int variable that stores the value of the flag. -func (f *FlagSet) Int(name string, value int, usage string) *int { - p := new(int) - f.IntVarP(p, name, "", value, usage) - return p -} - -// IntP is like Int, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IntP(name, shorthand string, value int, usage string) *int { - p := new(int) - f.IntVarP(p, name, shorthand, value, usage) - return p -} - -// Int defines an int flag with specified name, default value, and usage string. -// The return value is the address of an int variable that stores the value of the flag. -func Int(name string, value int, usage string) *int { - return CommandLine.IntP(name, "", value, usage) -} - -// IntP is like Int, but accepts a shorthand letter that can be used after a single dash. -func IntP(name, shorthand string, value int, usage string) *int { - return CommandLine.IntP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int16.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int16.go deleted file mode 100644 index f1a01d05e69..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int16.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- int16 Value -type int16Value int16 - -func newInt16Value(val int16, p *int16) *int16Value { - *p = val - return (*int16Value)(p) -} - -func (i *int16Value) Set(s string) error { - v, err := strconv.ParseInt(s, 0, 16) - *i = int16Value(v) - return err -} - -func (i *int16Value) Type() string { - return "int16" -} - -func (i *int16Value) String() string { return strconv.FormatInt(int64(*i), 10) } - -func int16Conv(sval string) (interface{}, error) { - v, err := strconv.ParseInt(sval, 0, 16) - if err != nil { - return 0, err - } - return int16(v), nil -} - -// GetInt16 returns the int16 value of a flag with the given name -func (f *FlagSet) GetInt16(name string) (int16, error) { - val, err := f.getFlagType(name, "int16", int16Conv) - if err != nil { - return 0, err - } - return val.(int16), nil -} - -// Int16Var defines an int16 flag with specified name, default value, and usage string. -// The argument p points to an int16 variable in which to store the value of the flag. -func (f *FlagSet) Int16Var(p *int16, name string, value int16, usage string) { - f.VarP(newInt16Value(value, p), name, "", usage) -} - -// Int16VarP is like Int16Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Int16VarP(p *int16, name, shorthand string, value int16, usage string) { - f.VarP(newInt16Value(value, p), name, shorthand, usage) -} - -// Int16Var defines an int16 flag with specified name, default value, and usage string. -// The argument p points to an int16 variable in which to store the value of the flag. -func Int16Var(p *int16, name string, value int16, usage string) { - CommandLine.VarP(newInt16Value(value, p), name, "", usage) -} - -// Int16VarP is like Int16Var, but accepts a shorthand letter that can be used after a single dash. -func Int16VarP(p *int16, name, shorthand string, value int16, usage string) { - CommandLine.VarP(newInt16Value(value, p), name, shorthand, usage) -} - -// Int16 defines an int16 flag with specified name, default value, and usage string. -// The return value is the address of an int16 variable that stores the value of the flag. -func (f *FlagSet) Int16(name string, value int16, usage string) *int16 { - p := new(int16) - f.Int16VarP(p, name, "", value, usage) - return p -} - -// Int16P is like Int16, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Int16P(name, shorthand string, value int16, usage string) *int16 { - p := new(int16) - f.Int16VarP(p, name, shorthand, value, usage) - return p -} - -// Int16 defines an int16 flag with specified name, default value, and usage string. -// The return value is the address of an int16 variable that stores the value of the flag. -func Int16(name string, value int16, usage string) *int16 { - return CommandLine.Int16P(name, "", value, usage) -} - -// Int16P is like Int16, but accepts a shorthand letter that can be used after a single dash. -func Int16P(name, shorthand string, value int16, usage string) *int16 { - return CommandLine.Int16P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int32.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int32.go deleted file mode 100644 index 9b95944f0fe..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int32.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- int32 Value -type int32Value int32 - -func newInt32Value(val int32, p *int32) *int32Value { - *p = val - return (*int32Value)(p) -} - -func (i *int32Value) Set(s string) error { - v, err := strconv.ParseInt(s, 0, 32) - *i = int32Value(v) - return err -} - -func (i *int32Value) Type() string { - return "int32" -} - -func (i *int32Value) String() string { return strconv.FormatInt(int64(*i), 10) } - -func int32Conv(sval string) (interface{}, error) { - v, err := strconv.ParseInt(sval, 0, 32) - if err != nil { - return 0, err - } - return int32(v), nil -} - -// GetInt32 return the int32 value of a flag with the given name -func (f *FlagSet) GetInt32(name string) (int32, error) { - val, err := f.getFlagType(name, "int32", int32Conv) - if err != nil { - return 0, err - } - return val.(int32), nil -} - -// Int32Var defines an int32 flag with specified name, default value, and usage string. -// The argument p points to an int32 variable in which to store the value of the flag. -func (f *FlagSet) Int32Var(p *int32, name string, value int32, usage string) { - f.VarP(newInt32Value(value, p), name, "", usage) -} - -// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Int32VarP(p *int32, name, shorthand string, value int32, usage string) { - f.VarP(newInt32Value(value, p), name, shorthand, usage) -} - -// Int32Var defines an int32 flag with specified name, default value, and usage string. -// The argument p points to an int32 variable in which to store the value of the flag. -func Int32Var(p *int32, name string, value int32, usage string) { - CommandLine.VarP(newInt32Value(value, p), name, "", usage) -} - -// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash. -func Int32VarP(p *int32, name, shorthand string, value int32, usage string) { - CommandLine.VarP(newInt32Value(value, p), name, shorthand, usage) -} - -// Int32 defines an int32 flag with specified name, default value, and usage string. -// The return value is the address of an int32 variable that stores the value of the flag. -func (f *FlagSet) Int32(name string, value int32, usage string) *int32 { - p := new(int32) - f.Int32VarP(p, name, "", value, usage) - return p -} - -// Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Int32P(name, shorthand string, value int32, usage string) *int32 { - p := new(int32) - f.Int32VarP(p, name, shorthand, value, usage) - return p -} - -// Int32 defines an int32 flag with specified name, default value, and usage string. -// The return value is the address of an int32 variable that stores the value of the flag. -func Int32(name string, value int32, usage string) *int32 { - return CommandLine.Int32P(name, "", value, usage) -} - -// Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash. -func Int32P(name, shorthand string, value int32, usage string) *int32 { - return CommandLine.Int32P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int64.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int64.go deleted file mode 100644 index 0026d781d9f..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int64.go +++ /dev/null @@ -1,84 +0,0 @@ -package pflag - -import "strconv" - -// -- int64 Value -type int64Value int64 - -func newInt64Value(val int64, p *int64) *int64Value { - *p = val - return (*int64Value)(p) -} - -func (i *int64Value) Set(s string) error { - v, err := strconv.ParseInt(s, 0, 64) - *i = int64Value(v) - return err -} - -func (i *int64Value) Type() string { - return "int64" -} - -func (i *int64Value) String() string { return strconv.FormatInt(int64(*i), 10) } - -func int64Conv(sval string) (interface{}, error) { - return strconv.ParseInt(sval, 0, 64) -} - -// GetInt64 return the int64 value of a flag with the given name -func (f *FlagSet) GetInt64(name string) (int64, error) { - val, err := f.getFlagType(name, "int64", int64Conv) - if err != nil { - return 0, err - } - return val.(int64), nil -} - -// Int64Var defines an int64 flag with specified name, default value, and usage string. -// The argument p points to an int64 variable in which to store the value of the flag. -func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string) { - f.VarP(newInt64Value(value, p), name, "", usage) -} - -// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Int64VarP(p *int64, name, shorthand string, value int64, usage string) { - f.VarP(newInt64Value(value, p), name, shorthand, usage) -} - -// Int64Var defines an int64 flag with specified name, default value, and usage string. -// The argument p points to an int64 variable in which to store the value of the flag. -func Int64Var(p *int64, name string, value int64, usage string) { - CommandLine.VarP(newInt64Value(value, p), name, "", usage) -} - -// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash. -func Int64VarP(p *int64, name, shorthand string, value int64, usage string) { - CommandLine.VarP(newInt64Value(value, p), name, shorthand, usage) -} - -// Int64 defines an int64 flag with specified name, default value, and usage string. -// The return value is the address of an int64 variable that stores the value of the flag. -func (f *FlagSet) Int64(name string, value int64, usage string) *int64 { - p := new(int64) - f.Int64VarP(p, name, "", value, usage) - return p -} - -// Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Int64P(name, shorthand string, value int64, usage string) *int64 { - p := new(int64) - f.Int64VarP(p, name, shorthand, value, usage) - return p -} - -// Int64 defines an int64 flag with specified name, default value, and usage string. -// The return value is the address of an int64 variable that stores the value of the flag. -func Int64(name string, value int64, usage string) *int64 { - return CommandLine.Int64P(name, "", value, usage) -} - -// Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash. -func Int64P(name, shorthand string, value int64, usage string) *int64 { - return CommandLine.Int64P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int8.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int8.go deleted file mode 100644 index 4da92228e63..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int8.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- int8 Value -type int8Value int8 - -func newInt8Value(val int8, p *int8) *int8Value { - *p = val - return (*int8Value)(p) -} - -func (i *int8Value) Set(s string) error { - v, err := strconv.ParseInt(s, 0, 8) - *i = int8Value(v) - return err -} - -func (i *int8Value) Type() string { - return "int8" -} - -func (i *int8Value) String() string { return strconv.FormatInt(int64(*i), 10) } - -func int8Conv(sval string) (interface{}, error) { - v, err := strconv.ParseInt(sval, 0, 8) - if err != nil { - return 0, err - } - return int8(v), nil -} - -// GetInt8 return the int8 value of a flag with the given name -func (f *FlagSet) GetInt8(name string) (int8, error) { - val, err := f.getFlagType(name, "int8", int8Conv) - if err != nil { - return 0, err - } - return val.(int8), nil -} - -// Int8Var defines an int8 flag with specified name, default value, and usage string. -// The argument p points to an int8 variable in which to store the value of the flag. -func (f *FlagSet) Int8Var(p *int8, name string, value int8, usage string) { - f.VarP(newInt8Value(value, p), name, "", usage) -} - -// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Int8VarP(p *int8, name, shorthand string, value int8, usage string) { - f.VarP(newInt8Value(value, p), name, shorthand, usage) -} - -// Int8Var defines an int8 flag with specified name, default value, and usage string. -// The argument p points to an int8 variable in which to store the value of the flag. -func Int8Var(p *int8, name string, value int8, usage string) { - CommandLine.VarP(newInt8Value(value, p), name, "", usage) -} - -// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash. -func Int8VarP(p *int8, name, shorthand string, value int8, usage string) { - CommandLine.VarP(newInt8Value(value, p), name, shorthand, usage) -} - -// Int8 defines an int8 flag with specified name, default value, and usage string. -// The return value is the address of an int8 variable that stores the value of the flag. -func (f *FlagSet) Int8(name string, value int8, usage string) *int8 { - p := new(int8) - f.Int8VarP(p, name, "", value, usage) - return p -} - -// Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Int8P(name, shorthand string, value int8, usage string) *int8 { - p := new(int8) - f.Int8VarP(p, name, shorthand, value, usage) - return p -} - -// Int8 defines an int8 flag with specified name, default value, and usage string. -// The return value is the address of an int8 variable that stores the value of the flag. -func Int8(name string, value int8, usage string) *int8 { - return CommandLine.Int8P(name, "", value, usage) -} - -// Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash. -func Int8P(name, shorthand string, value int8, usage string) *int8 { - return CommandLine.Int8P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int_slice.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int_slice.go deleted file mode 100644 index 1e7c9edde95..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/int_slice.go +++ /dev/null @@ -1,128 +0,0 @@ -package pflag - -import ( - "fmt" - "strconv" - "strings" -) - -// -- intSlice Value -type intSliceValue struct { - value *[]int - changed bool -} - -func newIntSliceValue(val []int, p *[]int) *intSliceValue { - isv := new(intSliceValue) - isv.value = p - *isv.value = val - return isv -} - -func (s *intSliceValue) Set(val string) error { - ss := strings.Split(val, ",") - out := make([]int, len(ss)) - for i, d := range ss { - var err error - out[i], err = strconv.Atoi(d) - if err != nil { - return err - } - - } - if !s.changed { - *s.value = out - } else { - *s.value = append(*s.value, out...) - } - s.changed = true - return nil -} - -func (s *intSliceValue) Type() string { - return "intSlice" -} - -func (s *intSliceValue) String() string { - out := make([]string, len(*s.value)) - for i, d := range *s.value { - out[i] = fmt.Sprintf("%d", d) - } - return "[" + strings.Join(out, ",") + "]" -} - -func intSliceConv(val string) (interface{}, error) { - val = strings.Trim(val, "[]") - // Empty string would cause a slice with one (empty) entry - if len(val) == 0 { - return []int{}, nil - } - ss := strings.Split(val, ",") - out := make([]int, len(ss)) - for i, d := range ss { - var err error - out[i], err = strconv.Atoi(d) - if err != nil { - return nil, err - } - - } - return out, nil -} - -// GetIntSlice return the []int value of a flag with the given name -func (f *FlagSet) GetIntSlice(name string) ([]int, error) { - val, err := f.getFlagType(name, "intSlice", intSliceConv) - if err != nil { - return []int{}, err - } - return val.([]int), nil -} - -// IntSliceVar defines a intSlice flag with specified name, default value, and usage string. -// The argument p points to a []int variable in which to store the value of the flag. -func (f *FlagSet) IntSliceVar(p *[]int, name string, value []int, usage string) { - f.VarP(newIntSliceValue(value, p), name, "", usage) -} - -// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) { - f.VarP(newIntSliceValue(value, p), name, shorthand, usage) -} - -// IntSliceVar defines a int[] flag with specified name, default value, and usage string. -// The argument p points to a int[] variable in which to store the value of the flag. -func IntSliceVar(p *[]int, name string, value []int, usage string) { - CommandLine.VarP(newIntSliceValue(value, p), name, "", usage) -} - -// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash. -func IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) { - CommandLine.VarP(newIntSliceValue(value, p), name, shorthand, usage) -} - -// IntSlice defines a []int flag with specified name, default value, and usage string. -// The return value is the address of a []int variable that stores the value of the flag. -func (f *FlagSet) IntSlice(name string, value []int, usage string) *[]int { - p := []int{} - f.IntSliceVarP(&p, name, "", value, usage) - return &p -} - -// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IntSliceP(name, shorthand string, value []int, usage string) *[]int { - p := []int{} - f.IntSliceVarP(&p, name, shorthand, value, usage) - return &p -} - -// IntSlice defines a []int flag with specified name, default value, and usage string. -// The return value is the address of a []int variable that stores the value of the flag. -func IntSlice(name string, value []int, usage string) *[]int { - return CommandLine.IntSliceP(name, "", value, usage) -} - -// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash. -func IntSliceP(name, shorthand string, value []int, usage string) *[]int { - return CommandLine.IntSliceP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ip.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ip.go deleted file mode 100644 index 3d414ba69fe..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ip.go +++ /dev/null @@ -1,94 +0,0 @@ -package pflag - -import ( - "fmt" - "net" - "strings" -) - -// -- net.IP value -type ipValue net.IP - -func newIPValue(val net.IP, p *net.IP) *ipValue { - *p = val - return (*ipValue)(p) -} - -func (i *ipValue) String() string { return net.IP(*i).String() } -func (i *ipValue) Set(s string) error { - ip := net.ParseIP(strings.TrimSpace(s)) - if ip == nil { - return fmt.Errorf("failed to parse IP: %q", s) - } - *i = ipValue(ip) - return nil -} - -func (i *ipValue) Type() string { - return "ip" -} - -func ipConv(sval string) (interface{}, error) { - ip := net.ParseIP(sval) - if ip != nil { - return ip, nil - } - return nil, fmt.Errorf("invalid string being converted to IP address: %s", sval) -} - -// GetIP return the net.IP value of a flag with the given name -func (f *FlagSet) GetIP(name string) (net.IP, error) { - val, err := f.getFlagType(name, "ip", ipConv) - if err != nil { - return nil, err - } - return val.(net.IP), nil -} - -// IPVar defines an net.IP flag with specified name, default value, and usage string. -// The argument p points to an net.IP variable in which to store the value of the flag. -func (f *FlagSet) IPVar(p *net.IP, name string, value net.IP, usage string) { - f.VarP(newIPValue(value, p), name, "", usage) -} - -// IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) { - f.VarP(newIPValue(value, p), name, shorthand, usage) -} - -// IPVar defines an net.IP flag with specified name, default value, and usage string. -// The argument p points to an net.IP variable in which to store the value of the flag. -func IPVar(p *net.IP, name string, value net.IP, usage string) { - CommandLine.VarP(newIPValue(value, p), name, "", usage) -} - -// IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash. -func IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) { - CommandLine.VarP(newIPValue(value, p), name, shorthand, usage) -} - -// IP defines an net.IP flag with specified name, default value, and usage string. -// The return value is the address of an net.IP variable that stores the value of the flag. -func (f *FlagSet) IP(name string, value net.IP, usage string) *net.IP { - p := new(net.IP) - f.IPVarP(p, name, "", value, usage) - return p -} - -// IPP is like IP, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IPP(name, shorthand string, value net.IP, usage string) *net.IP { - p := new(net.IP) - f.IPVarP(p, name, shorthand, value, usage) - return p -} - -// IP defines an net.IP flag with specified name, default value, and usage string. -// The return value is the address of an net.IP variable that stores the value of the flag. -func IP(name string, value net.IP, usage string) *net.IP { - return CommandLine.IPP(name, "", value, usage) -} - -// IPP is like IP, but accepts a shorthand letter that can be used after a single dash. -func IPP(name, shorthand string, value net.IP, usage string) *net.IP { - return CommandLine.IPP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ip_slice.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ip_slice.go deleted file mode 100644 index 7dd196fe3fb..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ip_slice.go +++ /dev/null @@ -1,148 +0,0 @@ -package pflag - -import ( - "fmt" - "io" - "net" - "strings" -) - -// -- ipSlice Value -type ipSliceValue struct { - value *[]net.IP - changed bool -} - -func newIPSliceValue(val []net.IP, p *[]net.IP) *ipSliceValue { - ipsv := new(ipSliceValue) - ipsv.value = p - *ipsv.value = val - return ipsv -} - -// Set converts, and assigns, the comma-separated IP argument string representation as the []net.IP value of this flag. -// If Set is called on a flag that already has a []net.IP assigned, the newly converted values will be appended. -func (s *ipSliceValue) Set(val string) error { - - // remove all quote characters - rmQuote := strings.NewReplacer(`"`, "", `'`, "", "`", "") - - // read flag arguments with CSV parser - ipStrSlice, err := readAsCSV(rmQuote.Replace(val)) - if err != nil && err != io.EOF { - return err - } - - // parse ip values into slice - out := make([]net.IP, 0, len(ipStrSlice)) - for _, ipStr := range ipStrSlice { - ip := net.ParseIP(strings.TrimSpace(ipStr)) - if ip == nil { - return fmt.Errorf("invalid string being converted to IP address: %s", ipStr) - } - out = append(out, ip) - } - - if !s.changed { - *s.value = out - } else { - *s.value = append(*s.value, out...) - } - - s.changed = true - - return nil -} - -// Type returns a string that uniquely represents this flag's type. -func (s *ipSliceValue) Type() string { - return "ipSlice" -} - -// String defines a "native" format for this net.IP slice flag value. -func (s *ipSliceValue) String() string { - - ipStrSlice := make([]string, len(*s.value)) - for i, ip := range *s.value { - ipStrSlice[i] = ip.String() - } - - out, _ := writeAsCSV(ipStrSlice) - - return "[" + out + "]" -} - -func ipSliceConv(val string) (interface{}, error) { - val = strings.Trim(val, "[]") - // Emtpy string would cause a slice with one (empty) entry - if len(val) == 0 { - return []net.IP{}, nil - } - ss := strings.Split(val, ",") - out := make([]net.IP, len(ss)) - for i, sval := range ss { - ip := net.ParseIP(strings.TrimSpace(sval)) - if ip == nil { - return nil, fmt.Errorf("invalid string being converted to IP address: %s", sval) - } - out[i] = ip - } - return out, nil -} - -// GetIPSlice returns the []net.IP value of a flag with the given name -func (f *FlagSet) GetIPSlice(name string) ([]net.IP, error) { - val, err := f.getFlagType(name, "ipSlice", ipSliceConv) - if err != nil { - return []net.IP{}, err - } - return val.([]net.IP), nil -} - -// IPSliceVar defines a ipSlice flag with specified name, default value, and usage string. -// The argument p points to a []net.IP variable in which to store the value of the flag. -func (f *FlagSet) IPSliceVar(p *[]net.IP, name string, value []net.IP, usage string) { - f.VarP(newIPSliceValue(value, p), name, "", usage) -} - -// IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IPSliceVarP(p *[]net.IP, name, shorthand string, value []net.IP, usage string) { - f.VarP(newIPSliceValue(value, p), name, shorthand, usage) -} - -// IPSliceVar defines a []net.IP flag with specified name, default value, and usage string. -// The argument p points to a []net.IP variable in which to store the value of the flag. -func IPSliceVar(p *[]net.IP, name string, value []net.IP, usage string) { - CommandLine.VarP(newIPSliceValue(value, p), name, "", usage) -} - -// IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash. -func IPSliceVarP(p *[]net.IP, name, shorthand string, value []net.IP, usage string) { - CommandLine.VarP(newIPSliceValue(value, p), name, shorthand, usage) -} - -// IPSlice defines a []net.IP flag with specified name, default value, and usage string. -// The return value is the address of a []net.IP variable that stores the value of that flag. -func (f *FlagSet) IPSlice(name string, value []net.IP, usage string) *[]net.IP { - p := []net.IP{} - f.IPSliceVarP(&p, name, "", value, usage) - return &p -} - -// IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IPSliceP(name, shorthand string, value []net.IP, usage string) *[]net.IP { - p := []net.IP{} - f.IPSliceVarP(&p, name, shorthand, value, usage) - return &p -} - -// IPSlice defines a []net.IP flag with specified name, default value, and usage string. -// The return value is the address of a []net.IP variable that stores the value of the flag. -func IPSlice(name string, value []net.IP, usage string) *[]net.IP { - return CommandLine.IPSliceP(name, "", value, usage) -} - -// IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash. -func IPSliceP(name, shorthand string, value []net.IP, usage string) *[]net.IP { - return CommandLine.IPSliceP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ipmask.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ipmask.go deleted file mode 100644 index 5bd44bd21d2..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ipmask.go +++ /dev/null @@ -1,122 +0,0 @@ -package pflag - -import ( - "fmt" - "net" - "strconv" -) - -// -- net.IPMask value -type ipMaskValue net.IPMask - -func newIPMaskValue(val net.IPMask, p *net.IPMask) *ipMaskValue { - *p = val - return (*ipMaskValue)(p) -} - -func (i *ipMaskValue) String() string { return net.IPMask(*i).String() } -func (i *ipMaskValue) Set(s string) error { - ip := ParseIPv4Mask(s) - if ip == nil { - return fmt.Errorf("failed to parse IP mask: %q", s) - } - *i = ipMaskValue(ip) - return nil -} - -func (i *ipMaskValue) Type() string { - return "ipMask" -} - -// ParseIPv4Mask written in IP form (e.g. 255.255.255.0). -// This function should really belong to the net package. -func ParseIPv4Mask(s string) net.IPMask { - mask := net.ParseIP(s) - if mask == nil { - if len(s) != 8 { - return nil - } - // net.IPMask.String() actually outputs things like ffffff00 - // so write a horrible parser for that as well :-( - m := []int{} - for i := 0; i < 4; i++ { - b := "0x" + s[2*i:2*i+2] - d, err := strconv.ParseInt(b, 0, 0) - if err != nil { - return nil - } - m = append(m, int(d)) - } - s := fmt.Sprintf("%d.%d.%d.%d", m[0], m[1], m[2], m[3]) - mask = net.ParseIP(s) - if mask == nil { - return nil - } - } - return net.IPv4Mask(mask[12], mask[13], mask[14], mask[15]) -} - -func parseIPv4Mask(sval string) (interface{}, error) { - mask := ParseIPv4Mask(sval) - if mask == nil { - return nil, fmt.Errorf("unable to parse %s as net.IPMask", sval) - } - return mask, nil -} - -// GetIPv4Mask return the net.IPv4Mask value of a flag with the given name -func (f *FlagSet) GetIPv4Mask(name string) (net.IPMask, error) { - val, err := f.getFlagType(name, "ipMask", parseIPv4Mask) - if err != nil { - return nil, err - } - return val.(net.IPMask), nil -} - -// IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string. -// The argument p points to an net.IPMask variable in which to store the value of the flag. -func (f *FlagSet) IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) { - f.VarP(newIPMaskValue(value, p), name, "", usage) -} - -// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage string) { - f.VarP(newIPMaskValue(value, p), name, shorthand, usage) -} - -// IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string. -// The argument p points to an net.IPMask variable in which to store the value of the flag. -func IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) { - CommandLine.VarP(newIPMaskValue(value, p), name, "", usage) -} - -// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash. -func IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage string) { - CommandLine.VarP(newIPMaskValue(value, p), name, shorthand, usage) -} - -// IPMask defines an net.IPMask flag with specified name, default value, and usage string. -// The return value is the address of an net.IPMask variable that stores the value of the flag. -func (f *FlagSet) IPMask(name string, value net.IPMask, usage string) *net.IPMask { - p := new(net.IPMask) - f.IPMaskVarP(p, name, "", value, usage) - return p -} - -// IPMaskP is like IPMask, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IPMaskP(name, shorthand string, value net.IPMask, usage string) *net.IPMask { - p := new(net.IPMask) - f.IPMaskVarP(p, name, shorthand, value, usage) - return p -} - -// IPMask defines an net.IPMask flag with specified name, default value, and usage string. -// The return value is the address of an net.IPMask variable that stores the value of the flag. -func IPMask(name string, value net.IPMask, usage string) *net.IPMask { - return CommandLine.IPMaskP(name, "", value, usage) -} - -// IPMaskP is like IP, but accepts a shorthand letter that can be used after a single dash. -func IPMaskP(name, shorthand string, value net.IPMask, usage string) *net.IPMask { - return CommandLine.IPMaskP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ipnet.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ipnet.go deleted file mode 100644 index e2c1b8bcd53..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/ipnet.go +++ /dev/null @@ -1,98 +0,0 @@ -package pflag - -import ( - "fmt" - "net" - "strings" -) - -// IPNet adapts net.IPNet for use as a flag. -type ipNetValue net.IPNet - -func (ipnet ipNetValue) String() string { - n := net.IPNet(ipnet) - return n.String() -} - -func (ipnet *ipNetValue) Set(value string) error { - _, n, err := net.ParseCIDR(strings.TrimSpace(value)) - if err != nil { - return err - } - *ipnet = ipNetValue(*n) - return nil -} - -func (*ipNetValue) Type() string { - return "ipNet" -} - -func newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue { - *p = val - return (*ipNetValue)(p) -} - -func ipNetConv(sval string) (interface{}, error) { - _, n, err := net.ParseCIDR(strings.TrimSpace(sval)) - if err == nil { - return *n, nil - } - return nil, fmt.Errorf("invalid string being converted to IPNet: %s", sval) -} - -// GetIPNet return the net.IPNet value of a flag with the given name -func (f *FlagSet) GetIPNet(name string) (net.IPNet, error) { - val, err := f.getFlagType(name, "ipNet", ipNetConv) - if err != nil { - return net.IPNet{}, err - } - return val.(net.IPNet), nil -} - -// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string. -// The argument p points to an net.IPNet variable in which to store the value of the flag. -func (f *FlagSet) IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) { - f.VarP(newIPNetValue(value, p), name, "", usage) -} - -// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) { - f.VarP(newIPNetValue(value, p), name, shorthand, usage) -} - -// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string. -// The argument p points to an net.IPNet variable in which to store the value of the flag. -func IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) { - CommandLine.VarP(newIPNetValue(value, p), name, "", usage) -} - -// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash. -func IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) { - CommandLine.VarP(newIPNetValue(value, p), name, shorthand, usage) -} - -// IPNet defines an net.IPNet flag with specified name, default value, and usage string. -// The return value is the address of an net.IPNet variable that stores the value of the flag. -func (f *FlagSet) IPNet(name string, value net.IPNet, usage string) *net.IPNet { - p := new(net.IPNet) - f.IPNetVarP(p, name, "", value, usage) - return p -} - -// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet { - p := new(net.IPNet) - f.IPNetVarP(p, name, shorthand, value, usage) - return p -} - -// IPNet defines an net.IPNet flag with specified name, default value, and usage string. -// The return value is the address of an net.IPNet variable that stores the value of the flag. -func IPNet(name string, value net.IPNet, usage string) *net.IPNet { - return CommandLine.IPNetP(name, "", value, usage) -} - -// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash. -func IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet { - return CommandLine.IPNetP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string.go deleted file mode 100644 index 04e0a26ff7f..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string.go +++ /dev/null @@ -1,80 +0,0 @@ -package pflag - -// -- string Value -type stringValue string - -func newStringValue(val string, p *string) *stringValue { - *p = val - return (*stringValue)(p) -} - -func (s *stringValue) Set(val string) error { - *s = stringValue(val) - return nil -} -func (s *stringValue) Type() string { - return "string" -} - -func (s *stringValue) String() string { return string(*s) } - -func stringConv(sval string) (interface{}, error) { - return sval, nil -} - -// GetString return the string value of a flag with the given name -func (f *FlagSet) GetString(name string) (string, error) { - val, err := f.getFlagType(name, "string", stringConv) - if err != nil { - return "", err - } - return val.(string), nil -} - -// StringVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a string variable in which to store the value of the flag. -func (f *FlagSet) StringVar(p *string, name string, value string, usage string) { - f.VarP(newStringValue(value, p), name, "", usage) -} - -// StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringVarP(p *string, name, shorthand string, value string, usage string) { - f.VarP(newStringValue(value, p), name, shorthand, usage) -} - -// StringVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a string variable in which to store the value of the flag. -func StringVar(p *string, name string, value string, usage string) { - CommandLine.VarP(newStringValue(value, p), name, "", usage) -} - -// StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash. -func StringVarP(p *string, name, shorthand string, value string, usage string) { - CommandLine.VarP(newStringValue(value, p), name, shorthand, usage) -} - -// String defines a string flag with specified name, default value, and usage string. -// The return value is the address of a string variable that stores the value of the flag. -func (f *FlagSet) String(name string, value string, usage string) *string { - p := new(string) - f.StringVarP(p, name, "", value, usage) - return p -} - -// StringP is like String, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringP(name, shorthand string, value string, usage string) *string { - p := new(string) - f.StringVarP(p, name, shorthand, value, usage) - return p -} - -// String defines a string flag with specified name, default value, and usage string. -// The return value is the address of a string variable that stores the value of the flag. -func String(name string, value string, usage string) *string { - return CommandLine.StringP(name, "", value, usage) -} - -// StringP is like String, but accepts a shorthand letter that can be used after a single dash. -func StringP(name, shorthand string, value string, usage string) *string { - return CommandLine.StringP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_array.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_array.go deleted file mode 100644 index fa7bc60187a..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_array.go +++ /dev/null @@ -1,103 +0,0 @@ -package pflag - -// -- stringArray Value -type stringArrayValue struct { - value *[]string - changed bool -} - -func newStringArrayValue(val []string, p *[]string) *stringArrayValue { - ssv := new(stringArrayValue) - ssv.value = p - *ssv.value = val - return ssv -} - -func (s *stringArrayValue) Set(val string) error { - if !s.changed { - *s.value = []string{val} - s.changed = true - } else { - *s.value = append(*s.value, val) - } - return nil -} - -func (s *stringArrayValue) Type() string { - return "stringArray" -} - -func (s *stringArrayValue) String() string { - str, _ := writeAsCSV(*s.value) - return "[" + str + "]" -} - -func stringArrayConv(sval string) (interface{}, error) { - sval = sval[1 : len(sval)-1] - // An empty string would cause a array with one (empty) string - if len(sval) == 0 { - return []string{}, nil - } - return readAsCSV(sval) -} - -// GetStringArray return the []string value of a flag with the given name -func (f *FlagSet) GetStringArray(name string) ([]string, error) { - val, err := f.getFlagType(name, "stringArray", stringArrayConv) - if err != nil { - return []string{}, err - } - return val.([]string), nil -} - -// StringArrayVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a []string variable in which to store the values of the multiple flags. -// The value of each argument will not try to be separated by comma. Use a StringSlice for that. -func (f *FlagSet) StringArrayVar(p *[]string, name string, value []string, usage string) { - f.VarP(newStringArrayValue(value, p), name, "", usage) -} - -// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringArrayVarP(p *[]string, name, shorthand string, value []string, usage string) { - f.VarP(newStringArrayValue(value, p), name, shorthand, usage) -} - -// StringArrayVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a []string variable in which to store the value of the flag. -// The value of each argument will not try to be separated by comma. Use a StringSlice for that. -func StringArrayVar(p *[]string, name string, value []string, usage string) { - CommandLine.VarP(newStringArrayValue(value, p), name, "", usage) -} - -// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash. -func StringArrayVarP(p *[]string, name, shorthand string, value []string, usage string) { - CommandLine.VarP(newStringArrayValue(value, p), name, shorthand, usage) -} - -// StringArray defines a string flag with specified name, default value, and usage string. -// The return value is the address of a []string variable that stores the value of the flag. -// The value of each argument will not try to be separated by comma. Use a StringSlice for that. -func (f *FlagSet) StringArray(name string, value []string, usage string) *[]string { - p := []string{} - f.StringArrayVarP(&p, name, "", value, usage) - return &p -} - -// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringArrayP(name, shorthand string, value []string, usage string) *[]string { - p := []string{} - f.StringArrayVarP(&p, name, shorthand, value, usage) - return &p -} - -// StringArray defines a string flag with specified name, default value, and usage string. -// The return value is the address of a []string variable that stores the value of the flag. -// The value of each argument will not try to be separated by comma. Use a StringSlice for that. -func StringArray(name string, value []string, usage string) *[]string { - return CommandLine.StringArrayP(name, "", value, usage) -} - -// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash. -func StringArrayP(name, shorthand string, value []string, usage string) *[]string { - return CommandLine.StringArrayP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_slice.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_slice.go deleted file mode 100644 index 0cd3ccc083e..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_slice.go +++ /dev/null @@ -1,149 +0,0 @@ -package pflag - -import ( - "bytes" - "encoding/csv" - "strings" -) - -// -- stringSlice Value -type stringSliceValue struct { - value *[]string - changed bool -} - -func newStringSliceValue(val []string, p *[]string) *stringSliceValue { - ssv := new(stringSliceValue) - ssv.value = p - *ssv.value = val - return ssv -} - -func readAsCSV(val string) ([]string, error) { - if val == "" { - return []string{}, nil - } - stringReader := strings.NewReader(val) - csvReader := csv.NewReader(stringReader) - return csvReader.Read() -} - -func writeAsCSV(vals []string) (string, error) { - b := &bytes.Buffer{} - w := csv.NewWriter(b) - err := w.Write(vals) - if err != nil { - return "", err - } - w.Flush() - return strings.TrimSuffix(b.String(), "\n"), nil -} - -func (s *stringSliceValue) Set(val string) error { - v, err := readAsCSV(val) - if err != nil { - return err - } - if !s.changed { - *s.value = v - } else { - *s.value = append(*s.value, v...) - } - s.changed = true - return nil -} - -func (s *stringSliceValue) Type() string { - return "stringSlice" -} - -func (s *stringSliceValue) String() string { - str, _ := writeAsCSV(*s.value) - return "[" + str + "]" -} - -func stringSliceConv(sval string) (interface{}, error) { - sval = sval[1 : len(sval)-1] - // An empty string would cause a slice with one (empty) string - if len(sval) == 0 { - return []string{}, nil - } - return readAsCSV(sval) -} - -// GetStringSlice return the []string value of a flag with the given name -func (f *FlagSet) GetStringSlice(name string) ([]string, error) { - val, err := f.getFlagType(name, "stringSlice", stringSliceConv) - if err != nil { - return []string{}, err - } - return val.([]string), nil -} - -// StringSliceVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a []string variable in which to store the value of the flag. -// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. -// For example: -// --ss="v1,v2" -ss="v3" -// will result in -// []string{"v1", "v2", "v3"} -func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) { - f.VarP(newStringSliceValue(value, p), name, "", usage) -} - -// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) { - f.VarP(newStringSliceValue(value, p), name, shorthand, usage) -} - -// StringSliceVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a []string variable in which to store the value of the flag. -// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. -// For example: -// --ss="v1,v2" -ss="v3" -// will result in -// []string{"v1", "v2", "v3"} -func StringSliceVar(p *[]string, name string, value []string, usage string) { - CommandLine.VarP(newStringSliceValue(value, p), name, "", usage) -} - -// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash. -func StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) { - CommandLine.VarP(newStringSliceValue(value, p), name, shorthand, usage) -} - -// StringSlice defines a string flag with specified name, default value, and usage string. -// The return value is the address of a []string variable that stores the value of the flag. -// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. -// For example: -// --ss="v1,v2" -ss="v3" -// will result in -// []string{"v1", "v2", "v3"} -func (f *FlagSet) StringSlice(name string, value []string, usage string) *[]string { - p := []string{} - f.StringSliceVarP(&p, name, "", value, usage) - return &p -} - -// StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage string) *[]string { - p := []string{} - f.StringSliceVarP(&p, name, shorthand, value, usage) - return &p -} - -// StringSlice defines a string flag with specified name, default value, and usage string. -// The return value is the address of a []string variable that stores the value of the flag. -// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. -// For example: -// --ss="v1,v2" -ss="v3" -// will result in -// []string{"v1", "v2", "v3"} -func StringSlice(name string, value []string, usage string) *[]string { - return CommandLine.StringSliceP(name, "", value, usage) -} - -// StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash. -func StringSliceP(name, shorthand string, value []string, usage string) *[]string { - return CommandLine.StringSliceP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_to_int.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_to_int.go deleted file mode 100644 index 5ceda3965df..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_to_int.go +++ /dev/null @@ -1,149 +0,0 @@ -package pflag - -import ( - "bytes" - "fmt" - "strconv" - "strings" -) - -// -- stringToInt Value -type stringToIntValue struct { - value *map[string]int - changed bool -} - -func newStringToIntValue(val map[string]int, p *map[string]int) *stringToIntValue { - ssv := new(stringToIntValue) - ssv.value = p - *ssv.value = val - return ssv -} - -// Format: a=1,b=2 -func (s *stringToIntValue) Set(val string) error { - ss := strings.Split(val, ",") - out := make(map[string]int, len(ss)) - for _, pair := range ss { - kv := strings.SplitN(pair, "=", 2) - if len(kv) != 2 { - return fmt.Errorf("%s must be formatted as key=value", pair) - } - var err error - out[kv[0]], err = strconv.Atoi(kv[1]) - if err != nil { - return err - } - } - if !s.changed { - *s.value = out - } else { - for k, v := range out { - (*s.value)[k] = v - } - } - s.changed = true - return nil -} - -func (s *stringToIntValue) Type() string { - return "stringToInt" -} - -func (s *stringToIntValue) String() string { - var buf bytes.Buffer - i := 0 - for k, v := range *s.value { - if i > 0 { - buf.WriteRune(',') - } - buf.WriteString(k) - buf.WriteRune('=') - buf.WriteString(strconv.Itoa(v)) - i++ - } - return "[" + buf.String() + "]" -} - -func stringToIntConv(val string) (interface{}, error) { - val = strings.Trim(val, "[]") - // An empty string would cause an empty map - if len(val) == 0 { - return map[string]int{}, nil - } - ss := strings.Split(val, ",") - out := make(map[string]int, len(ss)) - for _, pair := range ss { - kv := strings.SplitN(pair, "=", 2) - if len(kv) != 2 { - return nil, fmt.Errorf("%s must be formatted as key=value", pair) - } - var err error - out[kv[0]], err = strconv.Atoi(kv[1]) - if err != nil { - return nil, err - } - } - return out, nil -} - -// GetStringToInt return the map[string]int value of a flag with the given name -func (f *FlagSet) GetStringToInt(name string) (map[string]int, error) { - val, err := f.getFlagType(name, "stringToInt", stringToIntConv) - if err != nil { - return map[string]int{}, err - } - return val.(map[string]int), nil -} - -// StringToIntVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a map[string]int variable in which to store the values of the multiple flags. -// The value of each argument will not try to be separated by comma -func (f *FlagSet) StringToIntVar(p *map[string]int, name string, value map[string]int, usage string) { - f.VarP(newStringToIntValue(value, p), name, "", usage) -} - -// StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringToIntVarP(p *map[string]int, name, shorthand string, value map[string]int, usage string) { - f.VarP(newStringToIntValue(value, p), name, shorthand, usage) -} - -// StringToIntVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a map[string]int variable in which to store the value of the flag. -// The value of each argument will not try to be separated by comma -func StringToIntVar(p *map[string]int, name string, value map[string]int, usage string) { - CommandLine.VarP(newStringToIntValue(value, p), name, "", usage) -} - -// StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash. -func StringToIntVarP(p *map[string]int, name, shorthand string, value map[string]int, usage string) { - CommandLine.VarP(newStringToIntValue(value, p), name, shorthand, usage) -} - -// StringToInt defines a string flag with specified name, default value, and usage string. -// The return value is the address of a map[string]int variable that stores the value of the flag. -// The value of each argument will not try to be separated by comma -func (f *FlagSet) StringToInt(name string, value map[string]int, usage string) *map[string]int { - p := map[string]int{} - f.StringToIntVarP(&p, name, "", value, usage) - return &p -} - -// StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringToIntP(name, shorthand string, value map[string]int, usage string) *map[string]int { - p := map[string]int{} - f.StringToIntVarP(&p, name, shorthand, value, usage) - return &p -} - -// StringToInt defines a string flag with specified name, default value, and usage string. -// The return value is the address of a map[string]int variable that stores the value of the flag. -// The value of each argument will not try to be separated by comma -func StringToInt(name string, value map[string]int, usage string) *map[string]int { - return CommandLine.StringToIntP(name, "", value, usage) -} - -// StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash. -func StringToIntP(name, shorthand string, value map[string]int, usage string) *map[string]int { - return CommandLine.StringToIntP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_to_string.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_to_string.go deleted file mode 100644 index 890a01afc03..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/string_to_string.go +++ /dev/null @@ -1,160 +0,0 @@ -package pflag - -import ( - "bytes" - "encoding/csv" - "fmt" - "strings" -) - -// -- stringToString Value -type stringToStringValue struct { - value *map[string]string - changed bool -} - -func newStringToStringValue(val map[string]string, p *map[string]string) *stringToStringValue { - ssv := new(stringToStringValue) - ssv.value = p - *ssv.value = val - return ssv -} - -// Format: a=1,b=2 -func (s *stringToStringValue) Set(val string) error { - var ss []string - n := strings.Count(val, "=") - switch n { - case 0: - return fmt.Errorf("%s must be formatted as key=value", val) - case 1: - ss = append(ss, strings.Trim(val, `"`)) - default: - r := csv.NewReader(strings.NewReader(val)) - var err error - ss, err = r.Read() - if err != nil { - return err - } - } - - out := make(map[string]string, len(ss)) - for _, pair := range ss { - kv := strings.SplitN(pair, "=", 2) - if len(kv) != 2 { - return fmt.Errorf("%s must be formatted as key=value", pair) - } - out[kv[0]] = kv[1] - } - if !s.changed { - *s.value = out - } else { - for k, v := range out { - (*s.value)[k] = v - } - } - s.changed = true - return nil -} - -func (s *stringToStringValue) Type() string { - return "stringToString" -} - -func (s *stringToStringValue) String() string { - records := make([]string, 0, len(*s.value)>>1) - for k, v := range *s.value { - records = append(records, k+"="+v) - } - - var buf bytes.Buffer - w := csv.NewWriter(&buf) - if err := w.Write(records); err != nil { - panic(err) - } - w.Flush() - return "[" + strings.TrimSpace(buf.String()) + "]" -} - -func stringToStringConv(val string) (interface{}, error) { - val = strings.Trim(val, "[]") - // An empty string would cause an empty map - if len(val) == 0 { - return map[string]string{}, nil - } - r := csv.NewReader(strings.NewReader(val)) - ss, err := r.Read() - if err != nil { - return nil, err - } - out := make(map[string]string, len(ss)) - for _, pair := range ss { - kv := strings.SplitN(pair, "=", 2) - if len(kv) != 2 { - return nil, fmt.Errorf("%s must be formatted as key=value", pair) - } - out[kv[0]] = kv[1] - } - return out, nil -} - -// GetStringToString return the map[string]string value of a flag with the given name -func (f *FlagSet) GetStringToString(name string) (map[string]string, error) { - val, err := f.getFlagType(name, "stringToString", stringToStringConv) - if err != nil { - return map[string]string{}, err - } - return val.(map[string]string), nil -} - -// StringToStringVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a map[string]string variable in which to store the values of the multiple flags. -// The value of each argument will not try to be separated by comma -func (f *FlagSet) StringToStringVar(p *map[string]string, name string, value map[string]string, usage string) { - f.VarP(newStringToStringValue(value, p), name, "", usage) -} - -// StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringToStringVarP(p *map[string]string, name, shorthand string, value map[string]string, usage string) { - f.VarP(newStringToStringValue(value, p), name, shorthand, usage) -} - -// StringToStringVar defines a string flag with specified name, default value, and usage string. -// The argument p points to a map[string]string variable in which to store the value of the flag. -// The value of each argument will not try to be separated by comma -func StringToStringVar(p *map[string]string, name string, value map[string]string, usage string) { - CommandLine.VarP(newStringToStringValue(value, p), name, "", usage) -} - -// StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash. -func StringToStringVarP(p *map[string]string, name, shorthand string, value map[string]string, usage string) { - CommandLine.VarP(newStringToStringValue(value, p), name, shorthand, usage) -} - -// StringToString defines a string flag with specified name, default value, and usage string. -// The return value is the address of a map[string]string variable that stores the value of the flag. -// The value of each argument will not try to be separated by comma -func (f *FlagSet) StringToString(name string, value map[string]string, usage string) *map[string]string { - p := map[string]string{} - f.StringToStringVarP(&p, name, "", value, usage) - return &p -} - -// StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) StringToStringP(name, shorthand string, value map[string]string, usage string) *map[string]string { - p := map[string]string{} - f.StringToStringVarP(&p, name, shorthand, value, usage) - return &p -} - -// StringToString defines a string flag with specified name, default value, and usage string. -// The return value is the address of a map[string]string variable that stores the value of the flag. -// The value of each argument will not try to be separated by comma -func StringToString(name string, value map[string]string, usage string) *map[string]string { - return CommandLine.StringToStringP(name, "", value, usage) -} - -// StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash. -func StringToStringP(name, shorthand string, value map[string]string, usage string) *map[string]string { - return CommandLine.StringToStringP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint.go deleted file mode 100644 index dcbc2b758c3..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- uint Value -type uintValue uint - -func newUintValue(val uint, p *uint) *uintValue { - *p = val - return (*uintValue)(p) -} - -func (i *uintValue) Set(s string) error { - v, err := strconv.ParseUint(s, 0, 64) - *i = uintValue(v) - return err -} - -func (i *uintValue) Type() string { - return "uint" -} - -func (i *uintValue) String() string { return strconv.FormatUint(uint64(*i), 10) } - -func uintConv(sval string) (interface{}, error) { - v, err := strconv.ParseUint(sval, 0, 0) - if err != nil { - return 0, err - } - return uint(v), nil -} - -// GetUint return the uint value of a flag with the given name -func (f *FlagSet) GetUint(name string) (uint, error) { - val, err := f.getFlagType(name, "uint", uintConv) - if err != nil { - return 0, err - } - return val.(uint), nil -} - -// UintVar defines a uint flag with specified name, default value, and usage string. -// The argument p points to a uint variable in which to store the value of the flag. -func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string) { - f.VarP(newUintValue(value, p), name, "", usage) -} - -// UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) UintVarP(p *uint, name, shorthand string, value uint, usage string) { - f.VarP(newUintValue(value, p), name, shorthand, usage) -} - -// UintVar defines a uint flag with specified name, default value, and usage string. -// The argument p points to a uint variable in which to store the value of the flag. -func UintVar(p *uint, name string, value uint, usage string) { - CommandLine.VarP(newUintValue(value, p), name, "", usage) -} - -// UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash. -func UintVarP(p *uint, name, shorthand string, value uint, usage string) { - CommandLine.VarP(newUintValue(value, p), name, shorthand, usage) -} - -// Uint defines a uint flag with specified name, default value, and usage string. -// The return value is the address of a uint variable that stores the value of the flag. -func (f *FlagSet) Uint(name string, value uint, usage string) *uint { - p := new(uint) - f.UintVarP(p, name, "", value, usage) - return p -} - -// UintP is like Uint, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) UintP(name, shorthand string, value uint, usage string) *uint { - p := new(uint) - f.UintVarP(p, name, shorthand, value, usage) - return p -} - -// Uint defines a uint flag with specified name, default value, and usage string. -// The return value is the address of a uint variable that stores the value of the flag. -func Uint(name string, value uint, usage string) *uint { - return CommandLine.UintP(name, "", value, usage) -} - -// UintP is like Uint, but accepts a shorthand letter that can be used after a single dash. -func UintP(name, shorthand string, value uint, usage string) *uint { - return CommandLine.UintP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint16.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint16.go deleted file mode 100644 index 7e9914eddde..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint16.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- uint16 value -type uint16Value uint16 - -func newUint16Value(val uint16, p *uint16) *uint16Value { - *p = val - return (*uint16Value)(p) -} - -func (i *uint16Value) Set(s string) error { - v, err := strconv.ParseUint(s, 0, 16) - *i = uint16Value(v) - return err -} - -func (i *uint16Value) Type() string { - return "uint16" -} - -func (i *uint16Value) String() string { return strconv.FormatUint(uint64(*i), 10) } - -func uint16Conv(sval string) (interface{}, error) { - v, err := strconv.ParseUint(sval, 0, 16) - if err != nil { - return 0, err - } - return uint16(v), nil -} - -// GetUint16 return the uint16 value of a flag with the given name -func (f *FlagSet) GetUint16(name string) (uint16, error) { - val, err := f.getFlagType(name, "uint16", uint16Conv) - if err != nil { - return 0, err - } - return val.(uint16), nil -} - -// Uint16Var defines a uint flag with specified name, default value, and usage string. -// The argument p points to a uint variable in which to store the value of the flag. -func (f *FlagSet) Uint16Var(p *uint16, name string, value uint16, usage string) { - f.VarP(newUint16Value(value, p), name, "", usage) -} - -// Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) { - f.VarP(newUint16Value(value, p), name, shorthand, usage) -} - -// Uint16Var defines a uint flag with specified name, default value, and usage string. -// The argument p points to a uint variable in which to store the value of the flag. -func Uint16Var(p *uint16, name string, value uint16, usage string) { - CommandLine.VarP(newUint16Value(value, p), name, "", usage) -} - -// Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash. -func Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) { - CommandLine.VarP(newUint16Value(value, p), name, shorthand, usage) -} - -// Uint16 defines a uint flag with specified name, default value, and usage string. -// The return value is the address of a uint variable that stores the value of the flag. -func (f *FlagSet) Uint16(name string, value uint16, usage string) *uint16 { - p := new(uint16) - f.Uint16VarP(p, name, "", value, usage) - return p -} - -// Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Uint16P(name, shorthand string, value uint16, usage string) *uint16 { - p := new(uint16) - f.Uint16VarP(p, name, shorthand, value, usage) - return p -} - -// Uint16 defines a uint flag with specified name, default value, and usage string. -// The return value is the address of a uint variable that stores the value of the flag. -func Uint16(name string, value uint16, usage string) *uint16 { - return CommandLine.Uint16P(name, "", value, usage) -} - -// Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash. -func Uint16P(name, shorthand string, value uint16, usage string) *uint16 { - return CommandLine.Uint16P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint32.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint32.go deleted file mode 100644 index d8024539bf6..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint32.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- uint32 value -type uint32Value uint32 - -func newUint32Value(val uint32, p *uint32) *uint32Value { - *p = val - return (*uint32Value)(p) -} - -func (i *uint32Value) Set(s string) error { - v, err := strconv.ParseUint(s, 0, 32) - *i = uint32Value(v) - return err -} - -func (i *uint32Value) Type() string { - return "uint32" -} - -func (i *uint32Value) String() string { return strconv.FormatUint(uint64(*i), 10) } - -func uint32Conv(sval string) (interface{}, error) { - v, err := strconv.ParseUint(sval, 0, 32) - if err != nil { - return 0, err - } - return uint32(v), nil -} - -// GetUint32 return the uint32 value of a flag with the given name -func (f *FlagSet) GetUint32(name string) (uint32, error) { - val, err := f.getFlagType(name, "uint32", uint32Conv) - if err != nil { - return 0, err - } - return val.(uint32), nil -} - -// Uint32Var defines a uint32 flag with specified name, default value, and usage string. -// The argument p points to a uint32 variable in which to store the value of the flag. -func (f *FlagSet) Uint32Var(p *uint32, name string, value uint32, usage string) { - f.VarP(newUint32Value(value, p), name, "", usage) -} - -// Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) { - f.VarP(newUint32Value(value, p), name, shorthand, usage) -} - -// Uint32Var defines a uint32 flag with specified name, default value, and usage string. -// The argument p points to a uint32 variable in which to store the value of the flag. -func Uint32Var(p *uint32, name string, value uint32, usage string) { - CommandLine.VarP(newUint32Value(value, p), name, "", usage) -} - -// Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash. -func Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) { - CommandLine.VarP(newUint32Value(value, p), name, shorthand, usage) -} - -// Uint32 defines a uint32 flag with specified name, default value, and usage string. -// The return value is the address of a uint32 variable that stores the value of the flag. -func (f *FlagSet) Uint32(name string, value uint32, usage string) *uint32 { - p := new(uint32) - f.Uint32VarP(p, name, "", value, usage) - return p -} - -// Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Uint32P(name, shorthand string, value uint32, usage string) *uint32 { - p := new(uint32) - f.Uint32VarP(p, name, shorthand, value, usage) - return p -} - -// Uint32 defines a uint32 flag with specified name, default value, and usage string. -// The return value is the address of a uint32 variable that stores the value of the flag. -func Uint32(name string, value uint32, usage string) *uint32 { - return CommandLine.Uint32P(name, "", value, usage) -} - -// Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash. -func Uint32P(name, shorthand string, value uint32, usage string) *uint32 { - return CommandLine.Uint32P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint64.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint64.go deleted file mode 100644 index f62240f2cea..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint64.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- uint64 Value -type uint64Value uint64 - -func newUint64Value(val uint64, p *uint64) *uint64Value { - *p = val - return (*uint64Value)(p) -} - -func (i *uint64Value) Set(s string) error { - v, err := strconv.ParseUint(s, 0, 64) - *i = uint64Value(v) - return err -} - -func (i *uint64Value) Type() string { - return "uint64" -} - -func (i *uint64Value) String() string { return strconv.FormatUint(uint64(*i), 10) } - -func uint64Conv(sval string) (interface{}, error) { - v, err := strconv.ParseUint(sval, 0, 64) - if err != nil { - return 0, err - } - return uint64(v), nil -} - -// GetUint64 return the uint64 value of a flag with the given name -func (f *FlagSet) GetUint64(name string) (uint64, error) { - val, err := f.getFlagType(name, "uint64", uint64Conv) - if err != nil { - return 0, err - } - return val.(uint64), nil -} - -// Uint64Var defines a uint64 flag with specified name, default value, and usage string. -// The argument p points to a uint64 variable in which to store the value of the flag. -func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string) { - f.VarP(newUint64Value(value, p), name, "", usage) -} - -// Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) { - f.VarP(newUint64Value(value, p), name, shorthand, usage) -} - -// Uint64Var defines a uint64 flag with specified name, default value, and usage string. -// The argument p points to a uint64 variable in which to store the value of the flag. -func Uint64Var(p *uint64, name string, value uint64, usage string) { - CommandLine.VarP(newUint64Value(value, p), name, "", usage) -} - -// Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash. -func Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) { - CommandLine.VarP(newUint64Value(value, p), name, shorthand, usage) -} - -// Uint64 defines a uint64 flag with specified name, default value, and usage string. -// The return value is the address of a uint64 variable that stores the value of the flag. -func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64 { - p := new(uint64) - f.Uint64VarP(p, name, "", value, usage) - return p -} - -// Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Uint64P(name, shorthand string, value uint64, usage string) *uint64 { - p := new(uint64) - f.Uint64VarP(p, name, shorthand, value, usage) - return p -} - -// Uint64 defines a uint64 flag with specified name, default value, and usage string. -// The return value is the address of a uint64 variable that stores the value of the flag. -func Uint64(name string, value uint64, usage string) *uint64 { - return CommandLine.Uint64P(name, "", value, usage) -} - -// Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash. -func Uint64P(name, shorthand string, value uint64, usage string) *uint64 { - return CommandLine.Uint64P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint8.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint8.go deleted file mode 100644 index bb0e83c1f6d..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint8.go +++ /dev/null @@ -1,88 +0,0 @@ -package pflag - -import "strconv" - -// -- uint8 Value -type uint8Value uint8 - -func newUint8Value(val uint8, p *uint8) *uint8Value { - *p = val - return (*uint8Value)(p) -} - -func (i *uint8Value) Set(s string) error { - v, err := strconv.ParseUint(s, 0, 8) - *i = uint8Value(v) - return err -} - -func (i *uint8Value) Type() string { - return "uint8" -} - -func (i *uint8Value) String() string { return strconv.FormatUint(uint64(*i), 10) } - -func uint8Conv(sval string) (interface{}, error) { - v, err := strconv.ParseUint(sval, 0, 8) - if err != nil { - return 0, err - } - return uint8(v), nil -} - -// GetUint8 return the uint8 value of a flag with the given name -func (f *FlagSet) GetUint8(name string) (uint8, error) { - val, err := f.getFlagType(name, "uint8", uint8Conv) - if err != nil { - return 0, err - } - return val.(uint8), nil -} - -// Uint8Var defines a uint8 flag with specified name, default value, and usage string. -// The argument p points to a uint8 variable in which to store the value of the flag. -func (f *FlagSet) Uint8Var(p *uint8, name string, value uint8, usage string) { - f.VarP(newUint8Value(value, p), name, "", usage) -} - -// Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) { - f.VarP(newUint8Value(value, p), name, shorthand, usage) -} - -// Uint8Var defines a uint8 flag with specified name, default value, and usage string. -// The argument p points to a uint8 variable in which to store the value of the flag. -func Uint8Var(p *uint8, name string, value uint8, usage string) { - CommandLine.VarP(newUint8Value(value, p), name, "", usage) -} - -// Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash. -func Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) { - CommandLine.VarP(newUint8Value(value, p), name, shorthand, usage) -} - -// Uint8 defines a uint8 flag with specified name, default value, and usage string. -// The return value is the address of a uint8 variable that stores the value of the flag. -func (f *FlagSet) Uint8(name string, value uint8, usage string) *uint8 { - p := new(uint8) - f.Uint8VarP(p, name, "", value, usage) - return p -} - -// Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) Uint8P(name, shorthand string, value uint8, usage string) *uint8 { - p := new(uint8) - f.Uint8VarP(p, name, shorthand, value, usage) - return p -} - -// Uint8 defines a uint8 flag with specified name, default value, and usage string. -// The return value is the address of a uint8 variable that stores the value of the flag. -func Uint8(name string, value uint8, usage string) *uint8 { - return CommandLine.Uint8P(name, "", value, usage) -} - -// Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash. -func Uint8P(name, shorthand string, value uint8, usage string) *uint8 { - return CommandLine.Uint8P(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint_slice.go b/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint_slice.go deleted file mode 100644 index edd94c600af..00000000000 --- a/config-connector/tests/ccs-test/vendor/github.com/spf13/pflag/uint_slice.go +++ /dev/null @@ -1,126 +0,0 @@ -package pflag - -import ( - "fmt" - "strconv" - "strings" -) - -// -- uintSlice Value -type uintSliceValue struct { - value *[]uint - changed bool -} - -func newUintSliceValue(val []uint, p *[]uint) *uintSliceValue { - uisv := new(uintSliceValue) - uisv.value = p - *uisv.value = val - return uisv -} - -func (s *uintSliceValue) Set(val string) error { - ss := strings.Split(val, ",") - out := make([]uint, len(ss)) - for i, d := range ss { - u, err := strconv.ParseUint(d, 10, 0) - if err != nil { - return err - } - out[i] = uint(u) - } - if !s.changed { - *s.value = out - } else { - *s.value = append(*s.value, out...) - } - s.changed = true - return nil -} - -func (s *uintSliceValue) Type() string { - return "uintSlice" -} - -func (s *uintSliceValue) String() string { - out := make([]string, len(*s.value)) - for i, d := range *s.value { - out[i] = fmt.Sprintf("%d", d) - } - return "[" + strings.Join(out, ",") + "]" -} - -func uintSliceConv(val string) (interface{}, error) { - val = strings.Trim(val, "[]") - // Empty string would cause a slice with one (empty) entry - if len(val) == 0 { - return []uint{}, nil - } - ss := strings.Split(val, ",") - out := make([]uint, len(ss)) - for i, d := range ss { - u, err := strconv.ParseUint(d, 10, 0) - if err != nil { - return nil, err - } - out[i] = uint(u) - } - return out, nil -} - -// GetUintSlice returns the []uint value of a flag with the given name. -func (f *FlagSet) GetUintSlice(name string) ([]uint, error) { - val, err := f.getFlagType(name, "uintSlice", uintSliceConv) - if err != nil { - return []uint{}, err - } - return val.([]uint), nil -} - -// UintSliceVar defines a uintSlice flag with specified name, default value, and usage string. -// The argument p points to a []uint variable in which to store the value of the flag. -func (f *FlagSet) UintSliceVar(p *[]uint, name string, value []uint, usage string) { - f.VarP(newUintSliceValue(value, p), name, "", usage) -} - -// UintSliceVarP is like UintSliceVar, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) UintSliceVarP(p *[]uint, name, shorthand string, value []uint, usage string) { - f.VarP(newUintSliceValue(value, p), name, shorthand, usage) -} - -// UintSliceVar defines a uint[] flag with specified name, default value, and usage string. -// The argument p points to a uint[] variable in which to store the value of the flag. -func UintSliceVar(p *[]uint, name string, value []uint, usage string) { - CommandLine.VarP(newUintSliceValue(value, p), name, "", usage) -} - -// UintSliceVarP is like the UintSliceVar, but accepts a shorthand letter that can be used after a single dash. -func UintSliceVarP(p *[]uint, name, shorthand string, value []uint, usage string) { - CommandLine.VarP(newUintSliceValue(value, p), name, shorthand, usage) -} - -// UintSlice defines a []uint flag with specified name, default value, and usage string. -// The return value is the address of a []uint variable that stores the value of the flag. -func (f *FlagSet) UintSlice(name string, value []uint, usage string) *[]uint { - p := []uint{} - f.UintSliceVarP(&p, name, "", value, usage) - return &p -} - -// UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash. -func (f *FlagSet) UintSliceP(name, shorthand string, value []uint, usage string) *[]uint { - p := []uint{} - f.UintSliceVarP(&p, name, shorthand, value, usage) - return &p -} - -// UintSlice defines a []uint flag with specified name, default value, and usage string. -// The return value is the address of a []uint variable that stores the value of the flag. -func UintSlice(name string, value []uint, usage string) *[]uint { - return CommandLine.UintSliceP(name, "", value, usage) -} - -// UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash. -func UintSliceP(name, shorthand string, value []uint, usage string) *[]uint { - return CommandLine.UintSliceP(name, shorthand, value, usage) -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/.travis.yml b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/.travis.yml deleted file mode 100644 index 9f556934d8b..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: go - -go: - - 1.4 - - 1.5 - - 1.6 - - 1.7 - - 1.8 - - 1.9 - - tip - -go_import_path: gopkg.in/yaml.v2 diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/LICENSE b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/LICENSE deleted file mode 100644 index 8dada3edaf5..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - 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. diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/LICENSE.libyaml b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/LICENSE.libyaml deleted file mode 100644 index 8da58fbf6f8..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/LICENSE.libyaml +++ /dev/null @@ -1,31 +0,0 @@ -The following files were ported to Go from C files of libyaml, and thus -are still covered by their original copyright and license: - - apic.go - emitterc.go - parserc.go - readerc.go - scannerc.go - writerc.go - yamlh.go - yamlprivateh.go - -Copyright (c) 2006 Kirill Simonov - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/NOTICE b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/NOTICE deleted file mode 100644 index 866d74a7ad7..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/NOTICE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2011-2016 Canonical Ltd. - -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. diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/README.md b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/README.md deleted file mode 100644 index b50c6e87755..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# YAML support for the Go language - -Introduction ------------- - -The yaml package enables Go programs to comfortably encode and decode YAML -values. It was developed within [Canonical](https://www.canonical.com) as -part of the [juju](https://juju.ubuntu.com) project, and is based on a -pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML) -C library to parse and generate YAML data quickly and reliably. - -Compatibility -------------- - -The yaml package supports most of YAML 1.1 and 1.2, including support for -anchors, tags, map merging, etc. Multi-document unmarshalling is not yet -implemented, and base-60 floats from YAML 1.1 are purposefully not -supported since they're a poor design and are gone in YAML 1.2. - -Installation and usage ----------------------- - -The import path for the package is *gopkg.in/yaml.v2*. - -To install it, run: - - go get gopkg.in/yaml.v2 - -API documentation ------------------ - -If opened in a browser, the import path itself leads to the API documentation: - - * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2) - -API stability -------------- - -The package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in). - - -License -------- - -The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details. - - -Example -------- - -```Go -package main - -import ( - "fmt" - "log" - - "gopkg.in/yaml.v2" -) - -var data = ` -a: Easy! -b: - c: 2 - d: [3, 4] -` - -// Note: struct fields must be public in order for unmarshal to -// correctly populate the data. -type T struct { - A string - B struct { - RenamedC int `yaml:"c"` - D []int `yaml:",flow"` - } -} - -func main() { - t := T{} - - err := yaml.Unmarshal([]byte(data), &t) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- t:\n%v\n\n", t) - - d, err := yaml.Marshal(&t) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- t dump:\n%s\n\n", string(d)) - - m := make(map[interface{}]interface{}) - - err = yaml.Unmarshal([]byte(data), &m) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- m:\n%v\n\n", m) - - d, err = yaml.Marshal(&m) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- m dump:\n%s\n\n", string(d)) -} -``` - -This example will generate the following output: - -``` ---- t: -{Easy! {2 [3 4]}} - ---- t dump: -a: Easy! -b: - c: 2 - d: [3, 4] - - ---- m: -map[a:Easy! b:map[c:2 d:[3 4]]] - ---- m dump: -a: Easy! -b: - c: 2 - d: - - 3 - - 4 -``` - diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/apic.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/apic.go deleted file mode 100644 index 1f7e87e6727..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/apic.go +++ /dev/null @@ -1,739 +0,0 @@ -package yaml - -import ( - "io" -) - -func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) { - //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens)) - - // Check if we can move the queue at the beginning of the buffer. - if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) { - if parser.tokens_head != len(parser.tokens) { - copy(parser.tokens, parser.tokens[parser.tokens_head:]) - } - parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head] - parser.tokens_head = 0 - } - parser.tokens = append(parser.tokens, *token) - if pos < 0 { - return - } - copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:]) - parser.tokens[parser.tokens_head+pos] = *token -} - -// Create a new parser object. -func yaml_parser_initialize(parser *yaml_parser_t) bool { - *parser = yaml_parser_t{ - raw_buffer: make([]byte, 0, input_raw_buffer_size), - buffer: make([]byte, 0, input_buffer_size), - } - return true -} - -// Destroy a parser object. -func yaml_parser_delete(parser *yaml_parser_t) { - *parser = yaml_parser_t{} -} - -// String read handler. -func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { - if parser.input_pos == len(parser.input) { - return 0, io.EOF - } - n = copy(buffer, parser.input[parser.input_pos:]) - parser.input_pos += n - return n, nil -} - -// Reader read handler. -func yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { - return parser.input_reader.Read(buffer) -} - -// Set a string input. -func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) { - if parser.read_handler != nil { - panic("must set the input source only once") - } - parser.read_handler = yaml_string_read_handler - parser.input = input - parser.input_pos = 0 -} - -// Set a file input. -func yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) { - if parser.read_handler != nil { - panic("must set the input source only once") - } - parser.read_handler = yaml_reader_read_handler - parser.input_reader = r -} - -// Set the source encoding. -func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { - if parser.encoding != yaml_ANY_ENCODING { - panic("must set the encoding only once") - } - parser.encoding = encoding -} - -// Create a new emitter object. -func yaml_emitter_initialize(emitter *yaml_emitter_t) { - *emitter = yaml_emitter_t{ - buffer: make([]byte, output_buffer_size), - raw_buffer: make([]byte, 0, output_raw_buffer_size), - states: make([]yaml_emitter_state_t, 0, initial_stack_size), - events: make([]yaml_event_t, 0, initial_queue_size), - } -} - -// Destroy an emitter object. -func yaml_emitter_delete(emitter *yaml_emitter_t) { - *emitter = yaml_emitter_t{} -} - -// String write handler. -func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error { - *emitter.output_buffer = append(*emitter.output_buffer, buffer...) - return nil -} - -// yaml_writer_write_handler uses emitter.output_writer to write the -// emitted text. -func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error { - _, err := emitter.output_writer.Write(buffer) - return err -} - -// Set a string output. -func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) { - if emitter.write_handler != nil { - panic("must set the output target only once") - } - emitter.write_handler = yaml_string_write_handler - emitter.output_buffer = output_buffer -} - -// Set a file output. -func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) { - if emitter.write_handler != nil { - panic("must set the output target only once") - } - emitter.write_handler = yaml_writer_write_handler - emitter.output_writer = w -} - -// Set the output encoding. -func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) { - if emitter.encoding != yaml_ANY_ENCODING { - panic("must set the output encoding only once") - } - emitter.encoding = encoding -} - -// Set the canonical output style. -func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) { - emitter.canonical = canonical -} - -//// Set the indentation increment. -func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) { - if indent < 2 || indent > 9 { - indent = 2 - } - emitter.best_indent = indent -} - -// Set the preferred line width. -func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) { - if width < 0 { - width = -1 - } - emitter.best_width = width -} - -// Set if unescaped non-ASCII characters are allowed. -func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) { - emitter.unicode = unicode -} - -// Set the preferred line break character. -func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) { - emitter.line_break = line_break -} - -///* -// * Destroy a token object. -// */ -// -//YAML_DECLARE(void) -//yaml_token_delete(yaml_token_t *token) -//{ -// assert(token); // Non-NULL token object expected. -// -// switch (token.type) -// { -// case YAML_TAG_DIRECTIVE_TOKEN: -// yaml_free(token.data.tag_directive.handle); -// yaml_free(token.data.tag_directive.prefix); -// break; -// -// case YAML_ALIAS_TOKEN: -// yaml_free(token.data.alias.value); -// break; -// -// case YAML_ANCHOR_TOKEN: -// yaml_free(token.data.anchor.value); -// break; -// -// case YAML_TAG_TOKEN: -// yaml_free(token.data.tag.handle); -// yaml_free(token.data.tag.suffix); -// break; -// -// case YAML_SCALAR_TOKEN: -// yaml_free(token.data.scalar.value); -// break; -// -// default: -// break; -// } -// -// memset(token, 0, sizeof(yaml_token_t)); -//} -// -///* -// * Check if a string is a valid UTF-8 sequence. -// * -// * Check 'reader.c' for more details on UTF-8 encoding. -// */ -// -//static int -//yaml_check_utf8(yaml_char_t *start, size_t length) -//{ -// yaml_char_t *end = start+length; -// yaml_char_t *pointer = start; -// -// while (pointer < end) { -// unsigned char octet; -// unsigned int width; -// unsigned int value; -// size_t k; -// -// octet = pointer[0]; -// width = (octet & 0x80) == 0x00 ? 1 : -// (octet & 0xE0) == 0xC0 ? 2 : -// (octet & 0xF0) == 0xE0 ? 3 : -// (octet & 0xF8) == 0xF0 ? 4 : 0; -// value = (octet & 0x80) == 0x00 ? octet & 0x7F : -// (octet & 0xE0) == 0xC0 ? octet & 0x1F : -// (octet & 0xF0) == 0xE0 ? octet & 0x0F : -// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0; -// if (!width) return 0; -// if (pointer+width > end) return 0; -// for (k = 1; k < width; k ++) { -// octet = pointer[k]; -// if ((octet & 0xC0) != 0x80) return 0; -// value = (value << 6) + (octet & 0x3F); -// } -// if (!((width == 1) || -// (width == 2 && value >= 0x80) || -// (width == 3 && value >= 0x800) || -// (width == 4 && value >= 0x10000))) return 0; -// -// pointer += width; -// } -// -// return 1; -//} -// - -// Create STREAM-START. -func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) { - *event = yaml_event_t{ - typ: yaml_STREAM_START_EVENT, - encoding: encoding, - } -} - -// Create STREAM-END. -func yaml_stream_end_event_initialize(event *yaml_event_t) { - *event = yaml_event_t{ - typ: yaml_STREAM_END_EVENT, - } -} - -// Create DOCUMENT-START. -func yaml_document_start_event_initialize( - event *yaml_event_t, - version_directive *yaml_version_directive_t, - tag_directives []yaml_tag_directive_t, - implicit bool, -) { - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - version_directive: version_directive, - tag_directives: tag_directives, - implicit: implicit, - } -} - -// Create DOCUMENT-END. -func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) { - *event = yaml_event_t{ - typ: yaml_DOCUMENT_END_EVENT, - implicit: implicit, - } -} - -///* -// * Create ALIAS. -// */ -// -//YAML_DECLARE(int) -//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t) -//{ -// mark yaml_mark_t = { 0, 0, 0 } -// anchor_copy *yaml_char_t = NULL -// -// assert(event) // Non-NULL event object is expected. -// assert(anchor) // Non-NULL anchor is expected. -// -// if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0 -// -// anchor_copy = yaml_strdup(anchor) -// if (!anchor_copy) -// return 0 -// -// ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark) -// -// return 1 -//} - -// Create SCALAR. -func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool { - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - anchor: anchor, - tag: tag, - value: value, - implicit: plain_implicit, - quoted_implicit: quoted_implicit, - style: yaml_style_t(style), - } - return true -} - -// Create SEQUENCE-START. -func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool { - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(style), - } - return true -} - -// Create SEQUENCE-END. -func yaml_sequence_end_event_initialize(event *yaml_event_t) bool { - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - } - return true -} - -// Create MAPPING-START. -func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) { - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(style), - } -} - -// Create MAPPING-END. -func yaml_mapping_end_event_initialize(event *yaml_event_t) { - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - } -} - -// Destroy an event object. -func yaml_event_delete(event *yaml_event_t) { - *event = yaml_event_t{} -} - -///* -// * Create a document object. -// */ -// -//YAML_DECLARE(int) -//yaml_document_initialize(document *yaml_document_t, -// version_directive *yaml_version_directive_t, -// tag_directives_start *yaml_tag_directive_t, -// tag_directives_end *yaml_tag_directive_t, -// start_implicit int, end_implicit int) -//{ -// struct { -// error yaml_error_type_t -// } context -// struct { -// start *yaml_node_t -// end *yaml_node_t -// top *yaml_node_t -// } nodes = { NULL, NULL, NULL } -// version_directive_copy *yaml_version_directive_t = NULL -// struct { -// start *yaml_tag_directive_t -// end *yaml_tag_directive_t -// top *yaml_tag_directive_t -// } tag_directives_copy = { NULL, NULL, NULL } -// value yaml_tag_directive_t = { NULL, NULL } -// mark yaml_mark_t = { 0, 0, 0 } -// -// assert(document) // Non-NULL document object is expected. -// assert((tag_directives_start && tag_directives_end) || -// (tag_directives_start == tag_directives_end)) -// // Valid tag directives are expected. -// -// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error -// -// if (version_directive) { -// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t)) -// if (!version_directive_copy) goto error -// version_directive_copy.major = version_directive.major -// version_directive_copy.minor = version_directive.minor -// } -// -// if (tag_directives_start != tag_directives_end) { -// tag_directive *yaml_tag_directive_t -// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE)) -// goto error -// for (tag_directive = tag_directives_start -// tag_directive != tag_directives_end; tag_directive ++) { -// assert(tag_directive.handle) -// assert(tag_directive.prefix) -// if (!yaml_check_utf8(tag_directive.handle, -// strlen((char *)tag_directive.handle))) -// goto error -// if (!yaml_check_utf8(tag_directive.prefix, -// strlen((char *)tag_directive.prefix))) -// goto error -// value.handle = yaml_strdup(tag_directive.handle) -// value.prefix = yaml_strdup(tag_directive.prefix) -// if (!value.handle || !value.prefix) goto error -// if (!PUSH(&context, tag_directives_copy, value)) -// goto error -// value.handle = NULL -// value.prefix = NULL -// } -// } -// -// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy, -// tag_directives_copy.start, tag_directives_copy.top, -// start_implicit, end_implicit, mark, mark) -// -// return 1 -// -//error: -// STACK_DEL(&context, nodes) -// yaml_free(version_directive_copy) -// while (!STACK_EMPTY(&context, tag_directives_copy)) { -// value yaml_tag_directive_t = POP(&context, tag_directives_copy) -// yaml_free(value.handle) -// yaml_free(value.prefix) -// } -// STACK_DEL(&context, tag_directives_copy) -// yaml_free(value.handle) -// yaml_free(value.prefix) -// -// return 0 -//} -// -///* -// * Destroy a document object. -// */ -// -//YAML_DECLARE(void) -//yaml_document_delete(document *yaml_document_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// tag_directive *yaml_tag_directive_t -// -// context.error = YAML_NO_ERROR // Eliminate a compiler warning. -// -// assert(document) // Non-NULL document object is expected. -// -// while (!STACK_EMPTY(&context, document.nodes)) { -// node yaml_node_t = POP(&context, document.nodes) -// yaml_free(node.tag) -// switch (node.type) { -// case YAML_SCALAR_NODE: -// yaml_free(node.data.scalar.value) -// break -// case YAML_SEQUENCE_NODE: -// STACK_DEL(&context, node.data.sequence.items) -// break -// case YAML_MAPPING_NODE: -// STACK_DEL(&context, node.data.mapping.pairs) -// break -// default: -// assert(0) // Should not happen. -// } -// } -// STACK_DEL(&context, document.nodes) -// -// yaml_free(document.version_directive) -// for (tag_directive = document.tag_directives.start -// tag_directive != document.tag_directives.end -// tag_directive++) { -// yaml_free(tag_directive.handle) -// yaml_free(tag_directive.prefix) -// } -// yaml_free(document.tag_directives.start) -// -// memset(document, 0, sizeof(yaml_document_t)) -//} -// -///** -// * Get a document node. -// */ -// -//YAML_DECLARE(yaml_node_t *) -//yaml_document_get_node(document *yaml_document_t, index int) -//{ -// assert(document) // Non-NULL document object is expected. -// -// if (index > 0 && document.nodes.start + index <= document.nodes.top) { -// return document.nodes.start + index - 1 -// } -// return NULL -//} -// -///** -// * Get the root object. -// */ -// -//YAML_DECLARE(yaml_node_t *) -//yaml_document_get_root_node(document *yaml_document_t) -//{ -// assert(document) // Non-NULL document object is expected. -// -// if (document.nodes.top != document.nodes.start) { -// return document.nodes.start -// } -// return NULL -//} -// -///* -// * Add a scalar node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_scalar(document *yaml_document_t, -// tag *yaml_char_t, value *yaml_char_t, length int, -// style yaml_scalar_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// value_copy *yaml_char_t = NULL -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// assert(value) // Non-NULL value is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (length < 0) { -// length = strlen((char *)value) -// } -// -// if (!yaml_check_utf8(value, length)) goto error -// value_copy = yaml_malloc(length+1) -// if (!value_copy) goto error -// memcpy(value_copy, value, length) -// value_copy[length] = '\0' -// -// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// yaml_free(tag_copy) -// yaml_free(value_copy) -// -// return 0 -//} -// -///* -// * Add a sequence node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_sequence(document *yaml_document_t, -// tag *yaml_char_t, style yaml_sequence_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// struct { -// start *yaml_node_item_t -// end *yaml_node_item_t -// top *yaml_node_item_t -// } items = { NULL, NULL, NULL } -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error -// -// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end, -// style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// STACK_DEL(&context, items) -// yaml_free(tag_copy) -// -// return 0 -//} -// -///* -// * Add a mapping node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_mapping(document *yaml_document_t, -// tag *yaml_char_t, style yaml_mapping_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// struct { -// start *yaml_node_pair_t -// end *yaml_node_pair_t -// top *yaml_node_pair_t -// } pairs = { NULL, NULL, NULL } -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error -// -// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end, -// style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// STACK_DEL(&context, pairs) -// yaml_free(tag_copy) -// -// return 0 -//} -// -///* -// * Append an item to a sequence node. -// */ -// -//YAML_DECLARE(int) -//yaml_document_append_sequence_item(document *yaml_document_t, -// sequence int, item int) -//{ -// struct { -// error yaml_error_type_t -// } context -// -// assert(document) // Non-NULL document is required. -// assert(sequence > 0 -// && document.nodes.start + sequence <= document.nodes.top) -// // Valid sequence id is required. -// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE) -// // A sequence node is required. -// assert(item > 0 && document.nodes.start + item <= document.nodes.top) -// // Valid item id is required. -// -// if (!PUSH(&context, -// document.nodes.start[sequence-1].data.sequence.items, item)) -// return 0 -// -// return 1 -//} -// -///* -// * Append a pair of a key and a value to a mapping node. -// */ -// -//YAML_DECLARE(int) -//yaml_document_append_mapping_pair(document *yaml_document_t, -// mapping int, key int, value int) -//{ -// struct { -// error yaml_error_type_t -// } context -// -// pair yaml_node_pair_t -// -// assert(document) // Non-NULL document is required. -// assert(mapping > 0 -// && document.nodes.start + mapping <= document.nodes.top) -// // Valid mapping id is required. -// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE) -// // A mapping node is required. -// assert(key > 0 && document.nodes.start + key <= document.nodes.top) -// // Valid key id is required. -// assert(value > 0 && document.nodes.start + value <= document.nodes.top) -// // Valid value id is required. -// -// pair.key = key -// pair.value = value -// -// if (!PUSH(&context, -// document.nodes.start[mapping-1].data.mapping.pairs, pair)) -// return 0 -// -// return 1 -//} -// -// diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/decode.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/decode.go deleted file mode 100644 index e4e56e28e0e..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/decode.go +++ /dev/null @@ -1,775 +0,0 @@ -package yaml - -import ( - "encoding" - "encoding/base64" - "fmt" - "io" - "math" - "reflect" - "strconv" - "time" -) - -const ( - documentNode = 1 << iota - mappingNode - sequenceNode - scalarNode - aliasNode -) - -type node struct { - kind int - line, column int - tag string - // For an alias node, alias holds the resolved alias. - alias *node - value string - implicit bool - children []*node - anchors map[string]*node -} - -// ---------------------------------------------------------------------------- -// Parser, produces a node tree out of a libyaml event stream. - -type parser struct { - parser yaml_parser_t - event yaml_event_t - doc *node - doneInit bool -} - -func newParser(b []byte) *parser { - p := parser{} - if !yaml_parser_initialize(&p.parser) { - panic("failed to initialize YAML emitter") - } - if len(b) == 0 { - b = []byte{'\n'} - } - yaml_parser_set_input_string(&p.parser, b) - return &p -} - -func newParserFromReader(r io.Reader) *parser { - p := parser{} - if !yaml_parser_initialize(&p.parser) { - panic("failed to initialize YAML emitter") - } - yaml_parser_set_input_reader(&p.parser, r) - return &p -} - -func (p *parser) init() { - if p.doneInit { - return - } - p.expect(yaml_STREAM_START_EVENT) - p.doneInit = true -} - -func (p *parser) destroy() { - if p.event.typ != yaml_NO_EVENT { - yaml_event_delete(&p.event) - } - yaml_parser_delete(&p.parser) -} - -// expect consumes an event from the event stream and -// checks that it's of the expected type. -func (p *parser) expect(e yaml_event_type_t) { - if p.event.typ == yaml_NO_EVENT { - if !yaml_parser_parse(&p.parser, &p.event) { - p.fail() - } - } - if p.event.typ == yaml_STREAM_END_EVENT { - failf("attempted to go past the end of stream; corrupted value?") - } - if p.event.typ != e { - p.parser.problem = fmt.Sprintf("expected %s event but got %s", e, p.event.typ) - p.fail() - } - yaml_event_delete(&p.event) - p.event.typ = yaml_NO_EVENT -} - -// peek peeks at the next event in the event stream, -// puts the results into p.event and returns the event type. -func (p *parser) peek() yaml_event_type_t { - if p.event.typ != yaml_NO_EVENT { - return p.event.typ - } - if !yaml_parser_parse(&p.parser, &p.event) { - p.fail() - } - return p.event.typ -} - -func (p *parser) fail() { - var where string - var line int - if p.parser.problem_mark.line != 0 { - line = p.parser.problem_mark.line - // Scanner errors don't iterate line before returning error - if p.parser.error == yaml_SCANNER_ERROR { - line++ - } - } else if p.parser.context_mark.line != 0 { - line = p.parser.context_mark.line - } - if line != 0 { - where = "line " + strconv.Itoa(line) + ": " - } - var msg string - if len(p.parser.problem) > 0 { - msg = p.parser.problem - } else { - msg = "unknown problem parsing YAML content" - } - failf("%s%s", where, msg) -} - -func (p *parser) anchor(n *node, anchor []byte) { - if anchor != nil { - p.doc.anchors[string(anchor)] = n - } -} - -func (p *parser) parse() *node { - p.init() - switch p.peek() { - case yaml_SCALAR_EVENT: - return p.scalar() - case yaml_ALIAS_EVENT: - return p.alias() - case yaml_MAPPING_START_EVENT: - return p.mapping() - case yaml_SEQUENCE_START_EVENT: - return p.sequence() - case yaml_DOCUMENT_START_EVENT: - return p.document() - case yaml_STREAM_END_EVENT: - // Happens when attempting to decode an empty buffer. - return nil - default: - panic("attempted to parse unknown event: " + p.event.typ.String()) - } -} - -func (p *parser) node(kind int) *node { - return &node{ - kind: kind, - line: p.event.start_mark.line, - column: p.event.start_mark.column, - } -} - -func (p *parser) document() *node { - n := p.node(documentNode) - n.anchors = make(map[string]*node) - p.doc = n - p.expect(yaml_DOCUMENT_START_EVENT) - n.children = append(n.children, p.parse()) - p.expect(yaml_DOCUMENT_END_EVENT) - return n -} - -func (p *parser) alias() *node { - n := p.node(aliasNode) - n.value = string(p.event.anchor) - n.alias = p.doc.anchors[n.value] - if n.alias == nil { - failf("unknown anchor '%s' referenced", n.value) - } - p.expect(yaml_ALIAS_EVENT) - return n -} - -func (p *parser) scalar() *node { - n := p.node(scalarNode) - n.value = string(p.event.value) - n.tag = string(p.event.tag) - n.implicit = p.event.implicit - p.anchor(n, p.event.anchor) - p.expect(yaml_SCALAR_EVENT) - return n -} - -func (p *parser) sequence() *node { - n := p.node(sequenceNode) - p.anchor(n, p.event.anchor) - p.expect(yaml_SEQUENCE_START_EVENT) - for p.peek() != yaml_SEQUENCE_END_EVENT { - n.children = append(n.children, p.parse()) - } - p.expect(yaml_SEQUENCE_END_EVENT) - return n -} - -func (p *parser) mapping() *node { - n := p.node(mappingNode) - p.anchor(n, p.event.anchor) - p.expect(yaml_MAPPING_START_EVENT) - for p.peek() != yaml_MAPPING_END_EVENT { - n.children = append(n.children, p.parse(), p.parse()) - } - p.expect(yaml_MAPPING_END_EVENT) - return n -} - -// ---------------------------------------------------------------------------- -// Decoder, unmarshals a node into a provided value. - -type decoder struct { - doc *node - aliases map[*node]bool - mapType reflect.Type - terrors []string - strict bool -} - -var ( - mapItemType = reflect.TypeOf(MapItem{}) - durationType = reflect.TypeOf(time.Duration(0)) - defaultMapType = reflect.TypeOf(map[interface{}]interface{}{}) - ifaceType = defaultMapType.Elem() - timeType = reflect.TypeOf(time.Time{}) - ptrTimeType = reflect.TypeOf(&time.Time{}) -) - -func newDecoder(strict bool) *decoder { - d := &decoder{mapType: defaultMapType, strict: strict} - d.aliases = make(map[*node]bool) - return d -} - -func (d *decoder) terror(n *node, tag string, out reflect.Value) { - if n.tag != "" { - tag = n.tag - } - value := n.value - if tag != yaml_SEQ_TAG && tag != yaml_MAP_TAG { - if len(value) > 10 { - value = " `" + value[:7] + "...`" - } else { - value = " `" + value + "`" - } - } - d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.line+1, shortTag(tag), value, out.Type())) -} - -func (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) { - terrlen := len(d.terrors) - err := u.UnmarshalYAML(func(v interface{}) (err error) { - defer handleErr(&err) - d.unmarshal(n, reflect.ValueOf(v)) - if len(d.terrors) > terrlen { - issues := d.terrors[terrlen:] - d.terrors = d.terrors[:terrlen] - return &TypeError{issues} - } - return nil - }) - if e, ok := err.(*TypeError); ok { - d.terrors = append(d.terrors, e.Errors...) - return false - } - if err != nil { - fail(err) - } - return true -} - -// d.prepare initializes and dereferences pointers and calls UnmarshalYAML -// if a value is found to implement it. -// It returns the initialized and dereferenced out value, whether -// unmarshalling was already done by UnmarshalYAML, and if so whether -// its types unmarshalled appropriately. -// -// If n holds a null value, prepare returns before doing anything. -func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { - if n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == "" && (n.value == "null" || n.value == "~" || n.value == "" && n.implicit) { - return out, false, false - } - again := true - for again { - again = false - if out.Kind() == reflect.Ptr { - if out.IsNil() { - out.Set(reflect.New(out.Type().Elem())) - } - out = out.Elem() - again = true - } - if out.CanAddr() { - if u, ok := out.Addr().Interface().(Unmarshaler); ok { - good = d.callUnmarshaler(n, u) - return out, true, good - } - } - } - return out, false, false -} - -func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) { - switch n.kind { - case documentNode: - return d.document(n, out) - case aliasNode: - return d.alias(n, out) - } - out, unmarshaled, good := d.prepare(n, out) - if unmarshaled { - return good - } - switch n.kind { - case scalarNode: - good = d.scalar(n, out) - case mappingNode: - good = d.mapping(n, out) - case sequenceNode: - good = d.sequence(n, out) - default: - panic("internal error: unknown node kind: " + strconv.Itoa(n.kind)) - } - return good -} - -func (d *decoder) document(n *node, out reflect.Value) (good bool) { - if len(n.children) == 1 { - d.doc = n - d.unmarshal(n.children[0], out) - return true - } - return false -} - -func (d *decoder) alias(n *node, out reflect.Value) (good bool) { - if d.aliases[n] { - // TODO this could actually be allowed in some circumstances. - failf("anchor '%s' value contains itself", n.value) - } - d.aliases[n] = true - good = d.unmarshal(n.alias, out) - delete(d.aliases, n) - return good -} - -var zeroValue reflect.Value - -func resetMap(out reflect.Value) { - for _, k := range out.MapKeys() { - out.SetMapIndex(k, zeroValue) - } -} - -func (d *decoder) scalar(n *node, out reflect.Value) bool { - var tag string - var resolved interface{} - if n.tag == "" && !n.implicit { - tag = yaml_STR_TAG - resolved = n.value - } else { - tag, resolved = resolve(n.tag, n.value) - if tag == yaml_BINARY_TAG { - data, err := base64.StdEncoding.DecodeString(resolved.(string)) - if err != nil { - failf("!!binary value contains invalid base64 data") - } - resolved = string(data) - } - } - if resolved == nil { - if out.Kind() == reflect.Map && !out.CanAddr() { - resetMap(out) - } else { - out.Set(reflect.Zero(out.Type())) - } - return true - } - if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { - // We've resolved to exactly the type we want, so use that. - out.Set(resolvedv) - return true - } - // Perhaps we can use the value as a TextUnmarshaler to - // set its value. - if out.CanAddr() { - u, ok := out.Addr().Interface().(encoding.TextUnmarshaler) - if ok { - var text []byte - if tag == yaml_BINARY_TAG { - text = []byte(resolved.(string)) - } else { - // We let any value be unmarshaled into TextUnmarshaler. - // That might be more lax than we'd like, but the - // TextUnmarshaler itself should bowl out any dubious values. - text = []byte(n.value) - } - err := u.UnmarshalText(text) - if err != nil { - fail(err) - } - return true - } - } - switch out.Kind() { - case reflect.String: - if tag == yaml_BINARY_TAG { - out.SetString(resolved.(string)) - return true - } - if resolved != nil { - out.SetString(n.value) - return true - } - case reflect.Interface: - if resolved == nil { - out.Set(reflect.Zero(out.Type())) - } else if tag == yaml_TIMESTAMP_TAG { - // It looks like a timestamp but for backward compatibility - // reasons we set it as a string, so that code that unmarshals - // timestamp-like values into interface{} will continue to - // see a string and not a time.Time. - // TODO(v3) Drop this. - out.Set(reflect.ValueOf(n.value)) - } else { - out.Set(reflect.ValueOf(resolved)) - } - return true - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - switch resolved := resolved.(type) { - case int: - if !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case int64: - if !out.OverflowInt(resolved) { - out.SetInt(resolved) - return true - } - case uint64: - if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case float64: - if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case string: - if out.Type() == durationType { - d, err := time.ParseDuration(resolved) - if err == nil { - out.SetInt(int64(d)) - return true - } - } - } - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - switch resolved := resolved.(type) { - case int: - if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case int64: - if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case uint64: - if !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case float64: - if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - } - case reflect.Bool: - switch resolved := resolved.(type) { - case bool: - out.SetBool(resolved) - return true - } - case reflect.Float32, reflect.Float64: - switch resolved := resolved.(type) { - case int: - out.SetFloat(float64(resolved)) - return true - case int64: - out.SetFloat(float64(resolved)) - return true - case uint64: - out.SetFloat(float64(resolved)) - return true - case float64: - out.SetFloat(resolved) - return true - } - case reflect.Struct: - if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { - out.Set(resolvedv) - return true - } - case reflect.Ptr: - if out.Type().Elem() == reflect.TypeOf(resolved) { - // TODO DOes this make sense? When is out a Ptr except when decoding a nil value? - elem := reflect.New(out.Type().Elem()) - elem.Elem().Set(reflect.ValueOf(resolved)) - out.Set(elem) - return true - } - } - d.terror(n, tag, out) - return false -} - -func settableValueOf(i interface{}) reflect.Value { - v := reflect.ValueOf(i) - sv := reflect.New(v.Type()).Elem() - sv.Set(v) - return sv -} - -func (d *decoder) sequence(n *node, out reflect.Value) (good bool) { - l := len(n.children) - - var iface reflect.Value - switch out.Kind() { - case reflect.Slice: - out.Set(reflect.MakeSlice(out.Type(), l, l)) - case reflect.Array: - if l != out.Len() { - failf("invalid array: want %d elements but got %d", out.Len(), l) - } - case reflect.Interface: - // No type hints. Will have to use a generic sequence. - iface = out - out = settableValueOf(make([]interface{}, l)) - default: - d.terror(n, yaml_SEQ_TAG, out) - return false - } - et := out.Type().Elem() - - j := 0 - for i := 0; i < l; i++ { - e := reflect.New(et).Elem() - if ok := d.unmarshal(n.children[i], e); ok { - out.Index(j).Set(e) - j++ - } - } - if out.Kind() != reflect.Array { - out.Set(out.Slice(0, j)) - } - if iface.IsValid() { - iface.Set(out) - } - return true -} - -func (d *decoder) mapping(n *node, out reflect.Value) (good bool) { - switch out.Kind() { - case reflect.Struct: - return d.mappingStruct(n, out) - case reflect.Slice: - return d.mappingSlice(n, out) - case reflect.Map: - // okay - case reflect.Interface: - if d.mapType.Kind() == reflect.Map { - iface := out - out = reflect.MakeMap(d.mapType) - iface.Set(out) - } else { - slicev := reflect.New(d.mapType).Elem() - if !d.mappingSlice(n, slicev) { - return false - } - out.Set(slicev) - return true - } - default: - d.terror(n, yaml_MAP_TAG, out) - return false - } - outt := out.Type() - kt := outt.Key() - et := outt.Elem() - - mapType := d.mapType - if outt.Key() == ifaceType && outt.Elem() == ifaceType { - d.mapType = outt - } - - if out.IsNil() { - out.Set(reflect.MakeMap(outt)) - } - l := len(n.children) - for i := 0; i < l; i += 2 { - if isMerge(n.children[i]) { - d.merge(n.children[i+1], out) - continue - } - k := reflect.New(kt).Elem() - if d.unmarshal(n.children[i], k) { - kkind := k.Kind() - if kkind == reflect.Interface { - kkind = k.Elem().Kind() - } - if kkind == reflect.Map || kkind == reflect.Slice { - failf("invalid map key: %#v", k.Interface()) - } - e := reflect.New(et).Elem() - if d.unmarshal(n.children[i+1], e) { - d.setMapIndex(n.children[i+1], out, k, e) - } - } - } - d.mapType = mapType - return true -} - -func (d *decoder) setMapIndex(n *node, out, k, v reflect.Value) { - if d.strict && out.MapIndex(k) != zeroValue { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: key %#v already set in map", n.line+1, k.Interface())) - return - } - out.SetMapIndex(k, v) -} - -func (d *decoder) mappingSlice(n *node, out reflect.Value) (good bool) { - outt := out.Type() - if outt.Elem() != mapItemType { - d.terror(n, yaml_MAP_TAG, out) - return false - } - - mapType := d.mapType - d.mapType = outt - - var slice []MapItem - var l = len(n.children) - for i := 0; i < l; i += 2 { - if isMerge(n.children[i]) { - d.merge(n.children[i+1], out) - continue - } - item := MapItem{} - k := reflect.ValueOf(&item.Key).Elem() - if d.unmarshal(n.children[i], k) { - v := reflect.ValueOf(&item.Value).Elem() - if d.unmarshal(n.children[i+1], v) { - slice = append(slice, item) - } - } - } - out.Set(reflect.ValueOf(slice)) - d.mapType = mapType - return true -} - -func (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) { - sinfo, err := getStructInfo(out.Type()) - if err != nil { - panic(err) - } - name := settableValueOf("") - l := len(n.children) - - var inlineMap reflect.Value - var elemType reflect.Type - if sinfo.InlineMap != -1 { - inlineMap = out.Field(sinfo.InlineMap) - inlineMap.Set(reflect.New(inlineMap.Type()).Elem()) - elemType = inlineMap.Type().Elem() - } - - var doneFields []bool - if d.strict { - doneFields = make([]bool, len(sinfo.FieldsList)) - } - for i := 0; i < l; i += 2 { - ni := n.children[i] - if isMerge(ni) { - d.merge(n.children[i+1], out) - continue - } - if !d.unmarshal(ni, name) { - continue - } - if info, ok := sinfo.FieldsMap[name.String()]; ok { - if d.strict { - if doneFields[info.Id] { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s already set in type %s", ni.line+1, name.String(), out.Type())) - continue - } - doneFields[info.Id] = true - } - var field reflect.Value - if info.Inline == nil { - field = out.Field(info.Num) - } else { - field = out.FieldByIndex(info.Inline) - } - d.unmarshal(n.children[i+1], field) - } else if sinfo.InlineMap != -1 { - if inlineMap.IsNil() { - inlineMap.Set(reflect.MakeMap(inlineMap.Type())) - } - value := reflect.New(elemType).Elem() - d.unmarshal(n.children[i+1], value) - d.setMapIndex(n.children[i+1], inlineMap, name, value) - } else if d.strict { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in type %s", ni.line+1, name.String(), out.Type())) - } - } - return true -} - -func failWantMap() { - failf("map merge requires map or sequence of maps as the value") -} - -func (d *decoder) merge(n *node, out reflect.Value) { - switch n.kind { - case mappingNode: - d.unmarshal(n, out) - case aliasNode: - an, ok := d.doc.anchors[n.value] - if ok && an.kind != mappingNode { - failWantMap() - } - d.unmarshal(n, out) - case sequenceNode: - // Step backwards as earlier nodes take precedence. - for i := len(n.children) - 1; i >= 0; i-- { - ni := n.children[i] - if ni.kind == aliasNode { - an, ok := d.doc.anchors[ni.value] - if ok && an.kind != mappingNode { - failWantMap() - } - } else if ni.kind != mappingNode { - failWantMap() - } - d.unmarshal(ni, out) - } - default: - failWantMap() - } -} - -func isMerge(n *node) bool { - return n.kind == scalarNode && n.value == "<<" && (n.implicit == true || n.tag == yaml_MERGE_TAG) -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/emitterc.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/emitterc.go deleted file mode 100644 index a1c2cc52627..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/emitterc.go +++ /dev/null @@ -1,1685 +0,0 @@ -package yaml - -import ( - "bytes" - "fmt" -) - -// Flush the buffer if needed. -func flush(emitter *yaml_emitter_t) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) { - return yaml_emitter_flush(emitter) - } - return true -} - -// Put a character to the output buffer. -func put(emitter *yaml_emitter_t, value byte) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - emitter.buffer[emitter.buffer_pos] = value - emitter.buffer_pos++ - emitter.column++ - return true -} - -// Put a line break to the output buffer. -func put_break(emitter *yaml_emitter_t) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - switch emitter.line_break { - case yaml_CR_BREAK: - emitter.buffer[emitter.buffer_pos] = '\r' - emitter.buffer_pos += 1 - case yaml_LN_BREAK: - emitter.buffer[emitter.buffer_pos] = '\n' - emitter.buffer_pos += 1 - case yaml_CRLN_BREAK: - emitter.buffer[emitter.buffer_pos+0] = '\r' - emitter.buffer[emitter.buffer_pos+1] = '\n' - emitter.buffer_pos += 2 - default: - panic("unknown line break setting") - } - emitter.column = 0 - emitter.line++ - return true -} - -// Copy a character from a string into buffer. -func write(emitter *yaml_emitter_t, s []byte, i *int) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - p := emitter.buffer_pos - w := width(s[*i]) - switch w { - case 4: - emitter.buffer[p+3] = s[*i+3] - fallthrough - case 3: - emitter.buffer[p+2] = s[*i+2] - fallthrough - case 2: - emitter.buffer[p+1] = s[*i+1] - fallthrough - case 1: - emitter.buffer[p+0] = s[*i+0] - default: - panic("unknown character width") - } - emitter.column++ - emitter.buffer_pos += w - *i += w - return true -} - -// Write a whole string into buffer. -func write_all(emitter *yaml_emitter_t, s []byte) bool { - for i := 0; i < len(s); { - if !write(emitter, s, &i) { - return false - } - } - return true -} - -// Copy a line break character from a string into buffer. -func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool { - if s[*i] == '\n' { - if !put_break(emitter) { - return false - } - *i++ - } else { - if !write(emitter, s, i) { - return false - } - emitter.column = 0 - emitter.line++ - } - return true -} - -// Set an emitter error and return false. -func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool { - emitter.error = yaml_EMITTER_ERROR - emitter.problem = problem - return false -} - -// Emit an event. -func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool { - emitter.events = append(emitter.events, *event) - for !yaml_emitter_need_more_events(emitter) { - event := &emitter.events[emitter.events_head] - if !yaml_emitter_analyze_event(emitter, event) { - return false - } - if !yaml_emitter_state_machine(emitter, event) { - return false - } - yaml_event_delete(event) - emitter.events_head++ - } - return true -} - -// Check if we need to accumulate more events before emitting. -// -// We accumulate extra -// - 1 event for DOCUMENT-START -// - 2 events for SEQUENCE-START -// - 3 events for MAPPING-START -// -func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool { - if emitter.events_head == len(emitter.events) { - return true - } - var accumulate int - switch emitter.events[emitter.events_head].typ { - case yaml_DOCUMENT_START_EVENT: - accumulate = 1 - break - case yaml_SEQUENCE_START_EVENT: - accumulate = 2 - break - case yaml_MAPPING_START_EVENT: - accumulate = 3 - break - default: - return false - } - if len(emitter.events)-emitter.events_head > accumulate { - return false - } - var level int - for i := emitter.events_head; i < len(emitter.events); i++ { - switch emitter.events[i].typ { - case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT: - level++ - case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT: - level-- - } - if level == 0 { - return false - } - } - return true -} - -// Append a directive to the directives stack. -func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool { - for i := 0; i < len(emitter.tag_directives); i++ { - if bytes.Equal(value.handle, emitter.tag_directives[i].handle) { - if allow_duplicates { - return true - } - return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive") - } - } - - // [Go] Do we actually need to copy this given garbage collection - // and the lack of deallocating destructors? - tag_copy := yaml_tag_directive_t{ - handle: make([]byte, len(value.handle)), - prefix: make([]byte, len(value.prefix)), - } - copy(tag_copy.handle, value.handle) - copy(tag_copy.prefix, value.prefix) - emitter.tag_directives = append(emitter.tag_directives, tag_copy) - return true -} - -// Increase the indentation level. -func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool { - emitter.indents = append(emitter.indents, emitter.indent) - if emitter.indent < 0 { - if flow { - emitter.indent = emitter.best_indent - } else { - emitter.indent = 0 - } - } else if !indentless { - emitter.indent += emitter.best_indent - } - return true -} - -// State dispatcher. -func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool { - switch emitter.state { - default: - case yaml_EMIT_STREAM_START_STATE: - return yaml_emitter_emit_stream_start(emitter, event) - - case yaml_EMIT_FIRST_DOCUMENT_START_STATE: - return yaml_emitter_emit_document_start(emitter, event, true) - - case yaml_EMIT_DOCUMENT_START_STATE: - return yaml_emitter_emit_document_start(emitter, event, false) - - case yaml_EMIT_DOCUMENT_CONTENT_STATE: - return yaml_emitter_emit_document_content(emitter, event) - - case yaml_EMIT_DOCUMENT_END_STATE: - return yaml_emitter_emit_document_end(emitter, event) - - case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE: - return yaml_emitter_emit_flow_sequence_item(emitter, event, true) - - case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE: - return yaml_emitter_emit_flow_sequence_item(emitter, event, false) - - case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE: - return yaml_emitter_emit_flow_mapping_key(emitter, event, true) - - case yaml_EMIT_FLOW_MAPPING_KEY_STATE: - return yaml_emitter_emit_flow_mapping_key(emitter, event, false) - - case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE: - return yaml_emitter_emit_flow_mapping_value(emitter, event, true) - - case yaml_EMIT_FLOW_MAPPING_VALUE_STATE: - return yaml_emitter_emit_flow_mapping_value(emitter, event, false) - - case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE: - return yaml_emitter_emit_block_sequence_item(emitter, event, true) - - case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE: - return yaml_emitter_emit_block_sequence_item(emitter, event, false) - - case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE: - return yaml_emitter_emit_block_mapping_key(emitter, event, true) - - case yaml_EMIT_BLOCK_MAPPING_KEY_STATE: - return yaml_emitter_emit_block_mapping_key(emitter, event, false) - - case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE: - return yaml_emitter_emit_block_mapping_value(emitter, event, true) - - case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE: - return yaml_emitter_emit_block_mapping_value(emitter, event, false) - - case yaml_EMIT_END_STATE: - return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END") - } - panic("invalid emitter state") -} - -// Expect STREAM-START. -func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if event.typ != yaml_STREAM_START_EVENT { - return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START") - } - if emitter.encoding == yaml_ANY_ENCODING { - emitter.encoding = event.encoding - if emitter.encoding == yaml_ANY_ENCODING { - emitter.encoding = yaml_UTF8_ENCODING - } - } - if emitter.best_indent < 2 || emitter.best_indent > 9 { - emitter.best_indent = 2 - } - if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 { - emitter.best_width = 80 - } - if emitter.best_width < 0 { - emitter.best_width = 1<<31 - 1 - } - if emitter.line_break == yaml_ANY_BREAK { - emitter.line_break = yaml_LN_BREAK - } - - emitter.indent = -1 - emitter.line = 0 - emitter.column = 0 - emitter.whitespace = true - emitter.indention = true - - if emitter.encoding != yaml_UTF8_ENCODING { - if !yaml_emitter_write_bom(emitter) { - return false - } - } - emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE - return true -} - -// Expect DOCUMENT-START or STREAM-END. -func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - - if event.typ == yaml_DOCUMENT_START_EVENT { - - if event.version_directive != nil { - if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) { - return false - } - } - - for i := 0; i < len(event.tag_directives); i++ { - tag_directive := &event.tag_directives[i] - if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) { - return false - } - if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) { - return false - } - } - - for i := 0; i < len(default_tag_directives); i++ { - tag_directive := &default_tag_directives[i] - if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) { - return false - } - } - - implicit := event.implicit - if !first || emitter.canonical { - implicit = false - } - - if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) { - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if event.version_directive != nil { - implicit = false - if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if len(event.tag_directives) > 0 { - implicit = false - for i := 0; i < len(event.tag_directives); i++ { - tag_directive := &event.tag_directives[i] - if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) { - return false - } - if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) { - return false - } - if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - } - - if yaml_emitter_check_empty_document(emitter) { - implicit = false - } - if !implicit { - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) { - return false - } - if emitter.canonical { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - } - - emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE - return true - } - - if event.typ == yaml_STREAM_END_EVENT { - if emitter.open_ended { - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_flush(emitter) { - return false - } - emitter.state = yaml_EMIT_END_STATE - return true - } - - return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END") -} - -// Expect the root node. -func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool { - emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE) - return yaml_emitter_emit_node(emitter, event, true, false, false, false) -} - -// Expect DOCUMENT-END. -func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if event.typ != yaml_DOCUMENT_END_EVENT { - return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END") - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if !event.implicit { - // [Go] Allocate the slice elsewhere. - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_flush(emitter) { - return false - } - emitter.state = yaml_EMIT_DOCUMENT_START_STATE - emitter.tag_directives = emitter.tag_directives[:0] - return true -} - -// Expect a flow item node. -func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - emitter.flow_level++ - } - - if event.typ == yaml_SEQUENCE_END_EVENT { - emitter.flow_level-- - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - if emitter.canonical && !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - - return true - } - - if !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - } - - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE) - return yaml_emitter_emit_node(emitter, event, false, true, false, false) -} - -// Expect a flow key node. -func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - emitter.flow_level++ - } - - if event.typ == yaml_MAPPING_END_EVENT { - emitter.flow_level-- - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - if emitter.canonical && !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - - if !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - } - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if !emitter.canonical && yaml_emitter_check_simple_key(emitter) { - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, true) - } - if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a flow value node. -func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { - if simple { - if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { - return false - } - } else { - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a block item node. -func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) { - return false - } - } - if event.typ == yaml_SEQUENCE_END_EVENT { - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE) - return yaml_emitter_emit_node(emitter, event, false, true, false, false) -} - -// Expect a block key node. -func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_increase_indent(emitter, false, false) { - return false - } - } - if event.typ == yaml_MAPPING_END_EVENT { - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if yaml_emitter_check_simple_key(emitter) { - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, true) - } - if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a block value node. -func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { - if simple { - if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { - return false - } - } else { - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a node. -func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, - root bool, sequence bool, mapping bool, simple_key bool) bool { - - emitter.root_context = root - emitter.sequence_context = sequence - emitter.mapping_context = mapping - emitter.simple_key_context = simple_key - - switch event.typ { - case yaml_ALIAS_EVENT: - return yaml_emitter_emit_alias(emitter, event) - case yaml_SCALAR_EVENT: - return yaml_emitter_emit_scalar(emitter, event) - case yaml_SEQUENCE_START_EVENT: - return yaml_emitter_emit_sequence_start(emitter, event) - case yaml_MAPPING_START_EVENT: - return yaml_emitter_emit_mapping_start(emitter, event) - default: - return yaml_emitter_set_emitter_error(emitter, - fmt.Sprintf("expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v", event.typ)) - } -} - -// Expect ALIAS. -func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true -} - -// Expect SCALAR. -func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_select_scalar_style(emitter, event) { - return false - } - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - if !yaml_emitter_process_scalar(emitter) { - return false - } - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true -} - -// Expect SEQUENCE-START. -func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || - yaml_emitter_check_empty_sequence(emitter) { - emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE - } else { - emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE - } - return true -} - -// Expect MAPPING-START. -func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE || - yaml_emitter_check_empty_mapping(emitter) { - emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE - } else { - emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE - } - return true -} - -// Check if the document content is an empty scalar. -func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool { - return false // [Go] Huh? -} - -// Check if the next events represent an empty sequence. -func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool { - if len(emitter.events)-emitter.events_head < 2 { - return false - } - return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT && - emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT -} - -// Check if the next events represent an empty mapping. -func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool { - if len(emitter.events)-emitter.events_head < 2 { - return false - } - return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT && - emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT -} - -// Check if the next node can be expressed as a simple key. -func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool { - length := 0 - switch emitter.events[emitter.events_head].typ { - case yaml_ALIAS_EVENT: - length += len(emitter.anchor_data.anchor) - case yaml_SCALAR_EVENT: - if emitter.scalar_data.multiline { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) + - len(emitter.scalar_data.value) - case yaml_SEQUENCE_START_EVENT: - if !yaml_emitter_check_empty_sequence(emitter) { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) - case yaml_MAPPING_START_EVENT: - if !yaml_emitter_check_empty_mapping(emitter) { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) - default: - return false - } - return length <= 128 -} - -// Determine an acceptable scalar style. -func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool { - - no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 - if no_tag && !event.implicit && !event.quoted_implicit { - return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified") - } - - style := event.scalar_style() - if style == yaml_ANY_SCALAR_STYLE { - style = yaml_PLAIN_SCALAR_STYLE - } - if emitter.canonical { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - if emitter.simple_key_context && emitter.scalar_data.multiline { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - - if style == yaml_PLAIN_SCALAR_STYLE { - if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed || - emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - if no_tag && !event.implicit { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - } - if style == yaml_SINGLE_QUOTED_SCALAR_STYLE { - if !emitter.scalar_data.single_quoted_allowed { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - } - if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE { - if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - } - - if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE { - emitter.tag_data.handle = []byte{'!'} - } - emitter.scalar_data.style = style - return true -} - -// Write an anchor. -func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool { - if emitter.anchor_data.anchor == nil { - return true - } - c := []byte{'&'} - if emitter.anchor_data.alias { - c[0] = '*' - } - if !yaml_emitter_write_indicator(emitter, c, true, false, false) { - return false - } - return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor) -} - -// Write a tag. -func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool { - if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 { - return true - } - if len(emitter.tag_data.handle) > 0 { - if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) { - return false - } - if len(emitter.tag_data.suffix) > 0 { - if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { - return false - } - } - } else { - // [Go] Allocate these slices elsewhere. - if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) { - return false - } - if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) { - return false - } - } - return true -} - -// Write a scalar. -func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool { - switch emitter.scalar_data.style { - case yaml_PLAIN_SCALAR_STYLE: - return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_SINGLE_QUOTED_SCALAR_STYLE: - return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_DOUBLE_QUOTED_SCALAR_STYLE: - return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_LITERAL_SCALAR_STYLE: - return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value) - - case yaml_FOLDED_SCALAR_STYLE: - return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value) - } - panic("unknown scalar style") -} - -// Check if a %YAML directive is valid. -func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool { - if version_directive.major != 1 || version_directive.minor != 1 { - return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive") - } - return true -} - -// Check if a %TAG directive is valid. -func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool { - handle := tag_directive.handle - prefix := tag_directive.prefix - if len(handle) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty") - } - if handle[0] != '!' { - return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'") - } - if handle[len(handle)-1] != '!' { - return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'") - } - for i := 1; i < len(handle)-1; i += width(handle[i]) { - if !is_alpha(handle, i) { - return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only") - } - } - if len(prefix) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty") - } - return true -} - -// Check if an anchor is valid. -func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool { - if len(anchor) == 0 { - problem := "anchor value must not be empty" - if alias { - problem = "alias value must not be empty" - } - return yaml_emitter_set_emitter_error(emitter, problem) - } - for i := 0; i < len(anchor); i += width(anchor[i]) { - if !is_alpha(anchor, i) { - problem := "anchor value must contain alphanumerical characters only" - if alias { - problem = "alias value must contain alphanumerical characters only" - } - return yaml_emitter_set_emitter_error(emitter, problem) - } - } - emitter.anchor_data.anchor = anchor - emitter.anchor_data.alias = alias - return true -} - -// Check if a tag is valid. -func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool { - if len(tag) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty") - } - for i := 0; i < len(emitter.tag_directives); i++ { - tag_directive := &emitter.tag_directives[i] - if bytes.HasPrefix(tag, tag_directive.prefix) { - emitter.tag_data.handle = tag_directive.handle - emitter.tag_data.suffix = tag[len(tag_directive.prefix):] - return true - } - } - emitter.tag_data.suffix = tag - return true -} - -// Check if a scalar is valid. -func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { - var ( - block_indicators = false - flow_indicators = false - line_breaks = false - special_characters = false - - leading_space = false - leading_break = false - trailing_space = false - trailing_break = false - break_space = false - space_break = false - - preceded_by_whitespace = false - followed_by_whitespace = false - previous_space = false - previous_break = false - ) - - emitter.scalar_data.value = value - - if len(value) == 0 { - emitter.scalar_data.multiline = false - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = true - emitter.scalar_data.single_quoted_allowed = true - emitter.scalar_data.block_allowed = false - return true - } - - if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) { - block_indicators = true - flow_indicators = true - } - - preceded_by_whitespace = true - for i, w := 0, 0; i < len(value); i += w { - w = width(value[i]) - followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) - - if i == 0 { - switch value[i] { - case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': - flow_indicators = true - block_indicators = true - case '?', ':': - flow_indicators = true - if followed_by_whitespace { - block_indicators = true - } - case '-': - if followed_by_whitespace { - flow_indicators = true - block_indicators = true - } - } - } else { - switch value[i] { - case ',', '?', '[', ']', '{', '}': - flow_indicators = true - case ':': - flow_indicators = true - if followed_by_whitespace { - block_indicators = true - } - case '#': - if preceded_by_whitespace { - flow_indicators = true - block_indicators = true - } - } - } - - if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode { - special_characters = true - } - if is_space(value, i) { - if i == 0 { - leading_space = true - } - if i+width(value[i]) == len(value) { - trailing_space = true - } - if previous_break { - break_space = true - } - previous_space = true - previous_break = false - } else if is_break(value, i) { - line_breaks = true - if i == 0 { - leading_break = true - } - if i+width(value[i]) == len(value) { - trailing_break = true - } - if previous_space { - space_break = true - } - previous_space = false - previous_break = true - } else { - previous_space = false - previous_break = false - } - - // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. - preceded_by_whitespace = is_blankz(value, i) - } - - emitter.scalar_data.multiline = line_breaks - emitter.scalar_data.flow_plain_allowed = true - emitter.scalar_data.block_plain_allowed = true - emitter.scalar_data.single_quoted_allowed = true - emitter.scalar_data.block_allowed = true - - if leading_space || leading_break || trailing_space || trailing_break { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - } - if trailing_space { - emitter.scalar_data.block_allowed = false - } - if break_space { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - emitter.scalar_data.single_quoted_allowed = false - } - if space_break || special_characters { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - emitter.scalar_data.single_quoted_allowed = false - emitter.scalar_data.block_allowed = false - } - if line_breaks { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - } - if flow_indicators { - emitter.scalar_data.flow_plain_allowed = false - } - if block_indicators { - emitter.scalar_data.block_plain_allowed = false - } - return true -} - -// Check if the event data is valid. -func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { - - emitter.anchor_data.anchor = nil - emitter.tag_data.handle = nil - emitter.tag_data.suffix = nil - emitter.scalar_data.value = nil - - switch event.typ { - case yaml_ALIAS_EVENT: - if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) { - return false - } - - case yaml_SCALAR_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - if !yaml_emitter_analyze_scalar(emitter, event.value) { - return false - } - - case yaml_SEQUENCE_START_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - - case yaml_MAPPING_START_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - } - return true -} - -// Write the BOM character. -func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool { - if !flush(emitter) { - return false - } - pos := emitter.buffer_pos - emitter.buffer[pos+0] = '\xEF' - emitter.buffer[pos+1] = '\xBB' - emitter.buffer[pos+2] = '\xBF' - emitter.buffer_pos += 3 - return true -} - -func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool { - indent := emitter.indent - if indent < 0 { - indent = 0 - } - if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) { - if !put_break(emitter) { - return false - } - } - for emitter.column < indent { - if !put(emitter, ' ') { - return false - } - } - emitter.whitespace = true - emitter.indention = true - return true -} - -func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool { - if need_whitespace && !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - if !write_all(emitter, indicator) { - return false - } - emitter.whitespace = is_whitespace - emitter.indention = (emitter.indention && is_indention) - emitter.open_ended = false - return true -} - -func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool { - if !write_all(emitter, value) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool { - if !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - if !write_all(emitter, value) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool { - if need_whitespace && !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - for i := 0; i < len(value); { - var must_write bool - switch value[i] { - case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']': - must_write = true - default: - must_write = is_alpha(value, i) - } - if must_write { - if !write(emitter, value, &i) { - return false - } - } else { - w := width(value[i]) - for k := 0; k < w; k++ { - octet := value[i] - i++ - if !put(emitter, '%') { - return false - } - - c := octet >> 4 - if c < 10 { - c += '0' - } else { - c += 'A' - 10 - } - if !put(emitter, c) { - return false - } - - c = octet & 0x0f - if c < 10 { - c += '0' - } else { - c += 'A' - 10 - } - if !put(emitter, c) { - return false - } - } - } - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - if !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - - spaces := false - breaks := false - for i := 0; i < len(value); { - if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - spaces = true - } else if is_break(value, i) { - if !breaks && value[i] == '\n' { - if !put_break(emitter) { - return false - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - spaces = false - breaks = false - } - } - - emitter.whitespace = false - emitter.indention = false - if emitter.root_context { - emitter.open_ended = true - } - - return true -} - -func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - - if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) { - return false - } - - spaces := false - breaks := false - for i := 0; i < len(value); { - if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - spaces = true - } else if is_break(value, i) { - if !breaks && value[i] == '\n' { - if !put_break(emitter) { - return false - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if value[i] == '\'' { - if !put(emitter, '\'') { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - spaces = false - breaks = false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - spaces := false - if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) { - return false - } - - for i := 0; i < len(value); { - if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) || - is_bom(value, i) || is_break(value, i) || - value[i] == '"' || value[i] == '\\' { - - octet := value[i] - - var w int - var v rune - switch { - case octet&0x80 == 0x00: - w, v = 1, rune(octet&0x7F) - case octet&0xE0 == 0xC0: - w, v = 2, rune(octet&0x1F) - case octet&0xF0 == 0xE0: - w, v = 3, rune(octet&0x0F) - case octet&0xF8 == 0xF0: - w, v = 4, rune(octet&0x07) - } - for k := 1; k < w; k++ { - octet = value[i+k] - v = (v << 6) + (rune(octet) & 0x3F) - } - i += w - - if !put(emitter, '\\') { - return false - } - - var ok bool - switch v { - case 0x00: - ok = put(emitter, '0') - case 0x07: - ok = put(emitter, 'a') - case 0x08: - ok = put(emitter, 'b') - case 0x09: - ok = put(emitter, 't') - case 0x0A: - ok = put(emitter, 'n') - case 0x0b: - ok = put(emitter, 'v') - case 0x0c: - ok = put(emitter, 'f') - case 0x0d: - ok = put(emitter, 'r') - case 0x1b: - ok = put(emitter, 'e') - case 0x22: - ok = put(emitter, '"') - case 0x5c: - ok = put(emitter, '\\') - case 0x85: - ok = put(emitter, 'N') - case 0xA0: - ok = put(emitter, '_') - case 0x2028: - ok = put(emitter, 'L') - case 0x2029: - ok = put(emitter, 'P') - default: - if v <= 0xFF { - ok = put(emitter, 'x') - w = 2 - } else if v <= 0xFFFF { - ok = put(emitter, 'u') - w = 4 - } else { - ok = put(emitter, 'U') - w = 8 - } - for k := (w - 1) * 4; ok && k >= 0; k -= 4 { - digit := byte((v >> uint(k)) & 0x0F) - if digit < 10 { - ok = put(emitter, digit+'0') - } else { - ok = put(emitter, digit+'A'-10) - } - } - } - if !ok { - return false - } - spaces = false - } else if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 { - if !yaml_emitter_write_indent(emitter) { - return false - } - if is_space(value, i+1) { - if !put(emitter, '\\') { - return false - } - } - i += width(value[i]) - } else if !write(emitter, value, &i) { - return false - } - spaces = true - } else { - if !write(emitter, value, &i) { - return false - } - spaces = false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool { - if is_space(value, 0) || is_break(value, 0) { - indent_hint := []byte{'0' + byte(emitter.best_indent)} - if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) { - return false - } - } - - emitter.open_ended = false - - var chomp_hint [1]byte - if len(value) == 0 { - chomp_hint[0] = '-' - } else { - i := len(value) - 1 - for value[i]&0xC0 == 0x80 { - i-- - } - if !is_break(value, i) { - chomp_hint[0] = '-' - } else if i == 0 { - chomp_hint[0] = '+' - emitter.open_ended = true - } else { - i-- - for value[i]&0xC0 == 0x80 { - i-- - } - if is_break(value, i) { - chomp_hint[0] = '+' - emitter.open_ended = true - } - } - } - if chomp_hint[0] != 0 { - if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) { - return false - } - } - return true -} - -func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool { - if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) { - return false - } - if !yaml_emitter_write_block_scalar_hints(emitter, value) { - return false - } - if !put_break(emitter) { - return false - } - emitter.indention = true - emitter.whitespace = true - breaks := true - for i := 0; i < len(value); { - if is_break(value, i) { - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - breaks = false - } - } - - return true -} - -func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool { - if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) { - return false - } - if !yaml_emitter_write_block_scalar_hints(emitter, value) { - return false - } - - if !put_break(emitter) { - return false - } - emitter.indention = true - emitter.whitespace = true - - breaks := true - leading_spaces := true - for i := 0; i < len(value); { - if is_break(value, i) { - if !breaks && !leading_spaces && value[i] == '\n' { - k := 0 - for is_break(value, k) { - k += width(value[k]) - } - if !is_blankz(value, k) { - if !put_break(emitter) { - return false - } - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - leading_spaces = is_blank(value, i) - } - if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - emitter.indention = false - breaks = false - } - } - return true -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/encode.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/encode.go deleted file mode 100644 index 0ee738e11b6..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/encode.go +++ /dev/null @@ -1,390 +0,0 @@ -package yaml - -import ( - "encoding" - "fmt" - "io" - "reflect" - "regexp" - "sort" - "strconv" - "strings" - "time" - "unicode/utf8" -) - -// jsonNumber is the interface of the encoding/json.Number datatype. -// Repeating the interface here avoids a dependency on encoding/json, and also -// supports other libraries like jsoniter, which use a similar datatype with -// the same interface. Detecting this interface is useful when dealing with -// structures containing json.Number, which is a string under the hood. The -// encoder should prefer the use of Int64(), Float64() and string(), in that -// order, when encoding this type. -type jsonNumber interface { - Float64() (float64, error) - Int64() (int64, error) - String() string -} - -type encoder struct { - emitter yaml_emitter_t - event yaml_event_t - out []byte - flow bool - // doneInit holds whether the initial stream_start_event has been - // emitted. - doneInit bool -} - -func newEncoder() *encoder { - e := &encoder{} - yaml_emitter_initialize(&e.emitter) - yaml_emitter_set_output_string(&e.emitter, &e.out) - yaml_emitter_set_unicode(&e.emitter, true) - return e -} - -func newEncoderWithWriter(w io.Writer) *encoder { - e := &encoder{} - yaml_emitter_initialize(&e.emitter) - yaml_emitter_set_output_writer(&e.emitter, w) - yaml_emitter_set_unicode(&e.emitter, true) - return e -} - -func (e *encoder) init() { - if e.doneInit { - return - } - yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING) - e.emit() - e.doneInit = true -} - -func (e *encoder) finish() { - e.emitter.open_ended = false - yaml_stream_end_event_initialize(&e.event) - e.emit() -} - -func (e *encoder) destroy() { - yaml_emitter_delete(&e.emitter) -} - -func (e *encoder) emit() { - // This will internally delete the e.event value. - e.must(yaml_emitter_emit(&e.emitter, &e.event)) -} - -func (e *encoder) must(ok bool) { - if !ok { - msg := e.emitter.problem - if msg == "" { - msg = "unknown problem generating YAML content" - } - failf("%s", msg) - } -} - -func (e *encoder) marshalDoc(tag string, in reflect.Value) { - e.init() - yaml_document_start_event_initialize(&e.event, nil, nil, true) - e.emit() - e.marshal(tag, in) - yaml_document_end_event_initialize(&e.event, true) - e.emit() -} - -func (e *encoder) marshal(tag string, in reflect.Value) { - if !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() { - e.nilv() - return - } - iface := in.Interface() - switch m := iface.(type) { - case jsonNumber: - integer, err := m.Int64() - if err == nil { - // In this case the json.Number is a valid int64 - in = reflect.ValueOf(integer) - break - } - float, err := m.Float64() - if err == nil { - // In this case the json.Number is a valid float64 - in = reflect.ValueOf(float) - break - } - // fallback case - no number could be obtained - in = reflect.ValueOf(m.String()) - case time.Time, *time.Time: - // Although time.Time implements TextMarshaler, - // we don't want to treat it as a string for YAML - // purposes because YAML has special support for - // timestamps. - case Marshaler: - v, err := m.MarshalYAML() - if err != nil { - fail(err) - } - if v == nil { - e.nilv() - return - } - in = reflect.ValueOf(v) - case encoding.TextMarshaler: - text, err := m.MarshalText() - if err != nil { - fail(err) - } - in = reflect.ValueOf(string(text)) - case nil: - e.nilv() - return - } - switch in.Kind() { - case reflect.Interface: - e.marshal(tag, in.Elem()) - case reflect.Map: - e.mapv(tag, in) - case reflect.Ptr: - if in.Type() == ptrTimeType { - e.timev(tag, in.Elem()) - } else { - e.marshal(tag, in.Elem()) - } - case reflect.Struct: - if in.Type() == timeType { - e.timev(tag, in) - } else { - e.structv(tag, in) - } - case reflect.Slice, reflect.Array: - if in.Type().Elem() == mapItemType { - e.itemsv(tag, in) - } else { - e.slicev(tag, in) - } - case reflect.String: - e.stringv(tag, in) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - if in.Type() == durationType { - e.stringv(tag, reflect.ValueOf(iface.(time.Duration).String())) - } else { - e.intv(tag, in) - } - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - e.uintv(tag, in) - case reflect.Float32, reflect.Float64: - e.floatv(tag, in) - case reflect.Bool: - e.boolv(tag, in) - default: - panic("cannot marshal type: " + in.Type().String()) - } -} - -func (e *encoder) mapv(tag string, in reflect.Value) { - e.mappingv(tag, func() { - keys := keyList(in.MapKeys()) - sort.Sort(keys) - for _, k := range keys { - e.marshal("", k) - e.marshal("", in.MapIndex(k)) - } - }) -} - -func (e *encoder) itemsv(tag string, in reflect.Value) { - e.mappingv(tag, func() { - slice := in.Convert(reflect.TypeOf([]MapItem{})).Interface().([]MapItem) - for _, item := range slice { - e.marshal("", reflect.ValueOf(item.Key)) - e.marshal("", reflect.ValueOf(item.Value)) - } - }) -} - -func (e *encoder) structv(tag string, in reflect.Value) { - sinfo, err := getStructInfo(in.Type()) - if err != nil { - panic(err) - } - e.mappingv(tag, func() { - for _, info := range sinfo.FieldsList { - var value reflect.Value - if info.Inline == nil { - value = in.Field(info.Num) - } else { - value = in.FieldByIndex(info.Inline) - } - if info.OmitEmpty && isZero(value) { - continue - } - e.marshal("", reflect.ValueOf(info.Key)) - e.flow = info.Flow - e.marshal("", value) - } - if sinfo.InlineMap >= 0 { - m := in.Field(sinfo.InlineMap) - if m.Len() > 0 { - e.flow = false - keys := keyList(m.MapKeys()) - sort.Sort(keys) - for _, k := range keys { - if _, found := sinfo.FieldsMap[k.String()]; found { - panic(fmt.Sprintf("Can't have key %q in inlined map; conflicts with struct field", k.String())) - } - e.marshal("", k) - e.flow = false - e.marshal("", m.MapIndex(k)) - } - } - } - }) -} - -func (e *encoder) mappingv(tag string, f func()) { - implicit := tag == "" - style := yaml_BLOCK_MAPPING_STYLE - if e.flow { - e.flow = false - style = yaml_FLOW_MAPPING_STYLE - } - yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style) - e.emit() - f() - yaml_mapping_end_event_initialize(&e.event) - e.emit() -} - -func (e *encoder) slicev(tag string, in reflect.Value) { - implicit := tag == "" - style := yaml_BLOCK_SEQUENCE_STYLE - if e.flow { - e.flow = false - style = yaml_FLOW_SEQUENCE_STYLE - } - e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) - e.emit() - n := in.Len() - for i := 0; i < n; i++ { - e.marshal("", in.Index(i)) - } - e.must(yaml_sequence_end_event_initialize(&e.event)) - e.emit() -} - -// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1. -// -// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported -// in YAML 1.2 and by this package, but these should be marshalled quoted for -// the time being for compatibility with other parsers. -func isBase60Float(s string) (result bool) { - // Fast path. - if s == "" { - return false - } - c := s[0] - if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 { - return false - } - // Do the full match. - return base60float.MatchString(s) -} - -// From http://yaml.org/type/float.html, except the regular expression there -// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix. -var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`) - -func (e *encoder) stringv(tag string, in reflect.Value) { - var style yaml_scalar_style_t - s := in.String() - canUsePlain := true - switch { - case !utf8.ValidString(s): - if tag == yaml_BINARY_TAG { - failf("explicitly tagged !!binary data must be base64-encoded") - } - if tag != "" { - failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) - } - // It can't be encoded directly as YAML so use a binary tag - // and encode it as base64. - tag = yaml_BINARY_TAG - s = encodeBase64(s) - case tag == "": - // Check to see if it would resolve to a specific - // tag when encoded unquoted. If it doesn't, - // there's no need to quote it. - rtag, _ := resolve("", s) - canUsePlain = rtag == yaml_STR_TAG && !isBase60Float(s) - } - // Note: it's possible for user code to emit invalid YAML - // if they explicitly specify a tag and a string containing - // text that's incompatible with that tag. - switch { - case strings.Contains(s, "\n"): - style = yaml_LITERAL_SCALAR_STYLE - case canUsePlain: - style = yaml_PLAIN_SCALAR_STYLE - default: - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - e.emitScalar(s, "", tag, style) -} - -func (e *encoder) boolv(tag string, in reflect.Value) { - var s string - if in.Bool() { - s = "true" - } else { - s = "false" - } - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) intv(tag string, in reflect.Value) { - s := strconv.FormatInt(in.Int(), 10) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) uintv(tag string, in reflect.Value) { - s := strconv.FormatUint(in.Uint(), 10) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) timev(tag string, in reflect.Value) { - t := in.Interface().(time.Time) - s := t.Format(time.RFC3339Nano) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) floatv(tag string, in reflect.Value) { - // Issue #352: When formatting, use the precision of the underlying value - precision := 64 - if in.Kind() == reflect.Float32 { - precision = 32 - } - - s := strconv.FormatFloat(in.Float(), 'g', -1, precision) - switch s { - case "+Inf": - s = ".inf" - case "-Inf": - s = "-.inf" - case "NaN": - s = ".nan" - } - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) nilv() { - e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) { - implicit := tag == "" - e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style)) - e.emit() -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/go.mod b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/go.mod deleted file mode 100644 index 1934e876945..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module "gopkg.in/yaml.v2" - -require ( - "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 -) diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/parserc.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/parserc.go deleted file mode 100644 index 81d05dfe573..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/parserc.go +++ /dev/null @@ -1,1095 +0,0 @@ -package yaml - -import ( - "bytes" -) - -// The parser implements the following grammar: -// -// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END -// implicit_document ::= block_node DOCUMENT-END* -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// block_node_or_indentless_sequence ::= -// ALIAS -// | properties (block_content | indentless_block_sequence)? -// | block_content -// | indentless_block_sequence -// block_node ::= ALIAS -// | properties block_content? -// | block_content -// flow_node ::= ALIAS -// | properties flow_content? -// | flow_content -// properties ::= TAG ANCHOR? | ANCHOR TAG? -// block_content ::= block_collection | flow_collection | SCALAR -// flow_content ::= flow_collection | SCALAR -// block_collection ::= block_sequence | block_mapping -// flow_collection ::= flow_sequence | flow_mapping -// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END -// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ -// block_mapping ::= BLOCK-MAPPING_START -// ((KEY block_node_or_indentless_sequence?)? -// (VALUE block_node_or_indentless_sequence?)?)* -// BLOCK-END -// flow_sequence ::= FLOW-SEQUENCE-START -// (flow_sequence_entry FLOW-ENTRY)* -// flow_sequence_entry? -// FLOW-SEQUENCE-END -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// flow_mapping ::= FLOW-MAPPING-START -// (flow_mapping_entry FLOW-ENTRY)* -// flow_mapping_entry? -// FLOW-MAPPING-END -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? - -// Peek the next token in the token queue. -func peek_token(parser *yaml_parser_t) *yaml_token_t { - if parser.token_available || yaml_parser_fetch_more_tokens(parser) { - return &parser.tokens[parser.tokens_head] - } - return nil -} - -// Remove the next token from the queue (must be called after peek_token). -func skip_token(parser *yaml_parser_t) { - parser.token_available = false - parser.tokens_parsed++ - parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN - parser.tokens_head++ -} - -// Get the next event. -func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool { - // Erase the event object. - *event = yaml_event_t{} - - // No events after the end of the stream or error. - if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE { - return true - } - - // Generate the next event. - return yaml_parser_state_machine(parser, event) -} - -// Set parser error. -func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool { - parser.error = yaml_PARSER_ERROR - parser.problem = problem - parser.problem_mark = problem_mark - return false -} - -func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool { - parser.error = yaml_PARSER_ERROR - parser.context = context - parser.context_mark = context_mark - parser.problem = problem - parser.problem_mark = problem_mark - return false -} - -// State dispatcher. -func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool { - //trace("yaml_parser_state_machine", "state:", parser.state.String()) - - switch parser.state { - case yaml_PARSE_STREAM_START_STATE: - return yaml_parser_parse_stream_start(parser, event) - - case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: - return yaml_parser_parse_document_start(parser, event, true) - - case yaml_PARSE_DOCUMENT_START_STATE: - return yaml_parser_parse_document_start(parser, event, false) - - case yaml_PARSE_DOCUMENT_CONTENT_STATE: - return yaml_parser_parse_document_content(parser, event) - - case yaml_PARSE_DOCUMENT_END_STATE: - return yaml_parser_parse_document_end(parser, event) - - case yaml_PARSE_BLOCK_NODE_STATE: - return yaml_parser_parse_node(parser, event, true, false) - - case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: - return yaml_parser_parse_node(parser, event, true, true) - - case yaml_PARSE_FLOW_NODE_STATE: - return yaml_parser_parse_node(parser, event, false, false) - - case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: - return yaml_parser_parse_block_sequence_entry(parser, event, true) - - case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_block_sequence_entry(parser, event, false) - - case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_indentless_sequence_entry(parser, event) - - case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: - return yaml_parser_parse_block_mapping_key(parser, event, true) - - case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: - return yaml_parser_parse_block_mapping_key(parser, event, false) - - case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: - return yaml_parser_parse_block_mapping_value(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: - return yaml_parser_parse_flow_sequence_entry(parser, event, true) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_flow_sequence_entry(parser, event, false) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event) - - case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: - return yaml_parser_parse_flow_mapping_key(parser, event, true) - - case yaml_PARSE_FLOW_MAPPING_KEY_STATE: - return yaml_parser_parse_flow_mapping_key(parser, event, false) - - case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: - return yaml_parser_parse_flow_mapping_value(parser, event, false) - - case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: - return yaml_parser_parse_flow_mapping_value(parser, event, true) - - default: - panic("invalid parser state") - } -} - -// Parse the production: -// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END -// ************ -func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_STREAM_START_TOKEN { - return yaml_parser_set_parser_error(parser, "did not find expected ", token.start_mark) - } - parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE - *event = yaml_event_t{ - typ: yaml_STREAM_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - encoding: token.encoding, - } - skip_token(parser) - return true -} - -// Parse the productions: -// implicit_document ::= block_node DOCUMENT-END* -// * -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// ************************* -func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { - - token := peek_token(parser) - if token == nil { - return false - } - - // Parse extra document end indicators. - if !implicit { - for token.typ == yaml_DOCUMENT_END_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } - - if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN && - token.typ != yaml_TAG_DIRECTIVE_TOKEN && - token.typ != yaml_DOCUMENT_START_TOKEN && - token.typ != yaml_STREAM_END_TOKEN { - // Parse an implicit document. - if !yaml_parser_process_directives(parser, nil, nil) { - return false - } - parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) - parser.state = yaml_PARSE_BLOCK_NODE_STATE - - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - } else if token.typ != yaml_STREAM_END_TOKEN { - // Parse an explicit document. - var version_directive *yaml_version_directive_t - var tag_directives []yaml_tag_directive_t - start_mark := token.start_mark - if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) { - return false - } - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_DOCUMENT_START_TOKEN { - yaml_parser_set_parser_error(parser, - "did not find expected ", token.start_mark) - return false - } - parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) - parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE - end_mark := token.end_mark - - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - version_directive: version_directive, - tag_directives: tag_directives, - implicit: false, - } - skip_token(parser) - - } else { - // Parse the stream end. - parser.state = yaml_PARSE_END_STATE - *event = yaml_event_t{ - typ: yaml_STREAM_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - } - - return true -} - -// Parse the productions: -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// *********** -// -func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VERSION_DIRECTIVE_TOKEN || - token.typ == yaml_TAG_DIRECTIVE_TOKEN || - token.typ == yaml_DOCUMENT_START_TOKEN || - token.typ == yaml_DOCUMENT_END_TOKEN || - token.typ == yaml_STREAM_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - return yaml_parser_process_empty_scalar(parser, event, - token.start_mark) - } - return yaml_parser_parse_node(parser, event, true, false) -} - -// Parse the productions: -// implicit_document ::= block_node DOCUMENT-END* -// ************* -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// -func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - - start_mark := token.start_mark - end_mark := token.start_mark - - implicit := true - if token.typ == yaml_DOCUMENT_END_TOKEN { - end_mark = token.end_mark - skip_token(parser) - implicit = false - } - - parser.tag_directives = parser.tag_directives[:0] - - parser.state = yaml_PARSE_DOCUMENT_START_STATE - *event = yaml_event_t{ - typ: yaml_DOCUMENT_END_EVENT, - start_mark: start_mark, - end_mark: end_mark, - implicit: implicit, - } - return true -} - -// Parse the productions: -// block_node_or_indentless_sequence ::= -// ALIAS -// ***** -// | properties (block_content | indentless_block_sequence)? -// ********** * -// | block_content | indentless_block_sequence -// * -// block_node ::= ALIAS -// ***** -// | properties block_content? -// ********** * -// | block_content -// * -// flow_node ::= ALIAS -// ***** -// | properties flow_content? -// ********** * -// | flow_content -// * -// properties ::= TAG ANCHOR? | ANCHOR TAG? -// ************************* -// block_content ::= block_collection | flow_collection | SCALAR -// ****** -// flow_content ::= flow_collection | SCALAR -// ****** -func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { - //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_ALIAS_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - *event = yaml_event_t{ - typ: yaml_ALIAS_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - anchor: token.value, - } - skip_token(parser) - return true - } - - start_mark := token.start_mark - end_mark := token.start_mark - - var tag_token bool - var tag_handle, tag_suffix, anchor []byte - var tag_mark yaml_mark_t - if token.typ == yaml_ANCHOR_TOKEN { - anchor = token.value - start_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_TAG_TOKEN { - tag_token = true - tag_handle = token.value - tag_suffix = token.suffix - tag_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } else if token.typ == yaml_TAG_TOKEN { - tag_token = true - tag_handle = token.value - tag_suffix = token.suffix - start_mark = token.start_mark - tag_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_ANCHOR_TOKEN { - anchor = token.value - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } - - var tag []byte - if tag_token { - if len(tag_handle) == 0 { - tag = tag_suffix - tag_suffix = nil - } else { - for i := range parser.tag_directives { - if bytes.Equal(parser.tag_directives[i].handle, tag_handle) { - tag = append([]byte(nil), parser.tag_directives[i].prefix...) - tag = append(tag, tag_suffix...) - break - } - } - if len(tag) == 0 { - yaml_parser_set_parser_error_context(parser, - "while parsing a node", start_mark, - "found undefined tag handle", tag_mark) - return false - } - } - } - - implicit := len(tag) == 0 - if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), - } - return true - } - if token.typ == yaml_SCALAR_TOKEN { - var plain_implicit, quoted_implicit bool - end_mark = token.end_mark - if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') { - plain_implicit = true - } else if len(tag) == 0 { - quoted_implicit = true - } - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - value: token.value, - implicit: plain_implicit, - quoted_implicit: quoted_implicit, - style: yaml_style_t(token.style), - } - skip_token(parser) - return true - } - if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN { - // [Go] Some of the events below can be merged as they differ only on style. - end_mark = token.end_mark - parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE), - } - return true - } - if token.typ == yaml_FLOW_MAPPING_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), - } - return true - } - if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), - } - return true - } - if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), - } - return true - } - if len(anchor) > 0 || len(tag) > 0 { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - quoted_implicit: false, - style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), - } - return true - } - - context := "while parsing a flow node" - if block { - context = "while parsing a block node" - } - yaml_parser_set_parser_error_context(parser, context, start_mark, - "did not find expected node content", token.start_mark) - return false -} - -// Parse the productions: -// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END -// ******************** *********** * ********* -// -func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_BLOCK_ENTRY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, true, false) - } else { - parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - } - if token.typ == yaml_BLOCK_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - skip_token(parser) - return true - } - - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a block collection", context_mark, - "did not find expected '-' indicator", token.start_mark) -} - -// Parse the productions: -// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ -// *********** * -func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_BLOCK_ENTRY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_BLOCK_ENTRY_TOKEN && - token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, true, false) - } - parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark? - } - return true -} - -// Parse the productions: -// block_mapping ::= BLOCK-MAPPING_START -// ******************* -// ((KEY block_node_or_indentless_sequence?)? -// *** * -// (VALUE block_node_or_indentless_sequence?)?)* -// -// BLOCK-END -// ********* -// -func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_KEY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, true, true) - } else { - parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - } else if token.typ == yaml_BLOCK_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - return true - } - - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a block mapping", context_mark, - "did not find expected key", token.start_mark) -} - -// Parse the productions: -// block_mapping ::= BLOCK-MAPPING_START -// -// ((KEY block_node_or_indentless_sequence?)? -// -// (VALUE block_node_or_indentless_sequence?)?)* -// ***** * -// BLOCK-END -// -// -func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VALUE_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE) - return yaml_parser_parse_node(parser, event, true, true) - } - parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Parse the productions: -// flow_sequence ::= FLOW-SEQUENCE-START -// ******************* -// (flow_sequence_entry FLOW-ENTRY)* -// * ********** -// flow_sequence_entry? -// * -// FLOW-SEQUENCE-END -// ***************** -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * -// -func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - if !first { - if token.typ == yaml_FLOW_ENTRY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } else { - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a flow sequence", context_mark, - "did not find expected ',' or ']'", token.start_mark) - } - } - - if token.typ == yaml_KEY_TOKEN { - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - implicit: true, - style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), - } - skip_token(parser) - return true - } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - skip_token(parser) - return true -} - -// -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// *** * -// -func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_FLOW_ENTRY_TOKEN && - token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - mark := token.end_mark - skip_token(parser) - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) -} - -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// ***** * -// -func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VALUE_TOKEN { - skip_token(parser) - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * -// -func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.start_mark, // [Go] Shouldn't this be end_mark? - } - return true -} - -// Parse the productions: -// flow_mapping ::= FLOW-MAPPING-START -// ****************** -// (flow_mapping_entry FLOW-ENTRY)* -// * ********** -// flow_mapping_entry? -// ****************** -// FLOW-MAPPING-END -// **************** -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * *** * -// -func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ != yaml_FLOW_MAPPING_END_TOKEN { - if !first { - if token.typ == yaml_FLOW_ENTRY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } else { - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a flow mapping", context_mark, - "did not find expected ',' or '}'", token.start_mark) - } - } - - if token.typ == yaml_KEY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_FLOW_ENTRY_TOKEN && - token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } else { - parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) - } - } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - return true -} - -// Parse the productions: -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * ***** * -// -func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { - token := peek_token(parser) - if token == nil { - return false - } - if empty { - parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) - } - if token.typ == yaml_VALUE_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Generate an empty scalar event. -func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool { - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: mark, - end_mark: mark, - value: nil, // Empty - implicit: true, - style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), - } - return true -} - -var default_tag_directives = []yaml_tag_directive_t{ - {[]byte("!"), []byte("!")}, - {[]byte("!!"), []byte("tag:yaml.org,2002:")}, -} - -// Parse directives. -func yaml_parser_process_directives(parser *yaml_parser_t, - version_directive_ref **yaml_version_directive_t, - tag_directives_ref *[]yaml_tag_directive_t) bool { - - var version_directive *yaml_version_directive_t - var tag_directives []yaml_tag_directive_t - - token := peek_token(parser) - if token == nil { - return false - } - - for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN { - if token.typ == yaml_VERSION_DIRECTIVE_TOKEN { - if version_directive != nil { - yaml_parser_set_parser_error(parser, - "found duplicate %YAML directive", token.start_mark) - return false - } - if token.major != 1 || token.minor != 1 { - yaml_parser_set_parser_error(parser, - "found incompatible YAML document", token.start_mark) - return false - } - version_directive = &yaml_version_directive_t{ - major: token.major, - minor: token.minor, - } - } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN { - value := yaml_tag_directive_t{ - handle: token.value, - prefix: token.prefix, - } - if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) { - return false - } - tag_directives = append(tag_directives, value) - } - - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - - for i := range default_tag_directives { - if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) { - return false - } - } - - if version_directive_ref != nil { - *version_directive_ref = version_directive - } - if tag_directives_ref != nil { - *tag_directives_ref = tag_directives - } - return true -} - -// Append a tag directive to the directives stack. -func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool { - for i := range parser.tag_directives { - if bytes.Equal(value.handle, parser.tag_directives[i].handle) { - if allow_duplicates { - return true - } - return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark) - } - } - - // [Go] I suspect the copy is unnecessary. This was likely done - // because there was no way to track ownership of the data. - value_copy := yaml_tag_directive_t{ - handle: make([]byte, len(value.handle)), - prefix: make([]byte, len(value.prefix)), - } - copy(value_copy.handle, value.handle) - copy(value_copy.prefix, value.prefix) - parser.tag_directives = append(parser.tag_directives, value_copy) - return true -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/readerc.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/readerc.go deleted file mode 100644 index 7c1f5fac3db..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/readerc.go +++ /dev/null @@ -1,412 +0,0 @@ -package yaml - -import ( - "io" -) - -// Set the reader error and return 0. -func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool { - parser.error = yaml_READER_ERROR - parser.problem = problem - parser.problem_offset = offset - parser.problem_value = value - return false -} - -// Byte order marks. -const ( - bom_UTF8 = "\xef\xbb\xbf" - bom_UTF16LE = "\xff\xfe" - bom_UTF16BE = "\xfe\xff" -) - -// Determine the input stream encoding by checking the BOM symbol. If no BOM is -// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure. -func yaml_parser_determine_encoding(parser *yaml_parser_t) bool { - // Ensure that we had enough bytes in the raw buffer. - for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 { - if !yaml_parser_update_raw_buffer(parser) { - return false - } - } - - // Determine the encoding. - buf := parser.raw_buffer - pos := parser.raw_buffer_pos - avail := len(buf) - pos - if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] { - parser.encoding = yaml_UTF16LE_ENCODING - parser.raw_buffer_pos += 2 - parser.offset += 2 - } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] { - parser.encoding = yaml_UTF16BE_ENCODING - parser.raw_buffer_pos += 2 - parser.offset += 2 - } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] { - parser.encoding = yaml_UTF8_ENCODING - parser.raw_buffer_pos += 3 - parser.offset += 3 - } else { - parser.encoding = yaml_UTF8_ENCODING - } - return true -} - -// Update the raw buffer. -func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool { - size_read := 0 - - // Return if the raw buffer is full. - if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) { - return true - } - - // Return on EOF. - if parser.eof { - return true - } - - // Move the remaining bytes in the raw buffer to the beginning. - if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) { - copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:]) - } - parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos] - parser.raw_buffer_pos = 0 - - // Call the read handler to fill the buffer. - size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)]) - parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read] - if err == io.EOF { - parser.eof = true - } else if err != nil { - return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1) - } - return true -} - -// Ensure that the buffer contains at least `length` characters. -// Return true on success, false on failure. -// -// The length is supposed to be significantly less that the buffer size. -func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { - if parser.read_handler == nil { - panic("read handler must be set") - } - - // [Go] This function was changed to guarantee the requested length size at EOF. - // The fact we need to do this is pretty awful, but the description above implies - // for that to be the case, and there are tests - - // If the EOF flag is set and the raw buffer is empty, do nothing. - if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) { - // [Go] ACTUALLY! Read the documentation of this function above. - // This is just broken. To return true, we need to have the - // given length in the buffer. Not doing that means every single - // check that calls this function to make sure the buffer has a - // given length is Go) panicking; or C) accessing invalid memory. - //return true - } - - // Return if the buffer contains enough characters. - if parser.unread >= length { - return true - } - - // Determine the input encoding if it is not known yet. - if parser.encoding == yaml_ANY_ENCODING { - if !yaml_parser_determine_encoding(parser) { - return false - } - } - - // Move the unread characters to the beginning of the buffer. - buffer_len := len(parser.buffer) - if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len { - copy(parser.buffer, parser.buffer[parser.buffer_pos:]) - buffer_len -= parser.buffer_pos - parser.buffer_pos = 0 - } else if parser.buffer_pos == buffer_len { - buffer_len = 0 - parser.buffer_pos = 0 - } - - // Open the whole buffer for writing, and cut it before returning. - parser.buffer = parser.buffer[:cap(parser.buffer)] - - // Fill the buffer until it has enough characters. - first := true - for parser.unread < length { - - // Fill the raw buffer if necessary. - if !first || parser.raw_buffer_pos == len(parser.raw_buffer) { - if !yaml_parser_update_raw_buffer(parser) { - parser.buffer = parser.buffer[:buffer_len] - return false - } - } - first = false - - // Decode the raw buffer. - inner: - for parser.raw_buffer_pos != len(parser.raw_buffer) { - var value rune - var width int - - raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos - - // Decode the next character. - switch parser.encoding { - case yaml_UTF8_ENCODING: - // Decode a UTF-8 character. Check RFC 3629 - // (http://www.ietf.org/rfc/rfc3629.txt) for more details. - // - // The following table (taken from the RFC) is used for - // decoding. - // - // Char. number range | UTF-8 octet sequence - // (hexadecimal) | (binary) - // --------------------+------------------------------------ - // 0000 0000-0000 007F | 0xxxxxxx - // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx - // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx - // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - // - // Additionally, the characters in the range 0xD800-0xDFFF - // are prohibited as they are reserved for use with UTF-16 - // surrogate pairs. - - // Determine the length of the UTF-8 sequence. - octet := parser.raw_buffer[parser.raw_buffer_pos] - switch { - case octet&0x80 == 0x00: - width = 1 - case octet&0xE0 == 0xC0: - width = 2 - case octet&0xF0 == 0xE0: - width = 3 - case octet&0xF8 == 0xF0: - width = 4 - default: - // The leading octet is invalid. - return yaml_parser_set_reader_error(parser, - "invalid leading UTF-8 octet", - parser.offset, int(octet)) - } - - // Check if the raw buffer contains an incomplete character. - if width > raw_unread { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-8 octet sequence", - parser.offset, -1) - } - break inner - } - - // Decode the leading octet. - switch { - case octet&0x80 == 0x00: - value = rune(octet & 0x7F) - case octet&0xE0 == 0xC0: - value = rune(octet & 0x1F) - case octet&0xF0 == 0xE0: - value = rune(octet & 0x0F) - case octet&0xF8 == 0xF0: - value = rune(octet & 0x07) - default: - value = 0 - } - - // Check and decode the trailing octets. - for k := 1; k < width; k++ { - octet = parser.raw_buffer[parser.raw_buffer_pos+k] - - // Check if the octet is valid. - if (octet & 0xC0) != 0x80 { - return yaml_parser_set_reader_error(parser, - "invalid trailing UTF-8 octet", - parser.offset+k, int(octet)) - } - - // Decode the octet. - value = (value << 6) + rune(octet&0x3F) - } - - // Check the length of the sequence against the value. - switch { - case width == 1: - case width == 2 && value >= 0x80: - case width == 3 && value >= 0x800: - case width == 4 && value >= 0x10000: - default: - return yaml_parser_set_reader_error(parser, - "invalid length of a UTF-8 sequence", - parser.offset, -1) - } - - // Check the range of the value. - if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF { - return yaml_parser_set_reader_error(parser, - "invalid Unicode character", - parser.offset, int(value)) - } - - case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING: - var low, high int - if parser.encoding == yaml_UTF16LE_ENCODING { - low, high = 0, 1 - } else { - low, high = 1, 0 - } - - // The UTF-16 encoding is not as simple as one might - // naively think. Check RFC 2781 - // (http://www.ietf.org/rfc/rfc2781.txt). - // - // Normally, two subsequent bytes describe a Unicode - // character. However a special technique (called a - // surrogate pair) is used for specifying character - // values larger than 0xFFFF. - // - // A surrogate pair consists of two pseudo-characters: - // high surrogate area (0xD800-0xDBFF) - // low surrogate area (0xDC00-0xDFFF) - // - // The following formulas are used for decoding - // and encoding characters using surrogate pairs: - // - // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF) - // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF) - // W1 = 110110yyyyyyyyyy - // W2 = 110111xxxxxxxxxx - // - // where U is the character value, W1 is the high surrogate - // area, W2 is the low surrogate area. - - // Check for incomplete UTF-16 character. - if raw_unread < 2 { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-16 character", - parser.offset, -1) - } - break inner - } - - // Get the character. - value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) + - (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8) - - // Check for unexpected low surrogate area. - if value&0xFC00 == 0xDC00 { - return yaml_parser_set_reader_error(parser, - "unexpected low surrogate area", - parser.offset, int(value)) - } - - // Check for a high surrogate area. - if value&0xFC00 == 0xD800 { - width = 4 - - // Check for incomplete surrogate pair. - if raw_unread < 4 { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-16 surrogate pair", - parser.offset, -1) - } - break inner - } - - // Get the next character. - value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) + - (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8) - - // Check for a low surrogate area. - if value2&0xFC00 != 0xDC00 { - return yaml_parser_set_reader_error(parser, - "expected low surrogate area", - parser.offset+2, int(value2)) - } - - // Generate the value of the surrogate pair. - value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF) - } else { - width = 2 - } - - default: - panic("impossible") - } - - // Check if the character is in the allowed range: - // #x9 | #xA | #xD | [#x20-#x7E] (8 bit) - // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit) - // | [#x10000-#x10FFFF] (32 bit) - switch { - case value == 0x09: - case value == 0x0A: - case value == 0x0D: - case value >= 0x20 && value <= 0x7E: - case value == 0x85: - case value >= 0xA0 && value <= 0xD7FF: - case value >= 0xE000 && value <= 0xFFFD: - case value >= 0x10000 && value <= 0x10FFFF: - default: - return yaml_parser_set_reader_error(parser, - "control characters are not allowed", - parser.offset, int(value)) - } - - // Move the raw pointers. - parser.raw_buffer_pos += width - parser.offset += width - - // Finally put the character into the buffer. - if value <= 0x7F { - // 0000 0000-0000 007F . 0xxxxxxx - parser.buffer[buffer_len+0] = byte(value) - buffer_len += 1 - } else if value <= 0x7FF { - // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) - parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) - buffer_len += 2 - } else if value <= 0xFFFF { - // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) - parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) - parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) - buffer_len += 3 - } else { - // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) - parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) - parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) - parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) - buffer_len += 4 - } - - parser.unread++ - } - - // On EOF, put NUL into the buffer and return. - if parser.eof { - parser.buffer[buffer_len] = 0 - buffer_len++ - parser.unread++ - break - } - } - // [Go] Read the documentation of this function above. To return true, - // we need to have the given length in the buffer. Not doing that means - // every single check that calls this function to make sure the buffer - // has a given length is Go) panicking; or C) accessing invalid memory. - // This happens here due to the EOF above breaking early. - for buffer_len < length { - parser.buffer[buffer_len] = 0 - buffer_len++ - } - parser.buffer = parser.buffer[:buffer_len] - return true -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/resolve.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/resolve.go deleted file mode 100644 index 6c151db6fbd..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/resolve.go +++ /dev/null @@ -1,258 +0,0 @@ -package yaml - -import ( - "encoding/base64" - "math" - "regexp" - "strconv" - "strings" - "time" -) - -type resolveMapItem struct { - value interface{} - tag string -} - -var resolveTable = make([]byte, 256) -var resolveMap = make(map[string]resolveMapItem) - -func init() { - t := resolveTable - t[int('+')] = 'S' // Sign - t[int('-')] = 'S' - for _, c := range "0123456789" { - t[int(c)] = 'D' // Digit - } - for _, c := range "yYnNtTfFoO~" { - t[int(c)] = 'M' // In map - } - t[int('.')] = '.' // Float (potentially in map) - - var resolveMapList = []struct { - v interface{} - tag string - l []string - }{ - {true, yaml_BOOL_TAG, []string{"y", "Y", "yes", "Yes", "YES"}}, - {true, yaml_BOOL_TAG, []string{"true", "True", "TRUE"}}, - {true, yaml_BOOL_TAG, []string{"on", "On", "ON"}}, - {false, yaml_BOOL_TAG, []string{"n", "N", "no", "No", "NO"}}, - {false, yaml_BOOL_TAG, []string{"false", "False", "FALSE"}}, - {false, yaml_BOOL_TAG, []string{"off", "Off", "OFF"}}, - {nil, yaml_NULL_TAG, []string{"", "~", "null", "Null", "NULL"}}, - {math.NaN(), yaml_FLOAT_TAG, []string{".nan", ".NaN", ".NAN"}}, - {math.Inf(+1), yaml_FLOAT_TAG, []string{".inf", ".Inf", ".INF"}}, - {math.Inf(+1), yaml_FLOAT_TAG, []string{"+.inf", "+.Inf", "+.INF"}}, - {math.Inf(-1), yaml_FLOAT_TAG, []string{"-.inf", "-.Inf", "-.INF"}}, - {"<<", yaml_MERGE_TAG, []string{"<<"}}, - } - - m := resolveMap - for _, item := range resolveMapList { - for _, s := range item.l { - m[s] = resolveMapItem{item.v, item.tag} - } - } -} - -const longTagPrefix = "tag:yaml.org,2002:" - -func shortTag(tag string) string { - // TODO This can easily be made faster and produce less garbage. - if strings.HasPrefix(tag, longTagPrefix) { - return "!!" + tag[len(longTagPrefix):] - } - return tag -} - -func longTag(tag string) string { - if strings.HasPrefix(tag, "!!") { - return longTagPrefix + tag[2:] - } - return tag -} - -func resolvableTag(tag string) bool { - switch tag { - case "", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG, yaml_TIMESTAMP_TAG: - return true - } - return false -} - -var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`) - -func resolve(tag string, in string) (rtag string, out interface{}) { - if !resolvableTag(tag) { - return tag, in - } - - defer func() { - switch tag { - case "", rtag, yaml_STR_TAG, yaml_BINARY_TAG: - return - case yaml_FLOAT_TAG: - if rtag == yaml_INT_TAG { - switch v := out.(type) { - case int64: - rtag = yaml_FLOAT_TAG - out = float64(v) - return - case int: - rtag = yaml_FLOAT_TAG - out = float64(v) - return - } - } - } - failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag)) - }() - - // Any data is accepted as a !!str or !!binary. - // Otherwise, the prefix is enough of a hint about what it might be. - hint := byte('N') - if in != "" { - hint = resolveTable[in[0]] - } - if hint != 0 && tag != yaml_STR_TAG && tag != yaml_BINARY_TAG { - // Handle things we can lookup in a map. - if item, ok := resolveMap[in]; ok { - return item.tag, item.value - } - - // Base 60 floats are a bad idea, were dropped in YAML 1.2, and - // are purposefully unsupported here. They're still quoted on - // the way out for compatibility with other parser, though. - - switch hint { - case 'M': - // We've already checked the map above. - - case '.': - // Not in the map, so maybe a normal float. - floatv, err := strconv.ParseFloat(in, 64) - if err == nil { - return yaml_FLOAT_TAG, floatv - } - - case 'D', 'S': - // Int, float, or timestamp. - // Only try values as a timestamp if the value is unquoted or there's an explicit - // !!timestamp tag. - if tag == "" || tag == yaml_TIMESTAMP_TAG { - t, ok := parseTimestamp(in) - if ok { - return yaml_TIMESTAMP_TAG, t - } - } - - plain := strings.Replace(in, "_", "", -1) - intv, err := strconv.ParseInt(plain, 0, 64) - if err == nil { - if intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - uintv, err := strconv.ParseUint(plain, 0, 64) - if err == nil { - return yaml_INT_TAG, uintv - } - if yamlStyleFloat.MatchString(plain) { - floatv, err := strconv.ParseFloat(plain, 64) - if err == nil { - return yaml_FLOAT_TAG, floatv - } - } - if strings.HasPrefix(plain, "0b") { - intv, err := strconv.ParseInt(plain[2:], 2, 64) - if err == nil { - if intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - uintv, err := strconv.ParseUint(plain[2:], 2, 64) - if err == nil { - return yaml_INT_TAG, uintv - } - } else if strings.HasPrefix(plain, "-0b") { - intv, err := strconv.ParseInt("-" + plain[3:], 2, 64) - if err == nil { - if true || intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - } - default: - panic("resolveTable item not yet handled: " + string(rune(hint)) + " (with " + in + ")") - } - } - return yaml_STR_TAG, in -} - -// encodeBase64 encodes s as base64 that is broken up into multiple lines -// as appropriate for the resulting length. -func encodeBase64(s string) string { - const lineLen = 70 - encLen := base64.StdEncoding.EncodedLen(len(s)) - lines := encLen/lineLen + 1 - buf := make([]byte, encLen*2+lines) - in := buf[0:encLen] - out := buf[encLen:] - base64.StdEncoding.Encode(in, []byte(s)) - k := 0 - for i := 0; i < len(in); i += lineLen { - j := i + lineLen - if j > len(in) { - j = len(in) - } - k += copy(out[k:], in[i:j]) - if lines > 1 { - out[k] = '\n' - k++ - } - } - return string(out[:k]) -} - -// This is a subset of the formats allowed by the regular expression -// defined at http://yaml.org/type/timestamp.html. -var allowedTimestampFormats = []string{ - "2006-1-2T15:4:5.999999999Z07:00", // RCF3339Nano with short date fields. - "2006-1-2t15:4:5.999999999Z07:00", // RFC3339Nano with short date fields and lower-case "t". - "2006-1-2 15:4:5.999999999", // space separated with no time zone - "2006-1-2", // date only - // Notable exception: time.Parse cannot handle: "2001-12-14 21:59:43.10 -5" - // from the set of examples. -} - -// parseTimestamp parses s as a timestamp string and -// returns the timestamp and reports whether it succeeded. -// Timestamp formats are defined at http://yaml.org/type/timestamp.html -func parseTimestamp(s string) (time.Time, bool) { - // TODO write code to check all the formats supported by - // http://yaml.org/type/timestamp.html instead of using time.Parse. - - // Quick check: all date formats start with YYYY-. - i := 0 - for ; i < len(s); i++ { - if c := s[i]; c < '0' || c > '9' { - break - } - } - if i != 4 || i == len(s) || s[i] != '-' { - return time.Time{}, false - } - for _, format := range allowedTimestampFormats { - if t, err := time.Parse(format, s); err == nil { - return t, true - } - } - return time.Time{}, false -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/scannerc.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/scannerc.go deleted file mode 100644 index 077fd1dd2d4..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/scannerc.go +++ /dev/null @@ -1,2696 +0,0 @@ -package yaml - -import ( - "bytes" - "fmt" -) - -// Introduction -// ************ -// -// The following notes assume that you are familiar with the YAML specification -// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in -// some cases we are less restrictive that it requires. -// -// The process of transforming a YAML stream into a sequence of events is -// divided on two steps: Scanning and Parsing. -// -// The Scanner transforms the input stream into a sequence of tokens, while the -// parser transform the sequence of tokens produced by the Scanner into a -// sequence of parsing events. -// -// The Scanner is rather clever and complicated. The Parser, on the contrary, -// is a straightforward implementation of a recursive-descendant parser (or, -// LL(1) parser, as it is usually called). -// -// Actually there are two issues of Scanning that might be called "clever", the -// rest is quite straightforward. The issues are "block collection start" and -// "simple keys". Both issues are explained below in details. -// -// Here the Scanning step is explained and implemented. We start with the list -// of all the tokens produced by the Scanner together with short descriptions. -// -// Now, tokens: -// -// STREAM-START(encoding) # The stream start. -// STREAM-END # The stream end. -// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive. -// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive. -// DOCUMENT-START # '---' -// DOCUMENT-END # '...' -// BLOCK-SEQUENCE-START # Indentation increase denoting a block -// BLOCK-MAPPING-START # sequence or a block mapping. -// BLOCK-END # Indentation decrease. -// FLOW-SEQUENCE-START # '[' -// FLOW-SEQUENCE-END # ']' -// BLOCK-SEQUENCE-START # '{' -// BLOCK-SEQUENCE-END # '}' -// BLOCK-ENTRY # '-' -// FLOW-ENTRY # ',' -// KEY # '?' or nothing (simple keys). -// VALUE # ':' -// ALIAS(anchor) # '*anchor' -// ANCHOR(anchor) # '&anchor' -// TAG(handle,suffix) # '!handle!suffix' -// SCALAR(value,style) # A scalar. -// -// The following two tokens are "virtual" tokens denoting the beginning and the -// end of the stream: -// -// STREAM-START(encoding) -// STREAM-END -// -// We pass the information about the input stream encoding with the -// STREAM-START token. -// -// The next two tokens are responsible for tags: -// -// VERSION-DIRECTIVE(major,minor) -// TAG-DIRECTIVE(handle,prefix) -// -// Example: -// -// %YAML 1.1 -// %TAG ! !foo -// %TAG !yaml! tag:yaml.org,2002: -// --- -// -// The correspoding sequence of tokens: -// -// STREAM-START(utf-8) -// VERSION-DIRECTIVE(1,1) -// TAG-DIRECTIVE("!","!foo") -// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:") -// DOCUMENT-START -// STREAM-END -// -// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole -// line. -// -// The document start and end indicators are represented by: -// -// DOCUMENT-START -// DOCUMENT-END -// -// Note that if a YAML stream contains an implicit document (without '---' -// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be -// produced. -// -// In the following examples, we present whole documents together with the -// produced tokens. -// -// 1. An implicit document: -// -// 'a scalar' -// -// Tokens: -// -// STREAM-START(utf-8) -// SCALAR("a scalar",single-quoted) -// STREAM-END -// -// 2. An explicit document: -// -// --- -// 'a scalar' -// ... -// -// Tokens: -// -// STREAM-START(utf-8) -// DOCUMENT-START -// SCALAR("a scalar",single-quoted) -// DOCUMENT-END -// STREAM-END -// -// 3. Several documents in a stream: -// -// 'a scalar' -// --- -// 'another scalar' -// --- -// 'yet another scalar' -// -// Tokens: -// -// STREAM-START(utf-8) -// SCALAR("a scalar",single-quoted) -// DOCUMENT-START -// SCALAR("another scalar",single-quoted) -// DOCUMENT-START -// SCALAR("yet another scalar",single-quoted) -// STREAM-END -// -// We have already introduced the SCALAR token above. The following tokens are -// used to describe aliases, anchors, tag, and scalars: -// -// ALIAS(anchor) -// ANCHOR(anchor) -// TAG(handle,suffix) -// SCALAR(value,style) -// -// The following series of examples illustrate the usage of these tokens: -// -// 1. A recursive sequence: -// -// &A [ *A ] -// -// Tokens: -// -// STREAM-START(utf-8) -// ANCHOR("A") -// FLOW-SEQUENCE-START -// ALIAS("A") -// FLOW-SEQUENCE-END -// STREAM-END -// -// 2. A tagged scalar: -// -// !!float "3.14" # A good approximation. -// -// Tokens: -// -// STREAM-START(utf-8) -// TAG("!!","float") -// SCALAR("3.14",double-quoted) -// STREAM-END -// -// 3. Various scalar styles: -// -// --- # Implicit empty plain scalars do not produce tokens. -// --- a plain scalar -// --- 'a single-quoted scalar' -// --- "a double-quoted scalar" -// --- |- -// a literal scalar -// --- >- -// a folded -// scalar -// -// Tokens: -// -// STREAM-START(utf-8) -// DOCUMENT-START -// DOCUMENT-START -// SCALAR("a plain scalar",plain) -// DOCUMENT-START -// SCALAR("a single-quoted scalar",single-quoted) -// DOCUMENT-START -// SCALAR("a double-quoted scalar",double-quoted) -// DOCUMENT-START -// SCALAR("a literal scalar",literal) -// DOCUMENT-START -// SCALAR("a folded scalar",folded) -// STREAM-END -// -// Now it's time to review collection-related tokens. We will start with -// flow collections: -// -// FLOW-SEQUENCE-START -// FLOW-SEQUENCE-END -// FLOW-MAPPING-START -// FLOW-MAPPING-END -// FLOW-ENTRY -// KEY -// VALUE -// -// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and -// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}' -// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the -// indicators '?' and ':', which are used for denoting mapping keys and values, -// are represented by the KEY and VALUE tokens. -// -// The following examples show flow collections: -// -// 1. A flow sequence: -// -// [item 1, item 2, item 3] -// -// Tokens: -// -// STREAM-START(utf-8) -// FLOW-SEQUENCE-START -// SCALAR("item 1",plain) -// FLOW-ENTRY -// SCALAR("item 2",plain) -// FLOW-ENTRY -// SCALAR("item 3",plain) -// FLOW-SEQUENCE-END -// STREAM-END -// -// 2. A flow mapping: -// -// { -// a simple key: a value, # Note that the KEY token is produced. -// ? a complex key: another value, -// } -// -// Tokens: -// -// STREAM-START(utf-8) -// FLOW-MAPPING-START -// KEY -// SCALAR("a simple key",plain) -// VALUE -// SCALAR("a value",plain) -// FLOW-ENTRY -// KEY -// SCALAR("a complex key",plain) -// VALUE -// SCALAR("another value",plain) -// FLOW-ENTRY -// FLOW-MAPPING-END -// STREAM-END -// -// A simple key is a key which is not denoted by the '?' indicator. Note that -// the Scanner still produce the KEY token whenever it encounters a simple key. -// -// For scanning block collections, the following tokens are used (note that we -// repeat KEY and VALUE here): -// -// BLOCK-SEQUENCE-START -// BLOCK-MAPPING-START -// BLOCK-END -// BLOCK-ENTRY -// KEY -// VALUE -// -// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation -// increase that precedes a block collection (cf. the INDENT token in Python). -// The token BLOCK-END denote indentation decrease that ends a block collection -// (cf. the DEDENT token in Python). However YAML has some syntax pecularities -// that makes detections of these tokens more complex. -// -// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators -// '-', '?', and ':' correspondingly. -// -// The following examples show how the tokens BLOCK-SEQUENCE-START, -// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner: -// -// 1. Block sequences: -// -// - item 1 -// - item 2 -// - -// - item 3.1 -// - item 3.2 -// - -// key 1: value 1 -// key 2: value 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-ENTRY -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 3.1",plain) -// BLOCK-ENTRY -// SCALAR("item 3.2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// 2. Block mappings: -// -// a simple key: a value # The KEY token is produced here. -// ? a complex key -// : another value -// a mapping: -// key 1: value 1 -// key 2: value 2 -// a sequence: -// - item 1 -// - item 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("a simple key",plain) -// VALUE -// SCALAR("a value",plain) -// KEY -// SCALAR("a complex key",plain) -// VALUE -// SCALAR("another value",plain) -// KEY -// SCALAR("a mapping",plain) -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// KEY -// SCALAR("a sequence",plain) -// VALUE -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// YAML does not always require to start a new block collection from a new -// line. If the current line contains only '-', '?', and ':' indicators, a new -// block collection may start at the current line. The following examples -// illustrate this case: -// -// 1. Collections in a sequence: -// -// - - item 1 -// - item 2 -// - key 1: value 1 -// key 2: value 2 -// - ? complex key -// : complex value -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("complex key") -// VALUE -// SCALAR("complex value") -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// 2. Collections in a mapping: -// -// ? a sequence -// : - item 1 -// - item 2 -// ? a mapping -// : key 1: value 1 -// key 2: value 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("a sequence",plain) -// VALUE -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// KEY -// SCALAR("a mapping",plain) -// VALUE -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// YAML also permits non-indented sequences if they are included into a block -// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced: -// -// key: -// - item 1 # BLOCK-SEQUENCE-START is NOT produced here. -// - item 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("key",plain) -// VALUE -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// - -// Ensure that the buffer contains the required number of characters. -// Return true on success, false on failure (reader error or memory error). -func cache(parser *yaml_parser_t, length int) bool { - // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B) - return parser.unread >= length || yaml_parser_update_buffer(parser, length) -} - -// Advance the buffer pointer. -func skip(parser *yaml_parser_t) { - parser.mark.index++ - parser.mark.column++ - parser.unread-- - parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) -} - -func skip_line(parser *yaml_parser_t) { - if is_crlf(parser.buffer, parser.buffer_pos) { - parser.mark.index += 2 - parser.mark.column = 0 - parser.mark.line++ - parser.unread -= 2 - parser.buffer_pos += 2 - } else if is_break(parser.buffer, parser.buffer_pos) { - parser.mark.index++ - parser.mark.column = 0 - parser.mark.line++ - parser.unread-- - parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) - } -} - -// Copy a character to a string buffer and advance pointers. -func read(parser *yaml_parser_t, s []byte) []byte { - w := width(parser.buffer[parser.buffer_pos]) - if w == 0 { - panic("invalid character sequence") - } - if len(s) == 0 { - s = make([]byte, 0, 32) - } - if w == 1 && len(s)+w <= cap(s) { - s = s[:len(s)+1] - s[len(s)-1] = parser.buffer[parser.buffer_pos] - parser.buffer_pos++ - } else { - s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...) - parser.buffer_pos += w - } - parser.mark.index++ - parser.mark.column++ - parser.unread-- - return s -} - -// Copy a line break character to a string buffer and advance pointers. -func read_line(parser *yaml_parser_t, s []byte) []byte { - buf := parser.buffer - pos := parser.buffer_pos - switch { - case buf[pos] == '\r' && buf[pos+1] == '\n': - // CR LF . LF - s = append(s, '\n') - parser.buffer_pos += 2 - parser.mark.index++ - parser.unread-- - case buf[pos] == '\r' || buf[pos] == '\n': - // CR|LF . LF - s = append(s, '\n') - parser.buffer_pos += 1 - case buf[pos] == '\xC2' && buf[pos+1] == '\x85': - // NEL . LF - s = append(s, '\n') - parser.buffer_pos += 2 - case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): - // LS|PS . LS|PS - s = append(s, buf[parser.buffer_pos:pos+3]...) - parser.buffer_pos += 3 - default: - return s - } - parser.mark.index++ - parser.mark.column = 0 - parser.mark.line++ - parser.unread-- - return s -} - -// Get the next token. -func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { - // Erase the token object. - *token = yaml_token_t{} // [Go] Is this necessary? - - // No tokens after STREAM-END or error. - if parser.stream_end_produced || parser.error != yaml_NO_ERROR { - return true - } - - // Ensure that the tokens queue contains enough tokens. - if !parser.token_available { - if !yaml_parser_fetch_more_tokens(parser) { - return false - } - } - - // Fetch the next token from the queue. - *token = parser.tokens[parser.tokens_head] - parser.tokens_head++ - parser.tokens_parsed++ - parser.token_available = false - - if token.typ == yaml_STREAM_END_TOKEN { - parser.stream_end_produced = true - } - return true -} - -// Set the scanner error and return false. -func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool { - parser.error = yaml_SCANNER_ERROR - parser.context = context - parser.context_mark = context_mark - parser.problem = problem - parser.problem_mark = parser.mark - return false -} - -func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool { - context := "while parsing a tag" - if directive { - context = "while parsing a %TAG directive" - } - return yaml_parser_set_scanner_error(parser, context, context_mark, problem) -} - -func trace(args ...interface{}) func() { - pargs := append([]interface{}{"+++"}, args...) - fmt.Println(pargs...) - pargs = append([]interface{}{"---"}, args...) - return func() { fmt.Println(pargs...) } -} - -// Ensure that the tokens queue contains at least one token which can be -// returned to the Parser. -func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { - // While we need more tokens to fetch, do it. - for { - // Check if we really need to fetch more tokens. - need_more_tokens := false - - if parser.tokens_head == len(parser.tokens) { - // Queue is empty. - need_more_tokens = true - } else { - // Check if any potential simple key may occupy the head position. - if !yaml_parser_stale_simple_keys(parser) { - return false - } - - for i := range parser.simple_keys { - simple_key := &parser.simple_keys[i] - if simple_key.possible && simple_key.token_number == parser.tokens_parsed { - need_more_tokens = true - break - } - } - } - - // We are finished. - if !need_more_tokens { - break - } - // Fetch the next token. - if !yaml_parser_fetch_next_token(parser) { - return false - } - } - - parser.token_available = true - return true -} - -// The dispatcher for token fetchers. -func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { - // Ensure that the buffer is initialized. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check if we just started scanning. Fetch STREAM-START then. - if !parser.stream_start_produced { - return yaml_parser_fetch_stream_start(parser) - } - - // Eat whitespaces and comments until we reach the next token. - if !yaml_parser_scan_to_next_token(parser) { - return false - } - - // Remove obsolete potential simple keys. - if !yaml_parser_stale_simple_keys(parser) { - return false - } - - // Check the indentation level against the current column. - if !yaml_parser_unroll_indent(parser, parser.mark.column) { - return false - } - - // Ensure that the buffer contains at least 4 characters. 4 is the length - // of the longest indicators ('--- ' and '... '). - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - - // Is it the end of the stream? - if is_z(parser.buffer, parser.buffer_pos) { - return yaml_parser_fetch_stream_end(parser) - } - - // Is it a directive? - if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' { - return yaml_parser_fetch_directive(parser) - } - - buf := parser.buffer - pos := parser.buffer_pos - - // Is it the document start indicator? - if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) { - return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN) - } - - // Is it the document end indicator? - if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) { - return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN) - } - - // Is it the flow sequence start indicator? - if buf[pos] == '[' { - return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN) - } - - // Is it the flow mapping start indicator? - if parser.buffer[parser.buffer_pos] == '{' { - return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN) - } - - // Is it the flow sequence end indicator? - if parser.buffer[parser.buffer_pos] == ']' { - return yaml_parser_fetch_flow_collection_end(parser, - yaml_FLOW_SEQUENCE_END_TOKEN) - } - - // Is it the flow mapping end indicator? - if parser.buffer[parser.buffer_pos] == '}' { - return yaml_parser_fetch_flow_collection_end(parser, - yaml_FLOW_MAPPING_END_TOKEN) - } - - // Is it the flow entry indicator? - if parser.buffer[parser.buffer_pos] == ',' { - return yaml_parser_fetch_flow_entry(parser) - } - - // Is it the block entry indicator? - if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) { - return yaml_parser_fetch_block_entry(parser) - } - - // Is it the key indicator? - if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_key(parser) - } - - // Is it the value indicator? - if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_value(parser) - } - - // Is it an alias? - if parser.buffer[parser.buffer_pos] == '*' { - return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN) - } - - // Is it an anchor? - if parser.buffer[parser.buffer_pos] == '&' { - return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN) - } - - // Is it a tag? - if parser.buffer[parser.buffer_pos] == '!' { - return yaml_parser_fetch_tag(parser) - } - - // Is it a literal scalar? - if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 { - return yaml_parser_fetch_block_scalar(parser, true) - } - - // Is it a folded scalar? - if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 { - return yaml_parser_fetch_block_scalar(parser, false) - } - - // Is it a single-quoted scalar? - if parser.buffer[parser.buffer_pos] == '\'' { - return yaml_parser_fetch_flow_scalar(parser, true) - } - - // Is it a double-quoted scalar? - if parser.buffer[parser.buffer_pos] == '"' { - return yaml_parser_fetch_flow_scalar(parser, false) - } - - // Is it a plain scalar? - // - // A plain scalar may start with any non-blank characters except - // - // '-', '?', ':', ',', '[', ']', '{', '}', - // '#', '&', '*', '!', '|', '>', '\'', '\"', - // '%', '@', '`'. - // - // In the block context (and, for the '-' indicator, in the flow context - // too), it may also start with the characters - // - // '-', '?', ':' - // - // if it is followed by a non-space character. - // - // The last rule is more restrictive than the specification requires. - // [Go] Make this logic more reasonable. - //switch parser.buffer[parser.buffer_pos] { - //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`': - //} - if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' || - parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' || - parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || - parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' || - parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' || - parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' || - parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' || - parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' || - parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') || - (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) || - (parser.flow_level == 0 && - (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') && - !is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_plain_scalar(parser) - } - - // If we don't determine the token type so far, it is an error. - return yaml_parser_set_scanner_error(parser, - "while scanning for the next token", parser.mark, - "found character that cannot start any token") -} - -// Check the list of potential simple keys and remove the positions that -// cannot contain simple keys anymore. -func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool { - // Check for a potential simple key for each flow level. - for i := range parser.simple_keys { - simple_key := &parser.simple_keys[i] - - // The specification requires that a simple key - // - // - is limited to a single line, - // - is shorter than 1024 characters. - if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) { - - // Check if the potential simple key to be removed is required. - if simple_key.required { - return yaml_parser_set_scanner_error(parser, - "while scanning a simple key", simple_key.mark, - "could not find expected ':'") - } - simple_key.possible = false - } - } - return true -} - -// Check if a simple key may start at the current position and add it if -// needed. -func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { - // A simple key is required at the current position if the scanner is in - // the block context and the current column coincides with the indentation - // level. - - required := parser.flow_level == 0 && parser.indent == parser.mark.column - - // - // If the current position may start a simple key, save it. - // - if parser.simple_key_allowed { - simple_key := yaml_simple_key_t{ - possible: true, - required: required, - token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), - } - simple_key.mark = parser.mark - - if !yaml_parser_remove_simple_key(parser) { - return false - } - parser.simple_keys[len(parser.simple_keys)-1] = simple_key - } - return true -} - -// Remove a potential simple key at the current flow level. -func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { - i := len(parser.simple_keys) - 1 - if parser.simple_keys[i].possible { - // If the key is required, it is an error. - if parser.simple_keys[i].required { - return yaml_parser_set_scanner_error(parser, - "while scanning a simple key", parser.simple_keys[i].mark, - "could not find expected ':'") - } - } - // Remove the key from the stack. - parser.simple_keys[i].possible = false - return true -} - -// Increase the flow level and resize the simple key list if needed. -func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { - // Reset the simple key on the next level. - parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) - - // Increase the flow level. - parser.flow_level++ - return true -} - -// Decrease the flow level. -func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { - if parser.flow_level > 0 { - parser.flow_level-- - parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1] - } - return true -} - -// Push the current indentation level to the stack and set the new level -// the current column is greater than the indentation level. In this case, -// append or insert the specified token into the token queue. -func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool { - // In the flow context, do nothing. - if parser.flow_level > 0 { - return true - } - - if parser.indent < column { - // Push the current indentation level to the stack and set the new - // indentation level. - parser.indents = append(parser.indents, parser.indent) - parser.indent = column - - // Create a token and insert it into the queue. - token := yaml_token_t{ - typ: typ, - start_mark: mark, - end_mark: mark, - } - if number > -1 { - number -= parser.tokens_parsed - } - yaml_insert_token(parser, number, &token) - } - return true -} - -// Pop indentation levels from the indents stack until the current level -// becomes less or equal to the column. For each indentation level, append -// the BLOCK-END token. -func yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool { - // In the flow context, do nothing. - if parser.flow_level > 0 { - return true - } - - // Loop through the indentation levels in the stack. - for parser.indent > column { - // Create a token and append it to the queue. - token := yaml_token_t{ - typ: yaml_BLOCK_END_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - } - yaml_insert_token(parser, -1, &token) - - // Pop the indentation level. - parser.indent = parser.indents[len(parser.indents)-1] - parser.indents = parser.indents[:len(parser.indents)-1] - } - return true -} - -// Initialize the scanner and produce the STREAM-START token. -func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { - - // Set the initial indentation. - parser.indent = -1 - - // Initialize the simple key stack. - parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) - - // A simple key is allowed at the beginning of the stream. - parser.simple_key_allowed = true - - // We have started. - parser.stream_start_produced = true - - // Create the STREAM-START token and append it to the queue. - token := yaml_token_t{ - typ: yaml_STREAM_START_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - encoding: parser.encoding, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the STREAM-END token and shut down the scanner. -func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool { - - // Force new line. - if parser.mark.column != 0 { - parser.mark.column = 0 - parser.mark.line++ - } - - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Create the STREAM-END token and append it to the queue. - token := yaml_token_t{ - typ: yaml_STREAM_END_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token. -func yaml_parser_fetch_directive(parser *yaml_parser_t) bool { - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. - token := yaml_token_t{} - if !yaml_parser_scan_directive(parser, &token) { - return false - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the DOCUMENT-START or DOCUMENT-END token. -func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Consume the token. - start_mark := parser.mark - - skip(parser) - skip(parser) - skip(parser) - - end_mark := parser.mark - - // Create the DOCUMENT-START or DOCUMENT-END token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token. -func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // The indicators '[' and '{' may start a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // Increase the flow level. - if !yaml_parser_increase_flow_level(parser) { - return false - } - - // A simple key may follow the indicators '[' and '{'. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token. -func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // Reset any potential simple key on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Decrease the flow level. - if !yaml_parser_decrease_flow_level(parser) { - return false - } - - // No simple keys after the indicators ']' and '}'. - parser.simple_key_allowed = false - - // Consume the token. - - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-ENTRY token. -func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool { - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after ','. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-ENTRY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_FLOW_ENTRY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the BLOCK-ENTRY token. -func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool { - // Check if the scanner is in the block context. - if parser.flow_level == 0 { - // Check if we are allowed to start a new entry. - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "block sequence entries are not allowed in this context") - } - // Add the BLOCK-SEQUENCE-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) { - return false - } - } else { - // It is an error for the '-' indicator to occur in the flow context, - // but we let the Parser detect and report about it because the Parser - // is able to point to the context. - } - - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after '-'. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the BLOCK-ENTRY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_BLOCK_ENTRY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the KEY token. -func yaml_parser_fetch_key(parser *yaml_parser_t) bool { - - // In the block context, additional checks are required. - if parser.flow_level == 0 { - // Check if we are allowed to start a new key (not nessesary simple). - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "mapping keys are not allowed in this context") - } - // Add the BLOCK-MAPPING-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { - return false - } - } - - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after '?' in the block context. - parser.simple_key_allowed = parser.flow_level == 0 - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the KEY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_KEY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the VALUE token. -func yaml_parser_fetch_value(parser *yaml_parser_t) bool { - - simple_key := &parser.simple_keys[len(parser.simple_keys)-1] - - // Have we found a simple key? - if simple_key.possible { - // Create the KEY token and insert it into the queue. - token := yaml_token_t{ - typ: yaml_KEY_TOKEN, - start_mark: simple_key.mark, - end_mark: simple_key.mark, - } - yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token) - - // In the block context, we may need to add the BLOCK-MAPPING-START token. - if !yaml_parser_roll_indent(parser, simple_key.mark.column, - simple_key.token_number, - yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) { - return false - } - - // Remove the simple key. - simple_key.possible = false - - // A simple key cannot follow another simple key. - parser.simple_key_allowed = false - - } else { - // The ':' indicator follows a complex key. - - // In the block context, extra checks are required. - if parser.flow_level == 0 { - - // Check if we are allowed to start a complex value. - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "mapping values are not allowed in this context") - } - - // Add the BLOCK-MAPPING-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { - return false - } - } - - // Simple keys after ':' are allowed in the block context. - parser.simple_key_allowed = parser.flow_level == 0 - } - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the VALUE token and append it to the queue. - token := yaml_token_t{ - typ: yaml_VALUE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the ALIAS or ANCHOR token. -func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // An anchor or an alias could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow an anchor or an alias. - parser.simple_key_allowed = false - - // Create the ALIAS or ANCHOR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_anchor(parser, &token, typ) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the TAG token. -func yaml_parser_fetch_tag(parser *yaml_parser_t) bool { - // A tag could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a tag. - parser.simple_key_allowed = false - - // Create the TAG token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_tag(parser, &token) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens. -func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool { - // Remove any potential simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // A simple key may follow a block scalar. - parser.simple_key_allowed = true - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_block_scalar(parser, &token, literal) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens. -func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool { - // A plain scalar could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a flow scalar. - parser.simple_key_allowed = false - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_flow_scalar(parser, &token, single) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,plain) token. -func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool { - // A plain scalar could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a flow scalar. - parser.simple_key_allowed = false - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_plain_scalar(parser, &token) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Eat whitespaces and comments until the next token is found. -func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { - - // Until the next token is not found. - for { - // Allow the BOM mark to start a line. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) { - skip(parser) - } - - // Eat whitespaces. - // Tabs are allowed: - // - in the flow context - // - in the block context, but not at the beginning of the line or - // after '-', '?', or ':' (complex value). - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Eat a comment until a line break. - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // If it is a line break, eat it. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - - // In the block context, a new line may start a simple key. - if parser.flow_level == 0 { - parser.simple_key_allowed = true - } - } else { - break // We have found a token. - } - } - - return true -} - -// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// -func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool { - // Eat '%'. - start_mark := parser.mark - skip(parser) - - // Scan the directive name. - var name []byte - if !yaml_parser_scan_directive_name(parser, start_mark, &name) { - return false - } - - // Is it a YAML directive? - if bytes.Equal(name, []byte("YAML")) { - // Scan the VERSION directive value. - var major, minor int8 - if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) { - return false - } - end_mark := parser.mark - - // Create a VERSION-DIRECTIVE token. - *token = yaml_token_t{ - typ: yaml_VERSION_DIRECTIVE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - major: major, - minor: minor, - } - - // Is it a TAG directive? - } else if bytes.Equal(name, []byte("TAG")) { - // Scan the TAG directive value. - var handle, prefix []byte - if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) { - return false - } - end_mark := parser.mark - - // Create a TAG-DIRECTIVE token. - *token = yaml_token_t{ - typ: yaml_TAG_DIRECTIVE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: handle, - prefix: prefix, - } - - // Unknown directive. - } else { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "found unknown directive name") - return false - } - - // Eat the rest of the line including any comments. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // Check if we are at the end of the line. - if !is_breakz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "did not find expected comment or line break") - return false - } - - // Eat a line break. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - } - - return true -} - -// Scan the directive name. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^ -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^ -// -func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool { - // Consume the directive name. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - var s []byte - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the name is empty. - if len(s) == 0 { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "could not find expected directive name") - return false - } - - // Check for an blank character after the name. - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "found unexpected non-alphabetical character") - return false - } - *name = s - return true -} - -// Scan the value of VERSION-DIRECTIVE. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^^^ -func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool { - // Eat whitespaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Consume the major version number. - if !yaml_parser_scan_version_directive_number(parser, start_mark, major) { - return false - } - - // Eat '.'. - if parser.buffer[parser.buffer_pos] != '.' { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "did not find expected digit or '.' character") - } - - skip(parser) - - // Consume the minor version number. - if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) { - return false - } - return true -} - -const max_number_length = 2 - -// Scan the version number of VERSION-DIRECTIVE. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^ -// %YAML 1.1 # a comment \n -// ^ -func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool { - - // Repeat while the next character is digit. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - var value, length int8 - for is_digit(parser.buffer, parser.buffer_pos) { - // Check if the number is too long. - length++ - if length > max_number_length { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "found extremely long version number") - } - value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos)) - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the number was present. - if length == 0 { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "did not find expected version number") - } - *number = value - return true -} - -// Scan the value of a TAG-DIRECTIVE token. -// -// Scope: -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// -func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool { - var handle_value, prefix_value []byte - - // Eat whitespaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Scan a handle. - if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) { - return false - } - - // Expect a whitespace. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blank(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", - start_mark, "did not find expected whitespace") - return false - } - - // Eat whitespaces. - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Scan a prefix. - if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) { - return false - } - - // Expect a whitespace or line break. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", - start_mark, "did not find expected whitespace or line break") - return false - } - - *handle = handle_value - *prefix = prefix_value - return true -} - -func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool { - var s []byte - - // Eat the indicator character. - start_mark := parser.mark - skip(parser) - - // Consume the value. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - end_mark := parser.mark - - /* - * Check if length of the anchor is greater than 0 and it is followed by - * a whitespace character or one of the indicators: - * - * '?', ':', ',', ']', '}', '%', '@', '`'. - */ - - if len(s) == 0 || - !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' || - parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' || - parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' || - parser.buffer[parser.buffer_pos] == '`') { - context := "while scanning an alias" - if typ == yaml_ANCHOR_TOKEN { - context = "while scanning an anchor" - } - yaml_parser_set_scanner_error(parser, context, start_mark, - "did not find expected alphabetic or numeric character") - return false - } - - // Create a token. - *token = yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - value: s, - } - - return true -} - -/* - * Scan a TAG token. - */ - -func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool { - var handle, suffix []byte - - start_mark := parser.mark - - // Check if the tag is in the canonical form. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - if parser.buffer[parser.buffer_pos+1] == '<' { - // Keep the handle as '' - - // Eat '!<' - skip(parser) - skip(parser) - - // Consume the tag value. - if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { - return false - } - - // Check for '>' and eat it. - if parser.buffer[parser.buffer_pos] != '>' { - yaml_parser_set_scanner_error(parser, "while scanning a tag", - start_mark, "did not find the expected '>'") - return false - } - - skip(parser) - } else { - // The tag has either the '!suffix' or the '!handle!suffix' form. - - // First, try to scan a handle. - if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) { - return false - } - - // Check if it is, indeed, handle. - if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' { - // Scan the suffix now. - if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { - return false - } - } else { - // It wasn't a handle after all. Scan the rest of the tag. - if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) { - return false - } - - // Set the handle to '!'. - handle = []byte{'!'} - - // A special case: the '!' tag. Set the handle to '' and the - // suffix to '!'. - if len(suffix) == 0 { - handle, suffix = suffix, handle - } - } - } - - // Check the character which ends the tag. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a tag", - start_mark, "did not find expected whitespace or line break") - return false - } - - end_mark := parser.mark - - // Create a token. - *token = yaml_token_t{ - typ: yaml_TAG_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: handle, - suffix: suffix, - } - return true -} - -// Scan a tag handle. -func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool { - // Check the initial '!' character. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.buffer[parser.buffer_pos] != '!' { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected '!'") - return false - } - - var s []byte - - // Copy the '!' character. - s = read(parser, s) - - // Copy all subsequent alphabetical and numerical characters. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the trailing character is '!' and copy it. - if parser.buffer[parser.buffer_pos] == '!' { - s = read(parser, s) - } else { - // It's either the '!' tag or not really a tag handle. If it's a %TAG - // directive, it's an error. If it's a tag token, it must be a part of URI. - if directive && string(s) != "!" { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected '!'") - return false - } - } - - *handle = s - return true -} - -// Scan a tag. -func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { - //size_t length = head ? strlen((char *)head) : 0 - var s []byte - hasTag := len(head) > 0 - - // Copy the head if needed. - // - // Note that we don't copy the leading '!' character. - if len(head) > 1 { - s = append(s, head[1:]...) - } - - // Scan the tag. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // The set of characters that may appear in URI is as follows: - // - // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&', - // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']', - // '%'. - // [Go] Convert this into more reasonable logic. - for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' || - parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' || - parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' || - parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' || - parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' || - parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' || - parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' || - parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' || - parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' || - parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' || - parser.buffer[parser.buffer_pos] == '%' { - // Check if it is a URI-escape sequence. - if parser.buffer[parser.buffer_pos] == '%' { - if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) { - return false - } - } else { - s = read(parser, s) - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - hasTag = true - } - - if !hasTag { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected tag URI") - return false - } - *uri = s - return true -} - -// Decode an URI-escape sequence corresponding to a single UTF-8 character. -func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool { - - // Decode the required number of characters. - w := 1024 - for w > 0 { - // Check for a URI-escaped octet. - if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { - return false - } - - if !(parser.buffer[parser.buffer_pos] == '%' && - is_hex(parser.buffer, parser.buffer_pos+1) && - is_hex(parser.buffer, parser.buffer_pos+2)) { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find URI escaped octet") - } - - // Get the octet. - octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2)) - - // If it is the leading octet, determine the length of the UTF-8 sequence. - if w == 1024 { - w = width(octet) - if w == 0 { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "found an incorrect leading UTF-8 octet") - } - } else { - // Check if the trailing octet is correct. - if octet&0xC0 != 0x80 { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "found an incorrect trailing UTF-8 octet") - } - } - - // Copy the octet and move the pointers. - *s = append(*s, octet) - skip(parser) - skip(parser) - skip(parser) - w-- - } - return true -} - -// Scan a block scalar. -func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool { - // Eat the indicator '|' or '>'. - start_mark := parser.mark - skip(parser) - - // Scan the additional block scalar indicators. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check for a chomping indicator. - var chomping, increment int - if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { - // Set the chomping method and eat the indicator. - if parser.buffer[parser.buffer_pos] == '+' { - chomping = +1 - } else { - chomping = -1 - } - skip(parser) - - // Check for an indentation indicator. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if is_digit(parser.buffer, parser.buffer_pos) { - // Check that the indentation is greater than 0. - if parser.buffer[parser.buffer_pos] == '0' { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found an indentation indicator equal to 0") - return false - } - - // Get the indentation level and eat the indicator. - increment = as_digit(parser.buffer, parser.buffer_pos) - skip(parser) - } - - } else if is_digit(parser.buffer, parser.buffer_pos) { - // Do the same as above, but in the opposite order. - - if parser.buffer[parser.buffer_pos] == '0' { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found an indentation indicator equal to 0") - return false - } - increment = as_digit(parser.buffer, parser.buffer_pos) - skip(parser) - - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { - if parser.buffer[parser.buffer_pos] == '+' { - chomping = +1 - } else { - chomping = -1 - } - skip(parser) - } - } - - // Eat whitespaces and comments to the end of the line. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // Check if we are at the end of the line. - if !is_breakz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "did not find expected comment or line break") - return false - } - - // Eat a line break. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - } - - end_mark := parser.mark - - // Set the indentation level if it was specified. - var indent int - if increment > 0 { - if parser.indent >= 0 { - indent = parser.indent + increment - } else { - indent = increment - } - } - - // Scan the leading line breaks and determine the indentation level if needed. - var s, leading_break, trailing_breaks []byte - if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { - return false - } - - // Scan the block scalar content. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - var leading_blank, trailing_blank bool - for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) { - // We are at the beginning of a non-empty line. - - // Is it a trailing whitespace? - trailing_blank = is_blank(parser.buffer, parser.buffer_pos) - - // Check if we need to fold the leading line break. - if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' { - // Do we need to join the lines by space? - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } - } else { - s = append(s, leading_break...) - } - leading_break = leading_break[:0] - - // Append the remaining line breaks. - s = append(s, trailing_breaks...) - trailing_breaks = trailing_breaks[:0] - - // Is it a leading whitespace? - leading_blank = is_blank(parser.buffer, parser.buffer_pos) - - // Consume the current line. - for !is_breakz(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Consume the line break. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - leading_break = read_line(parser, leading_break) - - // Eat the following indentation spaces and line breaks. - if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { - return false - } - } - - // Chomp the tail. - if chomping != -1 { - s = append(s, leading_break...) - } - if chomping == 1 { - s = append(s, trailing_breaks...) - } - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_LITERAL_SCALAR_STYLE, - } - if !literal { - token.style = yaml_FOLDED_SCALAR_STYLE - } - return true -} - -// Scan indentation spaces and line breaks for a block scalar. Determine the -// indentation level if needed. -func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool { - *end_mark = parser.mark - - // Eat the indentation spaces and line breaks. - max_indent := 0 - for { - // Eat the indentation spaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - if parser.mark.column > max_indent { - max_indent = parser.mark.column - } - - // Check for a tab character messing the indentation. - if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) { - return yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found a tab character where an indentation space is expected") - } - - // Have we found a non-empty line? - if !is_break(parser.buffer, parser.buffer_pos) { - break - } - - // Consume the line break. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - // [Go] Should really be returning breaks instead. - *breaks = read_line(parser, *breaks) - *end_mark = parser.mark - } - - // Determine the indentation level if needed. - if *indent == 0 { - *indent = max_indent - if *indent < parser.indent+1 { - *indent = parser.indent + 1 - } - if *indent < 1 { - *indent = 1 - } - } - return true -} - -// Scan a quoted scalar. -func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool { - // Eat the left quote. - start_mark := parser.mark - skip(parser) - - // Consume the content of the quoted scalar. - var s, leading_break, trailing_breaks, whitespaces []byte - for { - // Check that there are no document indicators at the beginning of the line. - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - - if parser.mark.column == 0 && - ((parser.buffer[parser.buffer_pos+0] == '-' && - parser.buffer[parser.buffer_pos+1] == '-' && - parser.buffer[parser.buffer_pos+2] == '-') || - (parser.buffer[parser.buffer_pos+0] == '.' && - parser.buffer[parser.buffer_pos+1] == '.' && - parser.buffer[parser.buffer_pos+2] == '.')) && - is_blankz(parser.buffer, parser.buffer_pos+3) { - yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", - start_mark, "found unexpected document indicator") - return false - } - - // Check for EOF. - if is_z(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", - start_mark, "found unexpected end of stream") - return false - } - - // Consume non-blank characters. - leading_blanks := false - for !is_blankz(parser.buffer, parser.buffer_pos) { - if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' { - // Is is an escaped single quote. - s = append(s, '\'') - skip(parser) - skip(parser) - - } else if single && parser.buffer[parser.buffer_pos] == '\'' { - // It is a right single quote. - break - } else if !single && parser.buffer[parser.buffer_pos] == '"' { - // It is a right double quote. - break - - } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) { - // It is an escaped line break. - if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { - return false - } - skip(parser) - skip_line(parser) - leading_blanks = true - break - - } else if !single && parser.buffer[parser.buffer_pos] == '\\' { - // It is an escape sequence. - code_length := 0 - - // Check the escape character. - switch parser.buffer[parser.buffer_pos+1] { - case '0': - s = append(s, 0) - case 'a': - s = append(s, '\x07') - case 'b': - s = append(s, '\x08') - case 't', '\t': - s = append(s, '\x09') - case 'n': - s = append(s, '\x0A') - case 'v': - s = append(s, '\x0B') - case 'f': - s = append(s, '\x0C') - case 'r': - s = append(s, '\x0D') - case 'e': - s = append(s, '\x1B') - case ' ': - s = append(s, '\x20') - case '"': - s = append(s, '"') - case '\'': - s = append(s, '\'') - case '\\': - s = append(s, '\\') - case 'N': // NEL (#x85) - s = append(s, '\xC2') - s = append(s, '\x85') - case '_': // #xA0 - s = append(s, '\xC2') - s = append(s, '\xA0') - case 'L': // LS (#x2028) - s = append(s, '\xE2') - s = append(s, '\x80') - s = append(s, '\xA8') - case 'P': // PS (#x2029) - s = append(s, '\xE2') - s = append(s, '\x80') - s = append(s, '\xA9') - case 'x': - code_length = 2 - case 'u': - code_length = 4 - case 'U': - code_length = 8 - default: - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "found unknown escape character") - return false - } - - skip(parser) - skip(parser) - - // Consume an arbitrary escape code. - if code_length > 0 { - var value int - - // Scan the character value. - if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) { - return false - } - for k := 0; k < code_length; k++ { - if !is_hex(parser.buffer, parser.buffer_pos+k) { - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "did not find expected hexdecimal number") - return false - } - value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k) - } - - // Check the value and write the character. - if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF { - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "found invalid Unicode character escape code") - return false - } - if value <= 0x7F { - s = append(s, byte(value)) - } else if value <= 0x7FF { - s = append(s, byte(0xC0+(value>>6))) - s = append(s, byte(0x80+(value&0x3F))) - } else if value <= 0xFFFF { - s = append(s, byte(0xE0+(value>>12))) - s = append(s, byte(0x80+((value>>6)&0x3F))) - s = append(s, byte(0x80+(value&0x3F))) - } else { - s = append(s, byte(0xF0+(value>>18))) - s = append(s, byte(0x80+((value>>12)&0x3F))) - s = append(s, byte(0x80+((value>>6)&0x3F))) - s = append(s, byte(0x80+(value&0x3F))) - } - - // Advance the pointer. - for k := 0; k < code_length; k++ { - skip(parser) - } - } - } else { - // It is a non-escaped non-blank character. - s = read(parser, s) - } - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - } - - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check if we are at the end of the scalar. - if single { - if parser.buffer[parser.buffer_pos] == '\'' { - break - } - } else { - if parser.buffer[parser.buffer_pos] == '"' { - break - } - } - - // Consume blank characters. - for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { - if is_blank(parser.buffer, parser.buffer_pos) { - // Consume a space or a tab character. - if !leading_blanks { - whitespaces = read(parser, whitespaces) - } else { - skip(parser) - } - } else { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - // Check if it is a first line break. - if !leading_blanks { - whitespaces = whitespaces[:0] - leading_break = read_line(parser, leading_break) - leading_blanks = true - } else { - trailing_breaks = read_line(parser, trailing_breaks) - } - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Join the whitespaces or fold line breaks. - if leading_blanks { - // Do we need to fold line breaks? - if len(leading_break) > 0 && leading_break[0] == '\n' { - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } else { - s = append(s, trailing_breaks...) - } - } else { - s = append(s, leading_break...) - s = append(s, trailing_breaks...) - } - trailing_breaks = trailing_breaks[:0] - leading_break = leading_break[:0] - } else { - s = append(s, whitespaces...) - whitespaces = whitespaces[:0] - } - } - - // Eat the right quote. - skip(parser) - end_mark := parser.mark - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_SINGLE_QUOTED_SCALAR_STYLE, - } - if !single { - token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - return true -} - -// Scan a plain scalar. -func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool { - - var s, leading_break, trailing_breaks, whitespaces []byte - var leading_blanks bool - var indent = parser.indent + 1 - - start_mark := parser.mark - end_mark := parser.mark - - // Consume the content of the plain scalar. - for { - // Check for a document indicator. - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - if parser.mark.column == 0 && - ((parser.buffer[parser.buffer_pos+0] == '-' && - parser.buffer[parser.buffer_pos+1] == '-' && - parser.buffer[parser.buffer_pos+2] == '-') || - (parser.buffer[parser.buffer_pos+0] == '.' && - parser.buffer[parser.buffer_pos+1] == '.' && - parser.buffer[parser.buffer_pos+2] == '.')) && - is_blankz(parser.buffer, parser.buffer_pos+3) { - break - } - - // Check for a comment. - if parser.buffer[parser.buffer_pos] == '#' { - break - } - - // Consume non-blank characters. - for !is_blankz(parser.buffer, parser.buffer_pos) { - - // Check for indicators that may end a plain scalar. - if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) || - (parser.flow_level > 0 && - (parser.buffer[parser.buffer_pos] == ',' || - parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || - parser.buffer[parser.buffer_pos] == '}')) { - break - } - - // Check if we need to join whitespaces and breaks. - if leading_blanks || len(whitespaces) > 0 { - if leading_blanks { - // Do we need to fold line breaks? - if leading_break[0] == '\n' { - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } else { - s = append(s, trailing_breaks...) - } - } else { - s = append(s, leading_break...) - s = append(s, trailing_breaks...) - } - trailing_breaks = trailing_breaks[:0] - leading_break = leading_break[:0] - leading_blanks = false - } else { - s = append(s, whitespaces...) - whitespaces = whitespaces[:0] - } - } - - // Copy the character. - s = read(parser, s) - - end_mark = parser.mark - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - } - - // Is it the end? - if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) { - break - } - - // Consume blank characters. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { - if is_blank(parser.buffer, parser.buffer_pos) { - - // Check for tab characters that abuse indentation. - if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", - start_mark, "found a tab character that violates indentation") - return false - } - - // Consume a space or a tab character. - if !leading_blanks { - whitespaces = read(parser, whitespaces) - } else { - skip(parser) - } - } else { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - // Check if it is a first line break. - if !leading_blanks { - whitespaces = whitespaces[:0] - leading_break = read_line(parser, leading_break) - leading_blanks = true - } else { - trailing_breaks = read_line(parser, trailing_breaks) - } - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check indentation level. - if parser.flow_level == 0 && parser.mark.column < indent { - break - } - } - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_PLAIN_SCALAR_STYLE, - } - - // Note that we change the 'simple_key_allowed' flag. - if leading_blanks { - parser.simple_key_allowed = true - } - return true -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/sorter.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/sorter.go deleted file mode 100644 index 4c45e660a8f..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/sorter.go +++ /dev/null @@ -1,113 +0,0 @@ -package yaml - -import ( - "reflect" - "unicode" -) - -type keyList []reflect.Value - -func (l keyList) Len() int { return len(l) } -func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } -func (l keyList) Less(i, j int) bool { - a := l[i] - b := l[j] - ak := a.Kind() - bk := b.Kind() - for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() { - a = a.Elem() - ak = a.Kind() - } - for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() { - b = b.Elem() - bk = b.Kind() - } - af, aok := keyFloat(a) - bf, bok := keyFloat(b) - if aok && bok { - if af != bf { - return af < bf - } - if ak != bk { - return ak < bk - } - return numLess(a, b) - } - if ak != reflect.String || bk != reflect.String { - return ak < bk - } - ar, br := []rune(a.String()), []rune(b.String()) - for i := 0; i < len(ar) && i < len(br); i++ { - if ar[i] == br[i] { - continue - } - al := unicode.IsLetter(ar[i]) - bl := unicode.IsLetter(br[i]) - if al && bl { - return ar[i] < br[i] - } - if al || bl { - return bl - } - var ai, bi int - var an, bn int64 - if ar[i] == '0' || br[i] == '0' { - for j := i-1; j >= 0 && unicode.IsDigit(ar[j]); j-- { - if ar[j] != '0' { - an = 1 - bn = 1 - break - } - } - } - for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ { - an = an*10 + int64(ar[ai]-'0') - } - for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ { - bn = bn*10 + int64(br[bi]-'0') - } - if an != bn { - return an < bn - } - if ai != bi { - return ai < bi - } - return ar[i] < br[i] - } - return len(ar) < len(br) -} - -// keyFloat returns a float value for v if it is a number/bool -// and whether it is a number/bool or not. -func keyFloat(v reflect.Value) (f float64, ok bool) { - switch v.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return float64(v.Int()), true - case reflect.Float32, reflect.Float64: - return v.Float(), true - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return float64(v.Uint()), true - case reflect.Bool: - if v.Bool() { - return 1, true - } - return 0, true - } - return 0, false -} - -// numLess returns whether a < b. -// a and b must necessarily have the same kind. -func numLess(a, b reflect.Value) bool { - switch a.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return a.Int() < b.Int() - case reflect.Float32, reflect.Float64: - return a.Float() < b.Float() - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return a.Uint() < b.Uint() - case reflect.Bool: - return !a.Bool() && b.Bool() - } - panic("not a number") -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/writerc.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/writerc.go deleted file mode 100644 index a2dde608cb7..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/writerc.go +++ /dev/null @@ -1,26 +0,0 @@ -package yaml - -// Set the writer error and return false. -func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { - emitter.error = yaml_WRITER_ERROR - emitter.problem = problem - return false -} - -// Flush the output buffer. -func yaml_emitter_flush(emitter *yaml_emitter_t) bool { - if emitter.write_handler == nil { - panic("write handler not set") - } - - // Check if the buffer is empty. - if emitter.buffer_pos == 0 { - return true - } - - if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { - return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) - } - emitter.buffer_pos = 0 - return true -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yaml.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yaml.go deleted file mode 100644 index de85aa4cdb7..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yaml.go +++ /dev/null @@ -1,466 +0,0 @@ -// Package yaml implements YAML support for the Go language. -// -// Source code and other details for the project are available at GitHub: -// -// https://github.com/go-yaml/yaml -// -package yaml - -import ( - "errors" - "fmt" - "io" - "reflect" - "strings" - "sync" -) - -// MapSlice encodes and decodes as a YAML map. -// The order of keys is preserved when encoding and decoding. -type MapSlice []MapItem - -// MapItem is an item in a MapSlice. -type MapItem struct { - Key, Value interface{} -} - -// The Unmarshaler interface may be implemented by types to customize their -// behavior when being unmarshaled from a YAML document. The UnmarshalYAML -// method receives a function that may be called to unmarshal the original -// YAML value into a field or variable. It is safe to call the unmarshal -// function parameter more than once if necessary. -type Unmarshaler interface { - UnmarshalYAML(unmarshal func(interface{}) error) error -} - -// The Marshaler interface may be implemented by types to customize their -// behavior when being marshaled into a YAML document. The returned value -// is marshaled in place of the original value implementing Marshaler. -// -// If an error is returned by MarshalYAML, the marshaling procedure stops -// and returns with the provided error. -type Marshaler interface { - MarshalYAML() (interface{}, error) -} - -// Unmarshal decodes the first document found within the in byte slice -// and assigns decoded values into the out value. -// -// Maps and pointers (to a struct, string, int, etc) are accepted as out -// values. If an internal pointer within a struct is not initialized, -// the yaml package will initialize it if necessary for unmarshalling -// the provided data. The out parameter must not be nil. -// -// The type of the decoded values should be compatible with the respective -// values in out. If one or more values cannot be decoded due to a type -// mismatches, decoding continues partially until the end of the YAML -// content, and a *yaml.TypeError is returned with details for all -// missed values. -// -// Struct fields are only unmarshalled if they are exported (have an -// upper case first letter), and are unmarshalled using the field name -// lowercased as the default key. Custom keys may be defined via the -// "yaml" name in the field tag: the content preceding the first comma -// is used as the key, and the following comma-separated options are -// used to tweak the marshalling process (see Marshal). -// Conflicting names result in a runtime error. -// -// For example: -// -// type T struct { -// F int `yaml:"a,omitempty"` -// B int -// } -// var t T -// yaml.Unmarshal([]byte("a: 1\nb: 2"), &t) -// -// See the documentation of Marshal for the format of tags and a list of -// supported tag options. -// -func Unmarshal(in []byte, out interface{}) (err error) { - return unmarshal(in, out, false) -} - -// UnmarshalStrict is like Unmarshal except that any fields that are found -// in the data that do not have corresponding struct members, or mapping -// keys that are duplicates, will result in -// an error. -func UnmarshalStrict(in []byte, out interface{}) (err error) { - return unmarshal(in, out, true) -} - -// A Decorder reads and decodes YAML values from an input stream. -type Decoder struct { - strict bool - parser *parser -} - -// NewDecoder returns a new decoder that reads from r. -// -// The decoder introduces its own buffering and may read -// data from r beyond the YAML values requested. -func NewDecoder(r io.Reader) *Decoder { - return &Decoder{ - parser: newParserFromReader(r), - } -} - -// SetStrict sets whether strict decoding behaviour is enabled when -// decoding items in the data (see UnmarshalStrict). By default, decoding is not strict. -func (dec *Decoder) SetStrict(strict bool) { - dec.strict = strict -} - -// Decode reads the next YAML-encoded value from its input -// and stores it in the value pointed to by v. -// -// See the documentation for Unmarshal for details about the -// conversion of YAML into a Go value. -func (dec *Decoder) Decode(v interface{}) (err error) { - d := newDecoder(dec.strict) - defer handleErr(&err) - node := dec.parser.parse() - if node == nil { - return io.EOF - } - out := reflect.ValueOf(v) - if out.Kind() == reflect.Ptr && !out.IsNil() { - out = out.Elem() - } - d.unmarshal(node, out) - if len(d.terrors) > 0 { - return &TypeError{d.terrors} - } - return nil -} - -func unmarshal(in []byte, out interface{}, strict bool) (err error) { - defer handleErr(&err) - d := newDecoder(strict) - p := newParser(in) - defer p.destroy() - node := p.parse() - if node != nil { - v := reflect.ValueOf(out) - if v.Kind() == reflect.Ptr && !v.IsNil() { - v = v.Elem() - } - d.unmarshal(node, v) - } - if len(d.terrors) > 0 { - return &TypeError{d.terrors} - } - return nil -} - -// Marshal serializes the value provided into a YAML document. The structure -// of the generated document will reflect the structure of the value itself. -// Maps and pointers (to struct, string, int, etc) are accepted as the in value. -// -// Struct fields are only marshalled if they are exported (have an upper case -// first letter), and are marshalled using the field name lowercased as the -// default key. Custom keys may be defined via the "yaml" name in the field -// tag: the content preceding the first comma is used as the key, and the -// following comma-separated options are used to tweak the marshalling process. -// Conflicting names result in a runtime error. -// -// The field tag format accepted is: -// -// `(...) yaml:"[][,[,]]" (...)` -// -// The following flags are currently supported: -// -// omitempty Only include the field if it's not set to the zero -// value for the type or to empty slices or maps. -// Zero valued structs will be omitted if all their public -// fields are zero, unless they implement an IsZero -// method (see the IsZeroer interface type), in which -// case the field will be included if that method returns true. -// -// flow Marshal using a flow style (useful for structs, -// sequences and maps). -// -// inline Inline the field, which must be a struct or a map, -// causing all of its fields or keys to be processed as if -// they were part of the outer struct. For maps, keys must -// not conflict with the yaml keys of other struct fields. -// -// In addition, if the key is "-", the field is ignored. -// -// For example: -// -// type T struct { -// F int `yaml:"a,omitempty"` -// B int -// } -// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n" -// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" -// -func Marshal(in interface{}) (out []byte, err error) { - defer handleErr(&err) - e := newEncoder() - defer e.destroy() - e.marshalDoc("", reflect.ValueOf(in)) - e.finish() - out = e.out - return -} - -// An Encoder writes YAML values to an output stream. -type Encoder struct { - encoder *encoder -} - -// NewEncoder returns a new encoder that writes to w. -// The Encoder should be closed after use to flush all data -// to w. -func NewEncoder(w io.Writer) *Encoder { - return &Encoder{ - encoder: newEncoderWithWriter(w), - } -} - -// Encode writes the YAML encoding of v to the stream. -// If multiple items are encoded to the stream, the -// second and subsequent document will be preceded -// with a "---" document separator, but the first will not. -// -// See the documentation for Marshal for details about the conversion of Go -// values to YAML. -func (e *Encoder) Encode(v interface{}) (err error) { - defer handleErr(&err) - e.encoder.marshalDoc("", reflect.ValueOf(v)) - return nil -} - -// Close closes the encoder by writing any remaining data. -// It does not write a stream terminating string "...". -func (e *Encoder) Close() (err error) { - defer handleErr(&err) - e.encoder.finish() - return nil -} - -func handleErr(err *error) { - if v := recover(); v != nil { - if e, ok := v.(yamlError); ok { - *err = e.err - } else { - panic(v) - } - } -} - -type yamlError struct { - err error -} - -func fail(err error) { - panic(yamlError{err}) -} - -func failf(format string, args ...interface{}) { - panic(yamlError{fmt.Errorf("yaml: "+format, args...)}) -} - -// A TypeError is returned by Unmarshal when one or more fields in -// the YAML document cannot be properly decoded into the requested -// types. When this error is returned, the value is still -// unmarshaled partially. -type TypeError struct { - Errors []string -} - -func (e *TypeError) Error() string { - return fmt.Sprintf("yaml: unmarshal errors:\n %s", strings.Join(e.Errors, "\n ")) -} - -// -------------------------------------------------------------------------- -// Maintain a mapping of keys to structure field indexes - -// The code in this section was copied from mgo/bson. - -// structInfo holds details for the serialization of fields of -// a given struct. -type structInfo struct { - FieldsMap map[string]fieldInfo - FieldsList []fieldInfo - - // InlineMap is the number of the field in the struct that - // contains an ,inline map, or -1 if there's none. - InlineMap int -} - -type fieldInfo struct { - Key string - Num int - OmitEmpty bool - Flow bool - // Id holds the unique field identifier, so we can cheaply - // check for field duplicates without maintaining an extra map. - Id int - - // Inline holds the field index if the field is part of an inlined struct. - Inline []int -} - -var structMap = make(map[reflect.Type]*structInfo) -var fieldMapMutex sync.RWMutex - -func getStructInfo(st reflect.Type) (*structInfo, error) { - fieldMapMutex.RLock() - sinfo, found := structMap[st] - fieldMapMutex.RUnlock() - if found { - return sinfo, nil - } - - n := st.NumField() - fieldsMap := make(map[string]fieldInfo) - fieldsList := make([]fieldInfo, 0, n) - inlineMap := -1 - for i := 0; i != n; i++ { - field := st.Field(i) - if field.PkgPath != "" && !field.Anonymous { - continue // Private field - } - - info := fieldInfo{Num: i} - - tag := field.Tag.Get("yaml") - if tag == "" && strings.Index(string(field.Tag), ":") < 0 { - tag = string(field.Tag) - } - if tag == "-" { - continue - } - - inline := false - fields := strings.Split(tag, ",") - if len(fields) > 1 { - for _, flag := range fields[1:] { - switch flag { - case "omitempty": - info.OmitEmpty = true - case "flow": - info.Flow = true - case "inline": - inline = true - default: - return nil, errors.New(fmt.Sprintf("Unsupported flag %q in tag %q of type %s", flag, tag, st)) - } - } - tag = fields[0] - } - - if inline { - switch field.Type.Kind() { - case reflect.Map: - if inlineMap >= 0 { - return nil, errors.New("Multiple ,inline maps in struct " + st.String()) - } - if field.Type.Key() != reflect.TypeOf("") { - return nil, errors.New("Option ,inline needs a map with string keys in struct " + st.String()) - } - inlineMap = info.Num - case reflect.Struct: - sinfo, err := getStructInfo(field.Type) - if err != nil { - return nil, err - } - for _, finfo := range sinfo.FieldsList { - if _, found := fieldsMap[finfo.Key]; found { - msg := "Duplicated key '" + finfo.Key + "' in struct " + st.String() - return nil, errors.New(msg) - } - if finfo.Inline == nil { - finfo.Inline = []int{i, finfo.Num} - } else { - finfo.Inline = append([]int{i}, finfo.Inline...) - } - finfo.Id = len(fieldsList) - fieldsMap[finfo.Key] = finfo - fieldsList = append(fieldsList, finfo) - } - default: - //return nil, errors.New("Option ,inline needs a struct value or map field") - return nil, errors.New("Option ,inline needs a struct value field") - } - continue - } - - if tag != "" { - info.Key = tag - } else { - info.Key = strings.ToLower(field.Name) - } - - if _, found = fieldsMap[info.Key]; found { - msg := "Duplicated key '" + info.Key + "' in struct " + st.String() - return nil, errors.New(msg) - } - - info.Id = len(fieldsList) - fieldsList = append(fieldsList, info) - fieldsMap[info.Key] = info - } - - sinfo = &structInfo{ - FieldsMap: fieldsMap, - FieldsList: fieldsList, - InlineMap: inlineMap, - } - - fieldMapMutex.Lock() - structMap[st] = sinfo - fieldMapMutex.Unlock() - return sinfo, nil -} - -// IsZeroer is used to check whether an object is zero to -// determine whether it should be omitted when marshaling -// with the omitempty flag. One notable implementation -// is time.Time. -type IsZeroer interface { - IsZero() bool -} - -func isZero(v reflect.Value) bool { - kind := v.Kind() - if z, ok := v.Interface().(IsZeroer); ok { - if (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() { - return true - } - return z.IsZero() - } - switch kind { - case reflect.String: - return len(v.String()) == 0 - case reflect.Interface, reflect.Ptr: - return v.IsNil() - case reflect.Slice: - return v.Len() == 0 - case reflect.Map: - return v.Len() == 0 - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Bool: - return !v.Bool() - case reflect.Struct: - vt := v.Type() - for i := v.NumField() - 1; i >= 0; i-- { - if vt.Field(i).PkgPath != "" { - continue // Private field - } - if !isZero(v.Field(i)) { - return false - } - } - return true - } - return false -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yamlh.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yamlh.go deleted file mode 100644 index e25cee563be..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yamlh.go +++ /dev/null @@ -1,738 +0,0 @@ -package yaml - -import ( - "fmt" - "io" -) - -// The version directive data. -type yaml_version_directive_t struct { - major int8 // The major version number. - minor int8 // The minor version number. -} - -// The tag directive data. -type yaml_tag_directive_t struct { - handle []byte // The tag handle. - prefix []byte // The tag prefix. -} - -type yaml_encoding_t int - -// The stream encoding. -const ( - // Let the parser choose the encoding. - yaml_ANY_ENCODING yaml_encoding_t = iota - - yaml_UTF8_ENCODING // The default UTF-8 encoding. - yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM. - yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM. -) - -type yaml_break_t int - -// Line break types. -const ( - // Let the parser choose the break type. - yaml_ANY_BREAK yaml_break_t = iota - - yaml_CR_BREAK // Use CR for line breaks (Mac style). - yaml_LN_BREAK // Use LN for line breaks (Unix style). - yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style). -) - -type yaml_error_type_t int - -// Many bad things could happen with the parser and emitter. -const ( - // No error is produced. - yaml_NO_ERROR yaml_error_type_t = iota - - yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory. - yaml_READER_ERROR // Cannot read or decode the input stream. - yaml_SCANNER_ERROR // Cannot scan the input stream. - yaml_PARSER_ERROR // Cannot parse the input stream. - yaml_COMPOSER_ERROR // Cannot compose a YAML document. - yaml_WRITER_ERROR // Cannot write to the output stream. - yaml_EMITTER_ERROR // Cannot emit a YAML stream. -) - -// The pointer position. -type yaml_mark_t struct { - index int // The position index. - line int // The position line. - column int // The position column. -} - -// Node Styles - -type yaml_style_t int8 - -type yaml_scalar_style_t yaml_style_t - -// Scalar styles. -const ( - // Let the emitter choose the style. - yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota - - yaml_PLAIN_SCALAR_STYLE // The plain scalar style. - yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style. - yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style. - yaml_LITERAL_SCALAR_STYLE // The literal scalar style. - yaml_FOLDED_SCALAR_STYLE // The folded scalar style. -) - -type yaml_sequence_style_t yaml_style_t - -// Sequence styles. -const ( - // Let the emitter choose the style. - yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota - - yaml_BLOCK_SEQUENCE_STYLE // The block sequence style. - yaml_FLOW_SEQUENCE_STYLE // The flow sequence style. -) - -type yaml_mapping_style_t yaml_style_t - -// Mapping styles. -const ( - // Let the emitter choose the style. - yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota - - yaml_BLOCK_MAPPING_STYLE // The block mapping style. - yaml_FLOW_MAPPING_STYLE // The flow mapping style. -) - -// Tokens - -type yaml_token_type_t int - -// Token types. -const ( - // An empty token. - yaml_NO_TOKEN yaml_token_type_t = iota - - yaml_STREAM_START_TOKEN // A STREAM-START token. - yaml_STREAM_END_TOKEN // A STREAM-END token. - - yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token. - yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token. - yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token. - yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token. - - yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token. - yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token. - yaml_BLOCK_END_TOKEN // A BLOCK-END token. - - yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token. - yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token. - yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token. - yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token. - - yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token. - yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token. - yaml_KEY_TOKEN // A KEY token. - yaml_VALUE_TOKEN // A VALUE token. - - yaml_ALIAS_TOKEN // An ALIAS token. - yaml_ANCHOR_TOKEN // An ANCHOR token. - yaml_TAG_TOKEN // A TAG token. - yaml_SCALAR_TOKEN // A SCALAR token. -) - -func (tt yaml_token_type_t) String() string { - switch tt { - case yaml_NO_TOKEN: - return "yaml_NO_TOKEN" - case yaml_STREAM_START_TOKEN: - return "yaml_STREAM_START_TOKEN" - case yaml_STREAM_END_TOKEN: - return "yaml_STREAM_END_TOKEN" - case yaml_VERSION_DIRECTIVE_TOKEN: - return "yaml_VERSION_DIRECTIVE_TOKEN" - case yaml_TAG_DIRECTIVE_TOKEN: - return "yaml_TAG_DIRECTIVE_TOKEN" - case yaml_DOCUMENT_START_TOKEN: - return "yaml_DOCUMENT_START_TOKEN" - case yaml_DOCUMENT_END_TOKEN: - return "yaml_DOCUMENT_END_TOKEN" - case yaml_BLOCK_SEQUENCE_START_TOKEN: - return "yaml_BLOCK_SEQUENCE_START_TOKEN" - case yaml_BLOCK_MAPPING_START_TOKEN: - return "yaml_BLOCK_MAPPING_START_TOKEN" - case yaml_BLOCK_END_TOKEN: - return "yaml_BLOCK_END_TOKEN" - case yaml_FLOW_SEQUENCE_START_TOKEN: - return "yaml_FLOW_SEQUENCE_START_TOKEN" - case yaml_FLOW_SEQUENCE_END_TOKEN: - return "yaml_FLOW_SEQUENCE_END_TOKEN" - case yaml_FLOW_MAPPING_START_TOKEN: - return "yaml_FLOW_MAPPING_START_TOKEN" - case yaml_FLOW_MAPPING_END_TOKEN: - return "yaml_FLOW_MAPPING_END_TOKEN" - case yaml_BLOCK_ENTRY_TOKEN: - return "yaml_BLOCK_ENTRY_TOKEN" - case yaml_FLOW_ENTRY_TOKEN: - return "yaml_FLOW_ENTRY_TOKEN" - case yaml_KEY_TOKEN: - return "yaml_KEY_TOKEN" - case yaml_VALUE_TOKEN: - return "yaml_VALUE_TOKEN" - case yaml_ALIAS_TOKEN: - return "yaml_ALIAS_TOKEN" - case yaml_ANCHOR_TOKEN: - return "yaml_ANCHOR_TOKEN" - case yaml_TAG_TOKEN: - return "yaml_TAG_TOKEN" - case yaml_SCALAR_TOKEN: - return "yaml_SCALAR_TOKEN" - } - return "" -} - -// The token structure. -type yaml_token_t struct { - // The token type. - typ yaml_token_type_t - - // The start/end of the token. - start_mark, end_mark yaml_mark_t - - // The stream encoding (for yaml_STREAM_START_TOKEN). - encoding yaml_encoding_t - - // The alias/anchor/scalar value or tag/tag directive handle - // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN). - value []byte - - // The tag suffix (for yaml_TAG_TOKEN). - suffix []byte - - // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN). - prefix []byte - - // The scalar style (for yaml_SCALAR_TOKEN). - style yaml_scalar_style_t - - // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN). - major, minor int8 -} - -// Events - -type yaml_event_type_t int8 - -// Event types. -const ( - // An empty event. - yaml_NO_EVENT yaml_event_type_t = iota - - yaml_STREAM_START_EVENT // A STREAM-START event. - yaml_STREAM_END_EVENT // A STREAM-END event. - yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event. - yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event. - yaml_ALIAS_EVENT // An ALIAS event. - yaml_SCALAR_EVENT // A SCALAR event. - yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event. - yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event. - yaml_MAPPING_START_EVENT // A MAPPING-START event. - yaml_MAPPING_END_EVENT // A MAPPING-END event. -) - -var eventStrings = []string{ - yaml_NO_EVENT: "none", - yaml_STREAM_START_EVENT: "stream start", - yaml_STREAM_END_EVENT: "stream end", - yaml_DOCUMENT_START_EVENT: "document start", - yaml_DOCUMENT_END_EVENT: "document end", - yaml_ALIAS_EVENT: "alias", - yaml_SCALAR_EVENT: "scalar", - yaml_SEQUENCE_START_EVENT: "sequence start", - yaml_SEQUENCE_END_EVENT: "sequence end", - yaml_MAPPING_START_EVENT: "mapping start", - yaml_MAPPING_END_EVENT: "mapping end", -} - -func (e yaml_event_type_t) String() string { - if e < 0 || int(e) >= len(eventStrings) { - return fmt.Sprintf("unknown event %d", e) - } - return eventStrings[e] -} - -// The event structure. -type yaml_event_t struct { - - // The event type. - typ yaml_event_type_t - - // The start and end of the event. - start_mark, end_mark yaml_mark_t - - // The document encoding (for yaml_STREAM_START_EVENT). - encoding yaml_encoding_t - - // The version directive (for yaml_DOCUMENT_START_EVENT). - version_directive *yaml_version_directive_t - - // The list of tag directives (for yaml_DOCUMENT_START_EVENT). - tag_directives []yaml_tag_directive_t - - // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT). - anchor []byte - - // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). - tag []byte - - // The scalar value (for yaml_SCALAR_EVENT). - value []byte - - // Is the document start/end indicator implicit, or the tag optional? - // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT). - implicit bool - - // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT). - quoted_implicit bool - - // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). - style yaml_style_t -} - -func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) } -func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) } -func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) } - -// Nodes - -const ( - yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null. - yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false. - yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values. - yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values. - yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values. - yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values. - - yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences. - yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping. - - // Not in original libyaml. - yaml_BINARY_TAG = "tag:yaml.org,2002:binary" - yaml_MERGE_TAG = "tag:yaml.org,2002:merge" - - yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str. - yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq. - yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map. -) - -type yaml_node_type_t int - -// Node types. -const ( - // An empty node. - yaml_NO_NODE yaml_node_type_t = iota - - yaml_SCALAR_NODE // A scalar node. - yaml_SEQUENCE_NODE // A sequence node. - yaml_MAPPING_NODE // A mapping node. -) - -// An element of a sequence node. -type yaml_node_item_t int - -// An element of a mapping node. -type yaml_node_pair_t struct { - key int // The key of the element. - value int // The value of the element. -} - -// The node structure. -type yaml_node_t struct { - typ yaml_node_type_t // The node type. - tag []byte // The node tag. - - // The node data. - - // The scalar parameters (for yaml_SCALAR_NODE). - scalar struct { - value []byte // The scalar value. - length int // The length of the scalar value. - style yaml_scalar_style_t // The scalar style. - } - - // The sequence parameters (for YAML_SEQUENCE_NODE). - sequence struct { - items_data []yaml_node_item_t // The stack of sequence items. - style yaml_sequence_style_t // The sequence style. - } - - // The mapping parameters (for yaml_MAPPING_NODE). - mapping struct { - pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value). - pairs_start *yaml_node_pair_t // The beginning of the stack. - pairs_end *yaml_node_pair_t // The end of the stack. - pairs_top *yaml_node_pair_t // The top of the stack. - style yaml_mapping_style_t // The mapping style. - } - - start_mark yaml_mark_t // The beginning of the node. - end_mark yaml_mark_t // The end of the node. - -} - -// The document structure. -type yaml_document_t struct { - - // The document nodes. - nodes []yaml_node_t - - // The version directive. - version_directive *yaml_version_directive_t - - // The list of tag directives. - tag_directives_data []yaml_tag_directive_t - tag_directives_start int // The beginning of the tag directives list. - tag_directives_end int // The end of the tag directives list. - - start_implicit int // Is the document start indicator implicit? - end_implicit int // Is the document end indicator implicit? - - // The start/end of the document. - start_mark, end_mark yaml_mark_t -} - -// The prototype of a read handler. -// -// The read handler is called when the parser needs to read more bytes from the -// source. The handler should write not more than size bytes to the buffer. -// The number of written bytes should be set to the size_read variable. -// -// [in,out] data A pointer to an application data specified by -// yaml_parser_set_input(). -// [out] buffer The buffer to write the data from the source. -// [in] size The size of the buffer. -// [out] size_read The actual number of bytes read from the source. -// -// On success, the handler should return 1. If the handler failed, -// the returned value should be 0. On EOF, the handler should set the -// size_read to 0 and return 1. -type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) - -// This structure holds information about a potential simple key. -type yaml_simple_key_t struct { - possible bool // Is a simple key possible? - required bool // Is a simple key required? - token_number int // The number of the token. - mark yaml_mark_t // The position mark. -} - -// The states of the parser. -type yaml_parser_state_t int - -const ( - yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota - - yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document. - yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START. - yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document. - yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END. - yaml_PARSE_BLOCK_NODE_STATE // Expect a block node. - yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence. - yaml_PARSE_FLOW_NODE_STATE // Expect a flow node. - yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence. - yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence. - yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence. - yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. - yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key. - yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value. - yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry. - yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. - yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. - yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. - yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping. - yaml_PARSE_END_STATE // Expect nothing. -) - -func (ps yaml_parser_state_t) String() string { - switch ps { - case yaml_PARSE_STREAM_START_STATE: - return "yaml_PARSE_STREAM_START_STATE" - case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: - return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE" - case yaml_PARSE_DOCUMENT_START_STATE: - return "yaml_PARSE_DOCUMENT_START_STATE" - case yaml_PARSE_DOCUMENT_CONTENT_STATE: - return "yaml_PARSE_DOCUMENT_CONTENT_STATE" - case yaml_PARSE_DOCUMENT_END_STATE: - return "yaml_PARSE_DOCUMENT_END_STATE" - case yaml_PARSE_BLOCK_NODE_STATE: - return "yaml_PARSE_BLOCK_NODE_STATE" - case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: - return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" - case yaml_PARSE_FLOW_NODE_STATE: - return "yaml_PARSE_FLOW_NODE_STATE" - case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: - return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" - case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: - return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" - case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: - return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE" - case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: - return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" - case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: - return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" - case yaml_PARSE_FLOW_MAPPING_KEY_STATE: - return "yaml_PARSE_FLOW_MAPPING_KEY_STATE" - case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: - return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: - return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" - case yaml_PARSE_END_STATE: - return "yaml_PARSE_END_STATE" - } - return "" -} - -// This structure holds aliases data. -type yaml_alias_data_t struct { - anchor []byte // The anchor. - index int // The node id. - mark yaml_mark_t // The anchor mark. -} - -// The parser structure. -// -// All members are internal. Manage the structure using the -// yaml_parser_ family of functions. -type yaml_parser_t struct { - - // Error handling - - error yaml_error_type_t // Error type. - - problem string // Error description. - - // The byte about which the problem occurred. - problem_offset int - problem_value int - problem_mark yaml_mark_t - - // The error context. - context string - context_mark yaml_mark_t - - // Reader stuff - - read_handler yaml_read_handler_t // Read handler. - - input_reader io.Reader // File input data. - input []byte // String input data. - input_pos int - - eof bool // EOF flag - - buffer []byte // The working buffer. - buffer_pos int // The current position of the buffer. - - unread int // The number of unread characters in the buffer. - - raw_buffer []byte // The raw buffer. - raw_buffer_pos int // The current position of the buffer. - - encoding yaml_encoding_t // The input encoding. - - offset int // The offset of the current position (in bytes). - mark yaml_mark_t // The mark of the current position. - - // Scanner stuff - - stream_start_produced bool // Have we started to scan the input stream? - stream_end_produced bool // Have we reached the end of the input stream? - - flow_level int // The number of unclosed '[' and '{' indicators. - - tokens []yaml_token_t // The tokens queue. - tokens_head int // The head of the tokens queue. - tokens_parsed int // The number of tokens fetched from the queue. - token_available bool // Does the tokens queue contain a token ready for dequeueing. - - indent int // The current indentation level. - indents []int // The indentation levels stack. - - simple_key_allowed bool // May a simple key occur at the current position? - simple_keys []yaml_simple_key_t // The stack of simple keys. - - // Parser stuff - - state yaml_parser_state_t // The current parser state. - states []yaml_parser_state_t // The parser states stack. - marks []yaml_mark_t // The stack of marks. - tag_directives []yaml_tag_directive_t // The list of TAG directives. - - // Dumper stuff - - aliases []yaml_alias_data_t // The alias data. - - document *yaml_document_t // The currently parsed document. -} - -// Emitter Definitions - -// The prototype of a write handler. -// -// The write handler is called when the emitter needs to flush the accumulated -// characters to the output. The handler should write @a size bytes of the -// @a buffer to the output. -// -// @param[in,out] data A pointer to an application data specified by -// yaml_emitter_set_output(). -// @param[in] buffer The buffer with bytes to be written. -// @param[in] size The size of the buffer. -// -// @returns On success, the handler should return @c 1. If the handler failed, -// the returned value should be @c 0. -// -type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error - -type yaml_emitter_state_t int - -// The emitter states. -const ( - // Expect STREAM-START. - yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota - - yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END. - yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END. - yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document. - yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END. - yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence. - yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence. - yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. - yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence. - yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence. - yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping. - yaml_EMIT_END_STATE // Expect nothing. -) - -// The emitter structure. -// -// All members are internal. Manage the structure using the @c yaml_emitter_ -// family of functions. -type yaml_emitter_t struct { - - // Error handling - - error yaml_error_type_t // Error type. - problem string // Error description. - - // Writer stuff - - write_handler yaml_write_handler_t // Write handler. - - output_buffer *[]byte // String output data. - output_writer io.Writer // File output data. - - buffer []byte // The working buffer. - buffer_pos int // The current position of the buffer. - - raw_buffer []byte // The raw buffer. - raw_buffer_pos int // The current position of the buffer. - - encoding yaml_encoding_t // The stream encoding. - - // Emitter stuff - - canonical bool // If the output is in the canonical style? - best_indent int // The number of indentation spaces. - best_width int // The preferred width of the output lines. - unicode bool // Allow unescaped non-ASCII characters? - line_break yaml_break_t // The preferred line break. - - state yaml_emitter_state_t // The current emitter state. - states []yaml_emitter_state_t // The stack of states. - - events []yaml_event_t // The event queue. - events_head int // The head of the event queue. - - indents []int // The stack of indentation levels. - - tag_directives []yaml_tag_directive_t // The list of tag directives. - - indent int // The current indentation level. - - flow_level int // The current flow level. - - root_context bool // Is it the document root context? - sequence_context bool // Is it a sequence context? - mapping_context bool // Is it a mapping context? - simple_key_context bool // Is it a simple mapping key context? - - line int // The current line. - column int // The current column. - whitespace bool // If the last character was a whitespace? - indention bool // If the last character was an indentation character (' ', '-', '?', ':')? - open_ended bool // If an explicit document end is required? - - // Anchor analysis. - anchor_data struct { - anchor []byte // The anchor value. - alias bool // Is it an alias? - } - - // Tag analysis. - tag_data struct { - handle []byte // The tag handle. - suffix []byte // The tag suffix. - } - - // Scalar analysis. - scalar_data struct { - value []byte // The scalar value. - multiline bool // Does the scalar contain line breaks? - flow_plain_allowed bool // Can the scalar be expessed in the flow plain style? - block_plain_allowed bool // Can the scalar be expressed in the block plain style? - single_quoted_allowed bool // Can the scalar be expressed in the single quoted style? - block_allowed bool // Can the scalar be expressed in the literal or folded styles? - style yaml_scalar_style_t // The output style. - } - - // Dumper stuff - - opened bool // If the stream was already opened? - closed bool // If the stream was already closed? - - // The information associated with the document nodes. - anchors *struct { - references int // The number of references. - anchor int // The anchor id. - serialized bool // If the node has been emitted? - } - - last_anchor_id int // The last assigned anchor id. - - document *yaml_document_t // The currently emitted document. -} diff --git a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yamlprivateh.go b/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yamlprivateh.go deleted file mode 100644 index 8110ce3c37a..00000000000 --- a/config-connector/tests/ccs-test/vendor/gopkg.in/yaml.v2/yamlprivateh.go +++ /dev/null @@ -1,173 +0,0 @@ -package yaml - -const ( - // The size of the input raw buffer. - input_raw_buffer_size = 512 - - // The size of the input buffer. - // It should be possible to decode the whole raw buffer. - input_buffer_size = input_raw_buffer_size * 3 - - // The size of the output buffer. - output_buffer_size = 128 - - // The size of the output raw buffer. - // It should be possible to encode the whole output buffer. - output_raw_buffer_size = (output_buffer_size*2 + 2) - - // The size of other stacks and queues. - initial_stack_size = 16 - initial_queue_size = 16 - initial_string_size = 16 -) - -// Check if the character at the specified position is an alphabetical -// character, a digit, '_', or '-'. -func is_alpha(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-' -} - -// Check if the character at the specified position is a digit. -func is_digit(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' -} - -// Get the value of a digit. -func as_digit(b []byte, i int) int { - return int(b[i]) - '0' -} - -// Check if the character at the specified position is a hex-digit. -func is_hex(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f' -} - -// Get the value of a hex-digit. -func as_hex(b []byte, i int) int { - bi := b[i] - if bi >= 'A' && bi <= 'F' { - return int(bi) - 'A' + 10 - } - if bi >= 'a' && bi <= 'f' { - return int(bi) - 'a' + 10 - } - return int(bi) - '0' -} - -// Check if the character is ASCII. -func is_ascii(b []byte, i int) bool { - return b[i] <= 0x7F -} - -// Check if the character at the start of the buffer can be printed unescaped. -func is_printable(b []byte, i int) bool { - return ((b[i] == 0x0A) || // . == #x0A - (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E - (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF - (b[i] > 0xC2 && b[i] < 0xED) || - (b[i] == 0xED && b[i+1] < 0xA0) || - (b[i] == 0xEE) || - (b[i] == 0xEF && // #xE000 <= . <= #xFFFD - !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF - !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF)))) -} - -// Check if the character at the specified position is NUL. -func is_z(b []byte, i int) bool { - return b[i] == 0x00 -} - -// Check if the beginning of the buffer is a BOM. -func is_bom(b []byte, i int) bool { - return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF -} - -// Check if the character at the specified position is space. -func is_space(b []byte, i int) bool { - return b[i] == ' ' -} - -// Check if the character at the specified position is tab. -func is_tab(b []byte, i int) bool { - return b[i] == '\t' -} - -// Check if the character at the specified position is blank (space or tab). -func is_blank(b []byte, i int) bool { - //return is_space(b, i) || is_tab(b, i) - return b[i] == ' ' || b[i] == '\t' -} - -// Check if the character at the specified position is a line break. -func is_break(b []byte, i int) bool { - return (b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029) -} - -func is_crlf(b []byte, i int) bool { - return b[i] == '\r' && b[i+1] == '\n' -} - -// Check if the character is a line break or NUL. -func is_breakz(b []byte, i int) bool { - //return is_break(b, i) || is_z(b, i) - return ( // is_break: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - // is_z: - b[i] == 0) -} - -// Check if the character is a line break, space, or NUL. -func is_spacez(b []byte, i int) bool { - //return is_space(b, i) || is_breakz(b, i) - return ( // is_space: - b[i] == ' ' || - // is_breakz: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - b[i] == 0) -} - -// Check if the character is a line break, space, tab, or NUL. -func is_blankz(b []byte, i int) bool { - //return is_blank(b, i) || is_breakz(b, i) - return ( // is_blank: - b[i] == ' ' || b[i] == '\t' || - // is_breakz: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - b[i] == 0) -} - -// Determine the width of the character. -func width(b byte) int { - // Don't replace these by a switch without first - // confirming that it is being inlined. - if b&0x80 == 0x00 { - return 1 - } - if b&0xE0 == 0xC0 { - return 2 - } - if b&0xF0 == 0xE0 { - return 3 - } - if b&0xF8 == 0xF0 { - return 4 - } - return 0 - -} diff --git a/config-connector/tests/ccs-test/vendor/modules.txt b/config-connector/tests/ccs-test/vendor/modules.txt deleted file mode 100644 index b60b7d258aa..00000000000 --- a/config-connector/tests/ccs-test/vendor/modules.txt +++ /dev/null @@ -1,12 +0,0 @@ -# github.com/ghodss/yaml v1.0.0 -github.com/ghodss/yaml -# github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b -github.com/golang/glog -# github.com/inconshreveable/mousetrap v1.0.0 -github.com/inconshreveable/mousetrap -# github.com/spf13/cobra v1.0.0 -github.com/spf13/cobra -# github.com/spf13/pflag v1.0.3 -github.com/spf13/pflag -# gopkg.in/yaml.v2 v2.2.2 -gopkg.in/yaml.v2 diff --git a/config-connector/tests/testcases/environments.template b/config-connector/tests/testcases/environments.template deleted file mode 100644 index 6f46fbba2db..00000000000 --- a/config-connector/tests/testcases/environments.template +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. - -# RANDOM_ID should not be defined in the environments file. -BILLING_ACCOUNT_ID: ${BILLING_ACCOUNT_ID?} -BUCKET_NAME: ${BUCKET_NAME?} -DEFAULT_NAMESPACE: ${DEFAULT_NAMESPACE?} -DEFAULT_PROJECT_ID: ${DEFAULT_PROJECT_ID?} -FOLDER_ID: ${FOLDER_ID?} -HOST_PROJECT_ID: ${HOST_PROJECT_ID?} -IAM_MEMBER: ${IAM_MEMBER?} -INSTANCE_NAME: ${INSTANCE_NAME?} -ORG_ID: ${ORG_ID?} -# PASSWORD needs to be base64-encoded. -PASSWORD: ${PASSWORD?} -PROJECT_ID: ${PROJECT_ID?} -SERVICE_PROJECT_ID: ${SERVICE_PROJECT_ID?} -USERNAME_1: ${USERNAME_1?} -USERNAME_2: ${USERNAME_2?} -USERNAME_3: ${USERNAME_3?} diff --git a/config-connector/tests/testcases/iam/kpt/folder-iam/original_values.yaml b/config-connector/tests/testcases/iam/kpt/folder-iam/original_values.yaml deleted file mode 100644 index 4272535883e..00000000000 --- a/config-connector/tests/testcases/iam/kpt/folder-iam/original_values.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -folder-id: ${FOLDER_ID?} -iam-member: ${IAM_MEMBER?} diff --git a/config-connector/tests/testcases/iam/kpt/folder-iam/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/folder-iam/required_fields_only.yaml deleted file mode 100644 index 12f4f439fc1..00000000000 --- a/config-connector/tests/testcases/iam/kpt/folder-iam/required_fields_only.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -folder-id: $FOLDER_ID -iam-member: $IAM_MEMBER diff --git a/config-connector/tests/testcases/iam/kpt/kms-crypto-key/original_values.yaml b/config-connector/tests/testcases/iam/kpt/kms-crypto-key/original_values.yaml deleted file mode 100644 index 709008ad9f7..00000000000 --- a/config-connector/tests/testcases/iam/kpt/kms-crypto-key/original_values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: ${IAM_MEMBER?} diff --git a/config-connector/tests/testcases/iam/kpt/kms-crypto-key/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/kms-crypto-key/required_fields_only.yaml deleted file mode 100644 index 909fa7446ba..00000000000 --- a/config-connector/tests/testcases/iam/kpt/kms-crypto-key/required_fields_only.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: $IAM_MEMBER diff --git a/config-connector/tests/testcases/iam/kpt/kms-key-ring/original_values.yaml b/config-connector/tests/testcases/iam/kpt/kms-key-ring/original_values.yaml deleted file mode 100644 index 709008ad9f7..00000000000 --- a/config-connector/tests/testcases/iam/kpt/kms-key-ring/original_values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: ${IAM_MEMBER?} diff --git a/config-connector/tests/testcases/iam/kpt/kms-key-ring/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/kms-key-ring/required_fields_only.yaml deleted file mode 100644 index 909fa7446ba..00000000000 --- a/config-connector/tests/testcases/iam/kpt/kms-key-ring/required_fields_only.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: $IAM_MEMBER diff --git a/config-connector/tests/testcases/iam/kpt/member-iam/original_values.yaml b/config-connector/tests/testcases/iam/kpt/member-iam/original_values.yaml deleted file mode 100644 index 2c66915f0b1..00000000000 --- a/config-connector/tests/testcases/iam/kpt/member-iam/original_values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -project-id: ${PROJECT_ID?} diff --git a/config-connector/tests/testcases/iam/kpt/member-iam/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/member-iam/required_fields_only.yaml deleted file mode 100644 index aa68f7a8b79..00000000000 --- a/config-connector/tests/testcases/iam/kpt/member-iam/required_fields_only.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -project-id: $DEFAULT_PROJECT_ID diff --git a/config-connector/tests/testcases/iam/kpt/project-iam/original_values.yaml b/config-connector/tests/testcases/iam/kpt/project-iam/original_values.yaml deleted file mode 100644 index 3a2238aa06c..00000000000 --- a/config-connector/tests/testcases/iam/kpt/project-iam/original_values.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -member: ${IAM_MEMBER?} -project-id: ${PROJECT_ID?} diff --git a/config-connector/tests/testcases/iam/kpt/project-iam/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/project-iam/required_fields_only.yaml deleted file mode 100644 index 149467bb46d..00000000000 --- a/config-connector/tests/testcases/iam/kpt/project-iam/required_fields_only.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -member: $IAM_MEMBER -project-id: $DEFAULT_PROJECT_ID diff --git a/config-connector/tests/testcases/iam/kpt/pubsub-subscription/original_values.yaml b/config-connector/tests/testcases/iam/kpt/pubsub-subscription/original_values.yaml deleted file mode 100644 index 709008ad9f7..00000000000 --- a/config-connector/tests/testcases/iam/kpt/pubsub-subscription/original_values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: ${IAM_MEMBER?} diff --git a/config-connector/tests/testcases/iam/kpt/pubsub-subscription/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/pubsub-subscription/required_fields_only.yaml deleted file mode 100644 index 909fa7446ba..00000000000 --- a/config-connector/tests/testcases/iam/kpt/pubsub-subscription/required_fields_only.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: $IAM_MEMBER diff --git a/config-connector/tests/testcases/iam/kpt/pubsub-topic/original_values.yaml b/config-connector/tests/testcases/iam/kpt/pubsub-topic/original_values.yaml deleted file mode 100644 index 709008ad9f7..00000000000 --- a/config-connector/tests/testcases/iam/kpt/pubsub-topic/original_values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: ${IAM_MEMBER?} diff --git a/config-connector/tests/testcases/iam/kpt/pubsub-topic/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/pubsub-topic/required_fields_only.yaml deleted file mode 100644 index 909fa7446ba..00000000000 --- a/config-connector/tests/testcases/iam/kpt/pubsub-topic/required_fields_only.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: $IAM_MEMBER diff --git a/config-connector/tests/testcases/iam/kpt/service-account/original_values.yaml b/config-connector/tests/testcases/iam/kpt/service-account/original_values.yaml deleted file mode 100644 index 709008ad9f7..00000000000 --- a/config-connector/tests/testcases/iam/kpt/service-account/original_values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: ${IAM_MEMBER?} diff --git a/config-connector/tests/testcases/iam/kpt/service-account/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/service-account/required_fields_only.yaml deleted file mode 100644 index 909fa7446ba..00000000000 --- a/config-connector/tests/testcases/iam/kpt/service-account/required_fields_only.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: $IAM_MEMBER diff --git a/config-connector/tests/testcases/iam/kpt/storage-bucket-iam/original_values.yaml b/config-connector/tests/testcases/iam/kpt/storage-bucket-iam/original_values.yaml deleted file mode 100644 index bd9a2a1ea0c..00000000000 --- a/config-connector/tests/testcases/iam/kpt/storage-bucket-iam/original_values.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -bucket-name: ${BUCKET_NAME?} -iam-member: ${IAM_MEMBER?} diff --git a/config-connector/tests/testcases/iam/kpt/storage-bucket-iam/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/storage-bucket-iam/required_fields_only.yaml deleted file mode 100644 index 9c866cd34ce..00000000000 --- a/config-connector/tests/testcases/iam/kpt/storage-bucket-iam/required_fields_only.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -bucket-name: $BUCKET_NAME -iam-member: $IAM_MEMBER diff --git a/config-connector/tests/testcases/iam/kpt/subnet/original_values.yaml b/config-connector/tests/testcases/iam/kpt/subnet/original_values.yaml deleted file mode 100644 index 709008ad9f7..00000000000 --- a/config-connector/tests/testcases/iam/kpt/subnet/original_values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: ${IAM_MEMBER?} diff --git a/config-connector/tests/testcases/iam/kpt/subnet/required_fields_only.yaml b/config-connector/tests/testcases/iam/kpt/subnet/required_fields_only.yaml deleted file mode 100644 index 909fa7446ba..00000000000 --- a/config-connector/tests/testcases/iam/kpt/subnet/required_fields_only.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -iam-member: $IAM_MEMBER diff --git a/config-connector/tests/testcases/projects/kpt/owned-project/original_values.yaml b/config-connector/tests/testcases/projects/kpt/owned-project/original_values.yaml deleted file mode 100644 index 31c6d3db4ed..00000000000 --- a/config-connector/tests/testcases/projects/kpt/owned-project/original_values.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -billing-account: ${BILLING_ACCOUNT_ID?} -folder-id: ${FOLDER_ID?} -iam-member: ${IAM_MEMBER?} -project-id: ${PROJECT_ID?} diff --git a/config-connector/tests/testcases/projects/kpt/owned-project/required_fields_only.yaml b/config-connector/tests/testcases/projects/kpt/owned-project/required_fields_only.yaml deleted file mode 100644 index 3611415d598..00000000000 --- a/config-connector/tests/testcases/projects/kpt/owned-project/required_fields_only.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -billing-account: $BILLING_ACCOUNT_ID -folder-id: $FOLDER_ID -iam-member: $IAM_MEMBER -project-id: $PROJECT_ID-$RANDOM_ID diff --git a/config-connector/tests/testcases/projects/kpt/project-services/original_values.yaml b/config-connector/tests/testcases/projects/kpt/project-services/original_values.yaml deleted file mode 100644 index cda286e03c5..00000000000 --- a/config-connector/tests/testcases/projects/kpt/project-services/original_values.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -project-id: "${PROJECT_ID?}" diff --git a/config-connector/tests/testcases/projects/kpt/project-services/required_fields_only.yaml b/config-connector/tests/testcases/projects/kpt/project-services/required_fields_only.yaml deleted file mode 100644 index aa68f7a8b79..00000000000 --- a/config-connector/tests/testcases/projects/kpt/project-services/required_fields_only.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -project-id: $DEFAULT_PROJECT_ID diff --git a/config-connector/tests/testcases/projects/kpt/shared-vpc/original_values.yaml b/config-connector/tests/testcases/projects/kpt/shared-vpc/original_values.yaml deleted file mode 100644 index c7d3f141ef7..00000000000 --- a/config-connector/tests/testcases/projects/kpt/shared-vpc/original_values.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -billing-account: ${BILLING_ACCOUNT_ID?} -default-namespace: ${DEFAULT_NAMESPACE?} -host-project: ${HOST_PROJECT_ID?} -org-id: ${ORG_ID?} -service-project: ${SERVICE_PROJECT_ID?} diff --git a/config-connector/tests/testcases/projects/kpt/shared-vpc/required_fields_only.yaml b/config-connector/tests/testcases/projects/kpt/shared-vpc/required_fields_only.yaml deleted file mode 100644 index 0de6f643c2b..00000000000 --- a/config-connector/tests/testcases/projects/kpt/shared-vpc/required_fields_only.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -billing-account: $BILLING_ACCOUNT_ID -default-namespace: $DEFAULT_NAMESPACE -host-project: $HOST_PROJECT_ID-$RANDOM_ID -org-id: $ORG_ID -service-project: $SERVICE_PROJECT_ID-$RANDOM_ID diff --git a/config-connector/tests/testcases/projects/kpt/simple-project/original_values.yaml b/config-connector/tests/testcases/projects/kpt/simple-project/original_values.yaml deleted file mode 100644 index 576b21b7ffd..00000000000 --- a/config-connector/tests/testcases/projects/kpt/simple-project/original_values.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -billing-account: ${BILLING_ACCOUNT_ID?} -org-id: ${ORG_ID?} -project-id: ${PROJECT_ID?} diff --git a/config-connector/tests/testcases/projects/kpt/simple-project/required_fields_only.yaml b/config-connector/tests/testcases/projects/kpt/simple-project/required_fields_only.yaml deleted file mode 100644 index 9d191c4279a..00000000000 --- a/config-connector/tests/testcases/projects/kpt/simple-project/required_fields_only.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -billing-account: $BILLING_ACCOUNT_ID -org-id: $ORG_ID -project-id: $PROJECT_ID-$RANDOM_ID diff --git a/config-connector/tests/testcases/sql/kpt/mysql-ha/original_values.yaml b/config-connector/tests/testcases/sql/kpt/mysql-ha/original_values.yaml deleted file mode 100644 index a1633cc890e..00000000000 --- a/config-connector/tests/testcases/sql/kpt/mysql-ha/original_values.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -instance-name: mysql-ha-solution -test-pw: ${PASSWORD_1?} -test2-pw: ${PASSWORD_2?} -test3-pw: ${PASSWORD_3?} diff --git a/config-connector/tests/testcases/sql/kpt/mysql-ha/required_fields_with_sql_instance_name.yaml b/config-connector/tests/testcases/sql/kpt/mysql-ha/required_fields_with_sql_instance_name.yaml deleted file mode 100644 index d5a382e7fcf..00000000000 --- a/config-connector/tests/testcases/sql/kpt/mysql-ha/required_fields_with_sql_instance_name.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -instance-name: $INSTANCE_NAME-$RANDOM_ID -test-pw: $PASSWORD -test2-pw: $PASSWORD -test3-pw: $PASSWORD diff --git a/config-connector/tests/testcases/sql/kpt/mysql-public/original_values.yaml b/config-connector/tests/testcases/sql/kpt/mysql-public/original_values.yaml deleted file mode 100644 index b427f8e5f33..00000000000 --- a/config-connector/tests/testcases/sql/kpt/mysql-public/original_values.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -instance-name: mysql-public-solution -password: ${PASSWORD?} diff --git a/config-connector/tests/testcases/sql/kpt/mysql-public/required_fields_with_sql_instance_name.yaml b/config-connector/tests/testcases/sql/kpt/mysql-public/required_fields_with_sql_instance_name.yaml deleted file mode 100644 index ce745261037..00000000000 --- a/config-connector/tests/testcases/sql/kpt/mysql-public/required_fields_with_sql_instance_name.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -instance-name: $INSTANCE_NAME-$RANDOM_ID -password: $PASSWORD diff --git a/config-connector/tests/testcases/sql/kpt/postgres-ha/original_values.yaml b/config-connector/tests/testcases/sql/kpt/postgres-ha/original_values.yaml deleted file mode 100644 index 1aba294229f..00000000000 --- a/config-connector/tests/testcases/sql/kpt/postgres-ha/original_values.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -instance-name: postgres-ha-solution -password-1: ${PASSWORD_1?} -password-2: ${PASSWORD_2?} -password-3: ${PASSWORD_3?} -username-1: ${USERNAME_1?} -username-2: ${USERNAME_2?} -username-3: ${USERNAME_3?} diff --git a/config-connector/tests/testcases/sql/kpt/postgres-ha/required_fields_with_sql_instance_name.yaml b/config-connector/tests/testcases/sql/kpt/postgres-ha/required_fields_with_sql_instance_name.yaml deleted file mode 100644 index 0fcd7591c05..00000000000 --- a/config-connector/tests/testcases/sql/kpt/postgres-ha/required_fields_with_sql_instance_name.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -instance-name: $INSTANCE_NAME-$RANDOM_ID -password-1: $PASSWORD -password-2: $PASSWORD -password-3: $PASSWORD -username-1: $USERNAME_1 -username-2: $USERNAME_2 -username-3: $USERNAME_3 diff --git a/config-connector/tests/testcases/sql/kpt/postgres-public/original_values.yaml b/config-connector/tests/testcases/sql/kpt/postgres-public/original_values.yaml deleted file mode 100644 index d82c7306b76..00000000000 --- a/config-connector/tests/testcases/sql/kpt/postgres-public/original_values.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -instance-name: postgres-public-solution -password: ${PASSWORD?} diff --git a/config-connector/tests/testcases/sql/kpt/postgres-public/required_fields_with_sql_instance_name.yaml b/config-connector/tests/testcases/sql/kpt/postgres-public/required_fields_with_sql_instance_name.yaml deleted file mode 100644 index ce745261037..00000000000 --- a/config-connector/tests/testcases/sql/kpt/postgres-public/required_fields_with_sql_instance_name.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. -instance-name: $INSTANCE_NAME-$RANDOM_ID -password: $PASSWORD diff --git a/config-connector/tests/testcases/test_values.template b/config-connector/tests/testcases/test_values.template deleted file mode 100644 index 6913f02e364..00000000000 --- a/config-connector/tests/testcases/test_values.template +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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. diff --git a/dm/.gitignore b/dm/.gitignore deleted file mode 100644 index da8b8b82a74..00000000000 --- a/dm/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -/.tox -/.coverage -/*.yaml -*.pyc -__pycache__ -/build -/dist -*.egg-info -/venv diff --git a/dm/CHANGELOG.md b/dm/CHANGELOG.md deleted file mode 100644 index cb79b8ce08f..00000000000 --- a/dm/CHANGELOG.md +++ /dev/null @@ -1,195 +0,0 @@ -# Cloud Foundation Toolkit Change Log - -All notable changes to this project will be documented in this file. - -## CFT Templates - -### 11.12.2020 - -*BREAKING CHANGE* -- The CFT maintener team decided to drop support for alpha features such as `actions`. In some cases this mean loosing functionalities. This is in due to improve the codebase maintanability. -- [#850](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/850) removes the use of `DM actions (alpha)` - -### 17.06.2020 - -- Extending the url_map template to support defaultUrlRedirect - -### 27.03.2020 - -- BugFix Unmanaged Instance Group template to support network as selfLink. [#616](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/616) - -### 10.03.2020 - -- Extending the IAM member binding template to support bindings on CloudFunctions with `gcp-types/cloudfunctions-v1:virtual.projects.locations.functions.iamMemberBinding`. [#591](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/591) -- Update project template fixing usage export bucket related bug. [#601](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/601) - -### 18.02.2020 - -- Update cloudsql template to support multiple instances in a deployment with the same names for databases and users [#573](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/573) (Breaking change) - -### 30.01.2020 - -- Update forwarding rule template and external loadbalancer to support labels [#551](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/551). Fixing tests - -### 21.01.2020 - -- Update on target proxy and external loadbalancer templates to properly support a list of sslCertificates -- Update on healthcheck template (v1.1.0) to support legacy and non-legacy healthchecks. [#542](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/542) - -### 16.01.2020 - -- Updated gke template to support setting for releaseChannel [#539](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/539) - -### 15.01.2020 - -- Updated cloud sql template to fix intermittent Python 3 warnings [#538](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/538) - -### 08.01.2020 - -- Updated gke template to support Python 3 [#531](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/531) - -### 23.12.2019 - -- Fixed template `cloud_router` schema [#524](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/524) - -### 13.12.2019 - -- Limited ports to use with TCP external LB template according to documentation [#514] (https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/514) - -### 13.12.2019 - -- Updated test triggers for Github. From now on every bats test will be triggered - -### 11.12.2019 - -- Updated logging sink configuration to export entries to a desired destination in external project [#77](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/496) -- Added Stackdriver Notification Channels template [#432](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/485) - -### 09.12.2019 Ho-ho-ho - -- SSL-Certificate template supports beta features (managed certificate). This update is backwards compatible. [#505](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/505) - -### 09.12.2019 - -- Added 'resource_policy' DM template [#497](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/497) - -### 05.12.2019 - -- Updated internal LB and external LB templates according to backend_service.py.schema change [#476](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/476) - -### 02.12.2019 - -- IAM Member template support bindings on types which implement `gcp-types/storage-v1:virtual.buckets.iamMemberBinding` like syntax. ( currently storage-v1.) - -### 25.11.2019 - -- In `cloud_sql.py`, added support for PostgreSQL 11 & fixed `ipAddress` output [#477](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/477) - -### 22.11.2019 - -- Fixed sharedVPC for GKE use case behaviour in 'project' DM template [#469](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/469) - -### 22.11.2019 - -- Cloud Build Trigger support for Github [#470](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/463) -- CI example for Github triggering Cloudbuild for PRs - -### 21.11.2019 - -- Added support for unified Stackdriver Kubernetes Engine Monitoring [#463](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/463) -- Add explicit dependencies to the 'iam_member' DM template to avoid fail, in case of a large amount of bindings (30+) [#443](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/443) - -### 18.11.2019 - -- The [GCS Bucket template](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/ocsig-patch-storage1/dm/templates/gcs_bucket) supports gcp-types/storage-v1:virtual.buckets.iamMemberBinding. [#453](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/453) - -### 31.10.2019 - -- New helper template to use firewall with Google important IP ranges, stored in YAML [#370](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/370) - -### 29.10.2019 - -- Bigquery template schema supports single region as location - -### 25.10.2019 - -- Fixed examples for ELB to pass the new (strict) schema validation [#392](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/392) -- Added support for GKE on SharedVPC for the Project Factory and better visibility for the GKE Service Accounts [#385](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/385) -- Fixed IAM member binding schema to truly support the lack of project property. [#384](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/384) -- The CFT CLI (go version) support complex cross deployment references [#359](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/359) -- Added a Docker container for running bats tests on your local source code for template developers [#355](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/355) -- New exapmle: [Instance with a private IP](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/dm/templates/instance/examples/instance_private.yaml) [#346](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/346) -- New template: [Cloud Filestore](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/dm/templates/cloud_filestore) [#348](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/348) - -### 17.09.2019 - -- New template: [Unamanged Instance Group](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/dm/templates/unmanaged_instance_group) -- CFT Instance (DM) template support sourceInstanceTemplate property instead of properties of the instance [#330](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/330) -- New examples for CloudSQL with [private IP](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/dm/templates/cloud_sql/examples/cloud_sql_private_network.yaml) -- The [pubsub template](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/dm/templates/pubsub) supports subscription expiration -- Github PRs are now automatically [triggering](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/pull/312) CloudBuild based tests - -### 03.09.2019 - - **cft-dm-dev branch merged to master** - -#### Major updates which may break your current deployments: -- Switching legacy types to 'gcp-types' -- Switching to the latest API where it is possible -- Adding unique hash to resource names in case of iteration - - This is fixing many issues with iterations but it is a breaking change - -#### Non-breaking changes: -- Adding versioning for the templates -- Adding new properties for templates, schemas where it's applicable -- Adding support for Labels for every resource where it's possible -- Adding cross project resource creation where it is possible -- Locking down schemas: - - Tight check on invalid properties to catch typos instead of ignoring them - - Tight check on combination of properties. ( For example a project can't be - a host and a guest (VPC) project at the same time.) - -#### CI improvements: -- Our CI environment is running tests on the current master and dev branch - - Running schema validation checks on the example yamls where it's applicable - - Running integration tests on all the templates -- CloudBuild containers and jobs running the tests in a test organization - - Currently working on local container based testing with local source code - -### 23.08.2019 - -- Adding container images for test automation -- Finalizing 'cft-dm-dev' branch for merge to master - -### 21.03.2019 - -- *Templates/iam_member*: The template is now using virtual.projects.iamMemberBinding which is and advanced -endpoint to manage IAM membership. This is a fix for concurrent IAM changes error. - - This change should be 100% backwards compatible - - This template should solve concurrency error with built in retries - - *Templates/project*: This template had concurrent IAM changes error. This update utilizes the iam_member - CFT template, which is referenced in the project.py.schema file. No more concurancy error! - -### 20.03.2019 - - - *Example Solutions*: The first exmaple demonstrate how to use Wrapper templates. - - *Specific wrapper* template to modify the behaviour of an external template such as a CFT template - - *Generic Wrapper* template to inject configuration for every template regardless of it's behaviour. - -### 19.03.2019 - - - *CloudDNS*: Changed CloudDNS Record set from actions to use gcp-types which gives native support for the API. - -## CFT CLI - -### 0.0.4 - -- Feature: Cross deployment refference support output lookup of complex DM resources - -### 0.0.3 - -- Feature: Cross deployment refference support complex outputs such as hashmap, list and their combination. - -### 0.0.2 - -- Initial version diff --git a/dm/CI/cft_base_container/Dockerfile b/dm/CI/cft_base_container/Dockerfile deleted file mode 100644 index c6349a9c8fa..00000000000 --- a/dm/CI/cft_base_container/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM gcr.io/google.com/cloudsdktool/cloud-sdk -# gcr.io/cloud-builders/gcloud - -RUN set -ex && apt-get update && apt-get -y install make \ - && apt-get -y install gettext-base \ - && python3 --version \ - && pip3 install --upgrade pip \ - && pip3 --version \ - && pip3 install setuptools \ - && git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit \ - && cd cloud-foundation-toolkit/dm \ - && rm -rf templates \ - && pip3 install tox \ - && pip3 install pytest wheel \ - && make build \ - && make install \ - && make cft-venv \ - && make template-prerequisites \ - && make cft-prerequisites \ - && . venv/bin/activate \ - && ./src/cftenv \ - && pwd \ - && cft --version \ - && bats -v \ - && which bats - -WORKDIR /cloud-foundation-toolkit/dm diff --git a/dm/CI/cft_base_container/cloudbuild.yaml b/dm/CI/cft_base_container/cloudbuild.yaml deleted file mode 100644 index 521a0005c04..00000000000 --- a/dm/CI/cft_base_container/cloudbuild.yaml +++ /dev/null @@ -1,13 +0,0 @@ -steps: -- name: 'gcr.io/cloud-builders/docker' - args: ['build', '-t', 'gcr.io/$PROJECT_ID/cft:${_CFT_VERSION}', - '-t', 'gcr.io/$PROJECT_ID/cft', - '--build-arg', 'CFT_VERSION=${_CFT_VERSION}', - '.'] -substitutions: - _CFT_VERSION: 0.0.4 - -images: -- 'gcr.io/$PROJECT_ID/cft:latest' -- 'gcr.io/$PROJECT_ID/cft:$_CFT_VERSION' -tags: ['cft-test-dm'] diff --git a/dm/CI/cft_base_contianer/Dockerfile b/dm/CI/cft_base_contianer/Dockerfile deleted file mode 100644 index 6988d7270a2..00000000000 --- a/dm/CI/cft_base_contianer/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM gcr.io/cloud-builders/gcloud - - - -RUN set -ex && apt-get update && apt-get -y install make \ - && apt-get -y install gettext-base \ - && pip install --upgrade pip \ - && pip install setuptools \ - && git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit \ - && cd cloud-foundation-toolkit/dm \ - && rm -rf templates \ - && pip install tox \ - && pip install pytest wheel \ - && make build \ - && make install \ - && make cft-venv \ - && make template-prerequisites \ - && make cft-prerequisites \ - && . venv/bin/activate \ - && ./src/cftenv \ - && pwd \ - && cft --version \ - && bats -v \ - && which bats - - -WORKDIR /cloud-foundation-toolkit/dm diff --git a/dm/CI/cft_base_contianer/cloudbuild.yaml b/dm/CI/cft_base_contianer/cloudbuild.yaml deleted file mode 100644 index 521a0005c04..00000000000 --- a/dm/CI/cft_base_contianer/cloudbuild.yaml +++ /dev/null @@ -1,13 +0,0 @@ -steps: -- name: 'gcr.io/cloud-builders/docker' - args: ['build', '-t', 'gcr.io/$PROJECT_ID/cft:${_CFT_VERSION}', - '-t', 'gcr.io/$PROJECT_ID/cft', - '--build-arg', 'CFT_VERSION=${_CFT_VERSION}', - '.'] -substitutions: - _CFT_VERSION: 0.0.4 - -images: -- 'gcr.io/$PROJECT_ID/cft:latest' -- 'gcr.io/$PROJECT_ID/cft:$_CFT_VERSION' -tags: ['cft-test-dm'] diff --git a/dm/CI/cft_schema_runner/Dockerfile b/dm/CI/cft_schema_runner/Dockerfile deleted file mode 100644 index 1053fabc63f..00000000000 --- a/dm/CI/cft_schema_runner/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM gcr.io/cloud-builders/gcloud - -RUN apt-get update -RUN apt-get install python-setuptools -y -RUN apt-get install npm -y -RUN apt-get install jq -y -RUN pip install yq -RUN npm install -g ajv-cli -RUN ln -s /usr/bin/nodejs /usr/bin/node - -COPY docker-entrypoint.sh /root/ -RUN chmod 777 /root/docker-entrypoint.sh - -ENTRYPOINT ["/root/docker-entrypoint.sh"] - -CMD [] diff --git a/dm/CI/cft_schema_runner/cloudbuild-test.yaml b/dm/CI/cft_schema_runner/cloudbuild-test.yaml deleted file mode 100644 index 362cd929115..00000000000 --- a/dm/CI/cft_schema_runner/cloudbuild-test.yaml +++ /dev/null @@ -1,177 +0,0 @@ -# find . -name "*.yam"l | grep examples| sort -n | awk '{print "- name: 'gcr.io/\$PROJECT_ID/cft-schema'\n args: [`"$1"`]"}' | sed "s/\`/'/g" - -steps: -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/autoscaler/examples/autoscaler_regional.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/autoscaler/examples/autoscaler_zonal.yaml'] -# bug -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/backend_service/examples/backend_service_global.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/backend_service/examples/backend_service_regional.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/bastion/examples/bastion.yaml'] -# Skip, complex example -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/bigquery/examples/bigquery.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloudbuild/examples/cloudbuild_reposource.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloudbuild/examples/cloudbuild_storagesource.yaml'] -# FAILING -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/cloudbuild/examples/cloudbuild_trigger.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloudbuild/examples/cloudbuild.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloud_function/examples/cloud_function_upload.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloud_function/examples/cloud_function.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloud_router/examples/cloud_router.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloud_spanner/examples/cloud_spanner.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloud_sql/examples/cloud_sql_read_replica.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloud_sql/examples/cloud_sql.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloud_tasks/examples/cloud_tasks_queue.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/cloud_tasks/examples/cloud_tasks_task.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/dataproc/examples/dataproc.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/dns_managed_zone/examples/dns_managed_zone_legacy.yaml'] -# FIXME -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/dns_managed_zone/examples/dns_managed_zone_private_visibility_config.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/dns_managed_zone/examples/dns_managed_zone_private.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/dns_managed_zone/examples/dns_managed_zone_public.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/dns_managed_zone/examples/dns_managed_zone.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/dns_records/examples/dns_records.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/external_load_balancer/examples/external_load_balancer_https.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/external_load_balancer/examples/external_load_balancer_http.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/external_load_balancer/examples/external_load_balancer_ssl.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/external_load_balancer/examples/external_load_balancer_tcp.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/firewall/examples/firewall.yaml'] -# FIXME -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/folder/examples/folder.yaml'] -# FIXME -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/forseti/examples/forseti.yaml'] -# FIXME -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/forwarding_rule/examples/forwarding_rule_global.yaml'] -# FIXME -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/forwarding_rule/examples/forwarding_rule_regional.yaml'] -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/gcs_bucket/examples/gcs_bucket_iam_bindings.yaml'] -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/gcs_bucket/examples/gcs_bucket_lifecycle.yaml'] -# SCHEMA version issue -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/gcs_bucket/examples/gcs_bucket.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/gke/examples/gke_regional_private.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/gke/examples/gke_regional.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/gke/examples/gke_zonal.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/haproxy/examples/haproxy.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/healthcheck/examples/healthcheck.yaml'] -# FIXME -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/iam_custom_role/examples/iam_custom_role.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/iam_member/examples/iam_member.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/instance/examples/instance.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/instance_template/examples/instance_template.yaml'] -# Schema faulty? -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/interconnect_attachment/examples/interconnect_attachment_dedicated.yaml'] -# Schema faulty? -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/interconnect_attachment/examples/interconnect_attachment_partner.yaml'] -# - name: gcr.io/$PROJECT_ID/cft-schema -# FIXME -# args: ['./templates/interconnect/examples/interconnect_dedicated.yaml'] -# FIXME -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/internal_load_balancer/examples/internal_load_balancer.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/ip_reservation/examples/ip_reservation.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/kms/examples/kms_signkey.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/kms/examples/kms.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/logsink/examples/billingaccount_logsink_bucket_destination.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/logsink/examples/folder_logsink_bq_destination.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/logsink/examples/org_logsink_pubsub_destination.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/logsink/examples/project_logsink_bucket_destination.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/managed_instance_group/examples/managed_instance_group_healthcheck.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/managed_instance_group/examples/managed_instance_group.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/nat_gateway/examples/nat_gateway.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/network/examples/network.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/network_peering/examples/network_peering.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/org_policy/examples/org_policy.yaml'] -# FIXME -# - name: gcr.io/$PROJECT_ID/cft-schema -# args: ['./templates/project/examples/project.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/pubsub/examples/pubsub_push.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/pubsub/examples/pubsub.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/route/examples/route.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/runtime_config/examples/runtime_config.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_bindings.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_legacy.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_policy.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/ssl_certificate/examples/ssl_certificate.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/stackdriver_metric_descriptor/examples/stackdriver_metric_descriptor.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/target_proxy/examples/target_proxy_https.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/target_proxy/examples/target_proxy_http.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/target_proxy/examples/target_proxy_ssl.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/target_proxy/examples/target_proxy_tcp.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/url_map/examples/url_map.yaml'] -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/vpn/examples/vpn.yaml'] -tags: ['cft-dm-schema-runner'] diff --git a/dm/CI/cft_schema_runner/cloudbuild.yaml b/dm/CI/cft_schema_runner/cloudbuild.yaml deleted file mode 100644 index d967a6435bb..00000000000 --- a/dm/CI/cft_schema_runner/cloudbuild.yaml +++ /dev/null @@ -1,13 +0,0 @@ -steps: -- name: 'gcr.io/cloud-builders/docker' - args: ['build', '-t', 'gcr.io/$PROJECT_ID/cft-schema:${_CFT_VERSION}', - '-t', 'gcr.io/$PROJECT_ID/cft-schema', - '--build-arg', 'CFT_VERSION=${_CFT_VERSION}', - '.'] -substitutions: - _CFT_VERSION: 0.0.4 - -images: -- 'gcr.io/$PROJECT_ID/cft-schema:latest' -- 'gcr.io/$PROJECT_ID/cft-schema:$_CFT_VERSION' -tags: ['cft-test-dm'] diff --git a/dm/CI/cft_schema_runner/docker-entrypoint.sh b/dm/CI/cft_schema_runner/docker-entrypoint.sh deleted file mode 100644 index 8692d98e2ce..00000000000 --- a/dm/CI/cft_schema_runner/docker-entrypoint.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -set -eu - -readonly GIT_URL='https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit' -readonly CLONE_DIRNAME="$(mktemp -d)" -readonly BRANCH_NAME="cft-dm-dev" - -readonly COLOR_RESET='\033[0m' -readonly COLOR_BOLD='\033[1m' -readonly COLOR_BG_BLUE='\033[44m' - -echo_color() { - echo -e "${COLOR_BOLD}${COLOR_BG_BLUE}$@${COLOR_RESET}" -} - -echo_color "Cloning repo" -git clone "${GIT_URL}" "${CLONE_DIRNAME}" -cd "${CLONE_DIRNAME}" -git checkout "${BRANCH_NAME}" - -echo_color 'Initializing CFT DM templates' - -cd dm/templates - -# cat healthcheck/examples/healthcheck.yaml | yq .resources[0].properties > project.json; cat healthcheck/healthcheck.py.schema | yq . > project.py.schema.json; ajv validate -s project.py.schema.json -d project.json - -EXAMPLE_COUNT=`cat $@ | yq '.resources | length'` -EXAMPLE_COUNT=$(($EXAMPLE_COUNT-1)) - -while [ $EXAMPLE_COUNT -ge 0 ]; -do - echo_color "Example $EXAMPLE_COUNT" - cat $@ | yq .resources[$EXAMPLE_COUNT].properties > example.json; - cat example.json - export SCHEMA_PATH=`cat $@ | yq -r .imports[0].path | awk '{print $1".schema"}'` - echo_color $SCHEMA_PATH - cat $SCHEMA_PATH | yq . > example.py.schema.json; - echo_color "Schema validation" - ajv validate -s example.py.schema.json -d example.json - EXAMPLE_COUNT=$(($EXAMPLE_COUNT-1)) - -done diff --git a/dm/CI/cft_test_runner/Dockerfile b/dm/CI/cft_test_runner/Dockerfile deleted file mode 100644 index fc4044f120c..00000000000 --- a/dm/CI/cft_test_runner/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM gcr.io/cft-test-workspace-221111/cft:latest - -COPY cloud-foundation-tests.conf /etc/cloud-foundation-tests.conf -RUN cat /etc/cloud-foundation-tests.conf -RUN chmod 666 /etc/cloud-foundation-tests.conf -COPY docker-entrypoint.sh /root/ -RUN chmod 777 /root/docker-entrypoint.sh - - -WORKDIR /cloud-foundation-toolkit/dm - -ENTRYPOINT ["/root/docker-entrypoint.sh"] - -CMD [] diff --git a/dm/CI/cft_test_runner/cloud-foundation-tests.conf b/dm/CI/cft_test_runner/cloud-foundation-tests.conf deleted file mode 100644 index 9ecd0be0ae6..00000000000 --- a/dm/CI/cft_test_runner/cloud-foundation-tests.conf +++ /dev/null @@ -1,5 +0,0 @@ -export CLOUD_FOUNDATION_ORGANIZATION_ID="12345678 -export CLOUD_FOUNDATION_PROJECT_ID="project_ID" -export CLOUDDNS_CROSS_PROJECT_ID="project_ID2" -export CLOUD_FOUNDATION_BILLING_ACCOUNT_ID="123456-789ABCD-000111" -export CLOUD_FOUNDATION_USER_ACCOUNT="user@cft.tips" diff --git a/dm/CI/cft_test_runner/cloudbuild-test.yaml b/dm/CI/cft_test_runner/cloudbuild-test.yaml deleted file mode 100644 index b5a13eea485..00000000000 --- a/dm/CI/cft_test_runner/cloudbuild-test.yaml +++ /dev/null @@ -1,10 +0,0 @@ -steps: -- name: 'gcr.io/$PROJECT_ID/cft-ci-test' - args: ['${_BATS_TEST_FILE}', '${_BRANCH_NAME}'] - -substitutions: - _BATS_TEST_FILE: ./templates/healthcheck/tests/integration/healthcheck.bats # default value - _BRANCH_NAME: master # default value - -tags: ['cft-dm-test-runner'] -timeout: '7200s' diff --git a/dm/CI/cft_test_runner/cloudbuild.yaml b/dm/CI/cft_test_runner/cloudbuild.yaml deleted file mode 100644 index 85861c89e58..00000000000 --- a/dm/CI/cft_test_runner/cloudbuild.yaml +++ /dev/null @@ -1,13 +0,0 @@ -steps: -- name: 'gcr.io/cloud-builders/docker' - args: ['build', '-t', 'gcr.io/$PROJECT_ID/cft-ci-test:${_CFT_VERSION}', - '-t', 'gcr.io/$PROJECT_ID/cft-ci-test', - '--build-arg', 'CFT_VERSION=${_CFT_VERSION}', - '.'] -substitutions: - _CFT_VERSION: 0.0.4 - -images: -- 'gcr.io/$PROJECT_ID/cft-ci-test:latest' -- 'gcr.io/$PROJECT_ID/cft-ci-test:$_CFT_VERSION' -tags: ['cft-test-dm'] diff --git a/dm/CI/cft_test_runner/docker-entrypoint.sh b/dm/CI/cft_test_runner/docker-entrypoint.sh deleted file mode 100644 index 37e4fd7e0b5..00000000000 --- a/dm/CI/cft_test_runner/docker-entrypoint.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -set -eu - -readonly GIT_URL='https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit' -readonly CLONE_DIRNAME="/workspace" -readonly DM_root="/cloud-foundation-toolkit/dm" - -readonly COLOR_RESET='\033[0m' -readonly COLOR_BOLD='\033[1m' -readonly COLOR_BG_BLUE='\033[44m' - -echo_color() { - echo -e "${COLOR_BOLD}${COLOR_BG_BLUE}$@${COLOR_RESET}" -} - -echo_color 'Activating venv for testing' - -cd "${DM_root}" - -set +u # Turn off because virtualenv uses undefined variables -. venv/bin/activate \ -./src/cftenv -set -u - -export CLOUD_FOUNDATION_CONF=/etc/cloud-foundation-tests.conf - -if [ -d "/workspace/dm" ] -then - echo_color "/workspace/dm exists, no need to clone repo" -else - echo_color "/workspace/dm is missing, cloning repo" - readonly BRANCH_NAME=$2 - git clone "${GIT_URL}" "${CLONE_DIRNAME}" - cd "${CLONE_DIRNAME}" - git checkout "${BRANCH_NAME}" -fi - -mv "/workspace/dm/templates" "${DM_root}" - -echo_color "Welcome your Majesty, ready to run some tests!" - -# Running bats tests relative to dm folder for example: "./templates/project/tests/integration/project.bats" - -cd "${DM_root}" - -chmod 777 $1 -exec bats $1 diff --git a/dm/CI/triggers/cft-triggers.py b/dm/CI/triggers/cft-triggers.py deleted file mode 100644 index 9a34f14cd21..00000000000 --- a/dm/CI/triggers/cft-triggers.py +++ /dev/null @@ -1,32 +0,0 @@ -# This is a wrapper tamplete to crawl through the dm/templates folder and -# create a trigger for each. -# This is not a generic template, used for CFT GitHub PR testing - -import copy - - -def generate_config(context): - - tests = [] - resources = [] - for test in context.imports: - if '/tests/integration/' in test: - testData = test.split('/') - testFolder = testData[3] - batsFile = testData[6] - - props = copy.deepcopy(context.properties) - props['description'] = props['description'].replace('#template#', batsFile[:-5]) - props['substitutions']['_BATS_TEST_FILE'] = \ - props['substitutions']['_BATS_TEST_FILE'].replace( - '#template#', testFolder).replace( - '#templatetest#', batsFile) - for i in range(len(props['includedFiles'])): - props['includedFiles'][i] = props['includedFiles'][i].replace( - '#template#', testFolder) - resources.append({ - 'type': "cft-trigger.py", - 'name': context.env['name'] + "-" + batsFile[:-5], - 'properties': props}) - - return {'resources': resources} diff --git a/dm/CI/triggers/cft-triggers.py.schema b/dm/CI/triggers/cft-triggers.py.schema deleted file mode 100644 index cc9b8fada72..00000000000 --- a/dm/CI/triggers/cft-triggers.py.schema +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud Build Triggers for CI - author: Adam Ocsvari - description: | - Supports creation of an automated Cloud Build trigger. - -imports: - - path: ../../templates/cloudbuild/trigger.py - name: cft-trigger.py diff --git a/dm/CI/triggers/cloudbuild_trigger_cft.yaml b/dm/CI/triggers/cloudbuild_trigger_cft.yaml deleted file mode 100644 index 8702abcf160..00000000000 --- a/dm/CI/triggers/cloudbuild_trigger_cft.yaml +++ /dev/null @@ -1,53 +0,0 @@ -# This config+template creates a Cloud build trigger for every CFT DM template -# by crawling through the repository. For this crawl we use glob import which -# needs to be enabled: -# -# gcloud config set deployment_manager/glob_imports True -# -# Currently the repo is hardcoded. - -imports: - - path: cft-triggers.py - name: cft-triggers.py -# Using the gcloud glob import to load one file from every template where -# triggers should be created. This is inderictly passing the list of possible -# templates to DM without hardcoding that into a config list. - - path: ../../templates/**/tests/integration/*.bats - -resources: -# - name: cft-github-dev -# type: cft-triggers.py -# properties: -# description: CFT-DM-#template# PR trigger [cft-dm-dev] -# disabled: False -# github: -# name: cloud-foundation-toolkit -# owner: GoogleCloudPlatform -# pullRequest: -# branch: cft-dm-dev -# commentControl: COMMENTS_ENABLED -# filename: dm/CI/cft_test_runner/cloudbuild-test.yaml -# substitutions: -# _BATS_TEST_FILE: ./templates/#template#/tests/integration/#templatetest# -# includedFiles: -# - dm/templates/#template#/*.py -# - dm/templates/#template#/*.schema -# - dm/templates/#template#/tests/integration/* - - name: cft-github-master - type: cft-triggers.py - properties: - description: CFT-DM-#template# PR trigger [Master] - disabled: False - github: - name: cloud-foundation-toolkit - owner: GoogleCloudPlatform - pullRequest: - branch: master - commentControl: COMMENTS_ENABLED - filename: dm/CI/cft_test_runner/cloudbuild-test.yaml - substitutions: - _BATS_TEST_FILE: ./templates/#template#/tests/integration/#template#.bats - includedFiles: - - dm/templates/#template#/*.py - - dm/templates/#template#/*.schema - - dm/templates/#template#/tests/integration/* \ No newline at end of file diff --git a/dm/MANIFEST.in b/dm/MANIFEST.in deleted file mode 100644 index ddf938cd250..00000000000 --- a/dm/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -include VERSION requirements/install.txt requirements/development.txt diff --git a/dm/Makefile b/dm/Makefile deleted file mode 100644 index 0ba73228293..00000000000 --- a/dm/Makefile +++ /dev/null @@ -1,70 +0,0 @@ -PYTHON ?= python3 -SHELL := /bin/bash -PACKAGE = cloud_foundation_toolkit - -ifndef CLOUD_FOUNDATION_CONF -override CLOUD_FOUNDATION_CONF = ~/.cloud-foundation-tests.conf -endif - -help: - @echo "cft-prerequisites Installs prerequisites for CFT python utility development" - @echo "cft-venv Creates the virtual environment called 'venv' for development" - @echo "cft-clean-venv Deletes the development environment" - @echo "cft-test Runs all unit tests from outside of the venv (for CI tools)" - @echo "cft-test-venv Runs all unit tests from withing the venv (for active development)" - @echo "template-prerequisites Install prerequisites for template development" - @echo "build Builds the package" - @echo "install Installs the package system wide" - @echo "uninstall Uninstalls the package" - @echo "clean Cleanup build/test/cache files" - - -.ONESHELL: -.PHONY: cft-prerequisites cft-venv cft-clean-venv cft-test cft-test-venv template-prerequisites cft-build-base-image - -cft-prerequisites: - ${PYTHON} -m pip install -r requirements/prerequisites.txt - -cft-venv: - ${PYTHON} -m tox -e venv - -cft-clean-venv: - rm -rf venv - -cft-test: - ${PYTHON} -m tox -- -x tests/unit - -cft-test-templates: - ${PYTHON} -m tox -- -x tests/templates - -cft-test-venv: - ${PYTHON} -m pytest -v - -cft-build-base-image: - docker build -f CI/cft_base_container/Dockerfile -t cft_base_image CI/cft_base_container/ - -cft-test-bats: - docker run -it --rm \ - -v `pwd`:/workspace \ - --entrypoint "/bin/bash" \ - -v ~/.config/:/root/.config \ - -v $(CLOUD_FOUNDATION_CONF):/root/.cloud-foundation-tests.conf \ - cft_base_image \ - -c "cd /workspace && /cloud-foundation-toolkit/dm/venv/bin/bats /workspace/$(TEST)" - -template-prerequisites: - rm -rf bats && git clone https://github.com/sstephenson/bats.git && ./bats/install.sh venv && rm -rf bats - -build: - ${PYTHON} setup.py sdist bdist_wheel - -install: - ${PYTHON} -m pip install dist/${PACKAGE}-$$(cat VERSION)-py2.py3-none-any.whl - -uninstall: - ${PYTHON} -m pip uninstall ${PACKAGE} -y - -clean: - find src/${PACKAGE} \( -path '*__pycache__/*' -o -name __pycache__ \) -delete - find tests \( -path '*__pycache__/*' -o -name __pycache__ \) -delete - rm -rf build dist *.egg-info .cache .eggs .coverage diff --git a/dm/README.md b/dm/README.md deleted file mode 100644 index 5c1dc0c9e24..00000000000 --- a/dm/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Dear CFT User! - -If you are looking to build new GCP infrastructure, we recommend that you use [Terraform CFT modules](https://g.co/dev/terraformfoundation) -Terraform CFT supports the most recent GCP resources, reflects GCP best practices can be used off-the-shelf to quickly build a repeatable enterprise-ready foundation. -Additionally, if you are a looking to manage your GCP resources through Kubernetes, consider using [Config Connector CFT solutions](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/tree/master/config-connector/solutions). - -# Cloud Foundation Toolkit Project - -## Overview - -The Cloud Foundation toolkit (henceforth, CFT) includes the following parts: - -- A comprehensive set of production-ready resource templates that follow - Google's best practices, which can be used with the CFT or the gcloud - utility (part of the Google Cloud SDK) - see - [the template directory](templates/README.md) -- A command-line interface (henceforth, CLI) that deploys resources defined in - single or multiple CFT-compliant config files - see: - - The CFT source Python files (the `src/` directory) - - The [CFT User Guide](docs/userguide.md) - -In addition, the CFT repository includes a sample pipeline that enables running -CFT deployment operations from Jenkins - see the -[pipeline directory](pipeline/README.md). - -## License - -Apache 2.0 - See [LICENSE](LICENSE) for more information. diff --git a/dm/VERSION b/dm/VERSION deleted file mode 100644 index 81340c7e72d..00000000000 --- a/dm/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.0.4 diff --git a/dm/docs/template_dev_guide.md b/dm/docs/template_dev_guide.md deleted file mode 100644 index d8302c312ef..00000000000 --- a/dm/docs/template_dev_guide.md +++ /dev/null @@ -1,162 +0,0 @@ -# Template Developer Guide - - - -- [Overview](#overview) -- [Prerequisites](#prerequisites) -- [Testing](#testing) - - [Bats Installation](#bats-installation) - - [Testing Environment Setup](#testing-environment-setup) - - [Using the Cloud Foundation Config File](#using-the-cloud-foundation-config-file) - - [Using environment variables](#using-environment-variables) - - [Running Tests](#running-tests) - - [Temporary Files and Fixtures](#temporary-files-and-fixtures) - - - -## Overview - -The Cloud Foundation toolkit (henceforth, CFT) includes the following parts: - -- A comprehensive set of [production-ready resource templates](../templates/README.md) - that follow Google's best practices, which can be used with the CFT or the - gcloud utility (part of the Google Cloud SDK) -- A command-line interface (henceforth, CLI) that deploys resources defined in - single or multiple CFT-compliant config files - see the - [CFT User Guide](userguide.md) - -This Guide is intended for the developers who are planning to modify the -existing templates or create new ones. - -## Prerequisites - -1. Install and set up the [Google Cloud SDK](https://cloud.google.com/sdk/). -2. Install the template development prerequisites: - -```shell -make template-prerequisites -``` - -## Testing - -The template consistency and quality control in this project are backed by -simple integration tests using the -[Bats testing framework](https://github.com/sstephenson/bats). - -### Bats Installation - -To install Bats: - -1. Follow the instructions on the Bats - [website](https://github.com/sstephenson/bats). -2. Make sure the `bats` executable is in your PATH. -3. Alternatively, set up a *development environment* as described in the - [CFT Developer Guide](tool_dev_guide.md). - -### Testing Environment Setup - -#### Using the Cloud Foundation Config File - - -To run tests, you need to modify the organization, project, and -account-specific values in the configuration file. Proceed as follows: - -1. Copy `tests/cloud-foundation-tests.conf.example` to - `~/.cloud-foundation-tests.conf`. -2. Change the values as required. - -`Note:` You can modify the configuration file path by changing the -CLOUD_FOUNDATION_CONF environment variable. For example: - -```shell -export CLOUD_FOUNDATION_CONF=/etc/cloud-foundation-tests.conf -``` - -You need to enter the site-specific information (for yourself or for your -organization) in the test config file. See, for example, -`tests/cloud-foundation-tests.conf.example`. - -#### Using environment variables - -An alternative to using the Cloud Foundation config file is to use environment -variables. Make sure to export all variables described in the -`tests/cloud-foundation-tests.conf.example` file, with your organization-specific -changes. - -### Running Tests - -`Note:` Currently, only one test file can be executed at a time. - -Always run the test from the root of the `cloud-foundation` project: - -```shell -./templates/network/tests/integration/network.bats - ✓ Creating deployment my-gcp-project-network from my-gcp-project-network.yaml - ✓ Verifying resources were created in deployment my-gcp-project-network - ✓ Verifying subnets were created in deployment my-gcp-project-network - ✓ Deployment Delete - ✓ Verifying resources were deleted in deployment my-gcp-project-network - ✓ Verifying subnets were deleted in deployment my-gcp-project-network -``` - -For the sake of consistency, keep the test files similar, as much as possible, -to the *example configs* available in each template's `examples/` directory. - - -### Running Bats tests with docker image - -#### Prepare environment - -Authenticate your local gcloud tool with your personal user account https://cloud.google.com/sdk/gcloud/reference/auth/login or -using service account json https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account - -Create test config file by following [Using the Cloud Foundation Config File](#using-the-cloud-foundation-config-file) - -Build test docker image: - - cd cloud-foundation-toolkit/dm - make cft-build-base-image - -#### Run test - -To run templates/instance/tests/integration/instance.bats file, run: - - make cft-test-bats TEST=templates/instance/tests/integration/instance.bats - -Or, if you have config file not in ~/.cloud-foundation-tests.conf: - - make cft-test-bats TEST=templates/instance/tests/integration/instance.bats CLOUD_FOUNDATION_CONF=/conf/file/location.json - - -#### Unit Tests - - -This testing mode is typically used when running tests from a CI tool. - -Use `tox` to create the necessary virtual environment and run tests: - -```shell -make cft-test-templates -``` - -### Temporary Files and Fixtures - -When running tests, temporary Deployment Manager configs and fixtures -are often created and deleted by the *teardown()* function. - -Due to the fact that a DM config file must be located relative to the -template(s) it uses, the configs are usually created in the root of the -project. For example, in the `network` template, the config -`.${CLOUD_FOUNDATION_PROJECT_ID}-network.yaml` will be temporarily created -(and deleted at the end of the execution). - -Other temporary files are created under `/tmp`; for example: - -```shell -/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-network.txt -/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-project.txt -``` - -The names of the "artifacts" could change. However, if a problem is observed -during the test execution, the root and the /tmp directory are good places to -look for hints about what had caused the problem. diff --git a/dm/docs/tool_dev_guide.md b/dm/docs/tool_dev_guide.md deleted file mode 100644 index e3072c155f2..00000000000 --- a/dm/docs/tool_dev_guide.md +++ /dev/null @@ -1,155 +0,0 @@ -# CFT Developer Guide - - - -- [Overview](#overview) -- [Prerequisites](#prerequisites) - - [Google Cloud SDK](#google-cloud-sdk) - - [Development Environment](#development-environment) -- [Unit Tests](#unit-tests) - - [From Outside the Development Environment](#from-outside-the-development-environment) - - [From Within the Development Environment](#from-within-the-development-environment) - - - -## Overview - -The Cloud Foundation toolkit (henceforth, CFT) includes the following parts: -project is comprised of two parts: - -- A comprehensive set of [production-ready resource templates](../templates/README.md) - that follow Google's best practices, which can be used with the CFT or the - gcloud utility (part of the Google Cloud SDK) -- A command-line interface (henceforth, CLI) that deploys resources defined in - single or multiple CFT-compliant config files - see the - [CFT User Guide](userguide.md) - -This Guide is intended for the developers who are planning to modify and/or -programmatically interface with the CFT. - -## Prerequisites - -### Google Cloud SDK - -1. Install the [Google Cloud SDK](https://cloud.google.com/sdk/), which - includes the `gcloud` CLI. - -Because the SDK is not in *pypi*, its installation cannot be easily -automated from within this project, due to the fact that users on the different -platforms need the different packages. Follow the SDK installation instructions -for your platform. - -2. Ensure that the `gcloud` CLI is in your user PATH (because the CFT uses - this CLI to find the location of the Python libraries included in the SDK). - -The `gcloud` CLI is usually placed in the PATH automatically when you: - -- Install the SDK via the official package manager for your OS (RPM, DEB, - etc.), or -- Use the installer (`install.sh`) bundled in a Linux tarball - -However, if you used neither of the above installation methods, you need to -ensure that `gcloud` can be found in one of the directories specified by the -PATH environment variable. - -### Development Environment - -The CFT development environment is based on: - -- [Tox](https://tox.readthedocs.io/en/latest/index.html) for streamlined - management of Python virtual environments -- [pytest](https://docs.pytest.org/en/latest/contents.html) for unit tests - -Proceed as follows: - -1. Install Tox with the system Python. -2. Install CFT prerequisites: - -```shell -sudo make cft-prerequisites -``` - -The CFT development is carried out in a virtual environment. - -3. Create the virtual development environment called `venv` with `tox` in - the root of the project directory: - -```shell -make cft-venv -``` - -4. Activate the virtual environment: - -```shell -source venv/bin/activate -source src/cftenv -``` - -The above activates the virtual environment, then finds the Google SDK path -and adds libraries to PYTHONPATH. These cannot be simply added to the -`Makefile` because `make` creates sanitized sub-shells for each command, and -the parent shell does not get the environment variables that the virtual -environment sets up on activation. - -`Note:` The `tox.ini` file in this project is configured to -"*install*" the utility using pip's "develop" mode, i.e., the pip **does not** -actually package and install the utility in the virtual environment's -`site-packages`. - -5. To install or update any of the packages in your virtual environment - (created by `tox`), delete and re-create the environment: - -- *Deactivate* the virtual environment (if it has been activated): - -```shell -deactivate -unset CLOUDSDK_ROOT_DIR CLOUDSDK_PYTHON_SITEPACKAGES PYTHONPATH -``` - -- Delete the deactivated virtual environment: - -```shell -make cft-clean-venv -``` - -- Create the environment as described in Step 3 above. - -## Unit Tests - -You can run the CFT unit tests either from withing your development -environment or from outside of it. - -### From Outside the Development Environment - -This testing mode is typically used when running tests from a CI tool. - -1. Use `tox` to create the necessary virtual environments (not `venv`, which - is used only for active development): - -```shell -make cft-test -``` - -2. Run all the tests within the "test" virtual environments. - -### From Within the Development Environment - -This testing mode is typically used while actively developing within the -development virtual environment. - -1. Activate the `venv` environment as shown in Step 4 of the - [Development Environment](#development-environment) section. -2. Source `src/cftdev` to get PYTHONPATH set as shown in Step 5 of the - [Development Environment](#development-environment) section. -3. Run tests as follows: - -```shell -# use the make target to run all tests: -make cft-test-venv - -# alternatively, use pytest directly to run all tests: -python -m pytest -v - -# alternatively, run a single test file: -python -m pytest -v tests/unit/test_deployment.py -``` \ No newline at end of file diff --git a/dm/docs/userguide.md b/dm/docs/userguide.md deleted file mode 100644 index 966cc5db81b..00000000000 --- a/dm/docs/userguide.md +++ /dev/null @@ -1,728 +0,0 @@ - -# Cloud Foundation Toolkit - User Guide - - - -- [Overview](#overview) -- [CFT Configs](#cft-configs) - - [Extra YAML Directives](#extra-yaml-directives) - - [name](#name) - - [project](#project) - - [description](#description) - - [Extra Features](#extra-features) - - [Cross-deployment References with the `$(out)` Tag](#cross-deployment-references-with-the-out-tag) - - [Jinja Templating](#jinja-templating) - - [Samples](#samples) - - [network.yaml](#networkyaml) - - [firewall.yaml](#firewallyaml) - - [instance.yaml](#instanceyaml) -- [Templates](#templates) -- [Toolkit Installation and Configuration](#toolkit-installation-and-configuration) - - [Installing Prerequisites](#installing-prerequisites) - - [Python 2.7 + pip](#python-27--pip) - - [Google Cloud SDK](#google-cloud-sdk) - - [Getting the CFT Code](#getting-the-cft-code) - - [Installing the CFT](#installing-the-cft) - - [Uninstalling the CFT](#uninstalling-the-cft) - - [Updating the CFT](#updating-the-cft) -- [CLI Usage](#cli-usage) - - [Syntax](#syntax) - - [Actions](#actions) - - [The "create" Action](#the-create-action) - - [The "update" Action](#the-update-action) - - [The "apply" Action](#the-apply-action) - - [The "delete" Action](#the-delete-action) - - - -## Overview - -The GCP Deployment Manager service does not support cross-deployment -references, and the `gcloud` utility does not support concurrent deployment of -multiple inter-dependent configs. The `Cloud Foundation toolkit` (henceforth, -`CFT`) expands the capabilities of Deployment Manager and `gcloud` to support -the following scenarios: - -- Creation, update, and deletion of multiple deployments in a single operation - which: - - Accepts multiple config files as input - - Automatically resolves dependencies between these configs - - Creates/updates deployments in the dependency-stipulated order, or - deletes deployments in a reverse dependency order -- Cross-deployment (including cross-project) referencing of deployment outputs, - which removes the need for hard-coding many parameters in the configs - -For example, if config file `A` contained all network resources, config file -`B` contained all instances, and config `C` contained firewall rules, router, -and VPN, in `gcloud` you would need to *manually* define the config deployment -order according to the resource dependencies. The VPN would depend on the cloud -router, both of them would depend on the network, etc. The `CFT` computes the -dependencies *automatically*, which eliminates the need for manual deployment -ordering. - -`Note:` This User Guide assumes that you are familiar with the Google Cloud SDK -operations related to resource deployment and management. For additional -information, refer to the -[SDK documentation](https://cloud.google.com/sdk/docs/). - -The CFT includes: - -- A command-line interface (henceforth, CLI) that deploys resources defined in - single or multiple CFT-compliant config files -- A comprehensive set of production-ready resource [templates](#templates) that follow - Google's best practices, which can be used with the CFT or the `gcloud` - utility. (`gcloud` is part of the Google Cloud SDK). - -You can use the CFT "as is" or modify it to suit your specific needs. Instructions -and recommendations for the CFT code modifications are in the -[CFT Developer Guide](tool_dev_guide.md). - -## CFT Configs - -To use the CFT, you need to first create the config files for the desired -deployments. These configs are YAML structures very similar to, and compatible -with, the `gcloud` config files. The difference is that they contain extra YAML -directives and features to support the expanded capabilities of the CFT -(multi-config deployment and cross-deployment references). - -### Extra YAML Directives - -#### name - -This directive is used to specify the name of the deployment; for example: - -```yaml -name: my-network -``` - -If not specified, the name of the deployment is inferred from the config -file name. For example, if the path to the config file is -`path/to/configs/my-network.yaml`, and the config does not specify the `name` -directive, the deployment name is set to `my-network`. This is meant as a -workaround for maintaining compatibility between the `CFT` and `gcloud` configs. -However, **it is strongly recommended that the `name` directive is specified**. - -#### project - -This directive defines the project in which the resource is deployed; for -example: - -```yaml -project: my-project -``` - -While this directive is optional, **its use in your configs is highly -recommended**. In addition to the project directive in the config file, -the project for a deployment to be created in can be specified by other means. -The order of precedence is as follows: - -1. The `--project` command-line option. If a project is specified via this - option, all configs in the run use that project. This is a way of - quickly overriding the project specified in a config file, which should be - used with caution. -2. The `project` directive in the config file. -3. The `CLOUD_FOUNDATION_PROJECT_ID` environment variable. -4. The "default project" configured with the GCP SDK. - -`Note:` When deployments utilize cross-project resources, the `project` -directive becomes mandatory in at least one of the deployments. - -#### description - -This directive is the deployment description, which allows you -to add some documentation to your configs; for example: - -```yaml -description: My firewall deployment for {{environment}} environment -``` - -### Extra Features - -#### Cross-deployment References with the `$(out)` Tag - -A config/deployment can specify a dependency on another deployment's output -without the need to create the dependent deployment in advance. This is the -mechanism the CFT uses to determine the order of execution of the deployments. - -```yaml -$(out....) - -# or - -$(out...) -``` - -wherein: - -- `$(out)` is the prefix that indicates that the value references an output - from a resource defined in an external deployment (in another config file) -- `project` is the ID of the project in which the external deployment is - created -- `deployment` is the he name of the external deployment (config) that - defines the referenced resource -- `resource` is the DM name of the referenced resource -- `output` is the name of the output parameter to be referenced - -The above construct works very similarly to Deployment Manager's -`$(ref..)`. However, it allows defining not only references -to resource properties not only *within* a deployment, but also -*inter-deployment/inter-project* references, using deployment outputs. The -value of output of a dependent deployment is only looked up during the current -deployment's execution, which allows you to create config files without knowing -in advance the actual values of the outputs in the dependent deployments, or -even having to create these deployments. - -For example: - -```yaml -network: $(out.my-network-prod.my-network-prod.name) -``` - -#### Jinja Templating - -All configs submitted via the CFT CLI are rendered by the [Jinja Template -Engine](http://jinja.pocoo.org/). This supports compact code by using the DRY -pattern. For example, by using variable substitution and `for loops`: - -```yaml -{% set environment = 'prod' %} -{% set applications = ['app1', 'app2', 'app3'] %} - -name: my-network-{{environment}} -description: Network deployment for {{environment}} environment -project: sourced-gus-1 -imports: - - path: templates/network/network.py -resources: -{% for application in applications %} - - type: templates/network/network.py - name: {{application}}-{{environment}}-network - properties: - autoCreateSubnetworks: false -{% endfor %} -``` - -An alternative to using Jinja in your configs is to write wrapper DM Python -templates and reference these templates in your configs (see the -[Templates](#templates) section). - -### Samples - -Following are three sample config files that illustrate the above directives -and features. These will be used as examples in the action-specific sections of -this User Guide: - -- [network.yaml](#network.yaml) - two networks that have no dependencies -- [firewall.yaml](#firewall.yaml) - two firewall rules, which depend on the - corresponding networks -- [instance.yaml](#instance.yaml) - one VM instance, which depends on the - network - -#### network.yaml - -```yaml -name: my-networks -description: my networks deployment - -imports: - - path: templates/network/network.py - -resources: - - type: templates/network/network.py - name: my-network-prod - properties: - autoCreateSubnetworks: true - - - type: templates/network/network.py - name: my-network-dev - properties: - autoCreateSubnetworks: false -``` - -#### firewall.yaml - -```yaml -name: my-firewalls -description: My firewalls deployment - -imports: - - path: templates/firewall/firewall.py -resources: - - type: templates/firewall/firewall.py - name: my-firewall-prod - properties: - network: $(out.my-networks.my-network-prod.name) - rules: - - name: allow-proxy-from-inside-prod - allowed: - - IPProtocol: tcp - ports: - - "80" - - "444" - description: This rule allows connectivity to the HTTP proxies - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 - - name: allow-dns-from-inside-prod - allowed: - - IPProtocol: udp - ports: - - "53" - - IPProtocol: tcp - ports: - - "53" - description: this rule allows DNS queries to google's 8.8.8.8 - direction: EGRESS - destinationRanges: - - 8.8.8.8/32 - - type: templates/firewall/firewall.py - name: my-firewall-dev - properties: - network: $(out.my-networks.my-network-dev.name) - rules: - - name: allow-proxy-from-inside-dev - allowed: - - IPProtocol: tcp - ports: - - "80" - - "444" - description: This rule allows connectivity to the HTTP proxies - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 -``` - -#### instance.yaml - -```yaml -name: my-instance-prod-1 -description: My instance deployment for prod environment - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: my-instance-prod-1 - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - network: $(out.my-networks.my-network-prod.name) - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx -``` - -## Templates - -CFT-compliant configs can use templates written in Python or Jinja2. [Templates -included in the toolkit](../templates/README.md) are recommended (although not mandatory) -as they offer robust functionality, ease of use, and adherence to best -practices. - -You can use the templates included in our library "as is," and/or modify them -to suit your needs, as well as develop your own templates. Instructions and -recommendations for template development are in the -[Template Developer Guide](template_dev_guide.md). - -## Toolkit Installation and Configuration - -This toolkit was developed primarily on/for Linux. Therefore, the Linux platform -is expected to offer the most seamless user experience. - -### Installing Prerequisites - -#### Python 2.7 + pip - -Follow your OS package manager instructions. For example, for Ubuntu: - -```shell -sudo apt-get install python2.7 -sudo apt-get install python-pip -``` - -#### Google Cloud SDK - -1. Install the [Google Cloud SDK](https://cloud.google.com/sdk/docs/quickstarts). -2. Ensure that the `gcloud` command is in the user's PATH: - -```shell -which gcloud -``` - -### Getting the CFT Code - -Proceed as follows: - -```shell -git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -cd cloud-foundation-toolkit/ -``` - -### Installing the CFT - -Proceed as follows: - -```shell -cd dm -sudo make cft-prerequisites # Installs prerequisites in system python -make build # builds the package -sudo make install # installs the package in /usr/local -``` - -### Uninstalling the CFT - -If you need to uninstall the CFT, proceed as follows: - -```shell -sudo make uninstall -``` - -### Updating the CFT - -To update CFT to a newer version, proceed as follows: - -```shell -cd dm -make clean -sudo make cft-prerequisites -make build -sudo make uninstall -sudo make install -``` - -## CLI Usage - -### Syntax - -The CLI commands adhere to the following syntax: - -```shell -cft [action] [configs] [action-options] -``` - -The above syntactic structure includes the following elements: - -- `[action]` - one of the supported actions/commands: - - **create** - creates deployments defined in the specified config files, - in the dependency order - - **update** - updates deployments defined in the specified config files, - in the dependency order - - **apply** - checks if the resources defined in the specified configs - already exist; if they do, updates them; if they don't, creates them - - **delete** - deletes deployments defined in the specified config files, - in the reverse dependency order -- `[config]` - The path(s) to the config files to be affected by the specified - action (files with extensions `.yaml`, `.yml`, or `.jinja`). It can be: - - A space-separated list of paths to the config files and/or directories, - optionally with wildcards; for example: - - ../deployments/config_1.yaml ../tests/test*.yaml ../dev/config*.yml - - ../deployments/ ../tests/ - this will submit all files with extensions - `.yaml`, `.yml`, or `.jinja` found in the ../deployments/ and ../tests/ - directories - - A space-separated list of yaml-serialized strings, each representing a - config; useful when another tool is generating configs on the fly\ - For example: `name: my-networks\nproject: my-project\nimports:\n - path: templates/network/network.py\n name: network.py\resources:\n - type: templates/network/network.py\n name: my-network-prod` -- `[action-options]` - one or more action-specific options; see the - action-specific `--help` option for details: - -```shell -cft --help -usage: cft [-h] [--version] [--project PROJECT] [--dry-run] - [--verbosity VERBOSITY] - {apply,create,update,delete} ... - -positional arguments: - {apply,create,update,delete} - -optional arguments: - -h, --help show this help message and exit - --version, -v Print version information and exit - --project PROJECT The ID of the GCP project in which ALL config files - will be executed. This option will override the - "project" directive in the config files, so be careful - when using this - --dry-run Prints the order of execution of the configs. No - changes are made - --verbosity VERBOSITY - The log level -``` - -### Actions - -The `CFT` parses the submitted config files and computes the dependencies -between them. Based on the computed dependency graph, the script -determines the sequence of deployments to be executed. It then proceeds to -execute the action in the computed order. - -#### The "create" Action - -`Note:` Make sure that the deployments you are going to create do not exist in -your DM. An attempt to create a deployment that already exists will result in -an error. Yon can, however, do one of the following: - -- Use the **update** action to update the existing deployments - see - [The "update" Action](#the-update-action) section -- Use the **apply** action which will attempt to create the deployment if it - doesn't already exist in DM, or update the deployment it already exist - see - [The "apply" Action](#the-apply-action) section - -To create multiple deployments, in the CLI, type: - -```shell -cft create [configs] [create-options] -``` - -If you submit the [sample configs described above](#samples) - -```shell -cft create instance.yaml firewall.yaml network.yaml -``` - -the following response appears in the CLI terminal: - -```shell ----------- Stage 1 ---------- -Waiting for insert my-network-prod (fingerprint 7OyDHEL8-ZGbay4dTcXXEg==) [operation-1538159159516-576f2964f9b61-e64bdb44-8ab51124]...done. -NAME TYPE STATE ERRORS INTENT -my-network-dev compute.v1.network COMPLETED [] -my-network-prod compute.v1.network COMPLETED [] ----------- Stage 2 ---------- -Waiting for insert my-instance-prod-1 (fingerprint tdbkal-dX_ppamFJVtBGew==) [operation-1538159204094-576f298f7d030-9707b687-a3f822d9]...done. -NAME TYPE STATE ERRORS INTENT -my-instance-prod-1 compute.v1.instance COMPLETED [] -Waiting for insert my-firewall-prod (fingerprint Yuhd7khES_en86QtLYFV8w==) [operation-1538159238360-576f29b02abc2-b29dacc3-1b74eb12]...done. -NAME TYPE STATE ERRORS INTENT -allow-dns-from-inside-prod compute.beta.firewall COMPLETED [] -allow-proxy-from-inside-dev compute.beta.firewall COMPLETED [] -allow-proxy-from-inside-prod compute.beta.firewall COMPLETED [] ----------- Stage 3 ---------- -Waiting for insert my-instance-prod-2 (fingerprint z-lJJimsanFI6cIYLU8D_w==) [operation-1538159270905-576f29cf344a8-d28b6852-52527e20]...done. -NAME TYPE STATE ERRORS INTENT -my-instance-prod-2 compute.v1.instance COMPLETED [] -``` - -In this example, the network config has no dependencies, and the firewall and -instance configs depend on the network. Therefore, the network config is -deployed first (Stage 1), and the firewall and instance are deployed next -(Stage 2). - -`Note:` The order in which the configs are provided in the `cft create` command -does not affect the deployment creation order. That order is defined -exclusively by the dependency between the configs, which is, in turn, defined -by analyzing and ordering the cross-dependency tokens (`$(out.a.b.c.d)`). - -The following conditions will result in the action failure, -with an error message displayed: - -- One or more of the specified deployments already exist -- One or more resources in the submitted config files depend on resources that - neither exist nor being created by the current `create` action -- One or more of the submitted config files are invalid -- One or more of the submitted config files contain circular dependencies - (i.e., deployment A depends on deployment B, and B depends on A) - -#### The "update" Action - -`Note:` Make sure that the deployments you are going to update already exist in -DM. An attempt to update deployment that does not exist will result in an -error. Yon can, however, do one of the following: - -- Use the **create** action to create the required deployments - see - [The "create" Action](#the-create-action) section -- Use the **apply** action which will attempt to create the deployment if it - doesn't already exist in DM, or update the deployment it already exist - see - [The "apply" Action](#the-apply-action) section - -To update multiple configs, in the CLI, type: - -```shell -cft update [configs] [create-options] -``` - -If you submit the [sample configs described above](#samples) - -```shell -cft update instance.yaml firewall.yaml network.yaml -``` - -the following response appears in the CLI terminal: - -```shell ----------- Stage 1 ---------- -Waiting for update my-network-prod (fingerprint 7OyDHEL8-ZGbay4dTcXXEg==) [operation-1538159159516-576f2964f9b61-e64bdb44-8ab51124]...done. -NAME TYPE STATE ERRORS INTENT -my-network-dev compute.v1.network COMPLETED [] -my-network-prod compute.v1.network COMPLETED [] ----------- Stage 2 ---------- -Waiting for update my-instance-prod-1 (fingerprint tdbkal-dX_ppamFJVtBGew==) [operation-1538159204094-576f298f7d030-9707b687-a3f822d9]...done. -NAME TYPE STATE ERRORS INTENT -my-instance-prod-1 compute.v1.instance COMPLETED [] -Waiting for update my-firewall-prod (fingerprint Yuhd7khES_en86QtLYFV8w==) [operation-1538159238360-576f29b02abc2-b29dacc3-1b74eb12]...done. -NAME TYPE STATE ERRORS INTENT -allow-dns-from-inside-prod compute.beta.firewall COMPLETED [] -allow-proxy-from-inside-dev compute.beta.firewall COMPLETED [] -allow-proxy-from-inside-prod compute.beta.firewall COMPLETED [] ----------- Stage 3 ---------- -Waiting for update my-instance-prod-2 (fingerprint z-lJJimsanFI6cIYLU8D_w==) [operation-1538159270905-576f29cf344a8-d28b6852-52527e20]...done. -NAME TYPE STATE ERRORS INTENT -my-instance-prod-2 compute.v1.instance COMPLETED [] -``` - -In this example, the network config has no dependencies, and the firewall and -instance configs depend on the network. Therefore, the network config is -updated first (Stage 1), and the firewall and instance are updated next -(Stage 2). - -The following conditions will result in the actin failure, with an error -message displayed: - -- One or more of the specified deployments do not exist -- One or more resources in the submitted config files depend on resources that - do not exist -- One or more of the submitted config files are invalid -- One or more of the submitted config files contain circular dependencies - (i.e., deployment A depends on deployment B, and B depends on A) - -You can use the `--preview` option with the `update` action; for example: - -```shell -cft update test/fixtures/configs/ --preview -``` - -The CFT puts each deployment in the `preview` mode within DM, displays a -preview of the action results, and enables you to approve/decline the action -for each of the submitted configs. The following prompt is displayed after -the Stage 1 log: - -```shell -Update(u), Skip (s), or Abort(a) Deployment? -``` - -Having reviewed the displayed information, enter one of the following -responses: - -- **u (update)** - confirms the deployment change as shown in the preview -- **s (skip)** - cancels the update (no change) and continues to the next - config in the sequence -- **a (abort)** - cancels the update (no change) and aborts the script - execution - -#### The "apply" Action - -The **apply** action makes the CFT decide which deployments must be created -(because they do not exist), and which ones must be updated (because they do -exist). - -To create or update multiple configs, in the CLI, type: - -```shell -cft apply [configs] [create-options] -``` - -If you submit the [sample configs described above](#samples) - -```shell -cft apply instance.yaml firewall.yaml network.yaml -``` - -the following response appears in the CLI terminal: - -```shell ----------- Stage 1 ---------- -Waiting for update my-network-prod (fingerprint 7OyDHEL8-ZGbay4dTcXXEg==) [operation-1538159159516-576f2964f9b61-e64bdb44-8ab51124]...done. -NAME TYPE STATE ERRORS INTENT -my-network-dev compute.v1.network COMPLETED [] -my-network-prod compute.v1.network COMPLETED [] ----------- Stage 2 ---------- -Waiting for update my-instance-prod-1 (fingerprint tdbkal-dX_ppamFJVtBGew==) [operation-1538159204094-576f298f7d030-9707b687-a3f822d9]...done. -NAME TYPE STATE ERRORS INTENT -my-instance-prod-1 compute.v1.instance COMPLETED [] -Waiting for update my-firewall-prod (fingerprint Yuhd7khES_en86QtLYFV8w==) [operation-1538159238360-576f29b02abc2-b29dacc3-1b74eb12]...done. -NAME TYPE STATE ERRORS INTENT -allow-dns-from-inside-prod compute.beta.firewall COMPLETED [] -allow-proxy-from-inside-dev compute.beta.firewall COMPLETED [] -allow-proxy-from-inside-prod compute.beta.firewall COMPLETED [] ----------- Stage 3 ---------- -Waiting for update my-instance-prod-2 (fingerprint z-lJJimsanFI6cIYLU8D_w==) [operation-1538159270905-576f29cf344a8-d28b6852-52527e20]...done. -NAME TYPE STATE ERRORS INTENT -my-instance-prod-2 compute.v1.instance COMPLETED [] -``` - -The following conditions will result in the action failure, with an error -message displayed: - -- One or more resources in the submitted config files depend on resources that - neither exist nor being created by the current `apply` action -- One or more of the submitted config files are invalid -- One or more of the submitted config files contain circular dependencies - (i.e., deployment A depends on deployment B, and B depends on A) - -You can use the `--preview` option with the `apply` action; for example: - -```shell -cft apply test/fixtures/configs/ --preview -``` - -The CFT puts each deployment in the `preview` mode within DM, displays a -preview of the action results, and enables you to approve/decline the action -for each of the submitted configs. The following prompt is displayed after -the Stage 1 log: - -```shell -Update(u), Skip (s), or Abort(a) Deployment? -``` - -Having reviewed the displayed information, enter one of the following -responses: - -- **u (update)** - confirms the deployment change as shown in the preview -- **s (skip)** - cancels the update (no change) and continues to the next - config in the sequence -- **a (abort)** - cancels the update (no change) and aborts the script - execution - -`Note:` If the `apply` action is creating (rather than updating) a set of -resources, and if you choose to skip the creation of a deployment on which -subsequent deployments depends (e.g., **skip** network in Stage 1 and -**update** firewall in Stage 2), the operation will fail with an error message. - -#### The "delete" Action - -To delete the previously created/updated multiple deployments, in the CLI, type: - -```shell -cft delete [configs] [create-options] -``` - -If you submit the [sample configs described above](#samples) - -```shell -cft delete instance.yaml firewall.yaml network.yaml -``` - -the following response appears in the CLI terminal: - -```shell ----------- Stage 1 ---------- -Waiting for delete my-instance-prod-2 (fingerprint 3IWMMfbjsUWjtWgvs6Evdw==) [operation-1538159406282-576f2a504f510-2dceed8f-b222b564]...done. ----------- Stage 2 ---------- -Waiting for delete my-instance-prod-1 (fingerprint ifQgUyTSOtVE1H6VgaIlYA==) [operation-1538159505990-576f2aaf66170-fcc5246d-2d44d005]...done. -Waiting for delete my-firewall-prod (fingerprint xFs1fcZiLJPVV1hUw61-og==) [operation-1538159629835-576f2b2581af9-a83468de-d3685d90]...done. ----------- Stage 3 ---------- -Waiting for delete my-network-prod (fingerprint EhMN6C5IeADJYRo40CmuAg==) [operation-1538159649120-576f2b37e5f02-35da3a44-cf279bfa]...done. -``` - -The order of execution for `delete` is reversed (compared to `create` or -`update`). This prevents DM from attempting to delete, for example, a network -resource while an instance resource (dependent on the network) still exists. - -`Note:` The CFT silently ignores deletion of deployments that do not exits. -This covers those cases where the deletion of a specific deployment had -failed and the problem was then fixed. You do not have to figure out which -deployments to delete; you simply re-run the command. diff --git a/dm/example-solutions/wrapper-template/README.md b/dm/example-solutions/wrapper-template/README.md deleted file mode 100644 index a31dfe64057..00000000000 --- a/dm/example-solutions/wrapper-template/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Wrapper Templates - -Using wrapper templates is a clean way to extend or restrict already existing templates without modifying them. -This is a common practice when using templates from external sources for example from the Cloud Foundation Toolkit. - -## Flexible solutions - -Python provides easy access to the properties which will be passed forward to the GCP APIs. A wrapper template -is a good place to manipulate properties, for example to enforce naming conventions. - -## Naming convention - Folders wrapper - -In the *folders-wrapper.py* at line 11-12 the template is modifying the *Display Name* of the folders by adding a prefix. -This simple example can be easily extended, the prefix can be loaded from an external configuration file, the naming convention -should be calculated by a helper function, implemented in a shared helper class. - -### Schema file of the wrapper - -If the wrapper class is for a specific template ( in this case for the CFT Folders template), a Schema file can be -used for the following: - - - Importing the target template makes the YAML easier and explicitly states the template dependency - - Copying the required and optional property definition from the target template enforces the property validation in an earlier - stage. ( Unfortunately referencing to another Schema file is not possible today.) - - Comments in the Schema file explains the usage and the purpose of it. - - ## Generic wrapper - - Using a generic wrapper fits into the concept of hierarchical configuration management when the configuration properties - of the deployment are coming from multiple external files, not only the starting YAML. (See ../../hierarchical_configuration) - The generic wrapper is able to inject the context aware properties and pass them to the target template which is defined in - the starting YAML. - - A nice trick is to import the target template in the YAML file and name it as "target-template.py", this makes you able to - use the same wrapper template with any YAML/Target template combination. \ No newline at end of file diff --git a/dm/example-solutions/wrapper-template/folders-wrapper.py b/dm/example-solutions/wrapper-template/folders-wrapper.py deleted file mode 100644 index fe201530ed7..00000000000 --- a/dm/example-solutions/wrapper-template/folders-wrapper.py +++ /dev/null @@ -1,21 +0,0 @@ - -def generate_config(context): - - # Using some global values from an external config file. - # Hardcoded for this example. - - global_prefix = "acc " - - # Manipulate context.properties # - - for folder in context.properties["folders"]: - folder["displayName"] = global_prefix + folder["displayName"] - - # Passing values forward to CFT template - - return { - 'resources': [{ - 'type': "cft-folder.py", - 'name': context.env['name'], - 'properties': context.properties}] - } diff --git a/dm/example-solutions/wrapper-template/folders-wrapper.py.schema b/dm/example-solutions/wrapper-template/folders-wrapper.py.schema deleted file mode 100644 index ba2288c505d..00000000000 --- a/dm/example-solutions/wrapper-template/folders-wrapper.py.schema +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Folder - description: | - Creates a folder under an organization or under a parent - folder. - -imports: -- path: ../../templates/folder/folder.py - name: cft-folder.py - -required: - - folders - -properties: - folders: - type: array - description: List of folders to create. - items: - orgId: - type: string - pattern: ^organization\/[0-9]{8,25}$ - description: | - The organization ID. If this field is set, the folder is - created under the organization. The value must conform to the - format `organizations/`. For example, - `organizations/111122223333`. - folderId: - type: string - pattern: ^folder\/[0-9]{8,25}$ - description: | - The folder ID. If this field is set, the folder is created - under the folder specified by the ID. The value must conform - to the format `folders/`. For example, - `folders/1234567890`. - displayName: - type: string - description: The display name of the folder. - pattern: | - [\p{L}\p{N}]({\p{L}\p{N}_- ]{0,28}[\p{L}\p{N}])? - -outputs: - properties: - folders: - type: array - description: Array of folder resource information. - items: - description: | - The name of the folder resource. For example, the output can be - referenced as: $(ref..rules..parent) - patternProperties: - ".*": - type: object - description: Details for a folder resource. - properties: - name: - type: string - description: | - Name of the folder resource in the format - `folders/`. - parent: - type: string - description: | - The resource name of the parent Folder or Organization. - displayName: - type: string - description: The folder's display name. - createTime: - type: string - description: Creation timestamp in RFC3339 text format. - lifecycleState: - type: string - description: The Folder's current lifecycle state. diff --git a/dm/example-solutions/wrapper-template/generic-wrapper.py b/dm/example-solutions/wrapper-template/generic-wrapper.py deleted file mode 100644 index 310e2ae65c6..00000000000 --- a/dm/example-solutions/wrapper-template/generic-wrapper.py +++ /dev/null @@ -1,23 +0,0 @@ -from helper import config_merger - - -def generate_config(context): - - # Using helper functions to load external configurations. - # The deployment YAML only contains the minimal context of the deployment. - # (Module name, environment) - # This way the wrapper template injects information to the target template - # without overloading the starting YAML. - - local_properties = config_merger.ConfigContext( - context.properties['environment'], - context.properties['module']) - - # Passing values forward to template - - return { - 'resources': [{ - 'type': "target-template.py", - 'name': context.env['name'], - 'properties': local_properties}] - } diff --git a/dm/example-solutions/wrapper-template/generic-wrapper.yaml b/dm/example-solutions/wrapper-template/generic-wrapper.yaml deleted file mode 100644 index 3ebf0b7b29d..00000000000 --- a/dm/example-solutions/wrapper-template/generic-wrapper.yaml +++ /dev/null @@ -1,12 +0,0 @@ -imports: -- path: generic-wrapper.py - name: generic-wrapper.py -- path: ../templates/project/project.py - name: target-template.py - -resources: -- name: cft_project - type: generic-wrapper.py - properties: - environment: dev - module: project diff --git a/dm/helpers/google_netblock_ip_ranges/README.md b/dm/helpers/google_netblock_ip_ranges/README.md deleted file mode 100644 index 16d8dcff626..00000000000 --- a/dm/helpers/google_netblock_ip_ranges/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Important Google IP ranges helper - -This helper creates firewall template rules for a network with Google important ranges. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network](../network/README.md) -- Grant the [compute.networkAdmin or compute.securityAdmin](https://cloud.google.com/compute/docs/access/iam) IAM role to the project service account - -## Deployment - -### Resources - -- [compute.beta.firewall](https://cloud.google.com/compute/docs/reference/rest/beta/firewalls) - - `Note:` The beta API supports the firewall log feature. - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - cd cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, with [firewall template](../../templates/firewall/firewall.py): - -```shell - cp helpers/google_netblock_ip_ranges/examples/google_netblock_ip_ranges_example.yaml google_netblock_ip_ranges_example.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (like properties). - Name of the imported YAML-file with important IP ranges must be exact "google_netblock_ip_ranges.yaml": - -```shell - vim google_netblock_ip_ranges_example.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config google_netblock_ip_ranges_example.yaml -``` - -## Examples - -- [Firewall](examples/google_netblock_ep_ranges_example.yaml) diff --git a/dm/helpers/google_netblock_ip_ranges/examples/google_netblock_ip_ranges_example.yaml b/dm/helpers/google_netblock_ip_ranges/examples/google_netblock_ip_ranges_example.yaml deleted file mode 100644 index ba4de2bd13f..00000000000 --- a/dm/helpers/google_netblock_ip_ranges/examples/google_netblock_ip_ranges_example.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# Example of the google_netblock_ip_ranges helper usage. - -imports: - - path: helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.py - name: google_netblock_ip_ranges.py - - path: helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.yaml - name: google_netblock_ip_ranges.yaml # name must be exact "google_netblock_ip_ranges.yaml" - - path: templates/firewall/firewall.py - name: firewall.py - -resources: - - name: examle-firewall-rule - type: google_netblock_ip_ranges.py - properties: - template: firewall.py # name of the original DM template - network: - rules: - - name: allow-proxy-from-google-ranges - allowed: - - IPProtocol: tcp - ports: - - "80" - - "443" - description: example ingress rule for default net - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 - - google_netblock_ip_ranges['google-netblocks']['cidrIPv4'] - - name: allow-dns-to-gcp-ranges - allowed: - - IPProtocol: udp - ports: - - "53" - - IPProtocol: tcp - ports: - - "53" - description: example egress rule for default net - direction: EGRESS - priority: 20 - destinationRanges: - - google_netblock_ip_ranges['cloud-netblocks']['cidrIPv4'] - - 8.8.8.8/32 diff --git a/dm/helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.py b/dm/helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.py deleted file mode 100644 index cd781811e55..00000000000 --- a/dm/helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. -""" This template substitutes google netblock IP ranges into firewall rules.""" - -import yaml - -def generate_config(context): - google_netblock_ip_ranges = yaml.load(context.imports['google_netblock_ip_ranges.yaml']) - properties = context.properties - resource_type = properties['template'] - properties.pop('template', None) - name = properties.get('name', context.env['name']) - properties.pop('name', None) - rules = [] - for rule in properties['rules']: - rule_sub = rule - if 'sourceRanges' in rule: - rule_source = [] - for index, src_range in enumerate(rule['sourceRanges']): - if 'google_netblock_ip_ranges' in src_range: - rule_source.extend(eval(src_range)) - else: - rule_source.append(src_range) - rule_sub['sourceRanges'] = rule_source - if 'destinationRanges' in rule: - rule_destination = [] - for index, dst_range in enumerate(rule['destinationRanges']): - if 'google_netblock_ip_ranges' in dst_range: - rule_destination.extend(eval(dst_range)) - else: - rule_destination.append(dst_range) - rule_sub['destinationRanges'] = rule_destination - rules.append(rule_sub) - properties.update({'rules': rules}) - resources = { - 'name': name, - 'type': resource_type, - 'properties': properties - } - - return {'resources': [resources]} diff --git a/dm/helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.yaml b/dm/helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.yaml deleted file mode 100644 index 0c3354671bd..00000000000 --- a/dm/helpers/google_netblock_ip_ranges/google_netblock_ip_ranges.yaml +++ /dev/null @@ -1,230 +0,0 @@ -# Google's important netbock IP ranges -restricted-googleapis: - cidr: - - "199.36.153.4/30" - cidrIPv4: - - "199.36.153.4/30" - -dns-forwarders: - cidr: - - "35.199.192.0/19" - cidrIPv4: - - "35.199.192.0/19" - -iap-forwarders: - cidr: - - "35.235.240.0/20" - cidrIPv4: - - "35.235.240.0/20" - -health-checkers: - cidr: - - "35.191.0.0/16" - - "130.211.0.0/22" - cidrIPv4: - - "35.191.0.0/16" - - "130.211.0.0/22" - -legacy-health-checkers: - cidr: - - "35.191.0.0/16" - - "209.85.152.0/22" - - "209.85.204.0/22" - cidrIPv4: - - "35.191.0.0/16" - - "209.85.152.0/22" - - "209.85.204.0/22" - -cloud-netblocks: - cidr: - - "8.34.208.0/20" - - "8.35.192.0/21" - - "8.35.200.0/23" - - "108.59.80.0/20" - - "108.170.192.0/20" - - "108.170.208.0/21" - - "162.216.148.0/22" - - "162.222.176.0/21" - - "173.255.112.0/20" - - "192.158.28.0/22" - - "199.192.112.0/22" - - "199.223.232.0/22" - - "199.223.236.0/23" - - "23.236.48.0/20" - - "23.251.128.0/19" - - "35.200.0.0/13" - - "35.208.0.0/13" - - "107.167.160.0/19" - - "107.178.192.0/18" - - "146.148.2.0/23" - - "146.148.4.0/22" - - "146.148.8.0/21" - - "146.148.16.0/20" - - "146.148.32.0/19" - - "146.148.64.0/18" - - "34.104.0.0/14" - - "130.211.8.0/21" - - "130.211.16.0/20" - - "130.211.32.0/19" - - "130.211.64.0/18" - - "130.211.128.0/17" - - "104.154.0.0/15" - - "104.196.0.0/14" - - "208.68.108.0/23" - - "35.184.0.0/14" - - "35.188.0.0/15" - - "35.216.0.0/15" - - "35.190.0.0/17" - - "35.190.128.0/18" - - "35.190.192.0/19" - - "35.235.224.0/20" - - "35.192.0.0/14" - - "35.196.0.0/15" - - "35.198.0.0/16" - - "35.199.0.0/17" - - "35.199.128.0/18" - - "35.235.216.0/21" - - "35.190.224.0/20" - - "35.232.0.0/15" - - "35.234.0.0/16" - - "35.235.0.0/17" - - "35.235.192.0/20" - - "35.236.0.0/14" - - "35.240.0.0/13" - - "130.211.4.0/22" - - "35.220.0.0/14" - - "34.64.0.0/11" - - "34.96.0.0/14" - - "34.100.0.0/16" - - "34.102.0.0/15" - - "108.170.216.0/22" - - "108.170.220.0/23" - - "108.170.222.0/24" - - "35.224.0.0/13" - - "35.190.240.0/22" - - "34.124.0.0/18" - - "2600:1900::/35" - cidrIPv4: - - "8.34.208.0/20" - - "8.35.192.0/21" - - "8.35.200.0/23" - - "108.59.80.0/20" - - "108.170.192.0/20" - - "108.170.208.0/21" - - "162.216.148.0/22" - - "162.222.176.0/21" - - "173.255.112.0/20" - - "192.158.28.0/22" - - "199.192.112.0/22" - - "199.223.232.0/22" - - "199.223.236.0/23" - - "23.236.48.0/20" - - "23.251.128.0/19" - - "35.200.0.0/13" - - "35.208.0.0/13" - - "107.167.160.0/19" - - "107.178.192.0/18" - - "146.148.2.0/23" - - "146.148.4.0/22" - - "146.148.8.0/21" - - "146.148.16.0/20" - - "146.148.32.0/19" - - "146.148.64.0/18" - - "34.104.0.0/14" - - "130.211.8.0/21" - - "130.211.16.0/20" - - "130.211.32.0/19" - - "130.211.64.0/18" - - "130.211.128.0/17" - - "104.154.0.0/15" - - "104.196.0.0/14" - - "208.68.108.0/23" - - "35.184.0.0/14" - - "35.188.0.0/15" - - "35.216.0.0/15" - - "35.190.0.0/17" - - "35.190.128.0/18" - - "35.190.192.0/19" - - "35.235.224.0/20" - - "35.192.0.0/14" - - "35.196.0.0/15" - - "35.198.0.0/16" - - "35.199.0.0/17" - - "35.199.128.0/18" - - "35.235.216.0/21" - - "35.190.224.0/20" - - "35.232.0.0/15" - - "35.234.0.0/16" - - "35.235.0.0/17" - - "35.235.192.0/20" - - "35.236.0.0/14" - - "35.240.0.0/13" - - "130.211.4.0/22" - - "35.220.0.0/14" - - "34.64.0.0/11" - - "34.96.0.0/14" - - "34.100.0.0/16" - - "34.102.0.0/15" - - "108.170.216.0/22" - - "108.170.220.0/23" - - "108.170.222.0/24" - - "35.224.0.0/13" - - "35.190.240.0/22" - - "34.124.0.0/18" - cidrIPv6: - - "2600:1900::/35" - -google-netblocks: - cidr: - - "35.190.247.0/24" - - "64.233.160.0/19" - - "66.102.0.0/20" - - "66.249.80.0/20" - - "72.14.192.0/18" - - "74.125.0.0/16" - - "108.177.8.0/21" - - "173.194.0.0/16" - - "209.85.128.0/17" - - "216.58.192.0/19" - - "216.239.32.0/19" - - "172.217.0.0/19" - - "172.217.32.0/20" - - "172.217.128.0/19" - - "172.217.160.0/20" - - "172.217.192.0/19" - - "108.177.96.0/19" - - "35.191.0.0/16" - - "130.211.0.0/22" - - "2001:4860:4000::/36" - - "2404:6800:4000::/36" - - "2607:f8b0:4000::/36" - - "2800:3f0:4000::/36" - - "2a00:1450:4000::/36" - - "2c0f:fb50:4000::/36" - cidrIPv4: - - "35.190.247.0/24" - - "64.233.160.0/19" - - "66.102.0.0/20" - - "66.249.80.0/20" - - "72.14.192.0/18" - - "74.125.0.0/16" - - "108.177.8.0/21" - - "173.194.0.0/16" - - "209.85.128.0/17" - - "216.58.192.0/19" - - "216.239.32.0/19" - - "172.217.0.0/19" - - "172.217.32.0/20" - - "172.217.128.0/19" - - "172.217.160.0/20" - - "172.217.192.0/19" - - "108.177.96.0/19" - - "35.191.0.0/16" - - "130.211.0.0/22" - cidrIPv6: - - "2001:4860:4000::/36" - - "2404:6800:4000::/36" - - "2607:f8b0:4000::/36" - - "2800:3f0:4000::/36" - - "2a00:1450:4000::/36" - - "2c0f:fb50:4000::/36" diff --git a/dm/pipeline/README.md b/dm/pipeline/README.md deleted file mode 100644 index 0b25bcc111f..00000000000 --- a/dm/pipeline/README.md +++ /dev/null @@ -1,86 +0,0 @@ -# CFT Sample Pipeline - - - -- [Overview](#overview) -- [Prerequisites](#prerequisites) -- [Pipelines](#pipelines) - - - -## Overview - -You can use the Cloud Foundation toolkit (henceforth, CFT) as a standalone -solution, via its command line interface (CLI) – see -[CFT User Guide](../docs/userguide.md) for details. Alternatively, you can -initiate CFT actions via its API, from a variety of existing orchestration -tools, or from your own application. - -This document describes one of the CFT integration scenarios, wherein -you initiate the CFT actions from Jenkins. It uses as an example a -Jenkins-based "sample pipeline", which is included in this CFT directory. - -`Note:` This document assumes that you are familiar with the basics of -[Jenkins](https://jenkins.io/) and of its -[Pipeline Plugin](https://jenkins.io/doc/book/pipeline/). - -`Note:` The Jenkins-based process this document describes is for demonstration -purposes only. It is not intended as a product. Your Jenkins setup is likely -to be different from the one used for demonstrate. Therefore, to achieve -similar results, you need to modify certain parameters in all the demo files. - -## Prerequisites - -1. A working Jenkins server: - - Different organizations have vastly different Jenkins setups. Therefore, - this document provides no specific recommendations for fulfilling this - prerequisite. You might use a Compute Image from - [Marketplace](https://console.cloud.google.com/marketplace/browse?q=jenkins). - - Install the Pipeline Utility Steps plugin. -2. GCP Service Accounts (SA): - - `Service Account for Jenkins`: Jenkins must be configured with - permissions sufficient for managing DM deployments. This can be achieved - by: - - Associating a SA with the GCP Compute Instance running Jenkins (if - Jenkins is in GCP), or - - Configuring the SA credentials with the Jenkins user (if running - Jenkins outside GCP) - - `Service Account for the GCP project` (a.k.a. the DM Service Account): - this SA needs permissions to all APIs DM uses to create resources. -3. The Cloud Foundation toolkit: - - CFT must be installed in the Jenkins master and slaves. For installation - instructions, see the [CFT User - Guide](../docs/userguide.md#toolkit-installation-and-configuration). - - Note that the [Google Cloud SDK](https://cloud.google.com/sdk) is a - prerequisite for the CFT. -4. The Environment Variables file: - - An example file is [here](pipeline-vars). - - Replace with values specific to you organization, and move - the file to the Jenkins user's home directory. - -## Pipelines - -This directory implements deployment pipelines to show how the CFT can be used -in a *fictitious company*. In this fictitious company, three separate teams are -responsible for the corresponding separate pieces of the cloud infrastructure: - -- Central Cloud Platform Team: - - Responsible for creating GCP projects, IAM entities, Permissions, - Billing, etc. - - Owns the pipeline and configs in [project](project) -- Central Networking Team: - - Responsible for networking between for all other teams, interconnects, - on-premise integration, etc. - - Owns the pipeline and configs in [network](network) -- Application Teams (typically, more than one): - - Responsible for deploying the team-specific application stack (in this - example, there is a single application team, which is responsible for - deploying its GKE clusters in the different environments) - - Owns the pipeline and configs in [app](app) - -Each folder in this directory of the CFT repository represents and implements -a pipeline that corresponds to one of the above teams. - -`Note:` This is not a typical way of organizing Jenkins pipelines. Normally, -each pipeline would be in its own Git repository, with its own access controls -for the different teams. \ No newline at end of file diff --git a/dm/pipeline/app/Jenkinsfile b/dm/pipeline/app/Jenkinsfile deleted file mode 100644 index 221a250d72a..00000000000 --- a/dm/pipeline/app/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env groovy - - -// requires "Pipeline Utility Steps" plugin -// requires "pipeline-vars" file to be setup inside jenkins user home dir - -def config_dir = "pipeline/app" // relative to ${cft_dir} - -def env = "~/pipeline-vars" -def repo = "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit" -def branch = "pipeline" -def git_dir = "cft" -def cft_dir = "dm" - -pipeline { - agent any - stages { - stage('Checkout Repos') { - steps { - sh "rm -rf ${git_dir}" - sh "git clone ${repo} ${git_dir}" - sh "cd ${git_dir} && git checkout ${branch}" - } - } - stage('Initialize Deploy Stages') { - steps { - sh ". ${env} && cd ${git_dir}/${cft_dir} && cft apply ${config_dir} --show-stages --format yaml> .stages.yaml" - script { - def graph = readYaml file: "${git_dir}/${cft_dir}/.stages.yaml" - def i = 1 - graph.each { stg -> - stage("stage-${i}") { - def config_list = [] - stg.each { conf -> - config_list.add(conf.source) - } - def configs = config_list.join(" ") - echo "Executing configs: ${configs}" - sh ". ${env} && cd ${git_dir}/${cft_dir} && cft apply ${configs}" - } - i++ - } - } - } - } - } -} diff --git a/dm/pipeline/app/app-team-dev.yaml b/dm/pipeline/app/app-team-dev.yaml deleted file mode 100644 index 6dcee10455a..00000000000 --- a/dm/pipeline/app/app-team-dev.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: app-team-1-dev -project: {{env.CFT_CHILD_PROJECT}} -description: App Team 1 DEV GKE Cluster - -imports: - - path: templates/gke/gke.py - name: gke.py - -resources: - - name: app-team-1-dev - type: gke.py - properties: - zone: us-east1-b - cluster: - name: app-team-1-dev - description: App Team 1 DEV GKE Cluster - network: $(out.network-app-team-1.network-app-team-1-dev.name) - subnetwork: subnet-app-team-1-dev - nodeConfig: - oauthScopes: - - https://www.googleapis.com/auth/compute - - https://www.googleapis.com/auth/devstorage.read_only - - https://www.googleapis.com/auth/logging.write - - https://www.googleapis.com/auth/monitoring diff --git a/dm/pipeline/app/app-team-prod.yaml b/dm/pipeline/app/app-team-prod.yaml deleted file mode 100644 index 8c85a7d4e7f..00000000000 --- a/dm/pipeline/app/app-team-prod.yaml +++ /dev/null @@ -1,28 +0,0 @@ -name: app-team-1-prod -project: {{env.CFT_CHILD_PROJECT}} -description: App Team 1 PROD GKE Cluster - -imports: - - path: templates/gke/gke.py - name: gke.py - -resources: - - name: app-team-1-prod - type: gke.py - properties: - clusterLocationType: Regional - region: us-east1 - cluster: - name: app-team-1-prod-cluster - description: App Team 1 PROD GKE Cluster - network: $(out.network-app-team-1.network-app-team-1-prod.name) - subnetwork: subnet-app-team-1-prod - nodeConfig: - oauthScopes: - - https://www.googleapis.com/auth/compute - - https://www.googleapis.com/auth/devstorage.read_only - - https://www.googleapis.com/auth/logging.write - - https://www.googleapis.com/auth/monitoring - locations: - - us-east1-c - - us-east1-b diff --git a/dm/pipeline/network/Jenkinsfile b/dm/pipeline/network/Jenkinsfile deleted file mode 100644 index 9b2ae89576c..00000000000 --- a/dm/pipeline/network/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env groovy - - -// requires "Pipeline Utility Steps" plugin -// requires "pipeline-vars" file to be setup inside jenkins user home dir - -def config_dir = "pipeline/network" // relative to ${cft_dir} - -def env = "~/pipeline-vars" -def repo = "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit" -def branch = "pipeline" -def git_dir = "cft" -def cft_dir = "dm" - -pipeline { - agent any - stages { - stage('Checkout Repos') { - steps { - sh "rm -rf ${git_dir}" - sh "git clone ${repo} ${git_dir}" - sh "cd ${git_dir} && git checkout ${branch}" - } - } - stage('Initialize Deploy Stages') { - steps { - sh ". ${env} && cd ${git_dir}/${cft_dir} && cft apply ${config_dir} --show-stages --format yaml> .stages.yaml" - script { - def graph = readYaml file: "${git_dir}/${cft_dir}/.stages.yaml" - def i = 1 - graph.each { stg -> - stage("stage-${i}") { - def config_list = [] - stg.each { conf -> - config_list.add(conf.source) - } - def configs = config_list.join(" ") - echo "Executing configs: ${configs}" - sh ". ${env} && cd ${git_dir}/${cft_dir} && cft apply ${configs}" - } - i++ - } - } - } - } - } -} diff --git a/dm/pipeline/network/firewall-app-team-1.yaml b/dm/pipeline/network/firewall-app-team-1.yaml deleted file mode 100644 index 2213da659a8..00000000000 --- a/dm/pipeline/network/firewall-app-team-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -name: firewall-app-team-1 -project: {{env.CFT_CHILD_PROJECT}} -description: Firewall deployment for app-team-1 - -imports: - - path: templates/firewall/firewall.py -resources: - - type: templates/firewall/firewall.py - name: dev-rules - properties: - network: $(out.network-app-team-1.network-app-team-1-dev.name) - rules: - - name: allow-proxy-from-inside-dev - allowed: - - IPProtocol: tcp - ports: - - "80" - - "443" - description: This rule allows connectivity to the HTTP proxies - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 - - name: allow-dns-from-all - allowed: - - IPProtocol: udp - ports: - - "53" - - IPProtocol: tcp - ports: - - "53" - description: this rule allows DNS queries to google's 8.8.8.8 - direction: EGRESS - destinationRanges: - - 8.8.8.8/32 - - type: templates/firewall/firewall.py - name: prod-rules - properties: - network: $(out.network-app-team-1.network-app-team-1-prod.name) - rules: - - name: allow-proxy-from-inside-prod - allowed: - - IPProtocol: tcp - ports: - - "80" - - "443" - description: This rule allows connectivity to the HTTP proxies - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 diff --git a/dm/pipeline/network/firewall-app-team-2.yaml b/dm/pipeline/network/firewall-app-team-2.yaml deleted file mode 100644 index 681535f38dc..00000000000 --- a/dm/pipeline/network/firewall-app-team-2.yaml +++ /dev/null @@ -1,47 +0,0 @@ -name: firewall-app-team-2 -project: {{env.CFT_CHILD_PROJECT}} -description: Firewall deployment for app-team-2 - -imports: - - path: templates/firewall/firewall.py -resources: - - type: templates/firewall/firewall.py - name: dev-rules - properties: - network: $(out.network-app-team-2.network-app-team-2-dev.name) - rules: - - name: allow-proxy-from-inside-dev - allowed: - - IPProtocol: tcp - ports: - - "443" - description: This rule allows connectivity to the HTTP proxies - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 - - name: allow-dns-from-all - allowed: - - IPProtocol: udp - ports: - - "53" - - IPProtocol: tcp - ports: - - "53" - description: this rule allows DNS queries to google's 8.8.8.8 - direction: EGRESS - destinationRanges: - - 8.8.8.8/32 - - type: templates/firewall/firewall.py - name: prod-rules - properties: - network: $(out.network-app-team-2.network-app-team-2-prod.name) - rules: - - name: allow-proxy-from-inside-prod - allowed: - - IPProtocol: tcp - ports: - - "443" - description: This rule allows connectivity to the HTTP proxies - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 diff --git a/dm/pipeline/network/network-app-team-1.yaml b/dm/pipeline/network/network-app-team-1.yaml deleted file mode 100644 index 4da3759e35a..00000000000 --- a/dm/pipeline/network/network-app-team-1.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: network-app-team-1 -project: {{env.CFT_CHILD_PROJECT}} -description: Network deployment for app-team-1 - -imports: - - path: templates/network/network.py - -resources: - - type: templates/network/network.py - name: network-app-team-1-dev - properties: - autoCreateSubnetworks: false - subnetworks: - - name: subnet-app-team-1-dev - region: us-east1 - ipCidrRange: 192.168.0.0/24 - - type: templates/network/network.py - name: network-app-team-1-prod - properties: - autoCreateSubnetworks: false - subnetworks: - - name: subnet-app-team-1-prod - region: us-east1 - ipCidrRange: 192.168.1.0/24 diff --git a/dm/pipeline/network/network-app-team-2.yaml b/dm/pipeline/network/network-app-team-2.yaml deleted file mode 100644 index d3443dd5de3..00000000000 --- a/dm/pipeline/network/network-app-team-2.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: network-app-team-2 -project: {{env.CFT_CHILD_PROJECT}} -description: Network deployment for app-team-2 - -imports: - - path: templates/network/network.py - -resources: - - type: templates/network/network.py - name: network-app-team-2-dev - properties: - autoCreateSubnetworks: false - - type: templates/network/network.py - name: network-app-team-2-prod - properties: - autoCreateSubnetworks: true diff --git a/dm/pipeline/network/proxy-app-team-2.yaml b/dm/pipeline/network/proxy-app-team-2.yaml deleted file mode 100644 index 022c7bb32ae..00000000000 --- a/dm/pipeline/network/proxy-app-team-2.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: proxy-app-team-2 -project: {{env.CFT_CHILD_PROJECT}} -description: Proxy deployment for app-team-2 - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: proxy-app-team-2-prod - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - network: $(out.network-app-team-2.network-app-team-2-prod.name) - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx diff --git a/dm/pipeline/pipeline-vars b/dm/pipeline/pipeline-vars deleted file mode 100644 index a48645bf2e1..00000000000 --- a/dm/pipeline/pipeline-vars +++ /dev/null @@ -1,15 +0,0 @@ -# This file is used by the sample pipeline configs to make them usable by -# different organizations, and to hide sensitive IDs from git. -# -# It's strongly recommended not to keep your organization's specific info in -# a public git repo. -# -# To use the supplied configs without modification, replace the -# fields with values pertinent to your organization, and install this file -# inside the Jenkins user's home directory (~jenkins/, or ~tomcat/, etc) - -export CLOUD_FOUNDATION_PROJECT_ID= # This is the project used to create new projects (only used in the 'project' Jenkins job) -export CFT_ORGANIZATION_ID= # Organization ID in which new projects get created (only used in the 'project' Jenkins job) -export CFT_ORGANIZATION_FOLDER_ID= # Folder ID in which new projects get created (only used in the 'project' Jenkins job) -export CFT_BILLING_ACCOUNT_ID= # Billing accounts to associate with new projects (only used in the 'project' Jenkins job) -export CFT_CHILD_PROJECT= # This is the project where the resources get created diff --git a/dm/pipeline/project/Jenkinsfile b/dm/pipeline/project/Jenkinsfile deleted file mode 100644 index cd7bd8ce379..00000000000 --- a/dm/pipeline/project/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env groovy - - -// requires "Pipeline Utility Steps" plugin -// requires "pipeline-vars" file to be setup inside jenkins user home dir - -def config_dir = "pipeline/project" // relative to ${cft_dir} - -def env = "~/pipeline-vars" -def repo = "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit" -def branch = "pipeline" -def git_dir = "cft" -def cft_dir = "dm" - -pipeline { - agent any - stages { - stage('Checkout Repos') { - steps { - sh "rm -rf ${git_dir}" - sh "git clone ${repo} ${git_dir}" - sh "cd ${git_dir} && git checkout ${branch}" - } - } - stage('Initialize Deploy Stages') { - steps { - sh ". ${env} && cd ${git_dir}/${cft_dir} && cft apply ${config_dir} --show-stages --format yaml> .stages.yaml" - script { - def graph = readYaml file: "${git_dir}/${cft_dir}/.stages.yaml" - def i = 1 - graph.each { stg -> - stage("stage-${i}") { - def config_list = [] - stg.each { conf -> - config_list.add(conf.source) - } - def configs = config_list.join(" ") - echo "Executing configs: ${configs}" - sh ". ${env} && cd ${git_dir}/${cft_dir} && cft apply ${configs}" - } - i++ - } - } - } - } - } -} diff --git a/dm/pipeline/project/project.yaml b/dm/pipeline/project/project.yaml deleted file mode 100644 index a4cd290c542..00000000000 --- a/dm/pipeline/project/project.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: sourced-cft-demo-0 -imports: - - path: templates/project/project.py - name: project.py -resources: - - name: {{env.CFT_CHILD_PROJECT}} - type: project.py - properties: - parent: - type: folder - id: {{env.CFT_ORGANIZATION_FOLDER_ID}} - billingAccountId: {{env.CFT_BILLING_ACCOUNT_ID}} - activateApis: - - compute.googleapis.com - - deploymentmanager.googleapis.com - - pubsub.googleapis.com - - container.googleapis.com - serviceAccounts: - - accountId: cft-demo-sa-0 - displayName: cft demo service account 0 - roles: - - roles/editor - - roles/viewer - networkAccess: true - usageExportBucket: false diff --git a/dm/pipeline/teardown/Jenkinsfile b/dm/pipeline/teardown/Jenkinsfile deleted file mode 100644 index bedfbd95a7d..00000000000 --- a/dm/pipeline/teardown/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env groovy - - -// requires "Pipeline Utility Steps" plugin -// requires "pipeline-vars" file to be setup inside jenkins user home dir - -def config_dir = "pipeline/network pipeline/app" // relative to ${cft_dir} - -def env = "~/pipeline-vars" -def repo = "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit" -def branch = "pipeline" -def git_dir = "cft" -def cft_dir = "dm" - -pipeline { - agent any - stages { - stage('Checkout Repos') { - steps { - sh "rm -rf ${git_dir}" - sh "git clone ${repo} ${git_dir}" - sh "cd cft && git checkout ${branch}" - } - } - stage('Initialize Deploy Stages') { - steps { - sh ". ${env} && cd ${git_dir}/${cft_dir} && cft delete ${config_dir} --show-stages --format yaml> .stages.yaml" - script { - def graph = readYaml file: "${git_dir}/${cft_dir}/.stages.yaml" - def i = 1 - graph.each { stg -> - stage("stage-${i}") { - def config_list = [] - stg.each { conf -> - config_list.add(conf.source) - } - def configs = config_list.join(" ") - echo "Executing configs: ${configs}" - sh ". ${env} && cd ${git_dir}/${cft_dir} && cft delete ${configs}" - } - i++ - } - } - } - } - } -} diff --git a/dm/pylintrc b/dm/pylintrc deleted file mode 100644 index 06fae4d176a..00000000000 --- a/dm/pylintrc +++ /dev/null @@ -1,408 +0,0 @@ -[MASTER] - -# Specify a configuration file. -#rcfile= - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Add files or directories to the blacklist. They should be base names, not -# paths. -ignore=CVS - -# Add files or directories matching the regex patterns to the blacklist. The -# regex matches against base names, not paths. -ignore-patterns= - -# Pickle collected data for later comparisons. -persistent=yes - -# List of plugins (as comma separated values of python modules names) to load, -# usually to register additional checkers. -load-plugins= - -# Use multiple processes to speed up Pylint. -jobs=1 - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code -extension-pkg-whitelist=numpy - -# Allow optimization of some AST trees. This will activate a peephole AST -# optimizer, which will apply various small optimizations. For instance, it can -# be used to obtain the result of joining multiple strings with the addition -# operator. Joining a lot of strings can lead to a maximum recursion error in -# Pylint and this flag can prevent that. It has one side effect, the resulting -# AST will be different than the one from reality. This option is deprecated -# and it will be removed in Pylint 2.0. -optimize-ast=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED -confidence= - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -#enable= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once).You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use"--disable=all --enable=classes -# --disable=W" -disable=long-suffix,standarderror-builtin,indexing-exception,delslice-method,unichr-builtin,dict-view-method,parameter-unpacking,unicode-builtin,cmp-builtin,intern-builtin,round-builtin,backtick,nonzero-method,xrange-builtin,coerce-method,raw_input-builtin,old-division,filter-builtin-not-iterating,old-octal-literal,input-builtin,map-builtin-not-iterating,buffer-builtin,basestring-builtin,zip-builtin-not-iterating,using-cmp-argument,unpacking-in-except,old-raise-syntax,coerce-builtin,dict-iter-method,hex-method,range-builtin-not-iterating,useless-suppression,cmp-method,print-statement,reduce-builtin,file-builtin,long-builtin,getslice-method,execfile-builtin,no-absolute-import,metaclass-assignment,oct-method,reload-builtin,import-star-module-level,suppressed-message,apply-builtin,raising-string,next-method-called,setslice-method,old-ne-operator,arguments-differ,wildcard-import,locally-disabled - - -[REPORTS] - -# Set the output format. Available formats are text, parseable, colorized, msvs -# (visual studio) and html. You can also give a reporter class, eg -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Put messages in a separate file for each module / package specified on the -# command line instead of printing them on stdout. Reports (if any) will be -# written in a file name "pylint_global.[txt|html]". This option is deprecated -# and it will be removed in Pylint 2.0. -files-output=no - -# Tells whether to display a full report or only the messages -reports=yes - -# Python expression which should return a note less than 10 (10 is the highest -# note). You have access to the variables errors warning, statement which -# respectively contain the number of errors / warnings messages and the total -# number of statements analyzed. This is used by the global evaluation report -# (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details -#msg-template= - - -[BASIC] - -# Good variable names which should always be accepted, separated by a comma -good-names=i,j,k,ex,Run,_ - -# Bad variable names which should always be refused, separated by a comma -bad-names=foo,bar,baz,toto,tutu,tata - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Include a hint for the correct naming format with invalid-name -include-naming-hint=no - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -property-classes=abc.abstractproperty - -# Regular expression matching correct variable names -variable-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Naming hint for variable names -variable-name-hint=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression matching correct class attribute names -class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ - -# Naming hint for class attribute names -class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ - -# Regular expression matching correct argument names -argument-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Naming hint for argument names -argument-name-hint=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression matching correct module names -module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ - -# Naming hint for module names -module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ - -# Regular expression matching correct constant names -const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$ - -# Naming hint for constant names -const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$ - -# Regular expression matching correct inline iteration names -inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ - -# Naming hint for inline iteration names -inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$ - -# Regular expression matching correct method names -method-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Naming hint for method names -method-name-hint=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression matching correct function names -function-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Naming hint for function names -function-name-hint=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression matching correct attribute names -attr-rgx=[a-z_][a-z0-9_]{2,30}$ - -# Naming hint for attribute names -attr-name-hint=[a-z_][a-z0-9_]{2,30}$ - -# Regular expression matching correct class names -class-rgx=[A-Z_][a-zA-Z0-9]+$ - -# Naming hint for class names -class-name-hint=[A-Z_][a-zA-Z0-9]+$ - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^test_ - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - - -[ELIF] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - - -[FORMAT] - -# Maximum number of characters on a single line. -max-line-length=80 - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=y - -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check=trailing-comma,dict-separator - -# Maximum number of lines in a module -max-module-lines=1000 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - - -[LOGGING] - -# Logging modules to check that the string format arguments are in logging -# function parameter format -logging-modules=logging - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME,XXX,TODO - - -[SIMILARITIES] - -# Minimum lines number of a similarity. -min-similarity-lines=10 - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - -# Ignore imports when computing similarities. -ignore-imports=no - - -[SPELLING] - -# Spelling dictionary name. Available dictionaries: none. To make it working -# install python-enchant package. -spelling-dict= - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to indicated private dictionary in -# --spelling-private-dict-file option instead of raising a message. -spelling-store-unknown-words=no - - -[TYPECHECK] - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis. It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local,matplotlib.cm,tensorflow.python,tensorflow,tensorflow.train.Example,RunOptions - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members=set_shape,np.float32 - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - - -[VARIABLES] - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# A regular expression matching the name of dummy variables (i.e. expectedly -# not used). -dummy-variables-rgx=(_+[a-zA-Z0-9_]*?$)|dummy - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid to define new builtins when possible. -additional-builtins= - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_,_cb - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,future.builtins - - -[CLASSES] - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__,__new__,setUp - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=mcs - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict,_fields,_replace,_source,_make - - -[DESIGN] - -# Maximum number of arguments for function / method -max-args=10 - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore -ignored-argument-names=_.* - -# Maximum number of locals for function / method body -max-locals=30 - -# Maximum number of return / yield for function / method body -max-returns=6 - -# Maximum number of branch for function / method body -max-branches=12 - -# Maximum number of statements in function / method body -max-statements=100 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of attributes for a class (see R0902). -max-attributes=10 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=0 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of boolean expressions in a if statement -max-bool-expr=5 - - -[IMPORTS] - -# Deprecated modules which should not be used, separated by a comma -deprecated-modules=optparse - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled) -import-graph= - -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled) -ext-import-graph= - -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled) -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "Exception" -overgeneral-exceptions=Exception - diff --git a/dm/pytest.ini b/dm/pytest.ini deleted file mode 100644 index 676ed45cc25..00000000000 --- a/dm/pytest.ini +++ /dev/null @@ -1,4 +0,0 @@ -[pytest] -testpaths = tests -addopts = --cov=cloud_foundation_toolkit - diff --git a/dm/requirements/development.txt b/dm/requirements/development.txt deleted file mode 100644 index d1b8c25e884..00000000000 --- a/dm/requirements/development.txt +++ /dev/null @@ -1,8 +0,0 @@ -coverage -mock -pylint -pytest -pytest-cov -setuptools -yapf -jsonschema diff --git a/dm/requirements/install.txt b/dm/requirements/install.txt deleted file mode 100644 index 74c9740edf8..00000000000 --- a/dm/requirements/install.txt +++ /dev/null @@ -1,2 +0,0 @@ -jinja2 -networkx diff --git a/dm/requirements/prerequisites.txt b/dm/requirements/prerequisites.txt deleted file mode 100644 index 1a4adc9dd9b..00000000000 --- a/dm/requirements/prerequisites.txt +++ /dev/null @@ -1,3 +0,0 @@ -tox -virtualenv -wheel diff --git a/dm/setup.cfg b/dm/setup.cfg deleted file mode 100644 index b86fd100bc8..00000000000 --- a/dm/setup.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[bdist_wheel] -universal = 1 - -[metadata] -description-file = README.md -license_file = ../LICENSE diff --git a/dm/setup.py b/dm/setup.py deleted file mode 100644 index 0616d373421..00000000000 --- a/dm/setup.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python - -from setuptools import find_packages -from setuptools import setup - - -def get_version(): - with open('VERSION') as f: - return f.readline().rstrip() - - -def get_install_requirements(): - with open('requirements/install.txt') as f: - return [l.strip() for l in f if l.strip() and not l.startswith('#')] - - -config = { - 'name': 'cloud-foundation-toolkit', - 'version': get_version(), - 'description': 'Cloud Foundation Toolkit', - 'author': 'Gustavo Baratto', - 'author_email': 'gbaratto@gmail.com', - 'url': 'https://github.com/GoogleCloudPlatform/deploymentmanager-sample', - 'packages': find_packages('src'), - 'package_dir': {'': 'src'}, - 'scripts': [ - 'src/cft', - 'src/cftenv' - ], - 'install_requires': get_install_requirements(), - 'include_package_data': True -} - - -setup(**config) diff --git a/dm/solutions/take5-demo/README.md b/dm/solutions/take5-demo/README.md deleted file mode 100644 index 97cfafd9172..00000000000 --- a/dm/solutions/take5-demo/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# Demo script for Deployment Manager - -This script is part of the Take5 demo for **Deployment Manager**. -This tutorial walks you through how to start with **Deployment Manager** -and how to use the **Cloud Foundation Toolkit**. - -The video will be published shortly. - -## Part 1 - Firewall rules - -```bash -# Clone the CFT Repo -git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit.git -cd cloud-foundation-toolkit/dm - -# Copy the Firewall config file -cp templates/firewall/examples/firewall.yaml my_firewall.yaml - -# Specifying the VPC for the Firewall rules -export VpcName=default - -# Edit my_firewall.yaml - Change the network name manually or via CLI: -sed -i "s//$VpcName/g" my_firewall.yaml - -# Enable the compute API to create firewalls, enable the deploymentmanager API to create deployments. -gcloud services enable compute.googleapis.com deploymentmanager.googleapis.com -gcloud deployment-manager deployments create my-first-firewalls --config my_firewall.yaml - -# Manually change the my_firewall.yaml and try out the changes -gcloud deployment-manager deployments update my-first-firewalls --config my_firewall.yaml - -# Clean up the deployment -gcloud deployment-manager deployments delete my-first-firewalls - -``` -## Part 2 - Project Factory with Shared-VPC - -```bash -# Prerequisites - Setting the environment specific values -export OrgID=518838582042 -export ProjectNumber=700306896797 -export BillingID=01BACD-32281D-31B750 -export ProjectUniqueNameH=take5-host-xt-1300 -export ProjectUniqueNameG=take5-host-xg-1300 -export ParentFolderID=1049237988874 - -# Enabling the required APIs and IAM permissions -gcloud services enable deploymentmanager.googleapis.com cloudresourcemanager.googleapis.com cloudbilling.googleapis.com iam.googleapis.com servicemanagement.googleapis.com -gcloud organizations add-iam-policy-binding $OrgID --member=serviceAccount:$ProjectNumber@cloudservices.gserviceaccount.com --role=roles/resourcemanager.projectCreator - -## Add @cloudservices.gserviceaccount.com to the billing account as Billing User MANUALLY - -cp templates/project/examples/project.yaml my_project.yaml - -# Edit my_firewall.yaml - Change the Org/Folder ID, BillingID, UniqueProjectName manually or change it via CLI: -sed -i "s//$ProjectUniqueNameH/g" my_project.yaml -sed -i "s/type: organization/type: folder/g" my_project.yaml -sed -i "s//$ParentFolderID/g" my_project.yaml -sed -i "s//$BillingID/g" my_project.yaml - -# Manual remove attachment to a shared VPC from my_project.yaml - -# Create the project -gcloud deployment-manager deployments create my-first-project --config my_project.yaml - -# add `sharedVPCHost: true` to my_project.yaml - -# Enable the Deployment Manager SA to attach projects to the shared VPC -gcloud organizations add-iam-policy-binding $OrgID --member=serviceAccount:$ProjectNumber@cloudservices.gserviceaccount.com --role=roles/compute.xpnAdmin - -# Update the project to a Shared-VPC host project -gcloud deployment-manager deployments update my-first-project --config my_project.yaml - -cp templates/network/examples/network.yaml my_network.yaml - -# Create the Shared-VPC and its subnets -gcloud deployment-manager deployments create my-first-network --config my_network.yaml --project $ProjectUniqueNameH - - -cp templates/project/examples/project.yaml my_guest_project.yaml - - -# nano my_guest_project.yaml - Change the network name and other values manually or change it via CLI: -sed -i "s//$ProjectUniqueNameG/g" my_guest_project.yaml -sed -i "s/type: organization/type: folder/g" my_guest_project.yaml -sed -i "s//$ParentFolderID/g" my_guest_project.yaml -sed -i "s//$BillingID/g" my_guest_project.yaml -sed -i "s/test-vpc-host-project/$ProjectUniqueNameH/g" my_guest_project.yaml -sed -i "s/subnet-1/test-subnetwork-1/g" my_guest_project.yaml - -# Create the guest project and attach it to the host project -gcloud deployment-manager deployments create my-guest-project --config my_guest_project.yaml -``` - -## Note - -- Some templates are updated since the recording of the video, there are more detailed examples - available for the project template \ No newline at end of file diff --git a/dm/src/cft b/dm/src/cft deleted file mode 100755 index a60e84cac42..00000000000 --- a/dm/src/cft +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -# Copyright 2018 Google Inc. All Rights Reserved. -# - -# Finds the directory name for this script, and source the env -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -source "$DIR/cftenv" - -# Executes cft -exec python -m "cloud_foundation_toolkit.cli" "$@" diff --git a/dm/src/cftenv b/dm/src/cftenv deleted file mode 100755 index 026a60c7527..00000000000 --- a/dm/src/cftenv +++ /dev/null @@ -1,124 +0,0 @@ -#!/bin/sh -# -# Copyright 2013 Google Inc. All Rights Reserved. -# - -# -# -# CLOUDSDK_ROOT_DIR (a) installation root dir -# CLOUDSDK_PYTHON (u) python interpreter path -# CLOUDSDK_PYTHON_ARGS (u) python interpreter arguments -# CLOUDSDK_PYTHON_SITEPACKAGES (u) use python site packages -# -# (a) always defined by the preamble -# (u) user definition overrides preamble - -# Determines the real cloud sdk root dir given the script path. -# Would be easier with a portable "readlink -f". -_cloudsdk_root_dir() { - case $1 in - /*) _cloudsdk_path=$1 - ;; - */*) _cloudsdk_path=$PWD/$1 - ;; - *) _cloudsdk_path=$(which "$1") - case $_cloudsdk_path in - /*) ;; - *) _cloudsdk_path=$PWD/$_cloudsdk_path ;; - esac - ;; - esac - _cloudsdk_dir=0 - while : - do - while _cloudsdk_link=$(readlink "$_cloudsdk_path") - do - case $_cloudsdk_link in - /*) _cloudsdk_path=$_cloudsdk_link ;; - *) _cloudsdk_path=$(dirname "$_cloudsdk_path")/$_cloudsdk_link ;; - esac - done - case $_cloudsdk_dir in - 1) break ;; - esac - if [ -d "${_cloudsdk_path}" ]; then - break - fi - _cloudsdk_dir=1 - _cloudsdk_path=$(dirname "$_cloudsdk_path") - done - while : - do case $_cloudsdk_path in - */) _cloudsdk_path=$(dirname "$_cloudsdk_path/.") - ;; - */.) _cloudsdk_path=$(dirname "$_cloudsdk_path") - ;; - */bin) dirname "$_cloudsdk_path" - break - ;; - *) echo "$_cloudsdk_path" - break - ;; - esac - done -} - -GCLOUD_PATH=$(which gcloud) -#CLOUDSDK_ROOT_DIR=$(_cloudsdk_root_dir "$0") -CLOUDSDK_ROOT_DIR=$(_cloudsdk_root_dir "$GCLOUD_PATH") - -# if CLOUDSDK_PYTHON is empty -if [ -z "$CLOUDSDK_PYTHON" ]; then - # if python2 exists then plain python may point to a version != 2 - if which python2 >/dev/null; then - CLOUDSDK_PYTHON=python2 - elif which python2.7 >/dev/null; then - # this is what some OS X versions call their built-in Python - CLOUDSDK_PYTHON=python2.7 - elif which python >/dev/null; then - # Use unversioned python if it exists. - CLOUDSDK_PYTHON=python - elif which python3 >/dev/null; then - # We support python3, but only want to default to it if nothing else is - # found. - CLOUDSDK_PYTHON=python3 - else - # This won't work because it wasn't found above, but at this point this - # is our best guess for the error message. - CLOUDSDK_PYTHON=python - fi -fi - -# $PYTHONHOME can interfere with gcloud. Users should use -# CLOUDSDK_PYTHON to configure which python gcloud uses. -unset PYTHONHOME - -# if CLOUDSDK_PYTHON_SITEPACKAGES and VIRTUAL_ENV are empty -case :$CLOUDSDK_PYTHON_SITEPACKAGES:$VIRTUAL_ENV: in -:::) # add -S to CLOUDSDK_PYTHON_ARGS if not already there - case " $CLOUDSDK_PYTHON_ARGS " in - *" -S "*) ;; - " ") CLOUDSDK_PYTHON_ARGS="-S" - ;; - *) CLOUDSDK_PYTHON_ARGS="$CLOUDSDK_PYTHON_ARGS -S" - ;; - esac - unset CLOUDSDK_PYTHON_SITEPACKAGES - ;; -*) # remove -S from CLOUDSDK_PYTHON_ARGS if already there - while :; do - case " $CLOUDSDK_PYTHON_ARGS " in - *" -S "*) CLOUDSDK_PYTHON_ARGS=${CLOUDSDK_PYTHON_ARGS%%-S*}' '${CLOUDSDK_PYTHON_ARGS#*-S} ;; - *) break ;; - esac - done - # if CLOUDSDK_PYTHON_SITEPACKAGES is empty - [ -z "$CLOUDSDK_PYTHON_SITEPACKAGES" ] && - CLOUDSDK_PYTHON_SITEPACKAGES=1 - export CLOUDSDK_PYTHON_SITEPACKAGES - ;; -esac - -export CLOUDSDK_ROOT_DIR CLOUDSDK_PYTHON_ARGS -export PYTHONPATH="${CLOUDSDK_ROOT_DIR}/lib/third_party:${CLOUDSDK_ROOT_DIR}/lib" -# diff --git a/dm/src/cloud_foundation_toolkit/__init__.py b/dm/src/cloud_foundation_toolkit/__init__.py deleted file mode 100644 index 93b0ec325e7..00000000000 --- a/dm/src/cloud_foundation_toolkit/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -import logging -import pkg_resources - -from googlecloudsdk.core.credentials import store as creds_store - -# Setup logging and expose Logger object to the rest of the project -LOG = logging.getLogger("cft") -LOG.addHandler(logging.StreamHandler()) -LOG.propagate = False - -__VERSION__ = pkg_resources.get_distribution(__name__).version - -# Register credentials providers - for instance SA, etc -credential_providers = [ - creds_store.DevShellCredentialProvider(), - creds_store.GceCredentialProvider(), -] -for provider in credential_providers: - provider.Register() diff --git a/dm/src/cloud_foundation_toolkit/actions.py b/dm/src/cloud_foundation_toolkit/actions.py deleted file mode 100644 index caa47bebc50..00000000000 --- a/dm/src/cloud_foundation_toolkit/actions.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyr ight2018 Google Inc. All rights reserved. -# -# 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. -""" Deployment Actions """ - -import glob -import json -import os.path -import sys - -from apitools.base.py import exceptions as apitools_exceptions -from ruamel.yaml import YAML - -from cloud_foundation_toolkit import LOG -from cloud_foundation_toolkit.deployment import Config, ConfigGraph, Deployment - -# To avoid code repetition this ACTION_MAP is used to translate the -# args provided to the cmd line to the appropriate method of the -# deployment object -ACTION_MAP = { - 'apply': { - 'preview': 'preview' - }, - 'create': { - 'preview': 'preview' - }, - 'delete': {}, - 'update': { - 'preview': 'preview' - } -} - - -def check_file(config): - extensions = ['.yaml', '.yml', '.jinja'] - for ext in extensions: - if ext == config[-len(ext):]: - return True - - -def get_config_files(config): - """ Build a list of config files - List could have files directory or yaml strings - - Args(list): List of configs. Each item can be a file, a directory, - or a yaml string - - Returns: A list of config files or strings - """ - - config_files = [] - - for conf in config: - if os.path.isdir(conf): - config_files.extend( - [f for f in glob.glob(conf + '/*') if check_file(f)] - ) - else: - config_files.append(conf) - - LOG.debug('Config files %s', config_files) - return config_files - - -def execute(args): - action = args.action - - if action == 'delete' or (hasattr(args, 'reverse') and args.reverse): - graph = reversed( - ConfigGraph(get_config_files(args.config), - project=args.project) - ) - else: - graph = ConfigGraph(get_config_files(args.config), project=args.project) - - arguments = {} - for k, v in vars(args).items(): - if k in ACTION_MAP.get(action, {}): - arguments[ACTION_MAP[action][k]] = v - - LOG.debug( - 'Excuting %s on %s with arguments %s', - action, - args.config, - arguments - ) - - if args.show_stages: - output = [] - for level in graph: - configs = [] - for config in level: - configs.append( - { - 'project': config.project, - 'deployment': config.deployment, - 'source': config.source - } - ) - output.append(configs) - if args.format == 'yaml': - YAML().dump(output, sys.stdout) - elif args.format == 'json': - print(json.dumps(output, indent=2)) - else: - for i, stage in enumerate(output, start=1): - print('---------- Stage {} ----------'.format(i)) - for config in stage: - print( - ' - project: {}, deployment: {}, source: {}'.format( - config['project'], - config['deployment'], - config['source'] - ) - ) - print('------------------------------') - - else: - for i, stage in enumerate(graph, start=1): - print('---------- Stage {} ----------'.format(i)) - for config in stage: - LOG.debug('%s config %s', action, config.deployment) - deployment = Deployment(config) - method = getattr(deployment, action) - try: - method(**arguments) - except apitools_exceptions.HttpNotFoundError: - LOG.warn('Deployment %s does not exit', config.deployment) - if action != 'delete': - raise - print('------------------------------') diff --git a/dm/src/cloud_foundation_toolkit/cli.py b/dm/src/cloud_foundation_toolkit/cli.py deleted file mode 100755 index 6cdc5fc1773..00000000000 --- a/dm/src/cloud_foundation_toolkit/cli.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env python -# Copyright 2017 Gustavo Baratto. All Rights Reserved. -# -# 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. -""" Cloud Foundation Toolkit CLI """ - -from __future__ import print_function -import argparse -import sys - -from cloud_foundation_toolkit import __VERSION__ as CFT_VERSION -from cloud_foundation_toolkit import LOG -from cloud_foundation_toolkit.actions import execute - - -def build_common_args(parser): - """ Configures arguments to all actions/subparsers """ - - parser.add_argument( - 'config', - type=str, - nargs='+', - help='The path to the config files or directory' - ) - parser.add_argument( - '--show-stages', - '-s', - action='store_true', - default=False, - help=( - 'If specified, only displays the yaml representing the dependency ' - 'graph for the action' - ) - ) - parser.add_argument( - '--format', - '-f', - choices=['human', - 'yaml', - 'json'], - default='human', - help='The format of the output' - ) - - -def parse_args(args): - """parse CLI options """ - parser = argparse.ArgumentParser('cft') - - parser.add_argument( - '--version', - '-v', - action='version', - version=CFT_VERSION, - help='Print version information and exit' - ) - parser.add_argument( - '--project', - default=None, - help=( - 'The ID of the GCP project in which ALL config files will be ' - 'executed. This option will override the "project" directive in ' - 'the config files, so be careful when using this' - ) - ) - parser.add_argument('--verbosity', default='warning', help='The log level') - - # subparser for each action - subparser_obj = parser.add_subparsers(dest='action') - actions = ['apply', 'create', 'delete', 'update'] - - subparsers = {} - for action in actions: - subparsers[action] = subparser_obj.add_parser(action) - build_common_args(subparsers[action]) - - # action-specficic arguments - # - # create - subparsers['create'].add_argument( - '--preview', - '-p', - action='store_true', - default=False, - help='Preview changes' - ) - - # update - subparsers['update'].add_argument( - '--preview', - '-p', - action='store_true', - default=False, - help='Preview changes' - ) - - # upsert - subparsers['apply'].add_argument( - '--preview', - '-p', - action='store_true', - default=False, - help='Preview changes' - ) - subparsers['apply'].add_argument( - '--reverse', - '-r', - action='store_true', - default=False, - help='Whether to apply changes in reverse order' - ) - - return parser.parse_args(args) - - -def main(): - """ CLI entry point""" - - # Parse CLI arguments - args = parse_args(sys.argv[1:]) - - # logging - LOG.setLevel(args.verbosity.upper()) - execute(args) - - -if __name__ == '__main__': - main() diff --git a/dm/src/cloud_foundation_toolkit/deployment.py b/dm/src/cloud_foundation_toolkit/deployment.py deleted file mode 100644 index c19ce4c780a..00000000000 --- a/dm/src/cloud_foundation_toolkit/deployment.py +++ /dev/null @@ -1,753 +0,0 @@ -import base64 -from collections import namedtuple -import io -import os -import os.path -import re -from six.moves import input -import sys -import tempfile - -from apitools.base.py import exceptions as apitools_exceptions -from googlecloudsdk.api_lib.deployment_manager import dm_api_util -from googlecloudsdk.api_lib.deployment_manager import dm_base -from googlecloudsdk.api_lib.deployment_manager import exceptions as dm_exceptions -from googlecloudsdk.command_lib.deployment_manager import dm_util -from googlecloudsdk.command_lib.deployment_manager import dm_write -from googlecloudsdk.command_lib.deployment_manager import flags -from googlecloudsdk.command_lib.deployment_manager.importer import BuildConfig -from googlecloudsdk.command_lib.deployment_manager.importer import BuildTargetConfig -from googlecloudsdk.core.resource import resource_printer -from googlecloudsdk.third_party.apis.deploymentmanager.v2 import deploymentmanager_v2_messages as messages -import jinja2 -import networkx as nx - -from cloud_foundation_toolkit import LOG -from cloud_foundation_toolkit.dm_utils import DM_API -from cloud_foundation_toolkit.dm_utils import DM_OUTPUT_QUERY_REGEX -from cloud_foundation_toolkit.dm_utils import DMOutputQueryAttributes -from cloud_foundation_toolkit.dm_utils import get_deployment -from cloud_foundation_toolkit.dm_utils import get_deployment_output -from cloud_foundation_toolkit.dm_utils import parse_dm_output_url -from cloud_foundation_toolkit.dm_utils import parse_dm_output_token -from cloud_foundation_toolkit.yaml_utils import CFTBaseYAML - -Node = namedtuple('Node', ['project', 'deployment']) - - -def ask(): - """Function that asks for user input from stdin.""" - answer = input("Update(u), Skip (s), or Abort(a) Deployment? ") - while answer not in ['u', 's', 'a']: - answer = input("Update(u), Skip (s), or Abort(a) Deployment? ") - return answer - - -class Config(object): - """Class representing a CFT config. - - Attributes: - as_file (io.StringIO): A file-like interface to the - jinja-rendered config. - as_string (string): the jinja-rendered config. - id (string): A base64-encoded id representing the path or raw - content of the config. Could be used as a dict key. - source (string): The path or the raw content of config (obtained - by base64-decoding the 'id' attribute - """ - yaml = CFTBaseYAML() - - def __init__(self, item, project=None): - """ Contructor """ - - self.source = item - if project: - self._project = project - - if os.path.exists(item): - with io.open(item) as _fd: - self.as_string = jinja2.Template(_fd.read() - ).render(env=os.environ) - else: - self.as_string = jinja2.Template(item).render(env=os.environ) - - # YAML gets parsed twice: - # 1. Here, to figure out deployment name, project and dependency list. - # 2. When the Deployment() obj gets instantiated (to get the value of - # the output from the DM API) - # This approach takes more CPU, but it's less error prone than - # scanning the file ourselves. - self.as_dict = self.yaml.load(self.as_string) - - @property - def as_file(self): - return io.StringIO(self.as_string) - - @property - def id(self): - return Node(self.project, self.deployment) - - @property - def deployment(self): - return self.as_dict.get( - 'name', - os.path.basename(self.source).split('.')[0] - ) - - @property - def project(self): - """ Sets the project for the config - - This is a bit complicated but allows for quite a bit of - flexibility. The project can be defined in a few different - places, and this is the order on precedence: - - 1- Command line - 2- Config file - 3- CLOUD_FOUNDATION_PROJECT_ID environment variable - 4- The GCP SDK configuration - """ - if not hasattr(self, '_project'): - self._project = self.as_dict.get('project') or \ - os.environ.get('CLOUD_FOUNDATION_PROJECT_ID') or \ - dm_base.GetProject() - return self._project - - @property - def dependencies(self): - """ - """ - if hasattr(self, '_dependencies'): - return self._dependencies - - self._dependencies = set() - for line in self.as_file.readlines(): - # Ignore comments - if re.match(r'^\s*#', line): - continue - - # Match !DMOutput, $(out.x.y.w.z), etc tokens - for match in DM_OUTPUT_QUERY_REGEX.finditer(line): - for k, v in match.groupdict().items(): - if not v: - continue - if k == 'url': - url = parse_dm_output_url(v, self.project) - elif k == 'token': - url = parse_dm_output_token(v, self.project) - self._dependencies.add(Node(url.project, url.deployment)) - - return self._dependencies - - def __repr__(self): - return '{}({}:{})'.format(self.__class__, self.deployment, self.project) - - -class ConfigGraph(object): - """ Class representing the dependency graph between configs - - This is a container class holding the dependencies between configs. - An instance of this class be be used as an iterator over the - "levels" of dependencies. - - ``` - graph = ConfigGraph(["config-1.yaml", "config-2.yaml"]) - for level in graph: - for config in level: - deployment = Deployment(config) - ... - ``` - - Attributes: - graph(networkx.DiGraph): A networkx DiGraph() - roots(list): List of all root nodes in the graph - levels(list): List of dependency levels. Each element in the - list is another list of nodes that can be processed in - parallel. - - """ - - def __init__(self, configs, project=None): - """ Constructor """ - - # Populate the config dict - self.configs = { - c.id: c for c in (Config(x, - project=project) for x in configs) - } - - @property - def graph(self): - if hasattr(self, '_graph'): - return self._graph - self._graph = nx.DiGraph() - for _, config in self.configs.items(): - node = Node(config.project, config.deployment) - self._graph.add_node(node) - for dependency in config.dependencies: - self.graph.add_edge(dependency, node) - - if not nx.is_directed_acyclic_graph(self._graph): - raise SystemExit('Cyclic dependency in the graph') - return self._graph - - @property - def roots(self): - if not hasattr(self, '_roots'): - self._roots = [ - n for n in self.sort() if not list(self.graph.predecessors(n)) - ] - return self._roots - - @property - def levels(self): - if hasattr(self, '_levels'): - return self._levels - - graph = self.graph.copy() - remaining_nodes = list(self.sort()) - self._levels = [] - - while remaining_nodes: - level_nodes, level_configs = [], [] - - # Find the nodes in the level - for node in remaining_nodes: - if not nx.ancestors(graph, node): - level_nodes.append(node) - - # Find and load configs in the level - # If a node is not in a provided config, it must be a - # dependency, so we make sure it exists in DM, without - # attempting to load an unexisting config - for node in level_nodes: - remaining_nodes.remove(node) - graph.remove_node(node) - - if node in self.configs: - level_configs.append(self.configs[node]) - else: - deployment = get_deployment(node.project, node.deployment) - if not deployment: - raise SystemExit( - 'Unresolved dependency. Resource {}, on which' - 'other resources depended, neither was specified' - 'in the submitted congigs nor existed in' - 'Deployment Manager'.format(node) - ) - - if level_configs: - self._levels.append(level_configs) - - return self._levels - - def __iter__(self): - """ Makes this class an iterator. - - Notice the iterator over `self.levels` not `self` - """ - return iter(self.levels) - - def __reversed__(self): - """ Class can be iterated in reverse order. """ - return reversed(self.levels) - - def sort(self, reverse=False): - """ Sorts the graph in topological order. - - - Args: - reverse(boolean): Whether to return the nodes in reverse - order on not. - - Returns: A generator of nodes sorted by topology, ie the - elements are returned sequentially in order of dependency ( - independent nodes come first, unless 'reverse' is used. - """ - generator = nx.topological_sort(self.graph) - if reverse: - return reversed(list(generator)) - return generator - - -class Deployment(DM_API): - """Class representing a CFT deployment. - - This class makes extensive use of the Google Cloud SDK. Relevant files to - understand some of this code: - https://github.com/google-cloud-sdk/google-cloud-sdk/tree/master/lib/surface/deployment_manager/deployments - https://github.com/google-cloud-sdk/google-cloud-sdk/blob/master/lib/googlecloudsdk/third_party/apis/deploymentmanager/v2/deploymentmanager_v2_messages.py - https://github.com/google-cloud-sdk/google-cloud-sdk/blob/master/lib/googlecloudsdk/third_party/apis/deploymentmanager/v2/deploymentmanager_v2_client.py - - Attributes: - config(dict): A dict holding the config for this deployment. - current(Deployment): A Deployment object from the SDK, or None. - This attribute is None until self.get() called. If the - deployment doesn't exist in DM, it remains None. - dm_config(dict): A dict built from the CFT config holding keys - that DM can handle. - target_config(TargetConfiguration): A TargetConfiguration object from - the SDK. - """ - - # Number of seconds to wait for a create/update/delete operation - OPERATION_TIMEOUT = 20 * 60 # 20 mins. Same as gcloud - - # The keys required by a DM config (not CFT config) - DM_CONFIG_KEYS = ['imports', 'resources', 'outputs', 'configVersion'] - - def __init__(self, config): - """ The class constructor - - Args: - config_item (configItem): A dict representing CFT config. - Normally provided when creating/updating a deployment. - """ - - # Resolve custom yaml tags only during deployment instantiation - # because if parsed earlier, the DM queries implemented for the - # tags would likely fail with 404s - self.yaml = CFTBaseYAML() - self.yaml.Constructor.add_constructor( - '!DMOutput', - self.yaml_dm_output_constructor - ) - self._config = config - - # Regex search/replace before loading the yaml - self.config = self.yaml.load(config.as_string) - self.yaml_walk(self.config) - - self.config['project'] = self._config.project - self.config['name'] = self._config.deployment - - self.tmp_file_path = None - - LOG.debug('==> %s', self.config) - self.current = None - - def yaml_walk(self, yaml_tree): - """ Custom function for walking through the config and checking every string if its a regexp match - - In place walk over the config yaml. In case of a string togen it replaces the token with the complex - YAML value of the reference. - - The function is able to walk through lists and dictionarries. It ignores boolm, int and double values. - """ - if isinstance(yaml_tree, dict): - for k, v in yaml_tree.items(): ## Walk each element in dictionary - yaml_tree[k] = self.yaml_replace(v) - elif isinstance(yaml_tree, list): - for i, v in enumerate(yaml_tree): ## Walk each element in list - yaml_tree[i] = self.yaml_replace(v) - - def yaml_replace(self, v): - if isinstance(v, str): - match = DM_OUTPUT_QUERY_REGEX.match(v) - if match is not None: - return self.get_dm_output(match) - else: - self.yaml_walk(v) ## Not string, recursive walk - return v - - def get_dm_output(self, match): - """ Custom function for the regex.match() - - This function gets executed everytime there's a match on one - tokens used to represent the cross-deployment references ( - !DMOutput, $(out.x.y.w.z), etc. - - Args: - match (re.MatchObject): A regex matche object - - Returns: A string with the value of the deployment output - """ - - for k, v in match.groupdict().items(): - if not v: - continue - if k == 'url': - query_attributes = parse_dm_output_url(v, self._config.project) - elif k == 'token': - query_attributes = parse_dm_output_token( - v, - self._config.project - ) - return get_deployment_output( - query_attributes.project, - query_attributes.deployment, - query_attributes.resource, - query_attributes.name - ) - - def yaml_dm_output_constructor(self, loader, node): - """ Implements the !DMOutput yaml tag - - The tag takes string represeting an DM item URL. - - Example: - network: !DMOutput dm://${project}/${deployment}/${resource}/${name} - """ - - data = loader.construct_scalar(node) - url = parse_dm_output_url(data, self._config.project) - return get_deployment_output( - url.project, - url.deployment, - url.resource, - url.name - ) - - @property - def dm_config(self): - """Returns a dict with keys that DM can handle. - - Args: - - Return: A dict representing a valid DM config (not CFT config) - - TODO (gus): Could a dictview be used here? - """ - - return { - k: v for k, - v in self.config.items() if k in self.DM_CONFIG_KEYS - } - - @property - def target_config(self): - """Returns the 'target config' for the deployment. - - The 'import code' is very complex and error prone. Instead - of rewriting it here, the code from the SDK/gcloud is being - reused. - The SDK code only works with actual files, not strings, so - the processed configs to are written to temporary files then - fed to the SDK code to handle the imports. - - Args: - - Returns: None - """ - self.write_tmp_file() - target = BuildTargetConfig(messages, config=self.tmp_file_path) - self.delete_tmp_file() - return target - - def write_tmp_file(self): - """ Writes the yaml dump of the deployment to a temp file. - - This temporary file is always created in the current directory, - not in the directory where the config file is. - - Args: - - Returns: None - """ - - with tempfile.NamedTemporaryFile(dir=os.getcwd(), delete=False) as tmp: - self.yaml.dump(self.dm_config, tmp) - self.tmp_file_path = tmp.name - - def delete_tmp_file(self): - """ Delete the temporary config file """ - - os.remove(self.tmp_file_path) - - def get(self): - """ Returns a Deployment() message(obj) from the DM API. - - Shortcut to deployments.Get() that doesn't raise an exception - When deployment doesn't exit. - - This method also updates the 'current' attribute with the latest - data from the DM API. - - Args: - - Returns: A Deployment object from the SDK or None - """ - - self.current = get_deployment( - project=self.config['project'], - deployment=self.config['name'] - ) - return self.current - - def delete(self, delete_policy=None): - """Deletes this deployment from DM. - - Args: - delete_policy (str): The strings 'ABANDON' or 'DELETE'. - The default (None), doesn't include the policy in the - request obj, which translates 'DELETE' as default. - - Returns: None - """ - - message = self.messages.DeploymentmanagerDeploymentsDeleteRequest - request = message( - deployment=self.config['name'], - project=self.config['project'] - ) - - if delete_policy: - request['deletePolicy' - ] = message.DeletePolicyValueValuesEnum(delete_policy) - - LOG.debug('Deleting deployment %', self.config['name'], request) - - # The actual operation. - # No exception handling is done here to allow higher level - # functions to do so. - operation = self.client.deployments.Delete(request) - - # Wait for operation to finish - self.wait(operation) - - def create(self, preview=False, create_policy=None): - """Creates this deployment in DM. - - Args: - preview (boolean): If True, create is done with preview. - create_policy (str): The strings 'ACQUIRE' or 'CREATE_OR_ACQUIRE'. - The default (None), doesn't include the policy in the - request obj, which translates 'CREATE_OR_ACQUIRE' as default. - - Returns: None - """ - - deployment = self.messages.Deployment( - name=self.config['name'], - target=self.target_config - ) - - message = self.messages.DeploymentmanagerDeploymentsInsertRequest - request = message( - deployment=deployment, - project=self.config['project'], - preview=preview - ) - if create_policy: - request['createPolicy' - ] = message.CreatePolicyValueValuesEnum(create_policy) - LOG.debug( - 'Creating deployment %s with data %s', - self.config['name'], - request - ) - - # The actual operation. - # No exception handling is done here to allow higher level - # functions to do so. - operation = self.client.deployments.Insert(request) - - # Wait for operation to finish - self.wait(operation) - self.print_resources_and_outputs() - return self.current - - -# -# if preview: -# func = self.confirm_preview() -# func() -# elif getattr(self.current, 'update', False): -# self.update_preview() -# - - def update(self, preview=False, create_policy=None, delete_policy=None): - """Updates this deployment in DM. - - If the deployment is already in preview mode in DM, the existing - preview operation will be overwritten by this one. - - Args: - preview (boolean): If True, update is done with preview. - create_policy (str): The strings 'ACQUIRE' or 'CREATE_OR_ACQUIRE'. - The default (None), doesn't include the policy in the - request obj, which translates 'CREATE_OR_ACQUIRE' as default. - delete_policy (str): The strings 'ABANDON' or 'DELETE'. - The default (None), doesn't include the policy in the - request obj, which translates 'DELETE' as default. - - Returns: None - """ - - # Get current deployment to figure out the fingerprint - self.get() - if not self.current: - raise SystemExit( - 'Error updating {}: Deployment does not exist'.format( - self.config['name'] - ) - ) - - new_deployment = self.messages.Deployment( - name=self.config['name'], - target=self.target_config, - fingerprint=self.current.fingerprint or b'' - ) - - message = self.messages.DeploymentmanagerDeploymentsUpdateRequest - - # getattr() below overwrites existing preview mode as targets - # cannot be sent when deployment is already in preview mode - request = message( - deployment=self.config['name'], - deploymentResource=new_deployment, - project=self.config['project'], - preview=preview or bool(getattr(self.current, - 'update', - False)) - ) - if delete_policy: - request['deletePolicy' - ] = message.DeletePolicyValueValuesEnum(delete_policy) - if create_policy: - request['createPolicy' - ] = message.CreatePolicyValueValuesEnum(create_policy) - - LOG.debug( - 'Updating deployment %s with data %s', - self.config['name'], - request - ) - - # The actual operation. - # No exception handling is done here to allow higher level - # functions to do so. - operation = self.client.deployments.Update(request) - - # Wait for operation to finish - self.wait(operation) - - self.print_resources_and_outputs() - - if preview: - func = self.confirm_preview() - func() - elif getattr(self.current, 'update', False): - self.update_preview() - - def confirm_preview(self): - answer = ask() - - if answer == 'u': - return self.update_preview - elif answer == 's': - return self.cancel_preview - elif answer == 'a': - raise SystemExit('Aborting deployment run!') - else: - raise SystemExit('Not a valid answer: {}'.format(answer)) - - def update_preview(self): - """Confirms an update preview. - - The request to the API doesn't include the target - - Args: - - Returns: - """ - deployment = self.messages.Deployment( - name=self.config['name'], - fingerprint=self.current.fingerprint or b'' - ) - request = self.messages.DeploymentmanagerDeploymentsUpdateRequest( - deployment=self.config['name'], - deploymentResource=deployment, - project=self.config['project'], - preview=False - ) - operation = self.client.deployments.Update(request) - self.wait(operation, 'update preview') - self.print_resources_and_outputs() - - def wait(self, operation, action=None, get=True): - """Waits for a DM operation to be completed. - - Args: - operation (Operation): An Operation object from the SDK. - action (string): Any operation name to be used in the - ticker. If not specified, the operation type is used. - get (boolean): wether to retrieve the latest deployment - info from the API to obtain the current fingerprint. - """ - # This saves an API call if the self.get() was called just - # before calling this method - if get: - self.get() - - action = action or operation.operationType - - dm_write.WaitForOperation( - self.client, - self.messages, - operation.name, - project=self.config['project'], - timeout=self.OPERATION_TIMEOUT, - operation_description='{} {} (fingerprint {})'.format( - action, - self.config['name'], - base64.urlsafe_b64encode(self.current.fingerprint) - ) - ) - return self.get() - - def cancel_preview(self): - """Cancels a deployment preview. - - If a deployment is in preview mode, the update is cancelled and - no resourced are changed - - Args: - - Returns: - """ - cancel_msg = self.messages.DeploymentsCancelPreviewRequest( - fingerprint=self.current.fingerprint or b'' - ) - req = self.messages.DeploymentmanagerDeploymentsCancelPreviewRequest( - deployment=self.config['name'], - deploymentsCancelPreviewRequest=cancel_msg, - project=self.config['project'] - ) - operation = self.client.deployments.CancelPreview(req) - self.wait(operation) - - def apply(self, preview=False, create_policy=None, delete_policy=None): - """Creates or updates this deployment in DM. - - Args: - preview (boolean): If True, update is done with preview. - create_policy (str): The strings 'ACQUIRE' or 'CREATE_OR_ACQUIRE'. - The default (None), doesn't include the policy in the - request obj, which translates 'CREATE_OR_ACQUIRE' as default. - delete_policy (str): The strings 'ABANDON' or 'DELETE'. - The default (None), doesn't include the policy in the - request obj, which translates 'DELETE' as default. - - Returns: None - """ - try: - self.create() - except apitools_exceptions.HttpConflictError as err: - self.update(preview=preview) - - def print_resources_and_outputs(self): - """Prints the Resources and Outputs of this deployment.""" - - rsp = dm_api_util.FetchResourcesAndOutputs( - self.client, - self.messages, - self.config['project'], - self.config['name'], - # self.ReleaseTrack() is base.ReleaseTrack.ALPHA - ) - - printer = resource_printer.Printer(flags.RESOURCES_AND_OUTPUTS_FORMAT) - printer.AddRecord(rsp) - printer.Finish() - return rsp diff --git a/dm/src/cloud_foundation_toolkit/dm_utils.py b/dm/src/cloud_foundation_toolkit/dm_utils.py deleted file mode 100644 index 01ab2348f63..00000000000 --- a/dm/src/cloud_foundation_toolkit/dm_utils.py +++ /dev/null @@ -1,118 +0,0 @@ -from collections import namedtuple -import io -import re -from six.moves.urllib.parse import urlparse - -from apitools.base.py import exceptions as apitools_exceptions -from googlecloudsdk.api_lib.deployment_manager import dm_base -from ruamel.yaml import YAML - -DM_OUTPUT_QUERY_REGEX = re.compile( - r'!DMOutput\s+(?P\bdm://[-/a-zA-Z0-9]+\b)|' - r'\$\(out\.(?P[-.a-zA-Z0-9]+)\)' -) - -DMOutputQueryAttributes = namedtuple( - 'DMOutputQueryAttributes', - ['project', - 'deployment', - 'resource', - 'name'] -) - - -@dm_base.UseDmApi(dm_base.DmApiVersion.V2) -class DM_API(dm_base.DmCommand): - """ Class representing the DM API - - This a proxy class only, so other modules in this project - only import this local class instead of gcloud's. Here's the source: - - https://github.com/google-cloud-sdk/google-cloud-sdk/blob/master/lib/googlecloudsdk/api_lib/deployment_manager/dm_base.py - """ - - -API = DM_API() - - -def get_deployment(project, deployment): - try: - return API.client.deployments.Get( - API.messages.DeploymentmanagerDeploymentsGetRequest( - project=project, - deployment=deployment - ) - ) - except apitools_exceptions.HttpNotFoundError as _: - return None - - -def get_manifest(project, deployment): - deployment_rsp = get_deployment(project, deployment) - - return API.client.manifests.Get( - API.messages.DeploymentmanagerManifestsGetRequest( - project=project, - deployment=deployment, - manifest=deployment_rsp.manifest.split('/')[-1] - ) - ) - - -def parse_dm_output_url(url, project=''): - error_msg = ( - 'The url must look like ' - '"dm://${project}/${deployment}/${resource}/${name}" or' - '"dm://${deployment}/${resource}/${name}"' - ) - parsed_url = urlparse(url) - if parsed_url.scheme != 'dm': - raise ValueError(error_msg) - path = parsed_url.path.split('/')[1:] - - # path == 2 if project isn't specified in the URL - # path == 3 if project is specified in the URL - if len(path) == 2: - args = [project] + [parsed_url.netloc] + path - elif len(path) == 3: - args = [parsed_url.netloc] + path - else: - raise ValueError(error_msg) - - return DMOutputQueryAttributes(*args) - - -def parse_dm_output_token(token, project=''): - error_msg = ( - 'The url must look like ' - '$(out.${project}.${deployment}.${resource}.${name}" or ' - '$(out.${deployment}.${resource}.${name}"' - ) - parts = token.split('.') - - # parts == 3 if project isn't specified in the token - # parts == 4 if project is specified in the token - if len(parts) == 3: - return DMOutputQueryAttributes(project, *parts) - elif len(parts) == 4: - return DMOutputQueryAttributes(*parts) - else: - raise ValueError(error_msg) - -def get_deployment_output(project, deployment, resource, name): - manifest = get_manifest(project, deployment) - layout = YAML().load(manifest.layout) - return traverse_resource_output(layout, resource, name) - -def traverse_resource_output(layout, resource, name): - for _resource in layout.get('resources', []): - if _resource['name'] == resource: - for output in _resource.get('outputs', []): - if output['name'] == name: - return output['finalValue'] - - #recursive traversal of complex resources to search for outputs. - output = traverse_resource_output(_resource, resource, name) - if output != []: - return output - return [] diff --git a/dm/src/cloud_foundation_toolkit/yaml_utils.py b/dm/src/cloud_foundation_toolkit/yaml_utils.py deleted file mode 100644 index 1dd28867889..00000000000 --- a/dm/src/cloud_foundation_toolkit/yaml_utils.py +++ /dev/null @@ -1,14 +0,0 @@ -from ruamel.yaml import YAML -from ruamel.yaml.compat import StringIO - - -class CFTBaseYAML(YAML): - - def dump(self, data, stream=None, **kwargs): - inefficient = False - if stream is None: - inefficient = True - stream = StringIO() - YAML.dump(self, data, stream, **kwargs) - if inefficient: - return stream.getvalue() diff --git a/dm/templates/README.md b/dm/templates/README.md deleted file mode 100644 index 270907c0951..00000000000 --- a/dm/templates/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# CFT Templates - -This folder contains the library of templates included in the Cloud Foundation -toolkit (henceforth, CFT). - -## Overview - -Each template is stored in a folder named after the templated cloud resource; -e.g., "network", "cloud_router", "healthcheck", etc. Each template folder contains: - -- README.md - a textual description of the template's usage, prerequisites, etc. -- `resource`.py - the Python 2.7 template file -- `resource`.py.schema - the schema file associated with the template -- examples: - - `resource`.yaml - a sample config file that utilizes the template -- tests: - - integration: - - `resource`.yaml - a test config file - - `resource`.bats - a bats test harness for the test config - -## Usage - -You can use the templates included in the template library: - -- Via Google's Deployment Manager / gcloud as described in the - [Google SDK documentation](https://cloud.google.com/sdk/) -- Via the `CFT`, as described in the [CFT User Guide](../docs/userguide.md) - -You can use the templates "as is," and/or modify them to suit your needs, as -well as create new ones. Instructions and recommendations for template -development are in the -[Template Developer Guide](../docs/template_dev_guide.md). \ No newline at end of file diff --git a/dm/templates/autoscaler/README.md b/dm/templates/autoscaler/README.md deleted file mode 100644 index 4f9f514502f..00000000000 --- a/dm/templates/autoscaler/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# Autoscaler - -This template creates an autoscaler. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) -IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [compute.v1.autoscaler](https://cloud.google.com/compute/docs/reference/latest/autoscalers) -- [compute.v1.regionalAutoscaler](https://cloud.google.com/compute/docs/reference/latest/regionAutoscalers) - -### Properties - -See the `properties` section in the schema file(s): - -- [Autoscaler](autoscaler.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment, in this - case [examples/autoscaler\_zonal.yaml](examples/autoscaler_zonal.yaml) - -```shell - cp templates/autoscaler/examples/autoscaler_zonal.yaml my_autoscaler.yaml -``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - -```shell - vim my_autoscaler.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment as described below, replacing - with your with your own deployment name - -```shell - gcloud deployment-manager deployments create \ - --config my_autoscaler.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Zonal autoscaler](examples/autoscaler_zonal.yaml) -- [Regional autoscaler](examples/autoscaler_regional.yaml) diff --git a/dm/templates/autoscaler/autoscaler.py b/dm/templates/autoscaler/autoscaler.py deleted file mode 100644 index 713c3452153..00000000000 --- a/dm/templates/autoscaler/autoscaler.py +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates an autoscaler. """ - -REGIONAL_LOCAL_AUTOSCALER_TYPES = { - # https://cloud.google.com/compute/docs/reference/rest/v1/regionAutoscalers - True: 'gcp-types/compute-v1:regionAutoscalers', - # https://cloud.google.com/compute/docs/reference/rest/v1/autoscalers - False: 'gcp-types/compute-v1:autoscalers' -} - -def set_optional_property(receiver, source, property_name): - """ If set, copies the given property value from one object to another. """ - - if property_name in source: - receiver[property_name] = source[property_name] - -def set_autoscaler_location(autoscaler, is_regional, location): - """ Sets location-dependent properties of the autoscaler. """ - - name = autoscaler['name'] - location_prop_name = 'region' if is_regional else 'zone' - - autoscaler['type'] = REGIONAL_LOCAL_AUTOSCALER_TYPES[is_regional] - autoscaler['properties'][location_prop_name] = location - location_output = { - 'name': location_prop_name, - 'value': '$(ref.{}.{})'.format(name, location_prop_name) - } - - return location_output - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project = properties.get('project', context.env['project']) - target = properties['target'] - - policy = {} - - autoscaler = { - 'type': None, # Will be set up at a later stage. - 'name': context.env['name'], - 'properties': { - 'name': name, - 'project': project, - 'autoscalingPolicy': policy, - 'target': target - } - } - - policy_props = ['coolDownPeriodSec', - 'minNumReplicas', - 'maxNumReplicas', - 'customMetricUtilizations', - 'loadBalancingUtilization', - 'cpuUtilization'] - - for prop in policy_props: - set_optional_property(policy, properties, prop) - - is_regional = 'region' in properties - location = properties['region'] if is_regional else properties['zone'] - location_output = set_autoscaler_location(autoscaler, is_regional, location) - - set_optional_property(autoscaler['properties'], properties, 'description') - - return { - 'resources': [autoscaler], - 'outputs': [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - } - ] + [location_output] - } diff --git a/dm/templates/autoscaler/autoscaler.py.schema b/dm/templates/autoscaler/autoscaler.py.schema deleted file mode 100644 index 13f78184b76..00000000000 --- a/dm/templates/autoscaler/autoscaler.py.schema +++ /dev/null @@ -1,176 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Autoscaler - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates an autoscaler. - - For more information on this resource: - https://cloud.google.com/compute/docs/autoscaler/ - - APIs endpoints used by this template: - - gcp-types/compute-v1:autoscalers => - https://cloud.google.com/compute/docs/reference/rest/v1/autoscalers - - gcp-types/compute-v1:regionAutoscalers => - https://cloud.google.com/compute/docs/reference/rest/v1/regionAutoscalers - - -additionalProperties: false - -required: - - maxNumReplicas - - target - -anyOf: - - required: - - cpuUtilization - - required: - - loadBalancingUtilization - - required: - - customMetricUtilizations - -oneOf: - - required: - - region - - required: - - zone - -properties: - name: - type: string - description: The function name. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the autoscaler. - description: - type: string - description: The resource description. - zone: - type: string - description: | - The URL of the zone where the instance group resides (for autoscalers with the - zonal scope). - region: - type: string - description: | - The URL of the region where the instance group resides (for autoscalers with the - regional scope). - target: - type: string - description: | - The URL of the managed instance group the autoscaler is associated with. - coolDownPeriodSec: - type: integer - default: 60 - description: | - The number of seconds the autoscaler must wait before it starts - collecting information from a new instance. - minNumReplicas: - type: integer - default: 1 - minimum: 0 - description: | - The minimum number of replicas the autoscaler can scale down to. - maxNumReplicas: - type: integer - description: | - The maximum number of replicas the autoscaler can scale up to. - cpuUtilization: - type: object - additionalProperties: false - description: | - Defines the CPU utilization policy that allows the autoscaler to - scale based on the average CPU utilization of a managed instance group. - required: - - utilizationTarget - properties: - utilizationTarget: - type: number - minimum: 0 - maximum: 1 - description: | - The CPU utilization the autoscaler must maintain (as a target value). - loadBalancingUtilization: - type: object - additionalProperties: false - required: - - utilizationTarget - description: | - Configuration parameters for autoscaling based on the load balancer. - properties: - utilizationTarget: - type: number - minimum: 0 - maximum: 1 - description: The fraction of the back-end capacity utilization. - customMetricUtilizations: - type: array - description: | - Configuration parameters for autoscaling based on a custom metric. - items: - type: object - additionalProperties: false - required: - - metric - - utilizationTarget - - utilizationTargetType - properties: - metric: - type: string - description: | - The identifier (type) of the Stackdriver Monitoring metric. - utilizationTarget: - type: number - description: | - The value of the metric the autoscaler must maintain (as a target). - This must be a positive value. - utilizationTargetType: - type: string - default: GAUGE - enum: - - GAUGE - - DELTA_PER_SECOND - - DELTA_PER_MINUTE - description: | - The option that defines how the target utilization value - of the Stackdriver Monitoring metric is expressed. - -outputs: - name: - type: string - description: The autoscaler name. - selfLink: - type: string - description: The autoscaler URL. - region: - type: string - description: | - The region where the instance group resides (for regionally - scoped autoscalers). - zone: - type: string - description: | - The zone where the instance group resides (for zonally scoped - autoscalers). - -documentation: - - templates/autoscaler/README.md - -examples: - - templates/autoscaler/examples/autoscaler_zonal.yaml - - templates/autoscaler/examples/autoscaler_regional.yaml diff --git a/dm/templates/autoscaler/examples/autoscaler_regional.yaml b/dm/templates/autoscaler/examples/autoscaler_regional.yaml deleted file mode 100644 index 6cdb2d4cfaf..00000000000 --- a/dm/templates/autoscaler/examples/autoscaler_regional.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of the autoscaleer template usage. -# -# In this example, a regional autoscaler with -# multiple autoscaling rules is created. -# -# Replace the following with valid values: -# : a valid link to an -# existing regional instanceGroupManager -# : a region where the instanceGroupManager resides - -imports: - - path: templates/autoscaler/autoscaler.py - name: autoscaler.py - -resources: - - name: regional-autoscaler - type: autoscaler.py - properties: - region: - cpuUtilization: - utilizationTarget: 0.7 - customMetricUtilizations: - - metric: compute.googleapis.com/instance/disk/read_ops_count - utilizationTarget: 1000 - utilizationTargetType: DELTA_PER_SECOND - maxNumReplicas: 4 - target: diff --git a/dm/templates/autoscaler/examples/autoscaler_zonal.yaml b/dm/templates/autoscaler/examples/autoscaler_zonal.yaml deleted file mode 100644 index 52b868b6333..00000000000 --- a/dm/templates/autoscaler/examples/autoscaler_zonal.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Example of the autoscaleer template usage. -# -# In this example, a zonal autoscaler with multiple -# autoscaling rules is created. -# -# Replace the following with valid values: -# : a valid link to an existing -# zonal instanceGroupManager -# : a name of the zone where the instanceGroupManager -# resides - -imports: - - path: templates/autoscaler/autoscaler.py - name: autoscaler.py - -resources: - - name: zonal-autoscaler - type: autoscaler.py - properties: - zone: - cpuUtilization: - utilizationTarget: 0.7 - customMetricUtilizations: - - metric: compute.googleapis.com/instance/disk/read_ops_count - utilizationTarget: 1000 - utilizationTargetType: DELTA_PER_SECOND - maxNumReplicas: 4 - target: diff --git a/dm/templates/autoscaler/tests/integration/autoscaler.bats b/dm/templates/autoscaler/tests/integration/autoscaler.bats deleted file mode 100755 index d3c90518c00..00000000000 --- a/dm/templates/autoscaler/tests/integration/autoscaler.bats +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # test specific variables - export REGION="us-east1" - export CPU_UTILIZATION_1="0.7" - export CUSTOM_METRIC="compute.googleapis.com/instance/disk/read_ops_count" - export CUSTOM_METRIC_TARGET="1000" - export CUSTOM_METRIC_TYPE="DELTA_PER_SECOND" - export NUM_REPLICAS="2" - export CPU_UTILIZATION_2="0.6" - export COOL_DOWN_PERIOD="70" - export ZONE="us-central1-c" - export DESCRIPTION="descr" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - envsubst < "templates/autoscaler/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that zonal autoscaler properties were set" { - run gcloud compute instance-groups managed describe "zonal-igm-${RAND}" \ - --format "yaml(autoscaler)" --zone "${ZONE}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "zonal-autoscaler-${RAND}" ]] - [[ "$output" =~ "coolDownPeriodSec: ${COOL_DOWN_PERIOD}" ]] - [[ "$output" =~ "utilizationTarget: ${CPU_UTILIZATION_2}" ]] - [[ "$output" =~ "description: ${DESCRIPTION}" ]] -} - -@test "Verifying that regional autoscaler properties were set" { - run gcloud compute instance-groups managed describe "regional-igm-${RAND}" \ - --format "yaml(autoscaler)" --region "${REGION}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "utilizationTarget: ${CPU_UTILIZATION_1}" ]] - [[ "$output" =~ "utilizationTarget: ${CUSTOM_METRIC_TARGET}.0" ]] - [[ "$output" =~ "maxNumReplicas: ${NUM_REPLICAS}" ]] - [[ "$output" =~ "minNumReplicas: 1" ]] # default - [[ "$output" =~ "metric: ${CUSTOM_METRIC}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/autoscaler/tests/integration/autoscaler.yaml b/dm/templates/autoscaler/tests/integration/autoscaler.yaml deleted file mode 100644 index feb31f83ba2..00000000000 --- a/dm/templates/autoscaler/tests/integration/autoscaler.yaml +++ /dev/null @@ -1,70 +0,0 @@ -# Test of the autoscaler template. -# - -imports: - - path: templates/autoscaler/autoscaler.py - name: autoscaler.py - -resources: - - name: regional-autoscaler-${RAND} - type: autoscaler.py - properties: - region: ${REGION} - cpuUtilization: - utilizationTarget: ${CPU_UTILIZATION_1} - customMetricUtilizations: - - metric: ${CUSTOM_METRIC} - utilizationTarget: ${CUSTOM_METRIC_TARGET} - utilizationTargetType: ${CUSTOM_METRIC_TYPE} - maxNumReplicas: ${NUM_REPLICAS} - target: $(ref.regional-igm-${RAND}.selfLink) - - - name: zonal-autoscaler-${RAND} - type: autoscaler.py - properties: - zone: ${ZONE} - description: ${DESCRIPTION} - coolDownPeriodSec: ${COOL_DOWN_PERIOD} - cpuUtilization: - utilizationTarget: ${CPU_UTILIZATION_2} - maxNumReplicas: ${NUM_REPLICAS} - target: $(ref.zonal-igm-${RAND}.selfLink) - -# Test prerequisites: two instance group managers, an instance template, -# and a network - - name: zonal-igm-${RAND} - type: compute.v1.instanceGroupManager - properties: - instanceTemplate: $(ref.instance-template-${RAND}.selfLink) - zone: ${ZONE} - targetSize: 1 - - - name: regional-igm-${RAND} - type: compute.v1.regionInstanceGroupManager - properties: - instanceTemplate: $(ref.instance-template-${RAND}.selfLink) - region: ${REGION} - targetSize: 1 - - - name: instance-template-${RAND} - type: compute.v1.instanceTemplate - properties: - properties: - machineType: f1-micro - disks: - - autoDelete: true - boot: true - deviceName: boot - initializeParams: - sourceImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - type: PERSISTENT - networkInterfaces: - - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - network: $(ref.test-network-${RAND}.selfLink) - - - name: test-network-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: true diff --git a/dm/templates/backend_service/README.md b/dm/templates/backend_service/README.md deleted file mode 100644 index 8c080e449ee..00000000000 --- a/dm/templates/backend_service/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# Backend Service - -This template creates a backend service. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) -IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [compute.v1.backendService](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices) -- [compute.v1.regionalBackendService](https://cloud.google.com/compute/docs/reference/latest/regionBackendServices) - -### Properties - -See the `properties` section in the schema file(s): -- [Backend Service](backend_service.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this -case, [examples/backend\_service\_regional.yaml](examples/backend_service_regional.yaml): - -```shell - cp templates/backend_service/examples/backend_service_regional.yaml \ - my_backend_service.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for -properties, refer to the schema files listed above): - -```shell - vim my_backend_service.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant -deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_backend_service.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Regional Backend Service](examples/backend_service_regional.yaml) -- [Global Backend Service](examples/backend_service_global.yaml) diff --git a/dm/templates/backend_service/backend_service.py b/dm/templates/backend_service/backend_service.py deleted file mode 100644 index b3df580582b..00000000000 --- a/dm/templates/backend_service/backend_service.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a backend service. """ - -REGIONAL_GLOBAL_TYPE_NAMES = { - # https://cloud.google.com/compute/docs/reference/rest/v1/regionBackendServices - True: 'gcp-types/compute-v1:regionBackendServices', - # https://cloud.google.com/compute/docs/reference/rest/v1/backendServices - False: 'gcp-types/compute-v1:backendServices' -} - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - - -def get_backend_service_outputs(res_name, backend_name, region): - """ Creates outputs for the backend service. """ - - outputs = [ - { - 'name': 'name', - 'value': backend_name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(res_name) - } - ] - - if region: - outputs.append({'name': 'region', 'value': region}) - - return outputs - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - res_name = context.env['name'] - name = properties.get('name', res_name) - project_id = properties.get('project', context.env['project']) - is_regional = 'region' in properties - region = properties.get('region') - backend_properties = { - 'name': name, - 'project': project_id, - } - - resource = { - 'name': res_name, - 'type': REGIONAL_GLOBAL_TYPE_NAMES[is_regional], - 'properties': backend_properties, - } - - optional_properties = [ - 'description', - 'backends', - 'iap', - 'timeoutSec', - 'protocol', - 'region', - 'portName', - 'enableCDN', - 'sessionAffinity', - 'affinityCookieTtlSec', - 'loadBalancingScheme', - 'connectionDraining', - 'healthChecks', - 'cdnPolicy' - ] - - for prop in optional_properties: - set_optional_property(backend_properties, properties, prop) - - if 'healthCheck' in properties: - backend_properties['healthChecks'] = [properties['healthCheck']] - - outputs = get_backend_service_outputs(res_name, name, region) - - return {'resources': [resource], 'outputs': outputs} diff --git a/dm/templates/backend_service/backend_service.py.schema b/dm/templates/backend_service/backend_service.py.schema deleted file mode 100644 index c1ef6ee2be9..00000000000 --- a/dm/templates/backend_service/backend_service.py.schema +++ /dev/null @@ -1,411 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Backend Service - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a backend service. - - For more information on this resource: - https://cloud.google.com/load-balancing/docs/backend-service. - - APIs endpoints used by this template: - - gcp-types/compute-v1:backendServices => - https://cloud.google.com/compute/docs/reference/rest/v1/backendServices - - gcp-types/compute-v1:regionBackendServices => - https://cloud.google.com/compute/docs/reference/rest/v1/regionBackendServices - -additionalProperties: false - - -allOf: - - oneOf: - - required: - - healthCheck - - required: - - healthChecks - - allOf: - - not: - required: - - healthCheck - - not: - required: - - healthChecks - - oneOf: - - allOf: - - properties: - loadBalancingScheme: - enum: ["INTERNAL"] - sessionAffinity: - enum: - - NONE - - CLIENT_IP - - CLIENT_IP_PROTO - - CLIENT_IP_PORT_PROTO - protocol: - default: TCP - enum: - - UDP - - TCP - backends: - items: - balancingMode: - enum: ["CONNECTION"] - - not: - required: - - affinityCookieTtlSec - - not: - required: - - enableCDN - - not: - required: - - portName - - allOf: - - properties: - loadBalancingScheme: - enum: ["EXTERNAL"] - sessionAffinity: - enum: - - NONE - - CLIENT_IP - - GENERATED_COOKIE - protocol: - default: HTTP - enum: - - HTTP - - HTTPS - - TCP - - SSL - - required: - - portName - -properties: - name: - type: string - description: The backend service name. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the service. - description: - type: string - description: An optional description of the resource. - region: - type: string - description: | - The URL of the region where the regional backend service resides. - backends: - type: array - uniqueItems: true - description: | - The list of backends (instance groups) to which the backend service - distributes traffic. - items: - type: object - additionalProperties: false - required: - - group - oneOf: - - allOf: - - properties: - balancingMode: - enum: ["RATE"] - - not: - required: - - maxUtilization - - not: - required: - - maxConnections - - not: - required: - - maxConnectionsPerInstance - - not: - required: - - maxConnectionsPerEndpoint - - allOf: - - properties: - balancingMode: - enum: ["CONNECTION"] - - not: - required: - - maxUtilization - - not: - required: - - maxRate - - properties: - balancingMode: - enum: ["UTILIZATION"] - properties: - description: - type: string - description: | - An optional description of the resource. - group: - type: string - description: | - The fully-qualified URL of the Instance Group resource. If the - backend service's load balancing scheme is INTERNAL, the instance - group must reside on the same region as the backend service. - balancingMode: - type: string - description: | - The balancing mode for the backend. For INTERNAL load - balancing, the default (and the only supported) mode is CONNECTION. - enum: - - UTILIZATION - - RATE - - CONNECTION - maxUtilization: - type: number - minimum: 0.0 - maximum: 1.0 - description: | - The ratio that defines the CPU utilization target for the group. - The default value is 0.8. Used when balancingMode is UTILIZATION. - maxRate: - type: number - description: | - The maximum number of requests per second (RPS) for the group. Can be - used with either RATE or UTILIZATION balancing mode. Mandatory with - the RATE mode. For the RATE mode, either maxRate or maxRatePerInstance - must be set. Cannot be used for INTERNAL load balancing. - maxRatePerInstance: - type: number - description: | - The maximum number of requests per second (RPS) that a single backend - instance can handle. This is used to calculate the capacity of the group. - Can be used with any balancing mode. For the RATE mode, either maxRate or - maxRatePerInstance must be set. Cannot be used for INTERNAL load - balancing. - maxRatePerEndpoint: - type: number - description: | - The max requests per second (RPS) that a single backend network endpoint can handle. - This is used to calculate the capacity of the group. Can be used in either balancing mode. - For RATE mode, either maxRate or maxRatePerEndpoint must be set. - - This cannot be used for internal load balancing. - maxConnections: - type: number - description: | - The maximum number of simultaneous connections for the group. Can be - used with either CONNECTION or UTILIZATION balancing mode. For - the CONNECTION mode, either maxConnections or maxConnectionsPerInstance - must be set. Cannot be used for INTERNAL load balancing. - maxConnectionsPerInstance: - type: number - description: | - The maximum number of simultaneous connections that a single backend - instance can handle. This is used to calculate the capacity of the - group. Can be used in either CONNECTION or UTILIZATION balancing - modes. For the CONNECTION mode, either maxConnections or - maxConnectionsPerInstance must be set. Cannot be used for INTERNAL load balancing. - maxConnectionsPerEndpoint: - type: number - description: | - The max number of simultaneous connections that a single backend network endpoint can handle. - This is used to calculate the capacity of the group. Can be used in either - CONNECTION or UTILIZATION balancing modes. - For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set. - - This cannot be used for internal load balancing. - capacityScaler: - type: number - minimum: 0 - maximum: 1 - description: | - The multiplier applied to the group's maximum servicing capacity - (based on UTILIZATION, RATE, or CONNECTION). The default value is 1.0. - Cannot be used for INTERNAL load balancing. - healthCheck: - type: string - description: | - The URL of the HealthCheck, HttpHealthCheck, or HttpsHealthCheck resource - for healthchecking the backend service. - healthChecks: - type: array - uniqueItems: true - maxItems: 1 - description: | - The URL of the HealthCheck, HttpHealthCheck, or HttpsHealthCheck resource - for healthchecking the backend service. - items: - type: string - timeoutSec: - type: number - default: 30 - description: | - The number of seconds to wait for the backend response before considering - the request as failed. - protocol: - type: string - description: | - The protocol the backend service uses to communicate with backends. - The default is HTTP. For INTERNAL load balancing, the possible values are - TCP and UDP, and the default is TCP. - enum: - - HTTP - - HTTPS - - TCP - - UDP - - SSL - portName: - type: string - description: | - The backend port name. The same name must appear in the instance groups - referenced by this service. Required when the load balancing scheme is - EXTERNAL. If the load balancing scheme is INTERNAL, this field is not used. - enableCDN: - type: boolean - description: | - Defines whether Cloud CDN is enabled for the backend service. - When the load balancing scheme is INTERNAL, this field is not used. - sessionAffinity: - type: string - default: NONE - description: | - The type of the session affinity to use. For the EXTERNAL load balancing - scheme, the value can be NONE, CLIENT_IP, or GENERATED_COOKIE. - For the INTERNAL load balancing scheme, the value can be NONE, CLIENT_IP, - CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. This field is not used with the - UDP protocol. - enum: - - NONE - - GENERATED_COOKIE - - CLIENT_IP - - CLIENT_IP_PROTO - - CLIENT_IP_PORT_PROTO - affinityCookieTtlSec: - type: integer - minimum: 0 - maximum: 86400 - description: | - The lifetime of cookies, in seconds, if sessionAffinity is GENERATED_COOKIE. - If set to 0, the cookies are non-persistent and last only until the end of - the browser session (or equivalent). This field is not used if the load - balancing scheme is INTERNAL. - loadBalancingScheme: - type: string - description: | - Defines whether the backend service is used with INTERNAL or - EXTERNAL load balancing schema. Backend service created for one type of load - balancing cannot be used with the other. - default: EXTERNAL - enum: - - INTERNAL - - EXTERNAL - connectionDraining: - type: object - additionalProperties: false - description: the connection draining settings. - properties: - drainingTimeoutSec: - type: integer - description: | - The time period during which the instance is drained (not accepting - new connections but still processing the ones accepted earlier). - customRequestHeaders: - type: array - uniqueItems: true - description: | - Headers that the HTTP/S load balancer should add to proxied requests. - items: - type: string - iap: - type: object - additionalProperties: false - properties: - enabled: - type: boolean - oauth2ClientId: - type: string - oauth2ClientSecret: - type: string - cdnPolicy: - type: object - additionalProperties: false - description: The cloud CDN configuration for the backend service. - properties: - cacheKeyPolicy: - type: object - additionalProperties: false - description: The CacheKeyPolicy for the CdnPolicy. - properties: - includeProtocol: - type: boolean - description: | - Defines whether the HTTP and HTTPS requests are cached separately. - includeHost: - type: boolean - description: | - If True, requests to different hosts are cached separately. - includeQueryString: - type: boolean - description: | - If True, includes query string parameters in the cache key - according to queryStringWhitelist and queryStringBlacklist. If - neither of the two is set, the entire query string is included. If - False, the query string is excluded from the cache key entirely. - queryStringWhitelist: - type: array - uniqueItems: true - description: | - The names of the query string parameters to include in cache keys. - All other parameters are excluded. Specify either - queryStringWhitelist or queryStringBlacklist, not both. - '&' and '=' will be percent-encoded and not treated as delimiters. - items: - type: string - queryStringBlacklist: - type: array - uniqueItems: true - description: | - The names of query string parameters to exclude from cache keys. - All other parameters are included. Specify either - queryStringWhitelist or queryStringBlacklist, not both. - '&' and '=' are percent-encoded and not treated as delimiters. - items: - type: string - signedUrlCacheMaxAgeSec: - type: string - default: 3600s - description: | - The maximum number of seconds the response to a signed URL request is - considered fresh. After this time period, the response is - revalidated before being served. When serving responses to the signed URL - requests, Cloud CDN internally behaves as if all responses - from the backend have the "Cache-Control: public, max-age=[TTL]" header, - regardless of any existing Cache-Control header. The actual headers - served in responses are not altered. - -outputs: - name: - type: string - description: The backend name. - region: - type: string - description: | - The URL of the region where the regional backend service resides. - selfLink: - type: string - description: The URI (SelfLink) of the backend service resource. - -documentation: - - templates/backend_service/README.md - -examples: - - templates/backend_service/examples/backend_service_global.yaml - - templates/backend_service/examples/backend_service_regional.yaml diff --git a/dm/templates/backend_service/examples/backend_service_global.yaml b/dm/templates/backend_service/examples/backend_service_global.yaml deleted file mode 100644 index e39bb65c1d2..00000000000 --- a/dm/templates/backend_service/examples/backend_service_global.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of the backend service template usage. -# -# In this example, a global HTTP backend service is created. -# -# Replace the following placeholders with valid values: -# : a URL of a zonal instance group -# : a URL of the TCP healthcheck -# - -imports: - - path: templates/backend_service/backend_service.py - name: backend_service.py - -resources: - - name: global-http-backend-service - type: backend_service.py - properties: - protocol: HTTP - loadBalancingScheme: EXTERNAL - sessionAffinity: CLIENT_IP - backends: - - group: - balancingMode: UTILIZATION - maxUtilization: 0.8 - healthChecks: - - - portName: http diff --git a/dm/templates/backend_service/examples/backend_service_regional.yaml b/dm/templates/backend_service/examples/backend_service_regional.yaml deleted file mode 100644 index 3dd10cee253..00000000000 --- a/dm/templates/backend_service/examples/backend_service_regional.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Example of the backend service template usage. -# -# In this example, an internal regional TCP backend service is created. -# -# Replace the following placeholders with valid values: -# : a region where the service resides -# : a URL of an instance group residing in -# -# : a URL of the TCP healthcheck - -imports: - - path: templates/backend_service/backend_service.py - name: backend_service.py - -resources: - - name: regional-backend-service - type: backend_service.py - properties: - region: - protocol: TCP - loadBalancingScheme: INTERNAL - backends: - - group: - balancingMode: CONNECTION - healthChecks: - - diff --git a/dm/templates/backend_service/tests/integration/backend_service.bats b/dm/templates/backend_service/tests/integration/backend_service.bats deleted file mode 100755 index a190db54cd8..00000000000 --- a/dm/templates/backend_service/tests/integration/backend_service.bats +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # test specific variables - export REGION="us-east1" - export RES_DESCRIPTION="This is the description" - export BC_DESCRIPTION="Backend description" - export TIMEOUT="35" - export ENABLE_CDN="true" - export SESSION="CLIENT_IP" - export REGIONAL_BALANCING_MODE="CONNECTION" - export GLOBAL_BALANCING_MODE="RATE" - export REGIONAL_BALANCING_SCHEME="INTERNAL" - export REGIONAL_BALANCING_PROTOCOL="TCP" - export GLOBAL_BALANCING_SCHEME="EXTERNAL" - export GLOBAL_BALANCING_PROTOCOL="HTTP" - export MAX_RATE="10000" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/backend_service/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying global external backend service" { - run gcloud compute backend-services describe \ - "global-external-backend-service-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --global - [[ "$status" -eq 0 ]] - [[ "$output" =~ "balancingMode: ${GLOBAL_BALANCING_MODE}" ]] - [[ "$output" =~ "maxRate: ${MAX_RATE}" ]] - [[ "$output" =~ "loadBalancingScheme: ${GLOBAL_BALANCING_SCHEME}" ]] - [[ "$output" =~ "protocol: ${GLOBAL_BALANCING_PROTOCOL}" ]] - [[ "$output" =~ "enableCDN: ${ENABLE_CDN}" ]] -} - -@test "Verifying regional internal backend service" { - run gcloud compute backend-services describe \ - "regional-internal-backend-service-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region "${REGION}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "balancingMode: ${REGIONAL_BALANCING_MODE}" ]] - [[ "$output" =~ "loadBalancingScheme: ${REGIONAL_BALANCING_SCHEME}" ]] - [[ "$output" =~ "protocol: ${REGIONAL_BALANCING_PROTOCOL}" ]] - [[ "$output" =~ " description: ${BC_DESCRIPTION}" ]] - [[ "$output" =~ "description: ${RES_DESCRIPTION}" ]] - [[ "$output" =~ "sessionAffinity: ${SESSION}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/backend_service/tests/integration/backend_service.yaml b/dm/templates/backend_service/tests/integration/backend_service.yaml deleted file mode 100644 index d7bf314045d..00000000000 --- a/dm/templates/backend_service/tests/integration/backend_service.yaml +++ /dev/null @@ -1,84 +0,0 @@ -# Test of the backend service template. - -imports: - - path: templates/backend_service/backend_service.py - name: backend_service.py - -resources: - - name: regional-internal-backend-service-${RAND} - type: backend_service.py - properties: - name: regional-internal-backend-service-${RAND} - region: ${REGION} - protocol: ${REGIONAL_BALANCING_PROTOCOL} - description: ${RES_DESCRIPTION} - loadBalancingScheme: ${REGIONAL_BALANCING_SCHEME} - timeoutSec: ${TIMEOUT} - sessionAffinity: ${SESSION} - backends: - - group: $(ref.regional-igm-${RAND}.instanceGroup) - description: ${BC_DESCRIPTION} - balancingMode: ${REGIONAL_BALANCING_MODE} - healthCheck: $(ref.test-healthcheck-tcp-${RAND}.selfLink) - - - name: global-external-backend-service-${RAND} - type: backend_service.py - properties: - protocol: ${GLOBAL_BALANCING_PROTOCOL} - healthCheck: $(ref.test-healthcheck-http-${RAND}.selfLink) - loadBalancingScheme: ${GLOBAL_BALANCING_SCHEME} - enableCDN: ${ENABLE_CDN} - backends: - - group: $(ref.zonal-igm-${RAND}.instanceGroup) - balancingMode: ${GLOBAL_BALANCING_MODE} - maxRate: ${MAX_RATE} - -# Prerequisites: instance groups, instance template, healthchecks, -# and a network - - name: regional-igm-${RAND} - type: compute.v1.regionInstanceGroupManager - properties: - instanceTemplate: $(ref.instance-template-${RAND}.selfLink) - region: ${REGION} - targetSize: 1 - - - name: zonal-igm-${RAND} - type: compute.v1.instanceGroupManager - properties: - instanceTemplate: $(ref.instance-template-${RAND}.selfLink) - zone: us-central1-c - targetSize: 1 - - - name: instance-template-${RAND} - type: compute.v1.instanceTemplate - properties: - properties: - machineType: f1-micro - disks: - - autoDelete: true - boot: true - deviceName: boot - initializeParams: - sourceImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - type: PERSISTENT - networkInterfaces: - - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - network: $(ref.test-network-${RAND}.selfLink) - - - name: test-network-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: true - - - name: test-healthcheck-tcp-${RAND} - type: compute.v1.healthCheck - properties: - type: TCP - tcpHealthCheck: - port: 80 - proxyHeader: NONE - - - name: test-healthcheck-http-${RAND} - type: compute.v1.httpHealthCheck diff --git a/dm/templates/bastion/README.md b/dm/templates/bastion/README.md deleted file mode 100644 index b72cbb86bda..00000000000 --- a/dm/templates/bastion/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# Bastion Host - -> :warning: **NOTE** - -Check out SSH via IAP as an alternative to Bastion Hosts: - -- [Cloud IAP enables context-aware access to VMs via SSH and RDP without bastion hosts](https://cloud.google.com/blog/products/identity-security/cloud-iap-enables-context-aware-access-to-vms-via-ssh-and-rdp-without-bastion-hosts) -- [Using IAP for TCP forwarding](https://cloud.google.com/iap/docs/using-tcp-forwarding#tunneling_with_ssh) -> :warning: **NOTE** - -This template creates a Bastion host. Once it had been deployed, one can use -`gcloud compute ssh --zone ` to connect to -the Bastion host, and then use -`gcloud compute ssh --zone --internal-ip` to SSH to -another host, within the same network, that has no external IP assigned. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.computeAdmin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [compute.v1.instance](https://cloud.google.com/compute/docs/reference/rest/v1/instances) -- [compute.v1.firewall](https://cloud.google.com/compute/docs/reference/rest/v1/firewalls) - -### Properties - -See the `properties` section in the schema file(s): - -- [Bastion Host](bastion.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this - case, [examples/bastion.yaml](examples/bastion.yaml): - -```shell - cp templates/bastion/examples/bastion.yaml \ - my_bastion.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_bastion.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_bastion.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Bastion](examples/bastion.yaml) diff --git a/dm/templates/bastion/bastion.py b/dm/templates/bastion/bastion.py deleted file mode 100644 index 9d8f6372600..00000000000 --- a/dm/templates/bastion/bastion.py +++ /dev/null @@ -1,254 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Bastion host. """ - -import copy - -IMAGE = 'projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts' -DISABLE_SUDO_SCRIPT = """sudo cat /etc/sudoers | \\ - sed 's/%.*$//' | \\ - sed 's/#includedir.*$//' | \\ - sudo EDITOR=tee visudo""" -SSH = {'IPProtocol': 'tcp', 'ports': [22]} - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - - -def find_metadata_item(metadata_items, key_name): - """ Finds a metadata entry by the key name. """ - - for item in metadata_items: - if item['key'] == key_name: - return item - - return None - - -def disable_sudo(bastion_props): - """ Adds startup-script metadata that disables sudo. """ - - metadata = bastion_props.get('metadata', {'items': []}) - startup_item = find_metadata_item(metadata['items'], 'startup-script') - if not startup_item: - startup_item = {'key': 'startup-script', 'value': ''} - metadata['items'].append(startup_item) - new_script = DISABLE_SUDO_SCRIPT + '\n' + startup_item['value'] - startup_item['value'] = new_script - bastion_props['metadata'] = metadata - - -def get_ssh_firewall_rule( - name, - optional_properties, - output_name, - output_self_link -): - """ Creates a new firewall rule with outputs. """ - - ssh_props = {'allowed': [copy.deepcopy(SSH)]} - - ssh_rule = { - 'name': name, - # https://cloud.google.com/compute/docs/reference/rest/v1/firewalls - 'type': 'gcp-types/compute-v1:firewalls', - 'properties': ssh_props - } - - for key, value in optional_properties.items(): - if value: - ssh_props[key] = value - - return [ssh_rule], [ - { - 'name': output_name, - 'value': name - }, - { - 'name': output_self_link, - 'value': '$(ref.{}.selfLink)'.format(name) - }, - ] - - -def create_bastion_in_ssh_rule(bastion, network, firewall_settings): - """ Creates a firewall rule for inbound SSH traffic. """ - - to_bastion_rule = firewall_settings.get('sshToBastion') - - if to_bastion_rule: - bastion_host_tag = to_bastion_rule['tag'] - - # Append the Bastion tag, if it is not there yet. - existing_tags = bastion['properties'].get('tags', {}).get('items', []) - if not bastion_host_tag in existing_tags: - existing_tags.append(bastion_host_tag) - bastion['properties']['tags'] = {'items': existing_tags} - - rule_setup = { - 'name': to_bastion_rule['name'], - 'sourceTags': to_bastion_rule.get('sourceTags'), - 'targetTags': [bastion_host_tag], - 'sourceRanges': to_bastion_rule.get('sourceRanges'), - 'priority': to_bastion_rule.get('priority'), - 'network': network - } - - return get_ssh_firewall_rule( - '{}-to'.format(bastion['name']), - rule_setup, - 'sshToBastionRuleName', - 'sshToBastionRuleSelfLink' - ) - - return [], [] - - -def create_bastion_out_ssh_rule(bastion, network, firewall_settings): - """ Creates a firewall rule for the Bastion outbound SSH traffic. """ - - from_bastion_rule = firewall_settings.get('sshFromBastion') - if from_bastion_rule: - bastion_target_tag = from_bastion_rule.get('tag') - - # Calculate the firewall rule's source tags. - if 'sshToBastion' in firewall_settings: - bastion_host_tags = [firewall_settings['sshToBastion']['tag']] - else: - # Fall back to the instance tags collection. - bastion_host_tags = bastion['properties'].get('tags', {}) - bastion_host_tags = bastion_host_tags.get('items', []) - if bastion_host_tags: - bastion_host_tags = copy.deepcopy(bastion_host_tags) - else: - msg = 'To enable SSH traffic from the Bastion host, at least one network tag must be assigned to it.' # pylint: disable=line-too-long - raise ValueError(msg) - - rule_setup = { - 'name': from_bastion_rule['name'], - 'sourceTags': bastion_host_tags, - 'targetTags': [bastion_target_tag], - 'priority': from_bastion_rule.get('priority'), - 'network': network, - } - - return get_ssh_firewall_rule( - '{}-from'.format(bastion['name']), - rule_setup, - 'sshFromBastionRuleName', - 'sshFromBastionRuleSelfLink' - ) - - return [], [] - - -def create_firewall_rules(bastion, network, firewall_settings): - """ Creates in/out SSH rules for the Bastion host. """ - - ssh_in_resources, ssh_in_outputs = create_bastion_in_ssh_rule( - bastion, - network, - firewall_settings - ) - - ssh_out_resources, ssh_out_outputs = create_bastion_out_ssh_rule( - bastion, - network, - firewall_settings - ) - - return ( - ssh_in_resources + ssh_out_resources, - ssh_in_outputs + ssh_out_outputs - ) - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - name = properties.get('name', context.env['name']) - - network = properties['network'] - if not '$(ref' in network: - if not 'global/' in network: - network = 'global/networks/{}'.format(network) - if not 'project/' in network: - network = 'projects/{}/{}'.format(project_id, network) - - bastion_props = { - 'project': project_id, - 'name': name, - 'zone': properties['zone'], - 'networks': [{ - 'network': network, - 'accessConfigs': [{'type': 'ONE_TO_ONE_NAT'}] - }], - 'machineType': properties['machineType'], - 'diskImage': IMAGE, - } - - bastion = {'name': context.env['name'], 'type': 'instance.py', 'properties': bastion_props} - - optional_props = ['diskSizeGb', 'metadata', 'tags'] - - for prop in optional_props: - set_optional_property(bastion_props, properties, prop) - - if properties.get('disableSudo'): - disable_sudo(bastion_props) - - firewall_settings = properties.get('createFirewallRules') - if firewall_settings: - extra_resources, extra_outputs = create_firewall_rules( - bastion, - network, - firewall_settings - ) - else: - extra_resources = [] - extra_outputs = [] - - resources = [bastion] + extra_resources - for resource in resources: - resource['properties']['project'] = project_id - - outputs = [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - }, - { - 'name': 'internalIp', - 'value': '$(ref.{}.internalIp)'.format(context.env['name']) - }, - { - 'name': 'externalIp', - 'value': '$(ref.{}.externalIp)'.format(context.env['name']) - } - ] - - return { - 'resources': resources, - 'outputs': outputs + extra_outputs - } diff --git a/dm/templates/bastion/bastion.py.schema b/dm/templates/bastion/bastion.py.schema deleted file mode 100644 index 54e4ee5a7fc..00000000000 --- a/dm/templates/bastion/bastion.py.schema +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Bastion Host - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of a Bastion host - a jump host for SSHing into those - instances that have no external IP address. - - For more information on this resource: - https://cloud.google.com/solutions/connecting-securely - - APIs endpoints used by this template: - - gcp-types/compute-v1:firewalls => - https://cloud.google.com/compute/docs/reference/rest/v1/firewalls - - gcp-types/compute-v1:instances => - https://cloud.google.com/compute/docs/reference/rest/v1/instances - -imports: - - path: ../instance/instance.py - name: instance.py - -additionalProperties: false - -required: - - zone - - network - -properties: - name: - type: string - description: | - The name of the Bastion host. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the instance. - network: - type: string - description: | - The URL of the network resource for the Bastion host. - Examples of valid URLs: - - https://www.googleapis.com/compute/v1/projects/project/global/networks/network - - projects/project/global/networks/network - - global/networks/default - zone: - type: string - description: The availability zone; e.g. 'us-central1-a'. - machineType: - type: string - default: f1-micro - description: | - The Compute Instance type; e.g., 'n1-standard-1'. - See https://cloud.google.com/compute/docs/machine-types for details. - diskSizeGb: - type: integer - minimum: 10 - disableSudo: - type: boolean - default: true - description: | - !!! WARNING !!! This feature does not stop the GCP deamon addig - Cloud Identity users to sudoers based on Compute OS Login Admin IAM. - - When Trues (default), disables `sudo` on the Bastion host for tighter - security. - metadata: - type: object - additionalProperties: false - description: | - The Bastion host metadata. If the 'disableSudo' property is True, this - is the only place where you can configure the Bastion host using - 'startup-script', which provides elevated permissions. - For example: - metadata: - items: - - key: startup-script - - value: apt-get update - properties: - items: - type: array - uniqueItems: True - description: A collection of metadata key-value pairs. - items: - type: object - additionalProperties: false - properties: - key: - type: string - value: - type: [string, number, boolean] - createFirewallRules: - type: object - additionalProperties: false - description: | - If set, creates the firewall rules for the SSH traffic coming in an out - of the Bastion host. - anyOf: - - required: - - sshToBastion - - required: - - sshFromBastion - properties: - sshToBastion: - type: object - additionalProperties: false - description: | - Configures the firewall rule that controls the SSH traffic flow to - the Bastion host. If none of the other SSH firewall rules exist, this - rule will allow the SSH traffic to the Bastion host only. - required: - - tag - anyOf: - - required: - - sourceTags - - required: - - sourceRanges - properties: - tag: - type: string - description: | - The network tag to which the incoming SSH traffic will be - allowed. This tag will be attached to the Bastion host - automatically. - name: - type: string - default: allow-ssh-to-bastion - description: The name of the firewall rule. - sourceTags: - type: array - uniqueItems: True - description: | - If source tags are specified, the firewall rule applies only to - the traffic with source IPs that match the primary network - interfaces of those VM instances that have the tag, and are in - the same VPC network. - items: - type: string - sourceRanges: - type: array - uniqueItems: True - description: | - If source ranges are specified, the firewall applies only to the - traffic that has source IP address in these ranges. These ranges - must be expressed in the CIDR format. - items: - type: string - priority: - type: integer - description: The rule priority. - minimum: 0 - maximum: 65535 - sshFromBastion: - type: object - additionalProperties: false - description: | - Creates a firewall rule that allows the SSH traffic from the Bastion - host to any instance within the same network with a particular tag. - To detect traffic from the Bastion host, it must have at least one - network tag, assigned either via the - createFirewallRules.sshToBastion.tag property or via a tag - collection. - required: - - tag - properties: - tag: - type: string - description: | - The target hosts' tag that allows them to receive the SSH traffic - from the Bastion host only. - name: - type: string - default: allow-ssh-from-bastion - description: The name of the firewall rule. - priority: - type: integer - description: The rule priority. - minimum: 0 - maximum: 65535 - tags: - type: object - additionalProperties: false - required: - - items - description: Tags to apply to the instance. - properties: - items: - type: array - uniqueItems: True - description: An array of tags. - items: - type: string - -outputs: - name: - type: string - description: The name of the Bastion host. - selfLink: - type: string - description: | - The URI (SelfLink) of the Bastion host. - internalIp: - type: string - description: | - The internal IP address of the Bastion host. - externalIp: - type: array - description: | - The external IP address of the Bastion host. - sshToBastionRuleName: - type: array - description: | - If created, the name of the firewall rule controlling the SSH traffic - flow to the Bastion host. - sshToBastionRuleSelfLink: - type: array - description: | - If created, the URI (SelfLink) of the firewall rule controlling the - SSH traffic flow to the Bastion host. - sshFromBastionRuleName: - type: array - description: | - If created, the name of the firewall rule controlling the SSH traffic - flow from the Bastion host to other instances in the same network. - sshFromBastionRuleSelfLink: - type: array - description: | - If created, the URI (SelfLink) of the firewall rule controlling the - SSH traffic flow from the Bastion host to other instances in the - same network. - -documentation: - - templates/bastion/README.md - -examples: - - templates/bastion/examples/bastion.yaml diff --git a/dm/templates/bastion/examples/bastion.yaml b/dm/templates/bastion/examples/bastion.yaml deleted file mode 100644 index 3775a2afda2..00000000000 --- a/dm/templates/bastion/examples/bastion.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Example of the Bastion host template usage. -# -# This example creates a Bastion host with two SSH rules in the default -# network. The first firewall rule allows the Bastion host to receive the SSH -# traffic. The second rule allows other hosts with the 'example-bastion-target' -# tag to receive the SSH traffic from the Bastion host. - -imports: - - path: templates/bastion/bastion.py - name: bastion.py - -resources: - - name: example-bastion-1 - type: bastion.py - properties: - zone: us-central1-c - disableSudo: false - network: global/networks/default - createFirewallRules: - sshToBastion: - name: example-allow-ssh-to-bastion - tag: example-bastion-host - sourceRanges: - - 0.0.0.0/0 - sshFromBastion: - name: example-allow-ssh-from-bastion - tag: example-bastion-target - diff --git a/dm/templates/bastion/tests/integration/bastion.bats b/dm/templates/bastion/tests/integration/bastion.bats deleted file mode 100755 index 7dec17b3dc2..00000000000 --- a/dm/templates/bastion/tests/integration/bastion.bats +++ /dev/null @@ -1,267 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - export BASTION1_RES_NAME="test-bastion-w-sudo-${RAND}" - export DEFAULT_MACHINE_TYPE="f1-micro" - export BASTION1_MACHINE_TYPE="n1-standard-1" - export BASTION2_RES_NAME="test-bastion-wo-sudo-${RAND}" - export BASTION2_NAME="test-bastion-wo-sudo-name-${RAND}" - export ZONE="us-central1-c" - export BASTION1_DISABLE_SUDO="false" - export BASTION2_DISABLE_SUDO="true" - export BASTION2_DISK_SIZE="10" - export NETWORK_NAME="test-network-${RAND}" - export PROVISION_COMPLETED_MARKER="provision-completed-marker" - export BASTION2_STARTUP="echo '${PROVISION_COMPLETED_MARKER}'" - export BASTION2_EXTRA_TAG="extra" - export BASTION2_TAG="bastion-host" - export SSH_TO_BASTION_RULE_NAME="allow-ssh-to-bastion-${RAND}" - export SSH_FROM_BASTION_DEFAULT_RULE_NAME="allow-ssh-from-bastion" - export SSH_TO_BASTION_PRIORITY="1001" - export SSH_FROM_BASTION_PRIORITY="1002" - export SSH_TO_BASTION_SOURCE_RANGE="0.0.0.0/0" - export SSH_TO_BASTION_SOURCE_TAG="bastion-trustee" - export SSH_FROM_BASTION_SOURCE_TAG="bastion-target" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying the first Bastion host" { - run gcloud compute instances describe ${BASTION1_RES_NAME} \ - --zone ${ZONE} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "machineTypes/${BASTION1_MACHINE_TYPE}" ]] - [[ "$output" =~ "zones/$(ZONE)" ]] - [[ "$output" =~ "${NETWORK_NAME}" ]] -} - -@test "Verifying the first Bastion's sudo is ON" { - # Wait until VM provisioning finishes - i=0 - until gcloud compute instances get-serial-port-output \ - ${BASTION1_RES_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --zone ${ZONE} | grep ${PROVISION_COMPLETED_MARKER}; do - - sleep 5; - i=$(($i+1)) - - if [[ $i > 10 ]]; then break; fi - done - - run gcloud compute ssh ${BASTION1_RES_NAME} --command "sudo whoami" \ - --zone ${ZONE} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "root" ]] -} - -@test "Verifying the second Bastion host" { - run gcloud compute instances describe ${BASTION2_NAME} \ - --zone ${ZONE} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "machineTypes/${DEFAULT_MACHINE_TYPE}" ]] - [[ "$output" =~ "zones/${ZONE}" ]] - [[ "$output" =~ "sudo EDITOR=tee visudo" ]] # disable sudo startup script - [[ "$output" =~ "${BASTION2_STARTUP}" ]] # user startup script - [[ "$output" =~ "${NETWORK_NAME}" ]] -} - -@test "Verifying the second Bastion host's boot disk" { - run gcloud compute disks describe ${BASTION2_NAME} \ - --zone ${ZONE} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "sizeGb: '${BASTION2_DISK_SIZE}'" ]] -} - - -### Invalid test because Compute OS Login Admin IAM role adds sudoers ### -# -#@test "Verifying the second Bastion's sudo is OFF" { -# # Wait until VM provisioning finishes -# i=0 -# until gcloud compute instances get-serial-port-output ${BASTION2_NAME} \ -# --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ -# --zone ${ZONE} | grep ${PROVISION_COMPLETED_MARKER}; do -# -# sleep 5; -# i=$(($i+1)) -# -# if [[ $i > 10 ]]; then break; fi -# done -# -# run gcloud compute ssh ${BASTION2_NAME} --command "sudo -n whoami" \ -# --zone ${ZONE} \ -# --project "${CLOUD_FOUNDATION_PROJECT_ID}" -# echo "status = ${status}" -# echo "output = ${output}" -# [[ ! "$status" -eq 0 ]] -#} - -@test "Verifying the second Bastion's tags" { - run gcloud compute instances describe ${BASTION2_NAME} \ - --format "yaml(tags)" \ - --zone ${ZONE} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "- ${BASTION2_EXTRA_TAG}" ]] - [[ "$output" =~ "- ${BASTION2_TAG}" ]] -} - -@test "Verifying Bastion's inbound firewall rule" { - run gcloud compute firewall-rules describe "${SSH_TO_BASTION_RULE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "IPProtocol: tcp" ]] - [[ "$output" =~ "- '22'" ]] - [[ "$output" =~ "direction: INGRESS" ]] - [[ "$output" =~ "disabled: false" ]] - [[ "$output" =~ "${NETWORK_NAME}" ]] - [[ "$output" =~ "priority: ${SSH_TO_BASTION_PRIORITY}" ]] -} - -@test "Verifying Bastion's inbound firewall rule's source range" { - run gcloud compute firewall-rules describe "${SSH_TO_BASTION_RULE_NAME}" \ - --format="yaml(sourceRanges)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${SSH_TO_BASTION_SOURCE_RANGE}" ]] -} - -@test "Verifying Bastion's inbound firewall rule's source tag" { - run gcloud compute firewall-rules describe "${SSH_TO_BASTION_RULE_NAME}" \ - --format="yaml(sourceTags)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${SSH_TO_BASTION_SOURCE_TAG}" ]] -} - -@test "Verifying Bastion's inbound firewall rule's target tag" { - run gcloud compute firewall-rules describe "${SSH_TO_BASTION_RULE_NAME}" \ - --format="yaml(targetTags)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${BASTION2_TAG}" ]] -} - -@test "Verifying Bastion's outbound firewall rule" { - run gcloud compute firewall-rules describe \ - "${SSH_FROM_BASTION_DEFAULT_RULE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "IPProtocol: tcp" ]] - [[ "$output" =~ "- '22'" ]] - [[ "$output" =~ "direction: INGRESS" ]] - [[ "$output" =~ "disabled: false" ]] - [[ "$output" =~ "${NETWORK_NAME}" ]] - [[ "$output" =~ "priority: ${SSH_FROM_BASTION_PRIORITY}" ]] -} - -@test "Verifying Bastion's outbound firewall rule's source tag" { - run gcloud compute firewall-rules describe \ - "${SSH_FROM_BASTION_DEFAULT_RULE_NAME}" \ - --format="yaml(sourceTags)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${BASTION2_TAG}" ]] -} - -@test "Verifying Bastion's outbound firewall rule's target tag" { - run gcloud compute firewall-rules describe \ - "${SSH_FROM_BASTION_DEFAULT_RULE_NAME}" \ - --format="yaml(targetTags)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${SSH_FROM_BASTION_SOURCE_TAG}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - diff --git a/dm/templates/bastion/tests/integration/bastion.yaml b/dm/templates/bastion/tests/integration/bastion.yaml deleted file mode 100644 index e8accc4ee31..00000000000 --- a/dm/templates/bastion/tests/integration/bastion.yaml +++ /dev/null @@ -1,67 +0,0 @@ -# Test of the Bastion host template. - -imports: - - path: templates/bastion/bastion.py - name: bastion.py - -resources: - - name: ${BASTION1_RES_NAME} - type: bastion.py - properties: - zone: ${ZONE} - disableSudo: ${BASTION1_DISABLE_SUDO} - network: $(ref.${NETWORK_NAME}.selfLink) - machineType: ${BASTION1_MACHINE_TYPE} - metadata: - items: - - key: startup-script - value: ${BASTION2_STARTUP} - tags: - items: - - ${BASTION2_TAG} - - - name: ${BASTION2_RES_NAME} - type: bastion.py - properties: - name: ${BASTION2_NAME} - zone: ${ZONE} - disableSudo: ${BASTION2_DISABLE_SUDO} - diskSizeGb: ${BASTION2_DISK_SIZE} - network: $(ref.${NETWORK_NAME}.selfLink) - metadata: - items: - - key: startup-script - value: ${BASTION2_STARTUP} - tags: - items: - - ${BASTION2_EXTRA_TAG} - - ${BASTION2_TAG} - createFirewallRules: - sshToBastion: - name: ${SSH_TO_BASTION_RULE_NAME} - tag: ${BASTION2_TAG} - priority: ${SSH_TO_BASTION_PRIORITY} - sourceRanges: - - ${SSH_TO_BASTION_SOURCE_RANGE} - sourceTags: - - ${SSH_TO_BASTION_SOURCE_TAG} - sshFromBastion: - tag: ${SSH_FROM_BASTION_SOURCE_TAG} - priority: ${SSH_FROM_BASTION_PRIORITY} - -# Test prerequisites: - - - name: ${NETWORK_NAME} - type: compute.v1.network - properties: - autoCreateSubnetworks: true - - - name: test-network-allow-icmp - type: compute.v1.firewall - properties: - network: $(ref.${NETWORK_NAME}.selfLink) - sourceRanges: - - 0.0.0.0/0 - allowed: - - IPProtocol: icmp - diff --git a/dm/templates/bigquery/README.md b/dm/templates/bigquery/README.md deleted file mode 100644 index fa2fd1d27e7..00000000000 --- a/dm/templates/bigquery/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# BigQuery - -This template creates a BigQuery dataset and table. - -## Prerequisites -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [`roles/bigquery.dataEditor`, `roles/bigquery.dataOwner` or `roles/bigquery.admin`](https://cloud.google.com/bigquery/docs/access-control) IAM roles to the project service account - -## Deployment - -### Resources - -- [bigquery.v2.dataset](https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets) -- [bigquery.v2.tables](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables) - -### Properties - -See the `properties` section in the schema file(s) - -- [BigQuery Dataset](bigquery_dataset.py.schema) -- [BigQuery Tables](bigquery_table.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment, in this case [examples/bigquery.yaml](examples/bigquery.yaml) - -```shell - cp templates/bigquery/examples/bigquery.yaml my_bigquery.yaml -``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - -```shell - vim my_bigquery.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment as described below, replacing - with your with your own deployment name - -```shell - gcloud deployment-manager deployments create \ - --config my_bigquery.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Bigquery Dataset and Table](examples/bigquery.yaml) diff --git a/dm/templates/bigquery/bigquery_dataset.py b/dm/templates/bigquery/bigquery_dataset.py deleted file mode 100644 index 1fb6cb9e4d0..00000000000 --- a/dm/templates/bigquery/bigquery_dataset.py +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a BigQuery dataset. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - # You can modify the roles you wish to whitelist. - whitelisted_roles = ['READER', 'WRITER', 'OWNER'] - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - properties = { - 'datasetReference': - { - 'datasetId': name, - 'projectId': project_id - }, - 'location': context.properties['location'], - 'projectId': project_id, - } - - optional_properties = [ - 'description', - 'defaultTableExpirationMs', - 'defaultPartitionExpirationMs' - ] - - for prop in optional_properties: - if prop in context.properties: - properties[prop] = context.properties[prop] - - if 'access' in context.properties: - # Validate access roles. - for access_role in context.properties['access']: - if 'role' in access_role: - role = access_role['role'] - if role not in whitelisted_roles: - raise ValueError( - 'Role supplied \"{}\" for dataset \"{}\" not ' - ' within the whitelist: {} '.format( - role, - context.properties['name'], - whitelisted_roles - ) - ) - - properties['access'] = context.properties['access'] - - if context.properties.get('setDefaultOwner', False): - # Build the default owner for the dataset. - base = '@cloudservices.gserviceaccount.com' - default_dataset_owner = context.env['project_number'] + base - - # Build the default access for the owner. - owner_access = { - 'role': 'OWNER', - 'userByEmail': default_dataset_owner - } - properties['access'].append(owner_access) - - resources = [ - { - # https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets - 'type': 'gcp-types/bigquery-v2:datasets', - 'name': context.env['name'], - 'properties': properties - } - ] - - outputs = [ - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - }, - { - 'name': 'datasetId', - 'value': name - }, - { - 'name': 'etag', - 'value': '$(ref.{}.etag)'.format(context.env['name']) - }, - { - 'name': 'creationTime', - 'value': '$(ref.{}.creationTime)'.format(context.env['name']) - }, - { - 'name': 'lastModifiedTime', - 'value': '$(ref.{}.lastModifiedTime)'.format(context.env['name']) - } - ] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/bigquery/bigquery_dataset.py.schema b/dm/templates/bigquery/bigquery_dataset.py.schema deleted file mode 100644 index 81bdfa91acd..00000000000 --- a/dm/templates/bigquery/bigquery_dataset.py.schema +++ /dev/null @@ -1,215 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: BigQuery Dataset - author: Sourced Group Inc. - version: 1.0.1 - description: | - Creates a BigQuery dataset. - - For information on this resource: - https://cloud.google.com/bigquery/docs/. - - APIs endpoints used by this template: - - gcp-types/bigquery-v2:datasets => - https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets - -additionalProperties: false - -required: - - name - -properties: - name: - type: string - description: | - The table dataset name. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the dataset. The - Google apps domain is prefixed if applicable. - friendlyName: - type: string - description: | - A descriptive name for the dataset. - description: - type: string - description: | - A user-friendly description of the dataset. - location: - type: string - description: | - The geographic location where the dataset resides. - The default value is US. See details at - https://cloud.google.com/bigquery/docs/dataset-locations. - default: 'US' - enum: - - Asia - - EU - - US - - us-west2 - - northamerica-northeast1 - - us-east4 - - southamerica-east1 - - europe-north1 - - europe-west2 - - europe-west3 - - europe-west6 - - asia-east2 - - asia-south1 - - asia-northeast2 - - asia-east1 - - asia-northeast1 - - asia-southeast1 - - australia-southeast1 - access: - type: array - uniqueItems: true - description: | - An array of objects that define dataset access for one or more - entities. You can set this property when inserting or updating - the dataset to control who is allowed to access the data. If not - specified at the dataset creation time, BigQuery defines default - dataset access for the following entities: - access.specialGroup: projectReaders; access.role: READER - access.specialGroup: projectWriters; access.role: WRITER - access.specialGroup: projectOwners; access.role: OWNER - access.userByEmail: [dataset creator email]; access.role: OWNER - items: - type: object - additionalProperties: false - required: - - role - properties: - role: - type: string - description: | - An IAM role ID that should be granted to the user, group, or domain specified in this access entry. - The following legacy mappings will be applied: OWNER <=> roles/bigquery.dataOwner - WRITER <=> roles/bigquery.dataEditor READER <=> roles/bigquery.dataViewer This field will accept any of - the above formats, but will return only the legacy format. For example, if you set this field to - "roles/bigquery.dataOwner", it will be returned back as "OWNER". @mutable bigquery.datasets.update - domain: - type: string - description: | - The domain to grant access to. All users signed in with the - specified domain are granted the corresponding access. - Example: "example.com". - userByEmail: - type: string - description: | - The email address of a user to grant access to. For example: - fred@example.com. - groupByEmail: - type: string - description: The email address of a Google Group to grant access to. - specialGroup: - type: string - description: | - The special group to grant access to. Possible values include: - projectOwners: owners of the enclosing project - projectReaders: readers of the enclosing project - projectWriters: writers of the enclosing project - allAuthenticatedUsers: all authenticated BigQuery users - view: - type: object - additionalProperties: false - description: | - A view from a different dataset to grant access to. Queries - executed against that view have the Read access to tables in that - dataset. The Role value is not required when this field is set. If - the view is updated, access to that view must be granted again - via an Update operation. - properties: - datasetId: - type: string - description: The ID of the dataset containing the table. - projectId: - type: string - description: The ID fo the project containing the table. - tableId: - type: string - pattern: ^[0-9a-zA-Z][0-9a-zA-Z_]{4,1023}$ - description: | - The table ID. The ID must contain only letters - (a-z, A-Z), numbers (0-9), or underscores (_). The maximum - length is 1,024 characters. - setDefaultOwner: - type: boolean - default: False - description: | - Defines whether the default project service is granted the IAM owner - permissions. - defaultTableExpirationMs: - type: string - format: int64 - description: | - The default lifetime of all tables in the dataset, in milliseconds. The - minimum value is 3600000 milliseconds (one hour). Once this property is - set, all newly-created tables in the dataset get their expirationTime - property set to the creation time plus the value of this property. - Changes to the value affect only new tables, not the existing ones. When - expirationTime for a given table is reached, that table is deleted - automatically. If a table's expirationTime is modified or - removed before the table expires, or if you provide an explicit - expirationTime while creating the table, that value takes precedence over - the default expiration time indicated by this property. - minimum: 3600000 - defaultPartitionExpirationMs: - type: string - format: int64 - description: | - The default partition expiration for all partitioned tables in the dataset, in milliseconds. - Once this property is set, all newly-created partitioned tables in the dataset will have an expirationMs - property in the timePartitioning settings set to this value, and changing the value will only affect new tables, - not existing ones. The storage in a partition will have an expiration time of its partition time plus this value. - Setting this property overrides the use of defaultTableExpirationMs for partitioned tables: only one of - defaultTableExpirationMs and defaultPartitionExpirationMs will be used for any new partitioned table. - If you provide an explicit timePartitioning.expirationMs when creating or updating a partitioned table, - that value takes precedence over the default partition expiration time indicated by this property. - labels: - type: object - description: | - Map labels associated with this dataset. - Example: - name: wrench - mass: 1.3kg - count: 3 - -outputs: - selfLink: - type: string - description: The URI of the created resource. - etag: - type: string - description: The hash of the resource. - creationTime: - type: string - description: | - The time when the dataset was created, in milliseconds since - epoch. For example, 1535739430. - lastModifiedTime: - type: string - description: | - The time when the dataset or any of its tables was last - modified, in milliseconds since the epoch. For example, - 1535739430. - -documentation: - - templates/bigquery/README.md - -examples: - - templates/bigquery/examples/bigquery.yaml diff --git a/dm/templates/bigquery/bigquery_table.py b/dm/templates/bigquery/bigquery_table.py deleted file mode 100644 index bf408746827..00000000000 --- a/dm/templates/bigquery/bigquery_table.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -""" This template creates a BigQuery table. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - properties = { - 'tableReference': - { - 'tableId': name, - 'datasetId': context.properties['datasetId'], - 'projectId': project_id - }, - 'datasetId': context.properties['datasetId'], - 'projectId': project_id, - } - - optional_properties = [ - 'description', - 'friendlyName', - 'expirationTime', - 'schema', - 'timePartitioning', - 'externalDataConfiguration', - 'view' - ] - - for prop in optional_properties: - if prop in context.properties: - if prop == 'schema': - properties[prop] = {'fields': context.properties[prop]} - else: - properties[prop] = context.properties[prop] - - resources = [ - { - # https://cloud.google.com/bigquery/docs/reference/rest/v2/tables - 'type': 'gcp-types/bigquery-v2:tables', - 'name': context.env['name'], - 'properties': properties - } - ] - - if 'dependsOn' in context.properties: - resources[0]['metadata'] = {'dependsOn': context.properties['dependsOn']} - - outputs = [ - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - }, - { - 'name': 'etag', - 'value': '$(ref.{}.etag)'.format(context.env['name']) - }, - { - 'name': 'creationTime', - 'value': '$(ref.{}.creationTime)'.format(context.env['name']) - }, - { - 'name': 'lastModifiedTime', - 'value': '$(ref.{}.lastModifiedTime)'.format(context.env['name']) - }, - { - 'name': 'location', - 'value': '$(ref.{}.location)'.format(context.env['name']) - }, - { - 'name': 'numBytes', - 'value': '$(ref.{}.numBytes)'.format(context.env['name']) - }, - { - 'name': 'numLongTermBytes', - 'value': '$(ref.{}.numLongTermBytes)'.format(context.env['name']) - }, - { - 'name': 'numRows', - 'value': '$(ref.{}.numRows)'.format(context.env['name']) - }, - { - 'name': 'type', - 'value': '$(ref.{}.type)'.format(context.env['name']) - } - ] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/bigquery/bigquery_table.py.schema b/dm/templates/bigquery/bigquery_table.py.schema deleted file mode 100644 index bb02e93ef61..00000000000 --- a/dm/templates/bigquery/bigquery_table.py.schema +++ /dev/null @@ -1,568 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: BigQuery Table - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a BigQuery table. - - For information on this resource: - https://cloud.google.com/bigquery/docs/. - - APIs endpoints used by this template: - - gcp-types/bigquery-v2:tables => - https://cloud.google.com/bigquery/docs/reference/rest/v2/tables - -additionalProperties: false - -required: - - name - -properties: - name: - type: string - description: | - The table name name. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the table. The - Google apps domain is prefixed if applicable. - datasetId: - type: string - description: | - The ID of the dataset the table belongs to. - friendlyName: - type: string - description: | - A descriptive name for the table. - description: - type: string - description: | - A user-friendly description of the dataset. - expirationTime: - type: string - description: | - The time when the table expires, in milliseconds since the epoch. If - not specified, the table persists indefinitely. Expired tables are - deleted, and their storage is reclaimed. The defaultTableExpirationMs - property of the encapsulating dataset can be used to set a default - expirationTime on newly created tables. For example, 1535739430. - encryptionConfiguration: - type: object - additionalProperties: false - description: | - Custom encryption configuration (e.g., Cloud KMS keys). - properties: - kmsKeyName: - type: string - description: | - Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. - The BigQuery Service Account associated with your project requires access to this encryption key. - externalDataConfiguration: - type: object - additionalProperties: false - description: | - Describes the data format, location, and other properties of a table stored outside of BigQuery. - By defining these properties, the data source can then be queried as if it were a standard BigQuery table. - required: - - sourceUris - - sourceFormat - properties: - sourceUris: - type: array - minItems: 1 - uniqueItems: true - description: | - The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: - Each URI can contain one '*' wildcard character and it must come after the 'bucket' name. - Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: - Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a - Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. - Also, the '*' wildcard character is not allowed. - items: - type: string - schema: - type: object - description: | - The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for - Google Cloud Bigtable, Cloud Datastore backups, and Avro formats. - sourceFormat: - type: string - description: | - The data format. For CSV files, specify "CSV". For Google sheets, specify "GOOGLE_SHEETS". - For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro files, specify "AVRO". - For Google Cloud Datastore backups, specify "DATASTORE_BACKUP". - [Beta] For Google Cloud Bigtable, specify "BIGTABLE". - enum: - - CSV - - GOOGLE_SHEETS - - NEWLINE_DELIMITED_JSON - - AVRO - - DATASTORE_BACKUP - - BIGTABLE - - PARQUET - maxBadRecords: - type: number - description: | - The maximum number of bad records that BigQuery can ignore when reading data. If the number of - bad records exceeds this value, an invalid error is returned in the job result. - The default value is 0, which requires that all records are valid. This setting is ignored - for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats. - autodetect: - type: boolean - description: | - Indicates if BigQuery should allow extra values that are not represented in the table schema. - If true, the extra values are ignored. If false, records with extra columns are treated as bad records, - and if there are too many bad records, an invalid error is returned in the job result. - The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: - CSV: Trailing columns JSON: Named values that don't match any column names - Google Cloud Bigtable: This setting is ignored - Google Cloud Datastore backups: This setting is ignored - Avro: This setting is ignored. - compression: - type: string - description: | - The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. - This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats. - An empty string is an invalid value. - enum: - - NONE - - GZIP - csvOptions: - type: object - additionalProperties: false - description: | - Additional properties to set if sourceFormat is set to CSV. - properties: - fieldDelimiter: - type: string - description: | - The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, - and then uses the first byte of the encoded string to split the data in its raw, binary state. - BigQuery also supports the escape sequence "\t" to specify a tab separator. - The default value is a comma (','). - skipLeadingRows: - type: number - description: | - The number of rows at the top of a CSV file that BigQuery will skip when reading the data. - The default value is 0. This property is useful if you have header rows in the file that should be skipped. - quote: - type: string - description: | - The value that is used to quote data sections in a CSV file. BigQuery converts the string to - ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, - binary state. The default value is a double-quote ('"'). If your data does not contain quoted sections, - set the property value to an empty string. If your data contains quoted newline characters, - you must also set the allowQuotedNewlines property to true. @default '"' - allowQuotedNewlines: - type: boolean - description: | - Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. - The default value is false. - allowJaggedRows: - type: boolean - description: | - Indicates if BigQuery should accept rows that are missing trailing optional columns. - If true, BigQuery treats missing trailing columns as null values. - If false, records with missing trailing columns are treated as bad records, and if there are - too many bad records, an invalid error is returned in the job result. The default value is false. - encoding: - type: string - description: | - The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. - The default value is UTF-8. BigQuery decodes the data after the raw, binary data has - been split using the values of the quote and fieldDelimiter properties. - enum: - - UTF-8 - - ISO-8859-1 - bigtableOptions: - type: object - additionalProperties: false - description: | - Additional options if sourceFormat is set to BIGTABLE. - properties: - columnFamilies: - type: array - uniqueItems: true - description: | - tabledata.list of column families to expose in the table schema along with their types. - This list restricts the column families that can be referenced in queries and specifies their value types. - You can use this list to do type conversions - see the 'type' field for more details. - If you leave this list empty, all column families are present in the table schema and their values - are read as BYTES. During a query only the column families referenced in that query are read from Bigtable. - items: - type: object - additionalProperties: false - properties: - familyId: - type: string - description: | - Identifier of the column family. - type: - type: string - description: | - The type to convert the value in cells of this column family. The values are expected to be - encoded using HBase Bytes.toBytes function when using the BINARY encoding value. - Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN - Default type is BYTES. This can be overridden for a specific column by listing that - column in 'columns' and specifying a type for it. - enum: - - BYTES - - STRING - - INTEGER - - FLOAT - - BOOLEAN - encoding: - type: string - description: | - The encoding of the values when the type is not STRING. Acceptable encoding values are: - - TEXT - indicates values are alphanumeric text strings. - - BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. - This can be overridden for a specific column by listing that column in - 'columns' and specifying an encoding for it. - enum: - - TEXT - - BINARY - columns: - type: array - uniqueItems: true - description: | - Lists of columns that should be exposed as individual fields as opposed to a list of - (column name, value) pairs. All columns whose qualifier matches a qualifier in this list - can be accessed as .. Other columns can be accessed as a list through .Column field. - items: - type: object - additionalProperties: false - required: - - qualifierEncoded - properties: - qualifierEncoded: - type: string - description: | - Qualifier of the column. Columns in the parent column family that has this exact qualifier - are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in - the qualifierString field. Otherwise, a base-64 encoded value must be set to qualifierEncoded. - The column field name is the same as the column qualifier. However, if the qualifier is not a - valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier - must be provided as fieldName. - qualifierString: - type: string - fieldName: - type: string - description: | - If the qualifier is not a valid BigQuery field identifier i.e. does not match - [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name - and is used as field name in queries. - type: - type: string - description: | - The type to convert the value in cells of this column. The values are expected to be - encoded using HBase Bytes.toBytes function when using the BINARY encoding value. - Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN - Default type is BYTES. 'type' can also be set at the column family level. - However, the setting at this level takes precedence if 'type' is set at both levels. - enum: - - BYTES - - STRING - - INTEGER - - FLOAT - - BOOLEAN - encoding: - type: string - description: | - The encoding of the values when the type is not STRING. Acceptable encoding values are: - - TEXT - indicates values are alphanumeric text strings. - - BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. - 'encoding' can also be set at the column family level. However, the setting at this level - takes precedence if 'encoding' is set at both levels. - enum: - - TEXT - - BINARY - onlyReadLatest: - type: boolean - description: | - If this is set, only the latest version of value in this column are exposed. - 'onlyReadLatest' can also be set at the column family level. However, the setting at - this level takes precedence if 'onlyReadLatest' is set at both levels. - ignoreUnspecifiedColumnFamilies: - type: boolean - description: | - If field is true, then the column families that are not specified in columnFamilies list are not - exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false. - readRowkeyAsString: - type: boolean - description: | - If field is true, then the rowkey column families will be read and converted to string. - Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. - The default value is false. - googleSheetsOptions: - type: object - additionalProperties: false - description: | - Additional options if sourceFormat is set to GOOGLE_SHEETS. - properties: - skipLeadingRows: - type: number - description: | - The number of rows at the top of a sheet that BigQuery will skip when reading the data. - The default value is 0. This property is useful if you have header rows that should be skipped. - When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to - detect headers in the first row. If they are not detected, the row is read as data. Otherwise data - is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are - no headers and data should be read starting from the first row. * skipLeadingRows = N > 0 - Autodetect - skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. - Otherwise row N is used to extract column names for the detected schema. - range: - type: string - description: | - [Beta] Range of a sheet to query from. Only used when non-empty. - hivePartitioningOptions: - type: object - properties: - mode: - type: string - description: | - [Experimental] When set, what mode of hive partitioning to use when reading data. - Two modes are supported: - - AUTO: automatically infer partition key name(s) and type(s). - - STRINGS: automatically infer partition key name(s). All types are strings. - Not all storage formats support hive partitioning -- requesting hive partitioning - on an unsupported format will lead to an error. - enum: - - AUTO - - STRINGS - sourceUriPrefix: - type: string - description: | - When hive partition detection is requested, a common prefix for all source uris must be required. - The prefix must end immediately before the partition key encoding begins. - For example, consider files following this data layout: - - gs://bucket/path_to_table/dt=2019-06-01/country=USA/id=7/file.avro - - gs://bucket/path_to_table/dt=2019-05-31/country=CA/id=3/file.avro - When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either - of gs://bucket/path_to_table or gs://bucket/path_to_table/. - clustering: - type: object - additionalProperties: false - description: | - Clustering specification for the table. Must be specified with time-based partitioning, data in the table - will be first partitioned and subsequently clustered. - required: - - fields - properties: - fields: - type: array - minItems: 1 - uniqueItems: true - description: | - One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields - are supported. The order of the fields will determine how clusters will be generated, so it is important. - items: - type: string - requirePartitionFilter: - type: boolean - description: | - [Beta] If set to true, queries over this table require a partition filter that can be used for - partition elimination to be specified. - timePartitioning: - type: object - additionalProperties: false - description: | - The time-based partitioning specification for this table. - properties: - expirationMs: - type: string - format: int64 - description: | - The number of milliseconds for which the storage for partitions - is kept in the table. The storage in a partition has an expiration - time of its partition time plus the expirationMs value. - field: - type: string - description: | - The field to be used for table partitioning. This field must be a top-level - TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED. - If not specified, the table is partitioned by a pseudo-column, - referenced via either '_PARTITIONTIME' as TIMESTAMP type or - '_PARTITIONDATE' as DATE type. - requirePartitionFilter: - type: boolean - description: | - [Beta] If True, queries over the table require a partition filter - (that can be used for partition elimination) to be specified. - type: - type: string - description: | - The only supported type is DAY, which generates one partition - per day. - view: - type: object - additionalProperties: false - description: The view definition. - properties: - query: - type: string - description: | - The query that BigQuery executes when the view is referenced. - useLegacySql: - type: boolean - description: | - Defines whether to use BigQuery's legacy SQL for the view. The - default is True. If set to False, the view uses BigQuery's - standard SQL: https://cloud.google.com/bigquery/sql-reference/. - Queries and views that reference the view must use the same flag - value. - userDefinedFunctionResources: - type: array - uniqueItems: true - description: | - User-defined function resources used in the query. - items: - oneOf: - - inlineCode: - type: string - description: | - The inline resource that contains code for a user-defined - function (UDF). An equivalent a URI for a file containing - the same code. - - resourceUri: - type: string - description: | - The code resource to load from a Google Cloud Storage URI - (gs://bucket/path). - schema: - type: array - uniqueItems: true - description: | - The schema for the data. Required for the CSV and JSON formats. - Disallowed for the Google Cloud Bigtable, Cloud Datastore - backups, and Avro formats. - items: - type: object - additionalProperties: false - description: Defines the table fields. - required: - - name - - type - properties: - name: - type: string - pattern: ^[_a-zA-Z][0-9a-zA-Z_]{1,128}$ - description: | - The field name. Must contain only letters (a-z, A-Z), - numbers (0-9), or underscores (_); must start with a letter - or underscore. The maximum length is 128 characters. - type: - type: string - description: | - The field data type. Possible values are STRING, BYTES, - INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as - FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, - DATETIME, RECORD (indicates that the field contains a nested - schema), and STRUCT (same as RECORD). See details at - https://cloud.google.com/bigquery/docs/schemas and - https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types. - enum: - - STRING - - BYTES - - INTEGER - - INT64 - - FLOAT - - FLOAT64 - - BOOLEAN - - BOOL - - TIMESTAMP - - DATE - - TIME - - DATETIME - - RECORD - - STRUCT - mode: - type: string - description: - The field mode. Possible values are NULLABLE, REQUIRED, and - REPEATED. The default is NULLABLE. - enum: - - NULLABLE - - REQUIRED - - REPEATED - description: - type: string - description: | - The field description. The maximum length is 1,024 characters. - labels: - type: object - description: | - Map labels associated with this table. - Example: - name: wrench - mass: 1.3kg - count: 3 - -outputs: - selfLink: - type: string - description: The URI of the created resource. - etag: - type: string - description: The hash of the resource. - creationTime: - type: string - description: | - The time when the dataset was created, in milliseconds since - epoch. - lastModifiedTime: - type: string - description: | - The date when the dataset (or any of its tables) was last - modified, in milliseconds since the epoch. - location: - type: string - description: | - The geographic location where the table resides. This value is - inherited from the dataset. - numBytes: - type: string - description: | - The size of the table in bytes, excluding data in the streaming - buffer. - numLongTermBytes: - type: string - format: int64 - description: | - The number of bytes in the table that are considered - \"long-term storage\". - numRows: - type: string - description: | - The number of rows of data in the table, excluding data in the - streaming buffer. - type: - type: string - description: | - The table type. The following values are supported: - TABLE - a normal BigQuery table - VIEW - a virtual table defined by an SQL query - EXTERNAL - a table that references data stored in an external - storage system, such as Google Cloud Storage. - The default value is TABLE. - -documentation: - - templates/bigquery/README.md - -examples: - - templates/bigquery/examples/bigquery.yaml diff --git a/dm/templates/bigquery/examples/bigquery.yaml b/dm/templates/bigquery/examples/bigquery.yaml deleted file mode 100644 index e84e2445a38..00000000000 --- a/dm/templates/bigquery/examples/bigquery.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# Example of the BigQuery (dataset and table) template usage. -# -# Replace `` with your account email. - -imports: - - path: templates/bigquery/bigquery_dataset.py - name: bigquery_dataset.py - - path: templates/bigquery/bigquery_table.py - name: bigquery_table.py - -resources: - - name: test-bq-dataset - type: bigquery_dataset.py - properties: - name: test_bq_dataset - location: US - access: - - role: OWNER - userByEmail: - - - name: test-bq-table - type: bigquery_table.py - properties: - name: test_bq_table - dependsOn: - - test-bq-dataset - datasetId: $(ref.test-bq-dataset.datasetId) - schema: - - name: firstname - type: STRING - - name: lastname - type: STRING - - name: age - type: INTEGER diff --git a/dm/templates/bigquery/tests/integration/bigquery.bats b/dm/templates/bigquery/tests/integration/bigquery.bats deleted file mode 100644 index 7ad2dd243e6..00000000000 --- a/dm/templates/bigquery/tests/integration/bigquery.bats +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export TEST_SERVICE_ACCOUNT="test-sa-${RAND}" - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud iam service-accounts create "${TEST_SERVICE_ACCOUNT}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - create_config - fi - - # Per-test setup steps. - } - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud iam service-accounts delete \ - "${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that a dataset was created in deployment ${DEPLOYMENT_NAME}" { - run bq show --format=prettyjson \ - "${CLOUD_FOUNDATION_PROJECT_ID}":test_bq_dataset_${RAND} - [ "$status" -eq 0 ] - [[ "$output" =~ "\"datasetId\": \"test_bq_dataset_${RAND}\"" ]] -} - -@test "Verifying that a table was created in the dataset in deployment ${DEPLOYMENT_NAME}" { - run bq ls --format=prettyjson \ - "${CLOUD_FOUNDATION_PROJECT_ID}":test_bq_dataset_${RAND} - [ "$status" -eq 0 ] - [[ "$output" =~ "\"tableId\": \"test_bq_table_${RAND}\"" ]] -} - -@test "Verifying that a table schema was created in the dataset deployment ${DEPLOYMENT_NAME}" { - run bq show --schema test_bq_dataset_${RAND}.test_bq_table_${RAND} - [ "$status" -eq 0 ] - [[ "$output" =~ "{\"type\":\"STRING\",\"name\":\"firstname\"}" ]] - [[ "$output" =~ "{\"type\":\"STRING\",\"name\":\"lastname\"}" ]] - [[ "$output" =~ "{\"type\":\"INTEGER\",\"name\":\"age\"}" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run bq show --format=prettyjson "${CLOUD_FOUNDATION_PROJECT_ID}":test_bq_dataset_${RAND} - [[ ! "$output" =~ "\datasetId\": \"test_bq_dataset_${RAND}\"" ]] - - run bq ls --format=prettyjson "${CLOUD_FOUNDATION_PROJECT_ID}":test_bq_dataset_${RAND} - [[ ! "$output" =~ "\"tableId\": \"test_bq_table_${RAND}\"" ]] -} diff --git a/dm/templates/bigquery/tests/integration/bigquery.yaml b/dm/templates/bigquery/tests/integration/bigquery.yaml deleted file mode 100644 index 557227f2c24..00000000000 --- a/dm/templates/bigquery/tests/integration/bigquery.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Test of the BigQuery template. -# -# Variables: -# RAND: a random string used by the testing suite. -# CLOUD_FOUNDATION_USER_ACCOUNT: grants the user account configured -# in the cloud_foundation_tests.conf permissions to perform BigQuery -# command-line actions to validate the datasets and tables that were -# created. For example, `bq show` and `bq ls`. - -imports: - - path: templates/bigquery/bigquery_dataset.py - name: bigquery_dataset.py - - path: templates/bigquery/bigquery_table.py - name: bigquery_table.py - -resources: - - name: test-bq-dataset-${RAND} - type: bigquery_dataset.py - properties: - name: test_bq_dataset_${RAND} - location: US - access: - - role: OWNER - userByEmail: ${CLOUD_FOUNDATION_USER_ACCOUNT} - - - name: test-bq-table-${RAND} - type: bigquery_table.py - properties: - name: test_bq_table_${RAND} - datasetId: $(ref.test-bq-dataset-${RAND}.datasetId) - dependsOn: - - test-bq-dataset-${RAND} - schema: - - name: firstname - type: STRING - - name: lastname - type: STRING - - name: age - type: INTEGER diff --git a/dm/templates/cloud_filestore/README.md b/dm/templates/cloud_filestore/README.md deleted file mode 100644 index 1502ea86d0b..00000000000 --- a/dm/templates/cloud_filestore/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Cloud Filestore - -This template creates a Cloud Filestore instance. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Enable the [Cloud Build API](https://cloud.google.com/cloud-build/docs/api/reference/rest/) -- Enable the [Cloud Filestore API](https://cloud.google.com/filestore/docs/reference/rest/) -- Make sure that your account has the Project Editor access level, or had been granted the [roles/deploymentmanager.editor](https://cloud.google.com/deployment-manager/docs/access-control#predefined_roles) IAM role -- Make sure that the [Google APIs service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) has **default** permissions, or had been explicitly granted the [roles/file.editor](https://cloud.google.com/functions/docs/reference/iam/roles#standard-roles) IAM role - -## Deployment - -### Resources - -- [gcp-types/file-v1beta1:instances](https://cloud.google.com/filestore/docs/reference/rest/v1beta1/projects.locations.instances/create) - -### Properties - -See the `properties` section in the schema file(s): -- [Cloud Filestore](cloud_filestore.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd cloud-foundation-toolkit/dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/cloud\_filestore.yaml](examples/cloud_filestore.yaml): - -```shell - cp templates/cloud_filestore/examples/cloud_filestore.yaml my_cloud_filestore.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_cloud_filestore.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_cloud_filestore.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Cloud Filestore](examples/cloud_filestore.yaml) diff --git a/dm/templates/cloud_filestore/cloud_filestore.py b/dm/templates/cloud_filestore/cloud_filestore.py deleted file mode 100644 index 20e8add3f6a..00000000000 --- a/dm/templates/cloud_filestore/cloud_filestore.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Google Cloud Filestore instance. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - properties = context.properties - project_id = properties.get('project', context.env['project']) - name = properties.get('name', context.env['name']) - - resource = { - 'name': context.env['name'], - # https://cloud.google.com/filestore/docs/reference/rest/v1beta1/projects.locations.instances/create - 'type': 'gcp-types/file-v1beta1:projects.locations.instances', - 'properties': { - 'parent': 'projects/{}/locations/{}'.format(project_id, properties['location']), - 'instanceId': name, - } - } - - optional_props = [ - 'description', - 'tier', - 'labels', - 'fileShares', - 'networks', - ] - - for prop in optional_props: - if prop in properties: - resource['properties'][prop] = properties[prop] - - resources.append(resource) - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'fileShares', - 'value': '$(ref.{}.fileShares)'.format(context.env['name']) - }, - { - 'name': 'networks', - 'value': '$(ref.{}.networks)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/cloud_filestore/cloud_filestore.py.schema b/dm/templates/cloud_filestore/cloud_filestore.py.schema deleted file mode 100644 index c8ae29e7168..00000000000 --- a/dm/templates/cloud_filestore/cloud_filestore.py.schema +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Google Cloud Filestore - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of a Filestore instance. - - For more information on this resource: - https://cloud.google.com/filestore/docs/reference/rest/. - - APIs endpoints used by this template: - - gcp-types/file-v1beta1:instances => - https://cloud.google.com/filestore/docs/reference/rest/v1beta1/projects.locations.instances/create - -additionalProperties: false - -properties: - name: - type: string - description: | - The name of the instance to create. The name must be unique for the specified project and location. - project: - type: string - description: | - The project ID of the project to create Filestore instance. - location: - type: string - default: europe-west1-b - description: | - The instance's location - map to GCP zones, for example us-west1-b. - description: - type: string - description: | - A description of the instance (2048 characters or less). - tier: - type: string - default: TIER_UNSPECIFIED - description: | - The region name where the bucket is deployed. - enum: - - TIER_UNSPECIFIED - - STANDARD - - PREMIUM - labels: - type: object - description: | - Resource labels to represent user provided metadata. - fileShares: - type: array - uniqItems: true - minItems: 1 - maxItems: 1 - description: | - File share configurations for the instance. - items: - type: object - additionalProperties: false - required: - - name - - capacityGb - properties: - name: - type: string - description: | - The name of the file share (must be 16 characters or less). - capacityGb: - type: integer - minimum: 2560 - description: | - File share capacity in gigabytes (GB). Cloud Filestore defines 1 GB as 1024^3 bytes. - networks: - type: array - uniqItems: true - minItems: 1 - maxItems: 1 - description: | - Network configurations for the instance. - items: - type: object - additionalProperties: false - required: - - network - - modes - properties: - network: - type: string - description: | - The name of the Google Compute Engine VPC network to which the instance is connected. - modes: - type: array - uniqItems: true - default: [ "MODE_IPV4" ] - description: | - Internet protocol versions for which the instance has IP addresses assigned. For this version, - only MODE_IPV4 is supported. - items: - type: string - default: MODE_IPV4 - enum: - - MODE_IPV4 - reservedIpRange: - type: integer - description: | - A /29 CIDR block in one of the internal IP address ranges that identifies the range of IP addresses - reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/29. The range you specify can't - overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network. - -outputs: - name: - type: string - description: The resource name of the instance. - -documentation: - - templates/cloud_filestore/README.md - -examples: - - templates/cloud_filestore/examples/cloud_filestore.yaml diff --git a/dm/templates/cloud_filestore/examples/cloud_filestore.yaml b/dm/templates/cloud_filestore/examples/cloud_filestore.yaml deleted file mode 100644 index 847555372d6..00000000000 --- a/dm/templates/cloud_filestore/examples/cloud_filestore.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of the Cloud Filestore template usage. -# -# In this example, a Cloud Filestore with an HTTP trigger -# is created from the existing source. -# -# Replace the following placeholders with valid values: -# : a region where the filestore instance resides -# -imports: - - path: templates/cloud_filestore/cloud_filestore.py - name: cloud_filestore.py - -resources: - - name: test-filestore - type: cloud_filestore.py - properties: - location: - description: | - Test filestore instance - tier: PREMIUM - labels: - foo: bar - fileShares: - - name: test - capacityGb: 2560 - networks: - - network: default diff --git a/dm/templates/cloud_filestore/tests/integration/cloud_filestore.bats b/dm/templates/cloud_filestore/tests/integration/cloud_filestore.bats deleted file mode 100755 index f8451f579c0..00000000000 --- a/dm/templates/cloud_filestore/tests/integration/cloud_filestore.bats +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/cloud_filestore/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that test-filestore-${RAND} was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud filestore instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "test-filestore-${RAND}" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud filestore instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-filestore-${RAND}" ]] -} diff --git a/dm/templates/cloud_filestore/tests/integration/cloud_filestore.yaml b/dm/templates/cloud_filestore/tests/integration/cloud_filestore.yaml deleted file mode 100644 index 11862e96e4e..00000000000 --- a/dm/templates/cloud_filestore/tests/integration/cloud_filestore.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Test of the Cloud Filestore template. -# -# Variables: -# RAND: A random string used by the testing suite. - -imports: - - path: templates/cloud_filestore/cloud_filestore.py - name: cloud_filestore.py - -resources: - - name: test-filestore-${RAND} - type: cloud_filestore.py - properties: - name: test-filestore-${RAND} - description: | - Test filestore instance - tier: PREMIUM - labels: - foo: bar - fileShares: - - name: test - capacityGb: 2560 - networks: - - network: default diff --git a/dm/templates/cloud_function/README.md b/dm/templates/cloud_function/README.md deleted file mode 100644 index c78e2d3625b..00000000000 --- a/dm/templates/cloud_function/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# Cloud Function - -This template creates a Cloud Function. - -| Warning: As of January 15, 2019, newly created Functions are private-by-default and will require [appropriate IAM permissions](https://cloud.google.com/functions/docs/reference/iam/roles) to be invoked. | -|---| - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Enable the [Cloud Build API](https://cloud.google.com/cloud-build/docs/api/reference/rest/) -- Enable the [Cloud Functions API](https://cloud.google.com/functions/docs/reference/rest/) -- Make sure that your account has the Project Editor access level, or had been granted the [roles/deploymentmanager.editor](https://cloud.google.com/deployment-manager/docs/access-control#predefined_roles) IAM role -- Make sure that the [Google APIs service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) has **default** permissions, or had been explicitly granted the [roles/cloudfunctions.developer](https://cloud.google.com/functions/docs/reference/iam/roles#standard-roles) IAM role -- Make sure that the [Cloud Functions service account](https://cloud.google.com/functions/docs/concepts/iam#cloud_functions_service_account) -has **default** permissions, or had been granted the [CloudFunctions.ServiceAgent](https://cloud.google.com/functions/docs/concepts/iam#cloud_functions_service_account) IAM role - -## Deployment - -### Resources - -- [cloudfunctions.v1.function](https://cloud.google.com/functions/docs/reference/rest/v1/projects.locations.functions) -- [storage.v1.bucket](https://cloud.google.com/storage/docs/json_api/v1/buckets) - -### Properties - -See the `properties` section in the schema file(s): -- [Cloud Function](cloud_function.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/cloud\_function.yaml](examples/cloud_function.yaml): - -```shell - cp templates/cloud_function/examples/cloud_function.yaml my_cloud_function.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_cloud_function.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_cloud_function.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Cloud Function](examples/cloud_function.yaml) - diff --git a/dm/templates/cloud_function/cloud_function.py b/dm/templates/cloud_function/cloud_function.py deleted file mode 100644 index 0510d42dfb0..00000000000 --- a/dm/templates/cloud_function/cloud_function.py +++ /dev/null @@ -1,198 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" - Creates a Cloud Function from a local file system, a Cloud Storage bucket, - or a Cloud Source Repository, and then assigns an HTTPS, Storage, or Pub/Sub - trigger to that Cloud Function. -""" - -NO_RESOURCES_OR_OUTPUTS = [], [] - -def get_source_url_output(function_name, context): - """ Generates the Cloud Function output with a link to the source archive. - """ - - return { - 'name': 'sourceArchiveUrl', - 'value': '$(ref.{}.sourceArchiveUrl)'.format(function_name, context.env['name']) - } - -def append_cloud_storage_sources(function, project, context): - """ Adds source code from the Cloud Storage. """ - - properties = context.properties - upload_path = properties.get('sourceArchiveUrl') - - resources = [] - outputs = [get_source_url_output(function['name'], context)] - - if not upload_path: - msg = "sourceArchiveUrl must be provided" - raise Exception(msg) - - function['properties']['sourceArchiveUrl'] = upload_path - - return resources, outputs - -def append_cloud_repository_sources(function, context): - """ Adds the source code from the cloud repository. """ - - repo = context.properties.get('sourceRepository', { - 'url': context.properties.get('sourceRepositoryUrl') - }) - function['properties']['sourceRepository'] = repo - - name = function['name'] - output = { - 'name': 'sourceRepositoryUrl', - 'value': '$(ref.{}.sourceRepository.deployedUrl)'.format(context.env['name']) - } - - return [], [output] - -def append_source_code(function, project, context): - """ Append a reference to the Cloud Function's source code. """ - - properties = context.properties - - if 'sourceRepository' in properties or 'sourceRepositoryUrl' in properties: - return append_cloud_repository_sources(function, context) - - if 'sourceUploadUrl' in properties: - append_optional_property(function, properties, 'sourceUploadUrl') - return [], [] - - if 'sourceArchiveUrl' in properties or 'localUploadPath' in properties: - return append_cloud_storage_sources(function, project, context) - - raise ValueError('At least one of source properties must be provided') - -def append_trigger_topic(function, properties): - """ Appends the Pub/Sub event trigger. """ - - topic = properties['triggerTopic'] - - function['properties']['eventTrigger'] = { - 'eventType': 'providers/cloud.pubsub/eventTypes/topic.publish', - 'resource': topic - } - - return NO_RESOURCES_OR_OUTPUTS - -def append_trigger_http(function, context): - """ Appends the HTTPS trigger and returns the generated URL. """ - - function['properties']['httpsTrigger'] = {} - output = { - 'name': 'httpsTriggerUrl', - 'value': '$(ref.{}.httpsTrigger.url)'.format(context.env['name']) - } - - return [], [output] - -def append_trigger_storage(function, context): - """ Appends the Storage trigger. """ - - bucket = context.properties['triggerStorage']['bucketName'] - event = context.properties['triggerStorage']['event'] - - project_id = context.env['project'] - function['properties']['eventTrigger'] = { - 'eventType': 'google.storage.object.' + event, - 'resource': 'projects/{}/buckets/{}'.format(project_id, bucket) - } - - return NO_RESOURCES_OR_OUTPUTS - -def append_trigger(function, context): - """ Adds the Trigger section and returns all the associated new - resources and outputs. - """ - - if 'triggerTopic' in context.properties: - return append_trigger_topic(function, context.properties) - elif 'triggerStorage' in context.properties: - return append_trigger_storage(function, context) - - return append_trigger_http(function, context) - -def append_optional_property(function, properties, prop_name): - """ If the property is set, it is added to the function body. """ - - val = properties.get(prop_name) - if val: - function['properties'][prop_name] = val - return - -def create_function_resource(context): - """ Creates the Cloud Function resource. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - location = properties.get('location', properties.get('region')) - - function = { - # https://cloud.google.com/functions/docs/reference/rest/v1/projects.locations.functions - 'type': 'gcp-types/cloudfunctions-v1:projects.locations.functions', - 'name': context.env['name'], - 'properties': - { - 'parent': 'projects/{}/locations/{}'.format(project_id, location), - 'function': name, - # 'name': 'projects/{}/locations/{}/functions/{}'.format(project_id, location, name), - }, - } - - optional_properties = ['entryPoint', - 'labels', - 'environmentVariables', - 'timeout', - 'runtime', - 'maxInstances', - 'availableMemoryMb', - 'description'] - - for prop in optional_properties: - append_optional_property(function, properties, prop) - - trigger_resources, trigger_outputs = append_trigger(function, context) - code_resources, code_outputs = append_source_code(function, project_id, context) - - if code_resources: - function['metadata'] = { - 'dependsOn': [dep['name'] for dep in code_resources] - } - - return (trigger_resources + code_resources + [function], - trigger_outputs + code_outputs + [ - { - 'name': 'region', - 'value': context.properties['region'] - }, - { - 'name': 'name', - 'value': '$(ref.{}.name)'.format(context.env['name']) - } - ]) - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources, outputs = create_function_resource(context) - - return { - 'resources': resources, - 'outputs': outputs - } diff --git a/dm/templates/cloud_function/cloud_function.py.schema b/dm/templates/cloud_function/cloud_function.py.schema deleted file mode 100644 index fa1576407c3..00000000000 --- a/dm/templates/cloud_function/cloud_function.py.schema +++ /dev/null @@ -1,214 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud Function - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a Cloud Function from a local file system, a Cloud Storage bucket, - or a cloud source repository, and then assigns HTTPS, Storage, or Pub/Sub - trigger to that Cloud Function. - - For more information on this resource: - https://cloud.google.com/functions/ - - APIs endpoints used by this template: - - gcp-types/cloudfunctions-v1:projects.locations.functions => - https://cloud.google.com/functions/docs/reference/rest/v1/projects.locations.functions - - gcp-types/cloudbuild-v1:cloudbuild.projects.builds.create => - https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds/create - - APIs that should be enabled (on the seed project as well): - - cloudfunctions.googleapis.com - - cloudbuild.googleapis.com - - Additionally, ID@cloudbuild.gserviceaccount.com service account of the seed project should have - storage.buckets.create on the target project. - -additionalProperties: false - -allOf: - - oneOf: - - required: - - region - - required: - - location - - oneOf: - - required: - - sourceRepository - - required: - - sourceRepositoryUrl - - required: - - sourceUploadUrl - - anyOf: - - required: - - sourceArchiveUrl - -properties: - name: - type: string - description: The function name. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the Cloud function. The - Google apps domain is prefixed if applicable. - region: - type: string - description: The region where the function is deployed. Deprecated, use "location" field - location: - type: string - description: The location where the function is deployed. - timeout: - type: string - description: The timeout for the function, in seconds; e.g., '120s'. - default: 60s - runtime: - name: string - description: | - The runtime in which the function is going to run. See - https://cloud.google.com/functions/docs/concepts/exec#runtimes. - enum: - - go111 - - nodejs6 # deprecated! - - nodejs8 - - nodejs10 - - python37 - default: nodejs10 - availableMemoryMb: - type: integer - description: The amount of memory available for the function, MB. - default: 256 - entryPoint: - type: string - description: | - The function name (as defined in the source code) to be executed. - Defaults to the resource name's suffix. - sourceUploadUrl: - type: string - description: | - The Google Cloud Storage signed URL used for source uploading, generated by - [google.cloud.functions.v1.GenerateUploadUrl][] - sourceArchiveUrl: - type: string - description: | - The URL of the archive containing the Cloud Function's source code - in Google Storage, starting with gs://, pointing to the zip archive which contains the function. - When used along with localUploadPath, this is the path to which the source code is uploaded. If the URL points - to a non-existing bucket, the bucket is created automatically. - sourceRepository: - type: object - additionalProperties: false - description: | - The source repository where a function is hosted. - required: - - url - properties: - url: - type: string - description: | - The URL pointing to the hosted repository where the function is defined. There are supported Cloud Source - Repository URLs in the following formats: - - To refer to a specific commit: - https://source.developers.google.com/projects/*/repos/*/revisions/*/paths/* - To refer to a moveable alias (branch): - https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/* - In particular, to refer to HEAD use master moveable alias. - To refer to a specific fixed alias (tag): - https://source.developers.google.com/projects/*/repos/*/fixed-aliases/*/paths/* - - You may omit paths/* if you want to use the main directory. - sourceRepositoryUrl: - type: string - description: | - DEPRECATED, alias for sourceRepository->url - triggerTopic: - type: string - description: | - The Pub/Sub topic name (projects/PROJECT_NAME/topics/TOPIC_NAME) that - triggers the Cloud Function. If neither triggerTopic nor triggerStorage are - provided, the function is triggered by an HTTPS call. See more at - https://cloud.google.com/functions/docs/concepts/events-triggers#events. - triggerStorage: - type: object - additionalProperties: false - description: | - Configures the Cloud Storage trigger for the function. If neither triggerTopic - nor triggerStorage are provided, the function is triggered by an HTTPS call. - See more at https://cloud.google.com/functions/docs/concepts/events-triggers#events. - required: - - bucketName - - event - properties: - bucketName: - type: string - description: | - The name of the bucket triggering the event; e.g. my-bucket-name. - event: - type: string - description: | - The trigger event name. See more at - https://cloud.google.com/functions/docs/calling/storage#cloud_storage_event_types. - enum: - - finalize - - delete - - archive - - metadataUpdate - labels: - type: object - description: | - Map labels associated with this Cloud Function. - Example: - name: wrench - mass: 1.3kg - count: 3 - environmentVariables: - type: object - description: | - Map of environment variables that shall be available during function execution. - Example: - FOO: BAR - maxInstances: - type: number - description: | - The limit on the maximum number of function instances that may coexist at a given time. - This feature is currently in alpha, available only for whitelisted users. - -outputs: - region: - description: The region where the function is deployed. - type: string - name: - description: The function name. - type: string - httpsTriggerUrl: - description: For HTTPS-triggered functions, the trigger URL. - type: string - sourceRepositoryUrl: - description: | - For functions deployed from cloud repositories, - the repository URL. - type: string - sourceArchiveUrl: - description: For functions deployed from Cloud Storage, the bucket URL. - type: string - -documentation: - - templates/cloud_function/README.md - -examples: - - templates/cloud_function/examples/cloud_function.yaml - - templates/cloud_function/examples/cloud_function_upload.yaml diff --git a/dm/templates/cloud_function/examples/cloud_function.yaml b/dm/templates/cloud_function/examples/cloud_function.yaml deleted file mode 100644 index 54647223f1e..00000000000 --- a/dm/templates/cloud_function/examples/cloud_function.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Example of the Cloud Function template usage. -# -# In this example, a Cloud Function with an HTTP trigger -# is created from the existing source. -# -# Replace the following placeholders with valid values: -# : a region where the function resides -# : a URL, starting with gs://, -# pointing to an existing ZIP archive that contains the function -# : the name of the function in the archive -# -imports: - - path: templates/cloud_function/cloud_function.py - name: cloud_function.py - -resources: - - name: test-function - type: cloud_function.py - properties: - region: - entryPoint: - sourceArchiveUrl: diff --git a/dm/templates/cloud_function/function/helloGET.js b/dm/templates/cloud_function/function/helloGET.js deleted file mode 100644 index 55700836c15..00000000000 --- a/dm/templates/cloud_function/function/helloGET.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Responds to any HTTP request with 'Hello World!'. - * - * @param {Object} req Cloud Function request context. - * @param {Object} res Cloud Function response context. - */ -exports.helloGET = function (req, res) { - res.status(200).send('Hello world!'); -}; - diff --git a/dm/templates/cloud_function/function/package.json b/dm/templates/cloud_function/function/package.json deleted file mode 100644 index 4a7caa6596e..00000000000 --- a/dm/templates/cloud_function/function/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "function", - "version": "1.0.0", - "description": "A sample cloud function", - "main": "helloGET.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Google Inc.", - "license": "Apache2" -} diff --git a/dm/templates/cloud_function/tests/integration/cloud_function.bats b/dm/templates/cloud_function/tests/integration/cloud_function.bats deleted file mode 100755 index 706f492a40b..00000000000 --- a/dm/templates/cloud_function/tests/integration/cloud_function.bats +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/cloud_function/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud pubsub topics create topic-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud pubsub topics delete topic-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - gsutil rm -r gs://test-function-http-${RAND} - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that cloud functions were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud functions list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "test-function-https-name-${RAND}" ]] - [[ "$output" =~ "test-function-storage-${RAND}" ]] - [[ "$output" =~ "test-function-topic-${RAND}" ]] -} - -@test "Verifying that test-function-https-name-${RAND} properties are set" { - run gcloud functions describe test-function-https-name-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "availableMemoryMb: 512" ]] - [[ "$output" =~ "timeout: 120s" ]] - [[ "$output" =~ "sourceArchiveUrl: gs://test-function-http-${RAND}/helloGET.zip" ]] -} - -@test "Verifying that test-function-https-name-${RAND} trigger is set" { - run gcloud functions describe test-function-https-name-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "url: https://us-central1-${CLOUD_FOUNDATION_PROJECT_ID}.cloudfunctions.net/test-function-https-name-${RAND}" ]] -} - -@test "Verifying that test-function-topic-${RAND} trigger is set" { - run gcloud functions describe test-function-topic-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "providers/cloud.pubsub/eventTypes/topic.publish" ]] - [[ "$output" =~ "projects/${CLOUD_FOUNDATION_PROJECT_ID}/topics/topic-${RAND}" ]] -} - -@test "Verifying that test-function-storage-${RAND} trigger is set" { - run gcloud functions describe test-function-storage-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "eventType: google.storage.object.finalize" ]] - [[ "$output" =~ "resource: projects/${CLOUD_FOUNDATION_PROJECT_ID}/buckets/test-function-http-${RAND}" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud functions list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-function-https-name-${RAND}" ]] - [[ ! "$output" =~ "test-function-storage-${RAND}" ]] - [[ ! "$output" =~ "test-function-topic-${RAND}" ]] -} diff --git a/dm/templates/cloud_function/tests/integration/cloud_function.yaml b/dm/templates/cloud_function/tests/integration/cloud_function.yaml deleted file mode 100644 index 2f65ac119ac..00000000000 --- a/dm/templates/cloud_function/tests/integration/cloud_function.yaml +++ /dev/null @@ -1,43 +0,0 @@ -# Test of the Cloud Function template usage. -# -# Variables: -# RAND: a random string used by the testing suite. -# - -imports: - - path: templates/cloud_function/cloud_function.py - name: cloud_function.py - - path: templates/cloud_function/function/helloGET.js - - path: templates/cloud_function/function/package.json - -resources: - - - name: test-function-https-${RAND} - type: cloud_function.py - properties: - name: test-function-https-name-${RAND} - region: us-central1 - timeout: 120s - availableMemoryMb: 512 - entryPoint: helloGET - localUploadPath: templates/cloud_function/function - sourceArchiveUrl: gs://test-function-http-${RAND}/helloGET.zip - - - name: test-function-topic-${RAND} - type: cloud_function.py - properties: - region: us-central1 - entryPoint: helloGET - sourceArchiveUrl: $(ref.test-function-https-${RAND}.sourceArchiveUrl) - triggerTopic: projects/${CLOUD_FOUNDATION_PROJECT_ID}/topics/topic-${RAND} - - - name: test-function-storage-${RAND} - type: cloud_function.py - properties: - region: us-central1 - entryPoint: helloGET - sourceArchiveUrl: $(ref.test-function-https-${RAND}.sourceArchiveUrl) - triggerStorage: - bucketName: test-function-http-${RAND} - event: finalize - diff --git a/dm/templates/cloud_router/README.md b/dm/templates/cloud_router/README.md deleted file mode 100644 index edf5debaf84..00000000000 --- a/dm/templates/cloud_router/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Cloud Router - -This template creates a Cloud Router. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network](../network/README.md) -- Grant the [compute.networkAdmin](https://cloud.google.com/compute/docs/access/iam) IAM role to the project service account - -## Deployment - -### Resources - -- [compute.v1.router](https://cloud.google.com/compute/docs/reference/rest/v1/routers) - -### Properties - -See the `properties` section in the schema file(s): -- [Cloud Router](cloud_router.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -``` - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [cloud-foundation-toolkit/dm](../../) directory: - -``` - cd cloud-foundation-toolkit/dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/cloud_router.yaml](examples/cloud_router.yaml): - -``` - cp templates/cloud_router/examples/cloud_router.yaml my_cloud_router.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -``` - vim my_cloud_router.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -``` - gcloud deployment-manager deployments create \ - --config my_cloud_router.yaml -``` - -6. In case you need to delete your deployment: - -``` - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Cloud Router](examples/cloud_router.yaml) diff --git a/dm/templates/cloud_router/cloud_router.py b/dm/templates/cloud_router/cloud_router.py deleted file mode 100644 index 117ceed9939..00000000000 --- a/dm/templates/cloud_router/cloud_router.py +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Cloud Router. """ - - -def append_optional_property(res, properties, prop_name): - """ If the property is set, it is added to the resource. """ - - val = properties.get(prop_name) - if val: - res['properties'][prop_name] = val - return - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - bgp = properties.get('bgp', {'asn': properties.get('asn')}) - - router = { - 'name': context.env['name'], - # https://cloud.google.com/compute/docs/reference/rest/v1/routers - 'type': 'gcp-types/compute-v1:routers', - 'properties': - { - 'name': - name, - 'project': - project_id, - 'region': - properties['region'], - 'network': - properties.get('networkURL', generate_network_uri( - project_id, - properties.get('network', ''))), - } - } - - if properties.get('bgp'): - router['properties']['bgp'] = bgp - - optional_properties = [ - 'description', - 'bgpPeers', - 'interfaces', - 'nats', - ] - - for prop in optional_properties: - append_optional_property(router, properties, prop) - - return { - 'resources': [router], - 'outputs': - [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.' + context.env['name'] + '.selfLink)' - }, - { - 'name': - 'creationTimestamp', - 'value': - '$(ref.' + context.env['name'] + '.creationTimestamp)' - } - ] - } - - -def generate_network_uri(project_id, network): - """Format the network name as a network URI.""" - - return 'projects/{}/global/networks/{}'.format( - project_id, - network - ) diff --git a/dm/templates/cloud_router/cloud_router.py.schema b/dm/templates/cloud_router/cloud_router.py.schema deleted file mode 100644 index d1c42067ae9..00000000000 --- a/dm/templates/cloud_router/cloud_router.py.schema +++ /dev/null @@ -1,425 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud Router - author: Sourced Group Inc. - version: 1.1.0 - description: | - Deploys a Cloud Router. - - For more information on this resource: - https://cloud.google.com/router/docs/ - - APIs endpoints used by this template: - - gcp-types/compute-v1:routers => - https://cloud.google.com/compute/docs/reference/rest/v1/routers - -additionalProperties: false - -allOf: - - required: - - region - - oneOf: - - required: - - networkURL - - required: - - network - - oneOf: - - required: - - asn - - required: - - bgp - - required: - - nats - -properties: - name: - type: string - description: | - Must comply with RFC1035. Specifically, the name must be 1-63 characters long and match - the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, - and all following characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - Resource name would be used if omitted. - description: - type: string - description: | - An optional description of this resource. Provide this property when you create the resource. - project: - type: string - description: | - The project ID of the project containing the Cloud Router instance. The - Google apps domain is prefixed if applicable. - region: - type: string - description: The URI of the region where the Cloud Router resides. - networkURL: - type: string - description: The URL (or URI) of the network to which the Cloud Router belongs. - network: - type: string - description: The name of the network to which the Cloud Router belongs (without project prefix). - bgp: - type: object - additionalProperties: false - description: | - BGP information specific to this router. - required: - - asn - properties: - asn: - type: integer - description: | - The local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, - either 16-bit or 32-bit. The value will be fixed for this router. - All VPN tunnels that link to this router will have the same - local ASN. - advertiseMode: - type: string - description: | - User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM. - enum: - - DEFAULT - - CUSTOM - advertisedGroups: - type: array - description: | - User-specified list of prefix groups to advertise in custom mode. This field can only be populated if - advertiseMode is CUSTOM and is advertised to all peers of the router. These groups will be advertised - in addition to any specified prefixes. Leave this field blank to advertise no custom groups. - uniqueItems: True - items: - type: string - enum: - - ALL_SUBNETS - advertisedIpRanges: - type: array - description: | - User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated - if advertiseMode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised - in addition to any specified groups. Leave this field blank to advertise no custom IP ranges. - uniqueItems: True - items: - type: object - additionalProperties: false - required: - - range - properties: - range: - type: string - description: | - The IP range to advertise. The value must be a CIDR-formatted string. - description: - type: string - description: | - User-specified description for the IP range. - bgpPeers: - type: array - description: | - BGP information that must be configured into the routing stack to establish BGP peering. This information - must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273. - uniqueItems: True - items: - type: object - additionalProperties: false - required: - - name - - interfaceName - - ipAddress - - peerIpAddress - properties: - name: - type: string - description: | - Name of this BGP peer. The name must be 1-63 characters long and comply with RFC1035. - interfaceName: - type: string - description: | - Name of the interface the BGP peer is associated with. - ipAddress: - type: string - description: | - IP address of the interface inside Google Cloud Platform. Only IPv4 is supported. - peerIpAddress: - type: string - description: | - IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported. - peerAsn: - type: string - description: | - Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value. - advertisedRoutePriority: - type: string - description: | - The priority of routes advertised to this BGP peer. Where there is more than one matching - route of maximum length, the routes with the lowest priority value win. - advertiseMode: - type: string - description: | - User-specified flag to indicate which mode to use for advertisement. - advertisedGroups: - type: array - description: | - User-specified list of prefix groups to advertise in custom mode, which can take - one of the following options: - - - ALL_SUBNETS: Advertises all available subnets, including peer VPC subnets. - - ALL_VPC_SUBNETS: Advertises the router's own VPC subnets. - - ALL_PEER_VPC_SUBNETS: Advertises peer subnets of the router's VPC network. - Note that this field can only be populated if advertiseMode is CUSTOM and overrides the list - defined for the router (in the "bgp" message). These groups are advertised in addition - to any specified prefixes. Leave this field blank to advertise no custom groups. - uniqueItems: True - items: - type: string - enum: - - ALL_SUBNETS - - ALL_VPC_SUBNETS - - ALL_PEER_VPC_SUBNETS - advertisedIpRanges: - type: array - description: | - User-specified list of individual IP ranges to advertise in custom mode. This field can only - be populated if advertiseMode is CUSTOM and overrides the list defined for - the router (in the "bgp" message). These IP ranges are advertised in addition to any specified groups. - Leave this field blank to advertise no custom IP ranges. - uniqueItems: True - items: - type: object - additionalProperties: false - required: - - range - properties: - range: - type: string - description: | - The IP range to advertise. The value must be a CIDR-formatted string. - randescriptionge: - type: string - description: | - User-specified description for the IP range. - interfaces: - type: array - description: | - Router interfaces. Each interface requires either one linked resource, (for example, linkedVpnTunnel), - or IP address and IP address range (for example, ipRange), or both. - uniqueItems: True - items: - type: object - additionalProperties: false - required: - - name - oneOf: - - allOf: - - required: - - linkedVpnTunnel - - not: - required: - - linkedInterconnectAttachment - - allOf: - - required: - - linkedInterconnectAttachment - - not: - required: - - linkedVpnTunnel - properties: - name: - type: string - description: | - Name of this interface entry. The name must be 1-63 characters long and comply with RFC1035. - linkedVpnTunnel: - type: string - description: | - URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have - one linked resource, which can be either a VPN tunnel or an Interconnect attachment. - linkedInterconnectAttachment: - type: string - description: | - URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface - can have one linked resource, which can be either be a VPN tunnel or an Interconnect attachment. - ipRange: - type: string - description: | - IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. - The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address - as it represents the IP address of the interface. - nats: - type: array - description: | - A list of NAT services created in this router. - uniqueItems: True - items: - type: object - additionalProperties: false - required: - - name - - sourceSubnetworkIpRangesToNat - - natIpAllocateOption - oneOf: - - allOf: - - properties: - sourceSubnetworkIpRangesToNat: - enum: - - ALL_SUBNETWORKS_ALL_IP_RANGES - - not: - required: - - subnetworks - - allOf: - - properties: - sourceSubnetworkIpRangesToNat: - enum: - - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES - - not: - required: - - subnetworks - - allOf: - - properties: - sourceSubnetworkIpRangesToNat: - enum: - - LIST_OF_SUBNETWORKS - - required: - - subnetworks - properties: - name: - type: string - description: | - Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035. - sourceSubnetworkIpRangesToNat: - type: string - description: | - Specify the Nat option, which can take one of the following values: - - - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) - The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains - ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any - other Router.Nat section in any Router for this network in this region. - enum: - - ALL_SUBNETWORKS_ALL_IP_RANGES - - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES - - LIST_OF_SUBNETWORKS - subnetworks: - type: array - description: | - A list of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only - when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above. - uniqueItems: True - items: - type: object - additionalProperties: false - required: - - name - properties: - name: - type: string - description: | - URL for the subnetwork resource that will use NAT. - sourceIpRangesToNat: - type: array - description: | - Specify the options for NAT ranges in the Subnetwork. All options of a single value - are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with - multiple values is: ["PRIMARY_IP_RANGE", "LIST_OF_SECONDARY_IP_RANGES"] Default: [ALL_IP_RANGES] - uniqueItems: True - items: - type: string - secondaryIpRangeNames: - type: array - description: | - A list of the secondary ranges of the Subnetwork that are allowed to use NAT. - This can be populated only if "LIST_OF_SECONDARY_IP_RANGES" is - one of the values in sourceIpRangesToNat. - uniqueItems: True - items: - type: string - natIps: - type: array - description: | - A list of URLs of the IP resources used for this Nat service. These IP addresses must - be valid static external IP addresses assigned to the project. - uniqueItems: True - items: - type: string - natIpAllocateOption: - type: string - description: | - Specify the NatIpAllocateOption, which can take one of the following values: - - - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. - When there are not enough specified Nat IPs, the Nat service fails for new VMs. - - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. - When choosing AUTO_ONLY, then natIp should be empty. - enum: - - MANUAL_ONLY - - AUTO_ONLY - minPortsPerVm: - type: integer - description: | - Minimum number of ports allocated to a VM from this NAT config. If not set, a default - number of ports is allocated to a VM. This is rounded up to the nearest power of 2. - For example, if the value of this field is 50, at least 64 ports are allocated to a VM. - udpIdleTimeoutSec: - type: integer - description: | - Timeout (in seconds) for UDP connections. Defaults to 30s if not set. - icmpIdleTimeoutSec: - type: integer - description: | - Timeout (in seconds) for ICMP connections. Defaults to 30s if not set. - tcpEstablishedIdleTimeoutSec: - type: integer - description: | - Timeout (in seconds) for TCP established connections. Defaults to 1200s if not set. - tcpTransitoryIdleTimeoutSec: - type: integer - description: | - Timeout (in seconds) for TCP transitory connections. Defaults to 30s if not set. - logConfig: - type: object - additionalProperties: false - description: | - Configure logging on this NAT. - properties: - enable: - type: boolean - description: | - Indicates whether or not to export logs. This is false by default. - filter: - type: string - description: | - Specifies the desired filtering of logs on this NAT. If unspecified, logs are exported - for all connections handled by this NAT. - asn: - type: integer - description: | - DEPRECATED. Alias for bgp->asn - -outputs: - name: - type: string - description: The name of the Cloud Router resource. - selfLink: - type: string - description: The URI (SelfLink) of the Cloud Router resource. - creationTimestamp: - type: string - description: Creation timestamp in RFC3339 text format. - -documentation: - - templates/cloud_router/README.md - -examples: - - templates/cloud_router/examples/cloud_router.yaml diff --git a/dm/templates/cloud_router/examples/cloud_nat_router.yaml b/dm/templates/cloud_router/examples/cloud_nat_router.yaml deleted file mode 100644 index 0d208cfd81f..00000000000 --- a/dm/templates/cloud_router/examples/cloud_nat_router.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Example of the Cloud Router template usage to create CloudNAT -# -# Replace the following placeholders with valid values: -# : the name the network to which the router belongs -# : subnetwork that belongs to the network, whose -# traffic should be translated by NAT Gateway. - -imports: - - path: templates/cloud_router/cloud_router.py - name: cloud_router.py - -resources: - - name: test-cloud-nat-router - type: cloud_router.py - properties: - name: cloud-nat-router - network: - region: us-east1 - nats: - - name: cloud-nat - sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS - natIpAllocateOption: AUTO_ONLY - subnetworks: - - name: diff --git a/dm/templates/cloud_router/examples/cloud_router.yaml b/dm/templates/cloud_router/examples/cloud_router.yaml deleted file mode 100644 index 2eb0d8aa3e1..00000000000 --- a/dm/templates/cloud_router/examples/cloud_router.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Example of the Cloud Router template usage. -# -# Replace the following placeholders with valid values: -# : the name the network to which the router belongs -# - -imports: - - path: templates/cloud_router/cloud_router.py - name: cloud_router.py - -resources: - - name: test-cloud-router - type: cloud_router.py - properties: - name: cloud-router - network: - region: us-east1 - asn: 65001 diff --git a/dm/templates/cloud_router/tests/integration/cloud_router.bats b/dm/templates/cloud_router/tests/integration/cloud_router.bats deleted file mode 100644 index ef5ddd4fb7a..00000000000 --- a/dm/templates/cloud_router/tests/integration/cloud_router.bats +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export REGION="us-east1" - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/cloud_router/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud compute networks create network-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "integration test ${RAND}" \ - --subnet-mode auto -q - create_config - fi - - # Per-test setup steps. - } - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute networks delete network-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that routers were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute routers list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "cloud-router-${RAND}" ]] - [[ "$output" =~ "cloud-router-nat-${RAND}" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run gcloud compute routers list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "cloud-router-${RAND}" ]] -} diff --git a/dm/templates/cloud_router/tests/integration/cloud_router.yaml b/dm/templates/cloud_router/tests/integration/cloud_router.yaml deleted file mode 100644 index e1219c9f040..00000000000 --- a/dm/templates/cloud_router/tests/integration/cloud_router.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Test of the Cloud Router template usage. -# -# Variables: -# RAND: a random string used by the testing suite. -# - -imports: - - path: templates/cloud_router/cloud_router.py - name: cloud_router.py - -resources: - - name: cloud-router-${RAND} - type: cloud_router.py - properties: - name: cloud-router-${RAND} - network: network-${RAND} - region: ${REGION} - asn: 65001 - - name: cloud-router-nat-${RAND} - type: cloud_router.py - properties: - name: cloud-router-nat-${RAND} - network: network-${RAND} - region: ${REGION} - nats: - - name: cloud-nat-test-${RAND} - sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS - natIpAllocateOption: AUTO_ONLY - subnetworks: - - name: projects/${CLOUD_FOUNDATION_PROJECT_ID}/regions/${REGION}/subnetworks/network-${RAND} diff --git a/dm/templates/cloud_router/tests/schemas/invalid_additional_options.yaml b/dm/templates/cloud_router/tests/schemas/invalid_additional_options.yaml deleted file mode 100644 index 41c7594ae79..00000000000 --- a/dm/templates/cloud_router/tests/schemas/invalid_additional_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -network: asd -region: us-east1 -asn: 65001 -foo: bar diff --git a/dm/templates/cloud_router/tests/schemas/valid_basic.yaml b/dm/templates/cloud_router/tests/schemas/valid_basic.yaml deleted file mode 100644 index c4e9529f7c0..00000000000 --- a/dm/templates/cloud_router/tests/schemas/valid_basic.yaml +++ /dev/null @@ -1,5 +0,0 @@ -network: asd -region: us-east1 -asn: 65001 -name: foo -project: foo diff --git a/dm/templates/cloud_spanner/README.md b/dm/templates/cloud_spanner/README.md deleted file mode 100644 index a7c0c93004f..00000000000 --- a/dm/templates/cloud_spanner/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Cloud Spanner - -This template creates a Cloud Spanner instance cluster and database. - -## Prerequisites -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [spanner.admin](https://cloud.google.com/spanner/docs/iam) IAM role to the project service account - -## Deployment - -### Resources - -- [gcp-types/spanner-v1](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances) - -### Properties - -See the `properties` section in the schema file(s): -- [Cloud Spanner](cloud_spanner.py.schema) - - -#### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../../cloud-foundation) directory - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment, in this case [examples/cloud_spanner.yaml](examples/cloud_spanner.yaml) - -```shell - cp templates/cloud_spanner/examples/cloud_spanner.yaml my_cloud_spanner.yaml -``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - -```shell - vim my_cloud_spanner.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment as described below, replacing - with your with your own deployment name - -```shell - gcloud deployment-manager deployments create \ - --config my_cloud_spanner.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Cloud Spanner](examples/cloud_spanner.yaml) diff --git a/dm/templates/cloud_spanner/cloud_spanner.py b/dm/templates/cloud_spanner/cloud_spanner.py deleted file mode 100644 index 2f7367af33c..00000000000 --- a/dm/templates/cloud_spanner/cloud_spanner.py +++ /dev/null @@ -1,119 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Cloud Spanner instance and database. """ - - -def append_optional_property(res, properties, prop_name): - """ If the property is set, it is added to the resource. """ - - val = properties.get(prop_name) - if val: - res['properties'][prop_name] = val - return - -def get_spanner_instance_id(project_id, base_name): - """ Generate the instance URL """ - - return "projects/{}/instances/{}".format(project_id, base_name) - - -def get_spanner_instance_config(project_id, config): - """ Generate the instance config URL """ - - return "projects/{}/instanceConfigs/{}".format(project_id, config) - - -def generate_config(context): - """ - Generates the config gcloud needs to create a Cloud Spanner instance. - Input: context - generated by gcloud when loading the input config file. - Output: dictionary with key resource names - this contains all the - information gcloud needs to create a spanner instance, - databases, and permissions. - """ - - resources_list = [] - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - instance_id = get_spanner_instance_id(project_id, name) - instance_config = get_spanner_instance_config( - project_id, - context.properties['instanceConfig'] - ) - - resource = { - 'name': name, - # https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances - 'type': 'gcp-types/spanner-v1:projects.instances', - 'properties': - { - 'instanceId': name, - 'parent': 'projects/{}'.format(project_id), - 'instance': - { - 'name': instance_id, - 'config': instance_config, - 'nodeCount': context.properties['nodeCount'], - 'displayName': context.properties['displayName'] - } - } - } - - optional_properties = [ - 'labels', - ] - for prop in optional_properties: - append_optional_property(resource, properties, prop) - resources_list.append(resource) - - out = {} - for database in context.properties.get("databases", []): - database_resource_name = "{}{}{}".format( - instance_id, - "/databases/", - database['name'] - ) - database_resource = { - 'name': database_resource_name, - # https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases - 'type': 'gcp-types/spanner-v1:projects.instances.databases', - 'properties': - { - 'parent': instance_id, - 'databaseId': database['name'] - }, - 'metadata': { - 'dependsOn': [name] - } - } - resources_list.append(database_resource) - - out[database_resource_name] = { - 'state': '$(ref.' + database_resource_name + '.state)' - } - - outputs = [ - { - 'name': 'state', - 'value': '$(ref.' + name + '.state)' - }, - { - 'name': 'databases', - 'value': out - } - ] - - return {'resources': resources_list, 'outputs': outputs} diff --git a/dm/templates/cloud_spanner/cloud_spanner.py.schema b/dm/templates/cloud_spanner/cloud_spanner.py.schema deleted file mode 100644 index 5809db6e15a..00000000000 --- a/dm/templates/cloud_spanner/cloud_spanner.py.schema +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud Spanner - author: Sourced Group Inc. - version: 1.0.0 - description: Creates a Cloud Spanner instance and database. - -additionalProperties: false - -required: - - displayName - - nodeCount - - instanceConfig - -properties: - name: - type: string - description: | - A unique identifier for the instance, which cannot be changed after the instance is created.Values are - of the form projects//instances/[a-z][-a-z0-9]*[a-z0-9]. The final segment of the name must be - between 2 and 64 characters in length. - This does not include the project ID. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the Cloud Spanner instance. The - Google apps domain is prefixed if applicable. - displayName: - type: string - description: The cluster display name in GCP Console. - nodeCount: - type: integer - minimum: 1 - description: The number of instances allocated to your node. - instanceConfig: - type: string - description: The cluster location. - enum: - - eur3 - - nam-eur-asia1 - - nam3 - - nam6 - - regional-asia-east1 - - regional-asia-east2 - - regional-asia-northeast1 - - regional-asia-northeast2 - - regional-asia-south1 - - regional-asia-southeast1 - - regional-australia-southeast1 - - regional-europe-north1 - - regional-europe-west1 - - regional-europe-west2 - - regional-europe-west4 - - regional-europe-west6 - - regional-northamerica-northeast1 - - regional-us-central1 - - regional-us-east1 - - regional-us-east4 - - regional-us-west1 - - regional-us-west2 - labels: - type: object - description: | - Map labels associated with this Cloud spanner instance. - Example: - name: wrench - mass: 1.3kg - count: 3 - databases: - type: array - description: A list of databases created under the instance cluster. - items: - type: object - additionalProperties: false - required: - - name - properties: - name: - type: string - description: The name of the database created under the instance cluster. - -outputs: - name: - type: string - description: The name of the cloud spanner instance. - state: - type: string - description: | - The current cloud spanner instance state. For more information: - - https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances#State - databases: - type: array - description: | - Array of database details. For example, the output can be referenced - as: `$(ref..databases..state)` - items: - description: The name of the address resource. - patternProperties: - ".*": - type: object - additionalProperties: false - description: Details for an address resource. - properties: - state: - type: string - description: | - The current database state. For more information: - - https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases#Database - -documentation: - - templates/cloud_spanner/README.md - -examples: - - templates/cloud_spanner/examples/cloud_spanner.yaml diff --git a/dm/templates/cloud_spanner/examples/cloud_spanner.yaml b/dm/templates/cloud_spanner/examples/cloud_spanner.yaml deleted file mode 100644 index 9d0f81eccd5..00000000000 --- a/dm/templates/cloud_spanner/examples/cloud_spanner.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example of the Cloud Spanner template usage. - -imports: - - path: templates/cloud_spanner/cloud_spanner.py - name: cloud_spanner.py - -resources: - - name: myspannercluster - type: cloud_spanner.py - properties: - displayName: "Spanner Cluster 1" - nodeCount: 2 - instanceConfig: nam3 - databases: - - name: "spannerdb1" - \ No newline at end of file diff --git a/dm/templates/cloud_spanner/tests/integration/cloud_spanner.bats b/dm/templates/cloud_spanner/tests/integration/cloud_spanner.bats deleted file mode 100755 index 616d7b4e4bc..00000000000 --- a/dm/templates/cloud_spanner/tests/integration/cloud_spanner.bats +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -## Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -export PROJECT_NUMBER=$(gcloud projects list | grep "${CLOUD_FOUNDATION_PROJECT_ID}" | awk {'print $NF'}) - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/cloud_spanner/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi -} - -function teardown() { - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi -} - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that Spanner cluster was created as part of ${DEPLOYMENT_NAME}" { - run gcloud spanner instances list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-myspannercluster-${RAND}" ]] -} - -@test "Verifying that Spanner cluster IAM was created as part of ${DEPLOYMENT_NAME}" { - run gcloud spanner instances get-iam-policy test-myspannercluster-"${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${PROJECT_NUMBER}@cloudservices.gserviceaccount.com" ]] -} - -@test "Verifying that Spanner DB was created as part of ${DEPLOYMENT_NAME}" { - run gcloud spanner databases list --instance test-myspannercluster-"${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "spannerdb1" ]] -} - -@test "Verifying that Spanner DB IAM was created as part of ${DEPLOYMENT_NAME}" { - run gcloud spanner databases get-iam-policy spannerdb1 --instance test-myspannercluster-"${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "role: roles/spanner.databaseAdmin" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] - - run gcloud spanner instances list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "test-myspannercluster-${RAND}" ]] -} diff --git a/dm/templates/cloud_spanner/tests/integration/cloud_spanner.yaml b/dm/templates/cloud_spanner/tests/integration/cloud_spanner.yaml deleted file mode 100644 index 81782b83ea3..00000000000 --- a/dm/templates/cloud_spanner/tests/integration/cloud_spanner.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Test of the Cloud Spanner template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: -- path: templates/cloud_spanner/cloud_spanner.py - name: cloud_spanner.py - -resources: - - name: test-myspannercluster-${RAND} - type: cloud_spanner.py - properties: - displayName: "Spanner Cluster 1" - nodeCount: 2 - instanceConfig: nam3 - databases: - - name: "spannerdb1" diff --git a/dm/templates/cloud_spanner/tests/schemas/invalid_additional_options.yaml b/dm/templates/cloud_spanner/tests/schemas/invalid_additional_options.yaml deleted file mode 100644 index 4f26d755b10..00000000000 --- a/dm/templates/cloud_spanner/tests/schemas/invalid_additional_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -displayName: "Spanner Cluster 1" -nodeCount: 2 -instanceConfig: nam3 -foo: bar diff --git a/dm/templates/cloud_spanner/tests/schemas/valid_basic.yaml b/dm/templates/cloud_spanner/tests/schemas/valid_basic.yaml deleted file mode 100644 index feba6ca8c69..00000000000 --- a/dm/templates/cloud_spanner/tests/schemas/valid_basic.yaml +++ /dev/null @@ -1,5 +0,0 @@ -displayName: "Spanner Cluster 1" -nodeCount: 2 -instanceConfig: nam3 -name: foo -project: foo diff --git a/dm/templates/cloud_spanner/tests/schemas/valid_complex.yaml b/dm/templates/cloud_spanner/tests/schemas/valid_complex.yaml deleted file mode 100644 index 7dc0c9de919..00000000000 --- a/dm/templates/cloud_spanner/tests/schemas/valid_complex.yaml +++ /dev/null @@ -1,5 +0,0 @@ -displayName: "Spanner Cluster 1" -nodeCount: 2 -instanceConfig: nam3 -databases: - - name: "spannerdb1" \ No newline at end of file diff --git a/dm/templates/cloud_sql/README.md b/dm/templates/cloud_sql/README.md deleted file mode 100644 index 82b9da2d8a0..00000000000 --- a/dm/templates/cloud_sql/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Cloud SQL - -This template creates a Cloud SQL instance with databases and users. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Enable the [Cloud SQL API](https://cloud.google.com/sql/docs/mysql/admin-api/) -- Enable the [Cloud SQL Admin API](https://cloud.google.com/sql/docs/mysql/admin-api/) -- Grant the [roles/cloudsql.admin](https://cloud.google.com/sql/docs/mysql/project-access-control) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [sqladmin.v1beta4.instance](https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances) -- [sqladmin.v1beta4.database](https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases) -- [sqladmin.v1beta4.user](https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/users) - -### Properties - -See the `properties` section in the schema file(s): - -- [Cloud SQL](cloud_sql.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory: - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment; in this - case, [examples/cloud\_sql.yaml](examples/cloud_sql.yaml): - - ```shell - cp templates/cloud_sql/examples/cloud_sql.yaml my_cloud_sql.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - - ```shell - vim my_cloud_sql.yaml # <== change values to match your GCP setup - ``` - -5. Create your deployment (replace \ with the relevant - deployment name): - - ```shell - gcloud deployment-manager deployments create \ - --config my_cloud_sql.yaml - ``` - - To deploy with CFT: - - ```shell - cft apply my_cloud_sql.yaml - ``` - -6. In case you need to delete your deployment: - - ```shell - gcloud deployment-manager deployments delete - ``` - - To delete deployment with CFT: - - ```shell - cft delete my_cloud_sql.yaml - ``` - -`Notes:` After a Cloud SQL instance is deleted, its name cannot be reused for -up to 7 days. - -## Examples - -- [Cloud SQL](examples/cloud_sql.yaml) -- [Cloud SQL with Read Replica](examples/cloud_sql_read_replica.yaml) -- [Cloud SQL Postgres](examples/cloud_sql_postgres.yaml) -- [Cloud SQL MSSQL Server](examples/cloud_sql_mssql.yaml) -- [Cloud SQL Private Networking](examples/cloud_sql_private_network.yaml) diff --git a/dm/templates/cloud_sql/cloud_sql.py b/dm/templates/cloud_sql/cloud_sql.py deleted file mode 100644 index 452181e5299..00000000000 --- a/dm/templates/cloud_sql/cloud_sql.py +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Cloud SQL Instance with databases and users. """ - -import collections - -DMBundle = collections.namedtuple('DMBundle', 'resource outputs') - - -def set_optional_property(receiver, source, property_name): - """ If set, copies the given property value from one object to another. """ - - if property_name in source: - receiver[property_name] = source[property_name] - - -def get_instance(res_name, project_id, properties): - """ Creates a Cloud SQL instance. """ - - name = res_name - instance_properties = { - 'region': properties['region'], - 'project': project_id, - 'name': name - } - - optional_properties = [ - 'databaseVersion', - 'failoverReplica', - 'instanceType', - 'masterInstanceName', - 'maxDiskSize', - 'onPremisesConfiguration', - 'replicaConfiguration', - 'serverCaCert', - 'serviceAccountEmailAddress', - 'settings', - 'rootPassword', - ] - - for prop in optional_properties: - set_optional_property(instance_properties, properties, prop) - - instance = { - 'name': name, - # https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances - 'type': 'gcp-types/sqladmin-v1beta4:instances', - 'properties': instance_properties - } - - if 'dependsOn' in properties: - instance['metadata'] = {'dependsOn': properties['dependsOn']} - - output_fields = [ - 'name', - 'selfLink', - 'backendType', - ] - - if 'onPremisesConfiguration' not in properties: - output_fields.extend(['gceZone','connectionName','serviceAccountEmailAddress']) - - outputs = [{ - 'name': i, - 'value': '$(ref.{}.{})'.format(name, i) - } for i in output_fields] - - # Regrettably, 'ipAddress' is a special snowflake. 'ipAddresses' is a list - # of objects, and DM doesn't seem to let you extract child properties from - # outputs of imported templates. If we want to use the actual IP address of - # the instantiated database in a template that uses this template, we need - # to navigate to the relevant child value here. - if 'onPremisesConfiguration' not in properties: - outputs += [{ - 'name': 'ipAddress', - 'value': '$(ref.{}.ipAddresses[0].ipAddress)'.format(name), - }] - - return DMBundle(instance, outputs) - - -def get_database(instance_name, project_id, properties, res_name): - """ Creates a Cloud SQL database. """ - - name = properties['name'] - res_name = '{}-{}'.format(res_name, name) - - db_properties = { - 'name': name, - 'project': project_id, - 'instance': instance_name - } - - optional_properties = [ - 'charset', - 'collation', - 'instance', - ] - - for prop in optional_properties: - set_optional_property(db_properties, properties, prop) - - database = { - 'name': res_name, - # https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases - 'type': 'gcp-types/sqladmin-v1beta4:databases', - 'properties': db_properties - } - - outputs = [ - { - 'name': 'name', - 'value': '$(ref.{}.name)'.format(res_name) - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(res_name) - } - ] - - return DMBundle(database, outputs) - - -def get_databases(instance_name, project_id, properties, res_name): - """ Creates Cloud SQL databases for the given instance. """ - - dbs = properties.get('databases') - if dbs: - return [get_database(instance_name, project_id, db, res_name) for db in dbs] - - return [] - - -def get_user(instance_name, project_id, properties, res_name): - """ Creates a Cloud SQL user. """ - - name = properties['name'] - res_name = '{}-user-{}'.format(res_name, name) - if 'host' in properties: - res_name = '{}-{}'.format(res_name, properties['host'].replace('cloudsqlproxy~', 'proxy_').replace('.', '_')) - - user_properties = { - 'name': name, - 'project': project_id, - 'instance': instance_name, - } - - for prop in ['host', 'password']: - set_optional_property(user_properties, properties, prop) - - user = { - 'name': res_name, - # https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/users - 'type': 'gcp-types/sqladmin-v1beta4:users', - 'properties': user_properties - } - - outputs = [{'name': 'name', 'value': res_name}] - - return DMBundle(user, outputs) - - -def get_users(instance_name, project_id, properties, res_name): - """ Creates Cloud SQL users for the given instance. """ - - users = properties.get('users') - if users: - return [get_user(instance_name, project_id, user, res_name) for user in users] - - return [] - - -def create_sequentially(resources): - """ - Sets up the resources' metadata in such a way that the resources are - created sequentially. - """ - - if resources and len(resources) > 1: - previous = resources[0] - for current in resources[1:]: - previous_name = previous['name'] - current['metadata'] = {'dependsOn': [previous_name]} - previous = current - - -def consolidate_outputs(bundles, prefix): - """ - Consolidates values of multiple outputs into one array for the new - output. - """ - - res = {} - outputs = [output for bundle in bundles for output in bundle.outputs] - for output in outputs: - output_name = output['name'] - new_name = prefix + output_name[0].upper() + output_name[1:] + 's' - if not new_name in res: - res[new_name] = {'name': new_name, 'value': []} - res[new_name]['value'].append(output['value']) - - # We sort the output by key to guarantee deterministic results. This makes - # DM's Python3 compatibility checker less grumpy. - return [value for _, value in sorted(res.items())] - - -def get_resource_names_output(resources): - """ - Creates the output dict with the names of all resources to be created. - """ - - names = [resource['name'] for resource in resources] - - return {'name': 'resources', 'value': names} - - -def generate_config(context): - """ Creates the Cloud SQL instance, databases, and user. """ - - properties = context.properties - res_name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - instance = get_instance(res_name, project_id, properties) - instance_name = instance.outputs[0]['value'] # 'name' output - - users = get_users(instance_name, project_id, properties, res_name) - dbs = get_databases(instance_name, project_id, properties, res_name) - - children = [user.resource for user in users] + [db.resource for db in dbs] - create_sequentially(children) - - user_outputs = consolidate_outputs(users, 'user') - db_outputs = consolidate_outputs(dbs, 'database') - - resources = [instance.resource] + children - outputs = [get_resource_names_output(resources)] + instance.outputs + \ - db_outputs + user_outputs - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/cloud_sql/cloud_sql.py.schema b/dm/templates/cloud_sql/cloud_sql.py.schema deleted file mode 100644 index 5acfa62a8a3..00000000000 --- a/dm/templates/cloud_sql/cloud_sql.py.schema +++ /dev/null @@ -1,576 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud SQL - author: Sourced Group Inc. - version: 1.1.1 - description: | - Supports creation of a Cloud SQL instance with database and user resources. - For more information, see https://cloud.google.com/sql/docs/. - -additionalProperties: false - -required: - - region - -properties: - name: - type: string - description: | - The name of the Cloud SQL instance. This does not include the project ID. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the Cloud SQL instance. The - Google apps domain is prefixed if applicable. - databaseVersion: - type: string - description: | - The database engine type and version. - The databaseVersion field can not be changed after instance creation. - MySQL Second Generation instances: MYSQL_8_0, MYSQL_5_7 (default) or MYSQL_5_6. - PostgreSQL instances: POSTGRES_9_6 (default), or POSTGRES_10, or POSTGRES_11 Beta, or POSTGRES_12. - SQL Server instances: SQLSERVER_2017_STANDARD (default), SQLSERVER_2017_ENTERPRISE, SQLSERVER_2017_EXPRESS, or SQLSERVER_2017_WEB. - enum: - - MYSQL_5_6 - - MYSQL_5_7 - - MYSQL_8_0 - - POSTGRES_9_6 - - POSTGRES_10 - - POSTGRES_11 - - POSTGRES_12 - - SQLSERVER_2017_STANDARD - - SQLSERVER_2017_ENTERPRISE - - SQLSERVER_2017_EXPRESS - - SQLSERVER_2017_WEB - failoverReplica: - type: object - additionalProperties: false - description: | - The name and status of the failover replica. Applicable only to Second - Generation instances. - required: - - name - properties: - name: - type: string - description: | - The name of the failover replica. If specified at instance creation, - a failover replica is created for the instance. The name does not - include the project ID. Applicable only to Second Generation - instances. - instanceType: - type: string - description: | - The instance type. Can be one of the following: - CLOUD_SQL_INSTANCE - a Cloud SQL instance that is not replicating from a - master - ON_PREMISES_INSTANCE - an instance running on the customer's premises - READ_REPLICA_INSTANCE - a Cloud SQL instance configured as a read-replica - enum: - - CLOUD_SQL_INSTANCE - - ON_PREMISES_INSTANCE - - READ_REPLICA_INSTANCE - masterInstanceName: - type: string - description: | - The name of the instance to act as master in the replication setup. - maxDiskSize: - type: number - description: The maximum disk size of the instance in bytes. - onPremisesConfiguration: - type: object - additionalProperties: false - description: | - Configuration specific to on-premises instances. - requires: - - hostPort - - kind - properties: - hostPort: - type: string - description: | - The host and port of the on-premises instance in the host:port - format. - kind: - type: string - const: "sql#onPremisesConfiguration" - description: | - This is always sql#onPremisesConfiguration. - replicaConfiguration: - type: object - additionalProperties: false - description: | - Configuration specific to failover replicas and read replicas. - properties: - failoverTarget: - type: boolean - description: | - Defines whether the replica is the failover target. If True, the - replica is designated as a failover replica. In case the master - instance fails, the replica instance will be made the new master - instance. Only one replica can be specified as a failover target, - and that replica must be in a zone different from that of the master - instance. - mysqlReplicaConfiguration: - type: object - additionalProperties: false - description: | - MySQL-specific configuration when replicating from an MySQL - on-premises master. Replication configuration information such as the - username, password, certificates, and keys, are not stored in the - instance metadata. The configuration information is used only to set - up the replication connection, and is stored by MySQL in a file named - master.info in the data directory. - properties: - caCertificate: - type: string - description: | - The PEM representation of the trusted CA's x509 certificate. - clientCertificate: - type: string - description: | - The PEM representation of the slave's x509 certificate. - clientKey: - type: string - description: | - The PEM representation of the slave's private key. The - corresponding public key is encoded in the client's certificate. - connectRetryInterval: - type: number - description: | - The number of seconds to wait between connect retries. MySQL's - default is 60 seconds. - dumpFilePath: - type: string - description: | - The path to the SQL dump file in Google Cloud Storage from which - the slave instance is to be created. The URI is in the - gs://bucketName/fileName form. Compressed gzip files (.gz) are - also supported. Dumps should have the binlog coordinates from - which replication should begin. This can be accomplished by - setting --master-data to 1 when using mysqldump. - masterHeartbeatPeriod: - type: number - description: | - The interval between replication heartbeats (in milliseconds). - password: - type: string - description: | - The password for the replication connection. - sslCipher: - type: string - description: | - The list of permissible ciphers to use for SSL encryption. - username: - type: string - description: | - The username for the replication connection. - verifyServerCertificate: - type: boolean - description: | - Defines whether or not to check the master's Common Name value in - the certificate that the master sends during the SSL handshake. - serverCaCert: - type: object - description: SSL configuration. - serviceAccountEmailAddress: - type: string - description: | - The service account email address assigned to the instance. This property is applicable only - to Second Generation instances. - rootPassword: - type: string - description: MSSQL root password - settings: - type: object - additionalProperties: false - description: User settings. - required: - - tier - properties: - activationPolicy: - type: string - description: | - Defines when the instance is activated; applicable only when the - instance state is RUNNABLE. Valid values: - ALWAYS: The instance is on, and remains so even in the absence of - connection requests. - NEVER: The instance is off; it is not activated, even if a - connection request arrives. - ON_DEMAND: The instance responds to incoming requests, and turns - itself off when not in use. Instances with PER_USE pricing turn off - after 15 minutes of inactivity. Instances with PER_PACKAGE pricing - turn off after 12 hours of inactivity. For First Generation - instances only. - enum: - - ALWAYS - - NEVER - - ON_DEMAND - authorizedGaeApplications: - type: array - description: | - App Engine app IDs that can access the instance. For First Generation - instances only. - items: - type: string - availabilityType: - type: string - description: | - The availability type (PostgreSQL instances only). Potential values: - ZONAL: The instance serves data from only one zone. Outages in that - zone affect data accessibility. - REGIONAL: The instance can serve data from more than one zone in a - region (it is highly available). - enum: - - ZONAL - - REGIONAL - backupConfiguration: - type: object - additionalProperties: false - description: The daily backup configuration for the instance. - properties: - binaryLogEnabled: - type: boolean - description: | - Defines whether binary log is enabled. If backup configuration is - disabled, binary log must be disabled as well. - enabled: - type: boolean - description: Defines whether this configuration is enabled. - replicationLogArchivingEnabled: - type: boolean - description: Reserved for future use. - startTime: - type: string - description: | - The start time for the daily backup configuration in UTC timezone - in the 24 hour format (HH:MM). - crashSafeReplicationEnabled: - type: boolean - description: | - Defines whether database flags for crash-safe replication are - enabled. Applicable to First Generation instances. Configuration - specific to read replica instances. - dataDiskSizeGb: - type: number - description: | - The size of the data disk, in GB. The data disk size minimum is 10GB. - Not used for First Generation instances. - dataDiskType: - type: string - default: PD_SSD - description: | - The type of the data disk. Not used for First Generation instances. - enum: - - PD_SSD - - PD_HDD - databaseFlags: - type: array - description: | - Database flags passed to the instance at startup. - items: - type: object - additionalProperties: false - properties: - name: - type: string - description: | - The name of the flag. These flags are passed at instance - startup, and they include both server options and system - variables for MySQL. Flags should be specified with - underscores, not hyphens. For more information, see - Configuring Database Flags in the Cloud SQL documentation. - value: - type: string - description: | - The flag value. Booleans must be set to "on" for True - and to "off" for False. This field must be omitted if the flag - does not take a value. - databaseReplicationEnabled: - type: boolean - description: | - Indicates whether replication is enabled or not. Configuration - specific to read replica instances. Writable. - ipConfiguration: - type: object - additionalProperties: false - description: | - Settings for IP Management. This allows to enable or disable the - instance IP and to define which external networks can connect to the - instance. The IPv4 address cannot be disabled for Second Generation - instances. - properties: - authorizedNetworks: - type: array - description: | - The list of external networks that are allowed to connect to the - instance using its IP. In CIDR notation, also known as 'slash' - notation (e.g., 192.168.100.0/24). Writable. - items: - type: object - additionalProperties: false - properties: - expirationTime: - type: string - description: | - The time when the access control entry expires in the RFC - 3339 format; for example, 2012-11-15T16:19:00.094Z. - name: - type: string - description: | - An optional label to identify the entry. - value: - type: string - description: | - The whitelisted value for the access control list. For - example, to grant access to a client from an external IP - (IPv4 or IPv6) address or subnet, use that address or - subnet here. - ipv4Enabled: - type: boolean - description: | - Defines wether the instance should be assigned an IP address. - privateNetwork: - type: string - description: | - The resource link for the VPC network from which the Cloud SQL - instance is accessible for private IP. For example, - /projects/myProject/global/networks/default. The value can be - updated but it cannot be removed after it has been set. - requireSsl: - type: boolean - description: | - Defines whether SSL connections over IP must be enforced. - locationPreference: - type: object - additionalProperties: false - description: | - Location preference settings. This allows the instance to be - located as near as possible to either an App Engine app or Compute - Engine zone for better performance. App Engine co-location is only - applicable to First Generation instances. - properties: - followGaeApplication: - type: string - description: | - The App Engine application to follow. The application must be in - the same region as the Cloud SQL instance. - zone: - type: string - description: | - The preferred Compute Engine zone (e.g., us-central1-a, - us-central1-b, etc.). - maintenanceWindow: - type: object - additionalProperties: false - description: | - The maintenance window for the instance. Specifies when the instance - can be restarted for maintenance purposes. Not used for First - Generation instances. - properties: - day: - type: number - description: The day of the week (1-7, starting Monday). - hour: - type: integer - description: The hour of the day (0 to 23). - updateTrack: - type: string - description: | - The maintenance timing: canary (Earlier) or stable (Later). - pricingPlan: - type: string - description: | - The pricing plan for the instance: PER_USE or PACKAGE. Only PER_USE - is supported for Second Generation instances. - enum: - - PER_USE - - PACKAGE - replicationType: - type: string - description: | - The type of replication the instance uses: ASYNCHRONOUS or SYNCHRONOUS. - enum: - - ASYNCHRONOUS - - SYNCHRONOUS - settingsVersion: - type: number - description: | - The version of the instance settings. This is a required field for - the update method to make sure that concurrent updates are handled - properly. During update, use the most recent settingsVersion value - for the instance and do not try to update that value. - storageAutoResize: - type: boolean - default: true - description: | - Defines whether the storage size can be increased automatically. - Not used for First Generation instances. - storageAutoResizeLimit: - type: number - default: 0 - description: | - The maximum size to which the storage capacity can be automatically - increased. The default value is 0, which specifies that there is no - limit. Not used for First Generation instances. - tier: - type: string - description: | - The tier (or machine type) for the instance. For example, - db-n1-standard-1 (MySQL instances) or db-custom-1-3840 (PostgreSQL - instances). For MySQL instances, determines whether the instance is - First or Second Generation. - userLabels: - type: object - description: | - User-provided labels - a dictionary where each label is a single - key-value pair. - region: - type: string - description: | - The geographical region. Defaults to us-central or us-central1 depending - on the instance type (First Generation or Second Generation/PostgreSQL). - For a complete list of valid values, see Instance Locations. The region - cannot be changed after instance creation. - See https://cloud.google.com/sql/docs/mysql/locations - enum: - - northamerica-northeast1 - - us-central - - us-central1 - - us-east1 - - us-east4 - - us-west1 - - us-west2 - - southamerica-east1 - - europe-north1 - - europe-west1 - - europe-west2 - - europe-west3 - - europe-west4 - - europe-west6 - - asia-east1 - - asia-east2 - - asia-northeast1 - - asia-northeast2 - - asia-south1 - - asia-southeast1 - - australia-southeast1 - databases: - type: array - description: SQL Databases to create in the new instance. - required: - - name - items: - type: object - additionalProperties: false - properties: - name: - type: string - description: The database name. - charset: - type: string - default: utf8 - description: The character set to use for the database. - collation: - type: string - description: The collation to use for the database. - users: - type: array - description: Cloud SQL users to create in the new instance. - items: - type: object - additionalProperties: false - required: - - name - properties: - name: - type: string - description: The name of the user in the Cloud SQL instance. - host: - type: string - description: | - The name of the host from which the user can connect. - The host name cannot be updated after insertion. - password: - type: string - description: The user password. - dependsOn: - type: array - description: | - The list of the resources that must be created before this instance can - be created. Because Cloud SQL resources must be created sequentially, - this property can be used to postpone the instance creation. For example: - dependsOn: - - resource-name-1 - - resource-name-2 - or if it's necessary to wait for another instance of cloud_sql template - to finish when, e.g. building a read replica: - dependsOn: $(ref.master-instance-of-cloud-sql.resources) - items: - type: string - description: The resource name. - -outputs: - name: - type: string - description: The resource name. - selfLink: - type: string - description: | - The URL (SelfLink) of the Cloud SQL instance resource. - gceZone: - type: string - description: | - The Compute Engine zone the instance is currently serving from. - This value could be different from the zone that was specified when - the instance was created if the instance has failed over to its - secondary zone. - connectionName: - type: string - description: | - The connection name of the Cloud SQL instance (used in connection - strings). - backendType: - type: string - description: Database generation. - ipAddress: - type: string - description: | - The first IP address assigned to the instance. - userNames: - type: array - description: The names of the created users. - databaseNames: - type: array - description: The names of the created databases. - databaseSelfLinks: - type: array - description: | - The URLs (SelfLinks) of the Cloud SQL database resources. - resources: - type: array - description: | - Names of the resources the template creates. Because Cloud SQL - usually requires resources to be created sequentially, this output - can be used as synchronization context. - -documentation: - - templates/cloud_sql/README.md - -examples: - - templates/cloud_sql/examples/cloud_sql.yaml - - templates/cloud_sql/examples/cloud_sql_read_replica.yaml diff --git a/dm/templates/cloud_sql/examples/cloud_sql.yaml b/dm/templates/cloud_sql/examples/cloud_sql.yaml deleted file mode 100644 index 678b50d9380..00000000000 --- a/dm/templates/cloud_sql/examples/cloud_sql.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of the Cloud SQL template usage. - -imports: - - path: templates/cloud_sql/cloud_sql.py - name: cloud_sql.py - -resources: - - name: cloud-sql-instance - type: cloud_sql.py - properties: - region: us-central1 - settings: - tier: db-n1-standard-1 - backupConfiguration: - startTime: '02:00' - enabled: true - binaryLogEnabled: true - locationPreference: - zone: us-central1-c - users: - - name: user-1 - host: 10.1.1.1 - - name: user-2 - host: 10.1.1.2 - databases: - - name: db-1 - - name: db-2 diff --git a/dm/templates/cloud_sql/examples/cloud_sql_mssql.yaml b/dm/templates/cloud_sql/examples/cloud_sql_mssql.yaml deleted file mode 100644 index d0fe8c405be..00000000000 --- a/dm/templates/cloud_sql/examples/cloud_sql_mssql.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Example of the Cloud SQL template usage. -# Note that MSSQL Server instance uses rootPassword. - -imports: - - path: templates/cloud_sql/cloud_sql.py - name: cloud_sql.py - -resources: - - name: cloud-sql-mssql-instance - type: cloud_sql.py - properties: - region: us-central1 - databaseVersion: SQLSERVER_2017_STANDARD - instanceType: CLOUD_SQL_INSTANCE - rootPassword: changeit - settings: - tier: db-custom-2-3840 - backupConfiguration: - startTime: '02:00' - enabled: true - locationPreference: - zone: us-central1-a - users: - - name: user-1 - host: 10.1.1.1 - - name: user-2 - host: 10.1.1.2 - databases: - - name: db-1 - - name: db-2 diff --git a/dm/templates/cloud_sql/examples/cloud_sql_postgres.yaml b/dm/templates/cloud_sql/examples/cloud_sql_postgres.yaml deleted file mode 100644 index ffac1269726..00000000000 --- a/dm/templates/cloud_sql/examples/cloud_sql_postgres.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# Example of the Cloud SQL template usage. -# Note that Postgres instances use different instance types then MySQL instances - -imports: - - path: templates/cloud_sql/cloud_sql.py - name: cloud_sql.py - -resources: - - name: cloud-sql-postgres-instance - type: cloud_sql.py - properties: - region: us-central1 - databaseVersion: POSTGRES_9_6 - instanceType: CLOUD_SQL_INSTANCE - settings: - tier: db-f1-micro - backupConfiguration: - startTime: '02:00' - enabled: true - locationPreference: - zone: us-central1-c - users: - - name: user-1 - password: dummy2 - - name: user-2 - password: dummy3 - databases: - - name: db-1 - - name: db-2 diff --git a/dm/templates/cloud_sql/examples/cloud_sql_private_network.yaml b/dm/templates/cloud_sql/examples/cloud_sql_private_network.yaml deleted file mode 100644 index 372c35010d9..00000000000 --- a/dm/templates/cloud_sql/examples/cloud_sql_private_network.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Example of the Cloud SQL template usage. -# Replace 'your-vpc-network-name' with the name of the vpc -# in which the Cloud SQL instance will be deployed. - -imports: - - path: templates/cloud_sql/cloud_sql.py - name: cloud_sql.py - -resources: - - name: cloud-sql-instance - type: cloud_sql.py - properties: - region: us-central1 - settings: - tier: db-n1-standard-1 - backupConfiguration: - startTime: '02:00' - enabled: true - binaryLogEnabled: true - locationPreference: - zone: us-central1-c - ipConfiguration: - ipv4Enabled: false - privateNetwork: 'your-vpc-network-name' - users: - - name: user-1 - host: 10.1.1.1 - - name: user-2 - host: 10.1.1.2 - databases: - - name: db-1 - - name: db-2 diff --git a/dm/templates/cloud_sql/examples/cloud_sql_read_replica.yaml b/dm/templates/cloud_sql/examples/cloud_sql_read_replica.yaml deleted file mode 100644 index bc0ce55f4d0..00000000000 --- a/dm/templates/cloud_sql/examples/cloud_sql_read_replica.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Example of the Cloud SQL template usage. -# -# This example creates a Cloud SQL instance with a read replica. - -imports: - - path: templates/cloud_sql/cloud_sql.py - name: cloud_sql.py - -resources: - - name: cloud-sql-master-instance - type: cloud_sql.py - properties: - region: us-central1 - settings: - tier: db-n1-standard-1 - backupConfiguration: - startTime: '02:00' - enabled: true - binaryLogEnabled: true - locationPreference: - zone: us-central1-c - users: - - name: user-1 - host: 10.1.1.1 - databases: - - name: db-1 - - - name: cloud-sql-read-replica-instance - type: cloud_sql.py - properties: - region: us-central1 - instanceType: READ_REPLICA_INSTANCE - settings: - tier: db-n1-standard-1 - locationPreference: - zone: us-central1-a - masterInstanceName: $(ref.cloud-sql-master-instance.name) - # Wait until all the resources required by the master instance had been - # created. - dependsOn: - - $(ref.cloud-sql-master-instance.resources) diff --git a/dm/templates/cloud_sql/tests/integration/cloud_sql.bats b/dm/templates/cloud_sql/tests/integration/cloud_sql.bats deleted file mode 100755 index 3bf1c6e7cd2..00000000000 --- a/dm/templates/cloud_sql/tests/integration/cloud_sql.bats +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export MASTER_INSTANCE_NAME="cloud-sql-master-instance-${RAND}" - export VERSION="MYSQL_5_6" - export MASTER_INSTANCE_TIER="db-n1-standard-1" - export MASTER_ZONE="us-central1-c" - export REPLICA_ZONE="us-central1-a" - export REGION="us-central1" - export REPLICA_INSTANCE_NAME="cloud-sql-replica-instance-${RAND}" - export REPLICA_INSTANCE_TIER="db-n1-standard-2" - export REPLICA_INSTANCE_TYPE="READ_REPLICA_INSTANCE" - export BACKUP_START_TIME="02:00" - export BACKUP_ENABLED="true" - export BACKUP_BL_ENABLED="true" - export USER1_NAME="user-1" - export USER1_HOST="10.1.1.1" - export USER2_NAME="user-2" - export USER2_HOST="10.1.1.2" - export DB1="db-1" - export DB2="db-2" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that both instances were created" { - run gcloud sql instances list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MASTER_INSTANCE_NAME}" ]] - [[ "$output" =~ "${REPLICA_INSTANCE_NAME}" ]] -} - -@test "Verifying master instance" { - run gcloud sql instances describe ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${VERSION}" ]] - [[ "$output" =~ "${MASTER_INSTANCE_TIER}" ]] - [[ "$output" =~ "instanceType: CLOUD_SQL_INSTANCE" ]] - [[ "$output" =~ "region: ${REGION}" ]] - [[ "$output" =~ "${MASTER_ZONE}" ]] -} - -@test "Verifying master replica list" { - run gcloud sql instances describe ${MASTER_INSTANCE_NAME} \ - --format="yaml(replicaNames)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${REPLICA_INSTANCE_NAME}" ]] -} - -@test "Verifying master database list" { - run gcloud sql databases list --instance ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${DB1}" ]] - [[ "$output" =~ "${DB2}" ]] -} - -@test "Verifying master user list" { - run gcloud sql users list --instance ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${USER1_NAME}" ]] - [[ "$output" =~ "${USER2_NAME}" ]] - [[ "$output" =~ "${USER1_HOST}" ]] - [[ "$output" =~ "${USER2_HOST}" ]] -} - -@test "Verifying master backup settings" { - run gcloud sql instances describe ${MASTER_INSTANCE_NAME} \ - --format="yaml(settings.backupConfiguration)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "binaryLogEnabled: ${BACKUP_BL_ENABLED}" ]] - [[ "$output" =~ "enabled: ${BACKUP_ENABLED}" ]] - [[ "$output" =~ "startTime: ${BACKUP_START_TIME}" ]] -} - -@test "Verifying replica instance" { - run gcloud sql instances describe ${REPLICA_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${VERSION}" ]] - [[ "$output" =~ "${REPLICA_INSTANCE_TIER}" ]] - [[ "$output" =~ "${REPLICA_INSTANCE_TYPE}" ]] - [[ "$output" =~ "region: ${REGION}" ]] - [[ "$output" =~ "${REPLICA_ZONE}" ]] - [[ "$output" =~ "${MASTER_INSTANCE_NAME}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/cloud_sql/tests/integration/cloud_sql.yaml b/dm/templates/cloud_sql/tests/integration/cloud_sql.yaml deleted file mode 100644 index 52f5c04d1ca..00000000000 --- a/dm/templates/cloud_sql/tests/integration/cloud_sql.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Test of the Cloud SQL template. - -imports: - - path: templates/cloud_sql/cloud_sql.py - name: cloud_sql.py - -resources: - - name: ${MASTER_INSTANCE_NAME} - type: cloud_sql.py - properties: - databaseVersion: ${VERSION} - region: ${REGION} - settings: - tier: ${MASTER_INSTANCE_TIER} - backupConfiguration: - startTime: ${BACKUP_START_TIME} - enabled: ${BACKUP_ENABLED} - binaryLogEnabled: ${BACKUP_BL_ENABLED} - locationPreference: - zone: ${MASTER_ZONE} - users: - - name: ${USER1_NAME} - host: ${USER1_HOST} - - name: ${USER2_NAME} - host: ${USER2_HOST} - databases: - - name: ${DB1} - - name: ${DB2} - - - name: ${REPLICA_INSTANCE_NAME} - type: cloud_sql.py - properties: - databaseVersion: ${VERSION} - region: ${REGION} - instanceType: ${REPLICA_INSTANCE_TYPE} - settings: - tier: ${REPLICA_INSTANCE_TIER} - locationPreference: - zone: ${REPLICA_ZONE} - masterInstanceName: $(ref.${MASTER_INSTANCE_NAME}.name) - dependsOn: $(ref.${MASTER_INSTANCE_NAME}.resources) diff --git a/dm/templates/cloud_sql/tests/integration/cloud_sql_mssql.bats b/dm/templates/cloud_sql/tests/integration/cloud_sql_mssql.bats deleted file mode 100644 index fb7292a1bc0..00000000000 --- a/dm/templates/cloud_sql/tests/integration/cloud_sql_mssql.bats +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export MASTER_INSTANCE_NAME="cloud-sql-mssql-instance-${RAND}" - export VERSION="SQLSERVER_2017_STANDARD" - export MASTER_INSTANCE_TIER="db-custom-2-3840" - export MASTER_ZONE="us-central1-c" - export REGION="us-central1" - export BACKUP_START_TIME="02:00" - export BACKUP_ENABLED="true" - export BACKUP_BL_ENABLED="true" - export ROOT_PASSWORD="changeit" - export USER1_NAME="user-1" - export USER1_HOST="10.1.1.1" - export USER2_NAME="user-2" - export USER2_HOST="10.1.1.2" - export DB1="db-1" - export DB2="db-2" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that both instances were created" { - run gcloud sql instances list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MASTER_INSTANCE_NAME}" ]] -} - -@test "Verifying master instance" { - run gcloud sql instances describe ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${VERSION}" ]] - [[ "$output" =~ "${MASTER_INSTANCE_TIER}" ]] - [[ "$output" =~ "instanceType: CLOUD_SQL_INSTANCE" ]] - [[ "$output" =~ "region: ${REGION}" ]] - [[ "$output" =~ "${MASTER_ZONE}" ]] -} - -@test "Verifying master database list" { - run gcloud sql databases list --instance ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${DB1}" ]] - [[ "$output" =~ "${DB2}" ]] -} - -@test "Verifying master user list" { - run gcloud sql users list --instance ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${USER1_NAME}" ]] - [[ "$output" =~ "${USER2_NAME}" ]] -} - -@test "Verifying master backup settings" { - run gcloud sql instances describe ${MASTER_INSTANCE_NAME} \ - --format="yaml(settings.backupConfiguration)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "enabled: ${BACKUP_ENABLED}" ]] - [[ "$output" =~ "startTime: ${BACKUP_START_TIME}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/cloud_sql/tests/integration/cloud_sql_mssql.yaml b/dm/templates/cloud_sql/tests/integration/cloud_sql_mssql.yaml deleted file mode 100644 index 2e06ce7a3fa..00000000000 --- a/dm/templates/cloud_sql/tests/integration/cloud_sql_mssql.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Test of the Cloud SQL template. - -imports: - - path: templates/cloud_sql/cloud_sql.py - name: cloud_sql.py - -resources: - - name: ${MASTER_INSTANCE_NAME} - type: cloud_sql.py - properties: - databaseVersion: ${VERSION} - region: ${REGION} - rootPassword: ${ROOT_PASSWORD} - settings: - tier: ${MASTER_INSTANCE_TIER} - backupConfiguration: - startTime: ${BACKUP_START_TIME} - enabled: ${BACKUP_ENABLED} - locationPreference: - zone: ${MASTER_ZONE} - users: - - name: ${USER1_NAME} - host: ${USER1_HOST} - - name: ${USER2_NAME} - host: ${USER2_HOST} - databases: - - name: ${DB1} - - name: ${DB2} diff --git a/dm/templates/cloud_sql/tests/integration/cloud_sql_postgres.bats b/dm/templates/cloud_sql/tests/integration/cloud_sql_postgres.bats deleted file mode 100755 index cec0140378e..00000000000 --- a/dm/templates/cloud_sql/tests/integration/cloud_sql_postgres.bats +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export MASTER_INSTANCE_NAME="cloud-sql-master-instance-${RAND}" - export VERSION="POSTGRES_9_6" - export MASTER_INSTANCE_TIER="db-f1-micro" - export MASTER_ZONE="us-central1-c" - export REPLICA_ZONE="us-central1-a" - export REGION="us-central1" - export REPLICA_INSTANCE_NAME="cloud-sql-replica-instance-${RAND}" - export REPLICA_INSTANCE_TIER="db-f1-micro" - export REPLICA_INSTANCE_TYPE="READ_REPLICA_INSTANCE" - export BACKUP_START_TIME="02:00" - export BACKUP_ENABLED="true" - export BACKUP_BL_ENABLED="true" - export USER1_NAME="user-1" - export USER1_HOST="10.1.1.1" - export USER1_PASS="dummy1" - export USER2_NAME="user-2" - export USER2_HOST="10.1.1.2" - export USER2_PASS="dummy2" - export DB1="db-1" - export DB2="db-2" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that both instances were created" { - run gcloud sql instances list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MASTER_INSTANCE_NAME}" ]] - [[ "$output" =~ "${REPLICA_INSTANCE_NAME}" ]] -} - -@test "Verifying master instance" { - run gcloud sql instances describe ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${VERSION}" ]] - [[ "$output" =~ "${MASTER_INSTANCE_TIER}" ]] - [[ "$output" =~ "instanceType: CLOUD_SQL_INSTANCE" ]] - [[ "$output" =~ "region: ${REGION}" ]] - [[ "$output" =~ "${MASTER_ZONE}" ]] -} - -@test "Verifying master replica list" { - run gcloud sql instances describe ${MASTER_INSTANCE_NAME} \ - --format="yaml(replicaNames)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${REPLICA_INSTANCE_NAME}" ]] -} - -@test "Verifying master database list" { - run gcloud sql databases list --instance ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${DB1}" ]] - [[ "$output" =~ "${DB2}" ]] -} - -@test "Verifying master user list" { - run gcloud sql users list --instance ${MASTER_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${USER1_NAME}" ]] - [[ "$output" =~ "${USER2_NAME}" ]] -} - -@test "Verifying master backup settings" { - run gcloud sql instances describe ${MASTER_INSTANCE_NAME} \ - --format="yaml(settings.backupConfiguration)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "enabled: ${BACKUP_ENABLED}" ]] - [[ "$output" =~ "startTime: ${BACKUP_START_TIME}" ]] -} - -@test "Verifying replica instance" { - run gcloud sql instances describe ${REPLICA_INSTANCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${VERSION}" ]] - [[ "$output" =~ "${REPLICA_INSTANCE_TIER}" ]] - [[ "$output" =~ "${REPLICA_INSTANCE_TYPE}" ]] - [[ "$output" =~ "region: ${REGION}" ]] - [[ "$output" =~ "${REPLICA_ZONE}" ]] - [[ "$output" =~ "${MASTER_INSTANCE_NAME}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/cloud_sql/tests/integration/cloud_sql_postgres.yaml b/dm/templates/cloud_sql/tests/integration/cloud_sql_postgres.yaml deleted file mode 100644 index b719513c915..00000000000 --- a/dm/templates/cloud_sql/tests/integration/cloud_sql_postgres.yaml +++ /dev/null @@ -1,41 +0,0 @@ - -# Test of the Cloud SQL template. - -imports: - - path: templates/cloud_sql/cloud_sql.py - name: cloud_sql.py - -resources: - - name: ${MASTER_INSTANCE_NAME} - type: cloud_sql.py - properties: - databaseVersion: ${VERSION} - region: ${REGION} - settings: - tier: ${MASTER_INSTANCE_TIER} - backupConfiguration: - startTime: ${BACKUP_START_TIME} - enabled: ${BACKUP_ENABLED} - locationPreference: - zone: ${MASTER_ZONE} - users: - - name: ${USER1_NAME} - password: ${USER1_PASS} - - name: ${USER2_NAME} - password: ${USER2_PASS} - databases: - - name: ${DB1} - - name: ${DB2} - - - name: ${REPLICA_INSTANCE_NAME} - type: cloud_sql.py - properties: - databaseVersion: ${VERSION} - region: ${REGION} - instanceType: ${REPLICA_INSTANCE_TYPE} - settings: - tier: ${REPLICA_INSTANCE_TIER} - locationPreference: - zone: ${REPLICA_ZONE} - masterInstanceName: $(ref.${MASTER_INSTANCE_NAME}.name) - dependsOn: $(ref.${MASTER_INSTANCE_NAME}.resources) diff --git a/dm/templates/cloud_sql/tests/schemas/invalid_additional_options.yaml b/dm/templates/cloud_sql/tests/schemas/invalid_additional_options.yaml deleted file mode 100644 index 7c8d53098d7..00000000000 --- a/dm/templates/cloud_sql/tests/schemas/invalid_additional_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -region: us-central1 -settings: - tier: db-n1-standard-1 -foo: bar diff --git a/dm/templates/cloud_sql/tests/schemas/invalid_additional_options_nested.yaml b/dm/templates/cloud_sql/tests/schemas/invalid_additional_options_nested.yaml deleted file mode 100644 index 25f56ace31c..00000000000 --- a/dm/templates/cloud_sql/tests/schemas/invalid_additional_options_nested.yaml +++ /dev/null @@ -1,4 +0,0 @@ -region: us-central1 -settings: - tier: db-n1-standard-1 - foo: bar diff --git a/dm/templates/cloud_sql/tests/schemas/invalid_missing_region.yaml b/dm/templates/cloud_sql/tests/schemas/invalid_missing_region.yaml deleted file mode 100644 index f169277a46f..00000000000 --- a/dm/templates/cloud_sql/tests/schemas/invalid_missing_region.yaml +++ /dev/null @@ -1,2 +0,0 @@ -settings: - tier: db-n1-standard-1 diff --git a/dm/templates/cloud_sql/tests/schemas/invalid_missing_tier.yaml b/dm/templates/cloud_sql/tests/schemas/invalid_missing_tier.yaml deleted file mode 100644 index aa3e8a6672c..00000000000 --- a/dm/templates/cloud_sql/tests/schemas/invalid_missing_tier.yaml +++ /dev/null @@ -1 +0,0 @@ -region: us-central1 diff --git a/dm/templates/cloud_sql/tests/schemas/valid_basic.yaml b/dm/templates/cloud_sql/tests/schemas/valid_basic.yaml deleted file mode 100644 index 5693db2b0fb..00000000000 --- a/dm/templates/cloud_sql/tests/schemas/valid_basic.yaml +++ /dev/null @@ -1,5 +0,0 @@ -region: us-central1 -settings: - tier: db-n1-standard-1 -name: foo -project: foo diff --git a/dm/templates/cloud_sql/tests/schemas/valid_complex.yaml b/dm/templates/cloud_sql/tests/schemas/valid_complex.yaml deleted file mode 100644 index f71571802a5..00000000000 --- a/dm/templates/cloud_sql/tests/schemas/valid_complex.yaml +++ /dev/null @@ -1,17 +0,0 @@ -region: us-central1 -settings: - tier: db-n1-standard-1 - backupConfiguration: - startTime: '02:00' - enabled: true - binaryLogEnabled: true - locationPreference: - zone: us-central1-c -users: - - name: user-1 - host: 10.1.1.1 - - name: user-2 - host: 10.1.1.2 -databases: - - name: db-1 - - name: db-2 diff --git a/dm/templates/cloud_tasks/README.md b/dm/templates/cloud_tasks/README.md deleted file mode 100644 index a87572075c3..00000000000 --- a/dm/templates/cloud_tasks/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# Cloud Tasks - -This set of two templates creates a Cloud Task and a Cloud Task Queue. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Install gcloud **beta** components: - - ```(shell) - gcloud components update - gcloud components install beta - ``` - -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Enable the [Cloud Tasks API](https://console.cloud.google.com/apis/library/cloudtasks.googleapis.com) - from the Google Cloud console -- Grant the [appengine.applications.get](https://cloud.google.com/appengine/docs/admin-api/access-control) - IAM permission to the Deployment Manager service account -- NOTE: Cloud Tasks requires an App Engine application. To run the integration tests - please ensure that an App Engine application exists. An App Engine app can be created using the [App Engine Template](../app_engine) or by running the [App Engine Template integration tests](../app_engine/tests/integration) - -## Deployment - -### Resources - -- [projects.locations.queues](https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues) -- [projects.locations.queues.tasks](https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues.tasks) -- [Task Queues](https://cloud.google.com/appengine/docs/standard/python/taskqueue/) -- [CloudTasks v2beta3 Descriptor URL](https://cloudtasks.googleapis.com/$discovery/rest?version=v2beta3) - -### Properties - -See the `properties` section in the schema file(s): - -- [CloudTasks Queue schema](queue.py.schema) -- [CloudTasks Task schema](task.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - - ```(shell) - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory - - ```(shell) - cd dm - ``` - -3. Create a custom type-provider named `cloudtasks` - - ```(shell) - cp templates/cloud_tasks/examples/create_typeprovider.sh . - chmod u+x create_typeprovider.sh - ./create_typeprovider.sh - ``` - -4. Copy the example DM config to be used as a model for the deployment. In this case, [examples/cloud\_tasks\_queue.yaml](examples/cloud_tasks_queue.yaml) - - ```(shell) - cp templates/cloud_tasks/examples/cloud_tasks_queue.yaml my_cloud_tasks_queue.yaml - ``` - -5. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - - ```(shell) - vim my_cloud_tasks_queue.yaml - ``` - -6. Create your deployment as described below, replacing `` - with your with your own deployment name - - ```(shell) - gcloud beta deployment-manager deployments create \ - --config my_cloud_tasks_queue.yaml - ``` - -7. In case you need to delete your deployment - - ```(shell) - gcloud deployment-manager deployments delete - ``` - -8. To delete the custom `cloudtasks` type-provider - - ```(shell) - cp templates/cloud_tasks/examples/delete_typeprovider.sh . - chmod u+x delete_typeprovider.sh - ./delete_typeprovider.sh - ``` - -## Examples - -- [CloudTasks Queue](examples/cloud_tasks_queue.yaml) -- [CloudTasks Task](examples/cloud_tasks_task.yaml) diff --git a/dm/templates/cloud_tasks/examples/cloud_tasks_queue.yaml b/dm/templates/cloud_tasks/examples/cloud_tasks_queue.yaml deleted file mode 100644 index 43d80d816b9..00000000000 --- a/dm/templates/cloud_tasks/examples/cloud_tasks_queue.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Example of the Cloud Task Queue (AppEngine) template usage. -# -# For details, refer to https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues. - -imports: - - path: templates/cloud_tasks/queue.py - name: queue.py - -resources: - - name: mysupertestqueue - type: queue.py - properties: - name: mysupertestqueue - rateLimits: - maxDispatchesPerSecond: 10 - maxConcurrentDispatches: 5 - retryConfig: - maxAttempts: 2 - maxRetryDuration: 60s - minBackoff: 10s - maxBackoff: 120s - appEngineHttpQueue: - appEngineRoutingOverride: - service: default diff --git a/dm/templates/cloud_tasks/examples/cloud_tasks_task.yaml b/dm/templates/cloud_tasks/examples/cloud_tasks_task.yaml deleted file mode 100644 index 57188c86ad4..00000000000 --- a/dm/templates/cloud_tasks/examples/cloud_tasks_task.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Example of the Cloud Task template usage. -# -# For details, refer to https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues.tasks. - -imports: - - path: templates/cloud_tasks/task.py - name: task.py - -resources: - - name: mysupertesttask - type: task.py - properties: - queueId: mysupertestqueue - task: - appEngineHttpRequest: - httpMethod: POST - appEngineRouting: - service: default - relativeUri: / - responseView: FULL diff --git a/dm/templates/cloud_tasks/examples/create_typeprovider.sh b/dm/templates/cloud_tasks/examples/create_typeprovider.sh deleted file mode 100644 index 64f0c822846..00000000000 --- a/dm/templates/cloud_tasks/examples/create_typeprovider.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -e -set -o pipefail - -cat <<- EOF > ./options.yaml -options: - inputMappings: - - fieldName: Authorization - location: HEADER - value: > - $.concat("Bearer ", $.googleOauth2AccessToken()) -EOF - -# Create the type-provider. -gcloud beta deployment-manager type-providers create cloudtasks \ - --api-options-file=options.yaml \ - --descriptor-url="https://cloudtasks.googleapis.com/\$discovery/rest?version=v2beta3" - -exit 0 diff --git a/dm/templates/cloud_tasks/examples/delete_typeprovider.sh b/dm/templates/cloud_tasks/examples/delete_typeprovider.sh deleted file mode 100644 index 447b8029f21..00000000000 --- a/dm/templates/cloud_tasks/examples/delete_typeprovider.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -e -set -o pipefail - -# Delete the type provider. -gcloud beta deployment-manager type-providers delete cloudtasks -q - -exit 0 diff --git a/dm/templates/cloud_tasks/queue.py b/dm/templates/cloud_tasks/queue.py deleted file mode 100644 index 30799a2b332..00000000000 --- a/dm/templates/cloud_tasks/queue.py +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Cloud Task queue. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('projectId', context.env['project']) - location = properties['location'] - parent = 'projects/{}/locations/{}'.format(project_id, location) - - queue = { - 'name': context.env['name'], - 'type': '{}/cloudtasks:projects.locations.queues'.format(project_id), - 'properties': { - 'name': '{}/queues/{}'.format(parent, name), - 'parent': parent, - 'appEngineHttpQueue': properties['appEngineHttpQueue'] - } - } - - optional_properties = ['rateLimits', 'retryConfig'] - - for prop in optional_properties: - if prop in properties: - queue['properties'][prop] = properties[prop] - - resources.append(queue) - - outputs = [ - { - 'name': 'name', - 'value': '$(ref.{}.name)'.format(context.env['name']) - }, - { - 'name': 'state', - 'value': '$(ref.{}.state)'.format(context.env['name']) - } - ] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/cloud_tasks/queue.py.schema b/dm/templates/cloud_tasks/queue.py.schema deleted file mode 100644 index cfd848c6630..00000000000 --- a/dm/templates/cloud_tasks/queue.py.schema +++ /dev/null @@ -1,226 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud Tasks Queue - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of a Cloud Tasks Queue resource. - - For more information on this resource, see - https://cloud.google.com/tasks/docs/dual-overview - -additionalProperties: false - -required: - - name - -properties: - name: - type: string - description: | - The queue name. Can contain letters ([A-Za-z]), numbers ([0-9]), or - hyphens (-). The maximum length is 100 characters. - maximum: 100 - projectId: - type: string - description: | - The project ID of the project where the queue resides. Can contain - letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods - (.). - location: - type: string - default: us-east1 - description: | - The canonical ID for the queue's location. The list of available - locations can be obtained by calling locations.list. - For more information, see - https://cloud.google.com/about/locations/. - rateLimits: - type: object - additionalProperties: false - description: | - Rate limits for task dispatches. Controls the total rate of dispatches - from a queue (i.e., all traffic dispatched from the queue, - regardless of whether the dispatch is from a first attempt or a retry). - properties: - maxDispatchesPerSecond: - type: number - description: | - The maximum rate at which tasks are dispatched from the queue. If - unspecified when the queue is created, Cloud Tasks picks the - default. For App Engine queues, the maximum allowed value is 500. - This field has the same meaning as rate in queue.yaml/xml. See: - https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate. - maximum: 500 - maxConcurrentDispatches: - type: number - description: | - The maximum number of concurrent tasks that Cloud Tasks allows to be - dispatched from the queue. After the threshold has been reached, - Cloud Tasks stops dispatching tasks until the number of concurrent - requests decreases. If unspecified when the queue is created, Cloud - Tasks picks the default. This field has the same meaning as - max_concurrent_requests in queue.yaml/xml. For more info, see - https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests. - maximum: 5000 - retryConfig: - type: object - additionalProperties: false - description: | - Settings that determine the retry behavior. For tasks created using - Cloud Tasks: the queue-level retry settings apply to all tasks in the - queue that were created using Cloud Tasks. The retry settings cannot be - defined for individual tasks. For tasks created using the App Engine SDK: - the queue-level retry settings apply to all tasks in the queue that do - not have retry settings explicitly set pere task, and were created by - the App Engine SDK. See App Engine documentation: - https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks. - properties: - maxAttempts: - type: number - description: | - The number of attempts per task. Cloud Tasks attempts the task - maxAttempts times (that is, if the first attempt fails, then there - are maxAttempts - 1 retries). Must be >= -1. - If unspecified when the queue is created, Cloud Tasks picks the - default. -1 indicates unlimited attempts. - This field has the same meaning as task_retry_limit in queue.yaml/xml. - minimum: -1 - maxRetryDuration: - type: string - description: | - If positive, specifies the time limit for retrying a failed task, - measured from when the task was first attempted. Once - maxRetryDuration time has passed and the task has been attempted - maxAttempts times, no further attempts are made, and the task is - deleted. - If zero, the task age is unlimited. - If unspecified when the queue is created, Cloud Tasks picks the - default. maxRetryDuration is truncated to the nearest second. - This field has the same meaning as taskAgeLimit in queue.yaml/xml. - Expressed in seconds with up to nine fractional digits, terminated - by 's'. For example, "3.5s". - minBackoff: - type: string - description: | - A task is scheduled for retry between minBackoff and maxBackoff - duration after it fails, if the queue's RetryConfig specifies that - the task should be retried. If unspecified when the queue is created, - Cloud Tasks picks the default. minBackoff is truncated to the - nearest second. This field has the same meaning as - min_backoff_seconds in queue.yaml/xml. - https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters - Expressed in seconds with up to nine fractional digits, terminated - by 's'. For example, "3.5s". - maxBackoff: - type: string - description: | - A task is scheduled for retry between minBackoff and maxBackoff - duration after it fails, if the queue's RetryConfig specifies that - the task should be retried. If unspecified when the queue is created, - Cloud Tasks picks the default. maxBackoff is truncated to the - nearest second. This field has the same meaning as - max_backoff_seconds in queue.yaml/xml. - https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters - Expressed in seconds with up to nine fractional digits, terminated - by 's'. For example, "3.5s". - maxDoublings: - type: number - description: | - The time between retries will double maxDoublings times. A task's - retry interval starts at minBackoff, then doubles maxDoublings - times, then increases linearly, and finally retries retries at - intervals of maxBackoff up to maxAttempts times. - For example, if minBackoff is 10s, maxBackoff is 300s, and - maxDoublings is 3, then the a task will first be retried in 10s. - The retry interval will double three times, and then increase - linearly by 2^3 * 10s. Finally, the task will retry at intervals of - maxBackoff until the task has been attempted maxAttempts times. - Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, - 300s, 300s, .... If unspecified when the queue is created, Cloud - Tasks will pick the default. - appEngineHttpQueue: - type: object - additionalProperties: false - description: The App Engine HTTP queue. - properties: - appEngineRoutingOverride: - type: object - additionalProperties: false - description: | - Overrides for the task-level appEngineRouting. If set, - appEngineRoutingOverride is used for all tasks in the queue, - regardless of the task-level appEngineRouting settings. - For more info, see: - https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed - https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed - https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues.tasks#AppEngineHttpRequest.FIELDS.app_engine_routing - properties: - service: - type: string - description: | - The app service. By default, the task is sent to the service that - is the default service when the task is attempted. For some - queues or tasks, which were created using the App Engine Task - Queue API, the host is not parsable into service, version, and - instance. For example, some tasks that were created using the - App Engine SDK use a custom domain name. Custom domains are not - parsed by Cloud Tasks. If the host is not parsable, the service, - version, and instance are an empty string. - version: - type: string - description: | - The app version. By default, the task is sent to the version that - is the default version when the task is attempted. For some - queues or tasks, which were created using the App Engine Task - Queue API, the host is not parsable into service, version, and - instance. For example, some tasks that were created using the - App Engine SDK use a custom domain name. Custom domains are not - parsed by Cloud Tasks. If the host is not parsable, the service, - version, and instance are an empty string. - instance: - type: string - description: | - The app instance. By default, the task is sent to an instance - that is available when the task is attempted. Requests can only - be sent to a specific instance if manual scaling is used in App - Engine Standard. App Engine Flex does not support instances. - For more information, see - App Engine Standard request routing: - https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed - and - App Engine Flex request routing: - https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed - -outputs: - name: - type: string - description: The queue name. - state: - type: string - description: The state of the queue. - enum: - - STATE_UNSPECIFIED - - RUNNING - - PAUSED - - DISABLED - -documentation: - - templates/cloud_tasks/README.md - -examples: - - templates/cloud_tasks/examples/cloud_tasks_task.yaml - - templates/cloud_tasks/examples/cloud_tasks_queue.yaml diff --git a/dm/templates/cloud_tasks/task.py b/dm/templates/cloud_tasks/task.py deleted file mode 100644 index cddbe4c6885..00000000000 --- a/dm/templates/cloud_tasks/task.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Cloud Task resource. """ - - -def generate_queue_name(context): - """ Create queue name based on input. """ - - if ('projects/' in context.properties['queueId'] or - '$(ref.' in context.properties['queueId']): - # Full queue name or reference - queue_name = context.properties['queueId'] - else: - # Format the queue name - project_id = context.properties.get('projectId', context.env['project']) - queue_name = 'projects/{}/locations/{}/queues/{}'.format( - project_id, - context.properties['location'], - context.properties['queueId'] - ) - - return queue_name - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - properties = context.properties - name = context.env['name'] - project_id = properties.get('projectId', context.env['project']) - parent = generate_queue_name(context) - - task = { - 'name': - context.env['name'], - 'type': - '{}/cloudtasks:projects.locations.queues.tasks'.format(project_id), - 'properties': - { - 'parent': parent, - 'task': - { - 'name': - '{}/tasks/{}'.format(parent, - name), - 'appEngineHttpRequest': - properties['task']['appEngineHttpRequest'] - } - } - } - - optional_properties = ['scheduleTime'] - - for prop in optional_properties: - if prop in properties['task']: - task['properties']['task'][prop] = properties['task'][prop] - - resources.append(task) - - return { - 'resources': resources, - 'outputs': [ - { - 'name':'name', - 'value': '$(ref.{}.name)'.format(context.env['name']) - }, - { - 'name':'createTime', - 'value': '$(ref.{}.createTime)'.format(context.env['name']) - }, - { - 'name':'view', - 'value': '$(ref.{}.view)'.format(context.env['name']) - }, - { - 'name':'scheduleTime', - 'value': '$(ref.{}.scheduleTime)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/cloud_tasks/task.py.schema b/dm/templates/cloud_tasks/task.py.schema deleted file mode 100644 index 230062d15a7..00000000000 --- a/dm/templates/cloud_tasks/task.py.schema +++ /dev/null @@ -1,194 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud Tasks - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of a Cloud Task resource. - - For more information on this resource, see - https://cloud.google.com/tasks/docs/dual-overview. - -required: - - task - - queueId - -properties: - queueId: - type: string - description: | - The name of the queue under which the task is created. - This can be one of the following: - - The full name of the queue which follows the format - projects//locations//queues/ or - - Can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). - The maximum length is 100 characters. - projectId: - type: string - description: | - The project ID if the project where the task resides. Can contain - letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or - periods (.). - location: - type: string - default: us-east1 - description: | - The canonical ID for the queue's location. The list of available - locations can be obtained by calling locations.list. - For more information, see - https://cloud.google.com/about/locations/. - If `queueId` is the full name of the queue, this field is ignored. - task: - type: object - required: - - appEngineHttpRequest - description: | - The task to add. Task names have the following format: - projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID. - You can optionally specify a task name. If a name is not specified, the - system generates a random unique task ID, which will be set in the task - returned in the response. If scheduleTime is not set, or is in - the past, Cloud Tasks sets it to the current time. - properties: - name: - type: string - description: | - The task name (optional). Can contain letters ([A-Za-z]), numbers - ([0-9]), or hyphens (-). The maximum length is 100 characters. - maximum: 500 - scheduleTime: - type: string - description: | - The time when the task is scheduled to be attempted. For App Engine - queues, this is when the task is to be attempted or retried. - scheduleTime is truncated to the nearest microsecond. - Expressed in the RFC3339 UTC "Zulu" format, accurate to nanoseconds. - For example, "2014-10-02T15:01:23.045123456Z". - appEngineHttpRequest: - type: object - additionalProperties: false - description: | - Defines the HTTP request that is sent to an App Engine app when the - task is dispatched. This can only be used for tasks in a queue with - appEngineHttpQueue set. The task is delivered to the App Engine app - that belongs to the same project as the queue. For information on - how requests are routed and on how routing is affected by dispatch - files, see - https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed - https://cloud.google.com/appengine/docs/python/config/dispatchref - properties: - httpMethod: - type: string - description: The HTTP method used to execute the task. - enum: - - HTTP_METHOD_UNSPECIFIED - - POST - - GET - - HEAD - - PUT - - DELETE - appEngineRouting: - type: object - additionalProperties: false - description: Task-level settings for App Engine routing. - properties: - service: - type: string - description: | - The app service. By default, the task is sent to the service - that is the default service when the task is attempted. For - some queues or tasks, which were created using the App Engine - Task Queue API, the host is not parsable into service, - version, and instance. For example, some tasks that were - created using the App Engine SDK use a custom domain name. - Custom domains are not parsed by Cloud Tasks. If the host is - not parsable, the service, version, and instance are an empty - string. - version: - type: string - description: | - The app version. By default, the task is sent to the version - that is the default version when the task is attempted. For - some queues or tasks, which were created using the App Engine - Task Queue API, the host is not parsable into service, - version, and instance. For example, some tasks that were - created using the App Engine SDK use a custom domain name. - Custom domains are not parsed by Cloud Tasks. If the host is - not parsable, the service, version, and instance are an - empty string. - instance: - type: string - description: | - The app instance. By default, the task is sent to an instance - that is available when the task is attempted. Requests can - only be sent to a specific instance if manual scaling is used - in App Engine Standard. App Engine Flex does not support - instances. For more information, see App Engine Standard - request routing and App Engine Flex request routing. - relativeUri: - type: string - description: | - The relative URI. Must begin with "/" and must be a valid HTTP - relative URI. It can contain a path and query string arguments. - If the relative URI is empty, the root path "/" is used. No - spaces are allowed, and the maximum length is 2083 characters. - maximum: 2083 - headers: - type: object - description: | - HTTP Request headers. This map contains the header field names - and values. Headers can be set when the task is created. - Repeated headers are not supported but a header value can contain - commas. For more details, see - https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues.tasks#AppEngineHttpRequest - A list of key-value pairs. For example, { "name": "wrench", - "mass": "1.3kg", "count": "3" }. - body: - type: string - description: | - The HTTP request body. A request body is allowed only if the HTTP - method is POST or PUT. It is an error to set a body on a task - with an incompatible HttpMethod. A base64-encoded string. - -outputs: - name: - type: string - description: The name of the task resource. - createTime: - type: string - description: | - The time when the task was created. createTime is truncated to the - nearest second. - view: - type: string - description: The subset of the Task data. - enum: - - VIEW_UNSPECIFIED - - BASIC - - FULL - scheduleTime: - type: string - description: | - The time when the task is scheduled to be attempted. For App Engine - queues, this is when the task will be attempted or retried. - `schedule_time` will be truncated to the nearest microsecond. - -documentation: - - templates/cloud_tasks/README.md - -examples: - - templates/cloud_tasks/examples/cloud_tasks_task.yaml - - templates/cloud_tasks/examples/cloud_tasks_queues.yaml diff --git a/dm/templates/cloud_tasks/tests/integration/cloud_tasks.bats b/dm/templates/cloud_tasks/tests/integration/cloud_tasks.bats deleted file mode 100644 index eebed014046..00000000000 --- a/dm/templates/cloud_tasks/tests/integration/cloud_tasks.bats +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - export QUEUE_NAME="test-q-${RAND}" - export TASK_NAME="test-task-${RAND}" - export DISPATCHES_PER_SECOND="10.0" - export CONCURRENT_DISPATCHES="5" - export MAX_ATTEMPTS="100" - export MAX_RETRY_DURATION="60s" - export MAX_BACKOFF="3600s" - export MIN_BACKOFF="0.100s" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud beta deployment-manager deployments create "${DEPLOYMENT_NAME}"\ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -sleep 2 - -@test "Verify if queue ${QUEUE_NAME} was created " { - run gcloud beta tasks queues list --format="value(name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${QUEUE_NAME}" ]] -} - -@test "Verify if queue ${QUEUE_NAME} is RUNNING" { - run gcloud beta tasks queues describe ${QUEUE_NAME} \ - --format="value(state)" - [[ "$status" -eq 0 ]] - [[ "$output" -eq "RUNNING" ]] -} - -@test "Verify if maxDispatchesPerSecond is ${DISPATCHES_PER_SECOND}" { - run gcloud beta tasks queues describe ${QUEUE_NAME} \ - --format="value(rateLimits.maxDispatchesPerSecond)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${DISPATCHES_PER_SECOND}" ]] -} - -@test "Verify if maxConcurrentDispatches is ${CONCURRENT_DISPATCHES}" { - run gcloud beta tasks queues describe ${QUEUE_NAME} \ - --format="value(rateLimits.maxConcurrentDispatches)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CONCURRENT_DISPATCHES}" ]] -} - -@test "Verify if retryConfig maxAttempts is set to ${MAX_ATTEMPTS}" { - run gcloud beta tasks queues describe ${QUEUE_NAME} \ - --format="value(retryConfig.maxAttempts)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MAX_ATTEMPTS}" ]] -} - -@test "Verify if retryConfig maxBackoff is set to ${MAX_BACKOFF}" { - run gcloud beta tasks queues describe ${QUEUE_NAME} \ - --format="value(retryConfig.maxBackoff)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MAX_BACKOFF}" ]] -} - -@test "Verify if retryConfig minBackoff is set to ${MIN_BACKOFF}" { - run gcloud beta tasks queues describe ${QUEUE_NAME} \ - --format="value(retryConfig.minBackoff)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MIN_BACKOFF}" ]] -} - -@test "Verify if the task ${TASK_NAME} was created " { - run gcloud beta tasks describe ${TASK_NAME} \ - --queue ${QUEUE_NAME} - [[ "$status" -eq 0 ]] - [[ "$output" =~ "createTime:" ]] - [[ "$output" =~ "${TASK_NAME}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - run gcloud beta deployment-manager deployments delete "${DEPLOYMENT_NAME}"\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/cloud_tasks/tests/integration/cloud_tasks.yaml b/dm/templates/cloud_tasks/tests/integration/cloud_tasks.yaml deleted file mode 100644 index cd24765436a..00000000000 --- a/dm/templates/cloud_tasks/tests/integration/cloud_tasks.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# Test of Cloud Tasks template. - -imports: - - path: templates/cloud_tasks/queue.py - name: queue.py - - path: templates/cloud_tasks/task.py - name: task.py - -resources: - - name: ${QUEUE_NAME} - type: queue.py - properties: - name: ${QUEUE_NAME} - rateLimits: - maxDispatchesPerSecond: ${DISPATCHES_PER_SECOND} - maxConcurrentDispatches: ${CONCURRENT_DISPATCHES} - retryConfig: - maxAttempts: ${MAX_ATTEMPTS} - maxRetryDuration: ${MAX_RETRY_DURATION} - minBackoff: ${MIN_BACKOFF} - maxBackoff: ${MAX_BACKOFF} - appEngineHttpQueue: - appEngineRoutingOverride: - service: "default" - - - name: ${TASK_NAME} - type: task.py - properties: - queueId: $(ref.${QUEUE_NAME}.name) - task: - appEngineHttpRequest: - httpMethod: POST - appEngineRouting: - service: default - relativeUri: / - responseView: FULL diff --git a/dm/templates/cloudbuild/README.md b/dm/templates/cloudbuild/README.md deleted file mode 100644 index 3b0b2d2b42a..00000000000 --- a/dm/templates/cloudbuild/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# Cloud Build - -This template creates a Google Cloud Build. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Enable the following in the [APIs & Services](https://console.cloud.google.com/apis/dashboard) section of the Google Cloud console: - - [Cloud Build API](https://console.cloud.google.com/apis/library/cloudbuild.googleapis.com) - - [Cloud Source Repositories API](https://console.cloud.google.com/apis/library/sourcerepo.googleapis.com) - - [Container Registry API](https://console.cloud.google.com/apis/library/containerregistry.googleapis.com) -- Grant to the Cloud Build service account the IAM roles necessary for the steps in your build - -## Deployment - -### Resources - -- [projects.builds](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds) -- [cloud builders](https://cloud.google.com/cloud-build/docs/cloud-builders) -- [cloud builders community](https://github.com/GoogleCloudPlatform/cloud-builders-community) - -### Properties - -See the `properties` section in the schema file(s): - -- [CloudBuild build schema](cloudbuild.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment, in this case [examples/cloudbuild.yaml](examples/cloudbuild.yaml) - - ```shell - cp templates/cloudbuild/examples/cloudbuild.yaml my_cloudbuild.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - - ```shell - vim my_cloudbuild.yaml # <== change values to match your GCP setup - ``` - -5. Create your deployment as described below, replacing `` - with your with your own deployment name - - ```shell - gcloud deployment-manager deployments create \ - --config my_cloudbuild.yaml - ``` - -6. In case you need to delete your deployment: - - ```shell - gcloud deployment-manager deployments delete - ``` - -## Examples - -- [Cloud Build](examples/cloudbuild.yaml) -- [Cloud Build with StorageSource](examples/cloudbuild_storagesource.yaml) -- [Cloud Build with RepoSource](examples/cloudbuild_reposource.yaml) diff --git a/dm/templates/cloudbuild/cloudbuild.py b/dm/templates/cloudbuild/cloudbuild.py deleted file mode 100644 index e7d79e4a75d..00000000000 --- a/dm/templates/cloudbuild/cloudbuild.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Cloud Build resource. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - outputs = [] - properties = context.properties - project_id = properties.get('project', context.env['project']) - name = context.env['name'] - build_steps = properties['steps'] - cloud_build = { - 'name': name, - # https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds/create - 'type': 'gcp-types/cloudbuild-v1:cloudbuild.projects.builds.create', - 'properties': { - 'projectId': project_id, - 'steps': build_steps - } - } - - optional_properties = [ - 'source', - 'timeout', - 'images', - 'artifacts', - 'logsBucket', - 'options', - 'substitutions', - 'tags', - 'secrets' - ] - - for prop in optional_properties: - if prop in properties: - cloud_build['properties'][prop] = properties[prop] - - resources.append(cloud_build) - - # Output variables - output_props = [ - 'id', - 'status', - 'results', - 'createTime', - 'startTime', - 'finishTime', - 'logUrl', - 'sourceProvenance' - ] - - for outprop in output_props: - output_obj = {} - output_obj['name'] = outprop - output_obj['value'] = '$(ref.{}.{})'.format(name, outprop) - outputs.append(output_obj) - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/cloudbuild/cloudbuild.py.schema b/dm/templates/cloudbuild/cloudbuild.py.schema deleted file mode 100644 index cfbe5cad269..00000000000 --- a/dm/templates/cloudbuild/cloudbuild.py.schema +++ /dev/null @@ -1,480 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud Build - author: Sourced Group Inc. - version: 1.1.0 - description: | - Creates a Cloud Build resource. - - For more information on this resource, see - https://cloud.google.com/cloud-build/docs/ - - APIs endpoints used by this template: - - gcp-types/cloudbuild-v1:cloudbuild.projects.builds.create => - https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds/create - -additionalProperties: false - -required: - - steps - -properties: - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - source: - description: The location of the source files to build. - additionalProperties: false - oneOf: - - required: - - storageSource - - required: - - repoSource - properties: - storageSource: - $ref: "#/definitions/storageSource" - repoSource: - $ref: "#/definitions/repoSource" - steps: - type: array - uniqItems: true - description: The list of steps in the build pipeline. - items: - type: object - additionalProperties: false - description: A step in the build pipeline. - required: - - name - properties: - name: - type: string - description: | - The name of the container image that will run this particular build step. - - If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host - will attempt to pull the image first, using the builder service account's credentials if necessary. - - The Docker daemon's cache will already have the latest versions of all of the officially supported - build steps (https://github.com/GoogleCloudPlatform/cloud-builders). The Docker daemon will also have - cached many of the layers for some popular images, like "ubuntu", "debian", but they will be refreshed - at the time you attempt to use them. - - If you built an image in a previous build step, it will be stored in the host's Docker daemon's cache - and is available to use as the name for a later build step. - env: - type: array - uniqItems: true - description: | - The list of environment variable definitions to be used when - running a step. The elements are in the "KEY=VALUE" form, - wherein the environment variable "KEY" is given the value "VALUE". - items: - type: string - args: - type: array - description: | - The list of build arguments to be passed to the step when - it is started. If the image used to run the step's container has an - entry point, the array elements are used as arguments to that entry - point. If the image does not define an entry point, the first - element in the array is used as the entry point, and the remainder - are used as arguments. - items: - type: string - dir: - type: string - description: | - The working directory to use when running the step's container. - If the value is a relative path, it is relative to the build's - working directory. If this value is an absolute path, it may be - outside the build's working directory. In this case, the contents - of the path may not be persisted across the build step executions, - unless a volume for that path is specified. - If the build specifies a RepoSource with dir and a step with a dir, - which specifies an absolute path, the RepoSource dir is ignored - for the step's execution. - id: - type: string - description: | - The unique identifier for the build step. Used in waitFor to - reference this build step as a dependency. - waitFor: - type: array - uniqItems: true - description: | - The ID(s) of the step(s) that the build step depends on. - This build step will not start until all the build steps in waitFor - have completed successfully. If waitFor is empty, this build step - will start when all the previous build steps in the Build.Steps - list have completed successfully. - items: - type: string - entrypoint: - type: string - description: | - The entry point to be used instead of the build step image's - default entry point. If not set, the image's default entry - point is used. - secretEnv: - type: array - uniqItems: true - description: | - The list of environment variables which are encrypted using the - Cloud Key Management Service crypto key. These values must be - specified in the build's Secret. - items: - type: string - volumes: - type: array - uniqItems: true - description: The list of volumes to mount into the build step. - items: - type: object - additionalProperties: false - properties: - name: - type: string - description: | - The name of the volume to mount. Volume names must be unique - per build step, and must be valid names for Docker volumes. - Each named volume must be used by at least two build steps. - path: - type: string - description: | - The path to mount the volume at. Paths must be absolute. - They cannot conflict with other volume paths on the same - build step or with certain reserved volume paths. - timeout: - type: string - description: | - The time limit for executing the build step. If not defined, the - step has no time limit, and is allowed to continue to run - either until it completes or until the build itself times out. - Defined in seconds with up to nine fractional digits, - terminated by 's'; for example 3.5s. - timeout: - type: string - description: | - The time limit for executing the build step. If not defined, the - step has no time limit, and is allowed to continue to run - either until it completes or until the build itself times out. - Defined in seconds with up to nine fractional digits, - terminated by 's'; for example 3.5s. - images: - type: array - uniqItems: true - description: | - The list of images to be pushed upon successful completion of all build - steps. The images are pushed using the Builder service account's - credentials. The digests of the pushed images are stored in the Build - resource's results field. If any of the images fail to be pushed, the - build status is marked as FAILURE. - items: - type: string - artifacts: - type: object - additionalProperties: false - description: | - Artifacts produced by the build, to be uploaded upon successful - completion of all build steps. - properties: - images: - type: array - uniqItems: true - description: | - The list of images to be pushed upon successful completion of all - build steps. The images are pushed using the Builder serviceaccount's - credentials. The digests of the pushed images are stored in the Build - resource's results field. If any of the images fail to be pushed, the - build status is marked as FAILURE. - items: - type: string - objects: - type: object - additionalProperties: false - description: | - The list of objects to be uploaded to Cloud Storage upon successful - completion of all build steps. Files in the workspace matching - the specified paths globs are uploaded using the Builder - serviceaccount's credentials. - properties: - location: - type: string - description: | - The Cloud Storage bucket, with an optional object path, in - the "gs://bucket/path/to/somewhere/" form. Files in the - workspace matching any pattern specified uder that path are - uploaded to Cloud Storage with this location as a prefix. - paths: - type: array - uniqItems: true - description: | - Path globs used to match files in the build's workspace. - items: - type: string - logsBucket: - type: string - description: | - The Google Cloud Storage bucket where logs are written. - Log file names are in the ${logsBucket}/log-${build_id}.txt format. - options: - type: object - additionalProperties: false - description: Special options for the build. - properties: - sourceProvenanceHash: - type: array - items: - type: string - enum: - - NONE - - SHA256 - - MD5 - requestedVerifyOption: - type: string - description: The requested verifiability option. - enum: - - NOT_VERIFIED - - VERIFIED - machineType: - type: string - description: | - The type of the Compute Engine machine to run the build on. - enum: - - UNSPECIFIED - - N1_HIGHCPU_8 - - N1_HIGHCPU_32 - diskSizeGb: - type: string - description: | - The requested disk size for the VM that runs the build. This is - NOT "disk free"; some of the space is used by the operating - system and build utilities. - substitutionOption: - type: string - description: | - The option to specify behavior when there is an error in the - substitution checks. - enum: - - MUST_MATCH - - ALLOW_LOOSE - logStreamingOption: - type: string - description: | - The option to define the build's behavior when streaming logs to - Google Cloud Storage. - enum: - - STREAM_DEFAULT - - STREAM_ON - - STREAM_OFF - workerPool: - type: string - description: | - Option to specify a WorkerPool for the build. User specifies the pool with the format - "[WORKERPOOL_PROJECT_ID]/[WORKERPOOL_NAME]". This is an experimental field. - logging: - type: string - description: | - The option to specify the logging mode, which determines where the - logs are stored. - enum: - - LOGGING_UNSPECIFIED - - LEGACY - - GCS_ONLY - point is used. - env: - type: array - uniqItems: true - description: | - A list of global environment variable definitions that will exist for all build steps in this build. - If a variable is defined in both globally and in a build step, the variable will use the build step value. - - The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE". - items: - type: string - secretEnv: - type: array - uniqItems: true - description: | - A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. - These values must be specified in the build's Secret. These variables will be available to - all build steps in this build. - items: - type: string - volumes: - type: array - uniqItems: true - description: | - Global list of volumes to mount for ALL build steps - - Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, - volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes - defined a build step. - - Using a global volume in a build with only one step is not valid as it is indicative of a build request - with an incorrect configuration. - items: - type: object - additionalProperties: false - properties: - name: - type: string - description: | - The name of the volume to mount. Volume names must be unique - per build step, and must be valid names for Docker volumes. - Each named volume must be used by at least two build steps. - path: - type: string - description: | - The path to mount the volume at. Paths must be absolute. - They cannot conflict with other volume paths on the same - build step or with certain reserved volume paths. - substitutions: - type: object - description: | - Substitution data for the Build resource in the key-value format. - Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - tags: - type: array - uniqItems: true - description: | - Tags for annotation of a Build. These are not docker tags. - items: - type: string - secrets: - type: object - additionalProperties: false - description: Secrets to decrypt using Cloud Key Management Service. - properties: - secret: - type: object - additionalProperties: false - properties: - kmsKeyName: - type: string - description: | - The Cloud KMS key name to use for decrypting the environment - variables. - secretEnv: - type: object - description: | - The map of the environment variable name to its encrypted value. - -definitions: - storageSource: - type: object - description: | - The location of the source in an archive file on Google Cloud Storage. - required: - - bucket - - object - properties: - bucket: - type: string - description: The Google Cloud Storage bucket containing the source. - object: - type: string - description: | - The Google Cloud Storage object containing the source. Must be a - gzipped archive file (*.tar.gz). - to build. - generation: - type: string - description: | - The Google Cloud Storage generation for the object. If omitted, the - latest generation is used. - repoSource: - type: object - description: | - The location of the source in the Google Cloud Source repository. - oneOf: - - required: - - branchName - - required: - - tagName - - required: - - commitSha - properties: - projectId: - type: string - description: | - The ID of the project that owns the Cloud Source repository. - repoName: - type: string - description: | - The name of the Google Cloud Source repository. If omitted, the - name "default" is assumed. - dir: - type: string - description: | - The directory to run the build in (relative to the source root). - If a step's dir is specified as an absolute path, the value is - ignored for that step's execution. - branchName: - $ref: "#/definitions/branchName" - tagName: - $ref: "#/definitions/tagName" - commitSha: - $ref: "#/definitions/commitSha" - branchName: - type: string - description: The name of the branch to build. - tagName: - type: string - description: The name of the tag to build. - commitSha: - type: string - description: The explicit commit SHA to build. - -outputs: - id: - type: string - description: Build Unique identifier. - status: - type: string - description: The build status. - results: - type: object - description: The build results. - createTime: - type: string - description: | - The time the build was requested, in the RFC3339 UTC "Zulu" format. - startTime: - type: string - description: | - The time the build execution started, in the RFC3339 UTC "Zulu" format. - finishTime: - type: string - description: | - The time the build finished, in the RFC3339 UTC "Zulu" format. - logUrl: - type: string - description: The URL to the build logs in the Google Cloud console. - sourceProvenance: - type: object - description: | - Fixed identifier to used to describe the original source, or verify that some source was used for this build. - -documentation: - - templates/cloudbuild/README.md - -examples: - - templates/cloudbuild/examples/cloudbuild.yaml - - templates/cloudbuild/examples/cloudbuild_storagesource.yaml - - templates/cloudbuild/examples/cloudbuild_reposource.yaml diff --git a/dm/templates/cloudbuild/examples/cloudbuild.yaml b/dm/templates/cloudbuild/examples/cloudbuild.yaml deleted file mode 100644 index 66f4497ffc7..00000000000 --- a/dm/templates/cloudbuild/examples/cloudbuild.yaml +++ /dev/null @@ -1,43 +0,0 @@ -# Example of the Cloud Build template usage. -# -# In this example, a sample NodeJS "Hello World" app container is built and pushed to -# the container registry. -# -# The Build steps are as follows: -# Step1: Clone the cloud-builders GitHub repository -# Step2: Build the Docker image from Dockerfile in the npm/examples/hello_world dir -# Step3: Tag the image as gcr.io/$PROJECT_ID/${_IMAGE_NAME} -# Step4: Push the image to the container registry gcr.io/$PROJECT_ID/${_IMAGE_NAME} - -imports: - - path: templates/cloudbuild/cloudbuild.py - name: build.py - -resources: - - name: mycloudbuild - type: build.py - properties: - steps: - # Step 1 - - name: 'gcr.io/cloud-builders/git' - args: - - clone - - https://github.com/GoogleCloudPlatform/cloud-builders - # Step 2 - - name: 'gcr.io/cloud-builders/docker' - args: - - build - # Step 3 - - '--tag=gcr.io/$PROJECT_ID/${_IMAGE_NAME}' - - '.' - dir: cloud-builders/npm/examples/hello_world - # Step 4 - - name: 'gcr.io/cloud-builders/docker' - args: - - push - - 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}' - substitutions: - _IMAGE_NAME: npm-helloworld - images: - - 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}' - timeout: '200s' diff --git a/dm/templates/cloudbuild/examples/cloudbuild_reposource.yaml b/dm/templates/cloudbuild/examples/cloudbuild_reposource.yaml deleted file mode 100644 index da00094dae5..00000000000 --- a/dm/templates/cloudbuild/examples/cloudbuild_reposource.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# Example of the Cloud Build template usage. -# -# In this example, a Build is launched for the following Github repo. -# https://github.com/GoogleCloudBuild/gcbapp-example -# -# Pre-requisites steps for this build example: -# Step1: Login to github and fork the following github repo -# https://github.com/GoogleCloudBuild/gcbapp-example -# Step2: Create a Cloud Source repo, name your repo -# After the repo is created successfully do the following -# - Select "Automatically mirror from Github/Bitbucket" option -# - Select "Hosting Service", Choose "Github" from dropdown then Connect -# - Follow steps to Authenticate your Github repo -# - Once authenticated, select the repo (from Step1) from the list -# - Select, "I consent .." checkbox then Click "connect" -# Step3: Replace with the repo name created in Step2 -# - -imports: - - path: templates/cloudbuild/cloudbuild.py - name: build.py - -resources: - - name: mycloudbuild - type: build.py - properties: - source: - repoSource: - repoName: '' - branchName: 'master' - steps: - - name: 'gcr.io/cloud-builders/docker' - args: - - 'build' - - '--tag=gcr.io/$PROJECT_ID/${_IMAGE_NAME}:latest' - - '.' - - name: 'gcr.io/cloud-builders/docker' - args: - - 'push' - - 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}' - substitutions: - _IMAGE_NAME: '' - images: - - 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}' - timeout: '600s' diff --git a/dm/templates/cloudbuild/examples/cloudbuild_storagesource.yaml b/dm/templates/cloudbuild/examples/cloudbuild_storagesource.yaml deleted file mode 100644 index 20c59c265a0..00000000000 --- a/dm/templates/cloudbuild/examples/cloudbuild_storagesource.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# Example of the Cloud Build template usage. -# -# In this example, a Cloud Build is triggered with source from a storage bucket. -# -# Replace the following placeholders with valid values: -# : a valid storage bucket name (name of an existing -# storage bucket) where the source resides; -# e.g.: myapp-source-bucket -# NOTE: do not include neither "gs://" nor trailing slash -# : a path to the source archive from the root of the bucket; -# e.g. docker/mydockerfile.tar.gz -# NOTE: source files must be uploaded as a gzip compressed -# tar archive -# : a cloud-builder supported on Google Cloud; -# see details at -# https://cloud.google.com/cloud-build/docs/cloud-builders -# : a list of build arguments supported by the builder; -# enter each argument on a separate line as show below -# Example build step: -# - name: 'gcr.io/cloud-builders/git' -# args: -# - clone -# - https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - -imports: - - path: templates/cloudbuild/cloudbuild.py - name: build.py - -resources: - - name: mycloudbuild - type: build.py - properties: - source: - storageSource: - bucket: - object: - steps: - - name: 'gcr.io/cloud-builders/' - args: - - - - - - name: 'gcr.io/cloud-builders/' - args: - - - - - timeout: '200s' diff --git a/dm/templates/cloudbuild/tests/integration/cloudbuild.bats b/dm/templates/cloudbuild/tests/integration/cloudbuild.bats deleted file mode 100644 index e81796255f2..00000000000 --- a/dm/templates/cloudbuild/tests/integration/cloudbuild.bats +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables - export CLOUDBUILD_NAME="test-build-${RAND}" - export BUILD_TIMEOUT="500s" - export IMAGE_NAME="test-npm-helloworld-${RAND}" - export IMAGE_TAG="gcr.io/${CLOUD_FOUNDATION_PROJECT_ID}/${IMAGE_NAME}" - export LOGURL_BASE="https://console.cloud.google.com/gcr/builds/" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - # delete the container image from registry - gcloud container images delete ${IMAGE_TAG}:latest -q - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "$output" - [[ "$status" -eq 0 ]] -} - -# Get the BuildID after DM deployment and store it in a variable for reuse -export ID=$(gcloud builds list --format="value(id)" --filter="(${IMAGE_NAME})") - -@test "Verify if build ${CLOUDBUILD_NAME} was created " { - run gcloud builds list --format="value(id,images)" \ - --filter="(${IMAGE_NAME})" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${IMAGE_NAME}" ]] -} - -@test "Verify if build ${CLOUDBUILD_NAME} status is a SUCCESS" { - run gcloud builds describe $ID --format="value(status)" - [[ "$status" -eq 0 ]] - [[ "$output" -eq "SUCCESS" ]] -} - -@test "Verify if build timeout is set to ${BUILD_TIMEOUT}" { - run gcloud builds describe $ID --format="value(timeout)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${BUILD_TIMEOUT}" ]] -} - -@test "Verify if cloud-builder in STEP 1 is git" { - run gcloud builds describe $ID --format="value(steps[0].name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "git" ]] -} - -@test "Verify if first build arg in STEP 1 is clone" { - run gcloud builds describe $ID --format="value(steps[0].args[0])" - [[ "$status" -eq 0 ]] - [[ "$output" -eq "clone" ]] -} - -@test "Verify if cloud-builder in STEP 2 is docker" { - run gcloud builds describe $ID --format="value(steps[1].name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "docker" ]] -} - -@test "Verify if first build arg in STEP 2 is build" { - run gcloud builds describe $ID --format="value(steps[1].args[0])" - [[ "$status" -eq 0 ]] - [[ "$output" -eq "build" ]] -} - -@test "Verify if relative dir in STEP 2 is npm/examples/hello_world" { - run gcloud builds describe $ID --format="value(steps[1].dir)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "cloud-builders/npm/examples/hello_world" ]] -} - -@test "Verify if image stored in container repo is ${IMAGE_TAG} " { - run gcloud builds describe $ID --format="value(images)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${IMAGE_TAG}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/cloudbuild/tests/integration/cloudbuild.yaml b/dm/templates/cloudbuild/tests/integration/cloudbuild.yaml deleted file mode 100644 index 619aea9fdbf..00000000000 --- a/dm/templates/cloudbuild/tests/integration/cloudbuild.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Test of the Cloud Build template. - -imports: - - path: templates/cloudbuild/cloudbuild.py - name: build.py - -resources: - - name: ${CLOUDBUILD_NAME} - type: build.py - properties: - steps: - - name: 'gcr.io/cloud-builders/git' - args: ['clone', 'https://github.com/GoogleCloudPlatform/cloud-builders'] - - name: 'gcr.io/cloud-builders/docker' - args: [ 'build', '-t', 'gcr.io/${CLOUD_FOUNDATION_PROJECT_ID}/${IMAGE_NAME}', '.' ] - dir: cloud-builders/npm/examples/hello_world - - name: 'gcr.io/cloud-builders/docker' - args: [ 'push', 'gcr.io/${CLOUD_FOUNDATION_PROJECT_ID}/${IMAGE_NAME}'] - images: - - 'gcr.io/${CLOUD_FOUNDATION_PROJECT_ID}/${IMAGE_NAME}' - timeout: '${BUILD_TIMEOUT}' diff --git a/dm/templates/dataproc/README.md b/dm/templates/dataproc/README.md deleted file mode 100644 index e381046e878..00000000000 --- a/dm/templates/dataproc/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# Dataproc - -This template creates a Dataproc cluster. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) - -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) - -- Enable the [Cloud Dataproc API](https://cloud.google.com/dataproc/docs/reference/rest/) - -- Grant the [Dataproc Worker](https://cloud.google.com/dataproc/docs/concepts/iam/iam) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [compute.v1.instance](https://cloud.google.com/compute/docs/reference/rest/v1/instances) -- [compute.v1.instanceTemplate](https://cloud.google.com/compute/docs/reference/latest/instanceTemplates) -- [compute.v1.instanceGroup](https://cloud.google.com/compute/docs/reference/latest/instanceGroups) -- [dataproc.v1.cluster](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters) - -### Properties - -See the `properties` section in the schema file(s): - -- [Dataproc](dataproc.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in - this case, [examples/dataproc.yaml](examples/dataproc.yaml): - -```shell - cp templates/dataproc/examples/dataproc.yaml my_dataproc.yaml -``` - -4. Change the values in the config file to match your specific GCP setup - (for properties, refer to the schema files listed above): - -```shell - vim my_dataproc.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the - relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_dataproc.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Dataproc](examples/dataproc.yaml) diff --git a/dm/templates/dataproc/dataproc.py b/dm/templates/dataproc/dataproc.py deleted file mode 100644 index a3295d2517b..00000000000 --- a/dm/templates/dataproc/dataproc.py +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Dataproc cluster. """ - -import six - -NODES_SCHEMA = { - 'numInstances': None, - 'isPreemptible': None, - 'machineType': 'machineTypeUri', - 'accelerators': None, -} - -def get_disk_config(properties): - """ If any disk property is specified, creates the diskConfig section. """ - - disk_schema = { - 'diskType': 'bootDiskType', - 'diskSizeGb': 'bootDiskSizeGb', - 'numLocalSsds': None - } - - return read_configuration(properties, disk_schema) - - -def read_configuration(properties, schema): - """ Creates a new config section by reading and renaming properties from - the source section. - """ - - if any(name in properties for name in schema): - config = {} - for name, rename_to in six.iteritems(schema): - add_optional_property(config, properties, name, rename_to) - return config - - return None - - -def get_instance_group_config(properties, image, cluster_schema): - """ Creates a cluster instance group. """ - - config = read_configuration(properties, cluster_schema) - - disk_config = get_disk_config(properties) - if disk_config: - config['diskConfig'] = disk_config - - if image: - config['imageUri'] = image - - return config - - -def add_optional_property(destination, source, property_name, rename_to=None): - """ Copies each property defined in the source object to the destination - object. - """ - - rename_to = rename_to or property_name - if property_name in source: - destination[rename_to] = source[property_name] - - -def get_gce_cluster_config(properties): - """ Creates the configuration section for a cluster. """ - - gce_schema = { - 'zone': 'zoneUri', - 'network': 'networkUri', - 'subnetwork': 'subnetworkUri', - 'serviceAccountEmail': 'serviceAccount', - 'serviceAccountScopes': None, - 'internalIpOnly': None, - 'networkTags': 'tags', - 'metadata': None - } - - if 'network' in properties and 'subnetwork' in properties: - msg = 'Specifying both "network" and "subnetwork" is not allowed.' - raise ValueError(msg) - - return read_configuration(properties, gce_schema) - - -def set_instance_group_config(properties, cluster, image, instance_group): - """ Assign instance group config to the cluster. """ - - group_spec = properties.get(instance_group) - group_schema = NODES_SCHEMA - group_config = get_instance_group_config(group_spec, image, group_schema) - config_name = instance_group + 'Config' - cluster['properties']['config'][config_name] = group_config - config_output_path = 'ref.{}.config.{}'.format(cluster['name'], config_name) - - return { - 'name': '{}InstanceNames'.format(instance_group), - 'value': '$({}.instanceNames)'.format(config_output_path) - } - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - image = context.properties.get('image') - region = properties['region'] - - cluster_config = get_gce_cluster_config(properties) - - cluster = { - 'name': context.env['name'], - # https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters - 'type': 'gcp-types/dataproc-v1:projects.regions.clusters', - 'properties': - { - 'clusterName': name, - 'projectId': project_id, - 'region': region, - 'config': { - 'gceClusterConfig': cluster_config, - } - } - } - - for prop in ['configBucket', 'softwareConfig', 'initializationActions', 'encryptionConfig']: - add_optional_property(cluster['properties']['config'], properties, prop) - add_optional_property(cluster['properties'], properties, 'labels') - - outputs = [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'configBucket', - 'value': '$(ref.{}.config.configBucket)'.format(context.env['name']) - } - ] - - for instance_group in ['master', 'worker', 'secondaryWorker']: - if instance_group in properties: - instance_group_output = set_instance_group_config( - properties, - cluster, - image, - instance_group - ) - outputs.append(instance_group_output) - - return {'resources': [cluster], 'outputs': outputs} diff --git a/dm/templates/dataproc/dataproc.py.schema b/dm/templates/dataproc/dataproc.py.schema deleted file mode 100644 index 60205820ada..00000000000 --- a/dm/templates/dataproc/dataproc.py.schema +++ /dev/null @@ -1,295 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Dataproc - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a Dataproc cluster. - - For more information on this resource: - https://cloud.google.com/compute/ - - APIs endpoints used by this template: - - gcp-types/dataproc-v1:projects.regions.clusters => - https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters - -additionalProperties: false - -definitions: - nodeConfig: - properties: - numInstances: - type: integer - description: The number of VM instances in the instance group. - isPreemptible: - type: boolean - description: | - If True, specifies that the instance group consists of preemptible - instances. - imageUri: - type: string - description: | - The Compute Engine image resource used for cluster instances. - It can be specified or may be inferred from SoftwareConfig.image_version. - machineType: - type: string - description: | - The Compute Engine machine type used for the cluster instances. - A full URL, partial URI, or short name are valid. Examples: - - https://www.googleapis.com/compute/v1/projects/[projectId]/zones/us-east1-a/machineTypes/n1-standard-2 - - projects/[projectId]/zones/us-east1-a/machineTypes/n1-standard-2 - - n1-standard-2 - diskType: - type: string - default: pd-standard - description: The boot disk type. - enum: - - pd-standard - - pd-ssd - diskSizeGb: - type: integer - default: 500 - description: The boot disk size in GB. - numLocalSsds: - type: integer - default: 0 - description: The number of attached SSDs. - minimum: 0 - maximum: 4 - accelerators: - type: array - uniqItems: true - description: | - The Compute Engine accelerator configuration for these instances. - - Beta Feature: This feature is still under development. It may be changed before final release - items: - type: object - additionalProperties: false - properties: - acceleratorTypeUri: - type: string - description: | - Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. - See Compute Engine AcceleratorTypes. - - Examples: - - https://www.googleapis.com/compute/beta/projects/[projectId]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 - projects/[projectId]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 - nvidia-tesla-k80 - Auto Zone Exception: If you are using the Cloud Dataproc Auto Zone Placement feature, - you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80. - acceleratorCount: - type: number - description: | - The number of the accelerator cards of this type exposed to this instance. - -properties: - name: - type: string - description: | - The cluster name. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the service. - labels: - type: object - description: | - Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, - and must conform to RFC 1035. Label values may be empty, but, if present, must contain 1 to 63 characters, - and must conform to RFC 1035. No more than 32 labels can be associated with a cluster. - - An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - region: - type: string - default: global - description: | - The region where the Compute Engine cluster is located. When deployed - in the 'global' region, or with no region specified, the 'zone' parameter - must be provided. - zone: - type: string - description: | - The zone where the Compute Engine cluster is located. A full URL, partial - URI, or short name are valid. Examples: - - https://www.googleapis.com/compute/v1/projects/[projectId]/zones/[zone] - - projects/[projectId]/zones/[zone] - - us-central1-f - Mandatory if the region parameter value is 'global', or is not defined. - image: - type: string - description: | - The Compute Engine image resource used for cluster instances. Can be - either specified or inferred from 'softwareConfig.imageVersion'. - serviceAccountEmail: - type: string - description: | - The service account of the instances. Defaults to the default Compute - Engine service account. - serviceAccountScopes: - type: array - uniqItems: true - description: | - A list of URIs of service account scopes to be included in the Compute - Engine instances. - items: - type: string - description: | - The URI of service account scope to be included in the Compute Engine - instances. - internalIpOnly: - type: boolean - description: | - If True, all instances in the cluster have only internal IP addresses. - network: - type: string - description: | - The Compute Engine network to be used for machine communications. Cannot - be specified if the 'subnetwork' value is provided. - subnetwork: - type: string - description: | - The Compute Engine subnetwork to be used for machine communications. - Cannot be specified if the 'network' value is provided. - networkTags: - type: array - description: A list of Compute Engine tags to add to all instances. - items: - type: string - metadata: - type: object - description: | - The Compute Engine metadata key-value entries to add to all instances. - configBucket: - type: string - description: | - The Cloud Storage staging bucket used for sharing the generated SSH keys - and config. - softwareConfig: - type: object - additionalProperties: false - description: | - The selection and config of software inside the cluster. - properties: - imageVersion: - type: string - description: | - The version of the software inside the cluster. One of the - supported Cloud Dataproc Versions, such as "1.2" (including a - subminor version, such as "1.2.29"), or the "preview" version. - properties: - type: object - description: | - The key-value pairs for properties to set on the daemon config files. - optionalComponents: - type: array - uniqItems: true - description: | - The set of optional components to activate on the cluster. - items: - type: string - enum: - - COMPONENT_UNSPECIFIED - - ANACONDA - - HIVE_WEBHCAT - - JUPYTER - - ZEPPELIN - initializationActions: - type: array - uniqItems: true - description: | - A list of commands to execute on each node after the config is completed. - items: - type: object - additionalProperties: false - description: | - The executable to run on a fully configured node + the timeout - period for the executable completion. - properties: - executableFile: - type: string - description: The Cloud Storage URI of the executable file. - executableTimeout: - type: string - description: | - The executable completion timeout, e.g. "3.5s". The default value - is 10 minutes. - encryptionConfig: - type: object - additionalProperties: false - description: | - Encryption settings for the cluster. - required: - - gcePdKmsKeyName - properties: - gcePdKmsKeyName: - type: string - descritption: | - The Cloud KMS key name to use for PD disk encryption for all instances in the cluster. - master: - type: object - additionalProperties: false - description: | - The Compute Engine config settings for the master instance in the - cluster. - $ref: '#/definitions/nodeConfig' - worker: - type: object - additionalProperties: false - description: | - The Compute Engine config settings for worker instances in the cluster. - $ref: '#/definitions/nodeConfig' - secondaryWorker: - type: object - additionalProperties: false - description: | - The Compute Engine config settings for additional worker instances in - the cluster. - $ref: '#/definitions/nodeConfig' - -outputs: - masterInstanceNames: - type: array - description: When configured, the list of master instance names. - items: - type: string - workerInstanceNames: - type: array - description: When configured, the list of worker instance names. - items: - type: string - secondaryWorkerInstanceNames: - type: array - description: | - When configured, the list of additional worker instance names. - items: - type: string - name: - type: string - description: The cluster name. - configBucket: - type: string - description: | - A Cloud Storage staging bucket used for sharing generated SSH keys - and config. - -documentation: - - templates/dataproc/README.md - -examples: - - templates/dataproc/examples/dataproc.yaml diff --git a/dm/templates/dataproc/examples/dataproc.yaml b/dm/templates/dataproc/examples/dataproc.yaml deleted file mode 100644 index b45854b8492..00000000000 --- a/dm/templates/dataproc/examples/dataproc.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of the Dataproc template usage. -# -# In this example, a Dataproc cluster is created. - -imports: - - path: templates/dataproc/dataproc.py - name: dataproc.py - -resources: - - name: dataproc-cluster - type: dataproc.py - properties: - zone: us-central1-a - region: global - networkTags: - - http - master: - numInstances: 1 - machineType: n1-standard-8 - diskSizeGb: 100 - diskType: pd-ssd - worker: - numInstances: 2 - machineType: n1-standard-4 - secondaryWorker: - numInstances: 2 - isPreemptible: true diff --git a/dm/templates/dataproc/tests/integration/dataproc.bats b/dm/templates/dataproc/tests/integration/dataproc.bats deleted file mode 100755 index e4cb3198810..00000000000 --- a/dm/templates/dataproc/tests/integration/dataproc.bats +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export CLUSTER_NAME="dataproc-cluster-${RAND}" - export ZONE="us-central1-a" - export TAG="test-tag-${RAND}" - export MASTER_INSTANCES="1" - export MASTER_TYPE="n1-standard-8" - export MASTER_DISK_SIZE="100" - export MASTER_DISK_TYPE="pd-ssd" - export WORKER_INSTANCES="2" - export WORKER_TYPE="n1-standard-4" - export SECONDARY_WORKER_INSTANCES="1" - export SECONDARY_WORKER_PREEMPTIBLE="true" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that ${CLUSTER_NAME} settings are correct" { - run gcloud dataproc clusters describe "${CLUSTER_NAME}" \ - --format="yaml(config.gceClusterConfig)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${ZONE}" ]] - [[ "$output" =~ "${TAG}" ]] -} - -@test "Verifying that master group settings are correct" { - run gcloud dataproc clusters describe "${CLUSTER_NAME}" \ - --format="yaml(config.masterConfig)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "numInstances: ${MASTER_INSTANCES}" ]] - [[ "$output" =~ "bootDiskSizeGb: ${MASTER_DISK_SIZE}" ]] - [[ "$output" =~ "bootDiskType: ${MASTER_DISK_TYPE}" ]] - [[ "$output" =~ "${MASTER_TYPE}" ]] -} - -@test "Verifying that worker group settings are correct" { - run gcloud dataproc clusters describe "${CLUSTER_NAME}" \ - --format="yaml(config.workerConfig)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "numInstances: ${WORKER_INSTANCES}" ]] - [[ "$output" =~ "${WORKER_TYPE}" ]] - [[ "$output" =~ "bootDiskSizeGb: 500" ]] # Default size - [[ "$output" =~ "bootDiskType: pd-standard" ]] # Default type -} - -@test "Verifying that secondary worker group settings are correct" { - run gcloud dataproc clusters describe "${CLUSTER_NAME}" \ - --format="yaml(config.secondaryWorkerConfig)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "numInstances: ${SECONDARY_WORKER_INSTANCES}" ]] - [[ "$output" =~ "${WORKER_TYPE}" ]] # Copied from worker node - [[ "$output" =~ "isPreemptible: ${SECONDARY_WORKER_PREEMPTIBLE}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/dataproc/tests/integration/dataproc.yaml b/dm/templates/dataproc/tests/integration/dataproc.yaml deleted file mode 100644 index 9d03c3c2d5e..00000000000 --- a/dm/templates/dataproc/tests/integration/dataproc.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Test of the Dataproc template. -# -# Variables: -# RAND: a random string used by the testing suite. -# - -imports: - - path: templates/dataproc/dataproc.py - name: dataproc.py - -resources: - - name: ${CLUSTER_NAME} - type: dataproc.py - properties: - zone: ${ZONE} - networkTags: - - ${TAG} - master: - numInstances: ${MASTER_INSTANCES} - machineType: ${MASTER_TYPE} - diskSizeGb: ${MASTER_DISK_SIZE} - diskType: ${MASTER_DISK_TYPE} - worker: - numInstances: ${WORKER_INSTANCES} - machineType: ${WORKER_TYPE} - secondaryWorker: - numInstances: ${SECONDARY_WORKER_INSTANCES} - isPreemptible: ${SECONDARY_WORKER_PREEMPTIBLE} diff --git a/dm/templates/dns_managed_zone/README.md b/dm/templates/dns_managed_zone/README.md deleted file mode 100644 index ac80d5cc690..00000000000 --- a/dm/templates/dns_managed_zone/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# Cloud DNS Managed Zone - -This template creates a managed zone in the Cloud DNS (Domain Name System). - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [dns.admin](https://cloud.google.com/dns/access-control) IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [gcp-types/dns-v1:managedZones](https://cloud.google.com/dns/docs/reference/v1/managedZones) - -### Properties - -See the `properties` section in the schema file(s): -- [Cloud DNS Managed Zone](dns_managed_zone.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/dns_managed_zone.yaml](examples/dns_managed_zone.yaml): - -```shell - cp templates/dns_managed_zone/examples/dns_managed_zone.yaml my_dns_managed_zone.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_dns_managed_zone.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_dns_managed_zone.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples -- [Cloud DNS Managed Zone](examples/dns_managed_zone.yaml) -- [Cloud DNS Managed Zone with legacy property](examples/dns_managed_zone_legacy.yaml) -- [Managed Zone with `public visibility`](examples/dns_managed_zone_public.yaml) -- [Managed Zone with `private visibility`](examples/dns_managed_zone_private.yaml) -- [Managed Zone with `private visibility config`](examples/dns_managed_zone_private_visibility_config.yaml) - -## Tests Cases -- [Simple Managed Zone Test](tests/integration/dns_mz_simple.bats) -- [Backward Compatibility Test](tests/integration/dns_mz_bkwrd_cmptb.bats) -- [Managed Zone with `public visibility`](tests/integration/dns_mz_public.bats) -- [Managed Zone with `private visibility`](tests/integration/dns_mz_private.bats) -- [Managed Zone with `private visibility config`](tests/integration/dns_mz_prvt_vsblt_cfg.bats) -- [Managed Zone with `cross-project reference`](tests/integration/dns_mz_cross_project.bats) \ No newline at end of file diff --git a/dm/templates/dns_managed_zone/dns_managed_zone.py b/dm/templates/dns_managed_zone/dns_managed_zone.py deleted file mode 100644 index abc203b5d16..00000000000 --- a/dm/templates/dns_managed_zone/dns_managed_zone.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -"""This template creates a managed zone resource in the Cloud DNS.""" - - -def generate_config(context): - """Entry point for the deployment resources.""" - # Backward Compatibility with the old property `zoneName` - try: - managed_zone_name = context.properties['zoneName'] - except KeyError: - managed_zone_name = context.properties.get('name', context.env['name']) - dnsname = context.properties['dnsName'] - managed_zone_description = context.properties['description'] - name_servers = '$(ref.' + context.env['name'] + '.nameServers)' - project_id = context.properties.get('project', context.env['project']) - - resources = [] - outputs = [ - { - 'name': 'dnsName', - 'value': dnsname - }, - { - 'name': 'managedZoneDescription', - 'value': managed_zone_description - }, - { - 'name': 'nameServers', - 'value': name_servers - }, - { - 'name': 'managedZoneName', - 'value': managed_zone_name - } - ] - - managed_zone = { - 'name': context.env['name'], - # https://cloud.google.com/dns/docs/reference/v1/managedZones - 'type': 'gcp-types/dns-v1:managedZones', - 'properties': { - 'name': managed_zone_name, - 'dnsName': dnsname, - 'description': managed_zone_description, - 'project_id': project_id - } - } - - # making resources and outputs additional properties - for prop in context.properties: - if prop not in managed_zone['properties']: - managed_zone['properties'][prop] = context.properties[prop] - outputs.append( - { - 'name': prop, - 'value': context.properties[prop] - } - ) - resources.append(managed_zone) - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/dns_managed_zone/dns_managed_zone.py.schema b/dm/templates/dns_managed_zone/dns_managed_zone.py.schema deleted file mode 100644 index ba376adb98a..00000000000 --- a/dm/templates/dns_managed_zone/dns_managed_zone.py.schema +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright 2016 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud DNS Managed Zone - author: Source Group Inc. - version: 1.0.0 - description: | - Creates a managed zone in the Cloud DNS. - - For more information on this resource: - - https://cloud.google.com/dns/zones/ - - APIs endpoints used by this template: - - gcp-types/dns-v1:managedZones => - https://cloud.google.com/dns/docs/reference/v1/managedZones - -# Note: Supported Backward Compatibility with the old property `zoneName` -oneOf: - - required: - - dnsName - - zoneName - - required: - - dnsName - - name - -additionalProperties: false - -properties: - project: - type: string - description: | - The Project ID for Cross-Project Reference. - zoneName: - type: string - pattern: ^[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?$ - description: | - Old resource name to support backward compatibility. - Value is restricted by API pattern for `resource.name` - The name must be 1-63 characters long, must begin with a letter, end - with a letter or digit, and only contain lowercase letters, digits or dashes. - description: - type: string - pattern: ^.{0,1023}$ - description: | - A description of the managed zone. A mutable string, max 1024 characters - long. Associated with the resource for users' convenience; does not affect - managed zone's function. - dnsName: - type: string - pattern: ^([(a-z)\d\-]{1,62}\.){1,3}([(a-z)\d\-]{1,61}){0,1}\.$ - description: | - The DNS name of the managed zone; for example, "example.com." - Make sure that the value ends with a period "." - dnssecConfig: - type: object - description: DNSSEC configuration. - additionalProperties: false - required: - - kind - - state - - defaultKeySpecs - properties: - defaultKeySpecs: - type: array - uniqueItems: true - description: | - Specifies parameters that will be used for generating initial DnsKeys - for this ManagedZone. Output only while state is not OFF. - items: - type: object - additionalProperties: false - required: - - kind - - algorithm - - keyType - - keyLength - properties: - algorithm: - oneOf: - - type: string - pattern: ^ecdsap(256|384)sha(256|384)$ - - type: string - pattern: ^rsasha(1|256|512)$ - description: | - String mnemonic specifying the DNSSEC algorithm of this key. - Acceptable values are: - - "ecdsap256sha256" - - "ecdsap384sha384" - - "rsasha1" - - "rsasha256" - - "rsasha512" - keyLength: - type: integer - description: Length of the keys in bits. - keyType: - type: string - pattern: ^(key|zone)Signing$ - description: | - Specifies whether this is a key signing key (KSK) or a zone - signing key (ZSK). Key signing keys have the Secure Entry Point - flag set and, when active, will only be used to sign resource - record sets of type DNSKEY. Zone signing keys do not have the - Secure Entry Point flag set and will be used to sign all other - types of resource record sets. - Acceptable values are: - - "keySigning" - - "zoneSigning" - kind: - type: string - pattern: ^dns#managedZoneDnsSecConfig$ - default: "dns#managedZoneDnsSecConfig" - description: | - Identifies what kind of resource this is. - Value: the fixed string "dns#managedZoneDnsSecConfig". - nonExistence: - type: string - description: | - Specifies the mechanism used to provide authenticated - denial-of-existence responses. Output only while state is not OFF. - Acceptable values are: - - "nsec" - - "nsec3" - pattern: ^nsec3?$ - state: - type: string - pattern: ^(on|off|transfer)$ - description: | - Specifies whether DNSSEC is enabled, and what mode it is in. - Acceptable values are: - - "off" - - "on" - - "transfer" - kind: - type: string - pattern: ^dns#managedZone$ - default: "dns#managedZone" - description: | - Identifies what kind of resource this is. - Value is the fixed string "dns#managedZone". - labels: - type: object - description: User labels. - propertyNames: - type: string - name: - type: string - pattern: ^[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?$ - description: | - User assigned name for this resource. Must be unique within the project. - The name must be 1-63 characters long, must begin with a letter, end - with a letter or digit, and only contain lowercase letters, digits or dashes. - nameServerSet: - type: string - description: | - Optionally specifies the NameServerSet for this ManagedZone. A - NameServerSet is a set of DNS name servers that all host the same - ManagedZones. Most users will leave this field unset. - nameServers: - type: array - description: | - Delegate your managed_zone to these virtual name servers; defined by the - server (output only) - privateVisibilityConfig: - type: object - description: | - For privately visible zones, the set of Virtual Private Cloud resources - that the zone is visible from. - additionalProperties: false - properties: - kind: - type: string - pattern: ^dns#managedZonePrivateVisibilityConfig$ - description: | - Identifies what kind of resource this is. - Value: the fixed string "dns#managedZonePrivateVisibilityConfig" - networks: - type: array - items: - type: object - additionalProperties: false - required: - - kind - - networkUrl - properties: - kind: - type: string - pattern: ^dns#managedZonePrivateVisibilityConfigNetwork$ - description: | - Identifies what kind of resource this is. - Value: the fixed string "dns#managedZonePrivateVisibilityConfigNetwork". - networkUrl: - type: string - pattern: ^https:\/\/www.googleapis.com\/compute\/v1\/projects\/[a-zA-Z0-9_-]+\/global\/networks\/[a-zA-Z0-9_-]+$ - description: | - The fully qualified URL of the VPC network to bind to. This should be formatted - like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} - visibility: - type: string - pattern: ^(public|private)$ - description: | - The zone's visibility. Public zones are exposed to the Internet, while - private zones are visible only to Virtual Private Cloud resources. - Acceptable values are "private" and "public". - -outputs: - dnsName: - type: string - description: The DNS name of the managed zone. - managedZoneDescription: - type: string - description: The description of the managed zone. - nameServers: - type: array - description: | - The list of nameservers that will be authoritative for this domain. - managedZoneName: - type: string - description: The managed zone's resource name. - visibility: - type: string - description: | - The zone's visibility. Public zones are exposed to the Internet, - while private zones are visible only to Virtual Private Cloud - resources. - privateVisibilityConfig: - type: object - description: | - For privately visible zones, the set of Virtual Private Cloud - resources that the zone is visible from. - dnssecConfig: - type: object - description: DNSSEC configuration. - -documentation: - - templates/dns_managed_zone/README.md - -examples: - - templates/dns_managed_zone/examples/dns_managed_zone.yaml - - templates/dns_managed_zone/examples/dns_managed_zone_private.yaml - - templates/dns_managed_zone/examples/dns_managed_zone_private_visibility_config.yaml - - templates/dns_managed_zone/examples/dns_managed_zone_public.yaml diff --git a/dm/templates/dns_managed_zone/examples/dns_managed_zone.yaml b/dm/templates/dns_managed_zone/examples/dns_managed_zone.yaml deleted file mode 100644 index 5755fdb2a61..00000000000 --- a/dm/templates/dns_managed_zone/examples/dns_managed_zone.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example of the DNS managed zone template usage. -# -# In this example, a DNS managed zone is created with the use of -# the `name` and `dnsName` properties. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: test-managed-zone - type: dns_managed_zone.py - properties: - name: test-managed-zone - dnsName: foobar.local. - description: 'My foobar DNS Managed Zone' diff --git a/dm/templates/dns_managed_zone/examples/dns_managed_zone_legacy.yaml b/dm/templates/dns_managed_zone/examples/dns_managed_zone_legacy.yaml deleted file mode 100644 index 0f2dcb6e104..00000000000 --- a/dm/templates/dns_managed_zone/examples/dns_managed_zone_legacy.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example of the DNS managed zone template usage. -# -# In this example, a DNS managed zone is created with the use of -# the old `zoneName` and `dnsName` properties. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: test-managed-zone - type: dns_managed_zone.py - properties: - zoneName: test-managed-zone - dnsName: foobar.local. - description: 'My foobar DNS Managed Zone' diff --git a/dm/templates/dns_managed_zone/examples/dns_managed_zone_private.yaml b/dm/templates/dns_managed_zone/examples/dns_managed_zone_private.yaml deleted file mode 100644 index 49caf906e28..00000000000 --- a/dm/templates/dns_managed_zone/examples/dns_managed_zone_private.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Example of the DNS managed zone template usage. -# -# In this example, a private DNS managed zone is created with the use of -# the `visibility` and `dnsName` properties. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: private-mz - type: dns_managed_zone.py - properties: - name: private-mz - dnsName: private-mz.local. - description: "Private DNS Managed Zone" - visibility: private diff --git a/dm/templates/dns_managed_zone/examples/dns_managed_zone_private_visibility_config.yaml b/dm/templates/dns_managed_zone/examples/dns_managed_zone_private_visibility_config.yaml deleted file mode 100644 index 9c6da977d5d..00000000000 --- a/dm/templates/dns_managed_zone/examples/dns_managed_zone_private_visibility_config.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Example of the DNS managed zone template usage. -# -# In this example, a private DNS managed zone is created with the use of -# the `visibility` and `privateVisibilityConfig` properties. -# : a valid project name. -# : a valid VPC network name. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: private-mz-with-visibility - type: dns_managed_zone.py - properties: - name: private-mz-with-visibility - dnsName: private-visibility.local. - description: "Private DNS Managed Zone with visibility config" - visibility: private - privateVisibilityConfig: - kind: "dns#managedZonePrivateVisibilityConfig" - networks: - - kind: "dns#managedZonePrivateVisibilityConfigNetwork" - networkUrl: "https://www.googleapis.com/compute/v1/projects//global/networks/" diff --git a/dm/templates/dns_managed_zone/examples/dns_managed_zone_public.yaml b/dm/templates/dns_managed_zone/examples/dns_managed_zone_public.yaml deleted file mode 100644 index 6fa68ebd94e..00000000000 --- a/dm/templates/dns_managed_zone/examples/dns_managed_zone_public.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Example of the DNS managed zone template usage. -# -# In this example, a Public DNS managed zone is created with the use of -# the `zoneName`, `dnsName` and `visibility` properties. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: public-mz - type: dns_managed_zone.py - properties: - name: public-mz - dnsName: public-test.local. - description: "Public DNS Managed Zone" - visibility: public diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_bkwrd_cmptb.bats b/dm/templates/dns_managed_zone/tests/integration/dns_mz_bkwrd_cmptb.bats deleted file mode 100755 index 83bb5088792..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_bkwrd_cmptb.bats +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export CLOUDDNS_ZONE_NAME="test-managed-zone-${RAND}" - export CLOUDDNS_DNS_NAME="${RAND}.com." - export CLOUDDNS_DESCRIPTION="Managed DNS Zone for Testing" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < templates/dns_managed_zone/tests/integration/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if a managed zone with name $CLOUDDNS_ZONE_NAME was created" { - run gcloud dns managed-zones list --format=flattened \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} - -@test "Verify if a DNS named ${CLOUDDNS_DNS_NAME} was created" { - run gcloud dns managed-zones list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_DNS_NAME}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" - run gcloud dns managed-zones list - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} \ No newline at end of file diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_bkwrd_cmptb.yaml b/dm/templates/dns_managed_zone/tests/integration/dns_mz_bkwrd_cmptb.yaml deleted file mode 100644 index 48e35ae5680..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_bkwrd_cmptb.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Test Case: Backward Compatibility -# Use Case: -# You have updated CFT code base up to the latest version and now it works -# with your old-style written templates in a slightly different way. -# -# F.e.: `zoneName` property is now replaced by `name` to align syntax with -# the naming convention of the API. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: ${CLOUDDNS_ZONE_NAME}-resource - type: dns_managed_zone.py - properties: - zoneName: ${CLOUDDNS_ZONE_NAME} - dnsName: ${CLOUDDNS_DNS_NAME} - description: ${CLOUDDNS_DESCRIPTION} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_cross_project.bats b/dm/templates/dns_managed_zone/tests/integration/dns_mz_cross_project.bats deleted file mode 100755 index 2d1b32274c1..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_cross_project.bats +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export CLOUDDNS_ZONE_NAME="test-managed-zone-${RAND}" - export CLOUDDNS_DNS_NAME="${RAND}.com." - export CLOUDDNS_DESCRIPTION="Managed DNS Zone for Testing" -fi - -if [ -z "${CLOUDDNS_CROSS_PROJECT_ID}" ]; then - echo "CLOUDDNS_CROSS_PROJECT_ID is not set, nothing to test." >&2 - exit 1 -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < templates/dns_managed_zone/tests/integration/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if a managed zone with name $CLOUDDNS_ZONE_NAME was created" { - run gcloud dns managed-zones list --format=flattened \ - --project "${CLOUDDNS_CROSS_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} - -@test "Verify if a DNS named ${CLOUDDNS_DNS_NAME} was created" { - run gcloud dns managed-zones list --project "${CLOUDDNS_CROSS_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_DNS_NAME}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" - run gcloud dns managed-zones list - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_cross_project.yaml b/dm/templates/dns_managed_zone/tests/integration/dns_mz_cross_project.yaml deleted file mode 100644 index 5e3b394057e..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_cross_project.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Test Case: Cross-Project Reference -# Use Case: -# You have multiple projects with dependancies on each other. -# Like one project assumes a presence of DNS Zone in another in order -# to use it as an endpoint. So within your agregated pipe-line you may want -# to provision resources in both of the projets. -# -# Please note: you should grant Editor permission on the cross-referenced -# Project to your current Google APIs account @cloudservices.gserviceaccount.com - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: ${CLOUDDNS_ZONE_NAME}-resource - type: dns_managed_zone.py - properties: - name: ${CLOUDDNS_ZONE_NAME} - dnsName: ${CLOUDDNS_DNS_NAME} - description: ${CLOUDDNS_DESCRIPTION} - project: ${CLOUDDNS_CROSS_PROJECT_ID} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_private.bats b/dm/templates/dns_managed_zone/tests/integration/dns_mz_private.bats deleted file mode 100755 index a4c6f5ac45c..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_private.bats +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export CLOUDDNS_ZONE_NAME="test-managed-zone-${RAND}" - export CLOUDDNS_DNS_NAME="${RAND}.com." - export CLOUDDNS_DESCRIPTION="Managed DNS Zone for Testing" - export CLOUDDNS_VISIBILITY="private" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < templates/dns_managed_zone/tests/integration/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if a managed zone with name $CLOUDDNS_ZONE_NAME was created" { - run gcloud dns managed-zones list --format=flattened \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} - -@test "Verify if a DNS named ${CLOUDDNS_DNS_NAME} was created" { - run gcloud dns managed-zones list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_DNS_NAME}" ]] -} - -@test "Verify if visibility is ${CLOUDDNS_VISIBILITY}" { - run gcloud dns managed-zones describe ${CLOUDDNS_ZONE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "visibility: ${CLOUDDNS_VISIBILITY}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" - run gcloud dns managed-zones list - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_private.yaml b/dm/templates/dns_managed_zone/tests/integration/dns_mz_private.yaml deleted file mode 100644 index 2edaa029f93..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_private.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Test Case: Private Visibility -# Use Case: -# You want to create a Private Managed Zone, which is not exposed to Internet -# and visible only to Virtual Private Cloud resources. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: ${CLOUDDNS_ZONE_NAME}-resource - type: dns_managed_zone.py - properties: - name: ${CLOUDDNS_ZONE_NAME} - dnsName: ${CLOUDDNS_DNS_NAME} - description: ${CLOUDDNS_DESCRIPTION} - visibility: ${CLOUDDNS_VISIBILITY} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_prvt_vsblt_cfg.bats b/dm/templates/dns_managed_zone/tests/integration/dns_mz_prvt_vsblt_cfg.bats deleted file mode 100755 index 51dae4a169e..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_prvt_vsblt_cfg.bats +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export CLOUDDNS_ZONE_NAME="test-managed-zone-${RAND}" - export CLOUDDNS_DNS_NAME="${RAND}.com." - export CLOUDDNS_DESCRIPTION="Managed DNS Zone for Testing" - export CLOUDDNS_VISIBILITY="private" - export CLOUDDNS_NETWORK_URL="https://www.googleapis.com/compute/v1/projects/${CLOUD_FOUNDATION_PROJECT_ID}/global/networks/default" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < templates/dns_managed_zone/tests/integration/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if a managed zone with name $CLOUDDNS_ZONE_NAME was created" { - run gcloud dns managed-zones list --format=flattened \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} - -@test "Verify if a DNS named ${CLOUDDNS_DNS_NAME} was created" { - run gcloud dns managed-zones list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_DNS_NAME}" ]] -} - -@test "Verify if visibility is ${CLOUDDNS_VISIBILITY}" { - run gcloud dns managed-zones describe ${CLOUDDNS_ZONE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "visibility: ${CLOUDDNS_VISIBILITY}" ]] -} - -@test "Verify if networkUrl is ${CLOUDDNS_NETWORK_URL}" { - run gcloud dns managed-zones describe ${CLOUDDNS_ZONE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "networkUrl: ${CLOUDDNS_NETWORK_URL}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" - run gcloud dns managed-zones list - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_prvt_vsblt_cfg.yaml b/dm/templates/dns_managed_zone/tests/integration/dns_mz_prvt_vsblt_cfg.yaml deleted file mode 100644 index 642d22e70d0..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_prvt_vsblt_cfg.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Test Case: Private Visibility -# Use Case: -# You want to create a Private Managed Zone visible only for specific -# networks of your Virtual Private Cloud. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: ${CLOUDDNS_ZONE_NAME}-resource - type: dns_managed_zone.py - properties: - name: ${CLOUDDNS_ZONE_NAME} - dnsName: ${CLOUDDNS_DNS_NAME} - description: ${CLOUDDNS_DESCRIPTION} - visibility: ${CLOUDDNS_VISIBILITY} - privateVisibilityConfig: - kind: "dns#managedZonePrivateVisibilityConfig" - networks: - - kind: "dns#managedZonePrivateVisibilityConfigNetwork" - networkUrl: ${CLOUDDNS_NETWORK_URL} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_public.bats b/dm/templates/dns_managed_zone/tests/integration/dns_mz_public.bats deleted file mode 100755 index e48411694bd..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_public.bats +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export CLOUDDNS_ZONE_NAME="test-managed-zone-${RAND}" - export CLOUDDNS_DNS_NAME="${RAND}.com." - export CLOUDDNS_DESCRIPTION="Managed DNS Zone for Testing" - export CLOUDDNS_VISIBILITY="public" - export CLOUDDNS_NETWORKS="default" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < templates/dns_managed_zone/tests/integration/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if a managed zone with name $CLOUDDNS_ZONE_NAME was created" { - run gcloud dns managed-zones list --format=flattened \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} - -@test "Verify if a DNS named ${CLOUDDNS_DNS_NAME} was created" { - run gcloud dns managed-zones list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_DNS_NAME}" ]] -} - -@test "Verify if visibility is ${CLOUDDNS_VISIBILITY}" { - run gcloud dns managed-zones describe ${CLOUDDNS_ZONE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "visibility: ${CLOUDDNS_VISIBILITY}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" - run gcloud dns managed-zones list - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_public.yaml b/dm/templates/dns_managed_zone/tests/integration/dns_mz_public.yaml deleted file mode 100644 index 328e7dc7278..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_public.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Test Case: Public Visibility -# Use Case: -# You want to create a Managed Zone with Public Visibility, -# which makes it exposed to Internet - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: ${CLOUDDNS_ZONE_NAME}-resource - type: dns_managed_zone.py - properties: - name: ${CLOUDDNS_ZONE_NAME} - dnsName: ${CLOUDDNS_DNS_NAME} - description: ${CLOUDDNS_DESCRIPTION} - visibility: ${CLOUDDNS_VISIBILITY} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_simple.bats b/dm/templates/dns_managed_zone/tests/integration/dns_mz_simple.bats deleted file mode 100755 index ab1bf5af83c..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_simple.bats +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export CLOUDDNS_ZONE_NAME="test-managed-zone-${RAND}" - export CLOUDDNS_DNS_NAME="${RAND}.com." - export CLOUDDNS_DESCRIPTION="Managed DNS Zone for Testing" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < templates/dns_managed_zone/tests/integration/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if a managed zone with name $CLOUDDNS_ZONE_NAME was created" { - run gcloud dns managed-zones list --format=flattened \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} - -@test "Verify if a DNS named ${CLOUDDNS_DNS_NAME} was created" { - run gcloud dns managed-zones list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLOUDDNS_DNS_NAME}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud dns managed-zones list - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "${CLOUDDNS_ZONE_NAME}" ]] -} diff --git a/dm/templates/dns_managed_zone/tests/integration/dns_mz_simple.yaml b/dm/templates/dns_managed_zone/tests/integration/dns_mz_simple.yaml deleted file mode 100644 index 6a1a7956d9a..00000000000 --- a/dm/templates/dns_managed_zone/tests/integration/dns_mz_simple.yaml +++ /dev/null @@ -1,13 +0,0 @@ -# Test of the simplest DNS managed zone template. - -imports: - - path: templates/dns_managed_zone/dns_managed_zone.py - name: dns_managed_zone.py - -resources: - - name: ${CLOUDDNS_ZONE_NAME}-resource - type: dns_managed_zone.py - properties: - name: ${CLOUDDNS_ZONE_NAME} - dnsName: ${CLOUDDNS_DNS_NAME} - description: ${CLOUDDNS_DESCRIPTION} diff --git a/dm/templates/dns_records/README.md b/dm/templates/dns_records/README.md deleted file mode 100644 index 9b451700d9a..00000000000 --- a/dm/templates/dns_records/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# DNS Resource RecordSets - -This template creates Cloud DNS records using recordsets. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [dns.admin](https://cloud.google.com/dns/access-control) IAM role to the Deployment Manager `serviceAccount` - -## Deployment - -### Resources - -- [gcp-types/dns-v1](https://cloud.google.com/dns/api/v1/changes) - -### Properties - -See the `properties` section in the schema file(s): - -- [DNS records](dns_records.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory: - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/dns_records.yaml](examples/dns_records.yaml): - - ```shell - cp templates/dns_records/examples/dns_records.yaml my_dns_records.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - - ```shell - vim my_dns_records.yaml # <== change values to match your GCP setup - ``` - -5. Create your deployment (replace with the relevant deployment name): - - ```shell - gcloud deployment-manager deployments create \ - --config my_dns_records.yaml - ``` - -6. In case you need to delete your deployment: - - ```shell - gcloud deployment-manager deployments delete - ``` - -## Examples - -- [DNS records](examples/dns_records.yaml) diff --git a/dm/templates/dns_records/dns_records.py b/dm/templates/dns_records/dns_records.py deleted file mode 100644 index 393416bcf8d..00000000000 --- a/dm/templates/dns_records/dns_records.py +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -"""This template creates DNS records for a managed zone.""" - - -def generate_config(context): - """ - Entry point for the deployment resources. - - DNS RecordSet is natively supported since 2019. - """ - - recordset = { - 'name': context.env['name'], - # https://cloud.google.com/dns/docs/reference/v1/resourceRecordSets - 'type': 'gcp-types/dns-v1:resourceRecordSets', - 'properties': { - 'name': context.properties['dnsName'], - 'managedZone': context.properties['zoneName'], - 'records': context.properties['resourceRecordSets'], - } - } - - return {'resources': [recordset]} diff --git a/dm/templates/dns_records/dns_records.py.schema b/dm/templates/dns_records/dns_records.py.schema deleted file mode 100644 index a4fa6dc4bfe..00000000000 --- a/dm/templates/dns_records/dns_records.py.schema +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright 2016 Google Inc. All rights reserved. -# -# 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. - -info: - title: Cloud DNS Records - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates DNS resource recordsets. - - For more information on this resource: - - https://cloud.google.com/dns/records/ - - APIs endpoints used by this template: - - gcp-types/dns-v1:resourceRecordSets => - https://cloud.google.com/dns/docs/reference/v1/resourceRecordSets - -additionalProperties: false - -required: - - zoneName - - dnsName - - resourceRecordSets - -properties: - zoneName: - type: string - pattern: ^[(a-z)\d\-].{1,63}$ - description: | - A user-assigned name for the managed zone. - This is required by the Cloud DNS. - dnsName: - type: string - pattern: ^([(a-z)\d\-]{1,62}\.){1,9}([(a-z)\d\-]{1,61}){0,1}\.$ - description: | - The DNS name of the managed zone; for example, "example.com." - A fully qualified domain name (FQDN) must end with a period "." - Must be fully compliant with RFC 1035. - resourceRecordSets: - type: array - description: | - A list of ResourceRecordSets meant to be in the zone. See - https://cloud.google.com/dns/api/v1/resourceRecordSets. - items: - type: object - description: An Individual ResourceRecordSet. - required: - - name - - type - - ttl - - rrdatas - properties: - name: - type: string - description: The name of the DNS record. Must end with dnsName. - pattern: ([(a-z)\d\-]{1,62}\.){1,9}([(a-z)\d\-]{1,61}){0,1}\.$ - kind: - type: string - description: | - Identifies what kind of resource this is. - Value: the fixed string "dns#resourceRecordSet". - pattern: ^dns#resourceRecordSet$ - default: "dns#resourceRecordSet" - rrdatas: - type: array - description: | - A list of resourceRecordSets as defined in - RFC 1035 (section 5) and RFC 1034 (section 3.6.1). - Examples - https://cloud.google.com/dns/records/json-record - items: - type: string - signatureRrdatas: - type: array - description: As defined in RFC 4034 (section 3.2). - items: - type: string - ttl: - type: integer - description: | - Number of seconds that this ResourceRecordSet can be cached by resolvers. - minimum: 0 - type: - type: string - description: | - The identifier of a supported record type. - https://cloud.google.com/dns/docs/overview#supported_dns_record_types - enum: - - A - - AAAA - - CAA - - CNAME - - IPSECKEY - - MX - - NAPTR - - NS - - PTR - - SOA - - SPF - - SRV - - SSHFP - - TLSA - - TXT diff --git a/dm/templates/dns_records/examples/dns_records.yaml b/dm/templates/dns_records/examples/dns_records.yaml deleted file mode 100644 index b45a11fe682..00000000000 --- a/dm/templates/dns_records/examples/dns_records.yaml +++ /dev/null @@ -1,54 +0,0 @@ -# Example of the DNS records template usage. -# -# This example creates DNS RecordSets to manage a set of DNS records. -# The records are created for a given managed zone, defined by -# the `zoneName` property, and a DNS name defined by the `dnsName` property. - -imports: - - path: templates/dns_records/dns_records.py - name: dns_records.py - -resources: -- name: test-dns-records - type: dns_records.py - properties: - zoneName: test-managed-zone - dnsName: foobar.local. - resourceRecordSets: - - name: www.foobar.local. - type: A - ttl: 20 - rrdatas: - - 10.1.1.1 - - name: www.foobar.local. - type: AAAA - ttl: 30 - rrdatas: - - 1002:db8::8bd:2001 - - name: mail.foobar.local. - type: MX - ttl: 300 - rrdatas: - - 5 smtp.fmail.foobar.local. - - 15 smtpx.mail.foobar.local. - - 25 smtp.mail.foobar.local. - - name: txt.foobar.local. - type: TXT - ttl: 235 - rrdatas: - - '"my super awesome text record"' - - name: 2.1.0.10.foobar.local. - type: PTR - ttl: 60 - rrdatas: - - sever.foobar.com. - - name: foobar.local. - type: SPF - ttl: 21600 - rrdatas: - - v=spf1 mx:foobar.com -all - - name: sip.foobar.local. - type: SRV - ttl: 21600 - rrdatas: - - 0 5 5060 sip.foobar.local. diff --git a/dm/templates/dns_records/tests/integration/dns_records.bats b/dm/templates/dns_records/tests/integration/dns_records.bats deleted file mode 100755 index 09bd3340d5c..00000000000 --- a/dm/templates/dns_records/tests/integration/dns_records.bats +++ /dev/null @@ -1,267 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save to a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # test specific variables - export CLOUDDNS_ZONE_NAME="test-managedzone-${RAND}" - export CLOUDDNS_DNS_NAME="${RAND}.com." - export A_RECORD_NAME="${CLOUDDNS_DNS_NAME}" - export AAAA_RECORD_NAME="${CLOUDDNS_DNS_NAME}" - export A_RECORD_IP="192.0.1.1" - export AAAA_RECORD_IP="1002:db8::8bd:2001" - export MX_RECORD_NAME="${CLOUDDNS_DNS_NAME}" - export MX_RECORD="25 smtp.mail.${CLOUDDNS_DNS_NAME}" - export TXT_RECORD_NAME="${CLOUDDNS_DNS_NAME}" - export TXT_RECORD="'\"my super awesome text record\"'" - export PTR_RECORD_NAME="${CLOUDDNS_DNS_NAME}" - export PTR_RECORD="server.${CLOUDDNS_DNS_NAME}" - export SPF_RECORD_NAME="${CLOUDDNS_DNS_NAME}" - export SPF_RECORD="'\"v=spf1 mx:${RAND}.com -all\"'" - export SRV_RECORD_NAME="${CLOUDDNS_DNS_NAME}" - export SRV_RECORD="0 5 5060 ${SRV_RECORD_NAME}" - -fi - - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - # Create DNS Managed Zone - gcloud dns managed-zones create --dns-name="${CLOUDDNS_DNS_NAME}" \ - --description="Test managed zone" "${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - # Delete DNS Managed Zone - echo "Deleting cloud DNS managed zone: ${CLOUDDNS_ZONE_NAME}" - gcloud dns managed-zones delete "${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment: ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "A record $A_RECORD_NAME is created " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(A)" \ - --format="csv[no-heading](name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${A_RECORD_NAME}" ]] -} - -@test "A record IP ${A_RECORD_IP} is in rrdatas " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(A)" \ - --format="csv[no-heading](DATA)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${A_RECORD_IP}" ]] -} - -@test "A record ${A_RECORD_NAME} has TTL set to 20 " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(A)" \ - --format="csv[no-heading](TTL)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "20" ]] -} - -@test "AAAA record ${AAAA_RECORD_NAME} is created " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(AAAA)" \ - --format="csv[no-heading](name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${AAAA_RECORD_NAME}" ]] -} - -@test "AAAA record IP ${AAAA_RECORD_IP} is in rrdatas " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(AAAA)" \ - --format="csv[no-heading](DATA)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${AAAA_RECORD_IP}" ]] -} - -@test "AAAA record ${AAAA_RECORD_NAME} has TTL set to 30 " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(AAAA)" \ - --format="csv[no-heading](TTL)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "30" ]] -} - -@test "MX record ${MX_RECORD_NAME} is created" { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(MX)" \ - --format="csv[no-heading](name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MX_RECORD_NAME}" ]] -} - -@test "MX record ${MX_RECORD} is in rrdatas " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(MX)" \ - --format="csv[no-heading](DATA)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MX_RECORD}" ]] -} - -@test "MX record ${MX_RECORD} TTL is set to 300 " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(MX)" \ - --format="csv[no-heading](TTL)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "300" ]] -} - -@test "TXT record ${TXT_RECORD_NAME} is created" { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(TXT)" \ - --format="csv[no-heading](name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${TXT_RECORD_NAME}" ]] -} - -@test "TXT record has data ${TXT_RECORD} in rrdatas " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(TXT)" \ - --format="csv[no-heading](DATA)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "my super awesome text record" ]] -} - -@test "TXT record: ${TXT_RECORD_NAME} has TTL set to 235 " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(TXT)" \ - --format="csv[no-heading](TTL)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "235" ]] -} - -@test "PTR record ${PTR_RECORD_NAME} is created " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(PTR)" \ - --format="csv[no-heading](name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${PTR_RECORD_NAME}" ]] -} - -@test "PTR record has data ${PTR_RECORD} in rrdatas " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(PTR)" \ - --format="csv[no-heading](DATA)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${PTR_RECORD}" ]] -} - -@test "PTR record ${PTR_RECORD_NAME} has TTL set to 60 " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(PTR)" \ - --format="csv[no-heading](TTL)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "60" ]] -} - -@test "SPF record ${SPF_RECORD_NAME} is created " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(SPF)" \ - --format="csv[no-heading](name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${SPF_RECORD_NAME}" ]] -} - -@test "SPF record has data ${SPF_RECORD} in rrdatas " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(SPF)" \ - --format="csv[no-heading](DATA)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "v=spf1" ]] -} - -@test "SPF record ${SPF_RECORD_NAME} has TTL set to 21600 " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(SPF)" \ - --format="csv[no-heading](TTL)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "21600" ]] -} - -@test "SRV record ${SRV_RECORD_NAME} is created " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(SRV)" \ - --format="csv[no-heading](name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${SRV_RECORD_NAME}" ]] -} - -@test "SRV record has data ${SRV_RECORD} in rrdatas" { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(SRV)" \ - --format="csv[no-heading](DATA)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${SRV_RECORD}" ]] -} - -@test "SRV record ${SRV_RECORD_NAME} has TTL set to 21600 " { - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="type=(SRV)" \ - --format="csv[no-heading](TTL)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "21600" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud dns record-sets list --zone="${CLOUDDNS_ZONE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --format=flattened - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "${A_RECORD_IP}" ]] - [[ ! "$output" =~ "${AAAA_RECORD_IP}" ]] -} - diff --git a/dm/templates/dns_records/tests/integration/dns_records.yaml b/dm/templates/dns_records/tests/integration/dns_records.yaml deleted file mode 100644 index c637294efb5..00000000000 --- a/dm/templates/dns_records/tests/integration/dns_records.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# Test of the DNS records template. -# - -imports: - - path: templates/dns_records/dns_records.py - name: dns_records.py - -resources: -- name: ${CLOUDDNS_ZONE_NAME} - type: dns_records.py - properties: - zoneName: ${CLOUDDNS_ZONE_NAME} - dnsName: ${CLOUDDNS_DNS_NAME} - resourceRecordSets: - - name: ${A_RECORD_NAME} - type: A - ttl: 20 - rrdatas: - - ${A_RECORD_IP} - - name: ${AAAA_RECORD_NAME} - type: AAAA - ttl: 30 - rrdatas: - - ${AAAA_RECORD_IP} - - name: ${MX_RECORD_NAME} - type: MX - ttl: 300 - rrdatas: - - ${MX_RECORD} - - 10 smtp.xmail.${RAND}.com. - - 15 smtp.mail.dev.${RAND}.com. - - name: ${TXT_RECORD_NAME} - type: TXT - ttl: 235 - rrdatas: - - ${TXT_RECORD} - - name: ${PTR_RECORD_NAME} - type: PTR - ttl: 60 - rrdatas: - - ${PTR_RECORD} - - name: ${SPF_RECORD_NAME} - type: SPF - ttl: 21600 - rrdatas: - - ${SPF_RECORD} - - name: ${SRV_RECORD_NAME} - type: SRV - ttl: 21600 - rrdatas: - - ${SRV_RECORD} diff --git a/dm/templates/external_load_balancer/README.md b/dm/templates/external_load_balancer/README.md deleted file mode 100644 index 0f9779bd76d..00000000000 --- a/dm/templates/external_load_balancer/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# External Load Balancer - -This template creates an HTTP(S), SSL Proxy, or TCP Proxy external load balancer. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.loadBalancerAdmin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the Deployment Manager service account -- For using the TCP Proxy load balancing, request access to the Compute ALPHA features - from the Cloud [Support](https://cloud.google.com/support/) - -## Deployment - -### Resources - -- [compute.v1.forwardingRule](https://cloud.google.com/compute/docs/reference/latest/forwardingRules) -- [compute.v1.targetHttpProxy](https://cloud.google.com/compute/docs/reference/latest/targetHttpProxies) -- [compute.v1.targetHttpsProxy](https://cloud.google.com/compute/docs/reference/latest/targetHttpsProxies) -- [compute.alpha.targetTcpProxy](https://www.googleapis.com/discovery/v1/apis/compute/alpha/rest) -- [compute.v1.targetSslProxy](https://cloud.google.com/compute/docs/reference/latest/targetSslProxies) -- [compute.v1.backendService](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices) -- [compute.v1.sslCertificate](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates) -- [compute.v1.urlMap](https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps) - -### Properties - -See the `properties` section in the schema file(s): - -- [External Load Balancer](external_load_balancer.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this - case, [examples/external\_load\_balancer.yaml](examples/external_load_balancer.yaml): - -```shell - cp templates/external_load_balancer/examples/external_load_balancer.yaml \ - my_external_load_balancer.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_external_load_balancer.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_external_load_balancer.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [External HTTP Load Balancer](examples/external_load_balancer_http.yaml) -- [External HTTPS Load Balancer](examples/external_load_balancer_https.yaml) -- [External SSL Load Balancer](examples/external_load_balancer_ssl.yaml) -- [External TCP Load Balancer](examples/external_load_balancer_tcp.yaml) diff --git a/dm/templates/external_load_balancer/examples/external_load_balancer_http.yaml b/dm/templates/external_load_balancer/examples/external_load_balancer_http.yaml deleted file mode 100644 index 6b981fa002c..00000000000 --- a/dm/templates/external_load_balancer/examples/external_load_balancer_http.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Example of the external load balancer template usage. -# -# This example creates an external HTTP load balancer. -# -# Replace the following placeholders with valid values: -# : a URL of the HTTP healthcheck -# : a URL of the instance group to accept -# incoming traffic at port 80 - -imports: - - path: templates/external_load_balancer/external_load_balancer.py - name: external_load_balancer.py - -resources: - - name: example-http-elb - type: external_load_balancer.py - properties: - portRange: 80 - backendServices: - - resourceName: default-backend-service - sessionAffinity: GENERATED_COOKIE - affinityCookieTtlSec: 1000 - portName: http - healthCheck: - backends: - - group: - balancingMode: UTILIZATION - maxUtilization: 0.8 - urlMap: - defaultService: default-backend-service diff --git a/dm/templates/external_load_balancer/examples/external_load_balancer_https.yaml b/dm/templates/external_load_balancer/examples/external_load_balancer_https.yaml deleted file mode 100644 index a3edef9f3be..00000000000 --- a/dm/templates/external_load_balancer/examples/external_load_balancer_https.yaml +++ /dev/null @@ -1,57 +0,0 @@ -# Example of the external load balancer template usage. -# -# This example creates an external HTTPS load balancer with multiple backend -# services. -# -# Replace the following placeholders with valid values: -# : a URL of the HTTPS healthcheck -# : a URL of the first instance group to accept -# incoming traffic at port 443 -# : a URL of the second instance group to accept -# incoming traffic at port 443 -# : A name of the host from which the /media path will be -# served -# : contents of the certificate file -# : contents of the private key file - -imports: - - path: templates/external_load_balancer/external_load_balancer.py - name: external_load_balancer.py - -resources: - - name: example-https-elb - type: external_load_balancer.py - properties: - portRange: 443 - backendServices: - - resourceName: static-backend-service - portName: https - healthCheck: - backends: - - group: - balancingMode: UTILIZATION - maxUtilization: 0.8 - - resourceName: media-backend-service - portName: https - healthCheck: - backends: - - group: - balancingMode: UTILIZATION - maxUtilization: 0.8 - urlMap: - defaultService: static-backend-service - hostRules: - - hosts: - - - pathMatcher: media-matcher - pathMatchers: - - name: media-matcher - defaultService: static-backend-service - pathRules: - - service: media-backend-service - paths: - - /media - ssl: - certificate: - certificate: - privateKey: diff --git a/dm/templates/external_load_balancer/examples/external_load_balancer_ssl.yaml b/dm/templates/external_load_balancer/examples/external_load_balancer_ssl.yaml deleted file mode 100644 index efd92e3ad38..00000000000 --- a/dm/templates/external_load_balancer/examples/external_load_balancer_ssl.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Example of the external load balancer template usage. -# -# This example creates an SSL Proxy load balancer. -# -# Replace the following placeholders with valid values: -# : a URL of the SSL healthcheck -# : a URL of the instance group to accept -# incoming traffic at port 443 -# : a URL of the SslCertificate resource - -imports: - - path: templates/external_load_balancer/external_load_balancer.py - name: external_load_balancer.py - -resources: - - name: example-ssl-elb - type: external_load_balancer.py - properties: - portRange: 443 - backendServices: - - resourceName: backend-service - portName: https - healthCheck: - backends: - - group: - balancingMode: UTILIZATION - maxUtilization: 0.8 - ssl: - certificate: - url: diff --git a/dm/templates/external_load_balancer/examples/external_load_balancer_tcp.yaml b/dm/templates/external_load_balancer/examples/external_load_balancer_tcp.yaml deleted file mode 100644 index eff7753505f..00000000000 --- a/dm/templates/external_load_balancer/examples/external_load_balancer_tcp.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Example of the external load balancer template usage. -# -# This example creates an TCP Proxy load balancer. As the underlying -# targetTcpProxy resource has the ALPHA availability, you need to -# enable the Compute ALPHA API to tun this example. -# -# Replace the following placeholders with valid values: -# : a URL of the TCP healthcheck -# : a URL of the instance group to accept -# incoming traffic at port 80 - -imports: - - path: templates/external_load_balancer/external_load_balancer.py - name: external_load_balancer.py - -resources: - - name: example-tcp-elb - type: external_load_balancer.py - properties: - portRange: 25 - backendServices: - - resourceName: backend-service - portName: http - healthCheck: - backends: - - group: - balancingMode: UTILIZATION - maxUtilization: 0.8 diff --git a/dm/templates/external_load_balancer/external_load_balancer.py b/dm/templates/external_load_balancer/external_load_balancer.py deleted file mode 100644 index b7466487571..00000000000 --- a/dm/templates/external_load_balancer/external_load_balancer.py +++ /dev/null @@ -1,313 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates an external load balancer. """ - -import copy -from hashlib import sha1 -import json - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - - -def get_backend_service(properties, backend_spec, res_name, project_id): - """ Creates the backend service. """ - - name = backend_spec.get('resourceName', res_name) - backend_name = backend_spec.get('name', name) - backend_properties = { - 'name': backend_name, - 'project': project_id, - 'loadBalancingScheme': 'EXTERNAL', - 'protocol': backend_spec.get('protocol', get_protocol(properties)), - } - - backend_resource = { - 'name': name, - 'type': 'backend_service.py', - 'properties': backend_properties - } - - optional_properties = [ - 'description', - 'backends', - 'timeoutSec', - 'sessionAffinity', - 'connectionDraining', - 'backends', - 'healthCheck', - 'healthChecks', - 'portName', - 'enableCDN', - 'affinityCookieTtlSec' - ] - - for prop in optional_properties: - set_optional_property(backend_properties, backend_spec, prop) - - return [backend_resource], [ - { - 'name': 'backendServiceName', - 'value': backend_name, - }, - { - 'name': 'backendServiceSelfLink', - 'value': '$(ref.{}.selfLink)'.format(name), - }, - ] - - -def get_forwarding_rule(properties, target, res_name, project_id): - """ Creates the forwarding rule. """ - - name = '{}-forwarding-rule'.format(res_name) - rule_properties = { - 'name': properties.get('name', res_name), - 'project': project_id, - 'loadBalancingScheme': 'EXTERNAL', - 'target': '$(ref.{}.selfLink)'.format(target['name']), - 'IPProtocol': 'TCP', - } - - rule_resource = { - 'name': name, - 'type': 'forwarding_rule.py', - 'properties': rule_properties, - 'metadata': { - 'dependsOn': [target['name']], - }, - } - - optional_properties = [ - 'description', - 'IPAddress', - 'ipVersion', - 'portRange', - 'labels', - ] - - for prop in optional_properties: - set_optional_property(rule_properties, properties, prop) - - return [rule_resource], [ - { - 'name': 'forwardingRuleName', - 'value': rule_properties['name'], - }, - { - 'name': 'forwardingRuleSelfLink', - 'value': '$(ref.{}.selfLink)'.format(name), - }, - { - 'name': 'IPAddress', - 'value': '$(ref.{}.IPAddress)'.format(name), - }, - ] - - -def get_backend_services(properties, res_name, project_id): - """ Creates all backend services to be used by the load balancer. """ - - backend_resources = [] - backend_outputs_map = { - 'backendServiceName': [], - 'backendServiceSelfLink': [] - } - backend_specs = properties['backendServices'] - - for backend_spec in backend_specs: - backend_res_name = '{}-backend-service-{}'.format(res_name, sha1(json.dumps(backend_spec).encode('utf-8')).hexdigest()[:10]) - resources, outputs = get_backend_service(properties, backend_spec, backend_res_name, project_id) - backend_resources += resources - # Merge outputs with the same name. - for output in outputs: - backend_outputs_map[output['name']].append(output['value']) - - backend_outputs = [] - for key, value in backend_outputs_map.items(): - backend_outputs.append({'name': key + 's', 'value': value}) - - return backend_resources, backend_outputs - - -def get_ref(name, prop='selfLink'): - """ Creates reference to a property of a given resource. """ - - return '$(ref.{}.{})'.format(name, prop) - - -def update_refs_recursively(properties): - """ Replaces service names with the service selflinks recursively. """ - - for prop in properties: - value = properties[prop] - if prop == 'defaultService' or prop == 'service': - is_regular_name = not '.' in value and not '/' in value - if is_regular_name: - properties[prop] = get_ref(value) - elif isinstance(value, dict): - update_refs_recursively(value) - elif isinstance(value, list): - for item in value: - if isinstance(item, dict): - update_refs_recursively(item) - - -def get_url_map(properties, res_name, project_id): - """ Creates a UrlMap resource. """ - - spec = copy.deepcopy(properties) - spec['project'] = project_id - spec['name'] = properties.get('name', res_name) - update_refs_recursively(spec) - - resource = { - 'name': res_name, - 'type': 'url_map.py', - 'properties': spec, - } - - self_link = '$(ref.{}.selfLink)'.format(res_name) - - return self_link, [resource], [ - { - 'name': 'urlMapName', - 'value': '$(ref.{}.name)'.format(res_name) - }, - { - 'name': 'urlMapSelfLink', - 'value': self_link - } - ] - - -def get_target_proxy(properties, res_name, project_id, bs_resources): - """ Creates a target proxy resource. """ - - protocol = get_protocol(properties) - - depends = [] - if 'HTTP' in protocol: - urlMap = copy.deepcopy(properties['urlMap']) - if 'name' not in urlMap and 'name' in properties: - urlMap['name'] = '{}-url-map'.format(properties['name']) - target, resources, outputs = get_url_map( - urlMap, - '{}-url-map'.format(res_name), - project_id - ) - depends.append(resources[0]['name']) - else: - depends.append(bs_resources[0]['name']) - target = get_ref(bs_resources[0]['name']) - resources = [] - outputs = [] - - name = '{}-target'.format(res_name) - proxy = { - 'name': name, - 'type': 'target_proxy.py', - 'properties': { - 'name': '{}-target'.format(properties.get('name', res_name)), - 'project': project_id, - 'protocol': protocol, - 'target': target - }, - 'metadata': { - 'dependsOn': [depends], - }, - } - - for prop in ['proxyHeader', 'quicOverride']: - set_optional_property(proxy['properties'], properties, prop) - - outputs.extend( - [ - { - 'name': 'targetProxyName', - 'value': '$(ref.{}.name)'.format(name) - }, - { - 'name': 'targetProxySelfLink', - 'value': '$(ref.{}.selfLink)'.format(name) - }, - { - 'name': 'targetProxyKind', - 'value': '$(ref.{}.kind)'.format(name) - } - ] - ) - - if 'ssl' in properties: - ssl_spec = properties['ssl'] - proxy['properties']['ssl'] = ssl_spec - if 'certificate' in ssl_spec: - creates_new_certificate = not 'url' in ssl_spec.get('certificate') - if creates_new_certificate: - outputs.extend( - [ - { - 'name': 'certificateName', - 'value': '$(ref.{}.certificateName)'.format(name) - }, - { - 'name': 'certificateSelfLink', - 'value': '$(ref.{}.certificateSelfLink)'.format(name) - } - ] - ) - - return [proxy] + resources, outputs - - -def get_protocol(properties): - """ Finds what network protocol to use. """ - - is_web = 'urlMap' in properties - is_secure = 'ssl' in properties - - if is_web: - if is_secure: - return 'HTTPS' - return 'HTTP' - - if is_secure: - return 'SSL' - return 'TCP' - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - - # Forwarding rule + target proxy + backend service = ELB - bs_resources, bs_outputs = get_backend_services(properties, context.env['name'], project_id) - target_resources, target_outputs = get_target_proxy(properties, context.env['name'], project_id, bs_resources) - rule_resources, rule_outputs = get_forwarding_rule( - properties, - target_resources[0], - context.env['name'], - project_id - ) - - return { - 'resources': bs_resources + target_resources + rule_resources, - 'outputs': bs_outputs + target_outputs + rule_outputs, - } diff --git a/dm/templates/external_load_balancer/external_load_balancer.py.schema b/dm/templates/external_load_balancer/external_load_balancer.py.schema deleted file mode 100644 index e347786fe3d..00000000000 --- a/dm/templates/external_load_balancer/external_load_balancer.py.schema +++ /dev/null @@ -1,641 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: External Load Balancer - author: Sourced Group Inc. - version: 1.1.2 - description: | - Supports creation of an HTTP(S), SSL Proxy, or TCP Proxy external load - balancer. For details, visit https://cloud.google.com/load-balancing/docs/. - -imports: - - path: ../backend_service/backend_service.py - name: backend_service.py - - path: ../forwarding_rule/forwarding_rule.py - name: forwarding_rule.py - - path: ../url_map/url_map.py - name: url_map.py - - path: ../ssl_certificate/ssl_certificate.py - name: ssl_certificate.py - - path: ../target_proxy/target_proxy.py - name: target_proxy.py - -additionalProperties: false - -oneOf: - - not: - required: - - urlMap - - ssl - portRange: - type: array - items: - - type: string - enum: - - 25 - - 43 - - 110 - - 143 - - 195 - - 443 - - 465 - - 587 - - 700 - - 993 - - 995 - - 1883 - - 5222 - - type: integer - enum: - - 25 - - 43 - - 110 - - 143 - - 195 - - 443 - - 465 - - 587 - - 700 - - 993 - - 995 - - 1883 - - 5222 - - required: - - urlMap - - required: - - ssl - -properties: - name: - type: string - description: | - The external load balancer name. This name is assigned to the - underlying forwarding rule resource. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the service. - description: - type: string - description: | - The description of the external load balancer (optional). This - description is assigned to the underlying forwarding rule resource. - IPAddress: - type: string - description: | - The IP address on behalf of which the forwarding rule serves. Can be - specified either by a literal IP address or by a URL reference to an - existing Address resource. - portRange: - type: [integer,string] - description: | - The port range; only packets addressed to ports in that range are - forwarded to the target. - labels: - type: object - description: | - Labels to apply to this instance. These can be later modified by the setLabels method. - - An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - - ipVersion: - type: string - description: The IP version of the load balancer. - enum: - - IPV4 - - IPV6 - urlMap: - type: object - additionalProperties: false - properties: - name: - type: string - description: | - Must comply with RFC1035. Specifically, the name must be 1-63 characters long and match - the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, - and all following characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - ELB name would be used if omitted. - description: - type: string - description: The resource description (optional). - defaultService: - type: string - description: | - The full or partial URL of the defaultService resource to which traffic is directed if none of the - hostRules match. If defaultRouteAction is additionally specified, advanced routing actions like URL Rewrites, - etc. take effect prior to sending the request to the backend. However, if defaultService is specified, - defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any - weightedBackendServices, service must not be specified. - - Only one of defaultService, defaultUrlRedirect or defaultRouteAction.weightedBackendService must be set. - - Authorization requires one or more of the following Google IAM permissions on the specified resource defaultService: - - compute.backendBuckets.use - - compute.backendServices.use - hostRules: - type: array - uniqueItems: true - description: | - The list of HostRules to use against the URL. - items: - type: object - additionalProperties: false - properties: - description: - type: string - description: | - The resource description (optional). - hosts: - type: array - description: | - The list of host patterns to match. They must be valid hostnames, except * will match any string of - ([a-z0-9-.]*). In that case, * must be the first character and must be followed - in the pattern by either - or .. - items: - type: string - pathMatcher: - type: string - description: | - The name of the PathMatcher to use for matching the path portion of - the URL if the hostRule matches the URL's host portion. - pathMatchers: - type: array - uniqueItems: true - description: | - The list of the named PathMatchers to use against the URL. - items: - type: object - additionalProperties: false - properties: - name: - type: string - description: | - The name to which the PathMatcher is referred by the HostRule. - description: - type: string - description: | - The resource description (optional). - defaultService: - type: string - description: | - The full or partial URL to the BackendService resource. This will be used if none of the pathRules or - routeRules defined by this PathMatcher are matched. For example, the following are - all valid URLs to a BackendService resource: - - https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService - - compute/v1/projects/project/global/backendServices/backendService - - global/backendServices/backendService - - If defaultRouteAction is additionally specified, advanced routing actions like URL Rewrites, etc. take - effect prior to sending the request to the backend. However, if defaultService is specified, - defaultRouteAction cannot contain any weightedBackendServices. - Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified. - Only one of defaultService, defaultUrlRedirect or defaultRouteAction.weightedBackendService must be set. - - Authorization requires one or more of the following Google IAM permissions on the specified resource defaultService: - - compute.backendBuckets.use - - compute.backendServices.use - - Authorization requires one or more of the following Google IAM permissions on the specified resource defaultService: - - compute.backendBuckets.use - - compute.backendServices.use - pathRules: - type: array - uniqueItems: true - description: | - The list of path rules. - items: - type: object - additionalProperties: false - properties: - service: - type: string - description: | - The full or partial URL of the backend service resource to which traffic is directed if this - rule is matched. If routeAction is additionally specified, advanced routing actions like - URL Rewrites, etc. take effect prior to sending the request to the backend. However, if service - is specified, routeAction cannot contain any weightedBackendService s. Conversely, if routeAction - specifies any weightedBackendServices, service must not be specified. - - Only one of urlRedirect, service or routeAction.weightedBackendService must be set. - - Authorization requires one or more of the following Google IAM permissions on the specified resource service: - - compute.backendBuckets.use - - compute.backendServices.use - paths: - type: array - uniqueItems: true - description: | - The list of the path patterns to match. Each pattern must - start with /. Asterisks (*) are allowed only at the end, - following the /. The string fed to the path matcher does not - include any text after the first ? or #, and those characters - are not allowed here. - items: - type: string - tests: - type: array - uniqueItems: true - description: | - The list of the expected URL mapping tests. Request to update this UrlMap - succeed only if all of the test cases pass. You can specify a maximum of - 100 tests per UrlMap. - items: - type: object - additionalProperties: false - properties: - description: - type: string - description: | - The test case description. - host: - type: string - description: | - The host portion of the URL. - path: - type: string - description: | - The path portion of the URL. - service: - type: string - description: | - The BackendService resource the given URL is expected to be mapped - to. - backendServices: - type: array - uniqueItems: true - description: | - Backend services to create. These services will deliver traffic to the - instance groups. - items: - type: object - additionalProperties: false - oneOf: - - required: - - healthCheck - - required: - - healthChecks - required: - - backends - properties: - resourceName: - type: string - description: Overrides resource name. - name: - type: string - description: The backend service name. Resource name is used if omitted. - description: - type: string - description: The resource description (optional). - backends: - type: array - uniqueItems: true - description: | - The list of backends (instance groups) to which the backend service - distributes traffic. - items: - type: object - additionalProperties: false - required: - - group - properties: - description: - type: string - description: The resource description (optional). - group: - type: string - description: | - The fully-qualified URL of the Instance Group resource. - balancingMode: - type: string - description: The balancing mode for the backend. - enum: - - UTILIZATION - - RATE - - CONNECTION - maxUtilization: - type: number - minimum: 0.0 - maximum: 1.0 - description: | - The ratio that defines the CPU utilization target for the - group. The default value is 0.8. Used when balancingMode is - UTILIZATION. - maxRate: - type: number - description: | - The maximum number of requests per second (RPS) for the - group. Can be used with either RATE or UTILIZATION balancing - mode. Mandatory with the RATE mode. For the RATE mode, either - maxRate or maxRatePerInstance must be set. - maxRatePerInstance: - type: number - description: | - The maximum number of requests per second (RPS) that a single - backend instance can handle. This is used to calculate the - capacity of the group. Can be used with any balancing mode. - For the RATE mode, either maxRate or maxRatePerInstance must - be set. - maxConnections: - type: number - description: | - The maximum number of simultaneous connections for the group. - Can be used with either CONNECTION or UTILIZATION balancing - mode. For the CONNECTION mode, either maxConnections or - maxConnectionsPerInstance must be set. - maxConnectionsPerInstance: - type: number - description: | - The maximum number of simultaneous connections that a single - backend instance can handle. This is used to calculate the - capacity of the group. Can be used in either CONNECTION or - UTILIZATION balancing modes. For the CONNECTION mode, either - maxConnections or maxConnectionsPerInstance must be set. - capacityScaler: - type: number - default: 1 - description: | - The multiplier applied to the group's maximum servicing - capacity (based on UTILIZATION, RATE, or CONNECTION). - minimum: 0 - maximum: 1 - healthCheck: - type: string - description: | - The URL of the HealthCheck, HttpHealthCheck, or HttpsHealthCheck - resource for healthchecking the backend service. - healthChecks: - type: array - uniqueItems: true - maxItems: 1 - description: | - The URL of the HealthCheck, HttpHealthCheck, or HttpsHealthCheck resource - for healthchecking the backend service. - items: - type: string - timeoutSec: - type: number - default: 30 - description: | - The number of seconds to wait for the backend response before - considering the request as failed. - protocol: - type: string - description: | - The protocol the backend service uses to communicate with backends. - The default is HTTP. For INTERNAL load balancing, the possible values are - TCP and UDP, and the default is TCP. - enum: - - HTTP - - HTTPS - - TCP - - UDP - - SSL - portName: - type: string - description: | - The backend port name. The same name must appear in the instance - groups referenced by this service. - enableCDN: - type: boolean - description: | - Defines whether Cloud CDN is enabled for the backend service. - sessionAffinity: - type: string - default: NONE - description: The type of the session affinity to use. - enum: - - NONE - - GENERATED_COOKIE - - CLIENT_IP - affinityCookieTtlSec: - type: integer - minimum: 0 - maximum: 86400 - description: | - The lifetime of cookies, in seconds, if sessionAffinity is - GENERATED_COOKIE. If set to 0, the cookies are non-persistent and - last only until the end of the browser session (or equivalent). - connectionDraining: - type: object - additionalProperties: false - description: The connection draining settings. - properties: - drainingTimeoutSec: - type: integer - description: | - The time period during which the instance is drained (not - accepting new connections but still processing the ones - accepted earlier). - cdnPolicy: - type: object - additionalProperties: false - description: The cloud CDN configuration for the backend service. - properties: - cacheKeyPolicy: - type: object - additionalProperties: false - description: The CacheKeyPolicy for the CdnPolicy. - properties: - includeProtocol: - type: boolean - description: | - Defines whether the HTTP and HTTPS requests are cached - separately. - includeHost: - type: boolean - description: | - If True, requests to different hosts are cached separately. - includeQueryString: - type: boolean - description: | - If True, includes query string parameters in the cache key - according to queryStringWhitelist and queryStringBlacklist. - If neither of the two is set, the entire query string is - included. If False, the query string is excluded from the - cache key entirely. - queryStringWhitelist: - type: array - uniqueItems: true - description: | - The names of the query string parameters to include in - cache keys. All other parameters are excluded. Specify - either queryStringWhitelist or queryStringBlacklist, not - both. '&' and '=' are percent-encoded and not treated - as delimiters. - items: - type: string - queryStringBlacklist: - type: array - uniqueItems: true - description: | - The names of the query string parameters to exclude from - the cache keys. All other parameters are included. Specify - either queryStringWhitelist or queryStringBlacklist, not - both. '&' and '=' are percent-encoded and not treated as - delimiters. - items: - type: string - signedUrlCacheMaxAgeSec: - type: string - default: 3600s - description: | - The maximum number of seconds the response to a signed URL - request is considered fresh. After this time period, the - response is revalidated before being served. When serving - responses to the signed URL requests, Cloud CDN internally - behaves as if all responses from the backend have the - "Cache-Control: public, max-age=[TTL]" header, - regardless of any existing Cache-Control header. The actual - headers served in responses are not altered. - quicOverride: - type: string - default: NONE - description: | - The QUIC override policy for the HTTPS Load Balancer's proxy - resource. Determines whether the load balancer will attempt to - negotiate QUIC with clients. Valid values are NONE, ENABLE, and - DISABLE. Enables QUIC when set to ENABLE; disables QUIC when set to - DISABLE. When set to NONE, the QUIC policy is used with no user - overrides. If no value is specified, defaults to NONE. This field - is used for the HTTPS load balancing mode, i.e., when both the URL Map - and SSL are configured. - enum: - - NONE - - ENABLE - - DISABLE - proxyHeader: - type: string - default: NONE - description: | - The type of proxy header to append before sending data to the - backend: NONE or PROXY_V1. The default is NONE. Used only for TCP and SSL - load balancing modes, i.e., when the URL Map is configured. - enum: - - NONE - - PROXY_V1 - ssl: - type: object - additionalProperties: false - description: | - Encryption settings for connections processed by the resource. - oneOf: - - required: - - sslCertificates - - required: - - certificate - properties: - sslCertificates: - type: array - uniqueItems: true - description: | - URLs to SslCertificate resources that are used to authenticate connections to Backends. - At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. - - Authorization requires the following Google IAM permission on the specified resource sslCertificates: - - compute.sslCertificates.get - minItems: 0 - maxItems: 15 - items: - type: string - certificate: - type: object - additionalProperties: false - description: SSL certificate settings. - oneOf: - - required: - - url - - required: - - privateKey - - certificate - properties: - url: - type: string - description: The URL of an existing SSL certificate resource. - name: - type: string - description: The name of the SSL certificate resource. - description: - type: string - description: | - The description of the SSL certificate resource (optional). - privateKey: - type: string - description: The write-only private key in the PEM format. - certificate: - type: string - description: | - The local certificate file. The certificate must be in the PEM - format. The certificate chain must be no greater than 5 certs - long. The chain must include at least one intermediate cert. - sslPolicy: - type: string - description: | - The URL of the SslPolicy resource to be associated with this - resource. If not set, the proxy resource will have no SSL policy - configured. - - -outputs: - forwardingRuleName: - type: string - description: The name of the external load balancer's forwarding rule. - forwardingRuleSelfLink: - type: string - description: | - The URI (SelfLink) of the external load balancer's forwarding rule. - IPAddress: - type: string - description: | - The IP address on whose behalf the external load balancer - (the forwarding rule) operates. - backendServiceNames: - type: array - description: | - The names of the external load balancer's backend services. - backendServiceSelfLinks: - type: string - description: The URIs (SelfLinks) of the backend service resources. - targetProxyName: - type: string - description: | - The name of the target proxy resource created for the load balancer. - targetProxySelfLink: - type: string - description: | - The URI (SelfLink) of the URL target proxy resource. - targetProxyKind: - type: string - description: | - The type of the target proxy resource created for the load balancer. - certificateName: - type: string - description: | - The name of the SSL certificate, if one is to be created. - certificateSelfLink: - type: string - description: | - The URI (SelfLink) of the SSL certificate, if one is to be created. - -documentation: - - templates/external_load_balancer/README.md - -examples: - - templates/external_load_balancer/examples/external_load_balancer_http.yaml - - templates/external_load_balancer/examples/external_load_balancer_https.yaml - - templates/external_load_balancer/examples/external_load_balancer_ssl.yaml - - templates/external_load_balancer/examples/external_load_balancer_tcp.yaml diff --git a/dm/templates/external_load_balancer/tests/integration/external_load_balancer.bats b/dm/templates/external_load_balancer/tests/integration/external_load_balancer.bats deleted file mode 100755 index db060da3b00..00000000000 --- a/dm/templates/external_load_balancer/tests/integration/external_load_balancer.bats +++ /dev/null @@ -1,190 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - export SSL_RES_NAME="test-ssl-elb-${RAND}" - export SSL_TARGET_NAME="${SSL_RES_NAME}-target" - export SSL_PORT_RANGE="443" - export SSL_PORT_NAME="https" - export SSL_PROXY_HEADER="PROXY_V1" - export SSL_BACKEND_NAME="test-ssl-backend-service-${RAND}" - export SSL_HEALTHCHECK_NAME="test-ssl-healthcheck-${RAND}" - export HTTPS_IGM_NAME="test-zonal-igm-https-${RAND}" - export HTTPS_RES_NAME="test-https-elb-${RAND}" - export HTTPS_CERT_NAME="${HTTPS_RES_NAME}-target-ssl-cert" - export HTTPS_URL_MAP_NAME="${HTTPS_RES_NAME}-url-map" - export HTTPS_FIRST_BACKEND_NAME="first-bs-${RAND}" - export HTTPS_HEALTHCHECK_NAME="test-healthcheck-https-${RAND}" - export HTTPS_PORT_RANGE="443" - export HTTPS_PORT_NAME="https" - export HTTPS_TARGET_NAME="${HTTPS_RES_NAME}-target" - export QUIC_OVERRIDE="ENABLE" - export HTTP_RES_NAME="http-elb-${RAND}" - export HTTP_NAME="http-elb-name-${RAND}" - export HTTP_URL_MAP_NAME="${HTTP_NAME}-url-map" - export HTTP_TARGET_NAME="${HTTP_NAME}-target" - export HTTP_DESCRIPTION="http-elb-description" - export HTTP_PORT_RANGE="80" - export HTTP_FIRST_BACKEND_NAME="first-http-bs-${RAND}" - export HTTP_FIRST_BACKEND_DESC="backend-service-description" - export HTTP_SECOND_BACKEND_NAME="second-http-bs-${RAND}" - export HTTP_PORT_NAME="http" - export HTTP_ENABLE_CDN="true" - export HTTP_HEALTHCHECK_NAME="test-healthcheck-http-${RAND}" - export HTTP_IGM_NAME="zonal-igm-http-${RAND}" - export TIMEOUT_SEC="70" - export SESSION_AFFINITY="GENERATED_COOKIE" - export SESSION_AFFINITY_TTL="1000" - export DRAINING_TIMEOUT="100" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "$output" - [[ "$status" -eq 0 ]] -} - -@test "Verifying HTTP ELB forwarding rule" { - run gcloud compute forwarding-rules describe "${HTTP_NAME}" \ - --global \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "IPProtocol: TCP" ]] - [[ "$output" =~ "loadBalancingScheme: EXTERNAL" ]] - [[ "$output" =~ "description: ${HTTP_DESCRIPTION}" ]] - [[ "$output" =~ "portRange: ${HTTP_PORT_RANGE}-${HTTP_PORT_RANGE}" ]] - [[ "$output" =~ "targetHttpProxies/${HTTP_TARGET_NAME}" ]] -} - -@test "Verifying HTTP ELB URL Map references for two backend services" { - run gcloud compute url-maps describe "${HTTP_URL_MAP_NAME}" \ - --format="value(defaultService)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${HTTP_FIRST_BACKEND_NAME}" ]] - - run gcloud compute url-maps describe "${HTTP_URL_MAP_NAME}" \ - --format="value(pathMatchers[0].defaultService)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${HTTP_SECOND_BACKEND_NAME}" ]] -} - -@test "Verifying HTTP ELB first backend service" { - run gcloud compute backend-services describe "${HTTP_FIRST_BACKEND_NAME}" \ - --global \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "sessionAffinity: ${SESSION_AFFINITY}" ]] - [[ "$output" =~ "affinityCookieTtlSec: ${SESSION_AFFINITY_TTL}" ]] - [[ "$output" =~ "${HTTP_IGM_NAME}" ]] - [[ "$output" =~ "drainingTimeoutSec: ${DRAINING_TIMEOUT}" ]] - [[ "$output" =~ "description: ${HTTP_FIRST_BACKEND_DESC}" ]] - [[ "$output" =~ "enableCDN: ${HTTP_ENABLE_CDN}" ]] - [[ "$output" =~ "${HTTP_HEALTHCHECK_NAME}" ]] - [[ "$output" =~ "loadBalancingScheme: EXTERNAL" ]] - [[ "$output" =~ "portName: ${HTTP_PORT_NAME}" ]] - [[ "$output" =~ "protocol: HTTP" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] -} - -@test "Verifying HTTP ELB second backend service" { - run gcloud compute backend-services describe \ - "${HTTP_SECOND_BACKEND_NAME}" --global \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying HTTPS ELB forwarding rule" { - run gcloud compute forwarding-rules describe "${HTTPS_RES_NAME}" \ - --global \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "loadBalancingScheme: EXTERNAL" ]] - [[ "$output" =~ "portRange: ${HTTPS_PORT_RANGE}-${HTTPS_PORT_RANGE}" ]] - [[ "$output" =~ "targetHttpsProxies/${HTTPS_TARGET_NAME}" ]] -} - -@test "Verifying HTTPS ELB proxy settings" { - run gcloud compute target-https-proxies describe "${HTTPS_TARGET_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "quicOverride: ${QUIC_OVERRIDE}" ]] - [[ "$output" =~ "sslCertificates/${HTTPS_CERT_NAME}" ]] - [[ "$output" =~ "urlMaps/${HTTPS_URL_MAP_NAME}" ]] -} - -@test "Verifying SSL ELB forwarding rule" { - run gcloud compute forwarding-rules describe "${SSL_RES_NAME}" \ - --global \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "portRange: ${SSL_PORT_RANGE}-${SSL_PORT_RANGE}" ]] - [[ "$output" =~ "targetSslProxies/${SSL_TARGET_NAME}" ]] -} - -@test "Verifying SSL ELB proxy settings" { - run gcloud compute target-ssl-proxies describe "${SSL_TARGET_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "proxyHeader: ${SSL_PROXY_HEADER}" ]] - [[ "$output" =~ "sslCertificates/${HTTPS_CERT_NAME}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - diff --git a/dm/templates/external_load_balancer/tests/integration/external_load_balancer.yaml b/dm/templates/external_load_balancer/tests/integration/external_load_balancer.yaml deleted file mode 100644 index d3939a33492..00000000000 --- a/dm/templates/external_load_balancer/tests/integration/external_load_balancer.yaml +++ /dev/null @@ -1,234 +0,0 @@ -# Test of the external load balancer template. - -imports: - - path: templates/external_load_balancer/external_load_balancer.py - name: external_load_balancer.py - -resources: - - name: ${SSL_RES_NAME} - type: external_load_balancer.py - properties: - portRange: ${SSL_PORT_RANGE} - backendServices: - - name: ${SSL_BACKEND_NAME} - healthChecks: - - $(ref.${SSL_HEALTHCHECK_NAME}.selfLink) - portName: ${SSL_PORT_NAME} - backends: - - group: $(ref.${HTTPS_IGM_NAME}.instanceGroup) - proxyHeader: ${SSL_PROXY_HEADER} - ssl: - certificate: - url: $(ref.${HTTPS_RES_NAME}.certificateSelfLink) - labels: - name: testlabelname - owner: megatron - - name: ${HTTP_RES_NAME} - type: external_load_balancer.py - properties: - name: ${HTTP_NAME} - description: ${HTTP_DESCRIPTION} - portRange: ${HTTP_PORT_RANGE} - backendServices: - - resourceName: ${HTTP_FIRST_BACKEND_NAME} - description: ${HTTP_FIRST_BACKEND_DESC} - timeoutSec: ${TIMEOUT_SEC} - sessionAffinity: ${SESSION_AFFINITY} - affinityCookieTtlSec: ${SESSION_AFFINITY_TTL} - connectionDraining: - drainingTimeoutSec: ${DRAINING_TIMEOUT} - portName: ${HTTP_PORT_NAME} - enableCDN: ${HTTP_ENABLE_CDN} - healthCheck: $(ref.${HTTP_HEALTHCHECK_NAME}.selfLink) - backends: - - group: $(ref.${HTTP_IGM_NAME}.instanceGroup) - - resourceName: ${HTTP_SECOND_BACKEND_NAME} - healthCheck: $(ref.${HTTP_HEALTHCHECK_NAME}.selfLink) - backends: - - group: $(ref.${HTTP_IGM_NAME}.instanceGroup) - urlMap: - defaultService: ${HTTP_FIRST_BACKEND_NAME} - hostRules: - - hosts: - - example.com - pathMatcher: example-matcher - pathMatchers: - - name: example-matcher - defaultService: ${HTTP_SECOND_BACKEND_NAME} - - - name: ${HTTPS_RES_NAME}-2 - type: external_load_balancer.py - properties: - portRange: ${HTTPS_PORT_RANGE} - quicOverride: ${QUIC_OVERRIDE} - backendServices: - - resourceName: ${HTTPS_FIRST_BACKEND_NAME}-2 - healthCheck: $(ref.${HTTPS_HEALTHCHECK_NAME}.selfLink) - portName: ${HTTPS_PORT_NAME} - backends: - - group: $(ref.${HTTPS_IGM_NAME}.instanceGroup) - urlMap: - defaultService: ${HTTPS_FIRST_BACKEND_NAME}-2 - ssl: - sslCertificates: - - $(ref.${HTTPS_RES_NAME}.certificateSelfLink) - - - name: ${HTTPS_RES_NAME} - type: external_load_balancer.py - properties: - portRange: ${HTTPS_PORT_RANGE} - quicOverride: ${QUIC_OVERRIDE} - backendServices: - - resourceName: ${HTTPS_FIRST_BACKEND_NAME} - healthCheck: $(ref.${HTTPS_HEALTHCHECK_NAME}.selfLink) - portName: ${HTTPS_PORT_NAME} - backends: - - group: $(ref.${HTTPS_IGM_NAME}.instanceGroup) - urlMap: - defaultService: ${HTTPS_FIRST_BACKEND_NAME} - ssl: - certificate: - certificate: | - -----BEGIN CERTIFICATE----- - MIIDODCCAiACCQCqBGuEeBXJTjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJD - QTEQMA4GA1UECAwHT250YXJpbzEQMA4GA1UEBwwHVG9yb250bzEVMBMGA1UECgwM - RXhhbXBsZSBPcmcuMRQwEgYDVQQDDAtleGFtcGxlLmNvbTAeFw0xODEwMTEyMDEy - MjVaFw0xOTEwMTEyMDEyMjVaMF4xCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRh - cmlvMRAwDgYDVQQHDAdUb3JvbnRvMRUwEwYDVQQKDAxFeGFtcGxlIE9yZy4xFDAS - BgNVBAMMC2V4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC - AQEA5yLVBWSqKRWSJrGh2nbW0j+Soy+uvDKCjSZtXIVIcWvSP+WXd6RE2zlsNee4 - UA90Jjhx6Si2MxraCNblm4MJSQg46irBn4Vmex/2iY2vD1MbMEusTNIfpDh3A27H - qdBe+WSO0uHXfmgC68M8mgTMcMLVoUsGgv8B710qBN1D9EKPZdEhYBAEhC1RFj+8 - o3krWa983QFVND4PeFJSZe0LxAg44/bHVFNKK5Ub+TPa9P3t86SpoNj9/M7DPSkh - AtqmHL+90G0gvkfvtaoNRHHdqk2X+Uz3cUXWgl8xE+X5wcWu7r3cMxPaJvuLldJa - SIcc4YIlKOB0nFDKPK+iy7LqPwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAdf4dG - IkEmdNmTeGPVOUis+7ziWzRPxt8Vpmuq24z4H9mIkAPo/2aLpMKH7bloeYvz8blu - 5VQZx7StoE5Sde1ss/AoaL1dVJi/dgmeN2cHy7J6POu3e9n6yXGiIh0qHlFe83nJ - RVIqtN9QGGuabGt3WGbKElMKwrCl9NGhExi/LntPFllXfTLb2pVGXH47ZihynbUj - 4S21+KnQUPjhg6Na6hP3qLVqSYtWataJFpy6DOG1wgoAWjagNc3ltGdmv6O/ZkI3 - 3vymENyn8G7n+Z1knXUXxv4rJoeiYbZ7/2/bQ8BTc/RI5qnhzO8VYmyAZrrKGZnD - W2xuikK4nQHsideP - -----END CERTIFICATE----- - privateKey: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEA5yLVBWSqKRWSJrGh2nbW0j+Soy+uvDKCjSZtXIVIcWvSP+WX - d6RE2zlsNee4UA90Jjhx6Si2MxraCNblm4MJSQg46irBn4Vmex/2iY2vD1MbMEus - TNIfpDh3A27HqdBe+WSO0uHXfmgC68M8mgTMcMLVoUsGgv8B710qBN1D9EKPZdEh - YBAEhC1RFj+8o3krWa983QFVND4PeFJSZe0LxAg44/bHVFNKK5Ub+TPa9P3t86Sp - oNj9/M7DPSkhAtqmHL+90G0gvkfvtaoNRHHdqk2X+Uz3cUXWgl8xE+X5wcWu7r3c - MxPaJvuLldJaSIcc4YIlKOB0nFDKPK+iy7LqPwIDAQABAoIBACHHm25gWeYLOwLg - rxDokVjE5b9ntpfWofHTDeSZrg61fVLNUSexIEcRy1jNdshsmcMEONGkm4w4fmkQ - Txo9OlwsEXVXrliL/IA+GZ/czxrkQHL8fD/17Z3oiqw7wn5074xvP9heHUpiFRsz - u2WfEeng76vU9Syr7DJ5YSy40beew48gJsfclbbAWl1GQ4s1wluoMlutCWjRKSAD - Qg1pjJQuTHDpD+PNgHrx4Xbyjyo6tGqcdt9B0crhuxwTZXUogQsRKRuMHlxxBsbm - kINhSsNf8V8iRCBtZ4FPWcq+Rk/KntNzB9NZQFmrH5hS0oQmZjzNAyzCXIaYTji7 - Ju8XDaECgYEA9hUDBBwniphLZxvIC8GHVgAFx76Xw085bksVI0jNl2yG1HgNjCNA - W7DXJnyAtJZQjaItZfvB/tMm/ZAypf77tnru2n/uRvB4uG1Yh7RSy7rhLpibvTpU - e+DHm2c6kVW6Ng4q6rFxaunpjKEaeZO8pKowUu4YGU9YaSqvIGwoPFcCgYEA8HOc - 1J5Rop56BPvJgozqQRRQ3Q3AFfzlyYEniF35twIqnehemU3nJMdVp9jbZizOcrmu - ZBma5c5P5Bjgam3SQvswTUxmbIZ2VvvXOv5aPeldNdFHrADpVmOdKwcPxQ8qx+IT - GK3rrVRkH6+JByseHhxl3igIM7fAtbd27ENDkFkCgYEA9YmhqMgu7CtpkUg3IwPH - dhgvrE6QP2EdfN+OB9bszNqM7hOb8Oh7nwGkq9Iu2gHh/nCDu+6ocwtdLERlRRxX - LI0dJwffSQlIaz0vyLg0pPOjHEtJmlZJVhHDGVy3I6zWUHlyeRr0gClFz/wv3n97 - CxKFhTns8dQp80WT2FYTD6ECgYBU0KMYSIQJNZda3Km22BflPtJLNwdzehJf4qPc - MTHdQPFhY87Cir0mtv1ayF6TiuiDhUWjX3jI6N47Wh8Gy5goMkxWZ8WVMFTb19eS - opeYURGk4x5B6MxlwZt1yvbgDrqLaQ5NXUPNjwAGQTe3hJkKDABOvZYvD/j04DMd - oZhaeQKBgGGgnxTTUTEdqZ/AsVD0NmaqauTmyjsUpmAph9oazERM729n9igob85z - KXQmD9gmtTrCuv8LGyEPFsIhlBTOlLyzHpMhI2Hd23hzQp8v09ZdDpx8SqHv0THW - y8YMreKih6+reSfC+GuOzQoKi4vTKO7wwuXYysXkg3juupqZ7Kab - -----END RSA PRIVATE KEY----- - -# Test prerequisites: - - - name: ${HTTP_IGM_NAME} - type: compute.v1.instanceGroupManager - properties: - instanceTemplate: $(ref.test-instance-template-http-${RAND}.selfLink) - zone: us-east1-c - targetSize: 1 - namedPorts: - - name: ${HTTP_PORT_NAME} - port: ${HTTP_PORT_RANGE} - - - name: ${HTTPS_IGM_NAME} - type: compute.v1.instanceGroupManager - properties: - instanceTemplate: $(ref.test-instance-template-https-${RAND}.selfLink) - zone: us-east1-b - targetSize: 1 - namedPorts: - - name: ${HTTPS_PORT_NAME} - port: ${HTTPS_PORT_RANGE} - - - name: test-instance-template-https-${RAND} - type: compute.v1.instanceTemplate - properties: - properties: - machineType: f1-micro - disks: - - autoDelete: true - boot: true - deviceName: boot - initializeParams: - sourceImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - type: PERSISTENT - networkInterfaces: - - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - network: global/networks/default - metadata: - items: - - key: startup-script - value: | - #! /bin/bash - sudo apt-get update - sudo apt-get install apache2 -y - sudo service apache2 restart - echo `hostname` | tee /var/www/html/index.html - sudo a2ensite default-ssl - sudo a2enmod ssl - sudo service apache2 restart - echo "https-`hostname`" | sudo tee /var/www/html/index.html - EOF" - - - name: test-instance-template-http-${RAND} - type: compute.v1.instanceTemplate - properties: - properties: - machineType: f1-micro - disks: - - autoDelete: true - boot: true - deviceName: boot - initializeParams: - sourceImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - type: PERSISTENT - networkInterfaces: - - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - network: global/networks/default - metadata: - items: - - key: startup-script - value: | - #! /bin/bash - sudo apt-get update - sudo apt-get install apache2 -y - sudo service apache2 restart - echo "http-`hostname`" | sudo tee /var/www/html/index.html - EOF" - - - name: ${HTTP_HEALTHCHECK_NAME} - type: compute.v1.httpHealthCheck - - - name: ${HTTPS_HEALTHCHECK_NAME} - type: compute.v1.httpsHealthCheck - - - name: ${SSL_HEALTHCHECK_NAME} - type: compute.v1.healthCheck - properties: - type: SSL - sslHealthCheck: - port: ${SSL_PORT_RANGE} diff --git a/dm/templates/firewall/README.md b/dm/templates/firewall/README.md deleted file mode 100644 index 3739cedeca2..00000000000 --- a/dm/templates/firewall/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Firewall - -This template creates firewall rules for a network. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network](../network/README.md) -- Grant the [compute.networkAdmin or compute.securityAdmin](https://cloud.google.com/compute/docs/access/iam) IAM role to the project service account - -## Deployment - -### Resources - -- [compute.beta.firewall](https://cloud.google.com/compute/docs/reference/rest/beta/firewalls) - - `Note:` The beta API supports the firewall log feature. - -### Properties - -See the `properties` section in the schema file(s): - -- [Firewall](firewall.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/firewall.yaml](examples/firewall.yaml): - -```shell - cp templates/firewall/examples/firewall.yaml my_firewall.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_firewall.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_firewall.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Firewall](examples/firewall.yaml) diff --git a/dm/templates/firewall/examples/firewall.yaml b/dm/templates/firewall/examples/firewall.yaml deleted file mode 100644 index 0ce4773b071..00000000000 --- a/dm/templates/firewall/examples/firewall.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Example of the firewall template usage. -# -# In this example, an array of firewall rules is applied to the -# 'network' VPC. -# -# Replace 'network-name' with a valid VPC network name. -# -imports: - - path: templates/firewall/firewall.py - name: firewall.py - -resources: - - name: test-firewall - type: firewall.py - properties: - network: - rules: - - name: allow-proxy-from-inside - allowed: - - IPProtocol: tcp - ports: - - "80" - - "443" - description: test rule for network-test - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 - - name: allow-dns-from-inside - allowed: - - IPProtocol: udp - ports: - - "53" - - IPProtocol: tcp - ports: - - "53" - description: test rule for network-test-network - direction: EGRESS - priority: 20 - destinationRanges: - - 8.8.8.8/32 diff --git a/dm/templates/firewall/firewall.py b/dm/templates/firewall/firewall.py deleted file mode 100644 index ffd26991500..00000000000 --- a/dm/templates/firewall/firewall.py +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates firewall rules for a network. """ - -from hashlib import sha1 - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - network = properties.get('network') - if network: - if not ('/' in network or '.' in network): - network = 'global/networks/{}'.format(network) - else: - network = 'projects/{}/global/networks/{}'.format( - project_id, - properties.get('networkName', 'default') - ) - - resources = [] - out = {} - for i, rule in enumerate(properties['rules'], 1000): - res_name = sha1(rule['name'].encode('utf-8')).hexdigest()[:10] - - rule['network'] = network - rule['priority'] = rule.get('priority', i) - rule['project'] = project_id - resources.append( - { - 'name': res_name, - 'type': 'gcp-types/compute-v1:firewalls', - 'properties': rule - } - ) - - out[res_name] = { - 'selfLink': '$(ref.' + res_name + '.selfLink)', - 'creationTimestamp': '$(ref.' + res_name - + '.creationTimestamp)', - } - - outputs = [{'name': 'rules', 'value': out}] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/firewall/firewall.py.schema b/dm/templates/firewall/firewall.py.schema deleted file mode 100644 index aaa5e3767e5..00000000000 --- a/dm/templates/firewall/firewall.py.schema +++ /dev/null @@ -1,288 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Firewall - author: Sourced Group Inc. - version: 1.0.0 - description: | - Deploys firewall rules. - - For more information on this resource: - https://cloud.google.com/vpc/docs/firewalls - - APIs endpoints used by this template: - - gcp-types/compute-v1:firewalls => - https://cloud.google.com/compute/docs/reference/rest/v1/firewalls - -additionalProperties: false - -required: - - rules - -allOf: - - oneOf: - - required: - - project - - required: - - network - - allOf: - - not: - required: - - project - - not: - required: - - network - - oneOf: - - required: - - networkName - - required: - - network - - allOf: - - not: - required: - - networkName - - not: - required: - - network - -properties: - project: - type: string - description: | - The project ID of the project containing firewall rules. - network: - type: string - description: | - URL of the network resource for this firewall rule. If not specified when creating a firewall rule, - the default network is used. - networkName: - type: string - description: | - The name of network to create firewalls in. - rules: - type: array - uniqueItems: True - description: | - An array of firewall rules. - items: - type: object - additionalProperties: false - properties: - name: - type: string - description: | - Name of the resource; provided by the client when the resource is created. The name must be 1-63 - characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match - the regular expression `a-z?. The first character must be a lowercase letter, and all following - characters (except for the last character) must be a dash, lowercase letter, or digit. The last character - must be a lowercase letter or digit. - Resource name would be used if omitted. - description: - type: string - description: | - An optional description of this resource. Provide this field when you create the resource. - priority: - type: integer - description: | - Priority for this rule. This is an integer between 0 and 65535, both inclusive. - Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate - higher priority. For example, a rule with priority 0 has higher precedence than a rule with priority 1. - DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have - implied rules with a priority of 65535. To avoid conflicts with the implied rules, use a priority - number less than 65535. - - If the 'priority' field value is not set in the rule, the template sets - the priority to the same value as the rule's index in the array +1000. - For example, the priority for the first rule in the array becomes '1000', - for the second rule '1001', and so on. If the 'priority' field is not set in - any of the rules in the array, the ruleset is sorted by priority automatically. - We strongly advise being consistent in your use of the 'priority' field: - either provide or skip values in all instances throughout the ruleset. - sourceRanges: - type: array - uniqueItems: True - description: | - If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in - these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags - may be set. If both fields are set, the rule applies to traffic that has a source IP address within - sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. - The connection does not need to match both fields for the rule to apply. Only IPv4 is supported. - items: - type: string - destinationRanges: - type: array - uniqueItems: True - description: | - If destination ranges are specified, the firewall rule applies only to traffic that has destination IP - address in these ranges. These ranges must be expressed in CIDR format. Only IPv4 is supported. - items: - type: string - sourceTags: - type: array - uniqueItems: True - description: | - If source tags are specified, the firewall rule applies only to traffic with source IPs that match the - primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags - cannot be used to control traffic to an instance's external IP address, it only applies to traffic between - instances in the same virtual network. Because tags are associated with instances, not IP addresses. - One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to - traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching - tag listed in the sourceTags field. The connection does not need to match both fields - for the firewall to apply. - items: - type: string - targetTags: - type: array - uniqueItems: True - description: | - A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, - then the firewall rule applies only to instances in the VPC network that have one of those tags. - If no targetTags are specified, the firewall rule applies to all instances on the specified network. - items: - type: string - sourceServiceAccounts: - type: array - uniqueItems: True - description: | - If source service accounts are specified, the firewall rules apply only to traffic originating from - an instance with a service account in this list. Source service accounts cannot be used to control - traffic to an instance's external IP address because service accounts are associated with an instance, - not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, - the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP - that belongs to an instance with service account listed in sourceServiceAccount. The connection does - not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used - at the same time as sourceTags or targetTags. - items: - type: string - targetServiceAccounts: - type: array - uniqueItems: True - description: | - The email of a service account indicating the set of instances to which firewall rules apply. - items: - type: string - allowed: - type: array - uniqueItems: True - description: | - The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and - port-range tuple that describes a permitted connection. - items: - type: object - additionalProperties: false - required: - - IPProtocol - properties: - IPProtocol: - type: string - description: | - The IP protocol to which this rule applies. The protocol type is required when creating - a firewall rule. This value can either be one of the following well known protocol strings - (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number. - ports: - type: array - uniqueItems: True - description: | - An optional list of ports to which this rule applies. This field is only applicable for - the UDP or TCP protocol. Each entry must be either an integer or a range. - If not specified, this rule applies to connections through any port. - - Example inputs include: ["22"], ["80","443"], and ["12345-12349"]. - items: - type: string - denied: - type: array - uniqueItems: True - description: | - The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range - tuple that describes a denied connection. - items: - type: object - additionalProperties: false - required: - - IPProtocol - properties: - IPProtocol: - type: string - description: | - The IP protocol to which this rule applies. The protocol type is required when creating - a firewall rule. This value can either be one of the following well known protocol strings - (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number. - ports: - type: array - uniqueItems: True - description: | - An optional list of ports to which this rule applies. This field is only applicable for - the UDP or TCP protocol. Each entry must be either an integer or a range. - If not specified, this rule applies to connections through any port. - - Example inputs include: ["22"], ["80","443"], and ["12345-12349"]. - items: - type: string - direction: - type: string - description: | - Direction of traffic to which this firewall applies, either INGRESS or EGRESS. - The default is INGRESS. For INGRESS traffic, you cannot specify the destinationRanges field, - and for EGRESS traffic, you cannot specify the sourceRanges or sourceTags fields. - enum: - - INGRESS - - EGRESS - logConfig: - type: object - description: | - This field denotes the logging options for a particular firewall rule. - If logging is enabled, logs will be exported to Stackdriver. - required: - - enable - properties: - enable: - type: boolean - description: | - This field denotes whether to enable logging for a particular firewall rule. - disabled: - type: boolean - description: | - Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not - enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled. - - - -outputs: - rules: - type: array - description: | - Array of firewall rule details. For example, the output can be - referenced as: - $(ref..rules..selfLink) - items: - description: The name of the firewall rule resource. - patternProperties: - ".*": - type: object - description: Details for a firewall rule resource. - properties: - selfLink: - type: string - description: The URI (SelfLink) of the firewall rule resource. - creationTimestamp: - type: string - description: Creation timestamp in RFC3339 text format. - -documentation: - - templates/firewall/README.md - -examples: - - templates/firewall/examples/firewall.yaml diff --git a/dm/templates/firewall/tests/integration/firewall.bats b/dm/templates/firewall/tests/integration/firewall.bats deleted file mode 100644 index 5e5daf779e0..00000000000 --- a/dm/templates/firewall/tests/integration/firewall.bats +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/firewall/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - gcloud compute networks create network-test-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "integration test ${RAND}" \ - --subnet-mode custom - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - gcloud compute networks delete network-test-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that resources were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute firewall-rules list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "allow-proxy-from-inside" ]] - [[ "$output" =~ "allow-dns-from-inside" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run gcloud compute firewall-rules list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "allow-proxy-from-inside" ]] - [[ ! "$output" =~ "allow-dns-from-inside" ]] -} diff --git a/dm/templates/firewall/tests/integration/firewall.yaml b/dm/templates/firewall/tests/integration/firewall.yaml deleted file mode 100644 index 8bcbc91ef9d..00000000000 --- a/dm/templates/firewall/tests/integration/firewall.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Test of the firewall template. -# -# Variables: -# RAND: A random string used by the testing suite - -imports: - - path: templates/firewall/firewall.py - name: firewall.py - -resources: - - name: test-firewall-${RAND} - type: firewall.py - properties: - network: network-test-${RAND} - rules: - - name: allow-proxy-from-inside - allowed: - - IPProtocol: tcp - ports: - - "80" - - "443" - description: test rule for network-test-${RAND} - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 - - name: allow-dns-from-inside - allowed: - - IPProtocol: udp - ports: - - "53" - - IPProtocol: tcp - ports: - - "53" - description: test rule for network-test-${RAND} - direction: EGRESS - priority: 20 - destinationRanges: - - 8.8.8.8/32 diff --git a/dm/templates/folder/README.md b/dm/templates/folder/README.md deleted file mode 100644 index 3557fc98c75..00000000000 --- a/dm/templates/folder/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Folder - -This template creates a folder under an organization or under a parent folder. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [resourcemanager.folderAdmin or resourcemanager.folderCreator](https://cloud.google.com/resource-manager/docs/access-control-folders) IAM role to the project service account - -## Deployment - -### Resources - -- [gcp-types/cloudresourcemanager-v2:folders](https://cloud.google.com/resource-manager/reference/rest/v2/folders/create) - - -### Properties - -See `properties` section in the schema file(s): - -- [Folder](folder.py.schema) - -### Usage - - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/folder.yaml](examples/folder.yaml): - -```shell - cp templates/folder/examples/folder.yaml my_folder.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_folder.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_folder.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Folder](examples/folder.yaml) diff --git a/dm/templates/folder/examples/folder.yaml b/dm/templates/folder/examples/folder.yaml deleted file mode 100644 index acf9a2348be..00000000000 --- a/dm/templates/folder/examples/folder.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Example of the Folder template usage. -# -# Replace the following placeholders with valid values: -# : the organization id the folder will be created under -# : the folder id the folder will be created under -# - -imports: -- path: templates/folder/folder.py - name: folder.py - -resources: -- name: my-folder - type: folder.py - properties: - folders: - - name: org-folder - orgId: organizations/ - displayName: Folder under Organization - - name: folder-folder - folderId: folders/ - displayName: Folder under Folder diff --git a/dm/templates/folder/folder.py b/dm/templates/folder/folder.py deleted file mode 100644 index 78e31909940..00000000000 --- a/dm/templates/folder/folder.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" - This template creates a folder under an organization or under a - parent folder. -""" - -from hashlib import sha1 - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - out = {} - for folder in context.properties.get('folders', []): - if folder.get('parent'): - parent = '{}s/{}'.format(folder['parent']['type'], folder['parent']['id']) - else: - parent = folder.get('orgId', folder.get('folderId')) - - suffix = folder.get( - 'resourceNameSuffix', - sha1('{}/folders/{}'.format(parent, folder.get('displayName')).encode('utf-8')).hexdigest()[:10] - ) - create_folder = '{}-{}'.format(context.env['name'], suffix) - resources.append( - { - 'name': create_folder, - # https://cloud.google.com/resource-manager/reference/rest/v2/folders - 'type': 'gcp-types/cloudresourcemanager-v2:folders', - 'properties': - { - 'parent': parent, - 'displayName': folder['displayName'] - } - } - ) - - out[create_folder] = { - 'name': '$(ref.{}.name)'.format(create_folder), - 'parent': '$(ref.{}.parent)'.format(create_folder), - 'displayName': '$(ref.{}.displayName)'.format(create_folder), - 'createTime': '$(ref.{}.createTime)'.format(create_folder), - 'lifecycleState': '$(ref.{}.lifecycleState)'.format(create_folder) - } - - outputs = [{'name': 'folders', 'value': out}] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/folder/folder.py.schema b/dm/templates/folder/folder.py.schema deleted file mode 100644 index ff82a080992..00000000000 --- a/dm/templates/folder/folder.py.schema +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Folder - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a folder under an organization or under a parent - folder. - - For more information on this resource: - https://cloud.google.com/resource-manager/ - - APIs endpoints used by this template: - - gcp-types/cloudresourcemanager-v2:folders => - https://cloud.google.com/resource-manager/reference/rest/v2/folders - -additionalProperties: false - -required: - - folders - -properties: - folders: - type: array - description: | - List of folders to create. - minItems: 1 - uniqueItems: True - items: - type: object - oneOf: - - required: - - orgId - - required: - - folderId - - required: - - parent - required: - - displayName - properties: - resourceNameSuffix: - type: string - description: | - Optional resource name suffix - orgId: - type: string - pattern: ^organizations\/[0-9]{8,25}$ - description: | - The organization ID. If this field is set, the folder is - created under the organization. The value must conform to the - format `organizations/`. For example, - `organizations/111122223333`. - DEPRECATED. Please use "parent" - folderId: - type: string - pattern: ^folders\/[0-9]{8,25}$ - description: | - The folder ID. If this field is set, the folder is created - under the folder specified by the ID. The value must conform - to the format `folders/`. For example, - `folders/1234567890`. - DEPRECATED. Please use "parent" - parent: - type: object - additionalProperties: false - description: The parent of the folder. - required: - - type - - id - properties: - type: - type: string - description: The parent type (organization or folder). - enum: - - organization - - folder - default: organization - id: - type: [integer, string] - description: | - The ID of the folder's parent. - pattern: ^[0-9]{8,25}$ - displayName: - type: string - pattern: ^[a-zA-Z0-9]([a-zA-Z0-9_\- ]{0,28}[a-zA-Z0-9])?$ - description: | - The folder’s display name. A folder’s display name must be unique amongst its siblings, e.g. no two folders - with the same parent can share the same display name. The display name must start and end with - a letter or digit, may contain letters, digits, spaces, hyphens and underscores and - can be no longer than 30 characters. - -outputs: - folders: - type: array - description: Array of folder resource information. - items: - description: | - The name of the folder resource. For example, the output can be - referenced as: $(ref..folders..parent) - patternProperties: - ".*": - type: object - description: Details for a folder resource. - properties: - name: - type: string - description: | - Name of the folder resource in the format - `folders/`. - parent: - type: string - description: | - The resource name of the parent Folder or Organization. - displayName: - type: string - description: The folder's display name. - createTime: - type: string - description: Creation timestamp in RFC3339 text format. - lifecycleState: - type: string - description: The Folder's current lifecycle state. - -documentation: - - templates/folder/README.md - -examples: - - templates/folder/examples/folder.yaml diff --git a/dm/templates/folder/tests/integration/folder.bats b/dm/templates/folder/tests/integration/folder.bats deleted file mode 100644 index 345aedd0e32..00000000000 --- a/dm/templates/folder/tests/integration/folder.bats +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/folder/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function get_test_folder_id() { - # Get the test folder ID and make it available. - TEST_ORG_FOLDER_NAME=$(gcloud alpha resource-manager folders list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" | \ - grep "test-org-folder-${RAND}") - - export TEST_ORG_FOLDER_NAME=`echo ${TEST_ORG_FOLDER_NAME} | cut -d ' ' -f 3` -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud alpha resource-manager folders create \ - --display-name="test-org-folder-${RAND}" \ - --organization="${CLOUD_FOUNDATION_ORGANIZATION_ID}" - get_test_folder_id - create_config - fi - - # Per-test setup steps. - get_test_folder_id -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - get_test_folder_id - gcloud alpha resource-manager folders delete "${TEST_ORG_FOLDER_NAME}" - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that a folder was created under organization in deployment ${DEPLOYMENT_NAME}" { - run gcloud alpha resource-manager folders list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" - [[ "$output" =~ "Folder under Org ${RAND}" ]] -} - -@test "Verifying that a folder was created under the specified folder in deployment ${DEPLOYMENT_NAME}" { - run gcloud alpha resource-manager folders list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --folder "${TEST_ORG_FOLDER_NAME}" - [[ "$output" =~ "Folder under Folder ${RAND}" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run gcloud run gcloud alpha resource-manager folders list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" - [[ ! "$output" =~ "Folder Under Org ${RAND}" ]] - - run gcloud alpha resource-manager folders list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --folder "${TEST_ORG_FOLDER_NAME}" - [[ ! "$output" =~ "Folder Under Folder ${RAND}" ]] -} diff --git a/dm/templates/folder/tests/integration/folder.yaml b/dm/templates/folder/tests/integration/folder.yaml deleted file mode 100644 index 35a168a457c..00000000000 --- a/dm/templates/folder/tests/integration/folder.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Test of the folder template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: -- path: templates/folder/folder.py - name: folder.py - -resources: -- name: my-org-folder-${RAND} - type: folder.py - properties: - folders: - - name: org-folder-${RAND} - orgId: organizations/${CLOUD_FOUNDATION_ORGANIZATION_ID} - displayName: Folder under Org ${RAND} - - name: folder-folder-${RAND} - folderId: folders/${TEST_ORG_FOLDER_NAME} - displayName: Folder under Folder ${RAND} diff --git a/dm/templates/forwarding_rule/README.md b/dm/templates/forwarding_rule/README.md deleted file mode 100644 index 6c5807d1de0..00000000000 --- a/dm/templates/forwarding_rule/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Forwarding Rule - -This template creates a forwarding rule. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) or -[compute.networkAdmin](https://cloud.google.com/compute/docs/access/iam) IAM -role to the Deployment Manager service account - -## Deployment - -### Resources - -- [compute.v1.globalForwardingRule](https://cloud.google.com/compute/docs/reference/latest/globalForwardingRules) -- [compute.v1.forwardingRule](https://cloud.google.com/compute/docs/reference/latest/forwardingRules) - -### Properties - -See the `properties` section in the schema file(s): -- [Forwarding Rule](forwarding_rule.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this -case, [examples/forwarding\_rule\_global.yaml](examples/forwarding_rule_global.yaml): - -```shell - cp templates/forwarding_rule/examples/forwarding_rule_global.yaml \ - my_forwarding_rule.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for -properties, refer to the schema files listed above): - -```shell - vim my_forwarding_rule.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant -deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_forwarding_rule.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Global Forwarding Rule](examples/forwarding_rule_global.yaml) -- [Regional Forwarding Rule](examples/forwarding_rule_regional.yaml) diff --git a/dm/templates/forwarding_rule/examples/forwarding_rule_global.yaml b/dm/templates/forwarding_rule/examples/forwarding_rule_global.yaml deleted file mode 100644 index 0c2d3154989..00000000000 --- a/dm/templates/forwarding_rule/examples/forwarding_rule_global.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Example of the forwarding rule template usage. -# -# In this example, a global forwarding rule is created. -# -# Replace the following placeholders with valid values: -# : a URL of a global load balancing -# resource to receive the matched traffic; e.g., targetHttpProxy -# : a range of port numbers traffic from which -# must be forwarded to the target; e.g., '80, 8080' -# : Name of a label -# : Value of a label -# -imports: - - path: templates/forwarding_rule/forwarding_rule.py - name: forwarding_rule.py - -resources: - - name: external-global-forwarding-rule - type: forwarding_rule.py - properties: - loadBalancingScheme: EXTERNAL - target: - portRange: - labels: - : diff --git a/dm/templates/forwarding_rule/examples/forwarding_rule_regional.yaml b/dm/templates/forwarding_rule/examples/forwarding_rule_regional.yaml deleted file mode 100644 index 9f6107c0bfd..00000000000 --- a/dm/templates/forwarding_rule/examples/forwarding_rule_regional.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Example of the forwarding rule template usage. -# -# In this example, a regional forwarding rule is created. -# -# Replace the following placeholders with valid values: -# : a URL of a region where the forwarding rule resides -# : a URL of a backend service residing in -# the same region as the forwarding rule -# : a number of a port traffic from which must be forwarded to the -# backend service; e.g., 80 -# -imports: - - path: templates/forwarding_rule/forwarding_rule.py - name: forwarding_rule.py - -resources: - - name: internal-regional-forwarding-rule - type: forwarding_rule.py - properties: - region: - ports: - - - loadBalancingScheme: INTERNAL - backendService: diff --git a/dm/templates/forwarding_rule/forwarding_rule.py b/dm/templates/forwarding_rule/forwarding_rule.py deleted file mode 100644 index 662a34eaabd..00000000000 --- a/dm/templates/forwarding_rule/forwarding_rule.py +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a forwarding rule. """ - -REGIONAL_GLOBAL_TYPE_NAMES = { - # https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules - True: { - 'GA': 'gcp-types/compute-v1:forwardingRules', - 'Beta': 'gcp-types/compute-beta:forwardingRules' - }, - # https://cloud.google.com/compute/docs/reference/rest/v1/globalForwardingRules - False: { - 'GA': 'gcp-types/compute-v1:globalForwardingRules', - 'Beta': 'gcp-types/compute-beta:globalForwardingRules' - } -} - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value, if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - - -def get_forwarding_rule_outputs(res_name, region): - """ Creates outputs for the forwarding rule. """ - - outputs = [ - { - 'name': 'name', - 'value': '$(ref.{}.name)'.format(res_name) - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(res_name) - }, - { - 'name': 'IPAddress', - 'value': '$(ref.{}.IPAddress)'.format(res_name) - } - ] - - if region: - outputs.append({'name': 'region', 'value': region}) - - return outputs - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - is_regional = 'region' in properties - FW_rule_version = 'Beta' if 'labels' in properties else 'GA' - region = properties.get('region') - rule_properties = { - 'name': name, - 'project': project_id, - } - - resource = { - 'name': context.env['name'], - 'type': REGIONAL_GLOBAL_TYPE_NAMES[is_regional][FW_rule_version], - 'properties': rule_properties - } - - optional_properties = [ - 'description', - 'IPAddress', - 'IPProtocol', - 'portRange', - 'ports', - 'region', - 'target', - 'loadBalancingScheme', - 'subnetwork', - 'network', - 'backendService', - 'ipVersion', - 'serviceLabel', - 'networkTier', - 'allPorts', - 'labels', - ] - - for prop in optional_properties: - set_optional_property(rule_properties, properties, prop) - - outputs = get_forwarding_rule_outputs(context.env['name'], region) - - return {'resources': [resource], 'outputs': outputs} diff --git a/dm/templates/forwarding_rule/forwarding_rule.py.schema b/dm/templates/forwarding_rule/forwarding_rule.py.schema deleted file mode 100644 index c7ee6b3502d..00000000000 --- a/dm/templates/forwarding_rule/forwarding_rule.py.schema +++ /dev/null @@ -1,351 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Forwarding Rule - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a forwarding rule. - - For more information on this resource: - https://cloud.google.com/load-balancing/docs/forwarding-rules - - APIs endpoints used by this template: - - gcp-types/compute-v1:forwardingRules => - https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules - - gcp-types/compute-v1:globalForwardingRules => - https://cloud.google.com/compute/docs/reference/rest/v1/globalForwardingRules - -additionalProperties: false - -allOf: - - oneOf: - - properties: - loadBalancingScheme: - enum: - - INTERNAL - IPProtocol: - enum: - - TCP - - UDP - - not: - properties: - loadBalancingScheme: - enum: - - INTERNAL - - oneOf: - - allOf: - - required: - - region - - properties: - networkTier: - enum: - - PREMIUM - - STANDARD - - allOf: - - not: - required: - - region - - properties: - networkTier: - enum: - - PREMIUM - - oneOf: - - properties: - loadBalancingScheme: - enum: - - INTERNAL_SELF_MANAGED - IPProtocol: - enum: - - TCP - - not: - properties: - loadBalancingScheme: - enum: - - INTERNAL_SELF_MANAGED - - oneOf: - - allOf: - - properties: - IPProtocol: - enum: - - TCP - - UDP - - SCTP - - required: - - portRange - - not: - required: - - portRange - - oneOf: - - allOf: - - properties: - loadBalancingScheme: - enum: - - INTERNAL - - anyOf: - - required: - - ports - - required: - - backendService - - required: - - subnetwork - - required: - - serviceLabel - - allOf: - - not: - required: - - ports - - not: - required: - - backendService - - not: - required: - - subnetwork - - not: - required: - - serviceLabel - - oneOf: - - allOf: - - properties: - loadBalancingScheme: - enum: - - INTERNAL - - INTERNAL_SELF_MANAGED - - required: - - network - - not: - required: - - network - - oneOf: - - allOf: - - loadBalancingScheme: - enum: - - EXTERNAL - - not: - required: - - region - - required: - - ipVersion - - not: - required: - - ipVersion - -properties: - name: - type: string - description: | - Must comply with RFC1035. Specifically, the name must be 1-63 characters long and match - the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, - and all following characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the forwarding rule. The - Google apps domain is prefixed if applicable. - description: - type: string - description: The resource description (optional). - region: - type: string - description: | - The URL of the region where the regional forwarding rule resides. - Not applicable to global forwarding rules. - IPAddress: - type: string - description: | - The IP address that this forwarding rule is serving on behalf of. - - Addresses are restricted based on the forwarding rule's load balancing scheme - (EXTERNAL or INTERNAL) and scope (global or regional). - - When the load balancing scheme is EXTERNAL, for global forwarding rules, the address must be a global IP, - and for regional forwarding rules, the address must live in the same region as the forwarding rule. - If this field is empty, an ephemeral IPv4 address from the same scope (global or regional) will be assigned. - A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6. - - When the load balancing scheme is INTERNAL_SELF_MANAGED, this must be a URL reference to an existing Address - resource ( internal regional static IP address), with a purpose of GCE_END_POINT and addressType of INTERNAL. - - When the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the - network/subnet configured for the forwarding rule. By default, if this field is empty, an ephemeral - internal IP address will be automatically allocated from the IP range of the subnet or network - configured for this forwarding rule. - - An address can be specified either by a literal IP address or a URL reference to an existing Address resource. - The following examples are all valid: - - 100.1.2.3 - - https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address - - projects/project/regions/region/addresses/address - - regions/region/addresses/address - - global/addresses/address - - address - IPProtocol: - type: string - description: | - The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP. - - When the load balancing scheme is INTERNAL, only TCP and UDP are valid. - When the load balancing scheme is INTERNAL_SELF_MANAGED, only TCPis valid. - enum: - - TCP - - UDP - - ESP - - AH - - SCTP - - ICMP - portRange: - type: [integer,string] - description: | - The port range; only packets addressed to ports in that range are - forwarded to the target. Used in conjunction with the target field - for TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, - TargetVpnGateway, TargetPool, and TargetInstance. Applicable only - when IPProtocol is TCP, UDP, or SCTP. - ports: - type: array - uniqItems: true - description: | - This field is used along with the backendService field for internal load balancing. - - When the load balancing scheme is INTERNAL, a list of ports can be configured, for example, - ['80'], ['8000','9000'] etc. Only packets addressed to these ports will be forwarded to the - backends configured with this forwarding rule. - - You may specify a maximum of up to 5 ports. - maxItems: 5 - items: - type: integer - minimum: 1 - maximum: 65535 - target: - type: string - description: | - The URL of the target resource to receive the matched traffic. For regional forwarding rules, - this target must live in the same region as the forwarding rule. For global forwarding rules, this - target must be a global load balancing resource. The forwarded traffic must be of a type appropriate - to the target object. For INTERNAL_SELF_MANAGED load balancing, only HTTP and HTTPS targets are valid. - - Authorization requires one or more of the following Google IAM permissions on the specified resource target: - - compute.targetHttpProxies.use - - compute.targetHttpsProxies.use - - compute.targetInstances.use - - compute.targetPools.use - - compute.targetSslProxies.use - - compute.targetTcpProxies.use - - compute.targetVpnGateways.use - loadBalancingScheme: - type: string - description: | - Defines what the forwarding rule is used for. - INTERNAL - used for Internal Network load balancing - (TCP, UDP) - INTERNAL_SELF_MANAGED - used for Internal Global HTTP(S) load balancing - EXTERNAL - used for External load balancing (HTTP(S), External - TCP/UDP, SSL Proxy) - enum: - - INTERNAL - - INTERNAL_SELF_MANAGED - - EXTERNAL - subnetwork: - type: string - description: | - The subnetwork the load-balanced IP must belong to for the forwarding rule. - Used only for INTERNAL load balancing. - serviceLabel: - type: string - description: | - An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label - of the fully qualified service name. - - The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters - long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a - lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except - the last character, which cannot be a dash. - - This field is only used for internal load balancing. - labels: - type: object - description: | - Labels to apply to this instance. These can be later modified by the setLabels method. - - An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - - networkTier: - type: string - description: | - This signifies the networking tier used for configuring this load balancer and can only - take the following values: PREMIUM , STANDARD. - - For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, - the valid value is PREMIUM. - - If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, - this value must be equal to the networkTier of the Address. - enum: - - STANDARD - - PREMIUM - network: - type: string - description: | - The network the load-balanced IP must belong to for this forwarding rule. - If no value is provided, the default network is used. Used only for - INTERNAL and INTERNAL_SELF_MANAGED load balancing. - backendService: - type: string - description: | - The backend service URL to receive the matched traffic. - Used only for INTERNAL load balancing. - For example: https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendName} - ipVersion: - type: string - description: | - The IP Version the forwarding rule uses. Can be - specified only for external global forwarding rules. - enum: - - IPV4 - - IPV6 - allPorts: - type: boolean - description: | - This field is used along with the backendService field for internal load balancing or with the target - field for internal TargetInstance. This field cannot be used with port or portRange fields. - - When the load balancing scheme is INTERNAL and protocol is TCP/UDP, specify this field to allow packets - addressed to any ports will be forwarded to the backends configured with this forwarding rule. - -outputs: - region: - type: string - description: | - The URL of the region where the regional forwarding rule resides. - name: - type: string - description: The resource name. - selfLink: - type: string - description: The URI (SelfLink) of the forwarding rule resource. - IPAddress: - type: string - description: | - The IP address on behalf of which the forwarding rule serves. - -documentation: - - templates/forwarding_rule/README.md - -examples: - - templates/forwarding_rule/examples/forwarding_rule_regional.yaml - - templates/forwarding_rule/examples/forwarding_rule_global.yaml diff --git a/dm/templates/forwarding_rule/tests/integration/forwarding_rule.bats b/dm/templates/forwarding_rule/tests/integration/forwarding_rule.bats deleted file mode 100755 index 35831702e6a..00000000000 --- a/dm/templates/forwarding_rule/tests/integration/forwarding_rule.bats +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # test specific variables - export REGION="us-central1" - export EXTERNAL_RES_NAME="external-global-fr-${RAND}" - export INTERNAL_RES_NAME="internal-regional-fr-${RAND}" - export PROXY_NAME="http-proxy-${RAND}" - export EXTERNAL_LB_SCHEME="EXTERNAL" - export EXTERNAL_PORT="80" - export INTERNAL_NAME="fr-internal-regional-${RAND}" - export INTERNAL_DESC="Internal description" - export INTERNAL_PORT="80" - export INTERNAL_LB_SCHEME="INTERNAL" - export ZONE="us-central1-f" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/forwarding_rule/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying global external forwarding rule" { - TARGET_PROXY="global/targetHttpProxies/${PROXY_NAME}" - run gcloud compute forwarding-rules describe \ - "${EXTERNAL_RES_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --global - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "portRange: ${EXTERNAL_PORT}-${EXTERNAL_PORT}" ]] - [[ "$output" =~ "loadBalancingScheme: ${EXTERNAL_LB_SCHEME}" ]] - [[ "$output" =~ "$TARGET_PROXY" ]] -} - -@test "Verifying regional internal forwarding rule" { - run gcloud compute forwarding-rules describe "${INTERNAL_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region "${REGION}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "- '${INTERNAL_PORT}'" ]] - [[ "$output" =~ "description: ${INTERNAL_DESC}" ]] - [[ "$output" =~ "name: ${INTERNAL_NAME}" ]] - [[ "$output" =~ "loadBalancingScheme: ${INTERNAL_LB_SCHEME}" ]] - [[ "$output" =~ "regional-internal-backend-service-${RAND}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/forwarding_rule/tests/integration/forwarding_rule.yaml b/dm/templates/forwarding_rule/tests/integration/forwarding_rule.yaml deleted file mode 100644 index 7f4c31e3537..00000000000 --- a/dm/templates/forwarding_rule/tests/integration/forwarding_rule.yaml +++ /dev/null @@ -1,108 +0,0 @@ -# Test of the forwarding rule template. -# - -imports: - - path: templates/forwarding_rule/forwarding_rule.py - name: forwarding_rule.py - -resources: - - name: ${EXTERNAL_RES_NAME} - type: forwarding_rule.py - properties: - loadBalancingScheme: ${EXTERNAL_LB_SCHEME} - target: $(ref.${PROXY_NAME}.selfLink) - portRange: ${EXTERNAL_PORT} - labels: - name: testlabelname - owner: megatron - - name: ${INTERNAL_RES_NAME} - type: forwarding_rule.py - properties: - name: ${INTERNAL_NAME} - description: ${INTERNAL_DESC} - region: ${REGION} - ports: - - ${INTERNAL_PORT} - loadBalancingScheme: ${INTERNAL_LB_SCHEME} - backendService: $(ref.regional-internal-backend-service-${RAND}.selfLink) - -# Test prerequisites: backend services, group managers, healthchecks, -# the URL map, instance template, and network. - - name: ${PROXY_NAME} - type: compute.v1.targetHttpProxy - properties: - urlMap: $(ref.url-map-${RAND}.selfLink) - - - name: url-map-${RAND} - type: compute.v1.urlMap - properties: - defaultService: $(ref.global-external-backend-service-${RAND}.selfLink) - - - name: regional-internal-backend-service-${RAND} - type: compute.v1.regionBackendService - properties: - region: ${REGION} - protocol: TCP - loadBalancingScheme: INTERNAL - backends: - - group: $(ref.regional-igm-${RAND}.instanceGroup) - healthChecks: - - $(ref.test-healthcheck-tcp-${RAND}.selfLink) - - - name: regional-igm-${RAND} - type: compute.v1.regionInstanceGroupManager - properties: - instanceTemplate: $(ref.instance-template-${RAND}.selfLink) - region: ${REGION} - targetSize: 1 - - - name: global-external-backend-service-${RAND} - type: compute.v1.backendService - properties: - protocol: HTTP - healthChecks: - - $(ref.test-healthcheck-http-${RAND}.selfLink) - loadBalancingScheme: EXTERNAL - backends: - - group: $(ref.zonal-igm-${RAND}.instanceGroup) - - - name: zonal-igm-${RAND} - type: compute.v1.instanceGroupManager - properties: - instanceTemplate: $(ref.instance-template-${RAND}.selfLink) - zone: ${ZONE} - targetSize: 1 - - - name: instance-template-${RAND} - type: compute.v1.instanceTemplate - properties: - properties: - machineType: f1-micro - disks: - - autoDelete: true - boot: true - deviceName: boot - initializeParams: - sourceImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - type: PERSISTENT - networkInterfaces: - - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - network: $(ref.test-network-${RAND}.selfLink) - - - name: test-healthcheck-tcp-${RAND} - type: compute.v1.healthCheck - properties: - type: TCP - tcpHealthCheck: - port: ${INTERNAL_PORT} - proxyHeader: NONE - - - name: test-healthcheck-http-${RAND} - type: compute.v1.httpHealthCheck - - - name: test-network-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: true diff --git a/dm/templates/gcs_bucket/README.md b/dm/templates/gcs_bucket/README.md deleted file mode 100644 index 534d82db95c..00000000000 --- a/dm/templates/gcs_bucket/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Google Cloud Storage Bucket - -This template creates a Google Cloud Storage bucket. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [storage.admin](https://cloud.google.com/storage/docs/access-control/iam-roles) IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [gcp-types/storage-v1:buckets](https://cloud.google.com/storage/docs/creating-buckets) -- gcp-types/storage-v1:virtual.buckets.iamMemberBinding - -### Properties - -See the `properties` section in the schema file(s): - -- [gcs_bucket](gcs_bucket.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment, in this case [examples/gcs\_bucket.yaml](examples/gcs_bucket.yaml) - - ```shell - cp templates/gcs_bucket/examples/gcs_bucket.yaml my_gcs_bucket.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - - ```shell - vim my_gcs_bucket.yaml # <== Replace the placeholders in the file - ``` - -5. Create your deployment as described below, replacing - with your with your own deployment name - - ```shell - gcloud deployment-manager deployments create \ - --config my_gcs_bucket.yaml - ``` - -6. In case you need to delete your deployment: - - ```shell - gcloud deployment-manager deployments delete - ``` - -## Examples - -- [Storage Bucket](examples/gcs_bucket.yaml) -- [Storage Bucket with LifeCycle Enabled](examples/gcs_bucket_lifecycle.yaml) -- [Storage Bucket with IAM Bindings](examples/gcs_bucket_iam_bindings.yaml) diff --git a/dm/templates/gcs_bucket/examples/gcs_bucket.yaml b/dm/templates/gcs_bucket/examples/gcs_bucket.yaml deleted file mode 100644 index 6bcaaa5e543..00000000000 --- a/dm/templates/gcs_bucket/examples/gcs_bucket.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Example usage of the Google Cloud Storage bucket template. -# -# In this example, a storage bucket is created in the us-east1 location. -# Cloud storage bucket names must be globally unique. -# For bucket and object naming guidelines, -# refer to https://cloud.google.com/storage/docs/naming. -# -# Replace the placeholder with a globally unique storage -# bucket name. For details, refer to -# https://cloud.google.com/storage/docs/json_api/v1/buckets. - -imports: - - path: templates/gcs_bucket/gcs_bucket.py - name: gcs_bucket.py - -resources: - - name: - type: gcs_bucket.py - properties: - name: - location: us-east1 - versioning: - enabled: True - labels: - env: development diff --git a/dm/templates/gcs_bucket/examples/gcs_bucket_iam_bindings.yaml b/dm/templates/gcs_bucket/examples/gcs_bucket_iam_bindings.yaml deleted file mode 100644 index d910601c398..00000000000 --- a/dm/templates/gcs_bucket/examples/gcs_bucket_iam_bindings.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# Example usage of the Google Cloud Storage bucket template. -# -# In this example, a storage bucket is created in the us-east1 location. -# Cloud storage bucket names must be globally unique. -# For bucket and object naming guidelines, -# refer to https://cloud.google.com/storage/docs/naming. -# -# IAM Policies are also applied with the `bindings` section. -# -# Replace the following placeholders with the relevant values: -# : a globally unique storage bucket name -# : a valid user account -# : a valid service account email -# address -# -# For details, refer to -# https://cloud.google.com/storage/docs/json_api/v1/buckets. - -imports: - - path: templates/gcs_bucket/gcs_bucket.py - name: gcs_bucket.py - -resources: - - name: - type: gcs_bucket.py - properties: - name: - location: us-east1 - versioning: - enabled: True - bindings: - - role: roles/storage.objectViewer - members: - - user: - - serviceAccount: - diff --git a/dm/templates/gcs_bucket/examples/gcs_bucket_lifecycle.yaml b/dm/templates/gcs_bucket/examples/gcs_bucket_lifecycle.yaml deleted file mode 100644 index 8b897e3223c..00000000000 --- a/dm/templates/gcs_bucket/examples/gcs_bucket_lifecycle.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Example usage of the Google Cloud Storage bucket template with lifecycle -# and object versioning enabled. -# -# In this example, a storage bucket is created in the us-east1 location. -# Cloud storage bucket names must be globally unique. -# For bucket and object naming guidelines, -# refer to https://cloud.google.com/storage/docs/naming. -# -# Replace the placeholder with a globally unique storage -# bucket name. For details, refer to -# https://cloud.google.com/storage/docs/json_api/v1/buckets. - -imports: - - path: templates/gcs_bucket/gcs_bucket.py - name: gcs_bucket.py - -resources: - - name: - type: gcs_bucket.py - properties: - name: - location: us-east1 - versioning: - enabled: True - lifecycle: - rule: - - action: - type: SetStorageClass - storageClass: NEARLINE - condition: - age: 36500 - createdBefore: "2018-08-16" - isLive: false - matchesStorageClass: - - REGIONAL - - STANDARD - - COLDLINE - numNewerVersions: 5 diff --git a/dm/templates/gcs_bucket/gcs_bucket.py b/dm/templates/gcs_bucket/gcs_bucket.py deleted file mode 100644 index d1316ee506d..00000000000 --- a/dm/templates/gcs_bucket/gcs_bucket.py +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Google Cloud Storage bucket. """ - -from hashlib import sha1 - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - properties = context.properties - project_id = properties.get('project', context.env['project']) - bucket_name = properties.get('name', context.env['name']) - - # output variables - bucket_selflink = '$(ref.{}.selfLink)'.format(context.env['name']) - bucket_uri = 'gs://' + bucket_name + '/' - - bucket = { - 'name': context.env['name'], - # https://cloud.google.com/storage/docs/json_api/v1/buckets - 'type': 'gcp-types/storage-v1:buckets', - 'properties': { - 'project': project_id, - 'name': bucket_name - } - } - - requesterPays = context.properties.get('requesterPays') - if requesterPays is not None: - bucket['properties']['billing'] = {'requesterPays': requesterPays} - - optional_props = [ - 'acl', - 'iamConfiguration', - 'retentionPolicy', - 'encryption', - 'defaultEventBasedHold', - 'cors', - 'defaultObjectAcl', - 'billing', - 'location', - 'versioning', - 'storageClass', - 'predefinedAcl', - 'predefinedDefaultObjectAcl', - 'logging', - 'lifecycle', - 'labels', - 'website' - ] - - for prop in optional_props: - if prop in properties: - bucket['properties'][prop] = properties[prop] - - if not properties.get('iamConfiguration', {}).get('bucketPolicyOnly', {}).get('enabled', False): - if 'predefinedAcl' not in bucket['properties']: - bucket['properties']['predefinedAcl'] = 'private' - if 'predefinedDefaultObjectAcl' not in bucket['properties']: - bucket['properties']['predefinedDefaultObjectAcl'] = 'private' - - resources.append(bucket) - - # If IAM policy bindings are defined, apply these bindings. - storage_provider_type = 'gcp-types/storage-v1:virtual.buckets.iamMemberBinding' - bindings = properties.get('bindings', []) - - if 'dependsOn' in properties: - dependson = { 'metadata': { 'dependsOn': properties['dependsOn'] } } - dependson_root = properties['dependsOn'] - else: - dependson = {} - dependson_root = [] - - if bindings: - for role in bindings: - for member in role['members']: - suffix = sha1('{}-{}'.format(role['role'], member).encode('utf-8')).hexdigest()[:10] - policy_get_name = '{}-{}'.format(context.env['name'], suffix) - policy_name = '{}-iampolicy'.format(policy_get_name) - iam_policy_resource = { - 'name': policy_name, - # TODO - Virtual type documentation needed - 'type': (storage_provider_type), - 'properties': - { - 'bucket': '$(ref.{}.name)'.format(context.env['name']), - 'role': role['role'], - 'member': member, - } - } - iam_policy_resource.update(dependson) - resources.append(iam_policy_resource) - dependson = { 'metadata': { 'dependsOn': [policy_name] + dependson_root } } - - if properties.get('billing', {}).get('requesterPays'): - for resource in resources: - resource['properties']['userProject'] = properties.get('userProject', context.env['project']) - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'name', - 'value': bucket_name - }, - { - 'name': 'selfLink', - 'value': bucket_selflink - }, - { - 'name': 'url', - 'value': bucket_uri - } - ] - } diff --git a/dm/templates/gcs_bucket/gcs_bucket.py.schema b/dm/templates/gcs_bucket/gcs_bucket.py.schema deleted file mode 100644 index 3acb1a7f825..00000000000 --- a/dm/templates/gcs_bucket/gcs_bucket.py.schema +++ /dev/null @@ -1,499 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Google Cloud Storage Bucket - author: Sourced Group Inc. - version: 1.1.1 - description: | - Supports creation of a Google Cloud Storage bucket. - - For more information on this resource: - https://cloud.google.com/storage/docs/json_api/. - - APIs endpoints used by this template: - - gcp-types/storage-v1:buckets => - https://cloud.google.com/storage/docs/json_api/v1/buckets - - gcp-types/storage-v1:virtual.buckets.iamMemberBinding => - TODO - Virtual type documentation needed - -additionalProperties: false - -allOf: - - oneOf: - - properties: - iamConfiguration: - properties: - bucketPolicyOnly: - properties: - enabled: - enum: [False] - - allOf: - - not: - required: - - acl - - not: - required: - - defaultObjectAcl - - required: - - iamConfiguration - properties: - iamConfiguration: - properties: - bucketPolicyOnly: - properties: - enabled: - enum: [True] - - oneOf: - - allOf: - - not: - required: - - userProject - - properties: - billing: - properties: - requesterPays: - enum: [False] - - allOf: - - required: - - billing - - properties: - billing: - properties: - requesterPays: - enum: [True] - -properties: - name: - type: string - description: The name of the bucket. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the bucket. - userProject: - type: string - description: | - The project to be billed for this request. Current project is used if not set. - location: - type: string - default: us-east1 - description: The region name where the bucket is deployed. - defaultEventBasedHold: - type: boolean - description: Whether or not to automatically apply an eventBasedHold to new objects added to the bucket. - storageClass: - type: string - default: STANDARD - description: | - The bucket's default storage class. Defines how objects - in the bucket are stored; determines the SLA and the - cost of storage. - enum: - - REGIONAL - - MULTI_REGIONAL - - STANDARD - - NEARLINE - - COLDLINE - - DURABLE_REDUCED_AVAILABILITY - versioning: - type: object - additionalProperties: false - description: Enables/disables object versioning. - required: - - enabled - properties: - enabled: - type: boolean - description: Enables/disables object versioning. - predefinedAcl: - type: string - description: | - The predefined or "canned" ACL - an alias for a set of specific - ACL entries that you can use to quickly apply multiple ACL entries - to a bucket or object in a single operation. - Ref: https://cloud.google.com/storage/docs/access-control/lists. - enum: - - authenticatedRead - - private - - projectPrivate - - publicRead - - publicReadWrite - predefinedDefaultObjectAcl: - type: string - enum: - - authenticatedRead - - bucketOwnerFullControl - - bucketOwnerRead - - private - - projectPrivate - - publicRead - description: | - The predefined or "canned" ACL for the default object in the bucket - - an alias for a set of specific ACL entries that you can use to quickly - apply multiple ACL entries to a bucket or object in a single operation. - Ref: https://cloud.google.com/storage/docs/access-control/lists. - encryption: - type: object - additionalProperties: false - description: | - Encryption configuration for a bucket. - required: - - defaultKmsKeyName - properties: - defaultKmsKeyName: - type: string - description: | - A Cloud KMS key that will be used to encrypt objects inserted into this bucket, - if no encryption method is specified. - retentionPolicy: - type: object - additionalProperties: false - description: | - The bucket's retention policy, which defines the minimum age an object in the bucket - must have to be deleted or overwritten. - required: - - retentionPeriod - properties: - retentionPeriod: - type: integer - maximum: 3155760000 - exclusiveMaximum: True - description: | - The period of time, in seconds, that objects in the bucket must be retained and cannot be deleted, - overwritten, or archived. The value must be less than 3,155,760,000 seconds. - iamConfiguration: - type: object - additionalProperties: false - description: | - The bucket's IAM configuration. - required: - - bucketPolicyOnly - properties: - bucketPolicyOnly: - type: object - additionalProperties: false - description: | - The bucket's Bucket Policy Only configuration. - required: - - enabled - properties: - enabled: - type: boolean - default: False - description: | - Whether or not the bucket uses Bucket Policy Only. - If set, access checks only use bucket-level IAM policies or above. - billing: - type: object - additionalProperties: false - description: | - The bucket's billing configuration. - required: - - requesterPays - properties: - requesterPays: - type: boolean - default: False - description: | - When set to true, Requester Pays is enabled for this bucket. - logging: - type: object - additionalProperties: false - required: - - logBucket - properties: - logBucket: - type: string - description: | - The destination bucket where the current bucket's logs - must be placed. - logObjectPrefix: - type: string - description: The prefix for log object names. - cors: - type: array - uniqueItems: true - description: | - The bucket's Cross-Origin Resource Sharing (CORS) configuration. - items: - type: object - additionalProperties: false - required: - - method - - origin - properties: - maxAgeSeconds: - type: integer - description: | - The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses. - method: - type: array - uniqueItems: true - description: | - The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) - Note: "*" is permitted in the list of methods, and means "any method". - items: - type: string - origin: - type: array - uniqueItems: true - description: | - The list of Origins eligible to receive CORS response headers. - Note: "*" is permitted in the list of origins, and means "any Origin". - items: - type: string - responseHeader: - type: array - uniqueItems: true - description: | - The list of HTTP headers other than the simple response headers to give permission - for the user-agent to share across domains. - items: - type: string - defaultObjectAcl: - type: array - uniqueItems: true - description: | - Default access controls to apply to new objects when no ACL is provided. - This list defines an entity and role for one or more defaultObjectAccessControls Resources. - items: - type: object - additionalProperties: false - required: - - role - - entity - properties: - role: - type: string - description: | - The access permission for the entity. - - Acceptable values are: - "OWNER" - "READER" - enum: - - OWNER - - READER - entity: - type: string - description: | - The entity holding the permission, in one of the following forms: - - user-userId - - user-email - - group-groupId - - group-email - - domain-domain - - project-team-projectId - - allUsers - - allAuthenticatedUsers - - Examples: - - The user liz@example.com would be user-liz@example.com. - - The group example@googlegroups.com would be group-example@googlegroups.com. - - To refer to all members of the G Suite for Business domain example.com, the entity would be domain-example.com. - acl: - type: array - uniqueItems: true - description: | - Access controls on the bucket, containing one or more bucketAccessControls Resources. - items: - type: object - additionalProperties: false - required: - - role - - entity - properties: - role: - type: string - description: | - The access permission for the entity. - enum: - - OWNER - - READER - - WRITER - entity: - type: string - description: | - The entity holding the permission, in one of the following forms: - - user-userId - - user-email - - group-groupId - - group-email - - domain-domain - - project-team-projectId - - allUsers - - allAuthenticatedUsers - - Examples: - - The user liz@example.com would be user-liz@example.com. - - The group example@googlegroups.com would be group-example@googlegroups.com. - - To refer to all members of the G Suite for Business domain example.com, the entity would be domain-example.com. - bindings: - type: array - uniqueItems: true - description: IAM bindings for the bucket. - items: - type: object - additionalProperties: false - required: - - role - - members - properties: - role: - type: string - pattern: ^roles\/storage\. - description: The role to assign to members. - members: - type: array - uniqueItems: true - items: - type: string - description: | - A collection of identifiers for members who may assume the provided role. - Recognized identifiers are as follows: - allUsers — A special identifier that represents anyone on the internet; with or without a Google account. - allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with - a Google account or a service account. - user:emailid — An email address that represents a specific account. For example, - user:alice@gmail.com or user:joe@example.com. - serviceAccount:emailid — An email address that represents a service account. For example, - serviceAccount:my-other-app@appspot.gserviceaccount.com . - group:emailid — An email address that represents a Google group. For example, group:admins@example.com. - domain:domain — A G Suite domain name that represents all the users of that domain. - For example, domain:google.com or domain:example.com. - projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project - projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project - projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project - lifecycle: - type: object - additionalProperties: false - description: The storage object's lifecycle actions and conditions. - properties: - rule: - type: array - uniqueItems: true - description: The lifecycle action and condition. - items: - type: object - additionalProperties: false - required: - - action - - condition - properties: - action: - type: object - additionalProperties: false - description: The action to be taken if the condition is met. - required: - - type - properties: - storageClass: - type: string - description: - The storage class to switch on if the condition is met. - enum: - - NEARLINE - - COLDLINE - type: - type: string - description: The action type - setStorageClass or Delete. - enum: - - SetStorageClass - - Delete - condition: - type: object - additionalProperties: false - description: The lifecycle condition. - properties: - age: - type: number - description: | - The object age. Selects all objects of this age or older. - createdBefore: - type: string - description: | - The date part of a date in the RFC 3339 format. - For example, "2013-01-15". - matchesStorageClass: - type: array - uniqueItems: true - description: | - All objects with any of the selected storage classes. - items: - type: string - enum: - - MULTI_REGIONAL - - REGIONAL - - STANDARD - - DURABLE_REDUCED_AVAILABILITY - - NEARLINE - - COLDLINE - isLive: - type: boolean - description: | - Defines whether the object is live. Applies only to - versioned objects. - numNewerVersions: - type: number - description: | - The number of newer versions. Selects all objects with - at least that many newer versions. Applies only to - versioned objects. - labels: - type: object - description: User-provided labels in key/value pairs. - requesterPays: - type: boolean - description: | - When set to true, Requester Pays is enabled for this bucket. - website: - type: object - additionalProperties: false - description: | - The bucket's website configuration, controlling how the service behaves - when accessing the bucket contents as a web site. - properties: - mainPageSuffix: - type: string - description: | - The suffix that allows creation of index.html objects to represent - directory pages. If the requested object path is missing, the service - ensures that the trailing '/' is present, appends this suffix, and - attempt to retrieve the resulting object. - notFoundPage: - type: string - description: | - The named object from the bucket that the service returns as the - content for the 404 Not Found result if the requested object path - is missing, and no mainPageSuffix object is provided. -outputs: - name: - type: string - description: The name of the storage bucket resource. - selfLink: - type: string - description: The URI (SelfLink) of the storage bucket resource. - url: - type: string - description: | - The base URL of the bucket in the gs:// format. - -documentation: - - templates/gcs_bucket/README.md - -examples: - - templates/gcs_bucket/examples/gcs_bucket.yaml - - templates/gcs_bucket/examples/gcs_bucket_iam_bindings.yaml - - templates/gcs_bucket/examples/gcs_bucket_lifecycle.yaml diff --git a/dm/templates/gcs_bucket/tests/integration/gcs_35_iam_bindings.bats b/dm/templates/gcs_bucket/tests/integration/gcs_35_iam_bindings.bats deleted file mode 100644 index 40951b45faa..00000000000 --- a/dm/templates/gcs_bucket/tests/integration/gcs_35_iam_bindings.bats +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -export TEST_SERVICE_ACCOUNT="test-gcs-iam-sa-${RAND}" - -########## HELPER FUNCTIONS ########## - - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables: - export BUCKET_NAME="test-bucket-${RAND}" - export ROLE="roles/storage.objectViewer" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if Storage Bucket ${BUCKET_NAME} is created " { - res=$(gsutil ls | grep "${BUCKET_NAME}") - [[ "$status" -eq 0 ]] - [[ "$res" =~ "gs://${BUCKET_NAME}/" ]] -} - -@test "Verify if SAs have role ${ROLE}" { - role=$(gsutil iam get "gs://${BUCKET_NAME}/" | grep role) - [[ "$status" -eq 0 ]] - [[ "$role" =~ "${ROLE}" ]] -} - -@test "Verify if SAs are the members of this bucket" { - run gsutil iam get "gs://${BUCKET_NAME}/" | grep serviceAccount:${TEST_SERVICE_ACCOUNT}-.*@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - [[ "$status" -eq 0 ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] - - run gsutil ls - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "gs://${BUCKET_NAME}/" ]] -} diff --git a/dm/templates/gcs_bucket/tests/integration/gcs_35_iam_bindings.yaml b/dm/templates/gcs_bucket/tests/integration/gcs_35_iam_bindings.yaml deleted file mode 100644 index 0c16d1a5e77..00000000000 --- a/dm/templates/gcs_bucket/tests/integration/gcs_35_iam_bindings.yaml +++ /dev/null @@ -1,268 +0,0 @@ -# Variables (declared in the gcs_bucket.bats file): -# RAND: a random string used by the testing suite -# BUCKET_NAME: a globally unique Cloud Storage bucket name -# ROLE: a role to be assigned to member(s); e.g., roles/storage.objectViewer -# TEST_SERVICE_ACCOUNT: Service account name -# CLOUD_FOUNDATION_PROJECT_ID: Project ID - -imports: - - path: templates/gcs_bucket/gcs_bucket.py - name: gcs_bucket.py - -resources: - - name: ${BUCKET_NAME} - type: gcs_bucket.py - properties: - name: ${BUCKET_NAME} - location: us-east1 - versioning: - enabled: True - bindings: - - role: ${ROLE} - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}-1@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-2@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-3@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-4@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-5@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-6@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-7@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-8@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-9@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-10@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-11@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-12@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-13@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-14@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-15@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-16@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-17@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-18@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-19@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-20@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-21@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-22@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-23@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-24@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-25@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-26@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-27@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-28@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-29@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-30@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-31@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-32@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-33@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-34@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-35@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - - name: ${TEST_SERVICE_ACCOUNT}-1-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-1 - displayName: ${TEST_SERVICE_ACCOUNT}-1 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-2-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-2 - displayName: ${TEST_SERVICE_ACCOUNT}-2 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-3-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-3 - displayName: ${TEST_SERVICE_ACCOUNT}-3 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-4-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-4 - displayName: ${TEST_SERVICE_ACCOUNT}-4 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-5-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-5 - displayName: ${TEST_SERVICE_ACCOUNT}-5 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-6-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-6 - displayName: ${TEST_SERVICE_ACCOUNT}-6 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-7-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-7 - displayName: ${TEST_SERVICE_ACCOUNT}-7 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-8-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-8 - displayName: ${TEST_SERVICE_ACCOUNT}-8 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-9-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-9 - displayName: ${TEST_SERVICE_ACCOUNT}-9 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-10-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-10 - displayName: ${TEST_SERVICE_ACCOUNT}-10 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-11-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-11 - displayName: ${TEST_SERVICE_ACCOUNT}-11 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-12-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-12 - displayName: ${TEST_SERVICE_ACCOUNT}-12 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-13-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-13 - displayName: ${TEST_SERVICE_ACCOUNT}-13 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-14-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-14 - displayName: ${TEST_SERVICE_ACCOUNT}-14 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-15-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-15 - displayName: ${TEST_SERVICE_ACCOUNT}-15 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-16-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-16 - displayName: ${TEST_SERVICE_ACCOUNT}-16 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-17-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-17 - displayName: ${TEST_SERVICE_ACCOUNT}-17 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-18-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-18 - displayName: ${TEST_SERVICE_ACCOUNT}-18 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-19-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-19 - displayName: ${TEST_SERVICE_ACCOUNT}-19 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-20-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-20 - displayName: ${TEST_SERVICE_ACCOUNT}-20 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-21-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-21 - displayName: ${TEST_SERVICE_ACCOUNT}-21 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-22-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-22 - displayName: ${TEST_SERVICE_ACCOUNT}-22 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-23-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-23 - displayName: ${TEST_SERVICE_ACCOUNT}-23 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-24-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-24 - displayName: ${TEST_SERVICE_ACCOUNT}-24 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-25-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-25 - displayName: ${TEST_SERVICE_ACCOUNT}-25 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-26-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-26 - displayName: ${TEST_SERVICE_ACCOUNT}-26 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-27-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-27 - displayName: ${TEST_SERVICE_ACCOUNT}-27 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-28-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-28 - displayName: ${TEST_SERVICE_ACCOUNT}-28 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-29-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-29 - displayName: ${TEST_SERVICE_ACCOUNT}-29 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-30-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-30 - displayName: ${TEST_SERVICE_ACCOUNT}-310 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-31-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-31 - displayName: ${TEST_SERVICE_ACCOUNT}-31 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-32-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-32 - displayName: ${TEST_SERVICE_ACCOUNT}-32 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-33-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-33 - displayName: ${TEST_SERVICE_ACCOUNT}-33 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-34-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-34 - displayName: ${TEST_SERVICE_ACCOUNT}-34 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-35-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-35 - displayName: ${TEST_SERVICE_ACCOUNT}-35 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} diff --git a/dm/templates/gcs_bucket/tests/integration/gcs_bucket.bats b/dm/templates/gcs_bucket/tests/integration/gcs_bucket.bats deleted file mode 100644 index b2a9467556b..00000000000 --- a/dm/templates/gcs_bucket/tests/integration/gcs_bucket.bats +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables: - export BUCKET_NAME="test-bucket-${RAND}" - export SA_NAME="${BUCKET_NAME}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - export SA_FQDN="serviceAccount:${SA_NAME}" - export ROLE="roles/storage.objectViewer" - export LIFECYCLE_ACTION_TYPE="SetStorageClass" - export LIFECYCLE_STORAGE_CLASS="NEARLINE" - export LIFECYCLE_AGE_DAYS="36500" - export LIFECYCLE_OBJ_CREATED_BEFORE="2018-01-01" - export LIFECYCLE_NUM_NEWERVERSION="5" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - # create service accounts to test IAM bindings - gcloud iam service-accounts create "${BUCKET_NAME}" \ - --display-name "Test Service Account" - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - # delete service account after tests are complete. - gcloud --quiet iam service-accounts delete "${SA_NAME}" - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if Storage Bucket ${BUCKET_NAME} is created " { - res=$(gsutil ls | grep "${BUCKET_NAME}") - [[ "$status" -eq 0 ]] - [[ "$res" =~ "gs://${BUCKET_NAME}/" ]] -} - -@test "storageClass on ${BUCKET_NAME} is set to STANDARD " { - run gsutil defstorageclass get "gs://${BUCKET_NAME}/" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "STANDARD" ]] -} - -@test "Versioning on ${BUCKET_NAME} is ENABLED " { - run gsutil versioning get "gs://${BUCKET_NAME}/" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "Enabled" ]] -} - -@test "Logging configuration on ${BUCKET_NAME} is not set " { - run gsutil logging get "gs://${BUCKET_NAME}/" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "has no logging configuration" ]] -} - -@test "Verify if SA ${SA_NAME} has role ${ROLE}" { - role=$(gsutil iam get "gs://${BUCKET_NAME}/" | grep role) - [[ "$status" -eq 0 ]] - [[ "$role" =~ "${ROLE}" ]] -} - -@test "Verify if SA ${SA_NAME} is a member of this bucket" { - member=$(gsutil iam get "gs://${BUCKET_NAME}/" | grep serviceAccount) - [[ "$status" -eq 0 ]] - [[ "$member" =~ "${SA_NAME}" ]] -} - -@test "lifeCycle configuration is set on ${BUCKET_NAME}" { - run gsutil lifecycle get "gs://${BUCKET_NAME}/" - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "has no lifecycle configuration" ]] -} - -@test "lifeCycle Action Type is ${LIFECYCLE_ACTION_TYPE}" { - lc_type=$(gsutil lifecycle get "gs://${BUCKET_NAME}/" | \ - grep ${LIFECYCLE_ACTION_TYPE}) - [[ "$status" -eq 0 ]] - [[ "$lc_type" =~ "${LIFECYCLE_ACTION_TYPE}" ]] -} - -@test "lifeCycle StorageClass is set to ${LIFECYCLE_STORAGE_CLASS}" { - lc_class=$(gsutil lifecycle get "gs://${BUCKET_NAME}/" | \ - grep ${LIFECYCLE_STORAGE_CLASS}) - [[ "$status" -eq 0 ]] - [[ "$lc_class" =~ "${LIFECYCLE_STORAGE_CLASS}" ]] -} - -@test "lifeCycle Condition has AGE set to ${LIFECYCLE_AGE_DAYS}" { - lc_age=$(gsutil lifecycle get "gs://${BUCKET_NAME}/" | \ - grep age) - [[ "$status" -eq 0 ]] - [[ "$lc_age" =~ "${LIFECYCLE_AGE_DAYS}" ]] -} - -@test "lifeCycle Objects CreatedBefore Date is ${LIFECYCLE_OBJ_CREATED_BEFORE}" { - lc_date=$(gsutil lifecycle get "gs://${BUCKET_NAME}/" | \ - grep createdBefore) - [[ "$status" -eq 0 ]] - [[ "$lc_date" =~ "${LIFECYCLE_OBJ_CREATED_BEFORE}" ]] -} - -@test "lifeCycle numNewerVersions is ${LIFECYCLE_NUM_NEWERVERSION}" { - lc_ver=$(gsutil lifecycle get "gs://${BUCKET_NAME}/" | \ - grep numNewerVersions) - [[ "$status" -eq 0 ]] - [[ "$lc_ver" =~ "${LIFECYCLE_NUM_NEWERVERSION}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] - - run gsutil ls - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "gs://${BUCKET_NAME}/" ]] -} diff --git a/dm/templates/gcs_bucket/tests/integration/gcs_bucket.yaml b/dm/templates/gcs_bucket/tests/integration/gcs_bucket.yaml deleted file mode 100644 index 9463cd97b3c..00000000000 --- a/dm/templates/gcs_bucket/tests/integration/gcs_bucket.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Test of the Cloud Storage bucket template. -# -# Variables (declared in the gcs_bucket.bats file): -# RAND: a random string used by the testing suite -# BUCKET_NAME: a globally unique Cloud Storage bucket name -# ROLE: a role to be assigned to member(s); e.g., roles/storage.objectViewer -# SA_FQDN: a ServiceAccount FQDN serviceAccount: - -imports: - - path: templates/gcs_bucket/gcs_bucket.py - name: gcs_bucket.py - -resources: - - name: ${BUCKET_NAME} - type: gcs_bucket.py - properties: - name: ${BUCKET_NAME} - location: us-east1 - versioning: - enabled: True - bindings: - - role: ${ROLE} - members: - - ${SA_FQDN} - lifecycle: - rule: - - action: - type: ${LIFECYCLE_ACTION_TYPE} - storageClass: ${LIFECYCLE_STORAGE_CLASS} - condition: - age: ${LIFECYCLE_AGE_DAYS} - createdBefore: ${LIFECYCLE_OBJ_CREATED_BEFORE} - isLive: false - matchesStorageClass: - - REGIONAL - - STANDARD - - COLDLINE - numNewerVersions: ${LIFECYCLE_NUM_NEWERVERSION} diff --git a/dm/templates/gcs_bucket/tests/integration/gcs_iam_bucket_policy_only.bats b/dm/templates/gcs_bucket/tests/integration/gcs_iam_bucket_policy_only.bats deleted file mode 100644 index 6ad95321f44..00000000000 --- a/dm/templates/gcs_bucket/tests/integration/gcs_iam_bucket_policy_only.bats +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="dm-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables: - export BUCKET_NAME="test-bucket-${RAND}" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "BucketPolicyOnly setting on ${BUCKET_NAME} is ENABLED " { - run gsutil bucketpolicyonly get "gs://${BUCKET_NAME}/" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "Enabled: True" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] - - run gsutil ls - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "gs://${BUCKET_NAME}/" ]] -} diff --git a/dm/templates/gcs_bucket/tests/integration/gcs_iam_bucket_policy_only.yaml b/dm/templates/gcs_bucket/tests/integration/gcs_iam_bucket_policy_only.yaml deleted file mode 100644 index b9cbdaf44ed..00000000000 --- a/dm/templates/gcs_bucket/tests/integration/gcs_iam_bucket_policy_only.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Test of the Cloud Storage bucket template with bucketPolicyOnly option. -# -# Variables (declared in the gcs_bucket.bats file): -# BUCKET_NAME: a globally unique Cloud Storage bucket name - -imports: - - path: templates/gcs_bucket/gcs_bucket.py - name: gcs_bucket.py - -resources: - - name: ${BUCKET_NAME} - type: gcs_bucket.py - properties: - name: ${BUCKET_NAME} - location: us-east1 - iamConfiguration: - bucketPolicyOnly: - enabled: True diff --git a/dm/templates/gke/README.md b/dm/templates/gke/README.md deleted file mode 100644 index e078c4a5ba2..00000000000 --- a/dm/templates/gke/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# Google Kubernetes Engine (GKE) - -This template creates a Google Kubernetes Engine cluster. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network and subnetwork](../network/README.md) -- Grant the [container.admin](https://cloud.google.com/kubernetes-engine/docs/how-to/iam) IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [container-v1beta1:projects.locations.clusters](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters) -- [container.v1.cluster](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.zones.clusters) - -### Properties - -See the `properties` section in the schema file(s): - -- [GKE cluster schema](gke.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment, in this case [examples/gke.yaml](examples/gke.yaml) - - ```shell - cp templates/gke/examples/gke_zonal.yaml my_gke_zonal.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - - ```shell - vim my_gke_zonal.yaml # <== change values to match your GCP setup - ``` - -5. Create your deployment as described below, replacing - with your with your own deployment name - - ```shell - gcloud deployment-manager deployments create \ - --config my_gke_zonal.yaml - ``` - -6. In case you need to delete your deployment: - - ```shell - gcloud deployment-manager deployments delete - ``` - -## Examples - -- [GKE Zonal Cluster](examples/gke_zonal.yaml) -- [GKE Regional Cluster](examples/gke_regional.yaml) -- [GKE Private Regional Cluster](examples/gke_regional_private.yaml) diff --git a/dm/templates/gke/examples/gke_regional.yaml b/dm/templates/gke/examples/gke_regional.yaml deleted file mode 100644 index b101eb60c40..00000000000 --- a/dm/templates/gke/examples/gke_regional.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Example of the GKE template usage. -# -# In this example, a GKE regional cluster is created. -# Replace the following with valid values -# : A valid VPC network name -# : A valid VPC subnet name - -imports: - - path: templates/gke/gke.py - name: gke.py - -resources: - - name: myk8sregional - type: gke.py - properties: - region: us-east1 - cluster: - name: myk8sregional - description: my awesome k8s cluster - network: - subnetwork: - nodePools: - - name: default - config: - oauthScopes: - - https://www.googleapis.com/auth/compute - - https://www.googleapis.com/auth/devstorage.read_only - - https://www.googleapis.com/auth/logging.write - - https://www.googleapis.com/auth/monitoring - locations: - - us-east1-c - - us-east1-b diff --git a/dm/templates/gke/examples/gke_regional_private.yaml b/dm/templates/gke/examples/gke_regional_private.yaml deleted file mode 100644 index 8394df52095..00000000000 --- a/dm/templates/gke/examples/gke_regional_private.yaml +++ /dev/null @@ -1,65 +0,0 @@ -# Example of the GKE template usage. -# -# In this example, a GKE private regional cluster is created. -# Optional properties are also set in this example. -# -# Replace the following with valid values: -# : a valid VPC network name. -# : a valid VPC subnet name. -# Replace credentials, for accessing the master endpoint, with the valid values: -# : user name for masterAuth. -# : password (atleast 16 chars) for masterAuth - -imports: - - path: templates/gke/gke.py - name: gke.py - -resources: - - name: myk8sregional - type: gke.py - properties: - region: us-east1 - cluster: - name: myk8sregional - description: my awesome k8s cluster - network: - subnetwork: - nodePools: - - name: default - initialNodeCount: 1 - autoscaling: - enabled: True - minNodeCount: 1 - maxNodeCount: 2 - management: - autoUpgrade: True - autoRepair: True - config: - localSsdCount: 1 - oauthScopes: - - https://www.googleapis.com/auth/compute - - https://www.googleapis.com/auth/devstorage.read_only - - https://www.googleapis.com/auth/logging.write - - https://www.googleapis.com/auth/monitoring - taints: - - key: mykey1 - value: value1 - effect: NO_SCHEDULE - - key: mykey2 - value: value2 - effect: NO_EXECUTE - locations: - - us-east1-c - - us-east1-b - masterAuth: - username: - password: - loggingService: logging.googleapis.com - monitoringService: monitoring.googleapis.com - privateClusterConfig: - enablePrivateNodes: True - masterIpv4CidrBlock: 172.16.0.0/28 - clusterIpv4Cidr: 10.0.0.0/11 - ipAllocationPolicy: - useIpAliases: True - servicesIpv4CidrBlock: 10.96.0.0/18 diff --git a/dm/templates/gke/examples/gke_zonal.yaml b/dm/templates/gke/examples/gke_zonal.yaml deleted file mode 100644 index ab5e60c11af..00000000000 --- a/dm/templates/gke/examples/gke_zonal.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Example of the GKE template usage. -# -# In this example, a GKE zonal cluster is created. -# -# Replace the following with valid values -# : A valid VPC network name -# : A valid VPC subnet name - - -imports: - - path: templates/gke/gke.py - name: gke.py - -resources: - - name: myk8s - type: gke.py - properties: - zone: us-east1-b - cluster: - name: myk8s - description: my awesome k8s cluster - network: - subnetwork: - nodePools: - - name: default - config: - oauthScopes: - - https://www.googleapis.com/auth/compute - - https://www.googleapis.com/auth/devstorage.read_only - - https://www.googleapis.com/auth/logging.write - - https://www.googleapis.com/auth/monitoring diff --git a/dm/templates/gke/gke.py b/dm/templates/gke/gke.py deleted file mode 100644 index 303267b5f33..00000000000 --- a/dm/templates/gke/gke.py +++ /dev/null @@ -1,142 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Google Kubernetes Engine cluster. """ - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - outputs = [] - properties = context.properties - name = properties['cluster'].get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - propc = properties['cluster'] - gke_cluster = { - 'name': context.env['name'], - 'type': '', - 'properties': - { - 'parent': 'projects/{}/locations/{}'.format( - project_id, - properties.get('zone', properties.get('location', properties.get('region'))) - ), - 'cluster': - { - 'name': name, - } - } - } - - if properties.get('zone'): - # https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.zones.clusters - gke_cluster['type'] = 'gcp-types/container-v1beta1:projects.zones.clusters' - # TODO: remove, this is a bug - gke_cluster['properties']['zone'] = properties.get('zone') - else: - # https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters - gke_cluster['type'] = 'gcp-types/container-v1beta1:projects.locations.clusters' - - req_props = ['network', 'subnetwork'] - - optional_props = [ - 'initialNodeCount', - 'initialClusterVersion', - 'description', - 'nodeConfig', - 'nodePools', - 'privateClusterConfig', - 'binaryAuthorization', - 'binaryAuthorization', - 'networkConfig', - 'defaultMaxPodsConstraint', - 'resourceUsageExportConfig', - 'authenticatorGroupsConfig', - 'verticalPodAutoscaling', - 'tierSettings', - 'enableTpu', - 'databaseEncryption', - 'workloadIdentityConfig', - 'masterAuth', - 'loggingService', - 'monitoringService', - 'clusterIpv4Cidr', - 'addonsConfig', - 'locations', - 'enableKubernetesAlpha', - 'resourceLabels', - 'labelFingerprint', - 'legacyAbac', - 'networkPolicy', - 'ipAllocationPolicy', - 'masterAuthorizedNetworksConfig', - 'maintenancePolicy', - 'podSecurityPolicyConfig', - 'privateCluster', - 'masterIpv4CidrBlock', - 'releaseChannel' - ] - - cluster_props = gke_cluster['properties']['cluster'] - - for prop in req_props: - cluster_props[prop] = propc.get(prop) - if prop not in propc: - raise KeyError( - "{} is a required cluster property for a {} Cluster." - .format(prop, - cluster_type) - ) - - for oprop in optional_props: - if oprop in propc: - cluster_props[oprop] = propc[oprop] - - resources.append(gke_cluster) - - # Output variables - output_props = [ - 'selfLink', - 'endpoint', - 'instanceGroupUrls', - 'clusterCaCertificate', - 'currentMasterVersion', - 'currentNodeVersion', - 'servicesIpv4Cidr' - ] - - if ( - # https://github.com/GoogleCloudPlatform/deploymentmanager-samples/issues/463 - propc.get('enableDefaultAuthOutput', False) and ( - propc.get('masterAuth', {}).get('clientCertificateConfig', False) - ) - ): - output_props.append('clientCertificate') - output_props.append('clientKey') - - for outprop in output_props: - output_obj = {} - output_obj['name'] = outprop - ma_props = ['clusterCaCertificate', 'clientCertificate', 'clientKey'] - if outprop in ma_props: - output_obj['value'] = '$(ref.' + context.env['name'] + \ - '.masterAuth.' + outprop + ')' - elif outprop == 'instanceGroupUrls': - output_obj['value'] = '$(ref.' + context.env['name'] + \ - '.nodePools[0].' + outprop + ')' - else: - output_obj['value'] = '$(ref.' + context.env['name'] + '.' + outprop + ')' - - outputs.append(output_obj) - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/gke/gke.py.schema b/dm/templates/gke/gke.py.schema deleted file mode 100644 index 5868f788772..00000000000 --- a/dm/templates/gke/gke.py.schema +++ /dev/null @@ -1,1146 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Google Kubernetes Engine (GKE) - author: Sourced Group Inc. - version: 1.1.3 - description: | - Schema for deploying a GKE cluster. - - For more information on this resource: - https://cloud.google.com/kubernetes-engine/docs - - APIs endpoints used by this template: - - gcp-types/container-v1beta1:projects.locations.clusters => - https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters - - gcp-types/container-v1beta1:projects.zones.clusters => - https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.zones.clusters - -additionalProperties: false - -required: - - cluster - -definitions: - locations: - type: array - uniqueItems: True - description: | - The list of the Google Compute Engine locations in which the cluster's - nodes should be located. - items: - type: string - initialNodeCount: - type: number - description: | - The number of nodes to create in this cluster. You must ensure that - your Compute Engine resource quota is sufficient for this number of - instances. You must also have available firewall and routes quota. - minimum: 1 - nodeConfig: - type: object - additionalProperties: false - description: Parameters used in creating the cluster's nodes. - required: - - oauthScopes - properties: - machineType: - type: string - description: | - The name of a Google Compute Engine machine type (e.g. n1-standard-1). - - If unspecified, the default machine type is n1-standard-1. - diskSizeGb: - type: number - minimum: 10 - description: | - Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. - - If unspecified, the default disk size is 100GB. - imageType: - type: string - default: COS - description: | - The image type to use for this node. Note that for a given image type, the latest version of it will be used. - enum: - - cos # backwards compatible spelling - - Ubuntu # backwards compatible spelling - - COS - - UBUNTU - - COS_CONTAINERD - - UBUNTU_CONTAINERD - oauthScopes: - type: array - uniqueItems: True - description: | - The set of Google API scopes to be made available on all of the node VMs under the "default" service account. - - The following scopes are recommended, but not required, and by default are not included: - - https://www.googleapis.com/auth/compute is required for mounting persistent storage on your nodes. - https://www.googleapis.com/auth/devstorage.read_only is required for communicating with gcr.io. - If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, - in which case their required scopes will be added. - items: - type: string - serviceAccount: - type: string - description: | - The Google Cloud Platform Service Account to be used by the node VMs. - If no Service Account is specified, the "default" service account is used. - metadata: - type: object - pattern: "[a-zA-Z0-9-_]+" - description: | - The metadata key/value pairs assigned to instances in the cluster. - - Keys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes in length. - These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, - keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - "cluster-location" "cluster-name" "cluster-uid" "configure-sh" "containerd-configure-sh" "enable-os-login" - "gci-update-strategy" "gci-ensure-gke-docker" "instance-template" "kube-env" "startup-script" "user-data" - "disable-address-manager" "windows-startup-script-ps1" "common-psm1" "k8s-node-setup-psm1" "install-ssh-psm1" - "user-profile-psm1" "serial-port-logging-enable" - - Values are free-form strings, and only have meaning as interpreted by the image running in the instance. - The only restriction placed on them is that each value's size must be less than or equal to 32 KB. - - The total size of all keys and values must be less than 512 KB. - - An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - labels: - type: object - description: | - The map of Kubernetes labels (key/value pairs) to be applied to each node. - These will added in addition to any default label(s) that Kubernetes may apply to the node. - In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- - it's best to assume the behavior is undefined and conflicts should be avoided. For more information, - including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ - - An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - localSsdCount: - type: number - description: | - The number of local SSD disks to be attached to the node. - - The limit for this value is dependant upon the maximum number of disks available on a machine per zone. - See: https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits for more information. - tags: - type: array - uniqueItems: True - description: | - The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for - network firewalls and are specified by the client during cluster or node pool creation. - Each tag within the list must comply with RFC1035. - items: - type: string - preemptible: - type: boolean - description: | - Whether the nodes are created as preemptible VM instances. - See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances. - sandboxConfig: - type: object - additionalProperties: false - description: | - Sandbox configuration for this node. - required: - - sandboxType - properties: - sandboxType: - type: string - description: | - Type of the sandbox to use for the node (e.g. 'gvisor') - diskType: - type: string - description: | - Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd') - - If unspecified, the default disk type is 'pd-standard' - enum: - - pd-standard - - pd-ssd - accelerators: - type: array - uniqueItems: True - description: | - A list of hardware accelerators to be attached to each node. - See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs. - items: - type: object - additionalProperties: false - description: The Hardware Accelerator request object. - required: - - acceleratorCount - - acceleratorType - properties: - acceleratorCount: - type: string - description: | - The number of the accelerator cards exposed to an instance. - acceleratorType: - type: string - description: | - The accelerator type resource name. The list of supported - accelerator types can be found here - https://cloud.google.com/compute/docs/gpus/#Introduction - minCpuPlatform: - type: string - description: | - Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, - such as minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy Bridge". - enum: - - Intel Sandy Bridge - - Intel Ivy Bridge - - Intel Haswell - - Intel Broadwell - - Intel Skylake - workloadMetadataConfig: - type: object - additionalProperties: false - description: | - The workload metadata configuration for the node. - required: - - nodeMetadata - properties: - nodeMetadata: - type: string - description: | - Configuration that defines how to expose the node metadata to the workload running on the node. - enum: - - UNSPECIFIED - - SECURE - - EXPOSE - - GKE_METADATA_SERVER - shieldedInstanceConfig: - type: object - additionalProperties: false - description: | - Shielded Instance options. - properties: - enableSecureBoot: - type: boolean - description: | - Defines whether the instance has Secure Boot enabled. - - Secure Boot helps ensure that the system only runs authentic software by verifying the digital - signature of all boot components, and halting the boot process if signature verification fails. - enableIntegrityMonitoring: - type: boolean - description: | - Defines whether the instance has integrity monitoring enabled. - - Enables monitoring and attestation of the boot integrity of the instance. The attestation is - performed against the integrity policy baseline. This baseline is initially derived from the - implicitly trusted boot image when the instance is created. - taints: - type: array - uniqueItems: True - description: | - A list of Kubernetes taints to be applied to each node. - items: - type: object - additionalProperties: false - description: The taint object's key, value, and effect. - required: - - key - - value - - effect - properties: - key: - type: string - description: | - The taint object's key. - value: - type: string - description: | - The taint object's value. - effect: - type: string - enum: - - EFFECT_UNSPECIFIED - - NO_SCHEDULE - - PREFER_NO_SCHEDULE - - NO_EXECUTE - -properties: - project: - type: string - description: | - The project ID of the project containing the cluster. The - Google apps domain is prefixed if applicable. - clusterLocationType: - type: string - description: | - Location type for the cluster Zonal or Regional. DEPRECATED - enum: - - Regional - - Zonal - region: - type: string - description: | - The region the cluster belongs to. Should be set when clusterLocationType is set to Regional. DEPRECATED - location: - type: string - description: | - The location the cluster belongs to. - zone: - type: string - description: The zone the cluster belongs to. - cluster: - type: object - additionalProperties: false - description: The cluster configuration. - required: - - network - - subnetwork - allOf: - # We should either be using unified Stackdriver monitoring for _both_ - # logging and monitoring, or for _neither_. - - oneOf: - - properties: - loggingService: - enum: ["logging.googleapis.com/kubernetes"] - monitoringService: - enum: ["monitoring.googleapis.com/kubernetes"] - - allOf: - - not: - properties: - loggingService: - enum: ["logging.googleapis.com/kubernetes"] - - not: - properties: - monitoringService: - enum: ["monitoring.googleapis.com/kubernetes"] - - oneOf: - - allOf: - - required: - - nodePools - - not: - required: - - initialNodeCount - - required: - - nodeConfig - properties: - name: - type: string - description: The name of the cluster. - description: - type: string - description: An optional description of the cluster. - initialNodeCount: - description: | - Deprecated. Use nodePools.initialNodeCount instead. - $ref: '#/definitions/initialNodeCount' - nodeConfig: - description: | - Deprecated. Use nodePools.config instead. - $ref: '#/definitions/nodeConfig' - nodePools: - type: array - uniqueItems: True - minItems: 1 - description: | - The node pools associated with this cluster. This field should not be set if "nodeConfig" or - "initialNodeCount" are specified. - required: - - name - - config - items: - type: object - properties: - name: - type: string - description: | - The name of the node pool. - config: - $ref: '#/definitions/nodeConfig' - initialNodeCount: - $ref: '#/definitions/initialNodeCount' - locations: - $ref: '#/definitions/locations' - version: - type: string - description: | - The version of the Kubernetes of this node. - autoscaling: - type: object - additionalProperties: false - description: | - Autoscaler configuration for this NodePool. - Autoscaler is enabled only if a valid configuration is present. - properties: - enabled: - type: boolean - description: | - Is autoscaling enabled for this node pool. - minNodeCount: - type: integer - description: | - Minimum number of nodes in the NodePool. Must be >= 1 and <= maxNodeCount. - maxNodeCount: - type: integer - description: | - Maximum number of nodes in the NodePool. Must be >= minNodeCount. There has to enough quota to scale up the cluster. - autoprovisioned: - type: boolean - description: | - Can this node pool be deleted automatically. - management: - type: object - additionalProperties: false - description: | - NodeManagement configuration for this NodePool. - properties: - autoUpgrade: - type: boolean - description: | - Whether the nodes will be automatically upgraded. - autoRepair: - type: boolean - description: | - Whether the nodes will be automatically repaired. - maxPodsConstraint: - type: object - additionalProperties: false - description: | - The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool. - properties: - maxPodsPerNode: - type: integer - description: | - Constraint enforced on the max num of pods per node. - enableDefaultAuthOutput: - type: boolean - default: False - description: | - If clientKey/clientCertificate should be returned. - masterAuth: - type: object - additionalProperties: false - description: | - The authentication information for accessing the master endpoint. If unspecified, the - defaults are used: For clusters before v1.12, if masterAuth is unspecified, username will be set to "admin", - a random password will be generated, and a client certificate will be issued. - properties: - username: - type: string - description: | - The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, - basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). - password: - type: string - description: | - The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint - is open to the Internet, you should create a strong password. If a password is provided for cluster - creation, username must be non-empty. - minLength: 16 - clientCertificateConfig: - type: object - additionalProperties: false - description: | - The configuration for client certificates on the cluster. - require: - - issueClientCertificate - properties: - issueClientCertificate: - type: boolean - description: | - Issue a client certificate. - initialClusterVersion: - type: string - description: | - The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions - returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected - in currentMasterVersion and currentNodeVersion. - - Users may specify either explicit versions offered by Kubernetes Engine or version aliases, - which have the following behavior: - - "latest": picks the highest valid Kubernetes version - "1.X": picks the highest valid patch+gke.N patch in the 1.X version - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version - "1.X.Y-gke.N": picks an explicit Kubernetes version - "","-": picks the default Kubernetes version - loggingService: - type: string - default: logging.googleapis.com - description: | - The logging service the cluster should use to write logs. Currently available options: - - logging.googleapis.com/kubernetes - unified Kubernetes logging/monitoring service. - logging.googleapis.com - legacy Google Cloud Logging service. - none - no logs will be exported from the cluster. - if left as an empty string, logging.googleapis.com will be used. - enum: - - none - - logging.googleapis.com - - logging.googleapis.com/kubernetes - monitoringService: - type: string - default: monitoring.googleapis.com - description: | - The monitoring service the cluster should use to write metrics. Currently available options: - - monitoring.googleapis.com/kubernetes - unified Kubernetes logging/monitoring service. - monitoring.googleapis.com - legacy Google Cloud Monitoring service. - none - no metrics will be exported from the cluster. - if left as an empty string, monitoring.googleapis.com will be used. - enum: - - none - - monitoring.googleapis.com - - monitoring.googleapis.com/kubernetes - network: - type: string - default: default - description: | - The name of the Google Compute Engine network to which the cluster is connected. If left unspecified, - the default network will be used. On output this shows the network ID instead of the name. - subnetwork: - type: string - description: | - The name of the Google Compute Engine subnetwork to which the cluster is connected. - On output this shows the subnetwork ID instead of the name. - clusterIpv4Cidr: - type: string - description: | - The IP address range of the container pods in the cluster, - in the CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one - automatically chosen or specify a /14 block in 10.0.0.0/8. - locations: - $ref: '#/definitions/locations' - enableKubernetesAlpha: - type: boolean - description: | - Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1beta1) - and features that may not be production ready in the kubernetes version of the master and nodes. - The cluster has no SLA for uptime and master/node upgrades are disabled. - Alpha enabled clusters are automatically deleted thirty days after creation. - resourceLabels: - type: object - description: | - The resource labels for the cluster to use to annotate any related Google Compute Engine resources. - - An object containing a list of "key": value pairs. - Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - labelFingerprint: - type: string - description: The fingerprint of the set of labels for the cluster. - legacyAbac: - type: object - additionalProperties: false - description: The configuration for the legacy ABAC authorization mode. - required: - - enabled - properties: - enabled: - type: boolean - default: False - description: | - Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, - including service accounts, nodes, and controllers, will have statically granted permissions - beyond those provided by the RBAC configuration or IAM. - networkPolicy: - type: object - additionalProperties: false - description: | - The configuration options for the NetworkPolicy feature - https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ - properties: - provider: - type: string - description: The selected network policy provider. - enum: - - PROVIDER_UNSPECIFIED - - CALICO - enabled: - type: boolean - description: | - Defines whether the network policy is enabled on the cluster. - ipAllocationPolicy: - type: object - additionalProperties: false - description: The configuration for the cluster IP allocation. - properties: - useIpAliases: - type: boolean - description: | - Defines whether alias IPs are used for pod IPs in the cluster. - createSubnetwork: - type: boolean - description: | - Defines whether a new subnetwork is created automatically for the - cluster. This field is only applicable is useIpAliases is True. - subnetworkName: - type: string - description: | - A custom subnetwork name to be used if createSubnetwork is True. - If this field is empty, a name is automatically generated for - the new subnetwork. - clusterSecondaryRangeName: - type: string - description: | - The name of the secondary range to be used for the cluster CIDR - block. The secondary range is used for pod IP addresses. - This must be an existing secondary range associated with the - cluster subnetwork.This is only applicable if both - useIpAliases and createSubnetwork are False. - servicesSecondaryRangeName: - type: string - description: | - The name of the secondary range to be used as for the service - CIDR block. The secondary range is used for service ClusterIPs. - This must be an existing secondary range associated with - the cluster subnetwork. This is only applicable if both - useIpAliases and createSubnetwork are False. - clusterIpv4CidrBlock: - type: string - description: | - The IP address range for the cluster pod IPs. If this field is set, - then cluster.cluster_ipv4_cidr must be left blank. - This field is only applicable when useIpAliases is True. - Set to blank to have a range chosen with the default size. - Set to /netmask (e.g., /14) to have a range chosen with a specific - netmask. Set to a CIDR notation (e.g., 10.96.0.0/14) from the - RFC-1918 private networks - (e.g., 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific - range to use. - nodeIpv4CidrBlock: - type: string - description: | - The IP address range of the instance IPs in this cluster. - This is applicable only if createSubnetwork is True. - Set to blank to have a range chosen with the default size. - Set to /netmask (e.g., /14) to have a range chosen with a specific - netmask. Set to a CIDR notation (e.g., 10.96.0.0/14) from the - RFC-1918 private networks - (e.g., 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific - range to use. - servicesIpv4CidrBlock: - type: string - description: | - The IP address range of the services IPs in the cluster. - This field is only applicable when useIpAliases is True. - Set to blank to have a range chosen with the default size. - Set to /netmask (e.g., /14) to have a range chosen with a specific - netmask. Set to a CIDR notation (e.g., 10.96.0.0/14) from the - RFC-1918 private networks - (e.g., 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific - range to use. - allowRouteOverlap: - type: boolean - description: | - If True, allows allocation of cluster CIDR ranges that overlap with - certain kinds of network routes (with CIDR ranges that are larger - than the cluster CIDR range). By default, we do not allow cluster - CIDR ranges to intersect with any user-declared routes. - tpuIpv4CidrBlock: - type: string - description: | - The IP address range of the Cloud TPUs in this cluster. - If unspecified, a range will be automatically chosen with the default size. - - This field is only applicable when useIpAliases is true. - - If unspecified, the range will use the default size. - - Set to /netmask (e.g. /14) to have a range chosen with a specific netmask. - - Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks - (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. - masterAuthorizedNetworksConfig: - type: object - additionalProperties: false - description: | - The configuration for the master authorized networks feature. - required: - - enabled - - cidrBlocks - properties: - enabled: - type: boolean - description: | - Defines whether the master authorized networks feature is enabled. - cidrBlocks: - type: array - uniqueItems: True - description: | - A list of cidrBlocks in the CIDR notation. - items: - type: object - additionalProperties: false - description: The CIDR block object. - required: - - cidrBlock - properties: - displayName: - type: string - description: An optional display name for the CIDR block. - cidrBlock: - type: string - description: The cidrBlock in the CIDR notation. - releaseChannel: - type: object - additionalProperties: false - description: | - ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk and frequency of updates. - - When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. - Node auto-upgrade defaults to true and cannot be disabled. Updates to version related fields (e.g. currentMasterVersion) return an error. - properties: - channel: - type: string - default: REGULAR - description: | - Use RAPID, REGULAR or STABLE. Defaults to REGULAR - enum: - - REGULAR - - RAPID - - STABLE - addonsConfig: - type: object - additionalProperties: false - description: | - Configurations for the various addons available to run in the cluster. - properties: - httpLoadBalancing: - type: object - additionalProperties: false - description: | - Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up - HTTP load balancers for services in a cluster. - required: - - disabled - properties: - disabled: - type: boolean - description: | - Whether the HTTP Load Balancing controller is enabled in the cluster. - When enabled, it runs a small pod in the cluster that manages the load balancers. - horizontalPodAutoscaling: - type: object - additionalProperties: false - description: | - Configuration for the horizontal pod autoscaling feature, which increases or decreases the number - of replica pods a replication controller has based on the resource usage of the existing pods. - required: - - disabled - properties: - disabled: - type: boolean - description: | - Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures - that a Heapster pod is running in the cluster, which is also used by the Cloud Monitoring service. - kubernetesDashboard: - type: object - additionalProperties: false - description: | - Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. - It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads - and applications. - For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards - required: - - disabled - properties: - disabled: - type: boolean - description: | - Whether the Kubernetes Dashboard is enabled for this cluster. - networkPolicyConfig: - type: object - additionalProperties: false - description: | - The configuration for the NetworkPolicy add-on. This only tracks - whether the add-on is enabled on the Master. It does not track - whether network policy is enabled for the nodes. - required: - - disabled - properties: - disabled: - type: boolean - description: | - Whether NetworkPolicy is enabled for this cluster. - istioConfig: - type: object - additionalProperties: false - description: | - Configuration for Istio, an open platform to connect, manage, and secure microservices. - required: - - disabled - properties: - disabled: - type: boolean - description: | - Whether Istio is enabled for this cluster. - auth: - type: string - description: | - The specified Istio auth mode, either none, or mutual TLS. - enum: - - AUTH_NONE - - AUTH_MUTUAL_TLS - cloudRunConfig: - type: object - additionalProperties: false - description: | - Configuration for the Cloud Run addon. The IstioConfig addon must be enabled in order to enable - Cloud Run addon. This option can only be enabled at cluster creation time. - required: - - disabled - properties: - disabled: - type: boolean - description: | - Whether Cloud Run addon is enabled for this cluster. - autoscaling: - type: object - additionalProperties: false - description: | - Cluster-level autoscaling configuration. - properties: - enableNodeAutoprovisioning: - type: boolean - description: | - Enables automatic node pool creation and deletion. - resourceLimits: - type: array - uniqueItems: True - description: | - Contains global constraints regarding minimum and maximum amount of resources in the cluster. - items: - type: object - additionalProperties: false - properties: - resourceType: - type: string - description: | - Resource name "cpu", "memory" or gpu-specific string. - minimum: - type: integer - description: | - Minimum amount of the resource in the cluster. - maximum: - type: integer - description: | - Maximum amount of the resource in the cluster. - autoscalingProfile: - type: string - description: | - Defines autoscaling behaviour. - PROFILE_UNSPECIFIED: No change to autoscaling configuration. - OPTIMIZE_UTILIZATION: Prioritize optimizing utilization of resources. - BALANCED: Use default (balanced) autoscaling configuration. - enum: - - PROFILE_UNSPECIFIED - - OPTIMIZE_UTILIZATION - - BALANCED - autoprovisioningNodePoolDefaults: - type: object - additionalProperties: false - description: | - AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. - properties: - oauthScopes: - type: array - uniqueItems: True - description: | - Scopes that are used by NAP when creating node pools. - If oauthScopes are specified, serviceAccount should be empty. - items: - type: string - serviceAccount: - type: string - description: | - The Google Cloud Platform Service Account to be used by the node VMs. - If serviceAccount is specified, scopes should be empty. - autoprovisioningLocations: - type: array - uniqueItems: True - description: | - The list of Google Compute Engine zones in which the NodePool's nodes can be created by NAP. - items: - type: string - binaryAuthorization: - type: object - additionalProperties: false - description: | - Configuration for Binary Authorization. - properties: - enabled: - type: boolean - description: | - Enable Binary Authorization for this cluster. - If enabled, all container images will be validated by Google Binauthz. - maintenancePolicy: - type: object - additionalProperties: false - description: | - The configuration of the maintenance policy for the cluster. - properties: - window: - type: object - additionalProperties: false - description: | - The time window within which maintenance may be performed. - properties: - dailyMaintenanceWindow: - type: object - additionalProperties: false - description: The daily maintenance operation window. - properties: - startTime: - type: string - description: | - Time within the maintenance window to start the - maintenance operations. It must be in the HH:MM - format, where HH 00-23 and MM 00-59 GMT. - defaultMaxPodsConstraint: - type: object - additionalProperties: false - description: | - The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support. - required: - - maxPodsPerNode - properties: - maxPodsPerNode: - type: integer - description: | - Constraint enforced on the max num of pods per node. - resourceUsageExportConfig: - type: object - additionalProperties: false - description: | - Configuration for exporting resource usages. Resource usage export is disabled when this config unspecified. - properties: - bigqueryDestination: - type: object - additionalProperties: false - description: | - Configuration to use BigQuery as usage export destination. - required: - - datasetId - properties: - datasetId: - type: string - description: | - The ID of a BigQuery Dataset. - enableNetworkEgressMetering: - type: boolean - description: | - Whether to enable network egress metering for this cluster. - If enabled, a daemonset will be created in the cluster to meter network egress traffic. - consumptionMeteringConfig: - type: object - additionalProperties: false - description: | - Configuration to enable resource consumption metering. - required: - - enabled - properties: - enabled: - type: boolean - description: | - Whether to enable consumption metering for this cluster. - If enabled, a second BigQuery table will be created to hold resource consumption records. - podSecurityPolicyConfig: - type: object - additionalProperties: false - description: | - The configuration for the PodSecurityPolicy feature. - required: - - enabled - properties: - enabled: - type: boolean - description: | - Enable the PodSecurityPolicy controller for this cluster. - If enabled, pods must be valid under a PodSecurityPolicy to be created. - authenticatorGroupsConfig: - type: object - additionalProperties: false - description: | - Configuration controlling RBAC group membership information. - required: - - enabled - properties: - enabled: - type: boolean - description: | - Whether this cluster should return group membership lookups during authentication - using a group of security groups. - securityGroup: - type: string - description: | - The name of the security group-of-groups to be used. Only relevant if enabled = true. - privateClusterConfig: - type: object - additionalProperties: false - description: | - Configuration for private cluster. - properties: - enablePrivateNodes: - type: boolean - description: | - Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 - private addresses and communicate with the master via private networking. - enablePrivateEndpoint: - type: boolean - description: | - Whether the master's internal IP address is used as the cluster endpoint. - enablePeeringRouteSharing: - type: boolean - description: | - Whether to enable route sharing over the network peering. - masterIpv4CidrBlock: - type: string - description: | - The IP range in CIDR notation to use for the hosted master network. This range will be used - for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. - This range must not overlap with any other ranges in use within the cluster's network. - verticalPodAutoscaling: - type: object - additionalProperties: false - description: | - Cluster-level Vertical Pod Autoscaling configuration. - required: - - enabled - properties: - enabled: - type: boolean - description: | - Enables vertical pod autoscaling. - tierSettings: - type: object - additionalProperties: false - description: | - Cluster tier settings. - required: - - tier - properties: - tier: - type: string - description: | - Cluster tier. - enum: - - UNSPECIFIED - - STANDARD - - ADVANCED - workloadIdentityConfig: - type: object - additionalProperties: false - description: | - Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. - properties: - workloadPool: - type: string - description: | - The workload pool to attach all Kubernetes service accounts to. - databaseEncryption: - type: object - additionalProperties: false - description: | - Configuration of etcd encryption. - properties: - state: - type: string - description: | - Denotes the state of etcd encryption. - enum: - - UNKNOWN - - ENCRYPTED - - DECRYPTED - keyName: - type: string - description: | - Name of CloudKMS key to use for the encryption of secrets in etcd. - Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key - enableTpu: - type: boolean - description: | - Enable the ability to use Cloud TPUs in this cluster. - privateCluster: - type: boolean - description: | - If this is a private cluster setup. Private clusters are clusters that, by default have no - external IP addresses on the nodes and where nodes and the master communicate over private IP addresses. - This field is deprecated, use privateClusterConfig.enable_private_nodes instead. - masterIpv4CidrBlock: - type: string - description: | - The IP prefix in CIDR notation to use for the hosted master network. - This prefix will be used for assigning private IP addresses to the master or set of masters, as well as - the ILB VIP. This field is deprecated, use privateClusterConfig.master_ipv4_cidr_block instead. -outputs: - selfLink: - type: string - description: The server-defined resource URL. - endpoint: - type: string - description: The IP address of the cluster's Kubernetes Master. - currentMasterVersion: - type: string - description: The current version of the master in the cluster. - currentNodeVersion: - type: string - description: | - The current version of the node software components. In case of - multiple versions (e.g., when the components are in the process - of being upgraded), this parameter reflects the minimum version - among all nodes. - nodeIpv4CidrSize: - type: number - description: | - The size of the address space on each node for hosting containers. - This is provisioned from within the container_ipv4_cidr range. - servicesIpv4Cidr: - type: string - description: | - The IP address range of the Kubernetes services in the cluster, - in the CIDR notation (e.g., 1.2.3.4/29). Service addresses are - typically put in the last /16 of the container CIDR. - instanceGroupUrls: - type: array - items: - type: string - description: | - A list of instance group URLs that have been assigned to the - cluster. - clientCertificate: - type: string - description: | - The Base64-encoded public certificate the clients use to authenticate - to the cluster endpoint. - clientKey: - type: string - description: | - The Base64-encoded private key the clients use to authenticate - to the cluster endpoint. - clusterCaCertificate: - type: string - description: | - The Base64-encoded public certificate that is the root of trust for - the cluster. - maintenanceWindowDuration: - type: string - description: | - Duration of the maintenance time window; automatically chosen to be - the smallest possible in the given scenario. The duration is in the - RFC3339 format PTnHnMnS e.g., "PT4H0M0S". - -documentation: - - templates/gke/README.md - -examples: - - templates/gke/examples/gke.yaml diff --git a/dm/templates/gke/tests/integration/gke.bats b/dm/templates/gke/tests/integration/gke.bats deleted file mode 100644 index 70a19cb9b9a..00000000000 --- a/dm/templates/gke/tests/integration/gke.bats +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables - export CLUSTER_NAME="testcluster-${RAND}" - export REGION="us-east1" - export NETWORK_NAME="test-k8nw-${RAND}" - export SUBNET_NAME="test-k8subnet-${RAND}" - export MACHINE_TYPE="n1-standard-1" - export NODE_COUNT="1" - export LOCALSSD_COUNT="1" - export CLUSTER_VERSION="latest" - export LOGGING_SERVICE="logging.googleapis.com/kubernetes" - export MONITORING_SERVICE="monitoring.googleapis.com/kubernetes" - export MASTERIPV4_CIDRBLOCK="172.16.0.0/28" - export CLUSTERIPV4_CIDR="10.0.0.0/11" - export SERVICESIPV4_CIDRBLOCK="10.96.0.0/18" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - # Create a VPC network and a subnet for deploying the cluster. - gcloud compute networks create "${NETWORK_NAME}" \ - --subnet-mode custom - - gcloud compute networks subnets create "${SUBNET_NAME}" \ - --region ${REGION} --network "${NETWORK_NAME}" \ - --range 10.200.0.0/24 - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - # Delete the VPC subnets and network after the tests are completed. - gcloud compute networks subnets delete "${SUBNET_NAME}" \ - --region ${REGION} -q - - gcloud compute networks delete "${NETWORK_NAME}" -q - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if cluster: ${CLUSTER_NAME} was created " { - run gcloud container clusters describe "${CLUSTER_NAME}" \ - --region ${REGION} --format="value(name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CLUSTER_NAME}" ]] -} - -@test "Cluster ${CLUSTER_NAME} is deployed to network ${NETWORK_NAME}" { - run gcloud container clusters describe "${CLUSTER_NAME}" \ - --region ${REGION} --format="value(network)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${NETWORK_NAME}" ]] -} - -@test "Network ${NETWORK_NAME} has subnet ${SUBNET_NAME}" { - run gcloud container clusters describe "${CLUSTER_NAME}" \ - --region ${REGION} \ - --format="value(networkConfig.subnetwork.scope(subnetworks))" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${SUBNET_NAME}" ]] -} - -@test "NodeCount on ${CLUSTER_NAME} is ${NODE_COUNT}" { - run gcloud container clusters describe "${CLUSTER_NAME}" \ - --region ${REGION} --format="value(currentNodeCount)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "2" ]] -} - -@test "Cluster ${CLUSTER_NAME} machineType is ${MACHINE_TYPE}" { - run gcloud container clusters describe "${CLUSTER_NAME}" \ - --region ${REGION} --format="value(nodeConfig.machineType)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MACHINE_TYPE}" ]] -} - -@test "Logging service on ${CLUSTER_NAME} is ${LOGGING_SERVICE}" { - run gcloud container clusters describe "${CLUSTER_NAME}" \ - --region ${REGION} --format="value(loggingService)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${LOGGING_SERVICE}" ]] -} - -@test "Monitoring service on ${CLUSTER_NAME} is ${MONITORING_SERVICE}" { - run gcloud container clusters describe "${CLUSTER_NAME}" \ - --region ${REGION} --format="value(monitoringService)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${MONITORING_SERVICE}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] - - run gcloud container clusters describe "${CLUSTER_NAME}" \ - --region ${REGION} --format="value(name)" - [[ "$status" -ne 0 ]] -} diff --git a/dm/templates/gke/tests/integration/gke.yaml b/dm/templates/gke/tests/integration/gke.yaml deleted file mode 100644 index 8f700ad3b42..00000000000 --- a/dm/templates/gke/tests/integration/gke.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Test of the GKE (Google Kubernetes Engine) template. - -imports: - - path: templates/gke/gke.py - name: gke.py - -resources: - - name: ${CLUSTER_NAME} - type: gke.py - properties: - clusterLocationType: Regional - region: ${REGION} - cluster: - name: ${CLUSTER_NAME} - description: test gke cluster - network: ${NETWORK_NAME} - subnetwork: ${SUBNET_NAME} - initialClusterVersion: ${CLUSTER_VERSION} - nodePools: - - name: default - initialNodeCount: ${NODE_COUNT} - config: - machineType: ${MACHINE_TYPE} - oauthScopes: - - https://www.googleapis.com/auth/compute - - https://www.googleapis.com/auth/devstorage.read_only - - https://www.googleapis.com/auth/logging.write - - https://www.googleapis.com/auth/monitoring - localSsdCount: ${LOCALSSD_COUNT} - locations: - - us-east1-b - - us-east1-d - loggingService: ${LOGGING_SERVICE} - monitoringService: ${MONITORING_SERVICE} - masterIpv4CidrBlock: ${MASTERIPV4_CIDRBLOCK} - clusterIpv4Cidr: ${CLUSTERIPV4_CIDR} - ipAllocationPolicy: - useIpAliases: True - servicesIpv4CidrBlock: ${SERVICESIPV4_CIDRBLOCK} diff --git a/dm/templates/haproxy/README.md b/dm/templates/haproxy/README.md deleted file mode 100644 index 353a58217ed..00000000000 --- a/dm/templates/haproxy/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# HAProxy - -This template: -- Creates a Compute Instance with an [HAProxy](http://www.haproxy.org/) installed -- Configures HAProxy to load-balance traffic between one or more of the provided -[instance groups](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups) - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant [compute.viewer](https://cloud.google.com/compute/docs/access/iam) role to -Compute Engine [default service account](https://cloud.google.com/compute/docs/access/service-accounts#compute_engine_default_service_account). -Alternatively, create a new service account with the above role, and add it to -the template's `resources.properties.serviceAccountEmail` property. -- Create one or more [instanceGroups](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups) -to be load-balanced, and add them to `resources.properties.instances.groups` collection. - -## Deployment - -### Resources - -- [compute.v1.instance](https://cloud.google.com/compute/docs/reference/rest/v1/instances) - -### Properties - -See the `properties` section in the schema file(s): -- [HAProxy](haproxy.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/haproxy.yaml](examples/haproxy.yaml): - -```shell - cp templates/haproxy/examples/haproxy.yaml my_haproxy.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_haproxy.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_haproxy.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [HAProxy](examples/haproxy.yaml) diff --git a/dm/templates/haproxy/examples/haproxy.yaml b/dm/templates/haproxy/examples/haproxy.yaml deleted file mode 100644 index 5262e3aa229..00000000000 --- a/dm/templates/haproxy/examples/haproxy.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of the HAProxy template usage. -# -# In this example, an HAProxy load balancing instance is created to route traffic -# between two existing managed instance groups: -# * zones/us-central1-a/instanceGroups/instance-group-1 -# * zones/us-east1-b/instanceGroups/instance-group-3 - -imports: - - path: templates/haproxy/haproxy.py - name: haproxy.py - -resources: - - name: ilb-haproxy - type: haproxy.py - properties: - zone: us-central1-a - machineType: f1-micro - network: default - loadBalancer: - algorithm: roundrobin - port: 8080 - mode: tcp - instances: - port: 80 - groups: - - instance-group-1 - - zones/us-east1-b/instanceGroups/instance-group-3 diff --git a/dm/templates/haproxy/haproxy.py b/dm/templates/haproxy/haproxy.py deleted file mode 100644 index 5c3cf9c2193..00000000000 --- a/dm/templates/haproxy/haproxy.py +++ /dev/null @@ -1,216 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Compute Instance with an HAProxy installed - and configured to load-balance traffic between instance groups. -""" - -DISK_IMAGE = 'projects/debian-cloud/global/images/family/debian-9' -SETUP_HAPROXY_SH = """#!/bin/bash - -set -euf -o pipefail - -apt-get update && apt-get install -y haproxy - -METADATA_SERVER="http://metadata.google.internal/computeMetadata/v1/instance/attributes" -function get_metadata() { - curl -s "$METADATA_SERVER/$1" -H "Metadata-Flavor: Google" -} - -# Set up an HAProxy update script. -CONFIG_UPDATER="/sbin/haproxy-conf-updater" -get_metadata "haproxy-conf-updater" > $CONFIG_UPDATER -REFRESH_RATE=`get_metadata "refresh-rate"` -chmod +x $CONFIG_UPDATER - -# Set up an HAProxy config. -$CONFIG_UPDATER - -# Keep the HAProxy config up to date. -CRONFILE=$(mktemp) -crontab -l > "${CRONFILE}" || true -echo "${REFRESH_RATE} * * * * ${CONFIG_UPDATER}" >> "${CRONFILE}" -crontab "${CRONFILE}" -service cron start -""" - -HAPROXY_CONF_UPDATER_SH = """#!/bin/bash - -set -euf -o pipefail - -METADATA_SERVER="http://metadata.google.internal/computeMetadata/v1/instance/attributes" - -function get_metadata() { - curl -s "$METADATA_SERVER/$1" -H "Metadata-Flavor: Google" -} - -CONFIG_FILE=/etc/haproxy/haproxy.cfg -BASE_CONFIG_FILE=${CONFIG_FILE}.bak - -if [ ! -f $BASE_CONFIG_FILE ]; then - cp $CONFIG_FILE $BASE_CONFIG_FILE -fi - -TEMP_CONFIG_FILE=`mktemp` -LB_ALGORITHM=`get_metadata lb-algorithm` -IG_PORT=`get_metadata ig-port` -LB_PORT=`get_metadata lb-port` -LB_MODE=`get_metadata lb-mode` - -# Build a server list. -SERVERS= -GCLOUD=`which gcloud` -for g in $(get_metadata groups); do - if [[ "${g}" =~ zones/([^/]+)/instanceGroups/(.*)$ ]]; then - GROUP="${BASH_REMATCH[2]}" - ZONE="${BASH_REMATCH[1]}" - SERVERS=${SERVERS}$'\\n'$($GCLOUD compute instance-groups list-instances \\ - $GROUP --zone $ZONE | grep -v NAME | \ - sed "s/^\\([^ ]*\\) .*\\$/ server \\1 \\1:$IG_PORT check/") - else - echo "Invalid group: ${g}" - fi -done - -# Set up the config file. -cp ${BASE_CONFIG_FILE} ${TEMP_CONFIG_FILE} - -echo " -# Internal load balancing config - -frontend tcp-in - bind *:$LB_PORT - mode $LB_MODE - option ${LB_MODE}log - default_backend instances - -backend instances - mode $LB_MODE - balance $LB_ALGORITHM -${SERVERS}" >> ${TEMP_CONFIG_FILE} - -# Update the config and restart if the config has changed. -ret=0 -diff ${TEMP_CONFIG_FILE} ${CONFIG_FILE} || ret=$? -if [ ${ret} -ne 0 ]; then - mv ${TEMP_CONFIG_FILE} ${CONFIG_FILE} - service haproxy restart -fi -""" - -def append_metadata_entry(metadata, new_key, new_value): - """ Appends a new key-value pair to the existing metadata. """ - - metadata['items'].append({ - 'key': new_key, - 'value': new_value - }) - -def configure_haproxy_frontend(properties, metadata): - """ Sets up user-facing HAProxy parameters. """ - - lb_properties = properties['loadBalancer'] - lb_algorithm = lb_properties['algorithm'] - lb_mode = lb_properties['mode'] - lb_port = lb_properties['port'] - - append_metadata_entry(metadata, 'lb-algorithm', lb_algorithm) - append_metadata_entry(metadata, 'lb-port', lb_port) - append_metadata_entry(metadata, 'lb-mode', lb_mode) - -def configure_haproxy_backend(home_zone, properties, metadata): - """ Sets up instance-facing HAProxy parameters. """ - - instances_properties = properties['instances'] - append_metadata_entry(metadata, 'ig-port', instances_properties['port']) - groups = ' '.join(['zones/{}/instanceGroups/{}'.format(home_zone, group) - if 'zones/' not in group - else group - for group - in instances_properties['groups']]) - - append_metadata_entry(metadata, 'groups', groups) - cron_refresh_rate = instances_properties['refreshIntervalMin'] - cron_minutes_value = '*/' + str(cron_refresh_rate) - append_metadata_entry(metadata, 'refresh-rate', cron_minutes_value) - -def configure_haproxy_setup(metadata): - """ Adds metadata that installs and configures the HAProxy. """ - - append_metadata_entry(metadata, 'startup-script', SETUP_HAPROXY_SH) - append_metadata_entry(metadata, 'haproxy-conf-updater', - HAPROXY_CONF_UPDATER_SH) - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - zone = properties['zone'] - metadata = properties.get('metadata', {'items':[]}) - - configure_haproxy_frontend(properties, metadata) - configure_haproxy_backend(zone, properties, metadata) - configure_haproxy_setup(metadata) - - service_account = properties['serviceAccountEmail'] - - load_balancer = { - 'name': context.env['name'], - 'type': 'instance.py', - 'properties': - { - 'name': properties.get('name', context.env['name']), - 'project': project_id, - 'machineType': properties['machineType'], - 'diskImage': DISK_IMAGE, - 'zone': zone, - 'network': properties['network'], - 'metadata': metadata, - 'serviceAccounts': [ - { - 'email': service_account, - 'scopes': [ - 'https://www.googleapis.com/auth/compute.readonly' - ] - } - ] - } - } - - return { - 'resources': [load_balancer], - 'outputs': [ - { - 'name': 'internalIp', - 'value': '$(ref.{}.internalIp)'.format(context.env['name']) - }, - { - 'name': 'externalIp', - 'value': '$(ref.{}.externalIp)'.format(context.env['name']) - }, - { - 'name': 'name', - 'value': '$(ref.{}.name)'.format(context.env['name']) - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - }, - { - 'name': 'port', - 'value': properties['loadBalancer']['port'] - } - ] - } diff --git a/dm/templates/haproxy/haproxy.py.schema b/dm/templates/haproxy/haproxy.py.schema deleted file mode 100644 index 3da95b4e864..00000000000 --- a/dm/templates/haproxy/haproxy.py.schema +++ /dev/null @@ -1,142 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: HAProxy load balancer template - author: Sourced Group Inc. - version: 1.0.0 - description: | - Deploys a Compute instance, with an HAProxy installed and configured to - load-balance traffic between instance groups. - -imports: - - path: ../instance/instance.py - name: instance.py - -additionalProperties: false - -required: - - zone - - network - - loadBalancer - - instances - -properties: - name: - type: string - description: A name of a load balancer instance. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the service. - network: - type: string - description: | - Name of the network to which a load balancer will be connected; e.g., - 'my-custom-network' or 'default'. - zone: - type: string - description: Availability zone. E.g. 'us-central1-a' - machineType: - type: string - default: n1-standard-1 - description: | - The Compute instance type. E.g., 'n1-standard-1'. For details, see: - https://cloud.google.com/compute/docs/machine-types. - serviceAccountEmail: - type: string - default: default - description: | - A service account email with permissions sufficient to list zones and - instanceGroups instances. - loadBalancer: - type: object - additionalProperties: false - description: Front-end settings for the HAProxy load balancer. - required: - - port - properties: - algorithm: - type: string - default: roundrobin - description: The load balancing algorithm. - enum: - - roundrobin - - leastconn - - source - port: - type: integer - description: | - Number of the port at which the load balancer will receive requests. - mode: - type: string - default: http - description: The type of traffic the HAProxy will be load-balancing. - enum: - - http - - tcp - instances: - type: object - additionalProperties: false - description: Back-end settings of the HAProxy load balancer. - required: - - port - - groups - properties: - port: - type: integer - description: | - Number of the port at which instances will accept requests. - groups: - type: array - uniqItems: true - description: A list of instanceGroups that will be load-balanced. - items: - type: string - description: | - The instance group name. If located in the same availability zone - as a load balancer, a group name is sufficient. If located elsewhere, - the name should have the following format: 'zones/[ZONE]/instanceGroups/[GROUP]'. - refreshIntervalMin: - type: integer - minimum: 1 - maximum: 30 - default: 10 - description: | - Specifies how often the list of instances should be refreshed. - -outputs: - externalIp: - type: string - description: Reference to an external IP address of the load balancer. - internalIp: - type: string - description: Reference to an internal IP address of the load balancer. - name: - type: string - description: The load balancer name. - selfLink: - type: string - description: Link to the load balancer instance. - port: - type: integer - description: | - Number of the port where the HAProxy load balancer will accept requests. - -documentation: - - templates/haproxy/README.md - -examples: - - templates/haproxy/examples/haproxy.yaml - diff --git a/dm/templates/haproxy/tests/integration/haproxy.bats b/dm/templates/haproxy/tests/integration/haproxy.bats deleted file mode 100755 index 5eeb5f15ef4..00000000000 --- a/dm/templates/haproxy/tests/integration/haproxy.bats +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/haproxy/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - # Set up instance groups to be load-balanced via HAProxy. - gcloud compute instance-templates create template-${RAND}-1 \ - --no-service-account --no-scopes --machine-type=f1-micro \ - --image-project=debian-cloud --image-family=debian-9 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - gcloud compute instance-groups managed create group-${RAND}-1 \ - --zone us-central1-a --template template-${RAND}-1 --size 1 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - gcloud compute instance-groups managed create group-${RAND}-2 \ - --zone us-central1-c --template template-${RAND}-1 --size 1 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute instance-groups managed delete group-${RAND}-1 \ - --zone us-central1-a --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - gcloud compute instance-groups managed delete group-${RAND}-2 \ - --zone us-central1-c --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - gcloud compute instance-templates delete template-${RAND}-1 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "Status: $status" - echo "Output: $output" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that the HAProxy instance was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "Status: $status" - echo "Output: $output" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "ilb-proxy-${RAND}" ]] - - # Enabling OS login for the next tests - run gcloud compute instances add-metadata "ilb-proxy-${RAND}" \ - --metadata enable-oslogin=TRUE \ - --zone us-central1-a \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Pre-run Status: $status" - echo "Pre-run Output: $output" - - [[ "$status" -eq 0 ]] - - run gcloud compute ssh "ilb-proxy-${RAND}" --zone us-central1-a --tunnel-through-iap \ - --command "echo 'OK' " \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "SSH Status: $status" - echo "SSH Output: $output" - - echo "sleeping 30" - sleep 30 - - [[ "$status" -eq 0 ]] -} - -@test "Verifying that haproxy.cfg was populated with instances and had all properties set" { - - # Wait for the HAProxy instance to be configured. - until gcloud compute instances get-serial-port-output "ilb-proxy-${RAND}" \ - --zone us-central1-a \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" | grep /etc/haproxy/haproxy.cfg; do - echo "sleeping 10" - - sleep 10; - done - - # Verify VM serial output - run gcloud compute ssh "ilb-proxy-${RAND}" --zone us-central1-a --tunnel-through-iap \ - --command "sudo tail -n 15 /etc/haproxy/haproxy.cfg" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "SSH Status: $status" - echo "SSH Output: $output" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "group-${RAND}-1" ]] # has instances from group 1 - [[ "$output" =~ "group-${RAND}-2" ]] # has instances from group 2 - [[ "$output" =~ "mode tcp" ]] # the mode was set - [[ "$output" =~ "balance leastconn" ]] # load labalcing algorithm is set - [[ "$output" =~ ":9999" ]] # Load balancer's port - [[ "$output" =~ ":8888" ]] # Instance group's port -} - -@test "Verifying that update interval was set" { - run gcloud compute ssh "ilb-proxy-${RAND}" --zone us-central1-a --tunnel-through-iap \ - --command "sudo crontab -l" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - [[ "$status" -eq 0 ]] - [[ "$output" = "*/15 * * * * /sbin/haproxy-conf-updater" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "Status: $status" - echo "Output: $output" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/haproxy/tests/integration/haproxy.yaml b/dm/templates/haproxy/tests/integration/haproxy.yaml deleted file mode 100644 index b1d5d29cb94..00000000000 --- a/dm/templates/haproxy/tests/integration/haproxy.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# Test of the HAProxy template usage. -# -# Variables: -# RAND: a random string used by the testing suite. -# - -imports: - - path: templates/instance/instance.py - name: instance.py - - path: templates/haproxy/haproxy.py - name: haproxy.py - -resources: - - name: ilb-proxy-${RAND} - type: haproxy.py - properties: - zone: us-central1-a - machineType: f1-micro - network: default - loadBalancer: - algorithm: leastconn - port: 9999 - mode: tcp - instances: - port: 8888 - refreshIntervalMin: 15 - groups: - - group-${RAND}-1 - - zones/us-central1-c/instanceGroups/group-${RAND}-2 diff --git a/dm/templates/healthcheck/README.md b/dm/templates/healthcheck/README.md deleted file mode 100644 index b5189aa3409..00000000000 --- a/dm/templates/healthcheck/README.md +++ /dev/null @@ -1,80 +0,0 @@ -# Healthcheck - -This template creates a load balancer healthcheck. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network](../network/README.md) -- Grant the [compute.networkAdmin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the project service account - -## Deployment - -### Resources - -Depend on the specified healthcheck type. - -#### Legacy Healthchecks - -- [compute.v1.httpHealthCheck](https://cloud.google.com/sdk/gcloud/reference/compute/health-checks/create/http) -- [compute.v1.httpsHealthCheck](https://cloud.google.com/sdk/gcloud/reference/compute/health-checks/create/https) - -#### TCP + SSL Healthchecks - -- [compute.v1.healthChecks](https://cloud.google.com/load-balancing/docs/health-check-concepts) - -#### Beta Healthchecks - -- [compute.beta.healthChecks](https://cloud.google.com/sdk/gcloud/reference/beta/compute/health-checks/create/http2) - -### Properties - -See the `properties` section in the schema file(s): - -- [Healthcheck](healthcheck.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; - in this case, [examples/healthcheck.yaml](examples/healthcheck.yaml): - -```shell - cp templates/healthcheck/examples/healthcheck.yaml my_healthcheck.yaml -``` - -4. Change the values in the config file to match your specific GCP setup: - -```shell - vim my_healthcheck.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment: - -```shell - gcloud deployment-manager deployments create \ - --config my_healthcheck.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Healthcheck](examples/healthcheck.yaml) \ No newline at end of file diff --git a/dm/templates/healthcheck/examples/healthcheck.yaml b/dm/templates/healthcheck/examples/healthcheck.yaml deleted file mode 100644 index c44e3ee9284..00000000000 --- a/dm/templates/healthcheck/examples/healthcheck.yaml +++ /dev/null @@ -1,128 +0,0 @@ -# Example of the healthcheck template usage. - -imports: -- path: templates/healthcheck/healthcheck.py - name: healthcheck.py - -resources: -- name: my-legacy-http-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - host: my-host.testing - port: 80 - healthcheckType: HTTP -- name: my-legacy-https-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - port: 80 - healthcheckType: HTTPS -- name: my-beta-http-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - host: my-host.testing - port: 80 - healthcheckType: HTTP - response: my-response - version: beta -- name: my-beta-https-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - host: my-host.testing - port: 80 - healthcheckType: HTTPS - response: my-response - version: beta -- name: my-beta-http2-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - port: 80 - healthcheckType: HTTP2 - version: beta -- name: my-tcp-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - port: 80 - healthcheckType: TCP -- name: my-ssl-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - port: 80 - healthcheckType: SSL -- name: my-beta-tcp-healthcheck - type: healthcheck.py - properties: - description: My Compute Engine beta TCP healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - port: 80 - healthcheckType: TCP -- name: my-beta-ssl-healthcheck - type: healthcheck.py - properties: - description: My Compute Engine beta SSL healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - port: 80 - healthcheckType: SSL -- name: my-requestpath-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - proxyHeader: PROXY_V1 - requestPath: /health.html - healthcheckType: HTTPS -- name: my-response-healthcheck-local - type: healthcheck.py - properties: - description: My Compute Engine healthcheck. - checkIntervalSec: 5 - timeoutSec: 5 - unhealthyThreshold: 2 - healthyThreshold: 2 - proxyHeader: PROXY_V1 - healthcheckType: TCP - request: request-data - response: response-data diff --git a/dm/templates/healthcheck/healthcheck.py b/dm/templates/healthcheck/healthcheck.py deleted file mode 100644 index 9c7b5fa4bed..00000000000 --- a/dm/templates/healthcheck/healthcheck.py +++ /dev/null @@ -1,158 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -"""This template creates an instance healthcheck.""" - - -def set_if_exists(healthcheck, properties, prop): - """ - If prop exists in properties, set the healthcheck's property to it. - Input: [dict] healthcheck: a dictionary representing a healthcheck object - [dict] properties: a dictionary of the user supplied values - [string] prop: the value to check if exists within properties - - """ - if prop in properties: - healthcheck[prop] = properties[prop] - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - properties = context.properties - healthcheck_name = properties.get('name', context.env['name']) - healthcheck_type = properties['healthcheckType'] - healthcheck_version = properties.get('version', 'v1') - - project_id = properties.get('project', context.env['project']) - - # Deployment Manager resource types per healthcheck type. - healthcheck_type_dictionary = { - 'HTTP-Legacy': - { - 'v1': 'gcp-types/compute-v1:httpHealthChecks', - 'beta': 'gcp-types/compute-beta:httpHealthChecks' - }, - 'HTTPS-Legacy': - { - 'v1': 'gcp-types/compute-v1:httpsHealthChecks', - 'beta': 'gcp-types/compute-beta:httpsHealthChecks' - }, - 'HTTP': - { - 'v1': 'gcp-types/compute-v1:healthChecks', - 'beta': 'gcp-types/compute-beta:healthChecks' - }, - 'HTTPS': - { - 'v1': 'gcp-types/compute-v1:healthChecks', - 'beta': 'gcp-types/compute-beta:healthChecks' - }, - 'SSL': - { - 'v1': 'gcp-types/compute-v1:healthChecks', - 'beta': 'gcp-types/compute-beta:healthChecks' - }, - 'TCP': - { - 'v1': 'gcp-types/compute-v1:healthChecks', - 'beta': 'gcp-types/compute-beta:healthChecks' - }, - 'HTTP2': { - 'beta': 'gcp-types/compute-beta:healthChecks' - } - } - - # Deployment Manager object types associated with each type of healthcheck. - healthcheck_object_dictionary = { - 'HTTP-Legacy': 'httpHealthCheck', - 'HTTPS-Legacy': 'httpsHealthCheck', - 'HTTP': 'httpHealthCheck', - 'HTTPS': 'httpsHealthCheck', - 'SSL': 'sslHealthCheck', - 'TCP': 'tcpHealthCheck', - 'HTTP2': 'http2HealthCheck' - } - - # Create a generic healthcheck object. - healthcheck = { - 'name': - context.env['name'], - 'type': - healthcheck_type_dictionary[healthcheck_type][healthcheck_version] - } - - # Create the generic healthcheck properties separately. - healthcheck_properties = { - 'checkIntervalSec': properties['checkIntervalSec'], - 'timeoutSec': properties['timeoutSec'], - 'unhealthyThreshold': properties['unhealthyThreshold'], - 'healthyThreshold': properties['healthyThreshold'], - 'kind': 'compute#healthCheck', - 'type': healthcheck_type, - 'project': project_id, - 'name': healthcheck_name, - } - - set_if_exists(healthcheck_properties, properties, 'description') - - # Create a specific healthcheck object. - specific_healthcheck_type = healthcheck_object_dictionary[healthcheck_type] - specific_healthcheck = { - 'proxyHeader': properties.get('proxyHeader', - 'NONE'), - } - - set_if_exists(specific_healthcheck, properties, 'port') - - # Check for beta-specific properties. - # Add them to the specific healthcheck object. - if healthcheck_version == 'beta': - for prop in ['portSpecification', 'portName', 'response']: - set_if_exists(specific_healthcheck, properties, prop) - - # Check for HTTP/S/2-specific properties. - # Add them to the generic healthcheck. - if healthcheck_type in ['HTTP', 'HTTPS', 'HTTP2']: - for prop in ['requestPath', 'host']: - set_if_exists(specific_healthcheck, properties, prop) - elif healthcheck_type in ['HTTP-Legacy' ,'HTTPS-Legacy']: - for prop in ['requestPath', 'host']: - set_if_exists(healthcheck_properties, properties, prop) - - # Check for TCP/SSL-specific properties. - # Add them to the specific healthcheck object. - if healthcheck_type in ['TCP', 'SSL']: - for prop in ['request', 'response']: - set_if_exists(specific_healthcheck, properties, prop) - - healthcheck_properties[specific_healthcheck_type] = specific_healthcheck - healthcheck['properties'] = healthcheck_properties - resources.append(healthcheck) - - outputs = [ - { - 'name': 'name', - 'value': '$(ref.{}.name)'.format(context.env['name']) - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - }, - { - 'name': 'creationTimestamp', - 'value': '$(ref.{}.creationTimestamp)'.format(context.env['name']) - } - ] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/healthcheck/healthcheck.py.schema b/dm/templates/healthcheck/healthcheck.py.schema deleted file mode 100644 index 447f308d560..00000000000 --- a/dm/templates/healthcheck/healthcheck.py.schema +++ /dev/null @@ -1,189 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Healthcheck - author: Sourced Group Inc. - version: 1.1.0 - description: | - Creates a Healthcheck resource. - - For more information on this resource: - https://cloud.google.com/load-balancing/docs/health-checks. - - APIs endpoints used by this template: - - gcp-types/compute-v1:httpHealthChecks => - https://cloud.google.com/compute/docs/reference/rest/v1/httpHealthChecks - - gcp-types/compute-v1:httpsHealthChecks => - https://cloud.google.com/compute/docs/reference/rest/v1/httpsHealthChecks - - gcp-types/compute-v1:healthChecks => - https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks - - gcp-types/compute-beta:httpHealthChecks => - https://cloud.google.com/compute/docs/reference/rest/beta/httpHealthChecks - - gcp-types/compute-beta:httpsHealthChecks => - https://cloud.google.com/compute/docs/reference/rest/beta/httpsHealthChecks - - gcp-types/compute-beta:healthChecks => - https://cloud.google.com/compute/docs/reference/rest/beta/healthChecks - -additionalProperties: false - -required: - - healthcheckType - -properties: - name: - type: string - description: | - Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, - and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular - expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all - following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. - project: - type: string - description: | - The project ID of the project containing the Cloud Router instance. The - Google apps domain is prefixed if applicable. - description: - type: string - description: | - An optional description of this resource. Provide this property when you create the resource. - checkIntervalSec: - type: integer - default: 5 - description: Defines how often (in seconds) to perform a healthcheck. - timeoutSec: - type: integer - default: 5 - description: | - Defines how long (in seconds) to wait before declaring failure. - The timeoutSec value must be <= checkIntervalSec. - unhealthyThreshold: - type: integer - default: 2 - description: | - The number of consecutive failures after which a formerly - healthy instance is marked unhealthy. - healthyThreshold: - type: integer - default: 2 - description: | - The number of consecutive successes after which a formerly unhealthy - instance is marked healthy. - host: - type: string - description: | - The value of the host header in the HTTP health check request. - The default value is the public IP of the host being checked. - port: - type: integer - minimum: 1 - maximum: 65535 - description: | - The TCP port number for the health check request. - The default value depends on the healthcheck type: 80 for HTTP/2 + TCP; - 443 for HTTPS + SSL. - healthcheckType: - type: string - description: The healthcheck type. - enum: - - HTTP - - HTTP-Legacy - - HTTPS - - HTTPS-Legacy - - HTTP2 - - SSL - - TCP - version: - type: string - default: v1 - description: | - The healthcheck version to use: Beta or V1. - All healthcheck types, except for HTTP2, support both options. - HTTP2 supports only Beta. - enum: - - beta - - v1 - proxyHeader: - type: string - default: NONE - description: | - The type of the proxy header to append before sending data to the back - end. - enum: - - PROXY_V1 - - NONE - requestPath: - type: string - default: / - description: | - The request path of the HTTP health check request. - Can only be used with HTTP + HTTPS + HTTP2 healthchecks. - request: - type: string - description: | - The application data to send once the SSL connection has been - established (the default value is empty). If both request and response - are empty, the connection establishment alone indicates health. - The request data can only be ASCII - Note: used only with TCP + SSL. - response: - type: string - description: | - The bytes to match against the beginning of the response data. - If left empty (the default value), any response will indicate health. - The response data can only be ASCII. - Note: Used only with TCP + SSL except in beta. In beta, response is - available to all healthcheck types. - portName: - type: string - description: | - The port name as defined in InstanceGroup#NamedPort#name. If both port - and port_name are defined, port takes precedence. - Note: Used only in beta. - portSpecification: - type: string - description: | - Defines how port is selected for health checking. One of the - following values: - USE_FIXED_PORT: The port number in {port} is used for health checking. - USE_NAMED_PORT: The {portName} is used for health checking. - USE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each - network endpoint is used for health checking. - For other backends, the port or named port specified in the Backend - Service is used for health checking. - If not specified, healthcheck follows behavior specified in the {port} - and {portName} fields. - Used only in beta for all types. - enum: - - USE_FIXED_PORT - - USE_NAMED_PORT - - USE_SERVING_PORT - -outputs: - name: - type: string - description: The HealthCheck resource name. - selfLink: - type: string - description: The Deployment Manager-defined URL for the resource. - creationTimestamp: - type: datetime - description: | - The resource creation timestamp in the RFC3339 text format. - -documentation: - - templates/healthcheck/README.md - -examples: - - templates/healthcheck/examples/healthcheck.yaml diff --git a/dm/templates/healthcheck/tests/.gitignore b/dm/templates/healthcheck/tests/.gitignore deleted file mode 100644 index 51b4cfda113..00000000000 --- a/dm/templates/healthcheck/tests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -local/ diff --git a/dm/templates/healthcheck/tests/integration/cloudbuild-schema.yaml b/dm/templates/healthcheck/tests/integration/cloudbuild-schema.yaml deleted file mode 100644 index 6f3bd22cd91..00000000000 --- a/dm/templates/healthcheck/tests/integration/cloudbuild-schema.yaml +++ /dev/null @@ -1,4 +0,0 @@ -steps: -- name: gcr.io/$PROJECT_ID/cft-schema - args: ['./templates/healthcheck/examples/healthcheck.yaml'] -tags: ['cft-dm-schema-runner'] diff --git a/dm/templates/healthcheck/tests/integration/healthcheck.bats b/dm/templates/healthcheck/tests/integration/healthcheck.bats deleted file mode 100644 index 5c44c574805..00000000000 --- a/dm/templates/healthcheck/tests/integration/healthcheck.bats +++ /dev/null @@ -1,308 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export RESOURCE_NAME_PREFIX="test-healthcheck-${RAND}" - export CHECK_INTERVAL_SEC="5" - export TIMEOUT_SEC="5" - export UNHEALTHY_THRESHOLD="2" - export HEALTHY_THRESHOLD="2" - export PORT_80="80" - export PORT_443="443" -fi -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/healthcheck/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f ${RANDOM_FILE} - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" -} - -@test "Legacy HTTP healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-legacy-http - run gcloud compute http-health-checks describe ${RESOURCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] -} - -@test "Legacy HTTPS healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-legacy-https - run gcloud compute https-health-checks describe ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_443}" ]] -} - -@test "TCP healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-tcp - run gcloud compute health-checks describe ${RESOURCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] - [[ "$output" =~ "type: TCP" ]] -} - -@test "SSL healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-ssl - run gcloud compute health-checks describe ${RESOURCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] - [[ "$output" =~ "type: SSL" ]] -} - -@test "Request path legacy healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-requestpath-legacy-https - run gcloud compute https-health-checks describe ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "requestPath: /health.html" ]] - [[ "$output" =~ "port: ${PORT_443}" ]] -} - -@test "Request path healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-requestpath-https - run gcloud compute health-checks describe ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "requestPath: /health.html" ]] - [[ "$output" =~ "port: ${PORT_443}" ]] -} - -@test "TCP w/ request/response data was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-response-tcp - run gcloud compute health-checks describe ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] - [[ "$output" =~ "type: TCP" ]] - [[ "$output" =~ "request: request-data" ]] - [[ "$output" =~ "response: response-data" ]] -} - -@test "Legacy HTTP beta healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-legacy-beta-http - run gcloud beta compute http-health-checks describe ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] -} - -@test "Legacy HTTPS beta healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-legacy-beta-https - run gcloud beta compute https-health-checks describe ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_443}" ]] -} - -@test "HTTPS beta http2 healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-beta-http2 - run gcloud beta compute health-checks describe --global ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] -} - -@test "TCP beta healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-beta-tcp - run gcloud beta compute health-checks describe --global ${RESOURCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] - [[ "$output" =~ "type: TCP" ]] -} - -@test "SSL beta healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-beta-ssl - run gcloud beta compute health-checks describe --global ${RESOURCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] - [[ "$output" =~ "type: SSL" ]] -} - -@test "HTTP healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-http - run gcloud compute health-checks describe ${RESOURCE_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] -} - -@test "Legacy HTTPS healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-https - run gcloud compute health-checks describe ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_443}" ]] -} - -@test "HTTP beta healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-beta-http - run gcloud beta compute health-checks describe --global ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_80}" ]] -} - -@test "HTTPS beta healthcheck was created" { - RESOURCE_NAME=${RESOURCE_NAME_PREFIX}-beta-https - run gcloud beta compute health-checks describe --global ${RESOURCE_NAME}\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "checkIntervalSec: ${CHECK_INTERVAL_SEC}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT_SEC}" ]] - [[ "$output" =~ "unhealthyThreshold: ${UNHEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "healthyThreshold: ${HEALTHY_THRESHOLD}" ]] - [[ "$output" =~ "port: ${PORT_443}" ]] -} -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/healthcheck/tests/integration/healthcheck.yaml b/dm/templates/healthcheck/tests/integration/healthcheck.yaml deleted file mode 100644 index e31fc8b31c5..00000000000 --- a/dm/templates/healthcheck/tests/integration/healthcheck.yaml +++ /dev/null @@ -1,189 +0,0 @@ -# Test of the healthcheck template. - -imports: -- path: templates/healthcheck/healthcheck.py - name: healthcheck.py - - -resources: -- name: ${RESOURCE_NAME_PREFIX}-legacy-http - type: healthcheck.py - properties: - description: My Compute Engine legacy HTTP healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - host: host.testing - port: ${PORT_80} - healthcheckType: HTTP-Legacy -- name: ${RESOURCE_NAME_PREFIX}-legacy-https - type: healthcheck.py - properties: - description: My Compute Engine legacy HTTPS healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - port: ${PORT_443} - healthcheckType: HTTPS-Legacy -- name: ${RESOURCE_NAME_PREFIX}-legacy-beta-http - type: healthcheck.py - properties: - description: My Compute Engine beta HTTP healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - host: test-host.testing - port: ${PORT_80} - healthcheckType: HTTP-Legacy - response: test-response - version: beta -- name: ${RESOURCE_NAME_PREFIX}-legacy-beta-https - type: healthcheck.py - properties: - description: My Compute Engine beta HTTPS healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - host: test-host.testing - port: ${PORT_443} - healthcheckType: HTTPS-Legacy - response: test-response - version: beta -- name: ${RESOURCE_NAME_PREFIX}-beta-http2 - type: healthcheck.py - properties: - description: My Compute Engine HTTP2 healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - port: ${PORT_80} - healthcheckType: HTTP2 - version: beta -- name: ${RESOURCE_NAME_PREFIX}-tcp - type: healthcheck.py - properties: - description: My Compute Engine TCP healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - port: ${PORT_80} - healthcheckType: TCP -- name: ${RESOURCE_NAME_PREFIX}-ssl - type: healthcheck.py - properties: - description: My Compute Engine SSL healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - port: ${PORT_80} - healthcheckType: SSL -- name: ${RESOURCE_NAME_PREFIX}-beta-tcp - type: healthcheck.py - properties: - description: My Compute Engine beta TCP healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - port: ${PORT_80} - healthcheckType: TCP -- name: ${RESOURCE_NAME_PREFIX}-beta-ssl - type: healthcheck.py - properties: - description: My Compute Engine beta SSL healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - port: ${PORT_80} - healthcheckType: SSL -- name: ${RESOURCE_NAME_PREFIX}-requestpath-legacy-https - type: healthcheck.py - properties: - description: My Compute Engine requestpath healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - proxyHeader: PROXY_V1 - requestPath: /health.html - healthcheckType: HTTPS-Legacy -- name: ${RESOURCE_NAME_PREFIX}-requestpath-https - type: healthcheck.py - properties: - description: My Compute Engine requestpath healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - proxyHeader: PROXY_V1 - requestPath: /health.html - healthcheckType: HTTPS - port: ${PORT_443} -- name: ${RESOURCE_NAME_PREFIX}-response-tcp - type: healthcheck.py - properties: - description: My Compute Engine response healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - proxyHeader: PROXY_V1 - port: ${PORT_80}80 - healthcheckType: TCP - request: request-data - response: response-data -- name: ${RESOURCE_NAME_PREFIX}-http - type: healthcheck.py - properties: - description: My Compute Engine legacy HTTP healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - host: host.testing - port: ${PORT_80} - healthcheckType: HTTP -- name: ${RESOURCE_NAME_PREFIX}-https - type: healthcheck.py - properties: - description: My Compute Engine legacy HTTPS healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - port: ${PORT_443} - healthcheckType: HTTPS -- name: ${RESOURCE_NAME_PREFIX}-beta-http - type: healthcheck.py - properties: - description: My Compute Engine beta HTTP healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - host: test-host.testing - port: ${PORT_80} - healthcheckType: HTTP - response: test-response - version: beta -- name: ${RESOURCE_NAME_PREFIX}-beta-https - type: healthcheck.py - properties: - description: My Compute Engine beta HTTPS healthcheck. - checkIntervalSec: ${CHECK_INTERVAL_SEC} - timeoutSec: ${TIMEOUT_SEC} - unhealthyThreshold: ${UNHEALTHY_THRESHOLD} - healthyThreshold: ${HEALTHY_THRESHOLD} - host: test-host.testing - port: ${PORT_443} - healthcheckType: HTTPS - response: test-response - version: beta diff --git a/dm/templates/iam_custom_role/README.md b/dm/templates/iam_custom_role/README.md deleted file mode 100644 index 80bb3eedf37..00000000000 --- a/dm/templates/iam_custom_role/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Custom IAM Role - -This template creates a custom IAM role for an organization or a project. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [iam.roleAdmin, iam.organizationRoleAdmin or owner](https://cloud.google.com/iam/docs/understanding-custom-roles#required_permissions_and_roles) IAM role to the project service account - -## Deployment - -### Resources - -- [Creating custom IAM roles](https://cloud.google.com/iam/docs/creating-custom-roles) -- [gcp-types/iam-v1:organizations.roles](https://cloud.google.com/iam/reference/rest/v1/organizations.roles/create) -- [gcp-types/iam-v1:projects.roles](https://cloud.google.com/iam/reference/rest/v1/projects.roles/create) - -### Properties - -See `properties` section in the schema file(s): - -- [Organization](organization_custom_role.py.schema) -- [Project](project_custom_role.py.schema) - - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/iam\_custom\_role.yaml](examples/iam_custom_role.yaml): - -```shell - cp templates/iam_custom_role/examples/iam_custom_role.yaml my_iamcustomrole.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_iamcustomrole.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_iamcustomrole.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Custom IAM role](examples/iam_custom_role.yaml) diff --git a/dm/templates/iam_custom_role/examples/iam_custom_role.yaml b/dm/templates/iam_custom_role/examples/iam_custom_role.yaml deleted file mode 100644 index 750fdc3c2ed..00000000000 --- a/dm/templates/iam_custom_role/examples/iam_custom_role.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Example of the IAM custom role template usage. -# -# In this example, two custom roles are created: -# 1- a custom organizational role (test-custom-org-role) -# 2- a custom project role (test-project-role) -# -# Replace the following placeholders with valid values: -# : the organization id -# : a unique ID for the custom organization role -# : a unique ID for the custom project role -# - -imports: - - path: templates/iam_custom_role/project_custom_role.py - name: project_custom_role.py - - path: templates/iam_custom_role/organization_custom_role.py - name: organization_custom_role.py - -resources: - - name: example-custom-org-role - type: organization_custom_role.py - properties: - orgId: - roleId: - title: My Org Role Title - description: My Org Role Description - includedPermissions: - - iam.roles.get - - iam.roles.list - - name: example-project-custom-role - type: project_custom_role.py - properties: - roleId: - title: My Project Role Title - description: My Project Role Description - includedPermissions: - - iam.roles.get - - iam.roles.list diff --git a/dm/templates/iam_custom_role/organization_custom_role.py b/dm/templates/iam_custom_role/organization_custom_role.py deleted file mode 100644 index 3062da90962..00000000000 --- a/dm/templates/iam_custom_role/organization_custom_role.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -"""This template creates a custom IAM Organization role.""" - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - org_id = str(properties['orgId']) - included_permissions = properties['includedPermissions'] - - role = { - 'includedPermissions': included_permissions, - # Default the stage to General Availability. - 'stage': properties.get('stage') - } - - title = properties.get('title') - if title: - role['title'] = title - - description = properties.get('description') - if description: - role['description'] = description - - resources = [ - { - 'name': context.env['name'], - # https://cloud.google.com/iam/reference/rest/v1/organizations.roles - 'type': 'gcp-types/iam-v1:organizations.roles', - 'properties': - { - 'parent': 'organizations/' + org_id, - 'roleId': properties['roleId'], - 'role': role - } - } - ] - - return {'resources': resources} diff --git a/dm/templates/iam_custom_role/organization_custom_role.py.schema b/dm/templates/iam_custom_role/organization_custom_role.py.schema deleted file mode 100644 index 0b23b2a56f0..00000000000 --- a/dm/templates/iam_custom_role/organization_custom_role.py.schema +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Custom IAM Role (Organization Level) - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a custom organization-level IAM role under the specified organization ID. - For more information on this resource: - https://cloud.google.com/iam/docs/understanding-custom-roles. - - To deploy custom organization-level roles, your project needs the Identity - and Access Management (IAM) API to be enabled. You may also need to grant - additional roles to the default Google APIs service account. - See [Best Practices](https://cloud.google.com/deployment-manager/docs/best-practices/#permissions) for more information. - - After a role has been deleted, its bindings remain, in the inactive status. - The role can be undeleted within 7 days of deletion. After 7 days, the role is picked by a - permanent deletion process that lasts 30 days. During this process, the - role and all its bindings are permanently removed, and you cannot create a new role - with the same role ID. After the role has been permanently deleted -- which - takes 37 days from the initial deletion request -- a new role can be created using - the deleted role's ID. - - APIs endpoints used by this template: - - gcp-types/iam-v1:organizations.roles => - https://cloud.google.com/iam/reference/rest/v1/organizations.roles - -additionalProperties: false - -required: - - orgId - - roleId - - includedPermissions - -properties: - orgId: - type: string - pattern: ^[0-9]{8,25}$ - description: | - The ID of the organization that the projects will be under. Typically a - base-10 string representation of integer. - roleId: - type: string - pattern: ^[a-zA-Z][0-9a-zA-Z]{7,63}$ - description: | - A unique ID of the custom role. - title: - type: string - description: | - The title of the custom role. - description: - type: string - description: | - Description of the custom role. - stage: - type: string - description: | - The current launch stage of the role. If the ALPHA launch stage has been selected for a role, - the stage field will not be included in the returned definition for the role. - default: GA - enum: - - ALPHA - - BETA - - GA - - DEPRECATED - - DISABLED - - EAP - includedPermissions: - type: array - uniqueItems: true - default: [] - description: | - Permissions that the custom role includes. - -documentation: - - templates/iam_custom_role/README.md - -examples: - - templates/iam_custom_role/examples/iam_custom_role.yaml diff --git a/dm/templates/iam_custom_role/project_custom_role.py b/dm/templates/iam_custom_role/project_custom_role.py deleted file mode 100644 index 4a75f2f8b2f..00000000000 --- a/dm/templates/iam_custom_role/project_custom_role.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -"""This template creates a custom IAM Project role.""" - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - included_permissions = properties['includedPermissions'] - project_id = properties.get('project', context.env['project']) - - role = { - 'includedPermissions': included_permissions, - # Default the stage to General Availability. - 'stage': properties.get('stage') - } - - title = properties.get('title') - if title: - role['title'] = title - - description = properties.get('description') - if description: - role['description'] = description - - resources = [ - { - 'name': context.env['name'], - # https://cloud.google.com/iam/reference/rest/v1/projects.roles - 'type': 'gcp-types/iam-v1:projects.roles', - 'properties': - { - 'parent': 'projects/' + project_id, - 'roleId': properties['roleId'], - 'role': role - } - } - ] - - return {'resources': resources} diff --git a/dm/templates/iam_custom_role/project_custom_role.py.schema b/dm/templates/iam_custom_role/project_custom_role.py.schema deleted file mode 100644 index cabcde2037b..00000000000 --- a/dm/templates/iam_custom_role/project_custom_role.py.schema +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Custom IAM Role (Project Level) - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a custom project-level IAM role under the specified organization ID. - For more information on this resource: - https://cloud.google.com/iam/reference/rest/v1/projects.roles/create - - To deploy custom project-level roles, your project needs the Identity - and Access Management (IAM) API to be enabled. You may also need to grant - additional roles to the default Google APIs service account. - See [Best Practices](https://cloud.google.com/deployment-manager/docs/best-practices/#permissions) for more information. - - After a role has been deleted, its bindings remain, in the inactive status. - The role can be undeleted within 7 days of deletion. After 7 days, the role is picked by a - permanent deletion process that lasts 30 days. During this process, the - role and all its bindings are permanently removed, and you cannot create a new role - with the same role ID. After the role has been permanently deleted -- which - takes 37 days from the initial deletion request -- a new role can be created using - the deleted role's ID. - - APIs endpoints used by this template: - - gcp-types/iam-v1:projects.roles => - https://cloud.google.com/iam/reference/rest/v1/projects.roles - -additionalProperties: false - -required: - - roleId - - includedPermissions - -properties: - project: - type: string - description: | - The project ID of the project to modify. - roleId: - type: string - pattern: ^[a-zA-Z][0-9a-zA-Z]{7,63}$ - description: | - A unique ID of the custom role. - title: - type: string - description: | - The title of the custom role. - description: - type: string - description: | - Description of the custom role. - stage: - type: string - description: | - The current launch stage of the role. If the ALPHA launch stage has been selected for a role, - the stage field will not be included in the returned definition for the role. - default: GA - enum: - - ALPHA - - BETA - - GA - - DEPRECATED - - DISABLED - - EAP - includedPermissions: - type: array - uniqueItems: true - default: [] - description: | - Permissions that the custom role includes. - -documentation: - - templates/iam_custom_role/README.md - -examples: - - templates/iam_custom_role/examples/iam_custom_role.yaml diff --git a/dm/templates/iam_custom_role/tests/integration/iam_custom_role.bats b/dm/templates/iam_custom_role/tests/integration/iam_custom_role.bats deleted file mode 100644 index 5a6928501d6..00000000000 --- a/dm/templates/iam_custom_role/tests/integration/iam_custom_role.bats +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/iam_custom_role/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f ${RANDOM_FILE} - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that project iam roles were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud iam roles list --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="name:myCustomProjectRole${RAND}" - [ "$status" -eq 0 ] - [[ "$output" =~ "description: My Project Role Description" ]] - [[ "$output" =~ "name: projects/${CLOUD_FOUNDATION_PROJECT_ID}/roles/myCustomProjectRole${RAND}" ]] - [[ "$output" =~ "stage: GA" ]] - [[ "$output" =~ "title: My Project Role Title" ]] -} - -@test "Verifying that organizational iam roles were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud iam roles list --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" --filter="name:myCustomOrgRole${RAND}" - [ "$status" -eq 0 ] - [[ "$output" =~ "description: My Org Role Description" ]] - [[ "$output" =~ "name: organizations/${CLOUD_FOUNDATION_ORGANIZATION_ID}/roles/myCustomOrgRole${RAND}" ]] - [[ "$output" =~ "stage: GA" ]] - [[ "$output" =~ "title: My Org Role Title" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q -} diff --git a/dm/templates/iam_custom_role/tests/integration/iam_custom_role.yaml b/dm/templates/iam_custom_role/tests/integration/iam_custom_role.yaml deleted file mode 100644 index dec630790f7..00000000000 --- a/dm/templates/iam_custom_role/tests/integration/iam_custom_role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Test of the IAM custom role template. -# -# Variables: -# CLOUD_FOUNDATION_ORGANIZATION_ID: TYour organization's ID -# RAND: A random string used by the testing suite - -imports: - - path: templates/iam_custom_role/project_custom_role.py - name: project_custom_role.py - - path: templates/iam_custom_role/organization_custom_role.py - name: organization_custom_role.py - -resources: - - name: test-custom-org-role-${RAND} - type: organization_custom_role.py - properties: - orgId: "${CLOUD_FOUNDATION_ORGANIZATION_ID}" - roleId: myCustomOrgRole${RAND} - title: My Org Role Title - description: My Org Role Description - includedPermissions: - - iam.roles.get - - iam.roles.list - - name: project-custom-role-${RAND} - type: project_custom_role.py - properties: - roleId: myCustomProjectRole${RAND} - title: My Project Role Title - description: My Project Role Description - includedPermissions: - - iam.roles.get - - iam.roles.list diff --git a/dm/templates/iam_member/README.md b/dm/templates/iam_member/README.md deleted file mode 100644 index 429f94bb57c..00000000000 --- a/dm/templates/iam_member/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# IAM Member - -This template grants IAM roles for a projects, folders and organizations. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) - -### Grant the appropriate IAM permissions depending on your usecase -Grant the [owner](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the project to the *DM Service Account* to grant roles within the project. This allows DM to set IAM on the Project or on the resource level. - -For more restrictive permissions grant the appropriate resource level admin permission: - -- Grant the [resourcemanager.projectIamAdmin](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the project to the *DM Service Account* to grant roles within the project -- Grant the [roles/resourcemanager.folderIamAdmin](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the folder to the *DM Service Account* to grant roles within the folder -- Grant the [roles/iam.securityAdmin](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the organization to the *DM Service Account* to grant roles within the organization and all nested resources -- Etc. - -## Development - -### Resources - -Resources are created based on the input properties: -- [cloudresourcemanager-v1:virtual.projects.iamMemberBinding](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/google/resource-snippets/cloudresourcemanager-v1/policies.jinja) - - This virtual endpoint implements projects.getIamPolicy and projects.setIamPolicy internally with proper concurrency handling. -- [cloudresourcemanager-v2:virtual.folders.iamMemberBinding](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/google/resource-snippets/cloudresourcemanager-v2/policies.jinja) -- [cloudresourcemanager-v1:virtual.organizations.iamMemberBinding](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/google/resource-snippets/cloudresourcemanager-v1/policies.jinja) -- storage-v1:virtual.buckets.iamMemberBinding -- cloudfunctions-v1:virtual.projects.locations.functions.iamMemberBinding - -### Properties - -See `properties` section in the schema file(s): - -- [IAM Member](iam_member.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/iam_member.yaml](examples/iam_member.yaml): - -```shell - cp templates/iam_member/examples/iam_member.yaml my_iammember.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_iammember.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_iammember.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [IAM member](examples/iam_member.yaml) diff --git a/dm/templates/iam_member/examples/iam_member.yaml b/dm/templates/iam_member/examples/iam_member.yaml deleted file mode 100644 index 58ffa31fda5..00000000000 --- a/dm/templates/iam_member/examples/iam_member.yaml +++ /dev/null @@ -1,43 +0,0 @@ -# Example of the IAM member template usage. -# -# The `members` property is a list of members to which the -# `role` is applied. -# -# Replace `user-email` with a valid email. -# Replace `service-account` with a valid service account. -# Replace `group-address` with a valid group. -# Replace `domain-name` with a valid domain. -# Replace `folderId` with a folder ID to assign roles to. - - -imports: - - path: templates/iam_member/iam_member.py - name: iam_member.py - -resources: - - name: iam-member-project - type: iam_member.py - properties: - roles: - - role: roles/editor - members: - - user: - - serviceAccount: - - role: roles/viewer - members: - - group: - - domain: - - - name: iam-member-folder - type: iam_member.py - properties: - folderId: "" - roles: - - role: roles/editor - members: - - user: - - serviceAccount: - - role: roles/viewer - members: - - group: - - domain: diff --git a/dm/templates/iam_member/examples/iam_member_resource.yaml b/dm/templates/iam_member/examples/iam_member_resource.yaml deleted file mode 100644 index bd92c266547..00000000000 --- a/dm/templates/iam_member/examples/iam_member_resource.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# Example of the IAM member template usage. -# -# The `members` property is a list of members to which the -# `role` is applied. -# -# Replace `user-email` with a valid email. -# Replace `service-account` with a valid service account. -# Replace `group-address` with a valid group. -# Replace `domain-name` with a valid domain. -# Replace `folderId` with a folder ID to assign roles to. -# Replave `bucket-name-example` with a valid name of a GCS Bucket. -# Replave `function-name-example` with a valid name of a CloudFunction. - - -imports: - - path: templates/iam_member/iam_member.py - name: iam_member.py - -resources: - - name: iam-member-bucket - type: iam_member.py - properties: - roles: - - role: roles/storage.objectAdmin - bucket: - members: - - user: - - serviceAccount: - - role: roles/storage.objectViewer - bucket: - members: - - group: - - domain: - - name: iam-member-function - type: iam_member.py - properties: - roles: - - role: roles/cloudfunctions.developer - cloudFunction: - members: - - user: - - serviceAccount: - - role: roles/cloudfunctions.invoker - cloudFunction: - members: - - group: - - domain: diff --git a/dm/templates/iam_member/iam_member.py b/dm/templates/iam_member/iam_member.py deleted file mode 100644 index 4ab378292e2..00000000000 --- a/dm/templates/iam_member/iam_member.py +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates an IAM policy member. """ - -from hashlib import sha1 - -mapper = { - 'organizationId': { - 'dm_type': 'gcp-types/cloudresourcemanager-v1:virtual.organizations.iamMemberBinding', - 'dm_resource_property': 'resource', - 'postfix': 'organization'}, - 'folderId': { - 'dm_type': 'gcp-types/cloudresourcemanager-v2:virtual.folders.iamMemberBinding', - 'dm_resource_property': 'resource', - 'postfix': 'folder'}, - 'projectId': { - 'dm_type': 'gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding', - 'dm_resource_property': 'resource', - 'postfix': 'project'}, - 'bucket': { - 'dm_type': 'gcp-types/storage-v1:virtual.buckets.iamMemberBinding', - 'dm_resource_property': 'bucket', - 'postfix': 'bucket'}, - 'cloudFunction': { - 'dm_type': 'gcp-types/cloudfunctions-v1:virtual.projects.locations.functions.iamMemberBinding', - 'dm_resource_property': 'resource', - 'postfix': 'cf'} -} - - -def get_type(context): - for resource_type, resource_value in mapper.items(): - if resource_type in context.properties: - resource_value.update({'id': context.properties[resource_type]}) - return resource_value - - # If nothing specified the default is projectID from context - mapper['projectId'].update({'id': context.env['project']}) - return mapper['projectId'] - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - - base_resource = get_type(context) - - resources = [] - - if 'dependsOn' in properties: - dependson = {'metadata': {'dependsOn': properties['dependsOn']}} - dependson_root = properties['dependsOn'] - else: - dependson = {} - dependson_root = [] - - for role in properties['roles']: - for member in role['members']: - suffix = sha1( - '{}-{}'.format(role['role'], member).encode('utf-8')).hexdigest()[:10] - policy_get_name = '{}-{}'.format(context.env['name'], suffix) - - resource_name = '{}-{}'.format(policy_get_name, - base_resource['postfix']) - iam_resource = { - 'name': resource_name, - # TODO - Virtual type documentation needed - 'type': base_resource['dm_type'], - 'properties': { - base_resource['dm_resource_property']: base_resource['id'], - 'role': role['role'], - 'member': member, - } - } - iam_resource.update(dependson) - resources.append(iam_resource) - - dependson = {'metadata': {'dependsOn': [ - resource_name] + dependson_root}} - - return {"resources": resources} diff --git a/dm/templates/iam_member/iam_member.py.schema b/dm/templates/iam_member/iam_member.py.schema deleted file mode 100644 index 9f4c82a990b..00000000000 --- a/dm/templates/iam_member/iam_member.py.schema +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: IAM policy member - author: Sourced Group Inc. - version: 1.3.0 - description: | - Manages an IAM policy member - - For more information on this resource: - https://cloud.google.com/iam/docs/overview - - APIs endpoints used by this template: - - gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding => - TODO - Virtual type documentation needed - - gcp-types/cloudresourcemanager-v2:virtual.folders.iamMemberBinding => - TODO - Virtual type documentation needed - - gcp-types/cloudresourcemanager-v1:virtual.organizations.iamMemberBinding => - TODO - Virtual type documentation needed - - gcp-types/gcp-types/storage-v1:virtual.buckets.iamMemberBinding => - TODO - Virtual type documentation needed - - gcp-types/cloudfunctions-v1:virtual.projects.locations.functions.iamMemberBinding => - TODO - Virtual type documentation needed - -additionalProperties: false - -required: - - roles - -oneOf: - - required: - - folderId - - required: - - organizationId - - required: - - projectId - - required: - - bucket - - required: - - cloudFunction - - allOf: - - not: - required: - - folderId - - not: - required: - - organizationId - - not: - required: - - projectId - -properties: - folderId: - type: string - description: | - Folder ID to assign members to. - organizationId: - type: string - description: | - Organization ID to assign members to. - projectId: - type: string - description: | - Overwrite of project ID in case IAM bindings are referencing to - a different project or if you need to assign members to folders/organizations as well. - bucket: - type: string - description: | - GCS bucket to assign members to. - cloudFunction: - type: string - description: | - CloudFunction to assign members to. - roles: - type: array - uniqueItems: true - minItems: 1 - description: | - An array of roles and members. - items: - type: object - additionalProperties: false - properties: - role: - type: string - description: | - The role to grant to members. - members: - type: array - description: | - A list of identities. - items: - type: string - description: | - Specifies the identity requesting access to a Cloud Platform - resource. Can have the following values: - - user:{emailid} - An email address that represents a specific - IAM User account. For example, user:name@example.com - - serviceAccount:{emailid} - An email address that represents a - Service Account. For example, - serviceAccount:my-other-app@appspot.gserviceaccount.com - - group:{emailid} - An email address that represents a Google group. - For example, group:admins@example.com - - domain:{domain} - A Cloud Identity or G Suite domain name that - represents all the users of that domain. For example, acme.com - or example.com. - dependsOn: - type: array - description: | - The list of the resources that must be created before this template is applied. - items: - type: string - description: The resource name. - -documentation: - - templates/iam_member/README.md - -examples: - - templates/iam_member/examples/iam_member.yaml diff --git a/dm/templates/iam_member/tests/integration/iam_35_members.bats b/dm/templates/iam_member/tests/integration/iam_35_members.bats deleted file mode 100755 index abff65e6669..00000000000 --- a/dm/templates/iam_member/tests/integration/iam_35_members.bats +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -export TEST_SERVICE_ACCOUNT="test-iam-sa-${RAND}" - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/iam_member/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that roles were assigned to project in deployment ${DEPLOYMENT_NAME}" { - run gcloud projects get-iam-policy "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --flatten="bindings[].members" \ - --format='table(bindings.role)' \ - --filter="bindings.members~${TEST_SERVICE_ACCOUNT}-.*@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - [[ "$output" =~ "roles/editor" ]] -} - -@test "Verifying that roles were assigned to folder in deployment ${DEPLOYMENT_NAME}" { - # Get the test folder ID and make it available. - if [ -z "${TEST_ORG_FOLDER_NAME}" ] - then - export TEST_ORG_FOLDER_NAME=$(gcloud alpha resource-manager folders list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" | \ - grep "org-folder-${RAND}" | awk '{print $3}') - fi - run gcloud alpha resource-manager folders get-iam-policy "folders/${TEST_ORG_FOLDER_NAME}" \ - --flatten="bindings[].members" \ - --format='table(bindings.role)' \ - --filter="bindings.members~${TEST_SERVICE_ACCOUNT}-.*@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - - [[ "$output" =~ "roles/viewer" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run gcloud projects get-iam-policy "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --flatten="bindings[].members" \ - --format='table(bindings.role)' \ - --filter="bindings.members~${TEST_SERVICE_ACCOUNT}-.*@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - [[ ! "$output" =~ "roles/editor" ]] - [[ ! "$output" =~ "roles/viewer" ]] -} diff --git a/dm/templates/iam_member/tests/integration/iam_35_members.yaml b/dm/templates/iam_member/tests/integration/iam_35_members.yaml deleted file mode 100644 index 0ff9724530c..00000000000 --- a/dm/templates/iam_member/tests/integration/iam_35_members.yaml +++ /dev/null @@ -1,313 +0,0 @@ -# Test of the IAM member template . -# -# Variables: -# RAND: A random string used by the testing suite -# TEST_SERVICE_ACCOUNT: Service account name -# CLOUD_FOUNDATION_PROJECT_ID: Project ID - -imports: - - path: templates/iam_member/iam_member.py - name: iam_member.py - -resources: - - name: iam-member-test-project-${RAND} - type: iam_member.py - properties: - roles: - - role: roles/editor - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}-1@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-2@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-3@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-4@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-5@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-6@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-7@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-8@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-9@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-10@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-11@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-12@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-13@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-14@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-15@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-16@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-17@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-18@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-19@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-20@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-21@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-22@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-23@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-24@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-25@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-26@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-27@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-28@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-29@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-30@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-31@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-32@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-33@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-34@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-35@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - name: iam-member-test-folder-${RAND} - type: iam_member.py - properties: - folderId: $(ref.test-folder-${RAND}.name) - roles: - - role: roles/viewer - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}-1@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-2@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-3@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-4@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-5@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-6@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-7@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-8@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-9@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-10@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-11@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-12@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-13@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-14@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-15@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-16@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-17@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-18@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-19@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-20@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-21@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-22@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-23@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-24@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-25@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-26@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-27@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-28@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-29@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-30@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-31@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-32@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-33@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-34@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - serviceAccount:${TEST_SERVICE_ACCOUNT}-35@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - - name: ${TEST_SERVICE_ACCOUNT}-1-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-1 - displayName: ${TEST_SERVICE_ACCOUNT}-1 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-2-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-2 - displayName: ${TEST_SERVICE_ACCOUNT}-2 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-3-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-3 - displayName: ${TEST_SERVICE_ACCOUNT}-3 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-4-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-4 - displayName: ${TEST_SERVICE_ACCOUNT}-4 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-5-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-5 - displayName: ${TEST_SERVICE_ACCOUNT}-5 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-6-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-6 - displayName: ${TEST_SERVICE_ACCOUNT}-6 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-7-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-7 - displayName: ${TEST_SERVICE_ACCOUNT}-7 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-8-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-8 - displayName: ${TEST_SERVICE_ACCOUNT}-8 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-9-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-9 - displayName: ${TEST_SERVICE_ACCOUNT}-9 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-10-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-10 - displayName: ${TEST_SERVICE_ACCOUNT}-10 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-11-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-11 - displayName: ${TEST_SERVICE_ACCOUNT}-11 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-12-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-12 - displayName: ${TEST_SERVICE_ACCOUNT}-12 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-13-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-13 - displayName: ${TEST_SERVICE_ACCOUNT}-13 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-14-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-14 - displayName: ${TEST_SERVICE_ACCOUNT}-14 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-15-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-15 - displayName: ${TEST_SERVICE_ACCOUNT}-15 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-16-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-16 - displayName: ${TEST_SERVICE_ACCOUNT}-16 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-17-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-17 - displayName: ${TEST_SERVICE_ACCOUNT}-17 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-18-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-18 - displayName: ${TEST_SERVICE_ACCOUNT}-18 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-19-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-19 - displayName: ${TEST_SERVICE_ACCOUNT}-19 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-20-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-20 - displayName: ${TEST_SERVICE_ACCOUNT}-20 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-21-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-21 - displayName: ${TEST_SERVICE_ACCOUNT}-21 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-22-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-22 - displayName: ${TEST_SERVICE_ACCOUNT}-22 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-23-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-23 - displayName: ${TEST_SERVICE_ACCOUNT}-23 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-24-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-24 - displayName: ${TEST_SERVICE_ACCOUNT}-24 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-25-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-25 - displayName: ${TEST_SERVICE_ACCOUNT}-25 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-26-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-26 - displayName: ${TEST_SERVICE_ACCOUNT}-26 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-27-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-27 - displayName: ${TEST_SERVICE_ACCOUNT}-27 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-28-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-28 - displayName: ${TEST_SERVICE_ACCOUNT}-28 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-29-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-29 - displayName: ${TEST_SERVICE_ACCOUNT}-29 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-30-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-30 - displayName: ${TEST_SERVICE_ACCOUNT}-310 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-31-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-31 - displayName: ${TEST_SERVICE_ACCOUNT}-31 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-32-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-32 - displayName: ${TEST_SERVICE_ACCOUNT}-32 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-33-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-33 - displayName: ${TEST_SERVICE_ACCOUNT}-33 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-34-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-34 - displayName: ${TEST_SERVICE_ACCOUNT}-34 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - name: ${TEST_SERVICE_ACCOUNT}-35-${CLOUD_FOUNDATION_PROJECT_ID} - type: iam.v1.serviceAccount - properties: - accountId: ${TEST_SERVICE_ACCOUNT}-35 - displayName: ${TEST_SERVICE_ACCOUNT}-35 - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - - - name: test-folder-${RAND} - type: gcp-types/cloudresourcemanager-v2:folders - properties: - name: org-folder-${RAND} - parent: organizations/${CLOUD_FOUNDATION_ORGANIZATION_ID} - displayName: org-folder-${RAND} diff --git a/dm/templates/iam_member/tests/integration/iam_member.bats b/dm/templates/iam_member/tests/integration/iam_member.bats deleted file mode 100755 index 6b3cea6b3ef..00000000000 --- a/dm/templates/iam_member/tests/integration/iam_member.bats +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -export TEST_SERVICE_ACCOUNT="test-sa-${RAND}" - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/iam_member/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - gcloud iam service-accounts create "${TEST_SERVICE_ACCOUNT}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud iam service-accounts delete "${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" \ - --quiet --project "${CLOUD_FOUNDATION_PROJECT_ID}" - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that roles were assigned to project in deployment ${DEPLOYMENT_NAME}" { - run gcloud projects get-iam-policy "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --flatten="bindings[].members" \ - --format='table(bindings.role)' \ - --filter="bindings.members:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - echo "status = ${status}" - echo "output = ${output}" - [[ "$output" =~ "roles/editor" ]] - [[ "$output" =~ "roles/viewer" ]] -} - -@test "Verifying that roles were assigned to folder in deployment ${DEPLOYMENT_NAME}" { - # Get the test folder ID and make it available. - TEST_ORG_FOLDER_NAME=$(gcloud alpha resource-manager folders list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" | \ - grep "org-folder-${RAND}" | awk '{print $3}') - run gcloud alpha resource-manager folders get-iam-policy "folders/${TEST_ORG_FOLDER_NAME}" \ - --flatten="bindings[].members" \ - --format='table(bindings.role)' \ - --filter="bindings.members:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - echo "status = ${status}" - echo "output = ${output}" - - [[ "$output" =~ "roles/editor" ]] - [[ "$output" =~ "roles/viewer" ]] -} - -@test "Verify if SA has roles on the bucket" { - role=$(gsutil iam get "gs://org-bucket-${RAND}/" | grep role) - echo "status = ${status}" - echo "output = ${output}" - [[ "$status" -eq 0 ]] - [[ "$role" =~ "roles/storage.objectAdmin" ]] - [[ "$role" =~ "roles/storage.objectViewer" ]] - -} - -@test "Verifying that roles were assigned to CloudFunction in deployment ${DEPLOYMENT_NAME}" { - run gcloud functions get-iam-policy "test-function-${RAND}" \ - --region=europe-west2 \ - --project=${CLOUD_FOUNDATION_PROJECT_ID} \ - --flatten="bindings[].members" \ - --format='table(bindings.role)' \ - --filter="bindings.members:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - echo "status = ${status}" - echo "output = ${output}" - [[ "$output" =~ "roles/cloudfunctions.developer" ]] - [[ "$output" =~ "roles/cloudfunctions.invoker" ]] -} - - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run gcloud projects get-iam-policy "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --flatten="bindings[].members" \ - --format='table(bindings.role)' \ - --filter="bindings.members:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - echo "status = ${status}" - echo "output = ${output}" - [[ ! "$output" =~ "roles/editor" ]] - [[ ! "$output" =~ "roles/viewer" ]] -} diff --git a/dm/templates/iam_member/tests/integration/iam_member.yaml b/dm/templates/iam_member/tests/integration/iam_member.yaml deleted file mode 100644 index 643b14c3ad4..00000000000 --- a/dm/templates/iam_member/tests/integration/iam_member.yaml +++ /dev/null @@ -1,80 +0,0 @@ -# Test of the IAM member template . -# -# Variables: -# RAND: A random string used by the testing suite -# TEST_SERVICE_ACCOUNT: Service account name -# CLOUD_FOUNDATION_PROJECT_ID: Project ID - -imports: - - path: templates/iam_member/iam_member.py - name: iam_member.py - -resources: - - name: iam-member-test-project-${RAND} - type: iam_member.py - properties: - roles: - - role: roles/editor - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - role: roles/viewer - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - name: iam-member-test-folder-${RAND} - type: iam_member.py - properties: - folderId: $(ref.test-folder-${RAND}.name) - roles: - - role: roles/editor - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - role: roles/viewer - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - name: iam-member-test-bucket-${RAND} - type: iam_member.py - properties: - bucket: $(ref.test-bucket-${RAND}.name) - roles: - - role: roles/storage.objectAdmin - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - role: roles/storage.objectViewer - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - name: iam-member-test-function-${RAND} - type: iam_member.py - properties: - cloudFunction: $(ref.test-function-${RAND}.name) - roles: - - role: roles/cloudfunctions.developer - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - role: roles/cloudfunctions.invoker - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - - - name: test-folder-${RAND} - type: gcp-types/cloudresourcemanager-v2:folders - properties: - name: org-folder-${RAND} - parent: organizations/${CLOUD_FOUNDATION_ORGANIZATION_ID} - displayName: org-folder-${RAND} - - - name: test-bucket-${RAND} - type: gcp-types/storage-v1:buckets - properties: - name: org-bucket-${RAND} - project: ${CLOUD_FOUNDATION_PROJECT_ID} - - - type: gcp-types/cloudfunctions-v1:projects.locations.functions - name: test-function-${RAND} - properties: - parent: projects/${CLOUD_FOUNDATION_PROJECT_ID}/locations/europe-west2 - function: test-function-${RAND} - sourceArchiveUrl: gs://cloud-function-sample/function.zip - entryPoint: handler - runtime: nodejs8 - httpsTrigger: {} - diff --git a/dm/templates/instance/README.md b/dm/templates/instance/README.md deleted file mode 100644 index a2d7ff8c0cb..00000000000 --- a/dm/templates/instance/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Instance - -This template creates a Compute Instance. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) IAM role to the [Deployment Manager service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) - -## Deployment - -### Resources - -- [compute.v1.instance](https://cloud.google.com/compute/docs/reference/rest/v1/instances) - -### Properties - -See the `properties` section in the schema file(s): - -- [Instance](instance.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/instance.yaml](examples/instance.yaml): - -```shell - cp templates/instance/examples/instance.yaml my_instance.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_instance.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_instance.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Compute Instance](examples/instance.yaml) -- [Compute Instance with private IP](examples/instance_private.yaml) diff --git a/dm/templates/instance/examples/instance.yaml b/dm/templates/instance/examples/instance.yaml deleted file mode 100644 index 12ce0881245..00000000000 --- a/dm/templates/instance/examples/instance.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example on the Instance template usage. -# -# In this example, a Ubuntu 18.04 Compute Instance with Nginx is created. - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-instance - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - machineType: f1-micro - diskType: pd-ssd - networks: - - network: default - accessConfigs: - - type: ONE_TO_ONE_NAT - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx - tags: - items: - - your-tag diff --git a/dm/templates/instance/examples/instance_private.yaml b/dm/templates/instance/examples/instance_private.yaml deleted file mode 100644 index 5645b9c3d13..00000000000 --- a/dm/templates/instance/examples/instance_private.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Example on the Instance template usage. -# -# In this example, a Ubuntu 18.04 Compute Instance with Nginx is created. - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-instance - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - machineType: f1-micro - diskType: pd-ssd - networks: - - network: default - networkIP: 10.0.2.1 - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx - tags: - items: - - your-tag diff --git a/dm/templates/instance/examples/instance_source_template.yaml b/dm/templates/instance/examples/instance_source_template.yaml deleted file mode 100644 index 7cbbd978c17..00000000000 --- a/dm/templates/instance/examples/instance_source_template.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Example of the Instance with sourceInstanceTemplate property provided. -# -# Variables: -# RAND: A random string used by the testing suite. - -imports: - - path: templates/instance_template/instance_template.py - name: instance_template.py - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-instance-template-${RAND} - type: instance_template.py - properties: - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - canIpForward: true - network: test-network-${RAND} - subnetwork: regions/us-central1/subnetworks/test-subnet-${RAND} - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx\ - - name: test-instance-${RAND} - type: instance.py - properties: - zone: us-central1-a - sourceInstanceTemplate: $(ref.test-instance-template-${RAND}.selfLink) diff --git a/dm/templates/instance/instance.py b/dm/templates/instance/instance.py deleted file mode 100644 index 93a767e7eb6..00000000000 --- a/dm/templates/instance/instance.py +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Compute Instance.""" - -def set_optional_property(receiver, source, property_name): - """ If set, copies the given property value from one object to another. """ - - if property_name in source: - receiver[property_name] = source[property_name] - -def create_boot_disk(properties, zone, instance_name): - """ Create a boot disk configuration. """ - - disk_name = instance_name - boot_disk = { - 'deviceName': disk_name, - 'type': 'PERSISTENT', - 'boot': True, - 'autoDelete': True, - 'initializeParams': { - 'sourceImage': properties['diskImage'] - } - } - - disk_params = boot_disk['initializeParams'] - set_optional_property(disk_params, properties, 'diskSizeGb') - - disk_type = properties.get('diskType') - if disk_type: - disk_params['diskType'] = 'zones/{}/diskTypes/{}'.format(zone, - disk_type) - - return boot_disk - -def get_network_interfaces(properties): - """ Get the configuration that connects the instance to an existing network - and assigns to it an ephemeral public IP if specified. - """ - network_interfaces = [] - - networks = properties.get('networks', []) - if len(networks) == 0 and properties.get('network'): - network = { - "network": properties.get('network'), - "subnetwork": properties.get('subnetwork'), - "networkIP": properties.get('networkIP'), - } - networks.append(network) - if (properties.get('hasExternalIp')): - network['accessConfigs'] = [{ - "type": "ONE_TO_ONE_NAT", - }] - if properties.get('natIP'): - network['accessConfigs'][0]['natIP'] = properties.get('natIP') - - for network in networks: - if not '.' in network['network'] and not '/' in network['network']: - network_name = 'global/networks/{}'.format(network['network']) - else: - network_name = network['network'] - - network_interface = { - 'network': network_name, - } - - netif_optional_props = ['subnetwork', 'networkIP', 'aliasIpRanges', 'accessConfigs'] - for prop in netif_optional_props: - if network.get(prop): - network_interface[prop] = network[prop] - network_interfaces.append(network_interface) - - return network_interfaces - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - zone = properties['zone'] - vm_name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - network_interfaces = get_network_interfaces(properties) - - instance = { - 'name': context.env['name'], - # https://cloud.google.com/compute/docs/reference/rest/v1/instances - 'type': 'gcp-types/compute-v1:instances', - 'properties': { - 'name': vm_name, - 'zone': zone, - 'project': project_id - } - } - - if not properties.get('sourceInstanceTemplate'): - instance['properties']['machineType'] = 'zones/{}/machineTypes/{}'.format(zone, properties['machineType']) - instance['properties']['networkInterfaces'] = network_interfaces - optional_properties = [ - 'description', - 'scheduling', - 'disks', - 'minCpuPlatform', - 'guestAccelerators', - 'deletionProtection', - 'hostname', - 'shieldedInstanceConfig', - 'shieldedInstanceIntegrityPolicy', - 'labels', - 'metadata', - 'serviceAccounts', - 'canIpForward', - 'tags', - ] - for name in optional_properties: - set_optional_property(instance['properties'], properties, name) - - if not properties.get('disks'): - instance['properties']['disks'] = [create_boot_disk(properties, zone, vm_name)] - else: - instance['properties']['sourceInstanceTemplate'] = properties['sourceInstanceTemplate'] - - outputs = [ - { - 'name': 'networkInterfaces', - 'value': '$(ref.{}.networkInterfaces)'.format(context.env['name']) - }, - { - 'name': 'name', - 'value': '$(ref.{}.name)'.format(context.env['name']) - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - } - ] - - if not properties.get('sourceInstanceTemplate') and len(network_interfaces) == 1: - outputs.append({ - 'name': 'internalIp', - 'value': '$(ref.{}.networkInterfaces[0].networkIP)'.format(context.env['name']) - }) - - if 'accessConfigs' in network_interfaces[0]: - accessConfigs = network_interfaces[0]['accessConfigs'] - for i, row in enumerate(accessConfigs, 0): - if row['type'] == 'ONE_TO_ONE_NAT': - outputs.append({ - 'name': 'externalIp', - 'value': '$(ref.{}.networkInterfaces[0].accessConfigs[{}].natIP)'.format(context.env['name'], i) - }) - break - - print(instance) - - - return {'resources': [instance], 'outputs': outputs} diff --git a/dm/templates/instance/instance.py.schema b/dm/templates/instance/instance.py.schema deleted file mode 100644 index da1322150a9..00000000000 --- a/dm/templates/instance/instance.py.schema +++ /dev/null @@ -1,750 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Compute Instance - author: Sourced Group Inc. - version: 1.0.0 - description: | - Deploys a Compute Instance connected to a custom (or default) network. - - For more information on this resource: - https://cloud.google.com/compute/ - - APIs endpoints used by this template: - - gcp-types/compute-v1:instances => - https://cloud.google.com/compute/docs/reference/rest/v1/instances - -required: - - zone - -oneOf: - - allOf: - - required: - - machineType - - diskImage - oneOf: - - allOf: - - required: - - networks - - properties: - networks: - minItems: 1 - - not: - required: - - network - - not: - required: - - natIP - - not: - required: - - subnetwork - - not: - required: - - networkIP - - allOf: - - required: - - network - - not: - required: - - networks - - required: - - sourceInstanceTemplate - -additionalProperties: false - -definitions: - hasExternalIp: - type: boolean - default: true - description: | - Defines wether the instance will use an external IP from a shared - ephemeral IP address pool. If this is set to false, the instance - will not have an external IP. - natIP: - type: string - description: | - An external IP address associated with this instance. Specify an unused - static external IP address available to the project or leave this field - undefined to use an IP from a shared ephemeral IP address pool. If you - specify a static external IP address, it must live in the same region - as the zone of the instance. - If hasExternalIp is false this field is ignored. - network: - type: string - description: | - URL of the network resource for this instance. When creating an instance, if neither the network - nor the subnetwork is specified, the default network global/networks/default is used; - if the network is not specified but the subnetwork is specified, the network is inferred. - - If you specify this property, you can specify the network as a full or partial URL. - For example, the following are all valid URLs: - - - https://www.googleapis.com/compute/v1/projects/project/global/networks/network - - projects/project/global/networks/network - - global/networks/default - Authorization requires one or more of the following Google IAM permissions on the specified resource network: - - - compute.networks.use - - compute.networks.useExternalIp - subnetwork: - type: string - description: | - The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, - do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. - If the network is in custom subnet mode, specifying the subnetwork is required. - If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - - - https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork - - regions/region/subnetworks/subnetwork - Authorization requires one or more of the following Google IAM permissions on the specified resource subnetwork: - - - compute.subnetworks.use - - compute.subnetworks.useExternalIp - networkIP: - type: string - description: | - An IPv4 internal IP address to assign to the instance for this network interface. - If not specified by the user, an unused internal IP is assigned by the system. - -properties: - name: - type: string - description: The name of the Instance resource. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the instance. - description: - type: string - description: | - An optional description of this resource. Provide this property when you create the resource. - network: - $ref: '#/definitions/network' - subnetwork: - $ref: '#/definitions/subnetwork' - networkIP: - $ref: '#/definitions/networkIP' - hasExternalIp: - $ref: '#/definitions/hasExternalIp' - natIP: - $ref: '#/definitions/natIP' - networks: - type: array - description: | - Networks the instance will be connected to; - e.g., 'my-custom-network' or 'default'. - items: - type: object - additionalProperties: false - required: - - network - properties: - network: - $ref: '#/definitions/network' - subnetwork: - $ref: '#/definitions/subnetwork' - networkIP: - $ref: '#/definitions/networkIP' - aliasIpRanges: - type: array - uniqueItems: true - description: | - An array of alias IP ranges for this network interface. You can only specify this - field for network interfaces in VPC networks. - items: - type: object - additionalProperties: false - properties: - ipCidrRange: - type: string - description: | - The IP alias ranges to allocate for this interface. This IP CIDR range must belong - to the specified subnetwork and cannot contain IP addresses reserved by system or - used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), - a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24). - subnetworkRangeName: - type: string - description: | - The name of a subnetwork secondary IP range from which to allocate an IP alias range. - If not specified, the primary range of the subnetwork is used. - accessConfigs: - type: array - uniqueItems: true - description: | - An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, - is supported. If there are no accessConfigs specified, then this instance will have no external internet access. - items: - type: object - additionalProperties: false - properties: - type: - type: string - description: | - The type of configuration. The default and only option is ONE_TO_ONE_NAT. - enum: - - ONE_TO_ONE_NAT - name: - type: string - description: | - The name of this access configuration. The default and recommended name is External NAT, - but you can use any arbitrary string, such as My external IP or Network Access. - setPublicPtr: - type: boolean - description: | - Specifies whether a public DNS 'PTR' record should be created to map the external - IP address of the instance to a DNS domain name. - publicPtrDomainName: - type: string - description: | - The DNS domain name for the public PTR record. You can set this field only - if the setPublicPtr field is enabled. - networkTier: - type: string - description: | - This signifies the networking tier used for configuring this access configuration - and can only take the following values: PREMIUM, STANDARD. - - If an AccessConfig is specified without a valid external IP address, an - ephemeral IP will be created with this networkTier. - - If an AccessConfig with a valid external IP address is specified, it must match - that of the networkTier associated with the Address resource owning that IP. - enum: - - STANDARD - - PREMIUM - natIP: - $ref: '#/definitions/natIP' - zone: - type: string - description: Availability zone. E.g. 'us-central1-a' - tags: - type: object - additionalProperties: false - description: | - Tags to apply to this instance. Tags are used to identify valid sources - or targets for network firewalls and are specified by the client during - instance creation. The tags can be later modified by the setTags - method. Each tag within the list must comply with RFC1035. Multiple tags - can be specified via the 'tags.items' field. - properties: - items: - type: array - uniqueItems: true - description: | - An array of tags. Each tag must be 1-63 characters long, and comply - with RFC1035. - items: - type: string - machineType: - type: string - description: | - The Compute Instance type; e.g., 'n1-standard-1'. - See https://cloud.google.com/compute/docs/machine-types for details. - disks: - type: array - uniqueItems: true - description: | - Array of disks associated with this instance. Persistent disks must be created before you can assign them. - items: - type: object - additionalProperties: false - oneOf: - - required: - - source - - required: - - initializeParams - - allOf: - - not: - required: - - source - - not: - required: - - initializeParams - properties: - type: - type: string - description: | - Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT. - enum: - - SCRATCH - - PERSISTENT - mode: - type: string - description: | - The mode in which to attach this disk, either READ_WRITE or READ_ONLY. - If not specified, the default is to attach the disk in READ_WRITE mode. - enum: - - READ_WRITE - - READ_ONLY - source: - type: string - description: | - Specifies a valid partial or full URL to an existing Persistent Disk resource. - When creating a new instance, one of initializeParams.sourceImage or - disks.source is required except for local SSD. - - If desired, you can also attach existing non-root persistent disks using this property. - This field is only applicable for persistent disks. - - Note that for InstanceTemplate, specify the disk name, not the URL for the disk. - - Authorization requires one or more of the following Google IAM permissions on the specified resource source: - - compute.disks.use - compute.disks.useReadOnly - deviceName: - type: string - description: | - Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* - tree of a Linux operating system running within the instance. This name can be used to reference - the device for mounting, resizing, and so on, from within the instance. - - If not specified, the server chooses a default device name to apply to this disk, in the - form persistent-disk-x, where x is a number assigned by Google Compute Engine. - This field is only applicable for persistent disks. - boot: - type: boolean - description: | - Indicates that this is a boot disk. The virtual machine will use the first partition - of the disk for its root filesystem. - initializeParams: - type: object - additionalProperties: false - description: | - Specifies the parameters for a new disk that will be created alongside the new instance. - Use initialization parameters to create boot disks or local SSDs attached to the new instance. - - This property is mutually exclusive with the source property; you can only define one or the other, but not both. - properties: - labels: - type: object - description: | - Labels to apply to this disk. These can be later modified by the disks.setLabels method. - This field is only applicable for persistent disks. - - An object containing a list of "key": value pairs. - Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - - Authorization requires the following Google IAM permission on the specified resource labels: - - compute.disks.setLabels - diskName: - type: string - description: | - Specifies the disk name. If not specified, the default is to use the name of the instance. - If the disk with the instance name exists already in the given zone/region, - a new name will be automatically generated. - sourceImage: - type: string - description: | - The source image to create this disk. When creating a new instance, one of - initializeParams.sourceImage or disks.source is required except for local SSD. - - To create a disk with one of the public operating system images, specify the image by its family name. - For example, specify family/debian-9 to use the latest Debian 9 image: - - projects/debian-cloud/global/images/family/debian-9 - - Alternatively, use a specific version of a public operating system image: - - projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD - - To create a disk with a custom image that you created, specify the image name in the following format: - - global/images/my-custom-image - - You can also specify a custom image by its image family, which returns the latest version of the - image in that family. Replace the image name with family/family-name: - - global/images/family/my-image-family - - If the source image is deleted later, this field will not be set. - - Authorization requires the following Google IAM permission on the specified resource sourceImage: - - compute.images.useReadOnly - description: - type: string - description: | - An optional description. Provide this property when creating the disk. - diskSizeGb: - type: number - description: | - Specifies the size of the disk in base-2 GB. - diskType: - type: string - description: | - Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, - specified using the full URL. For example: - - https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard - - Other values include pd-ssd and local-ssd. If you define this field, you can provide either the full - or partial URL. For example, the following are valid values: - - https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType - Note that for InstanceTemplate, this is the name of the disk type, not URL. - sourceImageEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source image. Required if the source image is - protected by a customer-supplied encryption key. - - Instance templates do not store customer-supplied encryption keys, so you cannot create disks - for instances in a managed instance group if the source images are encrypted with your own keys. - properties: - rawKey: - type: string - description: | - Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 - to either encrypt or decrypt this resource. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - sourceSnapshot: - type: string - description: | - The source snapshot to create this disk. When creating a new instance, one of - initializeParams.sourceSnapshot or disks.source is required except for local SSD. - - To create a disk with a snapshot that you created, specify the snapshot name in the following format: - - global/snapshots/my-backup - - If the source snapshot is deleted later, this field will not be set. - - Authorization requires the following Google IAM permission on the specified resource sourceSnapshot: - - compute.snapshots.useReadOnly - sourceSnapshotEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source snapshot. - properties: - rawKey: - type: string - description: | - Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 - to either encrypt or decrypt this resource. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - autoDelete: - type: boolean - description: | - Specifies whether the disk will be auto-deleted when the instance is deleted - (but not when the disk is detached from the instance). - interface: - type: string - description: | - Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. - The default is SCSI. Persistent disks must always use SCSI and the request will fail if you - attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. - For performance characteristics of SCSI over NVMe, see Local SSD performance. - enum: - - SCSI - - NVME - guestOsFeatures: - type: array - uniqueItems: true - description: | - A list of features to enable on the guest operating system. Applicable only for bootable images. - Read Enabling guest operating system features to see a list of available options. - items: - type: object - additionalProperties: false - properties: - type: - type: string - description: | - https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features - The ID of a supported feature. Read Enabling guest operating system features - to see a list of available options. - enum: - - MULTI_IP_SUBNET - - SECURE_BOOT - - UEFI_COMPATIBLE - - VIRTIO_SCSI_MULTIQUEUE - - WINDOWS - diskEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source snapshot. - properties: - rawKey: - type: string - description: | - Encrypts or decrypts a disk using a customer-supplied encryption key. - - If you are creating a new disk, this field encrypts the new disk using an encryption - key that you provide. If you are attaching an existing disk that is already encrypted, - this field decrypts the disk using the customer-supplied encryption key. - - If you encrypt a disk using a customer-supplied key, you must provide the same key again when - you attempt to use this resource at a later time. For example, you must provide the key when - you create a snapshot or an image from the disk or when you attach the disk - to a virtual machine instance. - - If you do not provide an encryption key, then the disk will be encrypted using an automatically - generated key and you do not need to provide a key to use the disk later. - - Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys - to encrypt disks in a managed instance group. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - canIpForward: - type: boolean - default: False - description: | - If "True". allows the instance to send and receive packets with non-matching destination - and source IPs. - diskType: - type: string - description: The boot disk type. - enum: - - pd-ssd - - pd-standard - - local-ssd - diskImage: - type: string - default: None - description: | - The source image for the disk. To create the disk with one of the - public operating system images, specify the image by its family name. - For example, use "projects/debian-cloud/global/images/family/debian-9" - to install the latest Debian 9 image. - To create a disk with a custom image (that you created), specify the image - name in the following format: global/images/my-custom-image. - See https://cloud.google.com/compute/docs/images for details. - diskSizeGb: - type: integer - minimum: 10 - scheduling: - type: object - additionalProperties: false - description: | - Sets the scheduling options for this instance. - properties: - onHostMaintenance: - type: string - description: | - Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. - For preemptible instances, the default and only possible behavior is TERMINATE. - For more information, see Setting Instance Scheduling Options. - enum: - - MIGRATE - - TERMINATE - automaticRestart: - type: boolean - description: | - Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine - (not terminated by a user). You can only set the automatic restart option for standard instances. - Preemptible instances cannot be automatically restarted. - - By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine. - preemptible: - type: boolean - description: | - Defines whether the instance is preemptible. This can only be set during instance creation, - it cannot be set or changed after the instance has been created. - nodeAffinities: - type: array - uniqueItems: true - description: | - A set of node affinity and anti-affinity. - items: - type: object - additionalProperties: false - properties: - key: - type: string - description: | - Corresponds to the label key of Node resource. - operator: - type: string - description: | - Defines the operation of node selection. - values: - type: array - uniqueItems: true - description: | - Corresponds to the label values of Node resource. - items: - type: string - deletionProtection: - type: boolean - description: | - Whether the resource should be protected against deletion. - - Authorization requires the following Google IAM permission on the specified resource deletionProtection: - - compute.instances.setDeletionProtection - hostname: - type: string - labels: - type: object - description: | - Labels to apply to this instance. These can be later modified by the setLabels method. - - An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - - Authorization requires the following Google IAM permission on the specified resource labels: - - compute.instances.setLabels - minCpuPlatform: - type: string - description: | - Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, - such as minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy Bridge". - enum: - - Intel Sandy Bridge - - Intel Ivy Bridge - - Intel Haswell - - Intel Broadwell - - Intel Skylake - shieldedInstanceConfig: - type: object - additionalProperties: false - properties: - enableSecureBoot: - type: boolean - description: | - Defines whether the instance has Secure Boot enabled. - enableVtpm: - type: boolean - description: | - Defines whether the instance has the vTPM enabled. - enableIntegrityMonitoring: - type: boolean - description: | - Defines whether the instance has integrity monitoring enabled. - shieldedInstanceIntegrityPolicy: - type: object - additionalProperties: false - properties: - updateAutoLearnPolicy: - type: boolean - description: | - Updates the integrity policy baseline using the measurements from the VM instance's most recent boot. - metadata: - type: object - additionalProperties: false - required: - - items - description: | - The instance metadata. For example: - metadata: - items: - - key: startup-script - - value: sudo apt-get update - properties: - items: - type: array - uniqueItems: true - description: | - A collection of metadata key-value pairs. - items: - type: object - additionalProperties: false - properties: - key: - type: string - value: - type: [string, number, boolean] - serviceAccounts: - type: array - uniqueItems: true - description: | - A list of service accounts, with their specified scopes, authorized for - this instance. Only one service account per VM instance is supported. - items: - type: object - additionalProperties: false - properties: - email: - type: string - description: | - Email address of the service account - scopes: - type: array - description: | - The list of scopes to be made available for this service account - items: - type: string - description: | - Access scope, e.g. 'https://www.googleapis.com/auth/compute.readonly' - Visit https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam - for more details - guestAccelerators: - type: array - uniqueItems: true - description: | - A list of the type and count of accelerator cards attached to the instance. - items: - type: object - additionalProperties: false - properties: - acceleratorType: - type: string - description: | - Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 - If you are creating an instance template, specify only the accelerator name. - See GPUs on Compute Engine for a full list of accelerator types. - acceleratorCount: - type: integer - description: | - The number of the guest accelerator cards exposed to this instance. - sourceInstanceTemplate: - type: string - description: | - Specifies instance template to create the instance. - This field is optional. It can be a full or partial URL. - See https://cloud.google.com/compute/docs/reference/rest/v1/instances/insert for details. - -outputs: - networkInterfaces: - type: array - description: | - A list of network interfaces of the new instance. - items: - type: object - properties: - externalIp: - type: string - description: Reference to the external ip address of the new instance - internalIp: - type: string - description: Reference to tbe internal ip address of the new instance - name: - type: string - description: A name of the instance resource - selfLink: - type: string - description: The URI (SelfLink) of the instance resource. - -documentation: - - templates/instance/README.md - -examples: - - templates/instance/examples/instance.yaml diff --git a/dm/templates/instance/tests/integration/instance.bats b/dm/templates/instance/tests/integration/instance.bats deleted file mode 100755 index 157e495b7f1..00000000000 --- a/dm/templates/instance/tests/integration/instance.bats +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/instance/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - gcloud compute networks create "test-network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "integration test ${RAND}" \ - --subnet-mode custom - gcloud compute networks subnets create "test-subnet-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network "test-network-${RAND}" \ - --range 10.0.1.0/24 \ - --region us-central1 - fi - - # Per-test setup steps. -} - -function teardown() { - #Global teardown; this is executed once per test file - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute networks subnets delete "test-subnet-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-central1 -q - gcloud compute networks delete "test-network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that a Compute Instance was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-instance-${RAND}" ]] -} - -@test "Verifying that the Compute Instance was connected to a custom network in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-network-${RAND}" ]] -} - -@test "Verifying that the Compute Instance has the canIpForward property set in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "canIpForward: true" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-instance-${RAND}" ]] -} diff --git a/dm/templates/instance/tests/integration/instance.yaml b/dm/templates/instance/tests/integration/instance.yaml deleted file mode 100644 index 45d52409bae..00000000000 --- a/dm/templates/instance/tests/integration/instance.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Test of the Instance template. -# -# Variables: -# RAND: A random string used by the testing suite. - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-instance-${RAND} - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - canIpForward: true - network: test-network-${RAND} - subnetwork: regions/us-central1/subnetworks/test-subnet-${RAND} - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx \ No newline at end of file diff --git a/dm/templates/instance/tests/integration/instance_1_nic.bats b/dm/templates/instance/tests/integration/instance_1_nic.bats deleted file mode 100755 index 379d0633dbc..00000000000 --- a/dm/templates/instance/tests/integration/instance_1_nic.bats +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/instance/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - #Global teardown; this is executed once per test file - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that a Compute Instance was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-instance-${RAND}" ]] -} - -@test "Verifying that the Compute Instance was connected to the first custom network in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-network-0-${RAND}" ]] -} - -@test "Verifying that the Compute Instance has the canIpForward property set in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "canIpForward: true" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-instance-${RAND}" ]] -} diff --git a/dm/templates/instance/tests/integration/instance_1_nic.yaml b/dm/templates/instance/tests/integration/instance_1_nic.yaml deleted file mode 100644 index 79f64593a03..00000000000 --- a/dm/templates/instance/tests/integration/instance_1_nic.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# Test of the Instance template. -# -# Variables: -# RAND: A random string used by the testing suite. - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-instance-${RAND} - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - canIpForward: true - networks: - - network: $(ref.test-network-0-${RAND}.selfLink) - subnetwork: $(ref.test-subnetwork-0-${RAND}.selfLink) - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx - - name: test-network-0-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: false - - name: test-subnetwork-0-${RAND} - type: compute.v1.subnetwork - properties: - network: $(ref.test-network-0-${RAND}.selfLink) - ipCidrRange: 10.0.1.0/24 - region: us-central1 diff --git a/dm/templates/instance/tests/integration/instance_2_nics.bats b/dm/templates/instance/tests/integration/instance_2_nics.bats deleted file mode 100755 index ae17e82a193..00000000000 --- a/dm/templates/instance/tests/integration/instance_2_nics.bats +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/instance/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - #Global teardown; this is executed once per test file - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that a Compute Instance was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-instance-${RAND}" ]] -} - -@test "Verifying that the Compute Instance was connected to the first custom network in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-network-0-${RAND}" ]] -} - -@test "Verifying that the Compute Instance was connected to the second custom network in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-network-1-${RAND}" ]] -} - -@test "Verifying that the Compute Instance has the canIpForward property set in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "canIpForward: true" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-instance-${RAND}" ]] -} diff --git a/dm/templates/instance/tests/integration/instance_2_nics.yaml b/dm/templates/instance/tests/integration/instance_2_nics.yaml deleted file mode 100644 index 7f99a8d28a4..00000000000 --- a/dm/templates/instance/tests/integration/instance_2_nics.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# Test of the Instance template. -# -# Variables: -# RAND: A random string used by the testing suite. - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-instance-${RAND} - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - canIpForward: true - networks: - - network: $(ref.test-network-0-${RAND}.selfLink) - subnetwork: $(ref.test-subnetwork-0-${RAND}.selfLink) - - network: $(ref.test-network-1-${RAND}.selfLink) - subnetwork: $(ref.test-subnetwork-1-${RAND}.selfLink) - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx - - name: test-network-0-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: false - - name: test-network-1-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: false - - name: test-subnetwork-0-${RAND} - type: compute.v1.subnetwork - properties: - network: $(ref.test-network-0-${RAND}.selfLink) - ipCidrRange: 10.0.1.0/24 - region: us-central1 - - name: test-subnetwork-1-${RAND} - type: compute.v1.subnetwork - properties: - network: $(ref.test-network-1-${RAND}.selfLink) - ipCidrRange: 10.0.2.0/24 - region: us-central1 diff --git a/dm/templates/instance/tests/integration/instance_source_template.bats b/dm/templates/instance/tests/integration/instance_source_template.bats deleted file mode 100755 index 659ab12f64a..00000000000 --- a/dm/templates/instance/tests/integration/instance_source_template.bats +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/instance/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - gcloud compute networks create "test-network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "integration test ${RAND}" \ - --subnet-mode custom - gcloud compute networks subnets create "test-subnet-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network "test-network-${RAND}" \ - --range 10.0.1.0/24 \ - --region us-central1 - fi - - # Per-test setup steps. -} - -function teardown() { - #Global teardown; this is executed once per test file - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute networks subnets delete "test-subnet-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-central1 -q - gcloud compute networks delete "test-network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --verbosity debug -} - -@test "Verifying that a Compute Instance was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-instance-${RAND}" ]] -} - -@test "Verifying that the Compute Instance was connected to a custom network in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "test-network-${RAND}" ]] -} - -@test "Verifying that the Compute Instance has the canIpForward property set in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances describe test-instance-${RAND} --zone "us-central1-a" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - [[ "$output" =~ "canIpForward: true" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud compute instances list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-instance-${RAND}" ]] -} diff --git a/dm/templates/instance/tests/integration/instance_source_template.yaml b/dm/templates/instance/tests/integration/instance_source_template.yaml deleted file mode 100644 index a2afd48601a..00000000000 --- a/dm/templates/instance/tests/integration/instance_source_template.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Test of the Instance with sourceInstanceTemplate property provided. -# -# Variables: -# RAND: A random string used by the testing suite. - -imports: - - path: templates/instance_template/instance_template.py - name: instance_template.py - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-instance-template-${RAND} - type: instance_template.py - properties: - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - canIpForward: true - network: test-network-${RAND} - subnetwork: regions/us-central1/subnetworks/test-subnet-${RAND} - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx\ - - name: test-instance-${RAND} - type: instance.py - properties: - zone: us-central1-a - sourceInstanceTemplate: $(ref.test-instance-template-${RAND}.selfLink) diff --git a/dm/templates/instance/tests/integration/instance_template/instance_template.bats b/dm/templates/instance/tests/integration/instance_template/instance_template.bats deleted file mode 100755 index cc22489cb40..00000000000 --- a/dm/templates/instance/tests/integration/instance_template/instance_template.bats +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export IMAGE="projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - envsubst < "templates/instance_template/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying instance template disk properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.disks[0].initializeParams)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "diskType: pd-ssd" ]] - [[ "$output" =~ "sourceImage: ${IMAGE}" ]] - [[ "$output" =~ "diskSizeGb: '50'" ]] -} - -@test "Verifying instance spec properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "machineType: f1-micro" ]] - [[ "$output" =~ "description: Instance description" ]] - [[ "$output" =~ "canIpForward: true" ]] -} - -@test "Verifying instance template properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "value(name, description, properties.labels)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "Template description" ]] - [[ "$output" =~ "it-${RAND}" ]] - [[ "$output" =~ "name=wrench" ]] -} - -@test "Verifying instance template network tags" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.tags)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "ftp" ]] - [[ "$output" =~ "https" ]] -} - -@test "Verifying instance template metadata" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.metadata)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "key: createdBy" ]] - [[ "$output" =~ "value: unitTest" ]] -} - -@test "Verifying instance template network properties" { - NET="https://www.googleapis.com/compute/v1/projects/${CLOUD_FOUNDATION_PROJECT_ID}/global/networks/test-network-${RAND}" - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.networkInterfaces[0])" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "name: External NAT" ]] - [[ "$output" =~ "type: ONE_TO_ONE_NAT" ]] - [[ "$output" =~ "network: ${NET}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/instance/tests/integration/instance_template/instance_template.yaml b/dm/templates/instance/tests/integration/instance_template/instance_template.yaml deleted file mode 100644 index 847fbce2716..00000000000 --- a/dm/templates/instance/tests/integration/instance_template/instance_template.yaml +++ /dev/null @@ -1,37 +0,0 @@ -# Test of the Instance Template template. -# -# Variables: -# RAND: a random string used by the testing suite -# IMAGE: a URL to the base disk image provided by the testing suite - -imports: - - path: templates/instance_template/instance_template.py - name: instance_template.py - -resources: - - name: instance-template-${RAND} - type: instance_template.py - properties: - name: it-${RAND} - instanceDescription: Instance description - templateDescription: Template description - network: $(ref.test-network-${RAND}.selfLink) - diskImage: ${IMAGE} - machineType: f1-micro - canIpForward: true - diskType: pd-ssd - diskSizeGb: 50 - tags: - items: - - ftp - - https - metadata: - items: - - key: createdBy - value: unitTest - labels: - name: wrench - - name: test-network-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: true diff --git a/dm/templates/instance_template/README.md b/dm/templates/instance_template/README.md deleted file mode 100644 index 753e33ae54f..00000000000 --- a/dm/templates/instance_template/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Instance Template - -This template creates an instance template. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, setup billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) IAM -role to the [Deployment Manager service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) - -## Deployment - -### Resources - -- [compute.v1.instanceTemplate](https://cloud.google.com/compute/docs/reference/latest/instanceTemplates) - -### Properties - -See the `properties` section in the schema file(s): - -- [Instance Template](instance_template.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment, in this - case [examples/instance\_template.yaml](examples/instance_template.yaml) - -```shell - cp templates/instance_template/examples/instance_template.yaml \ - my_instance_template.yaml -``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - -```shell - vim my_instance_template.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment as described below, replacing - with your with your own deployment name - -```shell - gcloud deployment-manager deployments create \ - --config my_instance_template.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Instance Template](examples/instance_template.yaml) diff --git a/dm/templates/instance_template/examples/instance_template.yaml b/dm/templates/instance_template/examples/instance_template.yaml deleted file mode 100644 index f7103769941..00000000000 --- a/dm/templates/instance_template/examples/instance_template.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Example of the Instance Template template usage. -# -# In this example, an instance template with Nginx is created. - -imports: - - path: templates/instance_template/instance_template.py - name: instance_template.py - -resources: - - name: instance-template-example - type: instance_template.py - properties: - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - networks: - - network: default - accessConfigs: - - type: ONE_TO_ONE_NAT - machineType: f1-micro - tags: - items: - - http - metadata: - items: - - key: startup-script - value: apt-get update && apt-get install -y nginx diff --git a/dm/templates/instance_template/instance_template.py b/dm/templates/instance_template/instance_template.py deleted file mode 100644 index f10c0393a3e..00000000000 --- a/dm/templates/instance_template/instance_template.py +++ /dev/null @@ -1,170 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates an Instance Template. """ - - -def set_optional_property(receiver, source, property_name, rename_to=None): - """ If set, copies the given property value from one object to another - and optionally rename it. - """ - - rename_to = rename_to or property_name - if property_name in source: - receiver[rename_to] = source[property_name] - - -def create_boot_disk(properties): - """ Creates the boot disk configuration. """ - - boot_disk = { - 'deviceName': 'boot', - 'type': 'PERSISTENT', - 'boot': True, - 'autoDelete': True, - 'initializeParams': { - 'sourceImage': properties['diskImage'] - } - } - - for prop in ['diskSizeGb', 'diskType']: - set_optional_property(boot_disk['initializeParams'], properties, prop) - - return boot_disk - - -def get_network_interfaces(properties): - """ Get the configuration that connects the instance to an existing network - and assigns to it an ephemeral public IP if specified. - """ - network_interfaces = [] - - networks = properties.get('networks', []) - if len(networks) == 0 and properties.get('network'): - network = { - "network": properties.get('network'), - "subnetwork": properties.get('subnetwork'), - "networkIP": properties.get('networkIP'), - } - networks.append(network) - if (properties.get('hasExternalIp')): - network['accessConfigs'] = [{ - "type": "ONE_TO_ONE_NAT", - }] - if properties.get('natIP'): - network['accessConfigs'][0]["natIp"] = properties.get('natIP') - - for network in networks: - if not '.' in network['network'] and not '/' in network['network']: - network_name = 'global/networks/{}'.format(network['network']) - else: - network_name = network['network'] - - network_interface = { - 'network': network_name, - } - - netif_optional_props = ['subnetwork', 'networkIP', 'aliasIpRanges', 'accessConfigs'] - for prop in netif_optional_props: - if network.get(prop): - network_interface[prop] = network[prop] - network_interfaces.append(network_interface) - - return network_interfaces - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - machine_type = properties['machineType'] - network_interfaces = get_network_interfaces(context.properties) - project_id = properties.get('project', context.env['project']) - instance_template = { - 'name': context.env['name'], - # https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates - 'type': 'gcp-types/compute-v1:instanceTemplates', - 'properties': - { - 'name': name, - 'project': project_id, - 'properties': - { - 'machineType': machine_type, - 'networkInterfaces': network_interfaces - } - } - } - - template_spec = instance_template['properties']['properties'] - - optional_props = [ - 'metadata', - 'disks', - 'scheduling', - 'tags', - 'canIpForward', - 'labels', - 'serviceAccounts', - 'scheduling', - 'shieldedInstanceConfig', - 'minCpuPlatform', - 'guestAccelerators', - ] - - for prop in optional_props: - set_optional_property(template_spec, properties, prop) - if not template_spec.get('disks'): - template_spec['disks'] = [create_boot_disk(properties)] - - set_optional_property( - template_spec, - properties, - 'instanceDescription', - 'description' - ) - - set_optional_property( - instance_template['properties'], - properties, - 'templateDescription', - 'description' - ) - - set_optional_property( - instance_template['properties'], - properties, - 'sourceInstance' - ) - - set_optional_property( - instance_template['properties'], - properties, - 'sourceInstanceParams' - ) - - return { - 'resources': [instance_template], - 'outputs': - [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/instance_template/instance_template.py.schema b/dm/templates/instance_template/instance_template.py.schema deleted file mode 100644 index ed97c7bd8d1..00000000000 --- a/dm/templates/instance_template/instance_template.py.schema +++ /dev/null @@ -1,768 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Instance Template - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates an instance template. - - For more information on this resource: - https://cloud.google.com/compute/ - - APIs endpoints used by this template: - - gcp-types/compute-v1:instanceTemplates => - https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates - -required: - - diskImage - -oneOf: - - allOf: - - required: - - networks - - properties: - networks: - minItems: 1 - - not: - required: - - network - - not: - required: - - natIP - - not: - required: - - subnetwork - - not: - required: - - networkIP - - allOf: - - required: - - network - - not: - required: - - networks - -additionalProperties: false - -definitions: - hasExternalIp: - type: boolean - default: true - description: | - Defines wether the instance will use an external IP from a shared - ephemeral IP address pool. If this is set to false, the instance - will not have an external IP. - natIP: - type: string - description: | - An external IP address associated with this instance. Specify an unused - static external IP address available to the project or leave this field - undefined to use an IP from a shared ephemeral IP address pool. If you - specify a static external IP address, it must live in the same region - as the zone of the instance. - If hasExternalIp is false this field is ignored. - network: - type: string - description: | - URL of the network resource for this instance. When creating an instance, if neither the network - nor the subnetwork is specified, the default network global/networks/default is used; - if the network is not specified but the subnetwork is specified, the network is inferred. - - If you specify this property, you can specify the network as a full or partial URL. - For example, the following are all valid URLs: - - - https://www.googleapis.com/compute/v1/projects/project/global/networks/network - - projects/project/global/networks/network - - global/networks/default - Authorization requires one or more of the following Google IAM permissions on the specified resource network: - - - compute.networks.use - - compute.networks.useExternalIp - subnetwork: - type: string - description: | - The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, - do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. - If the network is in custom subnet mode, specifying the subnetwork is required. - If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - - - https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork - - regions/region/subnetworks/subnetwork - Authorization requires one or more of the following Google IAM permissions on the specified resource subnetwork: - - - compute.subnetworks.use - - compute.subnetworks.useExternalIp - networkIP: - type: string - description: | - An IPv4 internal IP address to assign to the instance for this network interface. - If not specified by the user, an unused internal IP is assigned by the system. - -properties: - name: - type: string - description: The name of the instance template resource. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the instance. - templateDescription: - type: string - description: | - The resource description (optional). - instanceDescription: - type: string - description: | - The description of the instance resource the instance template - will create (optional). - network: - $ref: '#/definitions/network' - subnetwork: - $ref: '#/definitions/subnetwork' - networkIP: - $ref: '#/definitions/networkIP' - hasExternalIp: - $ref: '#/definitions/hasExternalIp' - natIP: - $ref: '#/definitions/natIP' - networks: - type: array - description: | - Networks the instance will be connected to; - e.g., 'my-custom-network' or 'default'. - items: - type: object - additionalProperties: false - required: - - network - properties: - network: - $ref: '#/definitions/network' - subnetwork: - $ref: '#/definitions/subnetwork' - networkIP: - $ref: '#/definitions/networkIP' - aliasIpRanges: - type: array - uniqueItems: true - description: | - An array of alias IP ranges for this network interface. You can only specify this - field for network interfaces in VPC networks. - items: - type: object - additionalProperties: false - properties: - ipCidrRange: - type: string - description: | - The IP alias ranges to allocate for this interface. This IP CIDR range must belong - to the specified subnetwork and cannot contain IP addresses reserved by system or - used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), - a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24). - subnetworkRangeName: - type: string - description: | - The name of a subnetwork secondary IP range from which to allocate an IP alias range. - If not specified, the primary range of the subnetwork is used. - accessConfigs: - type: array - uniqueItems: true - description: | - An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, - is supported. If there are no accessConfigs specified, then this instance will have no external internet access. - items: - type: object - additionalProperties: false - properties: - type: - type: string - description: | - The type of configuration. The default and only option is ONE_TO_ONE_NAT. - enum: - - ONE_TO_ONE_NAT - name: - type: string - description: | - The name of this access configuration. The default and recommended name is External NAT, - but you can use any arbitrary string, such as My external IP or Network Access. - setPublicPtr: - type: boolean - description: | - Specifies whether a public DNS 'PTR' record should be created to map the external - IP address of the instance to a DNS domain name. - publicPtrDomainName: - type: string - description: | - The DNS domain name for the public PTR record. You can set this field only - if the setPublicPtr field is enabled. - networkTier: - type: string - description: | - This signifies the networking tier used for configuring this access configuration - and can only take the following values: PREMIUM, STANDARD. - - If an AccessConfig is specified without a valid external IP address, an - ephemeral IP will be created with this networkTier. - - If an AccessConfig with a valid external IP address is specified, it must match - that of the networkTier associated with the Address resource owning that IP. - enum: - - STANDARD - - PREMIUM - natIP: - $ref: '#/definitions/natIP' - disks: - type: array - uniqueItems: true - description: | - Array of disks associated with this instance. Persistent disks must be created before you can assign them. - items: - type: object - additionalProperties: false - oneOf: - - required: - - source - - required: - - initializeParams - - allOf: - - not: - required: - - source - - not: - required: - - initializeParams - properties: - type: - type: string - description: | - Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT. - enum: - - SCRATCH - - PERSISTENT - mode: - type: string - description: | - The mode in which to attach this disk, either READ_WRITE or READ_ONLY. - If not specified, the default is to attach the disk in READ_WRITE mode. - enum: - - READ_WRITE - - READ_ONLY - source: - type: string - description: | - Specifies a valid partial or full URL to an existing Persistent Disk resource. - When creating a new instance, one of initializeParams.sourceImage or - disks.source is required except for local SSD. - - If desired, you can also attach existing non-root persistent disks using this property. - This field is only applicable for persistent disks. - - Note that for InstanceTemplate, specify the disk name, not the URL for the disk. - - Authorization requires one or more of the following Google IAM permissions on the specified resource source: - - compute.disks.use - compute.disks.useReadOnly - deviceName: - type: string - description: | - Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* - tree of a Linux operating system running within the instance. This name can be used to reference - the device for mounting, resizing, and so on, from within the instance. - - If not specified, the server chooses a default device name to apply to this disk, in the - form persistent-disk-x, where x is a number assigned by Google Compute Engine. - This field is only applicable for persistent disks. - boot: - type: boolean - description: | - Indicates that this is a boot disk. The virtual machine will use the first partition - of the disk for its root filesystem. - initializeParams: - type: object - additionalProperties: false - description: | - Specifies the parameters for a new disk that will be created alongside the new instance. - Use initialization parameters to create boot disks or local SSDs attached to the new instance. - - This property is mutually exclusive with the source property; you can only define one or the other, but not both. - properties: - labels: - type: object - description: | - Labels to apply to this disk. These can be later modified by the disks.setLabels method. - This field is only applicable for persistent disks. - - An object containing a list of "key": value pairs. - Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - - Authorization requires the following Google IAM permission on the specified resource labels: - - compute.disks.setLabels - diskName: - type: string - description: | - Specifies the disk name. If not specified, the default is to use the name of the instance. - If the disk with the instance name exists already in the given zone/region, - a new name will be automatically generated. - sourceImage: - type: string - description: | - The source image to create this disk. When creating a new instance, one of - initializeParams.sourceImage or disks.source is required except for local SSD. - - To create a disk with one of the public operating system images, specify the image by its family name. - For example, specify family/debian-9 to use the latest Debian 9 image: - - projects/debian-cloud/global/images/family/debian-9 - - Alternatively, use a specific version of a public operating system image: - - projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD - - To create a disk with a custom image that you created, specify the image name in the following format: - - global/images/my-custom-image - - You can also specify a custom image by its image family, which returns the latest version of the - image in that family. Replace the image name with family/family-name: - - global/images/family/my-image-family - - If the source image is deleted later, this field will not be set. - - Authorization requires the following Google IAM permission on the specified resource sourceImage: - - compute.images.useReadOnly - description: - type: string - description: | - An optional description. Provide this property when creating the disk. - diskSizeGb: - type: number - description: | - Specifies the size of the disk in base-2 GB. - diskType: - type: string - description: | - Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, - specified using the full URL. For example: - - https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard - - Other values include pd-ssd and local-ssd. If you define this field, you can provide either the full - or partial URL. For example, the following are valid values: - - https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType - Note that for InstanceTemplate, this is the name of the disk type, not URL. - enum: - - pd-standard - - pd-ssd - - local-ssd - sourceImageEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source image. Required if the source image is - protected by a customer-supplied encryption key. - - Instance templates do not store customer-supplied encryption keys, so you cannot create disks - for instances in a managed instance group if the source images are encrypted with your own keys. - properties: - rawKey: - type: string - description: | - Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 - to either encrypt or decrypt this resource. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - sourceSnapshot: - type: string - description: | - The source snapshot to create this disk. When creating a new instance, one of - initializeParams.sourceSnapshot or disks.source is required except for local SSD. - - To create a disk with a snapshot that you created, specify the snapshot name in the following format: - - global/snapshots/my-backup - - If the source snapshot is deleted later, this field will not be set. - - Authorization requires the following Google IAM permission on the specified resource sourceSnapshot: - - compute.snapshots.useReadOnly - sourceSnapshotEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source snapshot. - properties: - rawKey: - type: string - description: | - Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 - to either encrypt or decrypt this resource. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - autoDelete: - type: boolean - description: | - Specifies whether the disk will be auto-deleted when the instance is deleted - (but not when the disk is detached from the instance). - interface: - type: string - description: | - Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. - The default is SCSI. Persistent disks must always use SCSI and the request will fail if you - attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. - For performance characteristics of SCSI over NVMe, see Local SSD performance. - enum: - - SCSI - - NVME - guestOsFeatures: - type: array - uniqueItems: true - description: | - A list of features to enable on the guest operating system. Applicable only for bootable images. - Read Enabling guest operating system features to see a list of available options. - items: - type: object - additionalProperties: false - properties: - type: - type: string - description: | - https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features - The ID of a supported feature. Read Enabling guest operating system features - to see a list of available options. - enum: - - MULTI_IP_SUBNET - - SECURE_BOOT - - UEFI_COMPATIBLE - - VIRTIO_SCSI_MULTIQUEUE - - WINDOWS - diskEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source snapshot. - properties: - rawKey: - type: string - description: | - Encrypts or decrypts a disk using a customer-supplied encryption key. - - If you are creating a new disk, this field encrypts the new disk using an encryption - key that you provide. If you are attaching an existing disk that is already encrypted, - this field decrypts the disk using the customer-supplied encryption key. - - If you encrypt a disk using a customer-supplied key, you must provide the same key again when - you attempt to use this resource at a later time. For example, you must provide the key when - you create a snapshot or an image from the disk or when you attach the disk - to a virtual machine instance. - - If you do not provide an encryption key, then the disk will be encrypted using an automatically - generated key and you do not need to provide a key to use the disk later. - - Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys - to encrypt disks in a managed instance group. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - machineType: - type: string - default: n1-standard-1 - description: | - The Compute Instance type; e.g., 'n1-standard-1'. - See https://cloud.google.com/compute/docs/machine-types for details. - scheduling: - type: object - additionalProperties: false - description: | - Sets the scheduling options for this instance. - properties: - onHostMaintenance: - type: string - description: | - Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. - For preemptible instances, the default and only possible behavior is TERMINATE. - For more information, see Setting Instance Scheduling Options. - enum: - - MIGRATE - - TERMINATE - automaticRestart: - type: boolean - description: | - Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine - (not terminated by a user). You can only set the automatic restart option for standard instances. - Preemptible instances cannot be automatically restarted. - - By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine. - preemptible: - type: boolean - description: | - Defines whether the instance is preemptible. This can only be set during instance creation, - it cannot be set or changed after the instance has been created. - nodeAffinities: - type: array - uniqueItems: true - description: | - A set of node affinity and anti-affinity. - items: - type: object - additionalProperties: false - properties: - key: - type: string - description: | - Corresponds to the label key of Node resource. - operator: - type: string - description: | - Defines the operation of node selection. - values: - type: array - uniqueItems: true - description: | - Corresponds to the label values of Node resource. - items: - type: string - minCpuPlatform: - type: string - description: | - Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, - such as minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy Bridge". - enum: - - Intel Sandy Bridge - - Intel Ivy Bridge - - Intel Haswell - - Intel Broadwell - - Intel Skylake - sourceInstance: - type: string - description: | - The source instance used to create the template. You can provide this as a partial or full URL to the resource. - For example, the following are valid values: - - - https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance - - projects/project/zones/zone/instances/instance - - Authorization requires the following Google IAM permission on the specified resource sourceInstance: - - compute.instances.get - sourceInstanceParams: - type: object - additionalProperties: false - description: | - The source instance params to use to create this instance template. - properties: - diskConfigs: - type: array - uniqueItems: true - description: | - Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, - new custom images will be created from each disk. For read-only disks, they will be attached - in read-only mode. Local SSD disks will be created as blank volumes. - items: - type: object - additionalProperties: false - properties: - deviceName: - type: string - description: | - Specifies the device name of the disk to which the configurations apply to. - instantiateFrom: - type: string - description: | - Specifies whether to include the disk and what image to use. Possible values are: - - - source-image: to use the same image that was used to create the source instance's corresponding disk. - Applicable to the boot disk and additional read-write disks. - - source-image-family: to use the same image family that was used to create the source instance's - corresponding disk. Applicable to the boot disk and additional read-write disks. - - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and - additional read-write disks. - - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, - local SSDs, and read-only disks. - enum: - - source-image - - source-image-family - - custom-image - - attach-read-only - autoDelete: - type: boolean - description: | - Specifies whether the disk will be auto-deleted when the instance is deleted - (but not when the disk is detached from the instance). - customImage: - type: string - description: | - The custom source image to be used to restore this disk when instantiating this instance template.. - shieldedInstanceConfig: - type: object - additionalProperties: false - properties: - enableSecureBoot: - type: boolean - description: | - Defines whether the instance has Secure Boot enabled. - enableVtpm: - type: boolean - description: | - Defines whether the instance has the vTPM enabled. - enableIntegrityMonitoring: - type: boolean - description: | - Defines whether the instance has integrity monitoring enabled. - guestAccelerators: - type: array - uniqueItems: true - description: | - A list of the type and count of accelerator cards attached to the instance. - items: - type: object - additionalProperties: false - properties: - acceleratorType: - type: string - description: | - Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 - If you are creating an instance template, specify only the accelerator name. - See GPUs on Compute Engine for a full list of accelerator types. - acceleratorCount: - type: integer - description: | - The number of the guest accelerator cards exposed to this instance. - canIpForward: - type: boolean - description: | - Defines whether the instance is allowed to send and receive packets - with non-matching destination or source IPs. - diskType: - type: string - default: pd-standard - enum: - - pd-ssd - - pd-standard - - local-ssd - description: Boot disk type - diskImage: - type: string - description: | - The source image to create the disk. To create the disk with one of the - public operating system images, specify the image by its family name. - For example, specify family/debian-9 to use the latest Debian 9 image, - projects/debian-cloud/global/images/family/debian-9. - To create a disk with a custom image, specify the image - name in the global/images/my-custom-image format. - See https://cloud.google.com/compute/docs/images for details. - diskSizeGb: - type: integer - minimum: 10 - metadata: - type: object - additionalProperties: false - description: | - Instance metadata. - For example: - metadata: - items: - - key: startup-script - - value: sudo apt-get update - properties: - items: - type: array - uniqueItems: true - description: The metadata key-value pairs. - items: - type: object - additionalProperties: false - required: - - key - - value - properties: - key: - type: string - value: - type: string - serviceAccounts: - type: array - uniqueItems: true - description: | - The list of service accounts, with their specified scopes, authorized for - this instance. Only one service account per VM instance is supported. - items: - type: object - additionalProperties: false - properties: - email: - type: string - description: The email address of the service account. - scopes: - type: array - uniqueItems: true - description: | - The list of scopes to be made available to the service account. - items: - type: string - description: | - The access scope; - e.g., 'https://www.googleapis.com/auth/compute.readonly'. - See https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam - for details - tags: - type: object - additionalProperties: false - description: | - The list of tags to apply to the instances that are created from the - template. The tags identify valid sources or targets for network - firewalls. - properties: - items: - type: array - uniqueItems: true - description: The array of tags. - items: - type: string - labels: - type: object - description: | - The labels to apply to instances created from the template. - Example: - name: wrench - mass: 1.3kg - count: 3 - -outputs: - name: - type: string - description: The instance template name. - selfLink: - type: string - description: The URI (SelfLink) of the instance template resource. - -documentation: - - templates/instance_template/README.md - -examples: - - templates/instance_template/examples/instance_template.yaml diff --git a/dm/templates/instance_template/tests/integration/instance_template.bats b/dm/templates/instance_template/tests/integration/instance_template.bats deleted file mode 100755 index c459295ca6b..00000000000 --- a/dm/templates/instance_template/tests/integration/instance_template.bats +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export IMAGE="projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - envsubst < "templates/instance_template/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying instance template disk properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.disks[0].initializeParams)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "diskType: pd-ssd" ]] - [[ "$output" =~ "sourceImage: ${IMAGE}" ]] - [[ "$output" =~ "diskSizeGb: '50'" ]] -} - -@test "Verifying instance spec properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "machineType: f1-micro" ]] - [[ "$output" =~ "description: Instance description" ]] - [[ "$output" =~ "canIpForward: true" ]] -} - -@test "Verifying instance template properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "value(name, description, properties.labels)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "Template description" ]] - [[ "$output" =~ "it-${RAND}" ]] - [[ "$output" =~ "name=wrench" ]] -} - -@test "Verifying instance template network tags" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.tags)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "ftp" ]] - [[ "$output" =~ "https" ]] -} - -@test "Verifying instance template metadata" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.metadata)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "key: createdBy" ]] - [[ "$output" =~ "value: unitTest" ]] -} - -@test "Verifying instance template network properties" { - NET="https://www.googleapis.com/compute/v1/projects/${CLOUD_FOUNDATION_PROJECT_ID}/global/networks/test-network-${RAND}" - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.networkInterfaces[0])" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "type: ONE_TO_ONE_NAT" ]] - [[ "$output" =~ "network: ${NET}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/instance_template/tests/integration/instance_template.yaml b/dm/templates/instance_template/tests/integration/instance_template.yaml deleted file mode 100644 index 7ea71b774d7..00000000000 --- a/dm/templates/instance_template/tests/integration/instance_template.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Test of the Instance Template template. -# -# Variables: -# RAND: a random string used by the testing suite -# IMAGE: a URL to the base disk image provided by the testing suite - -imports: - - path: templates/instance_template/instance_template.py - name: instance_template.py - -resources: - - name: instance-template-${RAND} - type: instance_template.py - properties: - name: it-${RAND} - instanceDescription: Instance description - templateDescription: Template description - networks: - - network: $(ref.test-network-${RAND}.selfLink) - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - diskImage: ${IMAGE} - machineType: f1-micro - canIpForward: true - diskType: pd-ssd - diskSizeGb: 50 - tags: - items: - - ftp - - https - metadata: - items: - - key: createdBy - value: unitTest - labels: - name: wrench - - name: test-network-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: true diff --git a/dm/templates/instance_template/tests/integration/instance_template_networks.bats b/dm/templates/instance_template/tests/integration/instance_template_networks.bats deleted file mode 100755 index a697b865226..00000000000 --- a/dm/templates/instance_template/tests/integration/instance_template_networks.bats +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="$(echo ${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND} | head -c 63)" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export IMAGE="projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - envsubst < "templates/instance_template/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying instance template disk properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.disks[0].initializeParams)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "diskType: pd-ssd" ]] - [[ "$output" =~ "sourceImage: ${IMAGE}" ]] -# [[ "$output" =~ "diskSizeGb: '50'" ]] -} - -@test "Verifying instance spec properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "machineType: f1-micro" ]] - [[ "$output" =~ "description: Instance description" ]] - [[ "$output" =~ "canIpForward: true" ]] -} - -@test "Verifying instance template properties" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "value(name, description, properties.labels)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "Template description" ]] - [[ "$output" =~ "it-${RAND}" ]] - [[ "$output" =~ "name=wrench" ]] -} - -@test "Verifying instance template network tags" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.tags)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "ftp" ]] - [[ "$output" =~ "https" ]] -} - -@test "Verifying instance template metadata" { - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.metadata)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "key: createdBy" ]] - [[ "$output" =~ "value: unitTest" ]] -} - -@test "Verifying instance template first network properties" { - NET="https://www.googleapis.com/compute/v1/projects/${CLOUD_FOUNDATION_PROJECT_ID}/global/networks/test-network-0-${RAND}" - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.networkInterfaces[0])" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "name: External NAT" ]] - [[ "$output" =~ "type: ONE_TO_ONE_NAT" ]] - [[ "$output" =~ "network: ${NET}" ]] -} - -@test "Verifying instance template second network properties" { - NET="https://www.googleapis.com/compute/v1/projects/${CLOUD_FOUNDATION_PROJECT_ID}/global/networks/test-network-1-${RAND}" - run gcloud compute instance-templates describe it-${RAND} \ - --format "yaml(properties.networkInterfaces[1])" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "name: External NAT" ]] - [[ "$output" =~ "type: ONE_TO_ONE_NAT" ]] - [[ "$output" =~ "network: ${NET}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/instance_template/tests/integration/instance_template_networks.yaml b/dm/templates/instance_template/tests/integration/instance_template_networks.yaml deleted file mode 100644 index 5974fd46f01..00000000000 --- a/dm/templates/instance_template/tests/integration/instance_template_networks.yaml +++ /dev/null @@ -1,63 +0,0 @@ -# Test of the Instance Template template. -# -# Variables: -# RAND: a random string used by the testing suite -# IMAGE: a URL to the base disk image provided by the testing suite - -imports: - - path: templates/instance_template/instance_template.py - name: instance_template.py - -resources: - - name: it-${RAND} - type: instance_template.py - properties: - name: it-${RAND} - instanceDescription: Instance description - templateDescription: Template description - networks: - - network: $(ref.test-network-0-${RAND}.selfLink) - subnetwork: $(ref.test-subnetwork-0-${RAND}.selfLink) - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - - network: $(ref.test-network-1-${RAND}.selfLink) - subnetwork: $(ref.test-subnetwork-1-${RAND}.selfLink) - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - diskImage: ${IMAGE} - machineType: f1-micro - canIpForward: true - diskType: pd-ssd - diskSizeGb: 50 - tags: - items: - - ftp - - https - metadata: - items: - - key: createdBy - value: unitTest - labels: - name: wrench - - name: test-network-0-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: false - - name: test-network-1-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: false - - name: test-subnetwork-0-${RAND} - type: compute.v1.subnetwork - properties: - network: $(ref.test-network-0-${RAND}.selfLink) - ipCidrRange: 10.0.1.0/24 - region: us-central1 - - name: test-subnetwork-1-${RAND} - type: compute.v1.subnetwork - properties: - network: $(ref.test-network-1-${RAND}.selfLink) - ipCidrRange: 10.0.2.0/24 - region: us-central1 diff --git a/dm/templates/interconnect/README.md b/dm/templates/interconnect/README.md deleted file mode 100644 index 75ff94816b6..00000000000 --- a/dm/templates/interconnect/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Interconnect - -This template creates an Interconnect resource. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network](../network/README.md) -- Create a [interconnect] (../interconnect/README.md) -- Create a [cloud_router] (../cloud_router/README.md) -- Grant the [compute.networkAdmin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the project service account - -## Deployment - -### Resources - -- [compute.v1.interconnects](https://cloud.google.com/compute/docs/reference/rest/v1/interconnects) - -### Properties - -See the `properties` section in the schema file(s): - -- [Interconnect](interconnect.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, - [examples/interconnect_dedicated.yaml](examples/interconnect_dedicated.yaml): - -```shell - cp templates/interconnect/examples/interconnect_dedicated.yaml my_interconnect_dedicated.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_interconnect_dedicated.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_interconnect_dedicated.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Dedicated Interconnect](examples/interconnect_dedicated.yaml) diff --git a/dm/templates/interconnect/examples/interconnect_dedicated.yaml b/dm/templates/interconnect/examples/interconnect_dedicated.yaml deleted file mode 100644 index 8f14a95d20e..00000000000 --- a/dm/templates/interconnect/examples/interconnect_dedicated.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Example of the Interconnect template usage. -# -# This example creates a DEDICATED Interconnect resource. -# -# Replace the following placeholders with appropriate values: -# : the Interconnect name -# : the name of the customer authorized for crossconnect -# : the URL of the Interconnect location -# : the amount of circuits for the Interconnect -# -# For details, refer to -# https://cloud.google.com/compute/docs/reference/rest/v1/interconnects. - -imports: - - path: templates/interconnect/interconnect.py - name: interconnect.py - -resources: - - name: my_dedicated_interconnect - type: interconnect.py - properties: - name: - customerName: - interconnectType: DEDICATED - location: - requestedLinkCount: diff --git a/dm/templates/interconnect/interconnect.py b/dm/templates/interconnect/interconnect.py deleted file mode 100644 index befca6d536d..00000000000 --- a/dm/templates/interconnect/interconnect.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -""" This template creates an Interconnect resource. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - resources = [] - intercon = { - 'name': context.env['name'], - # https://cloud.google.com/compute/docs/reference/rest/v1/interconnects - 'type': 'gcp-types/compute-v1:interconnects', - 'properties': - { - 'project': project_id, - 'name': name, - 'customerName': - context.properties['customerName'], - 'interconnectType': - context.properties['interconnectType'], - 'location': - context.properties['location'], - 'requestedLinkCount': - context.properties['requestedLinkCount'] - } - } - - optional_props = [ - 'adminEnabled', - 'description', - 'linkType', - 'nocContactEmail' - ] - - for prop in optional_props: - if prop in context.properties: - intercon['properties'][prop] = context.properties[prop] - - resources.append(intercon) - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/interconnect/interconnect.py.schema b/dm/templates/interconnect/interconnect.py.schema deleted file mode 100644 index 50d0cb6ab08..00000000000 --- a/dm/templates/interconnect/interconnect.py.schema +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Interconnect (Dedicated) - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of an Interconnect resource. - For more information on this resource: - https://cloud.google.com/compute/docs/reference/rest/v1/interconnects. - - APIs endpoints used by this template: - - gcp-types/compute-v1:interconnects => - https://cloud.google.com/compute/docs/reference/rest/v1/interconnects - -additionalProperties: false - -required: - - name - - customerName - - location - - requestedLinkCount - -properties: - name: - type: string - description: The name of the Interconnect resource. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the instance. - adminEnabled: - type: boolean - description: | - The administrative status of the Interconnect. If True, the - Interconnect is functional and can carry traffic. If False, no - packets can be carried over the Interconnect, and no BGP routes are - exchanged over it. By default, True. - customerName: - type: string - description: | - The customer name to be put in the Letter of Authorization as the party - authorized to request a crossconnect. - description: - type: string - description: | - The optional description of the resource. Provide a value when you - create the resource. - interconnectType: - type: string - description: The Interconnect type. - enum: - - DEDICATED - - PARTNER - linkType: - type: string - description: | - The type of the requested link. Indicates the speed of each of the - links in the bundle, not of the entire bundle. Only 10G per link is - allowed for a dedicated Interconnect. Options: Ethernet_10G_LR. - enum: - - LINK_TYPE_ETHERNET_10G_LR - - LINK_TYPE_ETHERNET_100G_LR - requestedLinkCount: - type: number - description: | - Target number of physical links in the link bundle, as requested by the customer. - location: - type: string - description: | - The URL of the InterconnectLocation object that defines where the - connection is to be provisioned. - nocContactEmail: - type: string - description: | - The email address to contact the customer NOC for operations and - maintenance notifications regarding the Interconnect. If specified, - this is used for notifications in addition to all other forms described, - such as Stackdriver log alerting and Cloud Notifications. - -outputs: - name: - type: string - description: The Interconnect name. - selfLink: - type: string - description: The server-defined URL for the resource. - -documentation: - - templates/interconnect/README.md - -examples: - - templates/interconnect/examples/interconnect_dedicated.yaml diff --git a/dm/templates/interconnect_attachment/README.md b/dm/templates/interconnect_attachment/README.md deleted file mode 100644 index 1d38153cefe..00000000000 --- a/dm/templates/interconnect_attachment/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Interconnect Attachment - -This template creates an Interconnect Attachment. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network](../network/README.md) -- Create a [interconnect] (../interconnect/README.md) -- Create a [cloud_router] (../cloud_router/README.md) -- Grant the [compute.networkAdmin](https://cloud.google.com/compute/docs/access/iam) i - IAM role to the project service account - -## Deployment - -### Resources - -- [compute.v1.interconnectAttachments](https://cloud.google.com/compute/docs/reference/rest/v1/interconnectAttachments) - -### Properties - -See the `properties` section in the schema file(s): - -- [Interconnect Attachment](interconnect_attachment.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/interconnect_attachment.yaml](examples/interconnect_attachment.yaml): - -```shell - cp templates/interconnect_attachment/examples/interconnect_attachment.yaml my_interconnect_attachment.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_interconnect_attachment.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_interconnect_attachment.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Dedicated Interconnect Attachment](examples/interconnect_attachment_dedicated.yaml) -- [Partner Interconnect Attachment](examples/interconnect_attachment_partner.yaml) diff --git a/dm/templates/interconnect_attachment/examples/interconnect_attachment_dedicated.yaml b/dm/templates/interconnect_attachment/examples/interconnect_attachment_dedicated.yaml deleted file mode 100644 index 83ea23096f1..00000000000 --- a/dm/templates/interconnect_attachment/examples/interconnect_attachment_dedicated.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of the Interconnect Attachment template usage. -# -# This example creates an interconnect attachment on a DEDICATED Interconnect -# -# Replace the following with appropriate values -# : replace with the name of the attachment -# : replace with the url of the cloud router. -# : replace with the region that the cloud router is in. -# : DEDICATED Circuits only replace with the url -# of the interconnect -# Refer to -# https://cloud.google.com/compute/docs/reference/rest/v1/interconnectAttachments -# for more details - -imports: - - path: templates/interconnect_attachment/interconnect_attachment.py - name: interconnect_attachment.py - -resources: - - name: my_dedicated_interconnect_attachment - type: interconnect_attachment.py - properties: - name: - router: - region: - interconnect: - type: DEDICATED diff --git a/dm/templates/interconnect_attachment/examples/interconnect_attachment_partner.yaml b/dm/templates/interconnect_attachment/examples/interconnect_attachment_partner.yaml deleted file mode 100644 index 7848947c31a..00000000000 --- a/dm/templates/interconnect_attachment/examples/interconnect_attachment_partner.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of the Interconnect Attachment template usage. -# -# This example creates an attachment on a PARTNER Interconnect -# -# Replace the following with appropriate values -# : replace with the name of the attachment -# : replace with the url of the cloud router. -# : replace with the region that the cloud router is in. -# : PARTNER Inertonnects only replace with the -# edge availibility domain -# Refer to -# https://cloud.google.com/compute/docs/reference/rest/v1/interconnectAttachments -# for more details - -imports: - - path: templates/interconnect_attachment/interconnect_attachment.py - name: interconnect_attachment.py - -resources: - - name: my_partner_interconnect_attachment - type: interconnect_attachment.py - properties: - name: - router: - region: - edgeAvailabilityDomain: - type: PARTNER diff --git a/dm/templates/interconnect_attachment/interconnect_attachment.py b/dm/templates/interconnect_attachment/interconnect_attachment.py deleted file mode 100644 index 593cf820190..00000000000 --- a/dm/templates/interconnect_attachment/interconnect_attachment.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -""" This template creates an Interconnect Attachment. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - resources = [] - attach = { - 'name': context.env['name'], - # https://cloud.google.com/compute/docs/reference/rest/v1/interconnectAttachments - 'type': 'gcp-types/compute-v1:interconnectAttachments', - 'properties': - { - 'project': project_id, - 'name': name, - 'router': - context.properties['router'], - 'region': - context.properties['region'], - 'type': - context.properties['type'] - } - } - - optional_props = [ - 'adminEnabled', - 'bandwidth', - 'candidateSubnets', - 'description', - 'edgeAvailabilityDomain', - 'interconnect', - 'partnerAsn', - 'partnerMetadata', - 'vlanTag8021q', - ] - - for prop in optional_props: - if prop in context.properties: - attach['properties'][prop] = context.properties[prop] - - resources.append(attach) - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/interconnect_attachment/interconnect_attachment.py.schema b/dm/templates/interconnect_attachment/interconnect_attachment.py.schema deleted file mode 100644 index 7948d4a2dcf..00000000000 --- a/dm/templates/interconnect_attachment/interconnect_attachment.py.schema +++ /dev/null @@ -1,213 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Interconnect Attachment - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates an Interconnect Attachment. - - For more information on this resource: - https://cloud.google.com/interconnect/docs/how-to/dedicated/creating-vlan-attachments (Dedicated) - https://cloud.google.com/interconnect/docs/how-to/partner/creating-vlan-attachments (Partner) - - APIs endpoints used by this template: - - gcp-types/compute-v1:interconnectAttachments => - https://cloud.google.com/compute/docs/reference/rest/v1/interconnectAttachments - -additionalProperties: false - -required: - - router - - region - - type - -oneOf: - - allOf: - - properties: - type: - enum: ["PARTNER"] - - not: - required: - - pairingKey - - not: - required: - - bandwidth - - not: - required: - - partnerMetadata - - not: - required: - - partnerAsn - - allOf: - - properties: - type: - enum: ["PARTNER_PROVIDER"] - - not: - required: - - adminEnabled - - not: - required: - - edgeAvailabilityDomain - - allOf: - - properties: - type: - enum: ["DEDICATED"] - - not: - required: - - pairingKey - - not: - required: - - edgeAvailabilityDomain - - not: - required: - - partnerAsn - -properties: - name: - type: string - description: | - The name of the Interconnect Attachment resource. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the instance. - router: - type: string - description: | - URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this - InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the - network & region within which the Cloud Router is configured. - - Authorization requires the following Google IAM permission on the specified resource router: - - compute.routers.use - region: - type: string - description: | - The URL of the region where the router resides. - pairingKey: - type: string - description: | - The opaque identifier of an PARTNER attachment used to initiate provisioning with a selected partner. - Of the form "XXXXX/region/domain" - type: - type: string - description: | - The type of interconnect attachment this is. - enum: - - DEDICATED - - PARTNER - - PARTNER_PROVIDER - bandwidth: - type: string - description: | - Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, - the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating - the interconnect must set the bandwidth. - Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED. - enum: - - BPS_50M - - BPS_100M - - BPS_200M - - BPS_300M - - BPS_400M - - BPS_500M - - BPS_1G - - BPS_2G - - BPS_5G - - BPS_10G - adminEnabled: - type: boolean - description: | - Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER. - partnerMetadata: - type: object - additionalProperties: false - description: | - Informational metadata about Partner attachments from Partners to display to customers. - Output only for for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED. - properties: - partnerName: - type: string - description: | - Plain text name of the Partner providing this attachment. - This value may be validated to match approved Partner values. - interconnectName: - type: string - description: | - Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner’s portal. - For instance "Chicago 1". This value may be validated to match approved Partner values. - portalUrl: - type: string - description: | - URL of the Partner’s portal for this Attachment. Partners may customise this to be a deep link to the - specific resource on the Partner portal. This value may be validated to match approved Partner values. - vlanTag8021q: - type: number - description: | - The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. Only specified at creation time. - interconnect: - type: string - description: | - URL of the underlying Interconnect object that this attachment's traffic - will traverse through. - - Authorization requires the following Google IAM permission on the specified resource interconnect: - - compute.interconnects.use - partnerAsn: - type: string - description: | - Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. - Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED. - candidateSubnets: - type: array - uniqItems: True - description: | - Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and - customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) - and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied - candidate prefix(es). The request will fail if all possible /29s are in use on Google’s edge. - If not supplied, Google will randomly select an unused /29 from all of link-local space. - maxItems: 16 - items: - type: string - edgeAvailabilityDomain: - type: string - description: | - Desired availability domain for the attachment. Only available for type - PARTNER, at creation time. - - For improved reliability, customers should configure a pair of attachments, one per availability domain. - The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned - circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY. - enum: - - AVAILABILITY_DOMAIN_1 - - AVAILABILITY_DOMAIN_2 - - AVAILABILITY_DOMAIN_ANY - -outputs: - name: - type: string - description: The created attachments name. - selfLink: - type: string - description: Server-defined URL for the resource. - -documentation: - - templates/interconnect_attachment/README.md - -examples: - - templates/interconnect_attachment/examples/interconnect_attachment_dedicated.yaml - - templates/interconnect_attachment/examples/interconnect_attachment_partner.yaml diff --git a/dm/templates/internal_load_balancer/README.md b/dm/templates/internal_load_balancer/README.md deleted file mode 100644 index 1829c9b2341..00000000000 --- a/dm/templates/internal_load_balancer/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Internal Load Balancer - -This template creates an internal load balancer that consists of a forwarding -rule and a regional backend service. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [compute.v1.forwardingRule](https://cloud.google.com/compute/docs/reference/latest/forwardingRules) -- [compute.v1.regionalBackendService](https://cloud.google.com/compute/docs/reference/latest/regionBackendServices) - -### Properties - -See the `properties` section in the schema file(s): - -- [Internal Load Balancer](internal_load_balancer.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this - case, [examples/internl\_load\_balancer.yaml](examples/internal_load_balancer.yaml): - -```shell - cp templates/internal_load_balancer/examples/internal_load_balancer.yaml \ - my_internal_load_balancer.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_internal_load_balancer.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_internal_load_balancer.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Internal Load Balancer](examples/internal_load_balancer.yaml) diff --git a/dm/templates/internal_load_balancer/examples/internal_load_balancer.yaml b/dm/templates/internal_load_balancer/examples/internal_load_balancer.yaml deleted file mode 100644 index 3bbcb64cedb..00000000000 --- a/dm/templates/internal_load_balancer/examples/internal_load_balancer.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Example of the internal load balancer template usage. -# -# Replace the following placeholders with valid values: -# : a region where load balancer resides -# : a URL of the regional instance group -# : a URL of the TCP healthcheck -# : a port number to which the traffic is delivered - -imports: - - path: templates/internal_load_balancer/internal_load_balancer.py - name: internal_load_balancer.py - -resources: - - name: internal-load-balancer - type: internal_load_balancer.py - properties: - region: - protocol: TCP - ports: - - - backendService: - healthCheck: - sessionAffinity: CLIENT_IP - backends: - - group: - type: internal_load_balancer.py diff --git a/dm/templates/internal_load_balancer/internal_load_balancer.py b/dm/templates/internal_load_balancer/internal_load_balancer.py deleted file mode 100644 index efc7290fcea..00000000000 --- a/dm/templates/internal_load_balancer/internal_load_balancer.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates an internal load balancer. """ - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - - -def get_backend_service(properties, project_id, res_name): - """ Creates the backend service. """ - - backend_spec = properties['backendService'] - for backend in backend_spec['backends']: - backend.update({ - 'balancingMode': 'CONNECTION' - }) - - name = '{}-bs'.format(res_name) - backend_properties = { - 'name': backend_spec.get('name', properties.get('name', name)), - 'project': project_id, - 'loadBalancingScheme': 'INTERNAL', - 'protocol': properties['protocol'], - 'region': properties['region'], - } - - backend_resource = { - 'name': name, - 'type': 'backend_service.py', - 'properties': backend_properties - } - - optional_properties = [ - 'description', - 'backends', - 'timeoutSec', - 'sessionAffinity', - 'connectionDraining', - 'backends', - 'healthCheck', - 'healthChecks', - ] - - for prop in optional_properties: - set_optional_property(backend_properties, backend_spec, prop) - - return [backend_resource], [ - { - 'name': 'backendServiceName', - 'value': backend_resource['properties']['name'], - }, - { - 'name': 'backendServiceSelfLink', - 'value': '$(ref.{}.selfLink)'.format(name), - }, - ] - - -def get_forwarding_rule(properties, backend, project_id, res_name): - """ Creates the forwarding rule. """ - - rule_properties = { - 'name': properties.get('name', res_name), - 'project': project_id, - 'loadBalancingScheme': 'INTERNAL', - 'IPProtocol': properties['protocol'], - 'backendService': '$(ref.{}.selfLink)'.format(backend['name']), - 'region': properties['region'], - } - - rule_resource = { - 'name': res_name, - 'type': 'forwarding_rule.py', - 'properties': rule_properties, - } - - optional_properties = [ - 'description', - 'IPAddress', - 'ipVersion', - 'ports', - 'network', - 'subnetwork', - ] - - for prop in optional_properties: - set_optional_property(rule_properties, properties, prop) - - return [rule_resource], [ - { - 'name': 'forwardingRuleName', - 'value': res_name, - }, - { - 'name': 'forwardingRuleSelfLink', - 'value': '$(ref.{}.selfLink)'.format(res_name), - }, - { - 'name': 'IPAddress', - 'value': '$(ref.{}.IPAddress)'.format(res_name), - }, - { - 'name': 'region', - 'value': properties['region'] - }, - ] - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - - backend_resources, backend_outputs = get_backend_service(properties, project_id, context.env['name']) - rule_resources, rule_outputs = get_forwarding_rule( - properties, - backend_resources[0], - project_id, - context.env['name'] - ) - - return { - 'resources': rule_resources + backend_resources, - 'outputs': rule_outputs + backend_outputs - } diff --git a/dm/templates/internal_load_balancer/internal_load_balancer.py.schema b/dm/templates/internal_load_balancer/internal_load_balancer.py.schema deleted file mode 100644 index 528d5b9be26..00000000000 --- a/dm/templates/internal_load_balancer/internal_load_balancer.py.schema +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Internal Load Balancer - version: 1.0.1 - author: Sourced Group Inc. - description: | - Supports the creation of an internal load balancing solution that consists - of a forwarding rule and a backend service. For details, visit - https://cloud.google.com/load-balancing/docs/internal/. - -imports: - - path: ../backend_service/backend_service.py - name: backend_service.py - - path: ../forwarding_rule/forwarding_rule.py - name: forwarding_rule.py - -additionalProperties: false - -required: - - region - - backendService - -properties: - name: - type: string - description: | - The internal load balancer name. This name is assigned to the - underlying forwarding rule resource. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - description: - type: string - description: | - An optional description of the internal load balancer. This description - is assigned to the underlying forwarding rule resource. - region: - type: string - description: | - The name of the region where the internal load balancer resides. - ports: - type: array - uniqItems: true - description: | - The list of ports; only packets addressed to these ports are forwarded - to the backends configured with the load balancer. - items: - type: integer - minimum: 1 - maximum: 65535 - network: - type: string - description: | - The network which the load-balanced IP must belong to. If no value is provided, - the default network is used. - If you specify this property, you can specify the network as a full or - partial URL. For example, the following are all valid URLs: - - https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK - - projects/PROJECT/global/networks/NETWORK - - global/networks/default - subnetwork: - type: string - description: | - The subnetwork which the load-balanced IP must belong to. - If you specify this property, you can specify the subnetwork as a full or - partial URL. For example, the following are all valid URLs: - - https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK - - regions/REGION/subnetworks/SUBNETWORK - protocol: - type: string - default: TCP - description: The protocol of the traffic the load balancer uses. - enum: - - TCP - - UDP - backendService: - type: object - description: The backend service configuration. - additionalProperties: false - oneOf: - - required: - - healthCheck - - required: - - healthChecks - required: - - backends - properties: - name: - type: string - description: The backend service resource name. - description: - type: string - description: An optional description of the backend service resource. - backends: - type: array - uniqItems: true - description: | - The list of backends (instance groups) to which the backend service - distributes traffic. - items: - type: object - additionalProperties: false - required: - - group - properties: - description: - type: string - description: An optional description of the resource. - group: - type: string - description: | - The fully-qualified URL of the Instance Group resource. The - instance group must reside in the same region as the backend - service. - timeoutSec: - type: number - default: 30 - description: | - The number of seconds to wait for the backend response before - considering the request as failed. - healthCheck: - type: string - description: | - The URL of the HealthCheck resource for healthchecking the backend - service. - healthChecks: - type: array - uniqueItems: true - maxItems: 1 - description: | - The URL of the HealthCheck, HttpHealthCheck, or HttpsHealthCheck resource - for healthchecking the backend service. - items: - type: string - sessionAffinity: - type: string - default: NONE - description: | - The type of the session affinity to use. This field is not used with - the UDP protocol. - enum: - - NONE - - CLIENT_IP - - CLIENT_IP_PROTO - - CLIENT_IP_PORT_PROTO - connectionDraining: - type: object - additionalProperties: false - description: The connection draining settings. - properties: - drainingTimeoutSec: - type: integer - description: | - The time period during which the instance is drained (is not - accepting new connections but still processing the ones accepted - earlier). - -outputs: - forwardingRuleName: - type: string - description: The name of the internal load balancer's forwarding rule. - backendServiceName: - type: string - description: The name of the internal load balancer's backend service. - region: - type: string - description: | - The URL of the region where the internal load balancer resides. - forwardingRuleSelfLink: - type: string - description: The URI (SelfLink) of the forwarding rule resource. - backendServiceSelfLink: - type: string - description: The URI (SelfLink) of the backend service resource. - IPAddress: - type: string - description: | - The IP address on whose behalf the internal load balancer - (the forwarding rule) operates. - -documentation: - - templates/internal_load_balancer/README.md - -examples: - - templates/internal_load_balancer/examples/internal_load_balancer.yaml diff --git a/dm/templates/internal_load_balancer/tests/integration/internal_load_balancer.bats b/dm/templates/internal_load_balancer/tests/integration/internal_load_balancer.bats deleted file mode 100755 index 6b7338e059d..00000000000 --- a/dm/templates/internal_load_balancer/tests/integration/internal_load_balancer.bats +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # test specific variables - export REGION="us-east1" - export ILB_RES_NAME="internal-load-balancer-${RAND}" - export ILB_NAME="internal-load-balancer-name-${RAND}" - export ILB_DESCRIPTION="ILB Description" - export PROTOCOL="TCP" - export ILB_PORT="80" - export NETWORK_NAME="test-network-${RAND}" - export BS_NAME="backend-service-name-${RAND}" - export BS_DESCRIPTION="backend description" - export BS_AFFINITY="CLIENT_IP" - export BS_DRAINING="70" - export TIMEOUT="40" - export HC_NAME="tcp-healthcheck-${RAND}" - export BACKEND_DESCRIPTION="instance group description" - export IGM_NAME="regional-igm-${RAND}" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying forwarding rule" { - run gcloud compute forwarding-rules describe "${ILB_NAME}" \ - --region ${REGION} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "IPProtocol: ${PROTOCOL}" ]] - [[ "$output" =~ "${BS_NAME}" ]] - [[ "$output" =~ "loadBalancingScheme: INTERNAL" ]] - [[ "$output" =~ "name: ${ILB_NAME}" ]] - [[ "$output" =~ "- '${ILB_PORT}'" ]] - [[ "$output" =~ "${ILB_DESCRIPTION}" ]] - [[ "$output" =~ "${NETWORK_NAME}" ]] -} - -@test "Verifying backend service" { - run gcloud compute backend-services describe "${BS_NAME}" \ - --region ${REGION} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "description: ${BS_DESCRIPTION}" ]] - [[ "$output" =~ "protocol: ${PROTOCOL}" ]] - [[ "$output" =~ "loadBalancingScheme: INTERNAL" ]] - [[ "$output" =~ "sessionAffinity: ${BS_AFFINITY}" ]] - [[ "$output" =~ "timeoutSec: ${TIMEOUT}" ]] - [[ "$output" =~ "${HC_NAME}" ]] - [[ "$output" =~ "drainingTimeoutSec: ${BS_DRAINING}" ]] -} - -@test "Verifying backend" { - run gcloud compute backend-services describe "${BS_NAME}" \ - --format "yaml(backends[0])" --region ${REGION} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "description: ${BACKEND_DESCRIPTION}" ]] - [[ "$output" =~ "balancingMode: CONNECTION" ]] - [[ "$output" =~ "${IGM_NAME}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/internal_load_balancer/tests/integration/internal_load_balancer.yaml b/dm/templates/internal_load_balancer/tests/integration/internal_load_balancer.yaml deleted file mode 100644 index 32a964d5b1a..00000000000 --- a/dm/templates/internal_load_balancer/tests/integration/internal_load_balancer.yaml +++ /dev/null @@ -1,71 +0,0 @@ -# Test of the internal load balancer template. - -imports: - - path: templates/internal_load_balancer/internal_load_balancer.py - name: internal_load_balancer.py - - -resources: - - name: ${ILB_RES_NAME} - type: internal_load_balancer.py - properties: - protocol: ${PROTOCOL} - region: ${REGION} - name: ${ILB_NAME} - description: ${ILB_DESCRIPTION} - ports: - - ${ILB_PORT} - network: $(ref.${NETWORK_NAME}.selfLink) - backendService: - name: ${BS_NAME} - description: ${BS_DESCRIPTION} - timeoutSec: ${TIMEOUT} - healthCheck: $(ref.${HC_NAME}.selfLink) - sessionAffinity: ${BS_AFFINITY} - connectionDraining: - drainingTimeoutSec: ${BS_DRAINING} - backends: - - group: $(ref.${IGM_NAME}.instanceGroup) - description: ${BACKEND_DESCRIPTION} - -# Test prerequisites. - - name: ${IGM_NAME} - type: compute.v1.regionInstanceGroupManager - properties: - instanceTemplate: $(ref.instance-template-${RAND}.selfLink) - region: ${REGION} - targetSize: 3 - - - name: instance-template-${RAND} - type: compute.v1.instanceTemplate - properties: - properties: - machineType: f1-micro - disks: - - autoDelete: true - boot: true - deviceName: boot - initializeParams: - sourceImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - type: PERSISTENT - networkInterfaces: - - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - network: $(ref.test-network-${RAND}.selfLink) - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx - - - name: ${NETWORK_NAME} - type: compute.v1.network - properties: - autoCreateSubnetworks: true - - - name: ${HC_NAME} - type: compute.v1.healthCheck - properties: - type: TCP - tcpHealthCheck: - port: ${ILB_PORT} diff --git a/dm/templates/ip_reservation/README.md b/dm/templates/ip_reservation/README.md deleted file mode 100644 index 81357a7299d..00000000000 --- a/dm/templates/ip_reservation/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# IP Reservation - -This template creates an IP reservation. -Depending on the input option, the following addresses can be reserved: -- Global -- External -- Internal - -## Prerequisites -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.networkAdmin](https://cloud.google.com/compute/docs/access/iam) IAM role to the project service account (unless the default Project Editor role is already granted) - - -## Deployment - -### Resources - -- [gcp-types/compute-v1:address](https://cloud.google.com/compute/docs/reference/rest/v1/addresses) -- [gcp-types/compute-v1:globalAddress](https://cloud.google.com/compute/docs/reference/rest/v1/addresses) - - -### Properties - -See the `properties` section in the schema file(s): -- [IP Reservation](ip_reservation.py.schema) - - -#### Usage - -1. Clone the [Deployment Manager samples_repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../../cloud-foundation) directory - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment, in this case [examples/ip_reservation.yaml](examples/ip_reservation.yaml) - -```shell - cp templates/ip_reservation/examples/ip_reservation.yaml my_ip_reservation.yaml -``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - -```shell - vim my_ip_reservation.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment as described below, replacing - with your with your own deployment name - -```shell - gcloud deployment-manager deployments create \ - --config my_ip_reservation.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Reserving a global, external, or internal IP address](examples/ip_reservation.yaml) diff --git a/dm/templates/ip_reservation/examples/ip_reservation.yaml b/dm/templates/ip_reservation/examples/ip_reservation.yaml deleted file mode 100644 index 722501cbb31..00000000000 --- a/dm/templates/ip_reservation/examples/ip_reservation.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Example of the IP reservation template usage. -# -# In this example, an array of reserved IPs is applied to the PROJECTID project. -# -# : The project ID that created your network. -# : The network's region. -# : The subnetwork ID. -# - -imports: - - path: templates/ip_reservation/ip_reservation.py - name: ip_reservation.py - -resources: - - name: allmyips - type: ip_reservation.py - properties: - ipAddresses: - - name: myglobal - ipType: GLOBAL - description: 'my global ip' - - name: myregionalexternal - ipType: REGIONAL - region: - description: 'my static external ip' - - name: myinternal - ipType: INTERNAL - # This IP address must be within the subnet range. - address: 10.128.1.111 - subnetwork: projects//regions//subnetworks/ - region: - description: 'my internal ip' diff --git a/dm/templates/ip_reservation/ip_address.py b/dm/templates/ip_reservation/ip_address.py deleted file mode 100644 index 3d6cf5d60c4..00000000000 --- a/dm/templates/ip_reservation/ip_address.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -""" This template creates an IP address. """ - - -def get_address_type(ip_type): - """ Return the address type to reserve. """ - - if ip_type in ['GLOBAL', 'REGIONAL']: - return 'EXTERNAL' - - return 'INTERNAL' - -def get_resource_type(ip_type): - """ Return the address resource type. """ - - if ip_type == 'GLOBAL': - # https://cloud.google.com/compute/docs/reference/rest/v1/globalAddresses - return 'gcp-types/compute-v1:globalAddresses' - - # https://cloud.google.com/compute/docs/reference/rest/v1/addresses - return 'gcp-types/compute-v1:addresses' - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - resource_type = get_resource_type(context.properties['ipType']) - address_type = get_address_type(context.properties['ipType']) - name = context.properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - res_properties = { - 'addressType': address_type, - 'resourceType': 'addresses', - 'project': project_id, - } - - optional_properties = [ - 'subnetwork', - 'address', - 'description', - 'region', - 'networkTier', - 'prefixLength', - 'ipVersion', - 'purpose', - ] - - for prop in optional_properties: - if prop in context.properties: - res_properties[prop] = str(context.properties[prop]) - - resources = [ - { - 'name': name, - 'type': resource_type, - 'properties': res_properties - } - ] - - outputs = [ - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(name) - }, - { - 'name': 'address', - 'value': '$(ref.{}.address)'.format(name) - }, - { - 'name': 'status', - 'value': '$(ref.{}.status)'.format(name) - } - ] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/ip_reservation/ip_address.py.schema b/dm/templates/ip_reservation/ip_address.py.schema deleted file mode 100644 index 9c4eff20cef..00000000000 --- a/dm/templates/ip_reservation/ip_address.py.schema +++ /dev/null @@ -1,195 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: IP Address - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates an internal, external, or global IP address. - - For more information on this resource: - https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address - - APIs endpoints used by this template: - - gcp-types/compute-v1:globalAddresses => - https://cloud.google.com/compute/docs/reference/rest/v1/globalAddresses - - gcp-types/compute-v1:addresses => - https://cloud.google.com/compute/docs/reference/rest/v1/addresses - -additionalProperties: false - -required: - - name - - ipType - -allOf: - - anyOf: - - allOf: - - properties: - purpose: - enum: ["GCE_ENDPOINT", "DNS_RESOLVER"] - - required: - - purpose - - allOf: - - properties: - ipType: - enum: ["INTERNAL"] - - required: - - ipType - - not: - required: - - subnetwork - - anyOf: - - allOf: - - properties: - purpose: - enum: ["VPC_PEERING"] - - required: - - purpose - - not: - required: - - network - - anyOf: - - allOf: - - properties: - ipType: - enum: ["REGIONAL", "INTERNAL"] - - required: - - ipType - - not: - required: - - region - - anyOf: - - allOf: - - properties: - ipType: - enum: ["GLOBAL"] - - required: - - ipType - - not: - required: - - ipVersion - - -properties: - name: - type: string - description: | - Name of the reserved IP; unique within the context of the project. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the IP. The - Google apps domain is prefixed if applicable. - prefixLength: - type: number - description: | - The prefix length if the resource reprensents an IP range. - networkTier: - type: string - description: | - This signifies the networking tier used for configuring this address and can only take the following - values: PREMIUM or STANDARD. Global forwarding rules can only be Premium Tier. Regional forwarding rules - can be either Premium or Standard Tier. Standard Tier addresses applied to regional forwarding rules - can be used with any external load balancer. Regional forwarding rules in Premium Tier can only - be used with a network load balancer. - - If this field is not specified, it is assumed to be PREMIUM. - ipVersion: - type: string - description: | - The IP version that will be used by this address. Valid options are IPV4 or IPV6. - This can only be specified for a global address. - enum: - - IPV4 - - IPV6 - purpose: - type: string - description: | - The purpose of this resource, which can be one of the following values: - - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, internal load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork - VPC_PEERING for addresses that are reserved for VPC peer networks. - NAT_AUTO for addresses that are external IP addresses automatically reserved for Cloud NAT. - enum: - - GCE_ENDPOINT - - DNS_RESOLVER - - VPC_PEERING - - NAT_AUTO - ipType: - type: string - description: | - The IP types the user can reserve. - - GLOBAL - for global entities; the IPs can only be used with global - forwarding rules (GLB) - - REGIONAL - static external IPs that reside in a region - - INTERNAL - static internal (RFC1918) IPs that reside in a region on a - subnet - enum: - - GLOBAL - - REGIONAL - - INTERNAL - description: - type: string - description: | - An optional description of this resource. Provide this field when you create the resource. - address: - type: string - description: | - If the field value (IP address) is provided, Deployment - Manager tries to reserve the specified IP address. If the field is - not set, Deployment Manager reserves an internal IP address that - is part of the subnet definition. - network: - type: string - description: | - The URL of the network in which to reserve the address. - This field can only be used with INTERNAL type with the VPC_PEERING purpose. - subnetwork: - type: string - description: | - The URL of the subnetwork in which to reserve the address. If an IP address is specified, - it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with - a GCE_ENDPOINT or DNS_RESOLVER purpose. - region: - type: string - description: | - The region where the regional address resides. - -outputs: - selfLink: - type: string - description: The URI (SelfLink) of the address resource. - address: - type: string - description: | - The static IP address represented by this resource. - status: - type: string - description: | - The status of the address, which can be one of RESERVING, - RESERVED, or IN_USE. An address that is RESERVING is - currently in the process of being reserved. A RESERVED - address is currently reserved and available to use. An IN_USE - address is currently being used by another resource and is - not available. - -documentation: - - templates/ip_reservation/README.md - -examples: - - templates/ip_reservation/examples/ip_reservation.yaml diff --git a/dm/templates/ip_reservation/ip_reservation.py b/dm/templates/ip_reservation/ip_reservation.py deleted file mode 100644 index 9e5e72d5ddd..00000000000 --- a/dm/templates/ip_reservation/ip_reservation.py +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -""" This template creates an IP reservation. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - out = {} - - for ip_properties in context.properties['ipAddresses']: - name = ip_properties['name'] - resource = { - 'name': name, - 'type': 'ip_address.py', - 'properties': ip_properties - } - - resources.append(resource) - - out[name] = { - 'selfLink': '$(ref.' + name + '.selfLink)', - 'address': '$(ref.' + name + '.address)', - 'status': '$(ref.' + name + '.status)', - } - - outputs = [{'name': 'addresses', 'value': out}] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/ip_reservation/ip_reservation.py.schema b/dm/templates/ip_reservation/ip_reservation.py.schema deleted file mode 100644 index e2151bb7bdc..00000000000 --- a/dm/templates/ip_reservation/ip_reservation.py.schema +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: IP Reservation - author: Sourced Group Inc. - version: 1.0.0 - description: | - Reservers internal, external, or global IP address. - - For more information on this resource: - https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address - - APIs endpoints used by this template: - - gcp-types/compute-v1:globalAddresses => - https://cloud.google.com/compute/docs/reference/rest/v1/globalAddresses - - gcp-types/compute-v1:addresses => - https://cloud.google.com/compute/docs/reference/rest/v1/addresses - -imports: - - path: ../ip_reservation/ip_address.py - name: ip_address.py - -additionalProperties: false - -required: - - ipAddresses - -properties: - ipAddresses: - type: array - uniqueItems: true - description: | - An array of IPs to create as defined by the `ip_address.py` template. - Example: - - name: myregionalexternal - ipType: regional - region: - description: 'my static external ip' - items: - type: object - additionalProperties: false - properties: - name: - type: string - description: | - Name of the reserved IP; unique within the context of the project. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the IP. The - Google apps domain is prefixed if applicable. - prefixLength: - type: number - description: | - The prefix length if the resource represents an IP range. - networkTier: - type: string - description: | - This signifies the networking tier used for configuring this address and can only take the following - values: PREMIUM or STANDARD. Global forwarding rules can only be Premium Tier. Regional forwarding rules - can be either Premium or Standard Tier. Standard Tier addresses applied to regional forwarding rules - can be used with any external load balancer. Regional forwarding rules in Premium Tier can only - be used with a network load balancer. - - If this field is not specified, it is assumed to be PREMIUM. - ipVersion: - type: string - description: | - The IP version that will be used by this address. Valid options are IPV4 or IPV6. - This can only be specified for a global address. - enum: - - IPV4 - - IPV6 - purpose: - type: string - description: | - The purpose of this resource, which can be one of the following values: - - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, internal load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork - VPC_PEERING for addresses that are reserved for VPC peer networks. - NAT_AUTO for addresses that are external IP addresses automatically reserved for Cloud NAT. - enum: - - GCE_ENDPOINT - - DNS_RESOLVER - - VPC_PEERING - - NAT_AUTO - ipType: - type: string - description: | - The IP types the user can reserve. - - GLOBAL - for global entities; the IPs can only be used with global - forwarding rules (GLB) - - REGIONAL - static external IPs that reside in a region - - INTERNAL - static internal (RFC1918) IPs that reside in a region on a - subnet - enum: - - GLOBAL - - REGIONAL - - INTERNAL - description: - type: string - description: | - An optional description of this resource. Provide this field when you create the resource. - address: - type: string - description: | - If the field value (IP address) is provided, Deployment - Manager tries to reserve the specified IP address. If the field is - not set, Deployment Manager reserves an internal IP address that - is part of the subnet definition. - network: - type: string - description: | - The URL of the network in which to reserve the address. - This field can only be used with INTERNAL type with the VPC_PEERING purpose. - subnetwork: - type: string - description: | - The URL of the subnetwork in which to reserve the address. If an IP address is specified, - it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with - a GCE_ENDPOINT or DNS_RESOLVER purpose. - region: - type: string - description: | - The region where the regional address resides. - -outputs: - addresses: - type: array - description: | - Array of address details. For example, the output can be referenced - as: `$(ref..addresses..selfLink)` - items: - description: The name of the address resource. - patternProperties: - ".*": - type: object - description: Details for an address resource. - properties: - selfLink: - type: string - description: The URI (SelfLink) of the address resource. - address: - type: string - description: | - The static IP address represented by this resource. - status: - type: string - description: | - The status of the address, which can be one of RESERVING, - RESERVED, or IN_USE. An address that is RESERVING is - currently in the process of being reserved. A RESERVED - address is currently reserved and available to use. An IN_USE - address is currently being used by another resource and is - not available. - -documentation: - - templates/ip_reservation/README.md - -examples: - - templates/ip_reservation/examples/ip_reservation.yaml diff --git a/dm/templates/ip_reservation/tests/integration/ip_reservation.bats b/dm/templates/ip_reservation/tests/integration/ip_reservation.bats deleted file mode 100755 index 3d9b602b145..00000000000 --- a/dm/templates/ip_reservation/tests/integration/ip_reservation.bats +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -## Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/ip_reservation/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud compute networks create network-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "integration test ${RAND}" \ - --subnet-mode custom - gcloud compute networks subnets create subnet-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network=network-${RAND} --region=us-central1 \ - --range=10.100.0.0/23 - create_config - fi -} - -function teardown() { - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute networks subnets delete subnet-${RAND} \ - --region=us-central1 --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - gcloud compute networks delete network-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - rm -f "${RANDOM_FILE}" - delete_config - fi -} - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that global IPs were created as part of deployment ${DEPLOYMENT_NAME}" { - run gcloud compute addresses describe test-myglobal-"${RAND}" --global \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "name: test-myglobal-${RAND}" ]] - [[ "$output" =~ "status: RESERVED" ]] - [[ "$output" =~ "description: my global ip" ]] -} - -@test "Verifying that internal IPs were created as part of deployment ${DEPLOYMENT_NAME}" { - run gcloud compute addresses describe test-myinternal-"${RAND}" \ - --region us-central1 --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "name: test-myinternal-${RAND}" ]] - [[ "$output" =~ "status: RESERVED" ]] - [[ "$output" =~ "addressType: INTERNAL" ]] - [[ "$output" =~ "description: my us-central1 internal ip" ]] -} - -@test "Verifying that external static IPs are created as part of deployment ${DEPLOYMENT_NAME}" { - run gcloud compute addresses describe test-myregionalexternal-"${RAND}" \ - --region us-central1 --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "name: test-myregionalexternal-${RAND}" ]] - [[ "$output" =~ "status: RESERVED" ]] - [[ "$output" =~ "description: my us-central1 static external ip" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run gcloud run gcloud compute addresses list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-myglobal-${RAND}" ]] - [[ ! "$output" =~ "test-myinternal-${RAND}" ]] - [[ ! "$output" =~ "test-myregionalexternal-${RAND}" ]] -} diff --git a/dm/templates/ip_reservation/tests/integration/ip_reservation.yaml b/dm/templates/ip_reservation/tests/integration/ip_reservation.yaml deleted file mode 100644 index 5a3b7386bf0..00000000000 --- a/dm/templates/ip_reservation/tests/integration/ip_reservation.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Test of the IP reservation template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: -- path: templates/ip_reservation/ip_reservation.py - name: ip_reservation.py - -resources: -- name: allmyips-${RAND} - type: ip_reservation.py - properties: - ipAddresses: - - name: test-myglobal-${RAND} - ipType: GLOBAL - description: 'my global ip' - - name: test-myregionalexternal-${RAND} - ipType: REGIONAL - region: us-central1 - description: 'my us-central1 static external ip' - - name: test-myinternal-${RAND} - ipType: INTERNAL - address: 10.100.0.111 - subnetwork: projects/${CLOUD_FOUNDATION_PROJECT_ID}/regions/us-central1/subnetworks/subnet-${RAND} - region: us-central1 - description: 'my us-central1 internal ip' diff --git a/dm/templates/kms/README.md b/dm/templates/kms/README.md deleted file mode 100644 index 192be51cace..00000000000 --- a/dm/templates/kms/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Google Cloud Key Management Service (KMS) - -This template creates a Google Cloud KMS KeyRing and Keys. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [cloudkms.admin](https://cloud.google.com/kms/docs/iam) IAM role to - the Deployment Manager service account - -## Deployment - -### Resources - -- [gcp-types/cloudkms-v1](https://cloud.google.com/kms/docs/reference/rest/) -- [KMS Object hierarchy](https://cloud.google.com/kms/docs/object-hierarchy) -- [KMS Key Version States](https://cloud.google.com/kms/docs/key-states) -- [KMS Object Lifetime](https://cloud.google.com/kms/docs/object-hierarchy#lifetime) - -### Properties - -See the `properties` section in the schema file(s): - -- [Cloud KMS](kms.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment, - in this case [examples/kms.yaml](examples/kms.yaml) - - ```shell - cp templates/kms/examples/kms.yaml my_kms.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - - ```shell - vim my_kms.yaml # <== Replace all placeholders in this file - ``` - -5. Create your deployment as described below, replacing - with your with your own deployment name - - ```shell - gcloud deployment-manager deployments create \ - --config my_kms.yaml - ``` - -> **Note**: Once created, this deployment cannot be deleted. -> Refer to `KMS Object Lifetime` in [Resources](#Resources) section - -## Examples - -- [KMS KeyRing with Encryption Keys](examples/kms.yaml) -- [KMS KeyRing with Signing Keys](examples/kms_signkey.yaml) diff --git a/dm/templates/kms/examples/kms.yaml b/dm/templates/kms/examples/kms.yaml deleted file mode 100644 index 9b4b643a7fa..00000000000 --- a/dm/templates/kms/examples/kms.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Example of the Google Cloud KMS template usage. -# -# In this example, a KMS KeyRing and cryptographic key are created. -# The cryptographic key's purpose is ENCRYPT_DECRYPT by default. -# IAM Policies are applied to the cryptographic key. -# -# Replace the following placeholders with relevant values: -# : a valid user account email address -# : Next Key Rotation time in format -# 2014-10-02T15:01:23.045123456Z - -imports: - - path: templates/kms/kms.py - name: kms.py - -resources: - - name: test-kms - type: kms.py - properties: - keyRingName: my-keyring-1 - region: global - keys: - - cryptoKeyName: my-crypto-key - nextRotationTime: \ No newline at end of file diff --git a/dm/templates/kms/examples/kms_signkey.yaml b/dm/templates/kms/examples/kms_signkey.yaml deleted file mode 100644 index 41b8d30b117..00000000000 --- a/dm/templates/kms/examples/kms_signkey.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Example of the Google Cloud KMS template usage. -# -# In this example, a KMS KeyRing is created with a cryptographic signing key -# The key uses the RSA_SIGN_PKCS1_2048_SHA256 algorithm. - -imports: - - path: templates/kms/kms.py - name: kms.py - -resources: - - name: test-kms - type: kms.py - properties: - keyRingName: my-keyring-2 - region: us-east1 - keys: - - cryptoKeyName: my-sign-key - cryptoKeyPurpose: ASYMMETRIC_SIGN - versionTemplate: - protectionLevel: SOFTWARE - algorithm: RSA_SIGN_PKCS1_2048_SHA256 diff --git a/dm/templates/kms/kms.py b/dm/templates/kms/kms.py deleted file mode 100644 index 29da0cb2ccb..00000000000 --- a/dm/templates/kms/kms.py +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" Creates a Cloud KMS KeyRing and cryptographic key resources. """ - - -def generate_config(context): - """ - Entry point for the deployment resources - """ - - resources = [] - properties = context.properties - project_id = properties.get('project', context.env['project']) - parent = 'projects/{}/locations/{}'.format( - project_id, - properties.get('region') - ) - keyring_name = properties.get('keyRingName', context.env['name']) - keyring_id = '{}/keyRings/{}'.format(parent, keyring_name) - # https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings - provider = 'gcp-types/cloudkms-v1:projects.locations.keyRings' - # keyring resource - keyring = { - 'name': context.env['name'], - 'type': provider, - 'properties': { - 'parent': parent, - 'keyRingId': keyring_name - } - } - resources.append(keyring) - - # cryptographic key resources - for key in properties.get('keys', []): - key_name = key['cryptoKeyName'].lower() - key_resource = '{}-{}'.format(context.env['name'], key_name) - crypto_key = { - 'name': key_resource, - 'type': provider + '.cryptoKeys', - 'properties': - { - 'parent': keyring_id, - 'cryptoKeyId': key_name, - 'purpose': key.get('cryptoKeyPurpose'), - 'labels': key.get('labels', - {}) - }, - 'metadata': { - 'dependsOn': [context.env['name']] - } - } - - # crypto key optional properties - for prop in ['versionTemplate', 'nextRotationTime', 'rotationPeriod']: - if prop in key: - crypto_key['properties'][prop] = key.get(prop) - resources.append(crypto_key) - - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'keyRing', - 'value': '$(ref.{}.name)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/kms/kms.py.schema b/dm/templates/kms/kms.py.schema deleted file mode 100644 index c7185ea3a99..00000000000 --- a/dm/templates/kms/kms.py.schema +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Google Cloud KMS KeyRing and Keys - version: 1.1.0 - author: Sourced Group Inc. - description: | - Creates a Cloud KMS KeyRing and cryptographic keys. - - For more information on this resource: - https://cloud.google.com/kms/docs/reference/rest. - - APIs endpoints used by this template: - - gcp-types/cloudkms-v1:projects.locations.keyRings => - https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings - - gcp-types/cloudkms-v1:cloudkms.projects.locations => - https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings - -additionalProperties: false - -required: - - keyRingName - -properties: - keyRingName: - type: string - pattern: ^[a-zA-Z0-9_-]{1,63} - description: | - The name for the KeyRing. Must be unique within a location. - project: - type: string - description: | - The project ID of the project containing the keyring. - region: - type: string - default: global - description: The KeyRing location. - keys: - type: array - uniqueItems: True - items: - type: object - additionalProperties: false - description: The CryptoKey object. - required: - - cryptoKeyName - properties: - cryptoKeyName: - type: string - pattern: ^[a-zA-Z0-9_-]{1,63} - description: | - The name for the CryptoKey. Must be unique within a KeyRing. - cryptoKeyPurpose: - type: string - default: ENCRYPT_DECRYPT - description: | - The immutable purpose of the CryptoKey. Describes the - cryptographic capabilities of the CryptoKey. - enum: - - CRYPTO_KEY_PURPOSE_UNSPECIFIED - - ENCRYPT_DECRYPT - - ASYMMETRIC_SIGN - - ASYMMETRIC_DECRYPT - nextRotationTime: - type: string - description: | - The time when the Key Management Service will automatically - create a new version of the CryptoKey and mark the new version - as primary. Keys with the ENCRYPT_DECRYPT purpose support - automatic rotation. For all other keys, this field must be left - blank. The timestamp is in the RFC3339 UTC "Zulu" format, - accurate to nanoseconds; e.g., "2014-10-02T15:01:23.045123456Z". - rotationPeriod: - type: string - description: | - nextRotationTime will be advanced by this period when the service - automatically rotates a key. Must be at least one day. - If rotationPeriod is set, nextRotationTime must also be set. - Keys with purpose ENCRYPT_DECRYPT support automatic rotation. - For other keys, this field must be omitted. A duration in seconds - with up to nine fractional digits, terminated by 's'. Example '3.5s' - versionTemplate: - type: object - additionalProperties: false - description: | - The template that controls properties of new CryptoKeyVersion - instances created by either cryptoKeyVersions.create or - auto-rotation. - properties: - protectionLevel: - type: string - default: SOFTWARE - description: | - The level of protection to use when creating a CryptoKeyVersion - based on the template. - enum: - - PROTECTION_LEVEL_UNSPECIFIED - - SOFTWARE - - HSM - algorithm: - type: string - default: GOOGLE_SYMMETRIC_ENCRYPTION - description: | - The CryptoKeyVersion algorithm, defines the parameters - to be used for each cryptographic operation. - enum: - - CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED - - GOOGLE_SYMMETRIC_ENCRYPTION - - RSA_SIGN_PSS_2048_SHA256 - - RSA_SIGN_PSS_3072_SHA256 - - RSA_SIGN_PSS_4096_SHA256 - - RSA_SIGN_PSS_4096_SHA512 - - RSA_SIGN_PKCS1_2048_SHA256 - - RSA_SIGN_PKCS1_3072_SHA256 - - RSA_SIGN_PKCS1_4096_SHA256 - - RSA_SIGN_PKCS1_4096_SHA512 - - RSA_DECRYPT_OAEP_2048_SHA256 - - RSA_DECRYPT_OAEP_3072_SHA256 - - RSA_DECRYPT_OAEP_4096_SHA256 - - RSA_DECRYPT_OAEP_4096_SHA512 - - EC_SIGN_P256_SHA256 - - EC_SIGN_P384_SHA384 - labels: - type: object - description: | - Labels with user-defined metadata. For more info, see - https://cloud.google.com/kms/docs/labeling-keys. - -outputs: - keyRing: - type: string - description: Path to the KeyRing resource. - -documentation: - - templates/kms/README.md - -examples: - - templates/kms/examples/kms.yaml - - templates/kms/examples/kms_signkey.yaml diff --git a/dm/templates/kms/tests/integration/kms.bats b/dm/templates/kms/tests/integration/kms.bats deleted file mode 100644 index 48a7961e677..00000000000 --- a/dm/templates/kms/tests/integration/kms.bats +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # test specific variables - export KEYRING_NAME="test-keyring-${RAND}" - export REGION="global" - export KEY_NAME="test-key-${RAND}" - export SA_NAME="test-kms-${RAND}" - export SA_FQDN="${SA_NAME}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" - export ROLE="roles/cloudkms.admin" - export KEY_PURPOSE="ENCRYPT_DECRYPT" - # export NEXT_ROTATION_TIME=$(date -d '2 months' '+%Y-%m-%dT%H:%M:%S.%NZ') -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - # Create service accounts to test IAM bindings. - gcloud iam service-accounts create "${SA_NAME}" \ - --display-name "Test KMS Service Account" - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - # Delete service account after tests had been completed. - gcloud --quiet iam service-accounts delete "${SA_FQDN}" - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -sleep 5 - -@test "Verifying the KeyRing ${KEYRING_NAME} was created " { - run gcloud kms keyrings list --location ${REGION} \ - --format="value(name.scope(keyRings))" \ - --filter="${KEYRING_NAME}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${KEYRING_NAME}" ]] -} - -@test "KEY ${KEY_NAME} is created in KeyRing ${KEYRING_NAME} " { - run gcloud kms keys list --location ${REGION} --keyring="${KEYRING_NAME}" \ - --format="value(name.scope(cryptoKeys))" \ - --filter="${KEY_NAME}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${KEY_NAME}" ]] -} - -@test "CryptoKey's PURPOSE is set to ${KEY_PURPOSE} " { - run gcloud kms keys describe ${KEY_NAME} --location ${REGION} \ - --keyring="${KEYRING_NAME}" \ - --format="value(purpose)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${KEY_PURPOSE}" ]] -} - -@test "protectionLevel on key ${KEY_NAME} = SOFTWARE " { - run gcloud kms keys describe ${KEY_NAME} --location ${REGION} \ - --keyring="${KEYRING_NAME}" \ - --format="value(versionTemplate.protectionLevel)" - [[ "$status" -eq 0 ]] - [[ "$output" -eq "SOFTWARE" ]] -} - -@test "Enc algorithm on key ${KEY_NAME} = GOOGLE_SYMMETRIC_ENCRYPTION" { - run gcloud kms keys describe ${KEY_NAME} --location ${REGION} \ - --keyring="${KEYRING_NAME}" \ - --format="value(versionTemplate.algorithm)" - [[ "$status" -eq 0 ]] - [[ "$output" -eq "GOOGLE_SYMMETRIC_ENCRYPTION" ]] -} - -@test "Verify whether ${SA_NAME} has role ${ROLE} " { - run gcloud kms keys get-iam-policy ${KEY_NAME} --location ${REGION} \ - --keyring="${KEYRING_NAME}" \ - --format="value(bindings.role)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${ROLE}" ]] -} - -@test "Verify if ${SA_NAME} has access to ${KEY_NAME} " { - run gcloud kms keys get-iam-policy ${KEY_NAME} --location ${REGION} \ - --keyring="${KEYRING_NAME}" \ - --format="value(bindings.members[0])" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${SA_FQDN}" ]] -} - -########### NOTE ################## -# There is no Delete Deployment step because KeyRings, Keys cannot be deleted. -################################## diff --git a/dm/templates/kms/tests/integration/kms.yaml b/dm/templates/kms/tests/integration/kms.yaml deleted file mode 100644 index 1d5d2b46de5..00000000000 --- a/dm/templates/kms/tests/integration/kms.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Test of the Google Cloud KMS KeyRing template. - -imports: - - path: templates/kms/kms.py - name: kms.py - -resources: - - name: test-kms - type: kms.py - properties: - keyRingName: ${KEYRING_NAME} - region: ${REGION} - keys: - - cryptoKeyName: ${KEY_NAME} - cryptoKeyPurpose: ${KEY_PURPOSE} \ No newline at end of file diff --git a/dm/templates/logsink/README.md b/dm/templates/logsink/README.md deleted file mode 100644 index b475e34e765..00000000000 --- a/dm/templates/logsink/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# Logsink - -This template creates a logsink (logging sink). The logsink destination can -exist prior to creating the logsink or can be created by the logsink template. -If the resources are created by the logsink, the logsink uniqueWriter service -account will be granted the appropriate permissions to the destination -resource. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create one of the following: - - [GCS bucket](https://cloud.google.com/storage/docs/json_api/v1/buckets) - - [PubSub topic](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics) - - [BigQuery dataset](https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets) -- Grant the [logging.configWriter or logging.admin](https://cloud.google.com/logging/docs/access-control) - IAM role to the project service account -- Grant the [`pubsub.admin`](https://cloud.google.com/pubsub/docs/access-control) - IAM role to the project service account if creating a pubsub logging sink - destination -- Grant the [`storage.admin`](https://cloud.google.com/storage/docs/access-control/iam-roles) - IAM role to the project service account if creating a bucket logging sink - destination -- Grant the [`bigquery.admin`](https://cloud.google.com/bigquery/docs/access-control) - IAM role to the project service account if creating bq logging sink - destination - -#### If you are going to create bucket, pubsub or BigQuery destinations in current project: - -- Grant the [resourcemanager.projectIamAdmin or owner](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the project to the *DM Service Account* to grant roles within the project -- Grant the [roles/resourcemanager.folderIamAdmin owner](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the folder to the *DM Service Account* to grant roles within the folder -- Grant the [roles/iam.securityAdmin or owner](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the organization to the *DM Service Account* to grant roles within the organization and all nested resources -- Grant the [logging.configWriter or logging.admin](https://cloud.google.com/logging/docs/access-control) IAM role on the project to the *DM Service Account* to grant roles within the project - -## If you specify destination project and are going to create bucket, pubsub or BigQuery destinations: - -- Grant the [resourcemanager.projectIamAdmin or owner](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the project to the *DM Service Account* to grant roles within the project -- Grant the [roles/resourcemanager.folderIamAdmin owner](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the folder to the *DM Service Account* to grant roles within the folder -- Grant the [roles/iam.securityAdmin or owner](https://cloud.google.com/iam/docs/understanding-roles) IAM role on the organization to the *DM Service Account* to grant roles within the organization and all nested resources -- Grant the [logging.configWriter or logging.admin](https://cloud.google.com/logging/docs/access-control) IAM role on the project to the *DM Service Account* to grant roles within the project - IAM role to the project service account -- Grant the [`pubsub.admin`](https://cloud.google.com/pubsub/docs/access-control) - IAM role to the project service account if creating a pubsub logging sink - destination -- Grant the [`storage.admin`](https://cloud.google.com/storage/docs/access-control/iam-roles) - IAM role to the project service account if creating a bucket logging sink - destination -- Grant the [`bigquery.admin`](https://cloud.google.com/bigquery/docs/access-control) - IAM role to the project service account if creating bq logging sink - destination - -## Deployment - -### Resources - -- [logging.v2.sink](https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.sinks) -- [pubsub.v1.topic](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics) -- [storage.v1.bucket](https://cloud.google.com/storage/docs/creating-buckets) -- [bigquery.v2.dataset](https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets) - -### Properties - -See `properties` section in the schema file(s): - -- [Logsink](logsink.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this - case, [examples/logsink.yaml](examples/logsink.yaml): - -```shell - cp templates/logsink/examples/logsink.yaml my_logsink.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_logsink.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_logsink.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Organization logging entries exported to PubSub](examples/org_logsink_pubsub_destination.yaml) -- [Billing account logging entries exported to Storage](examples/billingaccount_logsink_bucket_destination.yaml) -- [Folder logging entries exported to BigQuery](examples/folder_logsink_bq_destination.yaml) -- [Project logging entries exported to Storage](examples/project_logsink_bucket_destination.yaml) diff --git a/dm/templates/logsink/examples/billingaccount_logsink_bucket_destination.yaml b/dm/templates/logsink/examples/billingaccount_logsink_bucket_destination.yaml deleted file mode 100644 index faa23b66a91..00000000000 --- a/dm/templates/logsink/examples/billingaccount_logsink_bucket_destination.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# Example of a billing account logsink with a bucket destination template -# usage. -# -# In this example, two billing account log sinks are created. One with a -# bucket destination name, another that also creates the bucket. -# -# Replace the following with appropirate values -# : The billing account to create the logsink for. -# : The name of a GCS bucket that exists. -# : The name of the GCS bucket to create. -# : A valid user account to give permissions -# to the bucket. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - # Billing account sink with a bucket destination - - name: test-billing-logsink-bucket - type: logsink.py - properties: - billingAccountId: - destinationName: - destinationType: storage - uniqueWriterIdentity: true - - # Billing account sink with a bucket destination that is created - - name: test-billing-logsink-create-bucket - type: logsink.py - properties: - billingAccountId: - destinationName: - destinationType: storage - uniqueWriterIdentity: true - storageProperties: - location: us-east1 - bindings: - - role: roles/storage.objectViewer - members: - - user: diff --git a/dm/templates/logsink/examples/folder_logsink_bq_destination.yaml b/dm/templates/logsink/examples/folder_logsink_bq_destination.yaml deleted file mode 100644 index 5878d876641..00000000000 --- a/dm/templates/logsink/examples/folder_logsink_bq_destination.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Example of a folder logsink with a BigQuery dataset destination template -# usage. -# -# In this example, a folder log sink is created with a BigQuery dataset -# destination name. -# -# Replace the following with appropirate values -# : The folder ID to create the losink for. -# : The name of a BigQuery dataset that exists. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - # Folder sink with a BigQuery dataset destination. - - name: test-folder-logsink-bq - type: logsink.py - properties: - folderId: - destinationName: - destinationType: bigquery - uniqueWriterIdentity: true diff --git a/dm/templates/logsink/examples/logsink_new_bq_destination_in_external_project.yaml b/dm/templates/logsink/examples/logsink_new_bq_destination_in_external_project.yaml deleted file mode 100644 index a125bcbc3fc..00000000000 --- a/dm/templates/logsink/examples/logsink_new_bq_destination_in_external_project.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Example of a project logsink with a big query destination template usage, where BigQuery dataset will be created in another project. -# -# In this example, single log sink project is created with a BigQuery -# destination name and destination project -# -# Replace the following with appropirate values -# : The project id to create the logsink for. -# : The project id to create target BigQuery dataset for. -# : The name of a BigQuery dataset that does not exist. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - - name: test-logsink-bq - type: logsink.py - properties: - projectId: - destinationName: - destinationType: bigquery - uniqueWriterIdentity: true - destinationProject: - bqProperties: - location: US diff --git a/dm/templates/logsink/examples/logsink_new_bucket_destination_in_external_project.yaml b/dm/templates/logsink/examples/logsink_new_bucket_destination_in_external_project.yaml deleted file mode 100644 index 859147cfbfb..00000000000 --- a/dm/templates/logsink/examples/logsink_new_bucket_destination_in_external_project.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Example of a project logsink with a bucket destination template usage, where bucket will be created in another project. -# -# In this example, single log sink project is created with a bucket -# destination name and destination project -# -# Replace the following with appropirate values -# : The project id to create the logsink for. -# : The project id to create the target bucket for. -# : The name of a GCS bucket that does not exist. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - - name: log-sink - type: logsink.py - properties: - projectId: - destinationName: - destinationType: storage - destinationProject: - uniqueWriterIdentity: true - storageProperties: - location: us-east1 diff --git a/dm/templates/logsink/examples/logsink_new_pubsub_destination_in_external_project.yaml b/dm/templates/logsink/examples/logsink_new_pubsub_destination_in_external_project.yaml deleted file mode 100644 index b14e8c066e7..00000000000 --- a/dm/templates/logsink/examples/logsink_new_pubsub_destination_in_external_project.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Example of a project logsink with a pubsub destination template usage. -# -# In this example, single log sink project is created with a pubsub -# destination name and target project destination name -# -# Replace the following with appropirate values -# : The project id to create the logsink for. -# : The project id to create the target pubsub topic for. -# : The name of a pubsub topic that does not exists. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - - name: test-org-logsink-create-pubsub - type: logsink.py - properties: - projectId: - destinationName: - destinationType: pubsub - uniqueWriterIdentity: true - destinationProject: - pubsubProperties: - topic: diff --git a/dm/templates/logsink/examples/org_logsink_pubsub_destination.yaml b/dm/templates/logsink/examples/org_logsink_pubsub_destination.yaml deleted file mode 100644 index b5980248579..00000000000 --- a/dm/templates/logsink/examples/org_logsink_pubsub_destination.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Example of a organization logsink with a pubsub destination template usage. -# -# In this example, two organization log sinks are created. One with a pubsub -# destination name, another that also creates the pubsub. -# -# Replace the following with appropirate values -# : The organization ID to create the logsink for. -# : The name of a pubsub topic that exists. -# : The pubsub topic name. -# : A pubsub topic name. -# : A valid user account to give permissions -# to the pubsub topic. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - # Organization sink with a PubSub topic destination - - name: test-org-logsink-pubsub - type: logsink.py - properties: - orgId: - # When using a PubSub topic, the value must be the topic ID. The ID must - # contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). - # The maximum length is 1,024 characters. - destinationName: - destinationType: pubsub - uniqueWriterIdentity: true - - # Organization sink with a pubsub destination that is created. - - name: test-org-logsink-create-pubsub - type: logsink.py - properties: - orgId: - # When using a PubSub topic, the value must be the topic ID. The ID must - # contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). - # The maximum length is 1,024 characters. - destinationName: - destinationType: pubsub - uniqueWriterIdentity: true - # Properties for the pubsub destination to be created. - # Refer to templates/pubsub/pubsub.py.schema for supported properties. - pubsubProperties: - topic: - accessControl: - - role: roles/pubsub.admin - members: - - user: diff --git a/dm/templates/logsink/examples/project_logsink_bucket_destination.yaml b/dm/templates/logsink/examples/project_logsink_bucket_destination.yaml deleted file mode 100644 index 05f96127c26..00000000000 --- a/dm/templates/logsink/examples/project_logsink_bucket_destination.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Example of a project logsink with a bucket destination template usage. -# -# In this example, two project log sinks are created. One with a bucket -# destination name, another that also creates the bucket. -# -# Replace the following with appropirate values -# : The project id to create the logsink for. -# : The name of a GCS bucket that exists. -# : The name of the GCS bucket to create. -# : A valid user account to give permissions -# to the bucket. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - # Project sink with a bucket destination - - name: test-project-logsink-bucket - type: logsink.py - properties: - projectId: - destinationName: - destinationType: storage - uniqueWriterIdentity: true - - # Project sink with a bucket destination that is created - - name: test-project-logsink-create-bucket - type: logsink.py - properties: - projectId: - destinationName: - destinationType: storage - uniqueWriterIdentity: true - storageProperties: - location: us-east1 - bindings: - - role: roles/storage.objectViewer - members: - - user: diff --git a/dm/templates/logsink/logsink.py b/dm/templates/logsink/logsink.py deleted file mode 100644 index a2f31718f4d..00000000000 --- a/dm/templates/logsink/logsink.py +++ /dev/null @@ -1,243 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a logsink (logging sink). """ - - -def create_pubsub(context, logsink_name): - """ Create the pubsub destination. """ - - properties = context.properties - project_id = properties.get('destinationProject', properties.get('project', context.env['project'])) - - dest_properties = [] - if 'pubsubProperties' in context.properties: - dest_prop = context.properties['pubsubProperties'] - dest_prop['name'] = context.properties['destinationName'] - dest_prop['project'] = project_id - access_control = dest_prop.get('accessControl', []) - access_control.append( - { - 'role': 'roles/pubsub.admin', - 'members': ['$(ref.' + logsink_name + '.writerIdentity)'] - } - ) - - dest_prop['accessControl'] = access_control - dest_properties = [ - { - 'name': '{}-pubsub'.format(context.env['name']), - 'type': 'pubsub.py', - 'properties': dest_prop - }, - { - 'name': '{}-iam-member-pub-sub-policy'.format(context.env['name']), - 'type': 'iam_member.py', - 'properties': - { - 'projectId': project_id, - 'dependsOn': [logsink_name], - 'roles': [{ - 'role': 'roles/pubsub.admin', - 'members': ['$(ref.{}.writerIdentity)'.format(logsink_name)] - }] - } - } - ] - - return dest_properties - - -def create_bq_dataset(context, logsink_name): - """ Create the BQ dataset destination. """ - - properties = context.properties - project_id = properties.get('destinationProject', properties.get('project', context.env['project'])) - - dest_properties = [] - if 'bqProperties' in context.properties: - dest_prop = context.properties['bqProperties'] - dest_prop['name'] = context.properties['destinationName'] - dest_prop['project'] = project_id - - ## NOTE: There is a issue where BQ does not accept the uniqueWriter - ## returned by the logsink to be used in the userByEmail property. - ## Until that is resolved, this property is not supported. - # access = dest_prop.get('access', []) - # access.append( - # { - # 'role': 'roles/bigquery.admin', - # 'userByEmail': '$(ref.' + logsink_name + '.writerIdentity)' - # } - # ) - # - # dest_prop['access'] = access - - dest_properties = [ - { - 'name': '{}-bigquery-dataset'.format(context.env['name']), - 'type': 'bigquery_dataset.py', - 'properties': dest_prop - }, - { - 'name': '{}-iam-member-bigquery-policy'.format(context.env['name']), - 'type': 'iam_member.py', - 'properties': - { - 'projectId': project_id, - 'dependsOn': [logsink_name], - 'roles': [{ - 'role': 'roles/bigquery.admin', - 'members': ['$(ref.{}.writerIdentity)'.format(logsink_name)] - }] - } - } - ] - - return dest_properties - - -def create_storage(context, logsink_name): - """ Create the bucket destination. """ - - properties = context.properties - project_id = properties.get('destinationProject', properties.get('project', context.env['project'])) - - dest_properties = [] - if 'storageProperties' in context.properties: - bucket_name = context.properties['destinationName'] - dest_prop = context.properties['storageProperties'] - dest_prop['name'] = bucket_name - dest_prop['project'] = project_id - bindings = dest_prop.get('bindings', []) - bindings.append({ - 'role': 'roles/storage.admin', - 'members': ['$(ref.{}.writerIdentity)'.format(logsink_name)] - }) - - # Do not set any IAM during the creation of the bucket since - # we are going to set it afterwards - if 'bindings' in dest_prop: - del dest_prop['bindings'] - - dest_properties = [ - { - # Create the GCS Bucket - 'name': bucket_name, - 'type': 'gcs_bucket.py', - 'properties': dest_prop - }, - { - # Give the logsink writerIdentity permissions to the bucket - 'name': '{}-iam-member-bucket-policy'.format(bucket_name), - 'type': 'iam_member.py', - 'properties': - { - 'bucket': bucket_name, - 'dependsOn': [logsink_name], - 'roles': bindings - } - } - ] - - return dest_properties - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - properties = { - 'name': name, - 'uniqueWriterIdentity': context.properties['uniqueWriterIdentity'], - 'sink': name, - } - - if 'orgId' in context.properties: - source_id = str(context.properties.get('orgId')) - source_type = 'organizations' - properties['organization'] = str(source_id) - elif 'billingAccountId' in context.properties: - source_id = context.properties.get('billingAccountId') - source_type = 'billingAccounts' - del properties['sink'] - elif 'folderId' in context.properties: - source_id = str(context.properties.get('folderId')) - source_type = 'folders' - properties['folder'] = str(source_id) - elif 'projectId' in context.properties: - source_id = context.properties.get('projectId') - source_type = 'projects' - - properties['parent'] = '{}/{}'.format(source_type, source_id) - - dest_properties = [] - if context.properties['destinationType'] == 'pubsub': - dest_properties = create_pubsub(context, name) - destination = 'pubsub.googleapis.com/projects/{}/topics/{}'.format( - project_id, - context.properties['destinationName'] - ) - elif context.properties['destinationType'] == 'storage': - dest_properties = create_storage(context, name) - destination = 'storage.googleapis.com/{}'.format( - context.properties['destinationName'] - ) - elif context.properties['destinationType'] == 'bigquery': - dest_properties = create_bq_dataset(context, name) - destination = 'bigquery.googleapis.com/projects/{}/datasets/{}'.format( - project_id, - context.properties['destinationName'] - ) - - properties['destination'] = destination - - sink_filter = context.properties.get('filter') - if sink_filter: - properties['filter'] = sink_filter - - # https://cloud.google.com/logging/docs/reference/v2/rest/v2/folders.sinks - # https://cloud.google.com/logging/docs/reference/v2/rest/v2/billingAccounts.sinks - # https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.sinks - # https://cloud.google.com/logging/docs/reference/v2/rest/v2/organizations.sinks - base_type = 'gcp-types/logging-v2:' - resource = { - 'name': context.env['name'], - 'type': base_type + source_type + '.sinks', - 'properties': properties - } - resources = [resource] - - if dest_properties: - resources.extend(dest_properties) - if context.properties['destinationType'] == 'storage': - # GCS Bucket needs to be created first before the sink whereas - # pub/sub and BQ do not. This might change in the future. - resource['metadata'] = { - 'dependsOn': [dest_properties[0]['name']] - } - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'writerIdentity', - 'value': '$(ref.{}.writerIdentity)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/logsink/logsink.py.schema b/dm/templates/logsink/logsink.py.schema deleted file mode 100644 index 7f49ffb5c3e..00000000000 --- a/dm/templates/logsink/logsink.py.schema +++ /dev/null @@ -1,196 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Logging Sink - author: Sourced Group Inc. - version: 1.1.0 - description: | - Creates a logging sink to export entries to a desired destination. - - For more information on this resource: - - https://cloud.google.com/logging/docs/reference/v2/rest/ - - APIs endpoints used by this template: - - gcp-types/storage-v1:storage.buckets.setIamPolicy => - https://cloud.google.com/storage/docs/json_api/v1/buckets/setIamPolicy - - gcp-types/logging-v2:folders.sinks => - https://cloud.google.com/logging/docs/reference/v2/rest/v2/folders.sinks - - gcp-types/logging-v2:billingAccounts.sinks => - https://cloud.google.com/logging/docs/reference/v2/rest/v2/billingAccounts.sinks - - gcp-types/logging-v2:projects.sinks => - https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.sinks - - gcp-types/logging-v2:organizations.sinks => - https://cloud.google.com/logging/docs/reference/v2/rest/v2/organizations.sinks - -imports: - - path: ../pubsub/pubsub.py - name: pubsub.py - - path: ../bigquery/bigquery_dataset.py - name: bigquery_dataset.py - - path: ../gcs_bucket/gcs_bucket.py - name: gcs_bucket.py - - path: ../iam_member/iam_member.py - name: iam_member.py - -additionalProperties: false - -required: - - destinationType - - destinationName - -oneOf: - - required: - - projectId - - required: - - orgId - - required: - - billingAccountId - - required: - - folderId - -properties: - name: - type: string - description: | - Name of the sink. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - destinationName: - type: string - description: | - An identifier of the destination resource, such as: a name for a Bucket, - a topic ID for a PubSub, or a dataset ID for a BigQuery. The IDs must - contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). - The maximum ID length is 1,024 characters. - destinationType: - type: string - description: The type of the destination resource. - enum: - - pubsub - - storage - - bigquery - uniqueWriterIdentity: - type: boolean - description: | - Determines the kind of the IAM identity returned as writerIdentity for the - new sink. If "true", the sink is owned by a non-project resource such - as an organization. In this case, the writerIdentity value is a unique - service account used only for exports from the new sink. - default: true - filter: - type: string - description: | - An advanced log filter that limits the export to those log entries that: - (a) are in the resource that owns the sink; and - (b) matches the filter condition(s). - destinationProject: - type: string - description: | - Bucket project name. - pubsubProperties: - type: object - description: | - Pubsub properties as defined in the `templates/pubsub/pubsub.py.schema`. - Example: - - name: test-logsink-project-pubsub - type: logsink.py - properties: - destinationName: test-logsink-project-pubsub-dest - destinationType: pubsub - projectId: 1234567890 - uniqueWriterIdentity: true - pubsubProperties: - topic: test-logsink-project-pubsub-topic-dest - accessControl: - - role: roles/pubsub.admin - members: - - user:my-email@email.com - storageProperties: - type: object - description: | - Bucket properties as defined in the - `templates/gcs_bucket/gcs_bucket.py.schema`. - Example: - - name: test-logsink-project-storage-create - type: logsink.py - properties: - destinationName: test-logsink-project-storage-dest - destinationType: storage - projectId: 1234567890 - uniqueWriterIdentity: true - storageProperties: - location: us-east1 - bindings: - - role: roles/storage.objectViewer - members: - - user:my-email@email.com - bqProperties: - type: object - description: | - NOTE: There is a issue where BQ does not accept the uniqueWriter - returned by the logsink to be used in the userByEmail property. - Until that is resolved, this property is not supported. - BigQuery dataset properties as defined in the - `templates/bigquery/bigquery_dataset.py.schema`. - Example: - - name: test-logsink-project-bq-create - type: logsink.py - properties: - # BQ names use underscores - destinationName: test_logsink_project_bq_dest - destinationType: bigquery - projectId: 1234567890 - uniqueWriterIdentity: true - bqProperties: - location: US - access: - - role: OWNER - userByEmail: my-email@email.com - projectId: - type: - - string - - number - description: | - Project ID to add sink to - orgId: - type: - - string - - number - description: | - Org ID to add sink to - billingAccountId: - type: - - string - - number - description: | - Billing account ID to add sink to - folderId: - type: - - string - - number - description: | - Folder ID to add sink to - -documentation: - - templates/logsink/README.md - -examples: - - templates/logsink/examples/org_logsink_pubsub_destination.yaml - - templates/logsink/examples/billingaccount_logsink_bucket_destination.yaml - - templates/logsink/examples/folder_logsink_bq_destination.yaml - - templates/logsink/examples/project_logsink_bucket_destination.yaml diff --git a/dm/templates/logsink/tests/integration/logsink.bats b/dm/templates/logsink/tests/integration/logsink.bats deleted file mode 100644 index 0a4c1bc5f4b..00000000000 --- a/dm/templates/logsink/tests/integration/logsink.bats +++ /dev/null @@ -1,333 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function get_test_folder_id() { - # Get the test folder ID and make it available - TEST_ORG_FOLDER_NAME=$(gcloud alpha resource-manager folders list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" | \ - grep "test-org-folder-${RAND}") - - export TEST_ORG_FOLDER_NAME=`echo ${TEST_ORG_FOLDER_NAME} | cut -d ' ' -f 3` -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud alpha resource-manager folders create \ - --display-name="test-org-folder-${RAND}" \ - --organization="${CLOUD_FOUNDATION_ORGANIZATION_ID}" - get_test_folder_id - create_config - gcloud pubsub topics create test-${RAND} - gsutil mb -l us-east1 gs://test-bucket-${RAND}/ - bq mk test_dataset_${RAND} - fi - - # Per-test setup as per documentation. - get_test_folder_id -} - -function teardown() { - # Global teardown; this is executed once per test file - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - get_test_folder_id - gcloud alpha resource-manager folders delete "${TEST_ORG_FOLDER_NAME}" - gsutil rm -r gs://test-bucket-${RAND}/ - gcloud pubsub topics delete test-topic-${RAND} - bq rm -rf test_dataset_${RAND} - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown as per documentation. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] -} - -@test "Verifying project sinks were created each with the requested destination in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-logsink-project-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-project-pubsub-${RAND}" ]] - [[ "$output" =~ "test-logsink-project-storage-${RAND}" ]] -} - -@test "Verifying organization sinks were created each with a different as the destination in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-logsink-org-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-org-pubsub-${RAND}" ]] - [[ "$output" =~ "test-logsink-org-storage-${RAND}" ]] -} - -@test "Verifying billing account sinks were created each with a different as the destination in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list --billing-account \ - "${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-logsink-billing-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-billing-pubsub-${RAND}" ]] - [[ "$output" =~ "test-logsink-billing-storage-${RAND}" ]] -} - -@test "Verifying folder sinks were created each with a different as the destination in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list --folder "${TEST_ORG_FOLDER_NAME}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-logsink-folder-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-folder-pubsub-${RAND}" ]] - [[ "$output" =~ "test-logsink-folder-storage-${RAND}" ]] -} - -@test "Verifying project sinks and the destination resource were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - #[[ "$output" =~ "test-logsink-project-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-project-pubsub-create-${RAND}" ]] - [[ "$output" =~ "test-logsink-project-storage-create-${RAND}" ]] - - run gcloud beta pubsub topics get-iam-policy \ - "test-logsink-project-pubsub-dest-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "user:${CLOUD_FOUNDATION_USER_ACCOUNT}" ]] - [[ "$output" =~ "role: roles/pubsub.admin" ]] - - run gsutil iam get "gs://test-logsink-project-storage-dest-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "roles/storage.admin" ]] - [[ "$output" =~ "user:${CLOUD_FOUNDATION_USER_ACCOUNT}" ]] - [[ "$output" =~ "roles/storage.objectViewer" ]] - - #TODO: Add test for BQ -} - -@test "Verifying org sinks and the destination resource were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - #[[ "$output" =~ "test-logsink-org-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-org-pubsub-create-${RAND}" ]] - [[ "$output" =~ "test-logsink-org-storage-create-${RAND}" ]] - - run gcloud beta pubsub topics get-iam-policy "test-logsink-org-pubsub-dest-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "user:${CLOUD_FOUNDATION_USER_ACCOUNT}" ]] - [[ "$output" =~ "role: roles/pubsub.admin" ]] - - run gsutil iam get "gs://test-logsink-org-storage-dest-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "roles/storage.admin" ]] - [[ "$output" =~ "user:${CLOUD_FOUNDATION_USER_ACCOUNT}" ]] - [[ "$output" =~ "roles/storage.objectViewer" ]] - - #TODO: Add test for BQ -} - -@test "Verifying billing sinks and the destination resource were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list \ - --billing-account "${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - #[[ "$output" =~ "test-logsink-billing-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-billing-pubsub-create-${RAND}" ]] - [[ "$output" =~ "test-logsink-billing-storage-create-${RAND}" ]] - - run gcloud beta pubsub topics get-iam-policy \ - "test-logsink-billing-pubsub-dest-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "user:${CLOUD_FOUNDATION_USER_ACCOUNT}" ]] - [[ "$output" =~ "role: roles/pubsub.admin" ]] - - run gsutil iam get "gs://test-logsink-billing-storage-dest-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "roles/storage.admin" ]] - [[ "$output" =~ "user:${CLOUD_FOUNDATION_USER_ACCOUNT}" ]] - [[ "$output" =~ "roles/storage.objectViewer" ]] - - #TODO: Add test for BQ -} - -@test "Verifying folder sinks and the destination resource were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list --folder "${TEST_ORG_FOLDER_NAME}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - #[[ "$output" =~ "test-logsink-folder-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-folder-pubsub-create-${RAND}" ]] - [[ "$output" =~ "test-logsink-folder-storage-create-${RAND}" ]] - - run gcloud beta pubsub topics get-iam-policy \ - "test-logsink-folder-pubsub-dest-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "user:${CLOUD_FOUNDATION_USER_ACCOUNT}" ]] - [[ "$output" =~ "role: roles/pubsub.admin" ]] - - run gsutil iam get "gs://test-logsink-folder-storage-dest-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "roles/storage.admin" ]] - [[ "$output" =~ "user:${CLOUD_FOUNDATION_USER_ACCOUNT}" ]] - [[ "$output" =~ "roles/storage.objectViewer" ]] - - #TODO: Add test for BQ -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - - run gcloud logging sinks list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - - echo "Status: $status" - echo "Output: $output" - - #[[ ! "$output" =~ "test-logsink-project-bq-${RAND}" ]] - [[ ! "$output" =~ "test-logsink-project-pubsub-${RAND}" ]] - [[ ! "$output" =~ "test-logsink-project-storage-${RAND}" ]] - - run gcloud logging sinks list \ - --organization "${CLOUD_FOUNDATION_ORGANIZATION_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - #[[ ! "$output" =~ "test-logsink-org-bq-${RAND}" ]] - [[ ! "$output" =~ "test-logsink-org-pubsub-${RAND}" ]] - [[ ! "$output" =~ "test-logsink-org-storage-${RAND}" ]] - - # TODO: Bug where billing accounts are not deleted during deployment delete. - # Re-enable this check once its fixed. - #run gcloud logging sinks list --billing-account \ - # "${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID}" - #[[ "$status" -eq 0 ]] - #[[ ! "$output" =~ "test-logsink-billing-bq-${RAND}" ]] - #[[ ! "$output" =~ "test-logsink-billing-pubsub-${RAND}" ]] - #[[ ! "$output" =~ "test-logsink-billing-storage-${RAND}" ]] - - run gcloud logging sinks list --folder "${TEST_ORG_FOLDER_NAME}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - #[[ ! "$output" =~ "test-logsink-folder-bq-${RAND}" ]] - [[ ! "$output" =~ "test-logsink-folder-pubsub-${RAND}" ]] - [[ ! "$output" =~ "test-logsink-folder-storage-${RAND}" ]] -} diff --git a/dm/templates/logsink/tests/integration/logsink.yaml b/dm/templates/logsink/tests/integration/logsink.yaml deleted file mode 100644 index 94125b33c22..00000000000 --- a/dm/templates/logsink/tests/integration/logsink.yaml +++ /dev/null @@ -1,311 +0,0 @@ -# Test of the logsink template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - # Project sink with bucket destination - - name: test-logsink-project-storage-${RAND} - type: logsink.py - properties: - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - destinationName: test-bucket-${RAND} - destinationType: storage - uniqueWriterIdentity: true - - # Project sink with pubsub destination - - name: test-logsink-project-pubsub-${RAND} - type: logsink.py - properties: - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - destinationName: test-topic-${RAND} - destinationType: pubsub - uniqueWriterIdentity: true - - # Project sink with bq destination - - name: test-logsink-project-bq-${RAND} - type: logsink.py - properties: - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - destinationName: test_dataset_${RAND} - destinationType: bigquery - uniqueWriterIdentity: true - - # Organization sink with bucket destination - - name: test-logsink-org-storage-${RAND} - type: logsink.py - properties: - orgId: ${CLOUD_FOUNDATION_ORGANIZATION_ID} - destinationName: test-bucket-${RAND} - destinationType: storage - uniqueWriterIdentity: true - - # Organization sink with pubsub destination - - name: test-logsink-org-pubsub-${RAND} - type: logsink.py - properties: - orgId: ${CLOUD_FOUNDATION_ORGANIZATION_ID} - destinationName: test-topic-${RAND} - destinationType: pubsub - uniqueWriterIdentity: true - - # Organization sink with bq destination - - name: test-logsink-org-bq-${RAND} - type: logsink.py - properties: - orgId: ${CLOUD_FOUNDATION_ORGANIZATION_ID} - destinationName: test_dataset_${RAND} - destinationType: bigquery - uniqueWriterIdentity: true - - # Billing Account sink with bucket destination - - name: test-logsink-billing-storage-${RAND} - type: logsink.py - properties: - billingAccountId: ${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID} - destinationName: test-bucket-${RAND} - destinationType: storage - uniqueWriterIdentity: true - - # Billing Account sink with pubsub destination - - name: test-logsink-billing-pubsub-${RAND} - type: logsink.py - properties: - billingAccountId: ${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID} - destinationName: test-topic-${RAND} - destinationType: pubsub - uniqueWriterIdentity: true - - # Billing Account sink with bq destination - - name: test-logsink-billing-bq-${RAND} - type: logsink.py - properties: - billingAccountId: ${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID} - destinationName: test_dataset_${RAND} - destinationType: bigquery - uniqueWriterIdentity: true - - # Folder sink with bucket destination - - name: test-logsink-folder-storage-${RAND} - type: logsink.py - properties: - folderId: ${TEST_ORG_FOLDER_NAME} - destinationName: test-bucket-${RAND} - destinationType: storage - uniqueWriterIdentity: true - - # Folder sink with pubsub destination - - name: test-logsink-folder-pubsub-${RAND} - type: logsink.py - properties: - folderId: ${TEST_ORG_FOLDER_NAME} - destinationName: test-topic-${RAND} - destinationType: pubsub - uniqueWriterIdentity: true - - # Folder sink with bq destination - - name: test-logsink-folder-bq-${RAND} - type: logsink.py - properties: - folderId: ${TEST_ORG_FOLDER_NAME} - destinationName: test_dataset_${RAND} - destinationType: bigquery - uniqueWriterIdentity: true - - # Project sink creating pubsub destination - - name: test-logsink-project-pubsub-create-${RAND} - type: logsink.py - properties: - destinationName: test-logsink-project-pubsub-dest-${RAND} - destinationType: pubsub - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - uniqueWriterIdentity: true - pubsubProperties: - topic: test-logsink-project-pubsub-topic-dest-${RAND} - accessControl: - - role: roles/pubsub.admin - members: - - user:${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Project sink creating bucket destination - - name: test-logsink-project-storage-create-${RAND} - type: logsink.py - properties: - destinationName: test-logsink-project-storage-dest-${RAND} - destinationType: storage - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - uniqueWriterIdentity: true - storageProperties: - location: us-east1 - bindings: - - role: roles/storage.objectViewer - members: - - user:${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Project sink creating a bq destination - # NOTE: There is a issue where BQ does not accept the uniqueWriter - # returned by the logsink to be used in the userByEmail property. - # Until that is resolved, this property is not supported. - # - name: test-logsink-project-bq-create-${RAND} - # type: logsink.py - # properties: - # # BQ names use underscores - # destinationName: test_logsink_project_bq_dest_${RAND} - # destinationType: bigquery - # projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - # uniqueWriterIdentity: true - # bqProperties: - # location: US - # access: - # - role: OWNER - # userByEmail: ${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Organization sink creating pubsub destination - - name: test-logsink-org-pubsub-create-${RAND} - type: logsink.py - properties: - destinationName: test-logsink-org-pubsub-dest-${RAND} - destinationType: pubsub - orgId: ${CLOUD_FOUNDATION_ORGANIZATION_ID} - uniqueWriterIdentity: true - pubsubProperties: - topic: test-logsink-org-pubsub-topic-dest-${RAND} - accessControl: - - role: roles/pubsub.admin - members: - - user:${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Organization sink creating bucket destination - - name: test-logsink-org-storage-create-${RAND} - type: logsink.py - properties: - destinationName: test-logsink-org-storage-dest-${RAND} - destinationType: storage - orgId: ${CLOUD_FOUNDATION_ORGANIZATION_ID} - uniqueWriterIdentity: true - storageProperties: - location: us-east1 - bindings: - - role: roles/storage.objectViewer - members: - - user:${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Organization sink creating bq destination - # NOTE: There is a issue where BQ does not accept the uniqueWriter - # returned by the logsink to be used in the userByEmail property. - # Until that is resolved, this property is not supported. - # - name: test-logsink-org-bq-create-${RAND} - # type: logsink.py - # properties: - # # BQ names use underscores - # destinationName: test_logsink_org_bq_dest_${RAND} - # destinationType: bigquery - # orgId: ${CLOUD_FOUNDATION_ORGANIZATION_ID} - # uniqueWriterIdentity: true - # bqProperties: - # location: US - # access: - # - role: OWNER - # userByEmail: ${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Billing Account sink creating pubsub destination - - name: test-logsink-billing-pubsub-create-${RAND} - type: logsink.py - properties: - destinationName: test-logsink-billing-pubsub-dest-${RAND} - destinationType: pubsub - billingAccountId: ${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID} - uniqueWriterIdentity: true - pubsubProperties: - topic: test-logsink-billing-pubsub-topic-dest-${RAND} - accessControl: - - role: roles/pubsub.admin - members: - - user:${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Billing Account sink creating bucket destination - - name: test-logsink-billing-storage-create-${RAND} - type: logsink.py - properties: - destinationName: test-logsink-billing-storage-dest-${RAND} - destinationType: storage - billingAccountId: ${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID} - uniqueWriterIdentity: true - storageProperties: - location: us-east1 - bindings: - - role: roles/storage.objectViewer - members: - - user:${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Billing Account sink creating bq destination - # NOTE: There is a issue where BQ does not accept the uniqueWriter - # returned by the logsink to be used in the userByEmail property. - # Until that is resolved, this property is not supported. - # - name: test-logsink-billing-bq-create-${RAND} - # type: logsink.py - # properties: - # # BQ names use underscores - # destinationName: test_logsink_billing_bq_dest_${RAND} - # destinationType: bigquery - # billingAccountId: ${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID} - # uniqueWriterIdentity: true - # bqProperties: - # name: test_logsink_billing_bq_dest_${RAND} - # location: US - # access: - # - role: OWNER - # userByEmail: ${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Folder sink creating pubsub destination - - name: test-logsink-folder-pubsub-create-${RAND} - type: logsink.py - properties: - destinationName: test-logsink-folder-pubsub-dest-${RAND} - destinationType: pubsub - folderId: ${TEST_ORG_FOLDER_NAME} - uniqueWriterIdentity: true - pubsubProperties: - topic: test-logsink-folder-pubsub-topic-dest-${RAND} - accessControl: - - role: roles/pubsub.admin - members: - - user:${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Folder sink creating bucket destination - - name: test-logsink-folder-storage-create-${RAND} - type: logsink.py - properties: - destinationName: test-logsink-folder-storage-dest-${RAND} - destinationType: storage - folderId: ${TEST_ORG_FOLDER_NAME} - uniqueWriterIdentity: true - storageProperties: - location: us-east1 - bindings: - - role: roles/storage.objectViewer - members: - - user:${CLOUD_FOUNDATION_USER_ACCOUNT} - - # Folder sink creating bq destination - # NOTE: There is a issue where BQ does not accept the uniqueWriter - # returned by the logsink to be used in the userByEmail property. - # Until that is resolved, this property is not supported. - # - name: test-logsink-folder-bq-create-${RAND} - # type: logsink.py - # properties: - # # BQ names use underscores - # destinationName: test_logsink_folder_bq_dest_${RAND} - # destinationType: bigquery - # folderId: ${TEST_ORG_FOLDER_NAME} - # uniqueWriterIdentity: true - # bqProperties: - # location: US - # access: - # - role: OWNER - # userByEmail: ${CLOUD_FOUNDATION_USER_ACCOUNT} diff --git a/dm/templates/logsink/tests/integration/logsink_external_project.bats b/dm/templates/logsink/tests/integration/logsink_external_project.bats deleted file mode 100644 index 94d35e72a54..00000000000 --- a/dm/templates/logsink/tests/integration/logsink_external_project.bats +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] -} - -@test "Verifying project sinks were created each with the requested destination in deployment ${DEPLOYMENT_NAME}" { - run gcloud logging sinks list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-logsink-project-bq-${RAND}" ]] - [[ "$output" =~ "test-logsink-project-pubsub-${RAND}" ]] - [[ "$output" =~ "test-logsink-project-storage-${RAND}" ]] - - run gcloud beta pubsub topics get-iam-policy \ - "projects/${CLOUD_FOUNDATION_PROJECT_ID}/topics/test-topic-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "role: roles/pubsub.admin" ]] - - run gsutil iam get "gs://test-bucket-${RAND}" --project "${TARGET_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "@gcp-sa-logging.iam.gserviceaccount.com" ]] - [[ "$output" =~ "roles/storage.objectAdmin" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - - run gcloud logging sinks list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - - echo "Status: $status" - echo "Output: $output" - - [[ ! "$output" =~ "test-logsink-project-bq-${RAND}" ]] - [[ ! "$output" =~ "test-logsink-project-pubsub-${RAND}" ]] - [[ ! "$output" =~ "test-logsink-project-storage-${RAND}" ]] -} diff --git a/dm/templates/logsink/tests/integration/logsink_external_project.yaml b/dm/templates/logsink/tests/integration/logsink_external_project.yaml deleted file mode 100644 index 8958ddaa2d7..00000000000 --- a/dm/templates/logsink/tests/integration/logsink_external_project.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# Test of the logsink template for target in external project. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/logsink/logsink.py - name: logsink.py - -resources: - # Project sink with bucket destination - - name: test-logsink-project-storage-${RAND} - type: logsink.py - properties: - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - destinationName: test-bucket-${RAND} - destinationType: storage - uniqueWriterIdentity: true - destinationProject: ${TARGET_PROJECT_ID} - storageProperties: - location: us-east1 - - # Project sink with pubsub destination - - name: test-logsink-project-pubsub-${RAND} - type: logsink.py - properties: - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - destinationName: test-topic-${RAND} - destinationType: pubsub - uniqueWriterIdentity: true - destinationProject: ${TARGET_PROJECT_ID} - pubsubProperties: - topic: test-topic-${RAND} - - # Project sink with bq destination - - name: test-logsink-project-bq-${RAND} - type: logsink.py - properties: - projectId: ${CLOUD_FOUNDATION_PROJECT_ID} - destinationName: test_dataset_${RAND} - destinationType: bigquery - uniqueWriterIdentity: true - destinationProject: ${TARGET_PROJECT_ID} - bqProperties: - location: US diff --git a/dm/templates/managed_instance_group/README.md b/dm/templates/managed_instance_group/README.md deleted file mode 100644 index 3729acfb85b..00000000000 --- a/dm/templates/managed_instance_group/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# Managed Instance Group - -This template creates a managed instance group. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, setup billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) IAM role to the [Deployment Manager service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) - -## Deployment - -### Resources - -- [compute.v1.instance](https://cloud.google.com/compute/docs/reference/latest/instances) -- [compute.v1.autoscaler](https://cloud.google.com/compute/docs/reference/latest/autoscalers) -- [compute.v1.regionalAutoscaler](https://cloud.google.com/compute/docs/reference/latest/regionAutoscalers) -- [compute.v1.instanceTemplate](https://cloud.google.com/compute/docs/reference/latest/instanceTemplates) -- [compute.v1.instanceGroupManager](https://cloud.google.com/compute/docs/reference/latest/instanceGroupManagers) -- [compute.v1.regionalInstanceGroupManager](https://cloud.google.com/compute/docs/reference/latest/regionInstanceGroupManagers) - -### Properties - -See the `properties` section in the schema file(s): - -- [Managed Instance Group](managed_instance_group.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment, in this - case [examples/managed\_instance\_group.yaml](examples/managed_instance_group.yaml) - -```shell - cp templates/managed_instance_group/examples/managed_instance_group.yaml \ - my_managed_instance_group.yaml -``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - -```shell - vim my_managed_instance_group.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment as described below, replacing - \ with your with your own deployment name - -```shell - gcloud deployment-manager deployments create \ - --config my_managed_instance_group.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Managed Instance Group](examples/managed_instance_group.yaml) -- [Managed Instance Group with Health Check](examples/managed_instance_group_healthcheck.yaml) diff --git a/dm/templates/managed_instance_group/examples/managed_instance_group.yaml b/dm/templates/managed_instance_group/examples/managed_instance_group.yaml deleted file mode 100644 index 637890ff9b0..00000000000 --- a/dm/templates/managed_instance_group/examples/managed_instance_group.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Example of the Managed Instance Group template usage. -# -# In this example, a simple regional managed instance group is created. - -imports: - - path: templates/managed_instance_group/managed_instance_group.py - name: managed_instance_group.py - -resources: - - name: managed-instance-group-example - type: managed_instance_group.py - properties: - region: us-central1 - autoscaler: - cpuUtilization: - utilizationTarget: 0.7 - minSize: 1 - targetSize: 3 - instanceTemplate: - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - networks: - - network: default - accessConfigs: - - type: ONE_TO_ONE_NAT - machineType: f1-micro diff --git a/dm/templates/managed_instance_group/examples/managed_instance_group_healthcheck.yaml b/dm/templates/managed_instance_group/examples/managed_instance_group_healthcheck.yaml deleted file mode 100644 index 5d515c534ab..00000000000 --- a/dm/templates/managed_instance_group/examples/managed_instance_group_healthcheck.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Example of the Managed Instance Group template usage. -# -# In this example, a regional managed instance group with attached health check -# and auto-scaling is created. -# -# Pre-requisites steps to run this example: -# Step 1. Create a health check -# Step 2. Replace the placeholders as indicated below -# : an URI of existing health check -# typically in the following format: -# "projects/$PROJECT_ID/global/httpHealthChecks/health-check-name" - -imports: - - path: templates/managed_instance_group/managed_instance_group.py - name: managed_instance_group.py - -resources: - - name: managed-instance-group-example-with-hc - type: managed_instance_group.py - properties: - region: us-central1 - autoscaler: - cpuUtilization: - utilizationTarget: 0.7 - targetSize: 3 - instanceTemplate: - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - networks: - - network: default - accessConfigs: - - type: ONE_TO_ONE_NAT - machineType: f1-micro \ No newline at end of file diff --git a/dm/templates/managed_instance_group/managed_instance_group.py b/dm/templates/managed_instance_group/managed_instance_group.py deleted file mode 100644 index 3a7c26dcec5..00000000000 --- a/dm/templates/managed_instance_group/managed_instance_group.py +++ /dev/null @@ -1,214 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a managed instance group. """ - -import copy - -REGIONAL_LOCAL_IGM_TYPES = { - # https://cloud.google.com/compute/docs/reference/rest/v1/regionInstanceGroupManagers - True: 'gcp-types/compute-v1:regionInstanceGroupManagers', - # https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers - False: 'gcp-types/compute-v1:instanceGroupManagers' -} - - -def set_optional_property(receiver, source, property_name): - """ If set, copies the given property value from one object to another. """ - - if property_name in source: - receiver[property_name] = source[property_name] - - -def create_instance_template(properties, name_prefix): - """ Creates an instance template resource. """ - - name = name_prefix + '-it' - - instance_template = { - 'type': 'instance_template.py', - 'name': name, - 'properties': properties - } - - self_link = '$(ref.{}.selfLink)'.format(name) - - return self_link, [instance_template], [ - { - 'name': 'instanceTemplateSelfLink', - 'value': self_link - } - ] - - -def get_instance_template(properties, name_prefix): - """ If an instance template exists, returns a link to that template. - If no instance template exists: - (a) creates that template; - (b) returns a link to it; and - (c) returns resources/outputs that were required to create the template. - """ - - if 'url' in properties: - return properties['url'], [], [] - - return create_instance_template(properties, name_prefix) - - -def create_autoscaler(context, autoscaler_spec, igm): - """ Creates an autoscaler. """ - - igm_properties = igm['properties'] - - autoscaler_properties = autoscaler_spec.copy() - name = '{}-autoscaler'.format(context.env['name']) - - autoscaler_properties['project'] = context.properties.get('project', context.env['project']) - - autoscaler_resource = { - 'type': 'autoscaler.py', - 'name': name, - 'properties': autoscaler_properties - } - - # Use IGM's targetSize as maxNumReplicas - autoscaler_properties['maxNumReplicas'] = igm_properties['targetSize'] - - # And rename minSize to minNumReplicas - min_size = autoscaler_properties.pop('minSize') - autoscaler_properties['minNumReplicas'] = min_size - - autoscaler_properties['target'] = '$(ref.{}.selfLink)'.format(context.env['name']) - - for location in ['zone', 'region']: - set_optional_property(autoscaler_properties, igm_properties, location) - - autoscaler_output = { - 'name': 'autoscalerSelfLink', - 'value': '$(ref.{}.selfLink)'.format(name) - } - - return [autoscaler_resource], [autoscaler_output] - - -def get_autoscaler(context, igm): - """ Creates an autoscaler, if necessary. """ - - autoscaler_spec = context.properties.get('autoscaler') - if autoscaler_spec: - return create_autoscaler(context, autoscaler_spec, igm) - - return [], [] - - -def get_igm_outputs(name, igm_properties): - """ Creates Instance Group Manaher (IGM) resource outputs. """ - - location_prop = 'region' if 'region' in igm_properties else 'zone' - - return [ - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(name) - }, - { - 'name': 'name', - 'value': name - }, - { - 'name': 'instanceGroupSelfLink', - 'value': '$(ref.{}.instanceGroup)'.format(name) - }, - { - 'name': location_prop, - 'value': igm_properties[location_prop] - } - ] - - -def dereference_name(reference): - """ Extracts resource name from Deployment Manager reference string. """ - - # Extracting a name from `$(ref.NAME.property)` value results a string - # which starts with `yaml%`. Remove the prefix. - return reference.split('.')[1].replace('yaml%', '') - - -def is_reference(candidate): - """ Checks if provided value is Deployment Manager reference string. """ - - return candidate.strip().startswith('$(ref.') - -def get_igm(context, template_link): - """ Creates the IGM resource with its outputs. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - is_regional = 'region' in properties - - igm_properties = { - 'name': name, - 'project': project_id, - 'instanceTemplate': template_link, - } - - igm = { - 'name': context.env['name'], - 'type': REGIONAL_LOCAL_IGM_TYPES[is_regional], - 'properties': igm_properties - } - - known_properties = [ - 'description', - 'distributionPolicy', - 'namedPorts', - 'zone', - 'region', - 'targetSize', - 'baseInstanceName' - ] - - for prop in known_properties: - set_optional_property(igm_properties, properties, prop) - - outputs = get_igm_outputs(context.env['name'], igm_properties) - - return [igm], outputs - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - - # Instance template - properties['instanceTemplate']['project'] = project_id - template = get_instance_template(properties['instanceTemplate'], context.env['name']) - template_link, template_resources, template_outputs = template - - # Instance group manager - igm_resources, igm_outputs = get_igm(context, template_link) - igm = igm_resources[0] - - # Autoscaler - autoscaler = get_autoscaler(context, igm) - autoscaler_resources, autoscaler_outputs = autoscaler - - return { - 'resources': - igm_resources + template_resources + autoscaler_resources, - 'outputs': - igm_outputs + template_outputs + autoscaler_outputs - } diff --git a/dm/templates/managed_instance_group/managed_instance_group.py.schema b/dm/templates/managed_instance_group/managed_instance_group.py.schema deleted file mode 100644 index 1a7bff654c0..00000000000 --- a/dm/templates/managed_instance_group/managed_instance_group.py.schema +++ /dev/null @@ -1,1006 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Managed Instance Group - author: Sourced Group Inc. - version: 1.1.0 - description: | - Creates a managed instance group with or without an autoscaler. - - For more information on this resource: - https://cloud.google.com/compute/docs/instance-groups/ - - APIs endpoints used by this template: - - gcp-types/compute-v1:instanceGroupManagers => - https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers - - gcp-types/compute-v1:regionInstanceGroupManagers => - https://cloud.google.com/compute/docs/reference/rest/v1/regionInstanceGroupManagers - - gcp-types/compute-beta:compute.regionInstanceGroupManagers.setAutoHealingPolicies => - https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/setAutoHealingPolicies - - gcp-types/compute-beta:compute.instanceGroupManagers.setAutoHealingPolicies => - https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/setAutoHealingPolicies - -imports: - - path: ../autoscaler/autoscaler.py - name: autoscaler.py - - path: ../instance_template/instance_template.py - name: instance_template.py - -additionalProperties: false - -required: - - targetSize - - instanceTemplate - -oneOf: - - required: - - zone - - required: - - region - -definitions: - hasExternalIp: - type: boolean - default: true - description: | - Defines wether the instance will use an external IP from a shared - ephemeral IP address pool. If this is set to false, the instance - will not have an external IP. - natIP: - type: string - description: | - An external IP address associated with this instance. Specify an unused - static external IP address available to the project or leave this field - undefined to use an IP from a shared ephemeral IP address pool. If you - specify a static external IP address, it must live in the same region - as the zone of the instance. - If hasExternalIp is false this field is ignored. - network: - type: string - description: | - URL of the network resource for this instance. When creating an instance, if neither the network - nor the subnetwork is specified, the default network global/networks/default is used; - if the network is not specified but the subnetwork is specified, the network is inferred. - - If you specify this property, you can specify the network as a full or partial URL. - For example, the following are all valid URLs: - - - https://www.googleapis.com/compute/v1/projects/project/global/networks/network - - projects/project/global/networks/network - - global/networks/default - Authorization requires one or more of the following Google IAM permissions on the specified resource network: - - - compute.networks.use - - compute.networks.useExternalIp - subnetwork: - type: string - description: | - The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, - do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. - If the network is in custom subnet mode, specifying the subnetwork is required. - If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - - - https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork - - regions/region/subnetworks/subnetwork - Authorization requires one or more of the following Google IAM permissions on the specified resource subnetwork: - - - compute.subnetworks.use - - compute.subnetworks.useExternalIp - networkIP: - type: string - description: | - An IPv4 internal IP address to assign to the instance for this network interface. - If not specified by the user, an unused internal IP is assigned by the system. - -properties: - name: - type: string - description: The name of the managed instance group. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the instance. - description: - type: string - description: An optional description of the resource. - zone: - type: string - description: | - The name of the zone where the managed instance group is located - (for zonal resources). - region: - type: string - description: | - The name of the region where the managed instance group is located - (for regional resources). - baseInstanceName: - type: string - description: The base instance name to use for instances in the group. - targetSize: - type: integer - description: | - The target number of running instances for the managed instance group. - If used with an autoscaler, this is the maximum number of instances in - the group. - namedPorts: - type: array - uniqueItems: true - description: | - A list of the named ports configured for the instance groups - complementary to the Instance Group Manager. - items: - type: object - additionalProperties: false - required: - - name - - port - properties: - name: - type: string - description: The port name. - port: - type: integer - minimum: 1 - maximum: 65535 - description: The port number. - instanceTemplate: - type: object - description: | - The instance template specified for this managed instance group. - The template is used to create all new instances in the group. - additionalProperties: false - oneOf: - - allOf: - - required: - - url - - not: - required: - - diskImage - - not: - required: - - network - - not: - required: - - networks - - not: - required: - - natIP - - not: - required: - - subnetwork - - not: - required: - - networkIP - - allOf: - - required: - - diskImage - - oneOf: - - allOf: - - required: - - networks - - properties: - networks: - minItems: 1 - - not: - required: - - network - - not: - required: - - natIP - - not: - required: - - subnetwork - - not: - required: - - networkIP - - allOf: - - required: - - network - - not: - required: - - networks - properties: - url: - type: string - description: The URL of the existing instance template resource. - name: - type: string - description: The name of the instance template resource. - templateDescription: - type: string - description: The resource description (optional). - instanceDescription: - type: string - description: | - The description of the instance resource the instance template - will create (optional). - network: - $ref: '#/definitions/network' - subnetwork: - $ref: '#/definitions/subnetwork' - networkIP: - $ref: '#/definitions/networkIP' - hasExternalIp: - $ref: '#/definitions/hasExternalIp' - natIP: - $ref: '#/definitions/natIP' - networks: - type: array - uniqueItems: true - description: | - Networks the instance will be connected to; - e.g., 'my-custom-network' or 'default'. - items: - type: object - additionalProperties: false - required: - - network - properties: - network: - $ref: '#/definitions/network' - subnetwork: - $ref: '#/definitions/subnetwork' - networkIP: - $ref: '#/definitions/networkIP' - aliasIpRanges: - type: array - uniqueItems: true - description: | - An array of alias IP ranges for this network interface. You can only specify this - field for network interfaces in VPC networks. - items: - type: object - additionalProperties: false - properties: - ipCidrRange: - type: string - description: | - The IP alias ranges to allocate for this interface. This IP CIDR range must belong - to the specified subnetwork and cannot contain IP addresses reserved by system or - used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), - a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24). - subnetworkRangeName: - type: string - description: | - The name of a subnetwork secondary IP range from which to allocate an IP alias range. - If not specified, the primary range of the subnetwork is used. - accessConfigs: - type: array - uniqueItems: true - description: | - An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, - is supported. If there are no accessConfigs specified, then this instance will have no external internet access. - items: - type: object - additionalProperties: false - properties: - type: - type: string - description: | - The type of configuration. The default and only option is ONE_TO_ONE_NAT. - enum: - - ONE_TO_ONE_NAT - name: - type: string - description: | - The name of this access configuration. The default and recommended name is External NAT, - but you can use any arbitrary string, such as My external IP or Network Access. - setPublicPtr: - type: boolean - description: | - Specifies whether a public DNS 'PTR' record should be created to map the external - IP address of the instance to a DNS domain name. - publicPtrDomainName: - type: string - description: | - The DNS domain name for the public PTR record. You can set this field only - if the setPublicPtr field is enabled. - networkTier: - type: string - description: | - This signifies the networking tier used for configuring this access configuration - and can only take the following values: PREMIUM, STANDARD. - - If an AccessConfig is specified without a valid external IP address, an - ephemeral IP will be created with this networkTier. - - If an AccessConfig with a valid external IP address is specified, it must match - that of the networkTier associated with the Address resource owning that IP. - enum: - - STANDARD - - PREMIUM - natIP: - $ref: '#/definitions/natIP' - disks: - type: array - uniqueItems: true - description: | - Array of disks associated with this instance. Persistent disks must be created before you can assign them. - items: - type: object - additionalProperties: false - oneOf: - - required: - - source - - required: - - initializeParams - - allOf: - - not: - required: - - source - - not: - required: - - initializeParams - properties: - type: - type: string - description: | - Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT. - enum: - - SCRATCH - - PERSISTENT - mode: - type: string - description: | - The mode in which to attach this disk, either READ_WRITE or READ_ONLY. - If not specified, the default is to attach the disk in READ_WRITE mode. - enum: - - READ_WRITE - - READ_ONLY - source: - type: string - description: | - Specifies a valid partial or full URL to an existing Persistent Disk resource. - When creating a new instance, one of initializeParams.sourceImage or - disks.source is required except for local SSD. - - If desired, you can also attach existing non-root persistent disks using this property. - This field is only applicable for persistent disks. - - Note that for InstanceTemplate, specify the disk name, not the URL for the disk. - - Authorization requires one or more of the following Google IAM permissions on the specified resource source: - - compute.disks.use - compute.disks.useReadOnly - deviceName: - type: string - description: | - Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* - tree of a Linux operating system running within the instance. This name can be used to reference - the device for mounting, resizing, and so on, from within the instance. - - If not specified, the server chooses a default device name to apply to this disk, in the - form persistent-disk-x, where x is a number assigned by Google Compute Engine. - This field is only applicable for persistent disks. - boot: - type: boolean - description: | - Indicates that this is a boot disk. The virtual machine will use the first partition - of the disk for its root filesystem. - initializeParams: - type: object - additionalProperties: false - description: | - Specifies the parameters for a new disk that will be created alongside the new instance. - Use initialization parameters to create boot disks or local SSDs attached to the new instance. - - This property is mutually exclusive with the source property; you can only define one or the other, but not both. - properties: - labels: - type: object - description: | - Labels to apply to this disk. These can be later modified by the disks.setLabels method. - This field is only applicable for persistent disks. - - An object containing a list of "key": value pairs. - Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - - Authorization requires the following Google IAM permission on the specified resource labels: - - compute.disks.setLabels - diskName: - type: string - description: | - Specifies the disk name. If not specified, the default is to use the name of the instance. - If the disk with the instance name exists already in the given zone/region, - a new name will be automatically generated. - sourceImage: - type: string - description: | - The source image to create this disk. When creating a new instance, one of - initializeParams.sourceImage or disks.source is required except for local SSD. - - To create a disk with one of the public operating system images, specify the image by its family name. - For example, specify family/debian-9 to use the latest Debian 9 image: - - projects/debian-cloud/global/images/family/debian-9 - - Alternatively, use a specific version of a public operating system image: - - projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD - - To create a disk with a custom image that you created, specify the image name in the following format: - - global/images/my-custom-image - - You can also specify a custom image by its image family, which returns the latest version of the - image in that family. Replace the image name with family/family-name: - - global/images/family/my-image-family - - If the source image is deleted later, this field will not be set. - - Authorization requires the following Google IAM permission on the specified resource sourceImage: - - compute.images.useReadOnly - description: - type: string - description: | - An optional description. Provide this property when creating the disk. - diskSizeGb: - type: number - description: | - Specifies the size of the disk in base-2 GB. - diskType: - type: string - description: | - Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, - specified using the full URL. For example: - - https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard - - Other values include pd-ssd and local-ssd. If you define this field, you can provide either the full - or partial URL. For example, the following are valid values: - - https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType - Note that for InstanceTemplate, this is the name of the disk type, not URL. - enum: - - pd-standard - - pd-ssd - - local-ssd - sourceImageEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source image. Required if the source image is - protected by a customer-supplied encryption key. - - Instance templates do not store customer-supplied encryption keys, so you cannot create disks - for instances in a managed instance group if the source images are encrypted with your own keys. - properties: - rawKey: - type: string - description: | - Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 - to either encrypt or decrypt this resource. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - sourceSnapshot: - type: string - description: | - The source snapshot to create this disk. When creating a new instance, one of - initializeParams.sourceSnapshot or disks.source is required except for local SSD. - - To create a disk with a snapshot that you created, specify the snapshot name in the following format: - - global/snapshots/my-backup - - If the source snapshot is deleted later, this field will not be set. - - Authorization requires the following Google IAM permission on the specified resource sourceSnapshot: - - compute.snapshots.useReadOnly - sourceSnapshotEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source snapshot. - properties: - rawKey: - type: string - description: | - Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 - to either encrypt or decrypt this resource. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - autoDelete: - type: boolean - description: | - Specifies whether the disk will be auto-deleted when the instance is deleted - (but not when the disk is detached from the instance). - interface: - type: string - description: | - Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. - The default is SCSI. Persistent disks must always use SCSI and the request will fail if you - attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. - For performance characteristics of SCSI over NVMe, see Local SSD performance. - enum: - - SCSI - - NVME - guestOsFeatures: - type: array - uniqueItems: true - description: | - A list of features to enable on the guest operating system. Applicable only for bootable images. - Read Enabling guest operating system features to see a list of available options. - items: - type: object - additionalProperties: false - properties: - type: - type: string - description: | - https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features - The ID of a supported feature. Read Enabling guest operating system features - to see a list of available options. - enum: - - MULTI_IP_SUBNET - - SECURE_BOOT - - UEFI_COMPATIBLE - - VIRTIO_SCSI_MULTIQUEUE - - WINDOWS - diskEncryptionKey: - type: object - additionalProperties: false - description: | - The customer-supplied encryption key of the source snapshot. - properties: - rawKey: - type: string - description: | - Encrypts or decrypts a disk using a customer-supplied encryption key. - - If you are creating a new disk, this field encrypts the new disk using an encryption - key that you provide. If you are attaching an existing disk that is already encrypted, - this field decrypts the disk using the customer-supplied encryption key. - - If you encrypt a disk using a customer-supplied key, you must provide the same key again when - you attempt to use this resource at a later time. For example, you must provide the key when - you create a snapshot or an image from the disk or when you attach the disk - to a virtual machine instance. - - If you do not provide an encryption key, then the disk will be encrypted using an automatically - generated key and you do not need to provide a key to use the disk later. - - Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys - to encrypt disks in a managed instance group. - kmsKeyName: - type: string - description: | - The name of the encryption key that is stored in Google Cloud KMS. - scheduling: - type: object - additionalProperties: false - description: | - Sets the scheduling options for this instance. - properties: - onHostMaintenance: - type: string - description: | - Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. - For preemptible instances, the default and only possible behavior is TERMINATE. - For more information, see Setting Instance Scheduling Options. - enum: - - MIGRATE - - TERMINATE - automaticRestart: - type: boolean - description: | - Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine - (not terminated by a user). You can only set the automatic restart option for standard instances. - Preemptible instances cannot be automatically restarted. - - By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine. - preemptible: - type: boolean - description: | - Defines whether the instance is preemptible. This can only be set during instance creation, - it cannot be set or changed after the instance has been created. - nodeAffinities: - type: array - uniqueItems: true - description: | - A set of node affinity and anti-affinity. - items: - type: object - additionalProperties: false - properties: - key: - type: string - description: | - Corresponds to the label key of Node resource. - operator: - type: string - description: | - Defines the operation of node selection. - values: - type: array - uniqueItems: true - description: | - Corresponds to the label values of Node resource. - items: - type: string - minCpuPlatform: - type: string - description: | - Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, - such as minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy Bridge". - enum: - - Intel Sandy Bridge - - Intel Ivy Bridge - - Intel Haswell - - Intel Broadwell - - Intel Skylake - sourceInstance: - type: string - description: | - The source instance used to create the template. You can provide this as a partial or full URL to the resource. - For example, the following are valid values: - - - https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance - - projects/project/zones/zone/instances/instance - - Authorization requires the following Google IAM permission on the specified resource sourceInstance: - - compute.instances.get - sourceInstanceParams: - type: object - additionalProperties: false - description: | - The source instance params to use to create this instance template. - properties: - diskConfigs: - type: array - uniqueItems: true - description: | - Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, - new custom images will be created from each disk. For read-only disks, they will be attached - in read-only mode. Local SSD disks will be created as blank volumes. - items: - type: object - additionalProperties: false - properties: - deviceName: - type: string - description: | - Specifies the device name of the disk to which the configurations apply to. - instantiateFrom: - type: string - description: | - Specifies whether to include the disk and what image to use. Possible values are: - - - source-image: to use the same image that was used to create the source instance's corresponding disk. - Applicable to the boot disk and additional read-write disks. - - source-image-family: to use the same image family that was used to create the source instance's - corresponding disk. Applicable to the boot disk and additional read-write disks. - - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and - additional read-write disks. - - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, - local SSDs, and read-only disks. - enum: - - source-image - - source-image-family - - custom-image - - attach-read-only - autoDelete: - type: boolean - description: | - Specifies whether the disk will be auto-deleted when the instance is deleted - (but not when the disk is detached from the instance). - customImage: - type: string - description: | - The custom source image to be used to restore this disk when instantiating this instance template. - shieldedInstanceConfig: - type: object - additionalProperties: false - properties: - enableSecureBoot: - type: boolean - description: | - Defines whether the instance has Secure Boot enabled. - enableVtpm: - type: boolean - description: | - Defines whether the instance has the vTPM enabled. - enableIntegrityMonitoring: - type: boolean - description: | - Defines whether the instance has integrity monitoring enabled. - guestAccelerators: - type: array - uniqueItems: true - description: | - A list of the type and count of accelerator cards attached to the instance. - items: - type: object - additionalProperties: false - properties: - acceleratorType: - type: string - description: | - Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 - If you are creating an instance template, specify only the accelerator name. - See GPUs on Compute Engine for a full list of accelerator types. - acceleratorCount: - type: integer - description: | - The number of the guest accelerator cards exposed to this instance. - machineType: - type: string - default: n1-standard-1 - description: | - The Compute Instance type; e.g., 'n1-standard-1'. - See https://cloud.google.com/compute/docs/machine-types for details. - canIpForward: - type: boolean - description: | - Defines whether the instance is allowed to send and receive packets - with non-matching destination or source IPs. - diskType: - type: string - default: pd-standard - enum: - - pd-ssd - - pd-standard - - local-ssd - description: Boot disk type. - diskImage: - type: string - description: | - The source image to create the disk. To create the disk with one of - the public operating system images, specify the image by its family - name. - For example, specify family/debian-9 to use the latest Debian 9 - image, projects/debian-cloud/global/images/family/debian-9. - To create a disk with a custom image, specify the image name in the - global/images/my-custom-image format. - See https://cloud.google.com/compute/docs/images for details. - diskSizeGb: - type: integer - minimum: 10 - metadata: - type: object - additionalProperties: false - description: | - Instance metadata. - For example: - metadata: - items: - - key: startup-script - - value: sudo apt-get update - properties: - items: - type: array - uniqueItems: true - description: The metadata key-value pairs. - items: - type: object - additionalProperties: false - properties: - key: - type: string - value: - type: string - serviceAccounts: - type: array - uniqueItems: true - description: | - The list of service accounts, with their specified scopes, authorized - for this instance. Only one service account per VM instance is - supported. - items: - type: object - additionalProperties: false - properties: - email: - type: string - description: The email address of the service account. - scopes: - type: array - uniqueItems: true - description: | - The list of scopes to be made available to the service account. - items: - type: string - description: | - The access scope; - e.g., 'https://www.googleapis.com/auth/compute.readonly'. - See https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam - for details - tags: - type: object - additionalProperties: false - description: | - The list of tags to apply to the instances that are created from the - template. The tags identify valid sources or targets for network - firewalls. - properties: - items: - type: array - uniqueItems: true - description: The array of tags. - items: - type: string - labels: - type: object - description: | - The labels to apply to instances created from the template. - Example: - name: wrench - mass: 1.3kg - count: 3 - distributionPolicy: - type: object - additionalProperties: false - description: | - The policy that specifies the intended distribution of instances in a - regional managed instance group. - properties: - zones: - type: array - uniqueItems: true - description: | - A list of zones where the regional managed instance group creates and - manages instances. - items: - type: object - additionalProperties: false - properties: - zone: - type: string - description: | - The URL of the zone. The zone must exist in the region where - the managed instance group is located. - autoscaler: - type: object - additionalProperties: false - description: | - The configuration of the autosaler - a mechanism that automatically - adjusts the number of instances in a group based on the current load. - anyOf: - - required: - - cpuUtilization - - required: - - loadBalancingUtilization - - required: - - customMetricUtilizations - properties: - minSize: - type: integer - default: 1 - minimum: 0 - description: | - The minimum number of replicas the autoscaler can scale down to. - name: - type: string - description: The resource name. - description: - type: string - description: The resource description. - coolDownPeriodSec: - type: integer - default: 60 - description: | - The number of seconds the autoscaler must wait before it starts - collecting information from a new instance. - cpuUtilization: - type: object - additionalProperties: false - description: | - Defines the CPU utilization policy that allows the autoscaler to - scale based on the average CPU utilization of a managed instance - group. - required: - - utilizationTarget - properties: - utilizationTarget: - type: number - minimum: 0 - maximum: 1 - description: | - The CPU utilization the autoscaler must maintain (as a target - value). - loadBalancingUtilization: - type: object - additionalProperties: false - required: - - utilizationTarget - description: | - Configuration parameters for autoscaling based on the load balancer. - properties: - utilizationTarget: - type: number - minimum: 0 - maximum: 1 - description: The fraction of the back-end capacity utilization. - customMetricUtilizations: - type: array - uniqueItems: true - description: | - Configuration parameters for autoscaling based on a custom metric. - items: - type: object - additionalProperties: false - required: - - metric - - utilizationTarget - properties: - metric: - type: string - description: | - The identifier (type) of the Stackdriver Monitoring metric. - utilizationTarget: - type: number - description: | - The value of the metric the autoscaler must maintain (as a - target). This must be a positive value. - utilizationTargetType: - type: string - default: GAUGE - enum: - - GAUGE - - DELTA_PER_SECOND - - DELTA_PER_MINUTE - description: | - The option that defines how the target utilization value of the - Stackdriver Monitoring metric is expressed. - -outputs: - name: - type: string - description: The name of the managed instance group manager resource. - selfLink: - type: string - description: | - The URL (SelfLink) of the managed instance group manager resource. - instanceGroupSelfLink: - type: string - description: The URL (SelfLink) of the managed instance group resource. - region: - type: string - description: | - The URL of the region where the managed instance group resides - (for regional resources). - zone: - type: string - description: | - The URL of the zone where the managed instance group is located - (for zonal resources). - autoscalerSelfLink: - type: string - description: | - The URL (SelfLink) of the autoscaler resource (if the group is used - with the autoscaler). - instanceTemplateSelfLink: - type: string - description: | - The URL (SelfLink) of the instance template resource (if new instance - template was created for the group). - -documentation: - - templates/managed_instance_group/README.md - -examples: - - templates/managed_instance_group/examples/managed_instance_group.yaml - - templates/managed_instance_group/examples/managed_instance_group_healthcheck.yaml diff --git a/dm/templates/managed_instance_group/tests/integration/managed_instance_group.bats b/dm/templates/managed_instance_group/tests/integration/managed_instance_group.bats deleted file mode 100755 index 9969933b3ab..00000000000 --- a/dm/templates/managed_instance_group/tests/integration/managed_instance_group.bats +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export ZONAL_MIG_NAME="zonal-mig-${RAND}" - export ZONAL_MIG_RES_NAME="mig-${RAND}" - export ZONE="us-central1-c" - export REGION="us-central1" - export AUTOSCALER_NAME="autoscaler-${RAND}" - export COOL_DOWN_PERIOD="70" - export MIN_SIZE="1" - export TARGET_SIZE="2" - export UTILIZATION_TARGET="0.7" - export PORT_NAME="http" - export PORT="80" - export BASE_INSTANCE_NAME="bin-${RAND}" - export INSTANCE_TEMPLATE_NAME="it-${RAND}" - export IT_NETWORK="default" - export IT_BASE_IMAGE="projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts" - export REGIONAL_MIG_NAME="regional-mig-${RAND}" - export HEALTH_CHECK_NAME="test-healthcheck-http-${RAND}" - export SECOND_HEALTH_CHECK_NAME="second-test-healthcheck-http-${RAND}" - export INITIAL_DELAY_SEC="450" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - # Needed for testing resource creation with preexisting (not referenced) - # health check - gcloud compute http-health-checks create "${SECOND_HEALTH_CHECK_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - gcloud compute http-health-checks delete "${SECOND_HEALTH_CHECK_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "$output" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that a zonal intance group was created" { - run gcloud compute instance-groups managed list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "$output" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${ZONAL_MIG_NAME}" ]] - [[ "$output" =~ "${ZONE}" ]] -} - -@test "Verifying regional instance group properties" { - run gcloud compute instance-groups managed list \ - --filter "name=(${REGIONAL_MIG_NAME})" \ - --format "yaml(region)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${REGION}" ]] -} - -@test "Verifying zonal instance group properties" { - run gcloud compute instance-groups managed describe "${ZONAL_MIG_NAME}" \ - --zone "${ZONE}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "baseInstanceName: ${BASE_INSTANCE_NAME}" ]] - [[ "$output" =~ "instanceGroups/${ZONAL_MIG_NAME}" ]] - [[ "$output" =~ "instanceTemplates/${INSTANCE_TEMPLATE_NAME}" ]] - [[ "$output" =~ "name: ${PORT_NAME}" ]] - [[ "$output" =~ "port: ${PORT}" ]] -} - -@test "Verifying autoscaler properties" { - run gcloud compute instance-groups managed describe "${ZONAL_MIG_NAME}" \ - --zone "${ZONE}" --format="yaml(autoscaler)"\ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "cpuUtilization:" ]] - [[ "$output" =~ "utilizationTarget: ${UTILIZATION_TARGET}" ]] - [[ "$output" =~ "coolDownPeriodSec: ${COOL_DOWN_PERIOD}" ]] - [[ "$output" =~ "maxNumReplicas: ${TARGET_SIZE}" ]] - [[ "$output" =~ "minNumReplicas: ${MIN_SIZE}" ]] - [[ "$output" =~ "name: ${AUTOSCALER_NAME}" ]] -} - -@test "Verifying instance template properties" { - run gcloud compute instance-templates describe "${INSTANCE_TEMPLATE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${IT_BASE_IMAGE}" ]] - [[ "$output" =~ "networks/${IT_NETWORK}" ]] -} - -@test "Verifying regional instance group health check properties" { - run gcloud beta compute instance-groups managed describe \ - "${REGIONAL_MIG_NAME}" --region "${REGION}" \ - --format "yaml(autoHealingPolicies)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${HEALTH_CHECK_NAME}" ]] - [[ "$output" =~ "initialDelaySec: ${INITIAL_DELAY_SEC}" ]] -} - -@test "Verifying zonal instance group health check properties" { - run gcloud beta compute instance-groups managed describe \ - "${ZONAL_MIG_NAME}" --zone "${ZONE}" \ - --format "yaml(autoHealingPolicies)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${HEALTH_CHECK_NAME}" ]] - [[ "$output" =~ "initialDelaySec: ${INITIAL_DELAY_SEC}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - diff --git a/dm/templates/managed_instance_group/tests/integration/managed_instance_group.yaml b/dm/templates/managed_instance_group/tests/integration/managed_instance_group.yaml deleted file mode 100644 index c65f83f97b5..00000000000 --- a/dm/templates/managed_instance_group/tests/integration/managed_instance_group.yaml +++ /dev/null @@ -1,44 +0,0 @@ -# Test of the Managed Instance Group template. - -imports: - - path: templates/managed_instance_group/managed_instance_group.py - name: managed_instance_group.py - -resources: - - name: ${ZONAL_MIG_RES_NAME} - type: managed_instance_group.py - properties: - name: ${ZONAL_MIG_NAME} - zone: ${ZONE} - autoscaler: - name: ${AUTOSCALER_NAME} - coolDownPeriodSec: ${COOL_DOWN_PERIOD} - minSize: ${MIN_SIZE} - cpuUtilization: - utilizationTarget: ${UTILIZATION_TARGET} - namedPorts: - - name: ${PORT_NAME} - port: ${PORT} - baseInstanceName: ${BASE_INSTANCE_NAME} - targetSize: ${TARGET_SIZE} - instanceTemplate: - name: ${INSTANCE_TEMPLATE_NAME} - diskImage: ${IT_BASE_IMAGE} - networks: - - network: ${IT_NETWORK} - accessConfigs: - - type: ONE_TO_ONE_NAT - - name: ${REGIONAL_MIG_NAME} - type: managed_instance_group.py - properties: - region: ${REGION} - autoscaler: - cpuUtilization: - utilizationTarget: ${UTILIZATION_TARGET} - targetSize: ${TARGET_SIZE} - instanceTemplate: - url: $(ref.${ZONAL_MIG_RES_NAME}.instanceTemplateSelfLink) - -# Test prerequisites: - - name: ${HEALTH_CHECK_NAME} - type: compute.v1.httpHealthCheck diff --git a/dm/templates/nat_gateway/README.md b/dm/templates/nat_gateway/README.md deleted file mode 100644 index b80c6003f03..00000000000 --- a/dm/templates/nat_gateway/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# HA NAT Gateway - -This template creates a High Availability NAT Gateway based on the number of -regions specified. Each gateway is a managed instance group of one with -auto-healing through healthchecks. The only firewall rule created is for the -instance healthcheck. Any additional traffic you wish to go through the gateway -will require additional firewall rules (for example, TCP/UDP/ICMP, etc.). - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the [Deployment Manager service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) -- Grant the [compute.networkAdmin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the [Deployment Manager service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) -- NOTE: The NAT Gateway integration tests will need additional IAM permissions. The tests will SSH into test instances to verify the NAT functionality. Please refer to [Managing Instance Access Using OS Login](https://cloud.google.com/compute/docs/instances/managing-instance-access#enable_oslogin) and [Connecting through a bastion host](https://cloud.google.com/compute/docs/instances/connecting-advanced#bastion_host) page for additional information. - -## Deployment - -### Resources - -- [compute.v1.addresses](https://cloud.google.com/compute/docs/reference/rest/v1/addresses) -- [compute.v1.instanceTemplate](https://cloud.google.com/compute/docs/reference/latest/instanceTemplates) -- [compute.v1.instanceGroupManagers](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers) -- [compute.v1.firewalls](https://cloud.google.com/compute/docs/reference/rest/v1/firewalls) -- [compute.v1.routes](https://cloud.google.com/compute/docs/reference/rest/v1/routes) -- [compute.v1.healthChecks](https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks) - -### Properties - -See the `properties` section in the schema file(s): - -- [NAT Gateway](nat_gateway.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment, in this - case [examples/nat\_gateway.yaml](examples/nat_gateway.yaml) - -```shell - cp templates/nat_gateway/examples/nat_gateway.yaml \ - my_nat_gateway.yaml -``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - -```shell - vim my_nat_gateway.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment as described below, replacing - \ with your with your own deployment name - -```shell - gcloud deployment-manager deployments create \ - --config my_nat_gateway.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [NAT Gateway](examples/nat_gateway.yaml) diff --git a/dm/templates/nat_gateway/examples/nat_gateway.yaml b/dm/templates/nat_gateway/examples/nat_gateway.yaml deleted file mode 100644 index 7e2f6ab9be3..00000000000 --- a/dm/templates/nat_gateway/examples/nat_gateway.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Example of the HA NAT gateway template usage. -# -# In this example, HA NAT gateways are created for each zone in a region for -# high availability. -# -# Replace the following placeholders with relevant values: -# : A valid VPC network -# : A valid subnetwork - - -imports: - - path: templates/nat_gateway/nat_gateway.py - name: nat-gateway.py - -resources: - - name: nat-gateway - type: nat-gateway.py - properties: - network: - subnetwork: - natIpRange: 10.240.1.0/24 - region: us-east1 - zones: - - us-east1-b - - us-east1-c - - us-east1-d - natGatewayTag: natgw - nattedVmTag: no-ip diff --git a/dm/templates/nat_gateway/nat_gateway.py b/dm/templates/nat_gateway/nat_gateway.py deleted file mode 100644 index 73b09203b68..00000000000 --- a/dm/templates/nat_gateway/nat_gateway.py +++ /dev/null @@ -1,424 +0,0 @@ -# Copyright 2017 Google Inc. All rights reserved. -# -# 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. -""" This template creates an HA NAT gateway. """ - - -SETUP_NATGATEWAY_SH = """#!/bin/bash -echo 1 > /proc/sys/net/ipv4/ip_forward -sysctl -w net.ipv4.ip_forward=1 -echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.conf > /dev/null -iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -apt-get -y install iptables-persistent -cat < /usr/local/sbin/health-check-server.py -#!/usr/bin/python -from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer -import subprocess -PORT_NUMBER = 80 -PING_HOST = "www.google.com" -def connectivityCheck(): - try: - subprocess.check_call(["ping", "-c", "1", PING_HOST]) - return True - except subprocess.CalledProcessError as e: - return False -#This class will handle any incoming request -class myHandler(BaseHTTPRequestHandler): - def do_GET(self): - if self.path == '/health-check': - if connectivityCheck(): - self.send_response(200) - else: - self.send_response(503) - else: - self.send_response(404) -try: - server = HTTPServer(("", PORT_NUMBER), myHandler) - print "Started httpserver on port " , PORT_NUMBER - #Wait forever for incoming http requests - server.serve_forever() -except KeyboardInterrupt: - print "^C received, shutting down the web server" - server.socket.close() -EOF -nohup python /usr/local/sbin/health-check-server.py >/dev/null 2>&1 & -#register a runtime config variable for a waiter to complete -CONFIG_NAME=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/runtime-config -H "Metadata-Flavor: Google") -VARIABLE_NAME=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/runtime-variable -H "Metadata-Flavor: Google") -gcloud beta runtime-config configs variables set $VARIABLE_NAME 1 --config-name $CONFIG_NAME -""" - -def get_network(project_id, properties): - """ Gets a network name. """ - - network_name = properties.get('network') - is_self_link = '/' in network_name or '.' in network_name - - if is_self_link: - network_url = network_name - else: - network_url = 'projects/{}/global/networks/{}'.format(project_id, network_name) - - return network_url - - -def get_subnetwork(project_id, context): - """ Gets a subnetwork name. """ - - subnet_name = context.properties.get('subnetwork') - is_self_link = '/' in subnet_name or '.' in subnet_name - - if is_self_link: - subnet_url = subnet_name - else: - subnet_url = 'projects/{}/regions/{}/subnetworks/{}' - subnet_url = subnet_url.format( - project_id, - context.properties['region'], - subnet_name - ) - - return subnet_url - - -def get_healthcheck(project_id, name): - """ Generate a healthcheck resource. """ - - resource = { - 'name': name, - 'type': 'healthcheck.py', - 'properties': - { - 'healthcheckType': 'HTTP', - 'port': 80, - 'requestPath': '/health-check', - 'healthyThreshold': 1, - 'unhealthyThreshold': 5, - 'checkIntervalSec': 30, - 'project': project_id, - } - } - - return resource - - -def get_firewall(context, project_id, network): - """ Generate a firewall rule for the healthcheck. """ - - # pylint: disable=line-too-long - # See https://cloud.google.com/compute/docs/load-balancing/health-checks#health_check_source_ips_and_firewall_rules. - name = context.env['name'] + '-healthcheck-firewall' - resource = { - 'name': name, - 'type': 'firewall.py', - 'properties': - { - 'project': project_id, - 'networkName': network, - 'rules': - [ - { - 'name': name, - 'allowed': [ - { - 'IPProtocol': 'tcp', - 'ports': ['80'], - } - ], - 'targetTags': [context.properties['natGatewayTag']], - 'description': - 'rule for allowing all health check traffic', - 'sourceRanges': ['130.211.0.0/22', - '35.191.0.0/16'] - } - ] - } - } - - return resource - - -def get_external_internal_ip(project_id, - ip_name, - external_ip_name, - internal_ip_name, - region, - subnet): - - """ Generate an external IP resource. """ - - resource = { - 'name': ip_name, - 'type': 'ip_reservation.py', - 'properties': - { - 'ipAddresses': - [ - { - 'name': external_ip_name, - 'project': project_id, - 'ipType': 'REGIONAL', - 'region': region - }, - { - 'name': internal_ip_name, - 'project': project_id, - 'ipType': 'INTERNAL', - 'region': region, - 'subnetwork': subnet - } - ] - } - } - - return resource - - -def get_instance_template(project_id, - context, - instance_template_name, - external_ip, - internal_ip, - network, - subnet): - - """ Generate an instance template resource. """ - - resource = { - 'name': instance_template_name, - 'type': 'instance_template.py', - 'properties': - { - 'project': project_id, - 'natIP': external_ip, - 'network': network, - 'subnetwork': subnet, - 'networkIP': internal_ip, - 'diskImage': context.properties['imageType'], - 'machineType': context.properties['machineType'], - 'canIpForward': True, - 'diskType': context.properties['diskType'], - 'diskSizeGb': context.properties['diskSizeGb'], - 'tags': { - 'items': [context.properties['natGatewayTag']] - }, - 'metadata': - { - 'items': - [ - { - 'key': 'startup-script', - 'value': SETUP_NATGATEWAY_SH - } - ] - }, - } - } - - return resource - - -def get_route(project_id, context, route_name, internal_ip, network): - """ Generate a route resource. """ - - resource = { - 'name': route_name, - 'type': 'route.py', - 'properties': - { - 'project': project_id, - 'network': network, - 'routes': - [ - { - 'name': route_name + '-ip', - 'routeType': 'ipaddress', - 'nextHopIp': internal_ip, - 'destRange': '0.0.0.0/0', - 'priority': context.properties['routePriority'], - 'tags': [context.properties['nattedVmTag']] - } - ] - } - } - - return resource - - -def get_managed_instance_group(project_id, - name, - healthcheck, - instance_template_name, - base_instance_name, - zone): - """ Generate a managed instance group resource. """ - - resource = { - 'name': name, - # https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers - 'type': 'gcp-types/compute-v1:instanceGroupManagers', - 'properties': - { - 'project': project_id, - 'instanceTemplate': - '$(ref.' + instance_template_name + '.selfLink)', - 'baseInstanceName': base_instance_name, - 'zone': zone, - 'targetSize': 1, - 'autoHealingPolicies': - [ - { - 'healthCheck': - '$(ref.' + healthcheck + '.selfLink)', - 'initialDelaySec': 120 - } - ] - } - } - - return resource - - -def generate_config(context): - """ Generate the deployment configuration. """ - - resources = [] - prefix = context.env['name'] - hc_name = prefix + '-healthcheck' - region = context.properties['region'] - project_id = context.properties.get('project', context.env['project']) - network_name = get_network(project_id, context.properties) - subnet_name = get_subnetwork(project_id, context) - - # Health check to be used by the managed instance groups. - resources.append(get_healthcheck(project_id, hc_name)) - - # Firewall rule that allows the healthcheck to work. - resources.append(get_firewall(context, project_id, context.properties.get('network'))) - - # Outputs: - out = {} - - # Create a NAT gateway for each zone specified in the zones property. - for zone in context.properties['zones']: - - # Reserve an internal/external static IP address. - ip_name = prefix + '-ip-' + zone - external_ip_name = prefix + '-ip-external-' + zone - internal_ip_name = prefix + '-ip-internal-' + zone - resources.append( - get_external_internal_ip( - project_id, - ip_name, - external_ip_name, - internal_ip_name, - region, - subnet_name - ) - ) - - external_ip = '$(ref.{}.addresses.{}.address)'.format( - ip_name, - external_ip_name - ) - - internal_ip = '$(ref.{}.addresses.{}.address)'.format( - ip_name, - internal_ip_name - ) - - # Create a NAT gateway instance template. - instance_template_name = prefix + '-insttempl-' + zone - resources.append( - get_instance_template( - project_id, - context, - instance_template_name, - external_ip, - internal_ip, - network_name, - subnet_name - ) - ) - - # Create an Instance Group Manager for Healthcheck and AutoHealing. - instance_group_manager_name = prefix + '-instgrpmgr-' + zone - base_instance_name = prefix + '-gateway-' + zone - resources.append( - get_managed_instance_group( - project_id, - instance_group_manager_name, - hc_name, - instance_template_name, - base_instance_name, - zone - ) - ) - - # Create a route that will allow to use the NAT gateway VM as a - # next hop. - route_name = prefix + '-route-' + zone - resources.append( - get_route(project_id, - context, - route_name, - internal_ip, - network_name) - ) - - # Set outputs grouped by the MIG name. - out[base_instance_name] = { - 'instanceGroupManagerName': instance_group_manager_name, - 'instanceGroupmanagerSelflink': '$(ref.{}.selfLink)'.format( - instance_group_manager_name - ), - 'externalIP': external_ip, - 'internalIP': internal_ip, - 'instanceTemplateName': instance_template_name, - 'baseInstanceName': base_instance_name, - 'routeName': route_name, - 'zone': zone - } - - outputs = [ - { - 'name': 'natGateways', - 'value': out - }, - { - 'name': 'networkName', - 'value': network_name - }, - { - 'name': 'subnetworkName', - 'value': subnet_name - }, - { - 'name': 'natGatewayTag', - 'value': context.properties['natGatewayTag'] - }, - { - 'name': 'nattedVmTag', - 'value': context.properties['nattedVmTag'] - }, - { - 'name': 'region', - 'value': region - }, - { - 'name': 'healthCheckName', - 'value': hc_name - } - ] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/nat_gateway/nat_gateway.py.schema b/dm/templates/nat_gateway/nat_gateway.py.schema deleted file mode 100644 index 87abe82b469..00000000000 --- a/dm/templates/nat_gateway/nat_gateway.py.schema +++ /dev/null @@ -1,191 +0,0 @@ -# Copyright 2017 Google Inc. All rights reserved. -# -# 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. - -info: - title: Highly Available NAT Gateway - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of an HA NAT gateway. Internal network address - translation (NAT) gateway instances can route traffic from internal-only - virtual machine instances to the Internet. This allows you to use a limited - number of external IP address to send traffic from multiple virtual machine - instances while exposing a small set of NAT gateway virtual machines to the - Internet. - - APIs endpoints used by this template: - - gcp-types/compute-v1:instanceGroupManagers => - https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers - -imports: - - path: ../healthcheck/healthcheck.py - name: healthcheck.py - - path: ../instance_template/instance_template.py - name: instance_template.py - - path: ../ip_reservation/ip_reservation.py - name: ip_reservation.py - - path: ../route/route.py - name: route.py - - path: ../firewall/firewall.py - name: firewall.py - -additionalProperties: false - -required: - - network - - subnetwork - - natIpRange - - region - - zones - - natGatewayTag - - nattedVmTag - -properties: - project: - type: string - description: | - The project ID of the project containing the NAT instance. The - Google apps domain is prefixed if applicable. - network: - type: string - description: The VPC network to connect the NAT gateway VMs to. - subnetwork: - type: string - description: The subnetwork of the VPC network. - natIpRange: - type: string - description: The IP range to allow NAT through the NAT gateways. - region: - type: string - default: "us-central1" - description: The region where the NAT gateway VMs are deployed. - zones: - type: array - description: | - Zones where the NAT gateway GCE VMs are deployed. - minItems: 2 - items: - type: string - machineType: - type: string - default: "n1-standard-1" - description: The machine type for the NAT gateway VMs. - imageType: - type: string - default: "projects/centos-cloud/global/images/family/centos-6" - description: The image type for the NAT gateway VMs. - startupScript: - type: string - description: | - The startup script that runs when the NAT gateway VMs are started. - diskType: - type: string - default: pd-standard - description: | - The persistent disk type used as a boot disk for the NAT gateway VMs. - enum: - - pd-standard - - pd-ssd - diskSizeGb: - type: number - default: 10 - description: The size of the persistent disk used by the NAT gateway VMs. - minimum: 10 - maximum: 65536 - natGatewayTag: - type: string - defaut: natgw - description: Teh tag applied to the NAT gateway VMs. - nattedVmTag: - type: string - default: no-ip - description: | - The tag to be applied to the GCE VMs so that they can use the NAT - gateways. - routePriority: - type: number - default: 800 - description: | - The priority the routes to the NAT gateway VMs are created with. - minimum: 0 - maximum: 65535 - -outputs: - natGateways: - type: array - description: | - The list of the NAT gateways created. For example, the output can be - referenced as: - $(ref..natGateways..externalIP). - Note that `natgatewaybasename` is the base instance name to use for - instances in the group, and is not the exact name for the deployed - instance. For example, if the `natgatewaybasename` value is `my-nat`, - the provisioned instance name could be `my-nat-xkje`. - items: - instanceGroupManagerName: - type: string - description: | - The name of the Instance Group Manager used for monitoring and - autohealing. - instanceGroupManagerSelflink: - type: string - description: The URI of the Instance Group Manager resource. - externalIP: - type: string - description: The external IP addresses set to the NAT gateway VM. - internalIP: - type: string - description: The internal IP addresses set to the NAT gateway VM. - instanceTemplateName: - type: string - description: | - The name of the Instance Template to be used by the Instance - Group Manager for monitoring and autohealing. - baseInstanceName: - type: string - description: The base instance name to use for instances in the group. - routeName: - type: string - description: | - The name of the route that forwards traffic through the NAT - gateways. - zones: - type: array - description: Zones where the NAT gateways are deployed for HA. - networkName: - type: string - description: The VPC network on which the NAT is performed. - subnetworkName: - type: string - description: The NAT'd subnet/IP range. - natGatewayTag: - type: string - description: The tag used to pin the NAT gateway VMs. - nattedVmTag: - type: string - description: The tag used for the internal VMs to be NAT'd. - region: - type: string - description: The region where the NAT gateways are deployed. - healthCheckName: - type: string - description: | - The name of the healthCheck counter used by the Instance Group - Manager. - -documentation: - - templates/nat_gateway/README.md - -examples: - - templates/nat_gateway/examples/nat_gateway.yaml diff --git a/dm/templates/nat_gateway/tests/integration/nat_gateway.bats b/dm/templates/nat_gateway/tests/integration/nat_gateway.bats deleted file mode 100755 index 4d522a4fd47..00000000000 --- a/dm/templates/nat_gateway/tests/integration/nat_gateway.bats +++ /dev/null @@ -1,215 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-natgatewayha.txt" -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-natgatewayha-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -export PROJECT_NUMBER=$(gcloud projects describe ${CLOUD_FOUNDATION_PROJECT_ID} | grep projectNumber | sed 's/[^0-9]*//g') - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud compute networks create "network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "integration test ${RAND}" \ - --subnet-mode custom - gcloud compute networks subnets create "subnet-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network "network-${RAND}" \ - --range 10.0.1.0/24 \ - --region us-east1 - create_config - fi - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute networks subnets delete "subnet-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute networks delete "network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - delete_config - rm -f "${RANDOM_FILE}" - fi - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - - - # Enabling OS login for the next tests - run gcloud compute instances add-metadata "test-inst-has-ext-ip-${RAND}" \ - --metadata enable-oslogin=TRUE \ - --zone "us-east1-b" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Pre-run Status: $status" - echo "Pre-run Output: $output" - - [[ "$status" -eq 0 ]] - - run gcloud compute ssh "test-inst-has-ext-ip-${RAND}" --zone "us-east1-b" \ - --command "echo 'OK' " \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "SSH Status: $status" - echo "SSH Output: $output" - - echo "sleeping 30" - sleep 30 - - [[ "$status" -eq 0 ]] -} - -@test "Verifying that resources were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute instances list --filter="name:test-nat-gateway-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-gateway-us-east1-b" ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-gateway-us-east1-c" ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-gateway-us-east1-d" ]] -} - -@test "Verifying that external IP was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute addresses list \ - --filter="name:test-nat-gateway-${RAND}-ip-external" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-ip-external-us-east1-b" ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-ip-external-us-east1-c" ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-ip-external-us-east1-d" ]] -} - -@test "Verifying that internal IP was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute addresses list \ - --filter="name:test-nat-gateway-${RAND}-ip-internal" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-ip-internal-us-east1-b" ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-ip-internal-us-east1-c" ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-ip-internal-us-east1-d" ]] -} - -@test "Verifying that routes were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute routes list \ - --filter="name:test-nat-gateway-${RAND}-route" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-route-us-east1-b" ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-route-us-east1-c" ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-route-us-east1-d" ]] -} - -@test "Verifying that firewall rule was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute firewall-rules list \ - --filter="name:test-nat-gateway-${RAND}-healthcheck-firewall" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "test-nat-gateway-${RAND}-healthcheck-firewall" ]] -} - -@test "Verifying NAT functionality created in deployment ${DEPLOYMENT_NAME}" { - # SSH into the instance with external IP and SSH into the instance without - # an external IP that is using the NAT gateway and successfully execute - # wget on a site. - run gcloud compute ssh "test-inst-has-ext-ip-${RAND}" --zone "us-east1-b" \ - --ssh-flag="-q" \ - --command "gcloud compute ssh test-inst-nat-no-ext-ip-${RAND} \ - --internal-ip --command 'wget google.com' --zone 'us-east1-b' \ - --quiet" \ - --quiet - - echo "status = ${status}" - echo "output = ${output}" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "HTTP request sent, awaiting response... 200 OK" ]] - - # SSH into the instance with external IP and SSH into the instance without - # an external IP that is not using the NAT gateway. The wget command will - # fail. - run gcloud compute ssh "test-inst-has-ext-ip-${RAND}" --zone "us-east1-b" \ - --ssh-flag="-q" \ - --command "gcloud compute ssh test-inst-no-ext-ip-${RAND} --internal-ip \ - --command 'wget google.com --timeout=5' --zone 'us-east1-b' \ - --quiet" \ - --quiet - - echo "status = ${status}" - echo "output = ${output}" - - [[ "$output" =~ "failed: Network is unreachable" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - - run gcloud compute instances list \ - --filter="name:test-nat-gateway-${RAND}-gw-1-us-east1-b" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-gateway-us-east1-b" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-gateway-us-east1-c" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-gateway-us-east1-d" ]] - - run gcloud compute addresses list \ - --filter="name:test-nat-gateway-${RAND}-ip" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-ip-external-us-east1-b" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-ip-external-us-east1-c" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-ip-external-us-east1-d" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-ip-internal-us-east1-b" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-ip-internal-us-east1-c" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-ip-internal-us-east1-d" ]] - - run gcloud compute routes list \ - --filter="name:test-nat-gateway-${RAND}-route" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-route-us-east1-b" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-route-us-east1-c" ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-route-us-east1-d" ]] - - run gcloud compute firewall-rules list \ - --filter="name:test-nat-gateway-${RAND}-healthcheck-firewall" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ ! "$output" =~ "test-nat-gateway-${RAND}-healthcheck-firewall" ]] -} diff --git a/dm/templates/nat_gateway/tests/integration/nat_gateway.yaml b/dm/templates/nat_gateway/tests/integration/nat_gateway.yaml deleted file mode 100644 index 7f95c0fd127..00000000000 --- a/dm/templates/nat_gateway/tests/integration/nat_gateway.yaml +++ /dev/null @@ -1,106 +0,0 @@ -# Test of the HA NAT gateway template. - -imports: - - path: templates/nat_gateway/nat_gateway.py - name: nat_gateway.py - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-nat-gateway-${RAND} - type: nat_gateway.py - properties: - network: network-${RAND} - subnetwork: subnet-${RAND} - natIpRange: 10.0.1.0/24 - region: us-east1 - zones: - - us-east1-b - - us-east1-c - - us-east1-d - natGatewayTag: natgw - nattedVmTag: no-ip - -# Test prerequisites: - - # Instance using NAT with no external IP. - - name: test-inst-nat-no-ext-ip-${RAND} - type: instance.py - properties: - zone: us-east1-b - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - canIpForward: true - network: network-${RAND} - subnetwork: regions/us-east1/subnetworks/subnet-${RAND} - serviceAccounts: - - email: ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com - scopes: - - "https://www.googleapis.com/auth/cloud-platform" - hasExternalIp: false - tags: - items: - - no-ip - - # Instance not using NAT with no external IP. - - name: test-inst-no-ext-ip-${RAND} - type: instance.py - properties: - zone: us-east1-b - diskImage: projects/debian-cloud/global/images/debian-9-stretch-v20181011 - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - canIpForward: true - network: network-${RAND} - subnetwork: regions/us-east1/subnetworks/subnet-${RAND} - serviceAccounts: - - email: ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com - scopes: - - "https://www.googleapis.com/auth/cloud-platform" - hasExternalIp: false - - # Instance with external IP. - - name: test-inst-has-ext-ip-${RAND} - type: instance.py - properties: - zone: us-east1-b - diskImage: projects/debian-cloud/global/images/debian-9-stretch-v20181011 - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - canIpForward: true - network: network-${RAND} - subnetwork: regions/us-east1/subnetworks/subnet-${RAND} - serviceAccounts: - - email: ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com - scopes: - - "https://www.googleapis.com/auth/cloud-platform" - - # Firewall rules for ICMP and SSH - - name: test-firewall-${RAND} - type: firewall.py - properties: - network: network-${RAND} - rules: - - name: test-icmp-${RAND} - allowed: - - IPProtocol: icmp - description: Allow all traffic out through NAT GW - direction: INGRESS - priority: 800 - sourceRanges: - - 10.0.1.0/24 - - name: test-ssh-http-${RAND} - allowed: - - IPProtocol: tcp - ports: - - "22" - - "80" - description: rule for ssh and http - direction: INGRESS - priority: 800 - sourceRanges: - - 0.0.0.0/0 diff --git a/dm/templates/network/README.md b/dm/templates/network/README.md deleted file mode 100644 index 7c6b30da31e..00000000000 --- a/dm/templates/network/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Network and subnetwork - -This template creates a network, optionally with subnetworks. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.networkAdmin or compute.admin](https://cloud.google.com/compute/docs/access/iam) IAM role to the project service account - -## Deployment - -### Resources - -- [compute.v1.network](https://cloud.google.com/compute/docs/reference/latest/networks) -- [compute.v1.subnetwork](https://cloud.google.com/compute/docs/reference/latest/subnetworks) - -### Properties - -See the `properties` section in the schema file(s): - -- [Network](network.py.schema) -- [Subnetwork](subnetwork.py.schema) - - -### Usage - - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/network.yaml](examples/network.yaml): - -```shell - cp templates/network/examples/network.yaml my_network.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_network.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_network.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Network with subnetworks](examples/network.yaml) diff --git a/dm/templates/network/examples/network.yaml b/dm/templates/network/examples/network.yaml deleted file mode 100644 index 4a3674536fd..00000000000 --- a/dm/templates/network/examples/network.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Example of the network template usage. -# -# In this example, a network is created. Subnetworks can be created -# via the `subnetworks` property of the `network.py` template (such as -# test-subnetwork-1) -# -# Note that the `name` property of the `templates/network.py` resource type is -# optional. If omitted, the DM resource name is used. - -imports: - - path: templates/network/network.py - name: network.py - -resources: - - name: test-network - type: network.py - properties: - autoCreateSubnetworks: false - subnetworks: - - name: test-subnetwork-1 - region: us-east1 - ipCidrRange: 10.0.0.0/24 - privateIpGoogleAccess: false - enableFlowLogs: true - secondaryIpRanges: - - rangeName: my-secondary-range-1 - ipCidrRange: 10.0.1.0/24 - - rangeName: my-secondary-range-2 - ipCidrRange: 10.0.2.0/24 - - name: test-subnetwork-2 - region: us-east1 - ipCidrRange: 192.168.0.0/24 diff --git a/dm/templates/network/network.py b/dm/templates/network/network.py deleted file mode 100644 index 1793a0251fa..00000000000 --- a/dm/templates/network/network.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a network, optionally with subnetworks. """ - - -def append_optional_property(res, properties, prop_name): - """ If the property is set, it is added to the resource. """ - - val = properties.get(prop_name) - if val: - res['properties'][prop_name] = val - return - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - network_self_link = '$(ref.{}.selfLink)'.format(context.env['name']) - - network_resource = { - # https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert - 'type': 'gcp-types/compute-v1:networks', - 'name': context.env['name'], - 'properties': - { - 'name': name, - 'autoCreateSubnetworks': properties.get('autoCreateSubnetworks', False) - } - } - optional_properties = [ - 'description', - 'routingConfig', - 'project', - ] - for prop in optional_properties: - append_optional_property(network_resource, properties, prop) - resources = [network_resource] - - # Subnetworks: - out = {} - for i, subnetwork in enumerate( - properties.get('subnetworks', []), 1 - ): - subnetwork['network'] = network_self_link - if properties.get('project'): - subnetwork['project'] = properties.get('project') - - subnetwork_name = 'subnetwork-{}'.format(i) - resources.append( - { - 'name': subnetwork_name, - 'type': 'subnetwork.py', - 'properties': subnetwork - } - ) - - out[subnetwork_name] = { - 'selfLink': '$(ref.{}.selfLink)'.format(subnetwork_name), - 'ipCidrRange': '$(ref.{}.ipCidrRange)'.format(subnetwork_name), - 'region': '$(ref.{}.region)'.format(subnetwork_name), - 'network': '$(ref.{}.network)'.format(subnetwork_name), - 'gatewayAddress': '$(ref.{}.gatewayAddress)'.format(subnetwork_name) - } - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': network_self_link - }, - { - 'name': 'subnetworks', - 'value': out - } - ] - } diff --git a/dm/templates/network/network.py.schema b/dm/templates/network/network.py.schema deleted file mode 100644 index 22f4cb3bbec..00000000000 --- a/dm/templates/network/network.py.schema +++ /dev/null @@ -1,160 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Network - author: Sourced Group Inc. - version: 1.1.1 - description: | - Creates a network. - - For more information on this resource: - - https://cloud.google.com/vpc/docs/vpc - - APIs endpoints used by this template: - - gcp-types/compute-v1:networks => - https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert - -imports: - - path: subnetwork.py - -additionalProperties: false - -oneOf: - - properties: - autoCreateSubnetworks: - enum: - - true - - properties: - subnetworks: - type: array - default: [] - minItems: 1 - - properties: - autoCreateSubnetworks: - enum: - - false - subnetworks: - type: array - default: [] - minItems: 0 - maxItems: 0 - -properties: - name: - type: string - description: | - Name of the network resource. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the Cloud Router instance. The - Google apps domain is prefixed if applicable. - description: - type: string - description: | - An optional description of this resource. Provide this property when you create the resource. - routingConfig: - type: object - additionalProperties: false - description: | - The network-level routing configuration for this network. Used by Cloud Router to determine what type - of network-wide routing behavior to enforce. - required: - - routingMode - properties: - routingMode: - type: string - description: | - The network-wide routing mode to use. If set to REGIONAL, this network's cloud routers will only advertise - routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's - cloud routers will advertise routes with all subnets of this network, across regions. - enum: - - GLOBAL - - REGIONAL - autoCreateSubnetworks: - type: boolean - default: false - description: | - If "true": (a) the newly created network is assigned the default CIDR of - 10.128.0.0/9; and (b) one subnetwork per region is created automatically. - subnetworks: - type: array - default: [] - description: | - An array of subnetworks, as defined in the `subnetwork.py` template. - Example: - - name: test-subnetwork-1 - region: us-east1 - ipCidrRange: 10.116.48.0/22 - privateIpGoogleAccess: false - enableFlowLogs: true - secondaryIpRanges: - - rangeName: my-secondary-range-1 - ipCidrRange: 172.16.0.0/24 - - rangeName: my-secondary-range-2 - ipCidrRange: 172.16.1.0/24 - items: - type: object - allOf: - - not: - required: - - project - - not: - required: - - network - -outputs: - name: - type: string - description: The network resource name. - selfLink: - type: string - description: The URI (SelfLink) of the network resource. - subnetworks: - type: array - description: Array of subnetwork` information. - items: - description: | - The name of the subnetwork resource. For example, the output can be - referenced as: $(ref..subnetworks..selfLink) - patternProperties: - ".*": - type: object - description: Details for a subnetwork resource. - properties: - - selfLink: - type: string - description: The URI (SelfLink) of the subnet resource. - - region: - type: string - description: The name of the region where the subnetwork resides. - - network: - type: string - description: The URL of the network to which the subnetwork belongs. - - ipCidrRange: - type: string - description: | - The range of internal addresses owned by the subnetwork. - - gatewayAddress: - type: string - description: | - The gateway address for default routes to reach destination addresses - outside this subnetwork. - -documentation: - - templates/network/README.md - -examples: - - templates/network/examples/network.yaml diff --git a/dm/templates/network/subnetwork.py b/dm/templates/network/subnetwork.py deleted file mode 100644 index a2bc81ede03..00000000000 --- a/dm/templates/network/subnetwork.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a subnetwork. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - props = context.properties - props['name'] = props.get('name', context.env['name']) - required_properties = ['name', 'network', 'ipCidrRange', 'region'] - optional_properties = [ - 'project', - 'enableFlowLogs', - 'privateIpGoogleAccess', - 'secondaryIpRanges' - ] - - # Load the mandatory properties, then the optional ones (if specified). - properties = {p: props[p] for p in required_properties} - properties.update( - { - p: props[p] - for p in optional_properties - if p in props - } - ) - - resources = [ - { - # https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks/insert - 'type': 'gcp-types/compute-v1:subnetworks', - 'name': context.env['name'], - 'properties': properties - } - ] - - output = [ - { - 'name': 'name', - 'value': properties['name'] - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - }, - { - 'name': 'ipCidrRange', - 'value': '$(ref.{}.ipCidrRange)'.format(context.env['name']) - }, - { - 'name': 'region', - 'value': '$(ref.{}.region)'.format(context.env['name']) - }, - { - 'name': 'network', - 'value': '$(ref.{}.network)'.format(context.env['name']) - }, - { - 'name': 'gatewayAddress', - 'value': '$(ref.{}.gatewayAddress)'.format(context.env['name']) - } - ] - - return {'resources': resources, 'outputs': output} diff --git a/dm/templates/network/subnetwork.py.schema b/dm/templates/network/subnetwork.py.schema deleted file mode 100644 index 4e8ad81eded..00000000000 --- a/dm/templates/network/subnetwork.py.schema +++ /dev/null @@ -1,134 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Subnet - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a subnetwork. - - For more information on this resource: - - https://cloud.google.com/vpc/docs/vpc - - APIs endpoints used by this template: - - gcp-types/compute-v1:subnetworks => - https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks/insert - -additionalProperties: false - -required: - - network - - region - - ipCidrRange - -properties: - name: - type: string - description: | - The name of the resource, provided by the client when initially creating the resource. The name must - be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and - match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase - letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - If not specified, the DM resource name is used. - project: - type: string - description: | - The project ID of the project containing the Cloud Router instance. The - Google apps domain is prefixed if applicable. - network: - type: string - description: | - The URL of the network to which the subnetwork belongs. For example: - - projects//global/networks/ - region: - type: string - description: The name of the region where the subnetwork resides. - ipCidrRange: - type: string - pattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}\/[0-9]{1,2}$ - description: | - The range of internal addresses owned by the subnetwork. - Ranges must be unique and non-overlapping within a network. - Only IPv4 is supported. For example, 10.0.0.0/8 or 192.168.0.0/16. - privateIpGoogleAccess: - type: boolean - default: true - description: | - Defines whether the VMs in this subnetwork can access Google services - without assigned external IP addresses. This field can be either set at the - resource creation time or updated using setPrivateIpGoogleAccess. - secondaryIpRanges: - type: array - description: | - An array of configurations for the secondary IP ranges of VM instances - contained in this subnetwork. The primary IP of a VM must belong to the - primary ipCidrRange of the subnetwork. The alias IPs may belong to either - primary or secondary ranges. For example: - - rangeName: my-secondary-range-1 - ipCidrRange: 172.16.0.0/24 - - rangeName: my-secondary-range-2 - ipCidrRange: 172.16.1.0/24 - items: - type: object - additionalProperties: false - required: - - rangeName - - ipCidrRange - properties: - rangeName: - type: string - description: | - The name associated with this subnetwork secondary range, used when adding an alias IP range - to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. - The name must be unique within the subnetwork. - ipCidrRange: - type: string - description: | - The range of IP addresses belonging to this subnetwork secondary range. Provide this property - when you create the subnetwork. Ranges must be unique and non-overlapping with all primary - and secondary IP ranges within a network. Only IPv4 is supported. - enableFlowLogs: - type: boolean - description: If "true", enables flow logging for the subnetwork. - -outputs: - name: - type: string - description: The subnet resource name. - selfLink: - type: string - description: The URI (SelfLink) of the subnet resource. - region: - type: string - description: The name of the region where the subnetwork resides. - network: - type: string - description: The URL of the network to which the subnetwork belongs. - ipCidrRange: - type: string - description: | - The range of internal addresses owned by the subnetwork. - gatewayAddress: - type: string - description: | - The gateway address for default routes to reach destination addresses - outside this subnetwork. - -documentation: - - templates/network/README.md - -examples: - - templates/network/examples/network.yaml diff --git a/dm/templates/network/tests/integration/network.bats b/dm/templates/network/tests/integration/network.bats deleted file mode 100644 index 8f8fc80d62d..00000000000 --- a/dm/templates/network/tests/integration/network.bats +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-network.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-network-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < templates/network/tests/integration/network.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that resources were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute networks list --filter="name:test-network-${RAND}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "test-network-${RAND}" ]] -} - -@test "Verifying subnets were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute networks subnets list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "test-subnetwork-${RAND}-1" ]] - [[ "$output" =~ "test-subnetwork-${RAND}-2" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud compute networks list --filter="name:test-network-${RAND}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-network-${RAND}" ]] - - run gcloud compute networks subnets list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-subnetwork-${RAND}-1" ]] - [[ ! "$output" =~ "test-subnetwork-${RAND}-2" ]] -} diff --git a/dm/templates/network/tests/integration/network.yaml b/dm/templates/network/tests/integration/network.yaml deleted file mode 100644 index d4dec03b8a5..00000000000 --- a/dm/templates/network/tests/integration/network.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# Test of the network and subnetwork templates. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/network/network.py - name: network.py - - path: templates/network/subnetwork.py - name: subnetwork.py - -resources: - - name: test-network-${RAND} - type: network.py - properties: - autoCreateSubnetworks: false - subnetworks: - - name: test-subnetwork-${RAND}-1 - region: us-east1 - ipCidrRange: 10.0.0.0/24 - privateIpGoogleAccess: false - enableFlowLogs: true - secondaryIpRanges: - - rangeName: my-secondary-range-${RAND}-1 - ipCidrRange: 10.0.1.0/24 - - rangeName: my-secondary-range-${RAND}-2 - ipCidrRange: 10.0.2.0/24 - - name: test-subnetwork-${RAND}-2 - type: subnetwork.py - properties: - network: $(ref.test-network-${RAND}.selfLink) - region: us-east1 - ipCidrRange: 192.168.0.0/16 - - name: test-subnetwork-${RAND}-3 - type: subnetwork.py - properties: - name: test-subnetwork-${RAND}-3 - network: $(ref.test-network-${RAND}.selfLink) - region: us-east1 - ipCidrRange: 172.16.0.0/24 - privateIpGoogleAccess: false - enableFlowLogs: true - secondaryIpRanges: - - rangeName: my-secondary-range-${RAND}-1 - ipCidrRange: 172.16.1.0/24 - - rangeName: my-secondary-range-${RAND}-2 - ipCidrRange: 172.16.2.0/24 diff --git a/dm/templates/network/tests/schemas/invalid_subnets.yaml b/dm/templates/network/tests/schemas/invalid_subnets.yaml deleted file mode 100644 index d60702cf438..00000000000 --- a/dm/templates/network/tests/schemas/invalid_subnets.yaml +++ /dev/null @@ -1,15 +0,0 @@ -autoCreateSubnetworks: true -subnetworks: - - name: test-subnetwork-1 - region: us-east1 - ipCidrRange: 10.0.0.0/24 - privateIpGoogleAccess: false - enableFlowLogs: true - secondaryIpRanges: - - rangeName: my-secondary-range-1 - ipCidrRange: 10.0.1.0/24 - - rangeName: my-secondary-range-2 - ipCidrRange: 10.0.2.0/24 - - name: test-subnetwork-2 - region: us-east1 - ipCidrRange: 192.168.0.0/24 diff --git a/dm/templates/network/tests/schemas/valid_auto.yaml b/dm/templates/network/tests/schemas/valid_auto.yaml deleted file mode 100644 index 3de5b553e29..00000000000 --- a/dm/templates/network/tests/schemas/valid_auto.yaml +++ /dev/null @@ -1 +0,0 @@ -autoCreateSubnetworks: true diff --git a/dm/templates/network/tests/schemas/valid_subnets.yaml b/dm/templates/network/tests/schemas/valid_subnets.yaml deleted file mode 100644 index 0bcd684fc5f..00000000000 --- a/dm/templates/network/tests/schemas/valid_subnets.yaml +++ /dev/null @@ -1,15 +0,0 @@ -autoCreateSubnetworks: false -subnetworks: - - name: test-subnetwork-1 - region: us-east1 - ipCidrRange: 10.0.0.0/24 - privateIpGoogleAccess: false - enableFlowLogs: true - secondaryIpRanges: - - rangeName: my-secondary-range-1 - ipCidrRange: 10.0.1.0/24 - - rangeName: my-secondary-range-2 - ipCidrRange: 10.0.2.0/24 - - name: test-subnetwork-2 - region: us-east1 - ipCidrRange: 192.168.0.0/24 diff --git a/dm/templates/project/README.md b/dm/templates/project/README.md deleted file mode 100644 index 2f927a236ef..00000000000 --- a/dm/templates/project/README.md +++ /dev/null @@ -1,138 +0,0 @@ -# Project - -This template: - -1. Creates a new project. -2. Sets a billing account for the new project -3. Sets IAM permissions in the new project -4. Turns on a set of APIs in the new project -5. Creates service accounts for the new project -6. Creates a usage export Cloud Storage bucket for the new project -7. Removed default networks, firewalls -8. Removes default Service Account -9. Creates VPC host or attached VPC service project - -## Prerequisites - -Following are the prerequisites for creating a project via Deployment Manager. You can perform some of the steps via the Cloud Console at https://console.cloud.google.com/. The `gcloud` command line tool is used to deploy the configs. - -`Note:` Permission changes can take up to 20 minutes to propagate. If you run commands before the propagation is completed, you may receive errors regarding the user not having permissions. - -`Note:` "If you have [Shared VPC Admin role](https://cloud.google.com/vpc/docs/provisioning-shared-vpc#enable-shared-vpc-host) at the folder level, you need to use gcloud beta or the beta API." Some version of the Project Factory is using the GA API, which means SharedVPC features may result a permission error. See [Issue #403](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/403) - - -1. Install [gcloud](https://cloud.google.com/sdk). - -2. Create a project that will create and own the deployments (henceforth referred to as *DM Creation Project*). See: https://cloud.google.com/resource-manager/docs/creating-managing-organization. - - `Important:` Because of the special permissions granted to the *DM Creation Project*, it should not be used for any purpose other than creating other projects. - -3. Activate the following APIs for the *DM Creation Project*: - * Google Cloud Deployment Manager V2 API - * Google Cloud Resource Manager API - * Google Cloud Billing API - * Google Identity and Access Management (IAM) API - * Google Service Management API - - You may use the `gcloud services enable` command to do this: - - ```shell - gcloud services enable deploymentmanager.googleapis.com - gcloud services enable cloudresourcemanager.googleapis.com - gcloud services enable cloudbilling.googleapis.com - gcloud services enable iam.googleapis.com - gcloud services enable servicemanagement.googleapis.com - ``` - -4. Find the *Cloud Services* service account associated with the *DM Creation Project*. - - It is formatted as `@cloudservices.gserviceaccount.com`, - and is listed under [IAM & Admin](https://console.cloud.google.com/iam-admin/iam) - in Google Cloud Console. This account is henceforth referred to as the *DM Service Account*. See https://cloud.google.com/resource-manager/docs/access-control-proj. - -5. Create an Organization node. - - If you do not already have an Organization node under which you can create - projects, create that node following [these instructions](https://cloud.google.com/resource-manager/docs/creating-managing-organization). - -6. Grant the *DM Service Account* the following permissions on the Organization node: - - - `roles/resourcemanager.projectCreator` - - `roles/serviceusage.serviceUsageAdmin` - - This is visible in the Cloud Console's IAM permissions in *Resource Manager -> Project Creator* and *Resource Manager -> Service Usage Admin*. See https://cloud.google.com/resource-manager/docs/access-control-proj. - -7. Create/find the *Billing Account* associated with the Organization. See: https://cloud.google.com/support/billing/. Take note of the *Billing Account*'s ID, which is formatted as follows:`00E12A-0AB8B2-078CE8`. - -8. Give the *DM Service Account* the following permissions on the *Billing Account*: `roles/billing.user`. This is visible in Cloud Console's IAM permissions in *Billing -> Billing Account User*. - -9. If the project is a VPC host or guest project, give the *DM Service Account* the following permissions: `roles/compute.xpnAdmin`. - -## Deployment - -### Resources - -- [cloudresourcemanager.v1.project](https://cloud.google.com/compute/docs/reference/latest/projects) -- [deploymentmanager.v2.virtual.projectBillingInfo](https://cloud.google.com/billing/reference/rest/v1/projects/updateBillingInfo) -- [iam.v1.serviceAccount](https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts) -- [deploymentmanager.v2.virtual.enableService](https://cloud.google.com/service-management/reference/rest/v1/services/enable) -- [../iam_member CFT template](../iam_member/README.md) -- [gcp-types/cloudresourcemanager-v1:cloudresourcemanager.projects.setIamPolicy](https://cloud.google.com/deployment-manager/docs/configuration/supported-gcp-types) -- [gcp-types/storage-v1:buckets](https://cloud.google.com/deployment-manager/docs/configuration/supported-gcp-types) -- [gcp-types/compute-v1:compute.projects.setUsageExportBucket](https://cloud.google.com/deployment-manager/docs/configuration/supported-gcp-types) -- [compute.beta.xpnResource](https://cloud.google.com/compute/docs/reference/rest/beta/projects/enableXpnResource) -- [compute.beta.xpnHost](https://cloud.google.com/compute/docs/reference/rest/beta/projects/enableXpnHost) -- [gcp-types/compute-v1:compute.firewalls.delete](https://cloud.google.com/compute/docs/reference/rest/v1/firewalls) -- [gcp-types/compute-v1:compute.networks.delete](https://cloud.google.com/compute/docs/reference/rest/v1/networks) -- [gcp-types/iam-v1:iam.projects.serviceAccounts.delete](https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts) - -### Properties - -See the `properties` section in the schema file(s): - -- [project](project.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/project_standalone.yaml](examples/project_standalone.yaml): - -```shell - cp templates/project/examples/project_standalone.yaml my_project.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_project.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_project.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Standalone project](examples/project_standalone.yaml) -- [VPC host project](examples/project_vpc_host.yaml) -- [VPC consumer project](examples/project_vpc_consumer.yaml) diff --git a/dm/templates/project/examples/project_standalone.yaml b/dm/templates/project/examples/project_standalone.yaml deleted file mode 100644 index 093b3feadfe..00000000000 --- a/dm/templates/project/examples/project_standalone.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Example of the project template usage. -# -# In this example, a project is created, along with some of the -# resources that an enterprise is likely to need for regular operations. -# -# Note that the `parent.type` property defaults to "organization", so it -# does not need to be specified in the config. It is specified here for -# informational purposes. -# -# See `templates/project.py.schema` for detailed information on the -# properties. -# -# Replace the following with valid values -# : Project name -# : Your organization ID -# : Your billing ID - -imports: - - path: templates/project/project.py - name: project.py - -resources: - - name: - type: project.py - properties: - parent: - type: organization - id: - billingAccountId: - activateApis: - - compute.googleapis.com - - deploymentmanager.googleapis.com - - pubsub.googleapis.com - serviceAccounts: - - accountId: test-sa-1 - displayName: test service account 1 - roles: - - roles/editor - - roles/viewer diff --git a/dm/templates/project/examples/project_vpc_consumer.yaml b/dm/templates/project/examples/project_vpc_consumer.yaml deleted file mode 100644 index 85f48d9d3d8..00000000000 --- a/dm/templates/project/examples/project_vpc_consumer.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# Example of the project template usage. -# -# In this example, a project is created, along with some of the -# resources that an enterprise is likely to need for regular operations. -# -# Note that the `parent.type` property defaults to "organization", so it -# does not need to be specified in the config. It is specified here for -# informational purposes. -# -# See `templates/project.py.schema` for detailed information on the -# properties. -# -# Replace the following with valid values -# : Project name -# : Your organization ID -# : Your billing ID -# : VPC host ID -# : VPC host subnet - -imports: - - path: templates/project/project.py - name: project.py - -resources: - - name: - type: project.py - properties: - parent: - type: organization - id: - billingAccountId: - activateApis: - - compute.googleapis.com - - deploymentmanager.googleapis.com - - pubsub.googleapis.com - serviceAccounts: - - accountId: test-sa-1 - displayName: test service account 1 - roles: - - roles/editor - - roles/viewer - networkAccess: true - sharedVPC: - sharedVPCSubnets: - - subnetId: - region: us-east1 diff --git a/dm/templates/project/examples/project_vpc_host.yaml b/dm/templates/project/examples/project_vpc_host.yaml deleted file mode 100644 index c82abcb16d9..00000000000 --- a/dm/templates/project/examples/project_vpc_host.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Example of the project template usage. -# -# In this example, a project is created, along with some of the -# resources that an enterprise is likely to need for regular operations. -# -# Note that the `parent.type` property defaults to "organization", so it -# does not need to be specified in the config. It is specified here for -# informational purposes. -# -# See `templates/project.py.schema` for detailed information on the -# properties. -# -# Replace the following with valid values -# : Project name -# : Your organization ID -# : Your billing ID - -imports: - - path: templates/project/project.py - name: project.py - -resources: - - name: - type: project.py - properties: - parent: - type: organization - id: - billingAccountId: - activateApis: - - compute.googleapis.com - - deploymentmanager.googleapis.com - - pubsub.googleapis.com - serviceAccounts: - - accountId: test-sa-1 - displayName: test service account 1 - roles: - - roles/editor - - roles/viewer - sharedVPCHost: true diff --git a/dm/templates/project/project.py b/dm/templates/project/project.py deleted file mode 100644 index 2301b35ac0b..00000000000 --- a/dm/templates/project/project.py +++ /dev/null @@ -1,369 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" -This template creates a single project with the specified service -accounts and APIs enabled. -""" -import copy - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_name = properties.get('name', context.env['name']) - project_id = properties.get('projectId', project_name) - - # Ensure that the parent ID is a string. - properties['parent']['id'] = str(properties['parent']['id']) - - resources = [ - { - 'name': '{}-project'.format(context.env['name']), - # https://cloud.google.com/resource-manager/reference/rest/v1/projects/create - 'type': 'gcp-types/cloudresourcemanager-v1:projects', - 'properties': - { - 'name': project_name, - 'projectId': project_id, - 'parent': properties['parent'], - 'labels' : properties.get('labels', {}) - } - }, - { - 'name': '{}-billing'.format(context.env['name']), - # https://cloud.google.com/billing/reference/rest/v1/projects/updateBillingInfo - 'type': 'deploymentmanager.v2.virtual.projectBillingInfo', - 'properties': - { - 'name': - 'projects/$(ref.{}-project.projectId)'.format(context.env['name']), - 'billingAccountName': - 'billingAccounts/' + - properties['billingAccountId'] - } - } - ] - - api_resources, api_names_list = activate_apis(context) - resources.extend(api_resources) - resources.extend(create_service_accounts(context, project_id)) - - resources.extend(create_shared_vpc(context)) - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'projectId', - 'value': '$(ref.{}-project.projectId)'.format(context.env['name']) - }, - { - 'name': 'projectNumber', - 'value': '$(ref.{}-project.projectNumber)'.format(context.env['name']) - }, - { - 'name': 'serviceAccountDisplayName', - 'value': - '$(ref.{}-project.projectNumber)@cloudservices.gserviceaccount.com'.format(context.env['name']) # pylint: disable=line-too-long - }, - {## This is a workaround to avoid the need of string concatenation in case of referenving to this output. - 'name': 'containerSA', - 'value': 'serviceAccount:service-$(ref.{}-project.projectNumber)@container-engine-robot.iam.gserviceaccount.com'.format(context.env['name']) - }, - { - 'name': 'containerSADisplayName', - 'value': 'service-$(ref.{}-project.projectNumber)@container-engine-robot.iam.gserviceaccount.com'.format(context.env['name']) - }, - { - 'name': - 'resources', - 'value': - [resource['name'] for resource in resources] - } - ] - } - - -def activate_apis(context): - """ Resources for API activation. """ - - properties = context.properties - concurrent_api_activation = properties.get('concurrentApiActivation') - apis = properties.get('activateApis', []) - - if 'storage-component.googleapis.com' not in apis: - if ( - # Enable the storage-component API if the usage export bucket is enabled. - properties.get('usageExportBucket') - ): - apis.append('storage-component.googleapis.com') - - if 'compute.googleapis.com' not in apis: - if ( - properties.get('sharedVPCHost') or - properties.get('sharedVPC') or - properties.get('sharedVPCSubnets') - ): - apis.append('compute.googleapis.com') - - if 'container.googleapis.com' not in apis: - if ( - properties.get('enableGKEToUseSharedVPC') and - properties.get('sharedVPC') - ): - apis.append('container.googleapis.com') - - resources = [] - api_names_list = ['{}-billing'.format(context.env['name'])] - for api in apis: - depends_on = ['{}-billing'.format(context.env['name'])] - # Serialize activation of all APIs by making apis[n] - # depend on apis[n-1]. - if resources and not concurrent_api_activation: - depends_on.append(resources[-1]['name']) - - api_name = '{}-api-{}'.format(context.env['name'], api) - api_names_list.append(api_name) - resources.append( - { - 'name': api_name, - # https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services/enable - 'type': 'gcp-types/servicemanagement-v1:servicemanagement.services.enable', - 'metadata': { - 'dependsOn': depends_on - }, - 'properties': - { - 'consumerId': 'project:$(ref.{}-project.projectId)'.format(context.env['name']), - 'serviceName': api - } - } - ) - - # Return the API resources to enable other resources to use them as - # dependencies, to ensure that they are created first. For example, - # the default VPC or service account. - return resources, api_names_list - - -def create_project_iam(context, dependencies, role_member_list): - """ Grant the shared project IAM permissions. """ - - resources = [ - { - # Get the IAM policy first, so as not to remove - # any existing bindings. - 'name': '{}-project-iam-policy'.format(context.env['name']), - 'type': 'cft-iam_project_member.py', - 'properties': { - 'projectId': '$(ref.{}-project.projectId)'.format(context.env['name']), - 'roles': role_member_list, - 'dependsOn': dependencies, - }, - 'metadata': - { - 'dependsOn': dependencies, - 'runtimePolicy': ['UPDATE_ALWAYS'] - } - } - ] - - return resources - - -def create_shared_vpc_subnet_iam(context, dependencies, members_list): - """ Grant the shared VPC subnet IAM permissions to Service Accounts. """ - - resources = [] - - # Grant the Service Accounts access to the shared VPC subnets. - # Note that, until there is a subnetwork IAM patch support, - # setIamPolicy will overwrite any existing policies on the subnet. - for i, subnet in enumerate( - context.properties.get('sharedVPCSubnets'), 1 - ): - resources.append( - { - 'name': '{}-add-vpc-subnet-iam-policy-{}'.format(context.env['name'], i), - # https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks/setIamPolicy - 'type': 'gcp-types/compute-v1:compute.subnetworks.setIamPolicy', # pylint: disable=line-too-long - 'metadata': - { - 'dependsOn': dependencies, - }, - 'properties': - { - 'name': subnet['subnetId'], - 'project': context.properties['sharedVPC'], - 'region': subnet['region'], - 'policy' : { - 'bindings': [ - { - 'role': 'roles/compute.networkUser', - 'members': members_list, - } - ], - }, - } - } - ) - - return resources - - -def create_service_accounts(context, project_id): - """ Create Service Accounts and grant project IAM permissions. """ - - resources = [] - network_list = [ - 'serviceAccount:$(ref.{}-project.projectNumber)@cloudservices.gserviceaccount.com'.format(context.env['name']) - ] - service_account_dep = [] - - if context.properties.get('enableGKEToUseSharedVPC') and context.properties.get('sharedVPC'): - network_list.append( - 'serviceAccount:service-$(ref.{}-project.projectNumber)@container-engine-robot.iam.gserviceaccount.com'.format(context.env['name']) - ) - service_account_dep.append("{}-api-container.googleapis.com".format(context.env['name'])) - - policies_to_add = [] - - for service_account in context.properties['serviceAccounts']: - account_id = service_account['accountId'] - display_name = service_account.get('displayName', account_id) - - # Build a list of SA resources to be used as a dependency - # for permission granting. - name = '{}-service-account-{}'.format(context.env['name'], account_id) - service_account_dep.append(name) - - sa_name = 'serviceAccount:{}@{}.iam.gserviceaccount.com'.format( - account_id, - project_id - ) - - # Check if the member needs shared VPC permissions. Put in - # a list to grant the shared VPC subnet IAM permissions. - if service_account.get('networkAccess'): - network_list.append(sa_name) - - # Build the service account bindings for the project IAM permissions. - for role in service_account['roles']: - policies_to_add.append({'role': role, 'members': [sa_name]}) - - # Create the service account resource. - resources.append( - { - 'name': name, - # https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/create - 'type': 'gcp-types/iam-v1:projects.serviceAccounts', - 'properties': - { - 'accountId': account_id, - 'displayName': display_name, - 'name': 'projects/$(ref.{}-project.projectId)'.format(context.env['name']) - } - # There is a bug in gcp type for IAM that ignores "name" field - } if False else { - 'name': name, - 'type': 'iam.v1.serviceAccount', - 'properties': - { - 'accountId': account_id, - 'displayName': display_name, - 'projectId': '$(ref.{}-project.projectId)'.format(context.env['name']) - } - } - ) - - # Build the group bindings for the project IAM permissions. - for group in context.properties['groups']: - group_name = 'group:{}'.format(group['name']) - for role in group['roles']: - policies_to_add.append({'role': role, 'members': [group_name]}) - - # Check if the group needs shared VPC permissions. Put in - # a list to grant the shared VPC subnet IAM permissions. - if group.get('networkAccess'): - network_list.append(group_name) - - # Create the project IAM permissions. - if policies_to_add: - iam = create_project_iam(context, service_account_dep, policies_to_add) - resources.extend(iam) - - if ( - not context.properties.get('sharedVPCHost') and - context.properties.get('sharedVPCSubnets') and - context.properties.get('sharedVPC') - ): - # Create the shared VPC subnet IAM permissions. - service_account_dep.append("{}-api-compute.googleapis.com".format(context.env['name'])) - resources.extend( - create_shared_vpc_subnet_iam( - context, - service_account_dep, - network_list - ) - ) - - return resources - - -def create_shared_vpc(context): - """ Configure the project Shared VPC properties. """ - - resources = [] - - properties = context.properties - service_project = properties.get('sharedVPC') - if service_project: - resources.append( - { - 'name': '{}-attach-xpn-service-{}'.format(context.env['name'], service_project), - # https://cloud.google.com/compute/docs/reference/rest/beta/projects/enableXpnResource - 'type': 'compute.beta.xpnResource', - 'metadata': { - 'dependsOn': ['{}-api-compute.googleapis.com'.format(context.env['name'])] - }, - 'properties': - { - 'project': service_project, - 'xpnResource': - { - 'id': '$(ref.{}-project.projectId)'.format(context.env['name']), - 'type': 'PROJECT', - } - } - } - ) - elif properties.get('sharedVPCHost'): - resources.append( - { - 'name': '{}-xpn-host'.format(context.env['name']), - # https://cloud.google.com/compute/docs/reference/rest/beta/projects/enableXpnHost - 'type': 'compute.beta.xpnHost', - 'metadata': { - 'dependsOn': ['{}-api-compute.googleapis.com'.format(context.env['name'])] - }, - 'properties': { - 'project': '$(ref.{}-project.projectId)'.format(context.env['name']) - } - } - ) - - return resources diff --git a/dm/templates/project/project.py.schema b/dm/templates/project/project.py.schema deleted file mode 100644 index 281c1ea7797..00000000000 --- a/dm/templates/project/project.py.schema +++ /dev/null @@ -1,353 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Project - author: Sourced Group Inc. - version: 1.2.5 - description: | - Supports creation of a single project. The project is created with a - billing account attached, permissions altered, APIs activated, and - service accounts created. - - For more information on this resource: - https://cloud.google.com/resource-manager/ - - APIs endpoints used by this template: - - gcp-types/cloudresourcemanager-v1:projects => - https://cloud.google.com/resource-manager/reference/rest/v1/projects/create - - deploymentmanager.v2.virtual.projectBillingInfo => - https://cloud.google.com/billing/reference/rest/v1/projects/updateBillingInfo - - gcp-types/servicemanagement-v1:servicemanagement.services.enable => - https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services/enable - - gcp-types/compute-v1:compute.subnetworks.setIamPolicy => - https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks/setIamPolicy - - compute.beta.xpnHost => - https://cloud.google.com/compute/docs/reference/rest/beta/projects/enableXpnHost - - compute.beta.xpnResource => - https://cloud.google.com/compute/docs/reference/rest/beta/projects/enableXpnResource - - gcp-types/compute-v1:compute.networks.delete => - https://cloud.google.com/compute/docs/reference/rest/v1/networks/delete - - gcp-types/compute-v1:compute.firewalls.delete => - https://cloud.google.com/compute/docs/reference/rest/v1/firewalls/delete - - gcp-types/iam-v1:iam.projects.serviceAccounts.delete => - https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/delete - - gcp-types/compute-v1:compute.projects.setUsageExportBucket => - https://cloud.google.com/compute/docs/reference/rest/v1/projects/setUsageExportBucket - - gcp-types/storage-v1:buckets => - https://cloud.google.com/storage/docs/json_api/v1/buckets/insert - - gcp-types/iam-v1:projects.serviceAccounts => - https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/create - -imports: -- path: ../iam_member/iam_member.py - name: cft-iam_project_member.py - -additionalProperties: false - -required: - - billingAccountId - -oneOf: - - allOf: - - required: - - sharedVPCHost - - not: - required: - - sharedVPC - - not: - required: - - sharedVPCSubnets - - required: - - sharedVPC - - sharedVPCSubnets - not: - required: - - sharedVPCHost - - allOf: - - not: - required: - - sharedVPC - - not: - required: - - sharedVPCHost - - not: - required: - - sharedVPCSubnets - -dependencies: - sharedVPCSubnets: - required: - - sharedVPC - sharedVPC: - required: - - sharedVPCSubnets - -allOf: - - $ref: '#/definitions/networkAccess-requires-sharedVPCSubnets' - -definitions: - usageExportBucket-enabled: - type: boolean - description: | - Defines whether a usage export bucket must be created. - False by default so as to not inadvertently incur - costs to the user. It is strongly suggested to be enabled - (set to True). - networkAccess-requires-sharedVPCSubnets: - oneOf: - - $ref: '#/definitions/no-sharedVPCSubnets' - - $ref: '#/definitions/sharedVPCSubnets' - no-sharedVPCSubnets: - allOf: - - not: - required: - - sharedVPCSubnets - - properties: - serviceAccounts: - items: - properties: - networkAccess: - enum: - - False - groups: - items: - properties: - networkAccess: - enum: - - False - sharedVPCSubnets: - allOf: - - required: - - sharedVPCSubnets - - properties: - serviceAccounts: - items: - properties: - networkAccess: - enum: - - True - - False - groups: - items: - properties: - networkAccess: - enum: - - True - - False - -properties: - name: - type: string - description: | - The project name. If provided, configures the project to have a - human-readable name that is different from the project ID. - projectId: - type: string - pattern: ^[a-z][a-z0-9-]{5,28}[a-z0-9]$ - description: | - The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase - letters, digits, or hyphens. It must start with a letter. Trailing - hyphens are prohibited. Read-only after creation. - Example: tokyo-rain-123 - parent: - type: object - additionalProperties: false - description: The parent of the project. - required: - - type - - id - properties: - type: - type: string - decription: The parent type (organization or folder). - enum: - - organization - - folder - default: organization - id: - type: [integer, string] - description: | - The ID of the project's parent. - pattern: ^[0-9]{8,25}$ - labels: - type: object - minProperties: 0 - maxProperties: 64 - additionalProperties: false - patternProperties: - ^[a-z](?:[-_a-z0-9]{0,61}[a-z0-9])?$ : - type: string - pattern: ^[a-z0-9]?(?:[-_a-z0-9]{0,61}[a-z0-9])?$ - description: | - Map of labels associated with this Project up to a maximum of 64. Keys have a minimum length of 1 - character and a maximum length of 63 characters, and cannot be empty. Values can be empty, and have - a maximum length of 63 characters. Keys and values can contain only lowercase letters, numeric - characters, underscores, and dashes. All characters must use UTF-8 encoding, and international characters - are allowed. - Example: - name: my-name - mass_not_eq_to_0: 1_3kg - count-next: '3' - empty-value: '' - billingAccountId: - type: string - description: | - The ID of the billing account to attach to the projects. - For example, 00E12A-0AB8B2-078CE8 - activateApis: - type: array - uniqueItems: True - items: - type: string - description: The list of APIs to enable for each project. - serviceAccounts: - type: array - uniqueItems: True - default: [] - items: - type: object - required: - - accountId - properties: - accountId: - type: string - pattern: ^[a-z]([-a-z0-9]{0,61}[a-z0-9])?$ - description: The name used to create the service account. - displayName: - type: string - description: | - The name to display for the service account. If not set, `accountId` - is used as the display name. - roles: - type: array - items: - type: string - description: The list of roles to grant the service account. - networkAccess: - type: boolean - default: False - description: | - If True, grants the shared VPC subnet IAM permissions - to the service account for the subnet specified by the - `sharedVPCSubnets.subnetId` field. - This field must not be set if `sharedVPCHost` is True. - groups: - type: array - uniqueItems: True - default: [] - items: - type: object - required: - - name - - roles - properties: - name: - type: string - description: The name of the Google group. - roles: - type: array - minItems: 1 - items: - type: string - description: The list of roles to grant the Google group. - networkAccess: - type: boolean - default: False - description: | - If True, grants the shared VPC subnet IAM permissions - to the group for the subnet specified by the - `sharedVPCSubnets.subnetId` field. - This field must not be set if `sharedVPCHost` is True. - concurrentApiActivation: - type: boolean - default: False - description: | - If True, activates all the requested APIs concurrently. - When set to False, the APIs are activated serially. - Concurrent activation makes for faster deployment but could potentially - fail the deployment exceeding the quota limits. Make sure to request - adequate quota before using this option. Serial activation tends to be - significantly slower. - sharedVPC: - type: string - description: | - Name of the Shared VPC Host Project that this project will participate - in. The `sharedVPCHost` property cannot be set if this property is set. - sharedVPCSubnets: - type: array - uniqueItems: True - description: | - The IDs of specific shared VPC subnets to share in the new project. - minItems: 1 - items: - type: object - required: - - subnetId - - region - properties: - subnetId: - type: string - description: | - The ID of the subnet to set IAM policies on. For example, - `test-subnetwork-1`.The name of the Google group. - region: - type: string - description: The region of the subnet. - sharedVPCHost: - type: boolean - description: | - If set to True, indicates that this project is to be used as a - host project for Shared VPC networks. - The `sharedVPC` and `sharedVPCSubnets` properties cannot be set if this - property is set. - enableGKEToUseSharedVPC: - type: boolean - default: False - description: | - If this project is a SharedVPC Guest project the - *service-PROJECTNUMBER@container-engine-robot.iam.gserviceaccount.com* - ServiceAccount needs to be added to the shared subnets with the - roles/compute.networkUser IAM binding. - If true, *container.googleapis.com* will be enabled. - If this project is *NOT* a guest project, this value is ignored. - -outputs: - projectId: - type: string - description: The unique, user-assigned ID of the Project. - projectNumber: - type: string - description: The number uniquely identifying the project. - containerSA: - type: string - description: The built-in ServiceAccount name for container services. (With 'serviceAccount:' prefix.) ( Only exists if container.googleapis.com is enabled.) - containerSADisplayName: - type: string - description: The built-in ServiceAccount name for container services. ( Only exists if container.googleapis.com is enabled.) - serviceAccountDisplayName: - type: string - description: Name of the default service account for the project. - resources: - type: array - description: | - Names of the resources the template creates. This output can be used - by other templates for explicit waiting for all project configuration - steps to finish. - -documentation: - - templates/project/README.md - -examples: - - templates/project/examples/project.yaml diff --git a/dm/templates/project/tests/integration/project.bats b/dm/templates/project/tests/integration/project.bats deleted file mode 100644 index f8e5c1d11ed..00000000000 --- a/dm/templates/project/tests/integration/project.bats +++ /dev/null @@ -1,170 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - export CLOUD_FOUNDATION_PROJECT_ID=$(echo ${CLOUD_FOUNDATION_PROJECT_ID} | cut -c 1-10) - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/project/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -########## TESTS ########## - -@test "Deploying project $DEPLOYMENT_NAME" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] -} - -@test "Verifying that project $CLOUD_FOUNDATION_PROJECT_ID was created" { - run gcloud projects list - - echo "Status: $status" - echo "Output: $output" - - [[ "$output" =~ "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" ]] -} - -@test "Verifying that APIs were activated for project ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" { - run gcloud services list --project "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$output" =~ "compute.googleapis.com" ]] - [[ "$output" =~ "deploymentmanager.googleapis.com" ]] - [[ "$output" =~ "pubsub.googleapis.com" ]] - - # ensure storage API is enabled when usageExportBucket is true - [[ "$output" =~ "storage-component.googleapis.com" ]] -} - -@test "Verifying that usage report export to the bucket was created for project ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" { - run gcloud compute project-info describe --project "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" \ - --format="flattened[no-pad](usageExportLocation)" - - echo "Status: $status" - echo "Output: $output" - - [[ "$output" =~ "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}-usage-export" ]] -} - -@test "Verifying that the project is a shared vpc host project for project ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" { - run gcloud compute shared-vpc organizations list-host-projects "${CLOUD_FOUNDATION_ORGANIZATION_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$output" =~ "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" ]] -} - -@test "Verifying that the default VPC was deleted for project ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" { - run gcloud compute networks list --project "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ ! "$output" =~ "default" ]] -} - -@test "Verifying that the default Compute Engine SA was removed for project ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" { - run gcloud iam service-accounts list --project "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" - - echo "Status: $status" - echo "Output: $output" - - [[ ! "$output" =~ "Compute Engine default service account" ]] -} - -@test "Verifying that the service accounts were granted project IAM permissions for project ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" { - run gcloud projects get-iam-policy "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" \ - --flatten="bindings[].members" \ - --format='table(bindings.role)' \ - --filter="bindings.members:sa-${RAND}@${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}.iam.gserviceaccount.com" - - echo "Status: $status" - echo "Output: $output" - - [[ "$output" =~ "roles/editor" ]] - [[ "$output" =~ "roles/viewer" ]] -} - -@test "Deleting deployment" { - ## TODO project creation should work without disabling XPN hosts. - - run gcloud alpha resource-manager liens list --project "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" - - echo "Status: $status" - echo "Output: $output" - [[ "$status" -eq 0 ]] - - run gcloud compute shared-vpc disable "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" - - echo "Status: $status" - echo "Output: $output" - [[ "$status" -eq 0 ]] - - run gcloud alpha resource-manager liens list --project "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" - - echo "Status: $status" - echo "Output: $output" - [[ "$status" -eq 0 ]] - - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q - - echo "Status: $status" - echo "Output: $output" - [[ "$status" -eq 0 ]] - - run gcloud projects list - [[ ! "$output" =~ "${CLOUD_FOUNDATION_PROJECT_ID}-${RAND}" ]] -} diff --git a/dm/templates/project/tests/integration/project.yaml b/dm/templates/project/tests/integration/project.yaml deleted file mode 100644 index 6d8cab34243..00000000000 --- a/dm/templates/project/tests/integration/project.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Test of the project template. -# -# Variables: -# RAND: a random string used by the testing suite. - -imports: - - path: templates/project/project.py - name: project.py - -resources: - - name: ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND} - type: project.py - properties: - name: ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND} - projectId: ${CLOUD_FOUNDATION_PROJECT_ID}-${RAND} - parent: - id: ${CLOUD_FOUNDATION_ORGANIZATION_ID} - billingAccountId: ${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID} - activateApis: - - compute.googleapis.com - - deploymentmanager.googleapis.com - - pubsub.googleapis.com - serviceAccounts: - - accountId: sa-${RAND} - roles: - - roles/editor - - roles/viewer - sharedVPCHost: True diff --git a/dm/templates/project/tests/schemas/invalid_project.yaml b/dm/templates/project/tests/schemas/invalid_project.yaml deleted file mode 100644 index 4e844186ac1..00000000000 --- a/dm/templates/project/tests/schemas/invalid_project.yaml +++ /dev/null @@ -1,24 +0,0 @@ -parent: - type: folder - id: FOOBAR -billingAccountId: FOOBAR -# activateApis: -# - compute.googleapis.com -serviceAccounts: - - accountId: test-sa-1 - displayName: test service account 1 - roles: - - roles/editor - - roles/viewer - networkAccess: true -groups: - - name: test-group - roles: - - roles/editor - - roles/viewer - networkAccess: false -sharedVPCHost: true -# sharedVPC: FOOBAR -# sharedVPCSubnets: -# - subnetId: default -# region: europe-west1 diff --git a/dm/templates/pubsub/README.md b/dm/templates/pubsub/README.md deleted file mode 100644 index 4d108516f23..00000000000 --- a/dm/templates/pubsub/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Pubsub - -This template creates a Pub/Sub (publish-subscribe) service. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [pubsub.admin](https://cloud.google.com/pubsub/docs/access-control) -IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [pubsub.v1.topic](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics) -- [pubsub.v1.subscription](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions) - -### Properties - -See the `properties` section in the schema file(s): - -- [Pub/Sub](pubsub.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/pubsub.yaml](examples/pubsub.yaml): - -```shell - cp templates/pubsub/examples/pubsub.yaml my_pubsub.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_pubsub.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_pubsub.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Pub/Sub](examples/pubsub.yaml) -- [Pub/Sub with PUSH subscription](examples/pubsub_push.yaml) diff --git a/dm/templates/pubsub/examples/pubsub.yaml b/dm/templates/pubsub/examples/pubsub.yaml deleted file mode 100644 index 36e72a21a55..00000000000 --- a/dm/templates/pubsub/examples/pubsub.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Example of the PubSub template usage. -# -# In this example, a 'test-topic' is created with two PULL subscriptions. -# IAM policies are assigned to the topic and to one of the subscriptions. - -imports: - - path: templates/pubsub/pubsub.py - name: pubsub.py - -resources: - - name: test-pubsub - type: pubsub.py - properties: - name: test-topic - accessControl: - - role: roles/pubsub.subscriber - members: - - user:demo@user.com - subscriptions: - - name: first-subscription - - name: second-subscription - ackDeadlineSeconds: 15 diff --git a/dm/templates/pubsub/examples/pubsub_push.yaml b/dm/templates/pubsub/examples/pubsub_push.yaml deleted file mode 100644 index 576b968e78f..00000000000 --- a/dm/templates/pubsub/examples/pubsub_push.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Example on how to use the Pub/Sub template -# -# In this example, a 'test-topic' is created with one PUSH subscription. -# Replace the following placeholders with valid values: -# : a URL where the messages will be pushed to -# -imports: - - path: templates/pubsub/pubsub.py - name: pubsub.py - -resources: - - name: test-push-pubsub - type: pubsub.py - properties: - name: test-topic - subscriptions: - - name: push-subscription - pushEndpoint: diff --git a/dm/templates/pubsub/pubsub.py b/dm/templates/pubsub/pubsub.py deleted file mode 100644 index f496a32b36e..00000000000 --- a/dm/templates/pubsub/pubsub.py +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Pub/Sub (publish-subscribe) service. """ - -from hashlib import sha1 -import json - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - -def create_subscription(resource_name, project_id, spec): - """ Create a pull/push subscription from the simplified spec. """ - - suffix = 'subscription-{}'.format(sha1((resource_name + json.dumps(spec)).encode('utf-8')).hexdigest()[:10]) - - subscription = { - 'name': '{}-{}'.format(resource_name, suffix), - # https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions - 'type': 'gcp-types/pubsub-v1:projects.subscriptions', - 'properties':{ - 'subscription': spec.get('name', suffix), - 'name': 'projects/{}/subscriptions/{}'.format(project_id, spec.get('name', suffix)), - 'topic': '$(ref.{}.name)'.format(resource_name) - } - } - resources_list = [subscription] - - optional_properties = [ - 'labels', - 'pushConfig', - 'ackDeadlineSeconds', - 'retainAckedMessages', - 'messageRetentionDuration', - 'expirationPolicy', - ] - - for prop in optional_properties: - set_optional_property(subscription['properties'], spec, prop) - - push_endpoint = spec.get('pushEndpoint') - if push_endpoint is not None: - subscription['properties']['pushConfig'] = { - 'pushEndpoint': push_endpoint, - } - - return resources_list - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', properties.get('topic', context.env['name'])) - project_id = properties.get('project', context.env['project']) - - topic = { - 'name': context.env['name'], - # https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics - 'type': 'gcp-types/pubsub-v1:projects.topics', - 'properties':{ - 'topic': name, - 'name': 'projects/{}/topics/{}'.format(project_id, name), - } - } - resources_list = [topic] - - optional_properties = [ - 'labels', - ] - - for prop in optional_properties: - set_optional_property(topic['properties'], properties, prop) - - - subscription_specs = properties.get('subscriptions', []) - - for spec in subscription_specs: - resources_list = resources_list + create_subscription(context.env['name'], project_id, spec) - - return { - 'resources': resources_list, - 'outputs': [ - { - 'name': 'topicName', - 'value': '$(ref.{}.name)'.format(context.env['name']) - } - ], - } diff --git a/dm/templates/pubsub/pubsub.py.schema b/dm/templates/pubsub/pubsub.py.schema deleted file mode 100644 index 5991f487dec..00000000000 --- a/dm/templates/pubsub/pubsub.py.schema +++ /dev/null @@ -1,208 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Pub/Sub (publish-subscribe) service - version: 1.1.0 - author: Sourced Group Inc. - description: | - Creates a topic, optionally with multiple subscriptions. - - For more information on this resource: - - https://cloud.google.com/pubsub/ - - APIs endpoints used by this template: - - gcp-types/pubsub-v1:projects.subscriptions => - https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions - - gcp-types/pubsub-v1:projects.topics => - https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics - -additionalProperties: false - -oneOf: - - required: - - name - - required: - - topic - -properties: - name: - type: string - description: | - The name of the topic that will publish messages. Resource name would be used if omitted. - topic: - type: string - description: | - The name of the topic that will publish messages. If not specified, - the deployment name is used. - DEPRECATED. - project: - type: string - description: | - The project ID of the project containing PubSub resources. The - Google apps domain is prefixed if applicable. - labels: - type: object - description: | - An object containing a list of "key": value pairs. - - Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - subscriptions: - type: array - uniqueItems: True - description: | - A list of topic's subscriptions. - item: - type: object - additionalProperties: false - description: | - The topic's subscription. - oneOf: - - required: - - pushEndpoint - - required: - - pushConfig - properties: - name: - type: string - description: | - The subscription name. Resource name would be used if omitted. - pushEndpoint: - type: string - description: | - The URL of the endpoint to push the messages to. - pushConfig: - type: object - additionalProperties: false - description: | - If push delivery is used with this subscription, this field is used to configure it. - An empty pushConfig signifies that the subscriber will pull and ack messages using API methods. - required: - - pushEndpoint - properties: - pushEndpoint: - type: string - description: | - A URL locating the endpoint to which messages should be pushed. - For example, a Webhook endpoint might use "https://example.com/push". - oidcToken: - type: object - description: | - If specified, Pub/Sub will generate and attach an OIDC JWT token as an Authorization header - in the HTTP request for every pushed message. - properties: - serviceAccountEmail: - type: string - description: | - Service account email to be used for generating the OIDC token. The caller - (for subscriptions.create, subscriptions.patch, and subscriptions.modifyPushConfig RPCs) - must have the iam.serviceAccounts.actAs permission for the service account. - audience: - type: string - description: | - Audience to be used when generating OIDC token. The audience claim identifies the recipients - that the JWT is intended for. The audience value is a single case-sensitive string. - Having multiple values (array) for the audience field is not supported. - More info about the OIDC JWT token audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 - Note: if not specified, the Push endpoint URL will be used. - attributes: - type: object - description: | - Endpoint configuration attributes. - - Every endpoint has a set of API supported attributes that can be used to control different - aspects of the message delivery. - - The currently supported attribute is x-goog-version, which you can use to change the format - of the pushed message. This attribute indicates the version of the data expected by the endpoint. - This controls the shape of the pushed message (i.e., its fields and metadata). - The endpoint version is based on the version of the Pub/Sub API. - - If not present during the subscriptions.create call, it will default to the version of the - API used to make such call. If not present during a subscriptions.modifyPushConfig call, - its value will not be changed. subscriptions.get calls will always return a valid version, - even if the subscription was created without this attribute. - - The possible values for this attribute are: - - v1beta1: uses the push format defined in the v1beta1 Pub/Sub API. - v1 or v1beta2: uses the push format defined in the v1 Pub/Sub API. - An object containing a list of "key": value pairs. - Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. - ackDeadlineSeconds: - type: integer - description: | - The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge - receipt before resending the message. In the interval after the message is delivered and - before it is acknowledged, it is considered to be outstanding. - During that time period, the message will not be redelivered (on a best-effort basis). - - For pull subscriptions, this value is used as the initial value for the ack deadline. To override this - value for a given message, call subscriptions.modifyAckDeadline with the corresponding ackId if using - non-streaming pull or send the ackId in a StreamingModifyAckDeadlineRequest if using streaming pull. - The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify - is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used. - - For push delivery, this value is also used to set the request timeout for the call to the push endpoint. - - If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. - minimum: 0 - maximum: 600 - retainAckedMessages: - type: bool - description: | - Indicates whether to retain acknowledged messages. If true, then messages are not expunged from the - subscription's backlog, even if they are acknowledged, until they fall out of the - messageRetentionDuration window. This must be true if you would like to subscriptions.seek to a timestamp. - messageRetentionDuration: - type: string - description: | - How long to retain unacknowledged messages in the subscription's backlog, from the moment a message - is published. If retainAckedMessages is true, then this also configures the retention of - acknowledged messages, and thus configures how far back in time a subscriptions.seek can be done. - Defaults to 7 days. Cannot be more than 7 days or less than 10 minutes. - - A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". - expirationPolicy: - type: object - description: | - A policy that specifies the conditions for this subscription's expiration. A subscription is - considered active as long as any connected subscriber is successfully consuming messages from - the subscription or is issuing operations on the subscription. If expirationPolicy is not set, - a default policy with ttl of 31 days will be used. The minimum allowed value - for expirationPolicy.ttl is 1 day. - required: - - ttl - properties: - ttl: - type: string - description: | - Specifies the "time-to-live" duration for an associated resource. The resource expires if it is - not active for a period of ttl. The definition of "activity" depends on the type of - the associated resource. The minimum and maximum allowed values for ttl depend on the type - of the associated resource, as well. If ttl is not set, the associated resource never expires. - - A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". - -outputs: - topicName: - type: string - description: The created topic's name. - -documentation: - - templates/pubsub/README.md - -examples: - - templates/pubsub/examples/pubsub.yaml - - templates/pubsub/examples/pubsub_push.yaml diff --git a/dm/templates/pubsub/tests/integration/pubsub.bats b/dm/templates/pubsub/tests/integration/pubsub.bats deleted file mode 100755 index 2956a5e44e5..00000000000 --- a/dm/templates/pubsub/tests/integration/pubsub.bats +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/pubsub/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that test-topic-${RAND} was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud pubsub topics list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "test-topic-${RAND}" ]] -} - -@test "Verifying that test-topic-${RAND}'s IAM policy was set" { - run gcloud beta pubsub topics get-iam-policy test-topic-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "demo@user.com" ]] -} - -@test "Verifying that two subscriptions were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud pubsub subscriptions list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "first-subscription-${RAND}" ]] - [[ "$output" =~ "second-subscription-${RAND}" ]] -} - -@test "Verifying that first-subscription-${RAND}'s topic is test-topic-${RAND}" { - run gcloud pubsub subscriptions describe first-subscription-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "test-topic-${RAND}" ]] -} - -@test "Verifying that first-subscription-${RAND}'s IAM policy was set" { - run gcloud beta pubsub subscriptions get-iam-policy first-subscription-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "demo@user.com" ]] -} - -@test "Verifying that second-subscription-${RAND}'s topic is test-topic-${RAND}" { - run gcloud pubsub subscriptions describe second-subscription-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "test-topic-${RAND}" ]] -} - -@test "Verifying that second-subscription-${RAND}'s ackDeadlineSeconds was set" { - run gcloud pubsub subscriptions describe second-subscription-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "ackDeadlineSeconds: 15" ]] -} - -@test "Verifying that second-subscription-${RAND}'s expiration policy was set" { - run gcloud pubsub subscriptions describe second-subscription-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$output" =~ "expirationPolicy:" ]] - [[ "$output" =~ "ttl: 86400s" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - run gcloud pubsub topics list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-topic-${RAND}" ]] - - run gcloud pubsub subscriptions list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "first-subscription-${RAND}" ]] - [[ ! "$output" =~ "second-subscription-${RAND}" ]] -} diff --git a/dm/templates/pubsub/tests/integration/pubsub.yaml b/dm/templates/pubsub/tests/integration/pubsub.yaml deleted file mode 100644 index 3d5bb29ba13..00000000000 --- a/dm/templates/pubsub/tests/integration/pubsub.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Test of the PubSub template. -# -# Variables: -# RAND: A random string used by the testing suite. - -imports: - - path: templates/pubsub/pubsub.py - name: pubsub.py - -resources: - - name: test-pubsub-${RAND} - type: pubsub.py - properties: - name: test-topic-${RAND} - accessControl: - - role: roles/pubsub.subscriber - members: - - user:demo@user.com - subscriptions: - - name: first-subscription-${RAND} - - name: second-subscription-${RAND} - ackDeadlineSeconds: 15 - expirationPolicy: - ttl: 86400s diff --git a/dm/templates/resource_policy/README.md b/dm/templates/resource_policy/README.md deleted file mode 100644 index 4b73514c69d..00000000000 --- a/dm/templates/resource_policy/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Resource Policy - -This template creates a resource policy. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Enable the [Compute Engine API](https://cloud.google.com/compute/docs/reference/rest/v1/) -- Make sure that the [Google APIs service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) has *compute.resourcePolicies.create* permissions - -## Deployment - -### Resources - -- [gcp-types/compute-v1:resourcePolicies](https://cloud.google.com/compute/docs/reference/rest/v1/resourcePolicies/insert) - -### Properties - -See the `properties` section in the schema file(s): -- [Resource Policy](resource_policy.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd cloud-foundation-toolkit/dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/resource\_policy.yaml](examples/resource_policy.yaml): - -```shell - cp templates/resource_policy/examples/resource_policy.yaml my_resource_policy.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_resource_policy.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_resource_policy.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Resource Policy](examples/resource_policy.yaml) diff --git a/dm/templates/resource_policy/examples/resource_policy.yaml b/dm/templates/resource_policy/examples/resource_policy.yaml deleted file mode 100644 index 57a2a68cac3..00000000000 --- a/dm/templates/resource_policy/examples/resource_policy.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Example of the Resource Policy template usage. -# -# In this example, a Resource Policy is created from the existing source. -# -# Replace the following placeholders with valid values: -# : a region where the resource resides -# : a resource to apply resource policy - -imports: - - path: templates/resource_policy/resource_policy.py - name: resource_policy.py - -resources: - - name: test-resourcepolicy - type: resource_policy.py - properties: - region: - resource: - description: | - Test Resource Policy - snapshotSchedulePolicy: - schedule: - weeklySchedule: - dayOfWeeks: - - day: "MONDAY" - startTime: "00:00" diff --git a/dm/templates/resource_policy/resource_policy.py b/dm/templates/resource_policy/resource_policy.py deleted file mode 100644 index 68d9fb9c83e..00000000000 --- a/dm/templates/resource_policy/resource_policy.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Resource Policy. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - properties = context.properties - project_id = properties.get('project', context.env['project']) - name = properties.get('name', context.env['name']) - region = properties['region'] - resource_name = properties['resource'] - policy = properties['snapshotSchedulePolicy'] - - resource = { - 'name': name, - # https://cloud.google.com/compute/docs/reference/rest/v1/resourcePolicies/insert - 'type': 'gcp-types/compute-v1:resourcePolicies', - 'properties': { - 'project': project_id, - 'name': resource_name, - 'region': region, - 'snapshotSchedulePolicy': policy - } - } - - resources.append(resource) - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'name', - 'value': name - } - ] - } diff --git a/dm/templates/resource_policy/resource_policy.py.schema b/dm/templates/resource_policy/resource_policy.py.schema deleted file mode 100644 index 7cce6233f3a..00000000000 --- a/dm/templates/resource_policy/resource_policy.py.schema +++ /dev/null @@ -1,225 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. - -info: - title: Resource Policy - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of a Resource Policy. - - For more information on this resource: - https://cloud.google.com/compute/docs/reference/rest/v1/resourcePolicies. - - APIs endpoints used by this template: - - gcp-types/compute-v1:resourcePolicies => - https://cloud.google.com/compute/docs/reference/rest/v1/resourcePolicies/insert - -additionalProperties: false - -required: - - snapshotSchedulePolicy - - resource - - region - -properties: - description: - type: string - resource: - description: | - The name of the resource, provided by the client when initially - creating the resource. The resource name must be 1-63 characters long, - and comply with RFC1035. Specifically, the name must be 1-63 characters - long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which - means the first character must be a lowercase letter, and all following - characters must be a dash, lowercase letter, or digit, except the last - character, which cannot be a dash. - pattern: '[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?' - type: string - project: - type: string - description: | - The project ID of the project to create Resource Policy. - region: - description: | - Name of the region for this request. - pattern: '[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?' - type: string - snapshotSchedulePolicy: - $ref: '#/schemas/ResourcePolicySnapshotSchedulePolicy' - description: | - Resource policy for persistent disks for creating snapshots. - -schemas: - ResourcePolicyDailyCycle: - description: | - Time window specified for daily operations. - id: '#ResourcePolicyDailyCycle' - properties: - daysInCycle: - description: Defines a schedule that runs every nth day of the month. - format: int32 - type: integer - startTime: - description: | - Start time of the window. This must be in UTC format that - resolves to one of 00:00, 04:00, 08:00, 12:00, 16:00, or 20:00. For - example, both 13:00-5 and 08:00 are valid. - type: string - type: object - ResourcePolicyHourlyCycle: - description: | - Time window specified for hourly operations. - id: '#ResourcePolicyHourlyCycle' - properties: - hoursInCycle: - description: Allows to define schedule that runs every nth hour. - format: int32 - type: integer - startTime: - description: | - 'Time within the window to start the operations. It must - be in format "HH:MM", where HH : [00-23] and MM : [00-00] GMT.' - type: string - type: object - ResourcePolicySnapshotSchedulePolicy: - description: | - A snapshot schedule policy specifies when and how frequently - snapshots are to be created for the target disk. Also specifies how many - and how long these scheduled snapshots should be retained. - id: '#ResourcePolicySnapshotSchedulePolicy' - properties: - retentionPolicy: - $ref: '#/schemas/ResourcePolicySnapshotSchedulePolicyRetentionPolicy' - description: | - Retention policy applied to snapshots created by this resource - policy. - schedule: - $ref: '#/schemas/ResourcePolicySnapshotSchedulePolicySchedule' - description: | - A Vm Maintenance Policy specifies what kind of infrastructure - maintenance we are allowed to perform on this VM and when. Schedule - that is applied to disks covered by this policy. - snapshotProperties: - $ref: '#/schemas/ResourcePolicySnapshotSchedulePolicySnapshotProperties' - description: | - Properties with which snapshots are created such as labels, - encryption keys. - type: object - ResourcePolicySnapshotSchedulePolicyRetentionPolicy: - description: | - Policy for retention of scheduled snapshots. - id: '#ResourcePolicySnapshotSchedulePolicyRetentionPolicy' - properties: - maxRetentionDays: - description: | - Maximum age of the snapshot that is allowed to be kept. - format: int32 - type: integer - onSourceDiskDelete: - description: | - Specifies the behavior to apply to scheduled snapshots - when the source disk is deleted. - enum: - - APPLY_RETENTION_POLICY - - KEEP_AUTO_SNAPSHOTS - - UNSPECIFIED_ON_SOURCE_DISK_DELETE - enumDescriptions: - - '' - - '' - - '' - type: string - type: object - ResourcePolicySnapshotSchedulePolicySchedule: - description: | - A schedule for disks where the scheduled operations are performed. - id: '#ResourcePolicySnapshotSchedulePolicySchedule' - properties: - dailySchedule: - $ref: '#/schemas/ResourcePolicyDailyCycle' - hourlySchedule: - $ref: '#/schemas/ResourcePolicyHourlyCycle' - weeklySchedule: - $ref: '#/schemas/ResourcePolicyWeeklyCycle' - type: object - ResourcePolicySnapshotSchedulePolicySnapshotProperties: - description: | - Specified snapshot properties for scheduled snapshots created - by this policy. - id: '#ResourcePolicySnapshotSchedulePolicySnapshotProperties' - properties: - guestFlush: - description: | - Indication to perform a ?guest aware? snapshot. - type: boolean - labels: - additionalProperties: - type: string - description: | - Labels to apply to scheduled snapshots. These can be later - modified by the setLabels method. Label values may be empty. - type: object - storageLocations: - description: | - Cloud Storage bucket storage location of the auto snapshot - (regional or multi-regional). - items: - type: string - type: array - type: object - ResourcePolicyWeeklyCycle: - description: | - Time window specified for weekly operations. - id: '#ResourcePolicyWeeklyCycle' - properties: - dayOfWeeks: - description: | - Up to 7 intervals/windows, one for each day of the week. - items: - $ref: '#/schemas/ResourcePolicyWeeklyCycleDayOfWeek' - type: array - type: object - ResourcePolicyWeeklyCycleDayOfWeek: - id: '#ResourcePolicyWeeklyCycleDayOfWeek' - properties: - day: - description: | - Allows to define schedule that runs specified day of the - week. - enum: - - MONDAY - - TUESDAY - - WEDNESDAY - - THURSDAY - - FRIDAY - - SATURDAY - - SUNDAY - type: string - startTime: - description: | - 'Time within the window to start the operations. It must - be in format "HH:MM", where HH : [00-23] and MM : [00-00] GMT.' - type: string - type: object - -outputs: - name: - type: string - description: The resource policy name. - -documentation: - - templates/resource_policy/README.md - -examples: - - templates/resource_policy/examples/resource_policy.yaml diff --git a/dm/templates/resource_policy/tests/integration/resource_policy.bats b/dm/templates/resource_policy/tests/integration/resource_policy.bats deleted file mode 100755 index 1c49c4bd0fa..00000000000 --- a/dm/templates/resource_policy/tests/integration/resource_policy.bats +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # test specific variables - export REGION="us-east1" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/resource_policy/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that test-res-policy-inst-${RAND} was created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute resource-policies list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --filter="region:( ${REGION} )" - [[ "$output" =~ "test-res-policy-inst-${RAND}" ]] -} - -@test "Verifying resource policy test-res-policy-inst-${RAND}" { - run gcloud compute resource-policies describe test-res-policy-inst-${RAND} \ - --region="${REGION}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "day: MONDAY" ]] - [[ "$output" =~ "startTime: 00:00" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - # Due to deployment does not delete resource policy it needs to be removed via CLI tool - gcloud compute resource-policies delete test-res-policy-inst-${RAND} \ - --region="${REGION}" - - run gcloud compute resource-policies list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --filter="region:( ${REGION} )" - [[ ! "$output" =~ "test-res-policy-inst-${RAND}" ]] -} diff --git a/dm/templates/resource_policy/tests/integration/resource_policy.yaml b/dm/templates/resource_policy/tests/integration/resource_policy.yaml deleted file mode 100644 index b5715e100b4..00000000000 --- a/dm/templates/resource_policy/tests/integration/resource_policy.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Test of the Resource Policy template. -# -# Variables: -# RAND: A random string used by the testing suite. -# REGION: A region to deploy instance with resource policy. - -imports: - - path: templates/resource_policy/resource_policy.py - name: resource_policy.py - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: test-resource-policy-${RAND} - type: resource_policy.py - properties: - region: ${REGION} - resource: $(ref.instance-res-pol-${RAND}.name) - snapshotSchedulePolicy: - schedule: - weeklySchedule: - dayOfWeeks: - - day: "MONDAY" - startTime: "00:00" - - -# Test prerequisites: - - name: instance-res-pol-${RAND} - type: instance.py - properties: - zone: ${REGION}-b - name: test-res-policy-inst-${RAND} - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - machineType: f1-micro - canIpForward: true - diskType: pd-ssd - diskSizeGb: 50 - networks: - - network: $(ref.test-network-0-${RAND}.selfLink) - subnetwork: $(ref.test-subnetwork-0-${RAND}.selfLink) - - name: test-network-0-${RAND} - type: compute.v1.network - properties: - autoCreateSubnetworks: false - - name: test-subnetwork-0-${RAND} - type: compute.v1.subnetwork - properties: - network: $(ref.test-network-0-${RAND}.selfLink) - ipCidrRange: 10.0.1.0/24 - region: ${REGION} diff --git a/dm/templates/route/README.md b/dm/templates/route/README.md deleted file mode 100644 index 20cef8a67e1..00000000000 --- a/dm/templates/route/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Route - -This template creates a route. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network](../network/README.md) -- Optionally, create one or more of the following based on your traffic destination ([see examples/route.yaml](examples/route.yaml)): - - [VM](../vm/vm.md) - - [VPN Tunnel](../vpn/README.md) -- Grant the [compute.networkAdmin or compute.admin](https://cloud.google.com/compute/docs/access/iam) IAM role to the project service account - -## Deployment - -### Resources - -- [compute.v1.route](https://cloud.google.com/compute/docs/reference/rest/v1/routes) - - -### Properties - -See `properties` section in the schema file(s): - -- [Route](route.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/route.yaml](examples/route.yaml): - -```shell - cp templates/route/examples/route.yaml my_route.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_route.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_route.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` -## Examples - -- [Route](examples/route.yaml) diff --git a/dm/templates/route/examples/route.yaml b/dm/templates/route/examples/route.yaml deleted file mode 100644 index 2bbbd07f58b..00000000000 --- a/dm/templates/route/examples/route.yaml +++ /dev/null @@ -1,65 +0,0 @@ -# Example of the route template usage. -# -# In this example, routes are created for 4 types of destination traffic -# handlers: -# 1- a static IP route (test-ip-route) -# 2- an instance route (test-instance-route) -# 3- a gateway route (test-gateway-route) -# 4- a vpn tunnel route (test-vpn-tunnel-route) -# -# The value of the 'routeType' property determines what destination property must -# be set: -# -If the routeType is 'ipaddress', the 'nextHopIp' property must be set. -# Replace the IP placeholder with your static IP address. -# -If the routeType is 'instance', the 'instanceName' property must be set. -# Replace the instance placeholder with your instance name. -# -If the routeType is 'gateway', the 'gatewayName' property must be set. -# This must be set to 'default-internet-gateway'. -# https://cloud.google.com/compute/docs/reference/rest/v1/routes -# -If the routeType is 'vpntunnel', the 'vpnTunnelName' property must be -# set. Replace the vpntunnel placeholder with your VPN -# tunnel name. -# -# Replace the `network` name placeholder with your actual VPC name. -# Replace the `nextHopIp` with a valid IP address for your route -# Replace the `vpnTunnelName` with the actual VPN name. - -imports: - - path: templates/route/route.py - name: route.py - -resources: - - name: test-routes - type: route.py - properties: - network: - routes: - - name: test-ip-route - nextHopIp: - priority: 20000 - destRange: 0.0.0.0/0 - tags: - - my-iproute-tag - - name: test-instance-route - routeType: instance - instanceName: test-instance-name - zone: us-east1-b - priority: 30000 - destRange: 0.0.0.0/0 - tags: - - my-instanceroute-tag - - name: test-gateway-route - routeType: gateway - gatewayName: default-internet-gateway - priority: 40000 - destRange: 0.0.0.0/0 - tags: - - my-gatewayroute-tag - - name: test-vpn-tunnel-route - routeType: vpntunnel - vpnTunnelName: - region: us-east1 - priority: 500 - destRange: 0.0.0.0/0 - tags: - - my-vpntunnelroute-tag diff --git a/dm/templates/route/route.py b/dm/templates/route/route.py deleted file mode 100644 index 838222181d6..00000000000 --- a/dm/templates/route/route.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -"""This template creates a custom route.""" - - -from hashlib import sha1 -import json - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - - network_name = generate_network_url(properties) - - resources = [] - out = {} - for i, route in enumerate(properties['routes'], 1000): - name = route.get('name') - if not name: - name = '{}-{}'.format(context.env['name'], sha1(json.dumps(route).encode('utf-8')).hexdigest()[:10]) - - route_properties = { - 'name': name, - 'network': network_name, - 'project': project_id, - 'priority': route.get('priority', i), - } - for specified_properties in route: - route_properties[specified_properties] = route[specified_properties] - - resources.append( - { - 'name': name, - 'type': 'single_route.py', - 'properties': route_properties - } - ) - - out[name] = { - 'selfLink': '$(ref.' + name + '.selfLink)', - 'nextHopNetwork': '$(ref.' + name + '.nextHopNetwork)', - } - - outputs = [{'name': 'routes', 'value': out}] - - return {'resources': resources, 'outputs': outputs} - - -def generate_network_url(properties): - """ Gets the network name. """ - - network_name = properties.get('network') - is_self_link = '/' in network_name or '.' in network_name - - if is_self_link: - network_url = network_name - else: - network_url = 'global/networks/{}'.format(network_name) - - return network_url diff --git a/dm/templates/route/route.py.schema b/dm/templates/route/route.py.schema deleted file mode 100644 index 9ef724f192d..00000000000 --- a/dm/templates/route/route.py.schema +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Route - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a custom route. - - For more information on this resource: - https://cloud.google.com/vpc/docs/routes - - APIs endpoints used by this template: - - gcp-types/compute-v1:instanceTemplates => - https://cloud.google.com/compute/docs/reference/rest/v1/routes - -imports: - - path: ../route/single_route.py - name: single_route.py - -additionalProperties: false - -required: - - network - - routes - -properties: - network: - type: string - description: | - Name of the network the route applies to. - project: - type: string - description: | - The project ID of the project containing the Route. - routes: - type: array - uniqueItems: True - minItems: 1 - description: A list of routes. - items: - type: object - description: | - Please check the properties in single_route.py.schema for details. - required: - - tags - - destRange - -outputs: - routes: - type: array - description: Array of route information. - items: - description: | - The name of the firewall rule resource. For example, the output can - be referenced as: $(ref..routes..selfLink) - patternProperties: - ".*": - type: object - description: | - Details for a route resource. Please check the outputs in - single_route.py.schema for details. - -documentation: - - templates/route/README.md - -examples: - - templates/route/examples/route.yaml diff --git a/dm/templates/route/single_route.py b/dm/templates/route/single_route.py deleted file mode 100644 index 9cb537714d1..00000000000 --- a/dm/templates/route/single_route.py +++ /dev/null @@ -1,119 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. -"""This template creates a custom route.""" - - -from hashlib import sha1 -import json - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - name = context.env['name'] - - # Set the common route properties. - res_properties = { - 'name': properties.get('name', name), - 'network': properties['network'], - 'project': project_id, - 'tags': properties['tags'], - 'priority': properties['priority'], - 'destRange': properties['destRange'] - } - - # Check the route type and fill out the following fields: - if properties.get('routeType') == 'instance': - instance_name = properties.get('instanceName') - zone = properties.get('zone', '') - res_properties['nextHopInstance'] = generate_instance_url( - project_id, - zone, - instance_name - ) - elif properties.get('routeType') == 'gateway': - gateway_name = properties.get('gatewayName') - res_properties['nextHopGateway'] = generate_gateway_url( - project_id, - gateway_name - ) - elif properties.get('routeType') == 'vpntunnel': - vpn_tunnel_name = properties.get('vpnTunnelName') - region = properties.get('region', '') - res_properties['nextHopVpnTunnel'] = generate_vpn_tunnel_url( - project_id, - region, - vpn_tunnel_name - ) - - optional_properties = [ - 'nextHopIp', - 'nextHopInstance', - 'nextHopNetwork', - 'nextHopGateway', - 'nextHopVpnTunnel', - ] - - for prop in optional_properties: - if prop in properties: - res_properties[prop] = properties[prop] - - resources = [ - { - 'name': name, - # https://cloud.google.com/compute/docs/reference/rest/v1/routes - 'type': 'gcp-types/compute-v1:routes', - 'properties': res_properties - } - ] - - outputs = [ - {'name': 'selfLink', 'value': '$(ref.' + name + '.selfLink)'}, - {'name': 'nextHopNetwork', 'value': properties['network']}, - ] - - return {'resources': resources, 'outputs': outputs} - - -def generate_instance_url(project, zone, instance): - """ Format the resource name as a resource URI. """ - - is_self_link = '/' in instance or '.' in instance - - if is_self_link: - instance_url = instance - else: - instance_url = 'projects/{}/zones/{}/instances/{}' - instance_url = instance_url.format(project, zone, instance) - - return instance_url - - -def generate_gateway_url(project, gateway): - """ Format the resource name as a resource URI. """ - return 'projects/{}/global/gateways/{}'.format(project, gateway) - - -def generate_vpn_tunnel_url(project, region, vpn_tunnel): - """ Format the resource name as a resource URI. """ - is_self_link = '/' in vpn_tunnel or '.' in vpn_tunnel - - if is_self_link: - tunnel_url = vpn_tunnel - else: - tunnel_url = 'projects/{}/regions/{}/vpnTunnels/{}' - tunnel_url = tunnel_url.format(project, region, vpn_tunnel) - return tunnel_url diff --git a/dm/templates/route/single_route.py.schema b/dm/templates/route/single_route.py.schema deleted file mode 100644 index 4f29a1bbc0d..00000000000 --- a/dm/templates/route/single_route.py.schema +++ /dev/null @@ -1,238 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. - -info: - title: Route - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a custom route. - - For more information on this resource: - https://cloud.google.com/vpc/docs/routes - - APIs endpoints used by this template: - - gcp-types/compute-v1:instanceTemplates => - https://cloud.google.com/compute/docs/reference/rest/v1/routes - -additionalProperties: false - -required: -- name -- network -- tags -- destRange - -allOf: - - oneOf: - - required: - - nextHopInstance - - required: - - nextHopNetwork - - required: - - nextHopGateway - - required: - - nextHopVpnTunnel - - anyOf: - - required: - - nextHopIp - - required: - - routeType - - oneOf: - - allOf: - - not: - required: - - routeType - - not: - required: - - nextHopIp - - required: - - nextHopIp - - required: - - instanceName - - required: - - gatewayName - - required: - - vpnTunnelName - - oneOf: - - not: - required: - - gatewayName - - allOf: - - required: - - gatewayName - - routeType - - properties: - routeType: - enum: ["gateway"] - - oneOf: - - not: - required: - - vpnTunnelName - - allOf: - - required: - - vpnTunnelName - - routeType - - region - - properties: - routeType: - enum: ["vpntunnel"] - - oneOf: - - not: - required: - - instanceName - - allOf: - - required: - - instanceName - - routeType - - zone - - properties: - routeType: - enum: ["instance"] - - oneOf: - - not: - required: - - nextHopIp - - allOf: - - required: - - nextHopIp - - routeType - - properties: - routeType: - enum: ["ipaddress"] - - allOf: - - required: - - nextHopIp - - not: - required: - - routeType - -properties: - name: - type: string - description: | - Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, - and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression - [a-z]([-a-z0-9]*[a-z0-9])?. The first character must be a lowercase letter, and all following characters - (except for the last character) must be a dash, lowercase letter, or digit. - The last character must be a lowercase letter or digit. - Resource name would be used if omitted. - description: - type: string - description: | - An optional description of this resource. Provide this property when you create the resource. - network: - type: string - description: | - Name of the network the route applies to. - project: - type: string - description: | - The project ID of the project containing the Route. - routeType: - type: string - description: | - The resource type that will handle the matching packets. - Optionally you can use nextHop* attributes without specifying this field - enum: - - ipaddress - - instance - - gateway - - vpntunnel - tags: - type: array - uniqueItems: True - minItems: 1 - description: | - A list of instance tags to which the route applies. - items: - type: string - description: An instance tag for the route. - priority: - type: number - description: | - The priority of this route. Priority is used to break ties in cases where there is more than one - matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one - with the lowest-numbered priority value wins. The default value is 1000. - The priority value must be from 0 to 65535, inclusive. - default: 1000 - minimum: 0 - maximum: 65535 - destRange: - type: string - description: | - The destination range of outgoing packets the route applies - to. Example: 192.168.0.1/10. Only IPv4 is supported. - pattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}\/[0-9]{1,2}$ - nextHopInstance: - type: string - description: | - The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. - For example: - https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/ - nextHopIp: - type: string - description: | - Used when routeType is 'ipaddress'. - The network IP address of the instance that should handle the matching - packets. Example: 192.168.0.1. Only IPv4 is supported. - pattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}$ - nextHopNetwork: - type: string - description: | - The URL of the local network if it should handle matching packets. - nextHopGateway: - type: string - description: | - The URL to a gateway that should handle matching packets. You can only specify the internet gateway using - a full or partial valid URL: - projects/project/global/gateways/default-internet-gateway - nextHopVpnTunnel: - type: string - description: | - The URL to a VpnTunnel that should handle matching packets. - instanceName: - type: string - description: | - Used when routeType is 'instance'. - The name of the instance that should handle the matching packets. - zone: - type: string - description: | - Used when routeType is 'instance'. - The zone where the instance resides. - gatewayName: - type: string - description: | - Used when routeType is 'gateway'. - The name of the gateway that will handle the matching packets. Only the - 'default-internet-gateway' value is supported. - vpnTunnelName: - type: string - description: | - Used when routeType is 'vpntunnel'. - The name of the VPN tunnel that should handle the matching packets. - region: - type: string - description: | - Used when routeType is 'vpntunnel'. - The region where the VPN tunnel resides. - -outputs: - selfLink: - type: string - description: The URI (SelfLink) of the firewall rule resource. - nextHopNetwork: - type: string - description: URL to a Network that should handle matching packets. diff --git a/dm/templates/route/tests/integration/route.bats b/dm/templates/route/tests/integration/route.bats deleted file mode 100644 index 732b036cabc..00000000000 --- a/dm/templates/route/tests/integration/route.bats +++ /dev/null @@ -1,202 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/route/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud compute networks create network-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "integration test ${RAND}" \ - --subnet-mode custom - gcloud compute networks subnets create subnet-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network network-${RAND} \ - --range 10.118.8.0/22 \ - --region us-east1 - gcloud compute routers create router-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network network-${RAND} \ - --asn 65001 \ - --region us-east1 - gcloud compute target-vpn-gateways create gateway-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network network-${RAND} \ - --region us-east1 - gcloud compute addresses create staticip-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 - gcloud compute forwarding-rules create esprule-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --target-vpn-gateway gateway-${RAND} \ - --region us-east1 \ - --ip-protocol "ESP" \ - --address staticip-${RAND} - gcloud compute forwarding-rules create udp4500rule-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --target-vpn-gateway gateway-${RAND} \ - --region us-east1 \ - --ip-protocol "UDP" \ - --address staticip-${RAND} \ - --ports 4500 - gcloud compute forwarding-rules create udp500rule-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --target-vpn-gateway gateway-${RAND} \ - --region us-east1 \ - --ip-protocol "UDP" \ - --address staticip-${RAND} \ - --ports 500 - gcloud compute vpn-tunnels create vpntunnel-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --peer-address 1.2.3.4 \ - --shared-secret 'superSecretPassw0rd' \ - --target-vpn-gateway gateway-${RAND} \ - --router router-${RAND} \ - --region us-east1 - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute vpn-tunnels delete vpntunnel-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute forwarding-rules delete udp500rule-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute forwarding-rules delete udp4500rule-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute forwarding-rules delete esprule-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute addresses delete staticip-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute target-vpn-gateways delete gateway-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute routers delete router-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute networks subnets delete subnet-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute networks delete network-${RAND} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - delete_config - rm -f ${RANDOM_FILE} - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --config "${CONFIG}" - - echo "status = ${status}" - echo "output = ${output}" - - [ "$status" -eq 0 ] -} - -@test "Verifying that resources were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute routes list --filter="name:gateway-route-${RAND} AND priority:1002" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "status = ${status}" - echo "output = ${output}" - echo "lines1 = ${lines[1]}" - - [ "$status" -eq 0 ] - [[ "${lines[1]}" =~ "gateway-route-${RAND}" ]] - - run gcloud compute routes list --filter="name:instance-route-${RAND} AND priority:1001" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "status = ${status}" - echo "output = ${output}" - echo "lines1 = ${lines[1]}" - - [ "$status" -eq 0 ] - [[ "${lines[1]}" =~ "instance-route-${RAND}" ]] - - run gcloud compute routes list --filter="(name:ip-route-${RAND} AND priority:20000)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "status = ${status}" - echo "output = ${output}" - echo "lines1 = ${lines[1]}" - - [ "$status" -eq 0 ] - [[ "${lines[1]}" =~ "ip-route-${RAND}" ]] - - run gcloud compute routes list --filter="(name:vpn-tunnel-route-${RAND} AND priority:500)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "status = ${status}" - echo "output = ${output}" - echo "lines1 = ${lines[1]}" - - [ "$status" -eq 0 ] - [[ "${lines[1]}" =~ "vpn-tunnel-route-${RAND}" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run gcloud compute routes list --filter="name:gateway-route-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "gateway-route-${RAND}" ]] - - run gcloud compute routes list --filter="name:instance-route-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "instance-route-${RAND}" ]] - - run gcloud compute routes list --filter="name:ip-route-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "ip-route-${RAND}" ]] - - run gcloud compute routes list --filter="name:vpn-runnel-route-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "vpn-tunnel-route-${RAND}" ]] -} diff --git a/dm/templates/route/tests/integration/route.yaml b/dm/templates/route/tests/integration/route.yaml deleted file mode 100644 index 196110c873d..00000000000 --- a/dm/templates/route/tests/integration/route.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# Test of the route template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/route/route.py - name: route.py - -resources: - - name: test-ip-route-${RAND} - type: route.py - properties: - network: network-${RAND} - routes: - - name: ip-route-${RAND} - nextHopIp: 10.118.8.12 - priority: 20000 - destRange: 0.0.0.0/0 - tags: - - my-iproute-tag - - name: instance-route-${RAND} - routeType: instance - instanceName: my-instance-name - zone: us-east1-b - destRange: 0.0.0.0/0 - tags: - - my-instanceroute-tag - - name: gateway-route-${RAND} - routeType: gateway - gatewayName: default-internet-gateway - destRange: 0.0.0.0/0 - tags: - - my-gatewayroute-tag - - name: vpn-tunnel-route-${RAND} - routeType: vpntunnel - vpnTunnelName: vpntunnel-${RAND} - region: us-east1 - priority: 500 - destRange: 0.0.0.0/0 - tags: - - my-vpntunnelroute-tag - - nextHopIp: 10.118.8.13 - destRange: 0.0.0.0/0 - tags: - - my-iproute-tag diff --git a/dm/templates/runtime_config/README.md b/dm/templates/runtime_config/README.md deleted file mode 100644 index 54bc38b84ac..00000000000 --- a/dm/templates/runtime_config/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Google Cloud Runtime Configurator - -This template creates a Runtime Configurator with the associated resources. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Install gcloud **beta** components: - - ```shell - gcloud components update - gcloud components install beta - ``` - -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Enable the [Cloud Runtime Configurator API](https://console.developers.google.com/apis/api/runtimeconfig.googleapis.com) -- Grant the [Cloud RuntimeConfig Admin](https://cloud.google.com/deployment-manager/runtime-configurator/access-control) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [v1beta1.projects.configs](https://cloud.google.com/deployment-manager/runtime-configurator/create-and-delete-runtimeconfig-resources) - -### Properties - -See the `properties` section in the schema file(s): - -- [Runtime Config Schema](runtime_config.py.schema) -- [Variable Schema](variable.py.schema) -- [Waiter Schema](waiter.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment, - in this case [examples/runtime\_config.yaml](examples/runtime_config.yaml) - - ```shell - cp templates/runtime_config/examples/runtime_config.yaml my_runtime_config.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - - ```shell - vim my_runtime_config.yaml # <== change values to match your GCP setup - ``` - -5. Create your deployment as described below, replacing `` - with your with your own deployment name - - ```shell - gcloud deployment-manager deployments create \ - --config my_runtime_config.yaml - ``` - -6. In case you need to delete your deployment: - - ```shell - gcloud deployment-manager deployments delete - ``` - -## Examples - -- [Cloud Runtime Configurator with Variables and Waiters](examples/runtime_config.yaml) diff --git a/dm/templates/runtime_config/examples/runtime_config.yaml b/dm/templates/runtime_config/examples/runtime_config.yaml deleted file mode 100644 index 557087de7d8..00000000000 --- a/dm/templates/runtime_config/examples/runtime_config.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Example of the runtime config template usage. - -imports: - - path: templates/runtime_config/runtime_config.py - name: runtime_config.py - -resources: - - name: my-test-config - type: runtime_config.py - properties: - name: my-test-config - description: my config description - variables: - - name: myapp/dev/sql/connection_string - text: super text value - - name: myapp/dev/web/wildcardcert - value: c3VwZXJhd2Vzb21ldGV4dAo= - waiters: - - name: my-test-waiter - timeout: 3.5s - success: - cardinality: - path: myapp/dev - number: 2 diff --git a/dm/templates/runtime_config/runtime_config.py b/dm/templates/runtime_config/runtime_config.py deleted file mode 100644 index 61e36a63db3..00000000000 --- a/dm/templates/runtime_config/runtime_config.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" -This template creates a Runtime Configurator with the associated resources. -""" - - -from hashlib import sha1 - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - properties = context.properties - project_id = properties.get('projectId', context.env['project']) - name = properties.get('name', properties.get('config', context.env['name'])) - parent = 'projects/{}/configs/{}'.format(project_id, name) - - # The runtimeconfig resource. - runtime_config = { - 'name': name, - # https://cloud.google.com/deployment-manager/runtime-configurator/reference/rest/v1beta1/projects.configs - 'type': 'gcp-types/runtimeconfig-v1beta1:projects.configs', - 'properties': { - 'config': name, - # TODO: uncomment after gcp type is fixed - # 'project': project_id, - 'description': properties['description'] - } - } - - resources.append(runtime_config) - - # The runtimeconfig variable resources. - for variable in properties.get('variables', []): - suffix = sha1('{}-{}'.format(context.env['name'], variable.get('name', variable.get('variable'))).encode('utf-8')).hexdigest()[:10] - variable['project'] = project_id - variable['parent'] = parent - variable['config'] = name - variable_res = { - 'name': '{}-{}'.format(context.env['name'], suffix), - 'type': 'variable.py', - 'properties': variable - } - resources.append(variable_res) - - # The runtimeconfig waiter resources. - for waiter in properties.get('waiters', []): - suffix = sha1('{}-{}'.format(context.env['name'], waiter.get('name', waiter.get('waiter'))).encode('utf-8')).hexdigest()[:10] - waiter['project'] = project_id - waiter['parent'] = parent - waiter['config'] = name - waiter_res = { - 'name': '{}-{}'.format(context.env['name'], suffix), - 'type': 'waiter.py', - 'properties': waiter - } - resources.append(waiter_res) - - outputs = [{'name': 'configName', 'value': '$(ref.{}.name)'.format(name)}] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/runtime_config/runtime_config.py.schema b/dm/templates/runtime_config/runtime_config.py.schema deleted file mode 100644 index 8553c88dc08..00000000000 --- a/dm/templates/runtime_config/runtime_config.py.schema +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Runtime Configurator - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of a Runtime Configurator. - - For more information on this resource, see - https://cloud.google.com/deployment-manager/runtime-configurator/ - - APIs endpoints used by this template: - - gcp-types/runtimeconfig-v1beta1:projects.configs => - https://cloud.google.com/deployment-manager/runtime-configurator/reference/rest/v1beta1/projects.configs - -imports: - - path: variable.py - - path: waiter.py - -additionalProperties: false - -oneOf: - - required: - - config - - required: - - name - -properties: - config: - type: string - description: | - The config resource name. DEPRECATED, use "name" - Resource name would be used if omitted. - name: - type: string - description: | - The config resource name. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - projectId: - type: string - description: ProjectID of the project to create the config in. - description: - type: string - description: The config resource description. - variables: - type: array - uniqItems: true - description: | - The list of variables as defined in the variable.py template. - Example: - - variableName: myappvariable - variableTextValue: "my variable value" - waiters: - type: array - uniqItems: true - description: | - The list of waiters as defined in the waiter.py template. - Example: - - waiter: mywaiter - timeout: 3.5s - success: - cardinality: - path: myapp/dev - number: 2 - - -documentation: - - templates/runtime_config/README.md - -examples: - - templates/runtime_config/examples/runtime_config.yaml diff --git a/dm/templates/runtime_config/tests/integration/runtime_config.bats b/dm/templates/runtime_config/tests/integration/runtime_config.bats deleted file mode 100644 index 9523d89d50e..00000000000 --- a/dm/templates/runtime_config/tests/integration/runtime_config.bats +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - export CONFIG_NAME="test-config-${RAND}" - export VARIABLE_1="test/dev/db/connection_string" - export VARIABLE_1_VALUE="Server=sqlsrv;Database=mydb;Uid=uname;Pwd=pwd;" - export VARIABLE_2="test/dev/web/appvalue" - # 'my test text value' in base64 - export VARIABLE_2_VALUE="bXkgdGVzdCB0ZXh0IHZhbHVl" - export WAITER_NAME="test-waiter-${RAND}" - export WAITER_TIMEOUT="2.500s" - export WAITER_PATH="test/dev" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verify if CONFIG ${CONFIG_NAME} is created " { - run gcloud beta runtime-config configs list --format="value(name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${CONFIG_NAME}" ]] -} - -@test "Verify if VARIABLE ${VARIABLE_1} is created " { - run gcloud beta runtime-config configs variables list \ - --config-name ${CONFIG_NAME} \ - --format="value(name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${VARIABLE_1}" ]] -} - -@test "Verify if VARIABLE ${VARIABLE_1} has value ${VARIABLE_1_VALUE} " { - run gcloud beta runtime-config configs variables get-value ${VARIABLE_1} \ - --config-name ${CONFIG_NAME} - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${VARIABLE_1_VALUE}" ]] -} - -@test "Verify if VARIABLE ${VARIABLE_2} is created " { - run gcloud beta runtime-config configs variables list \ - --config-name ${CONFIG_NAME} \ - --format="value(name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${VARIABLE_2}" ]] -} - -@test "Verify if VARIABLE ${VARIABLE_2} has value ${VARIABLE_2_VALUE} " { - run gcloud beta runtime-config configs variables get-value ${VARIABLE_2} \ - --config-name ${CONFIG_NAME} - [[ "$status" -eq 0 ]] - [[ "$output" =~ "my test text value" ]] -} - -@test "Verify if WAITER ${WAITER_NAME} is created " { - run gcloud beta runtime-config configs waiters list \ - --config-name ${CONFIG_NAME} \ - --format="value(name)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${WAITER_NAME}" ]] -} - -@test "Verify if WAITER ${WAITER_NAME} has timeout ${WAITER_TIMEOUT} " { - run gcloud beta runtime-config configs waiters describe ${WAITER_NAME} \ - --config-name ${CONFIG_NAME} \ - --format="value(timeout)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${WAITER_TIMEOUT}" ]] -} - -@test "Verify if WAITER ${WAITER_NAME} success path is ${WAITER_PATH} " { - run gcloud beta runtime-config configs waiters describe ${WAITER_NAME} \ - --config-name ${CONFIG_NAME} \ - --format="value(success.cardinality.path)" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${WAITER_PATH}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/runtime_config/tests/integration/runtime_config.yaml b/dm/templates/runtime_config/tests/integration/runtime_config.yaml deleted file mode 100644 index 996720c33b1..00000000000 --- a/dm/templates/runtime_config/tests/integration/runtime_config.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Test of the Runtime Configurator template. - -imports: - - path: templates/runtime_config/runtime_config.py - name: runtime_config.py - -resources: - - name: ${CONFIG_NAME} - type: runtime_config.py - properties: - name: ${CONFIG_NAME} - description: my config description - variables: - - name: ${VARIABLE_1} - text: ${VARIABLE_1_VALUE} - - name: ${VARIABLE_2} - value: ${VARIABLE_2_VALUE} - waiters: - - name: ${WAITER_NAME} - timeout: ${WAITER_TIMEOUT} - success: - cardinality: - path: ${WAITER_PATH} - number: 2 diff --git a/dm/templates/runtime_config/variable.py b/dm/templates/runtime_config/variable.py deleted file mode 100644 index 21d0c207ecb..00000000000 --- a/dm/templates/runtime_config/variable.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" Creates a runtimeConfig variable resource. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - config_name = context.properties.get('config') - - props = { - 'variable': properties.get('name', properties.get('variable')), - 'parent': properties['parent'], - # TODO: uncomment after gcp type is fixed - # 'project': project_id, - } - - optional_properties = ['text', 'value'] - props.update({ - p: properties[p] - for p in optional_properties if p in properties - }) - - resources = [{ - 'name': context.env['name'], - # https://cloud.google.com/deployment-manager/runtime-configurator/reference/rest/v1beta1/projects.configs.variables - 'type': 'gcp-types/runtimeconfig-v1beta1:projects.configs.variables', - 'properties': props, - 'metadata': { - 'dependsOn': [config_name] - } - }] - - outputs = [{ - 'name': 'updateTime', - 'value': '$(ref.{}.updateTime)'.format(context.env['name']) - }] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/runtime_config/variable.py.schema b/dm/templates/runtime_config/variable.py.schema deleted file mode 100644 index 8cbcf916ea1..00000000000 --- a/dm/templates/runtime_config/variable.py.schema +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Variable - author: Sourced Group Inc. - version: 1.0.0 - description: | - Creates a RuntimeConfig variable resource. - - For more information on this resource, see - https://cloud.google.com/deployment-manager/runtime-configurator/ - - APIs endpoints used by this template: - - gcp-types/runtimeconfig-v1beta1:projects.configs.variables => - https://cloud.google.com/deployment-manager/runtime-configurator/reference/rest/v1beta1/projects.configs.variables - -additionalProperties: false - -required: - - parent - -allOf: - - oneOf: - - required: - - text - - required: - - value - - oneOf: - - required: - - variable - - required: - - name - -properties: - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - parent: - type: string - description: | - The path to the configuration that will own the waiter. - The configuration must exist beforehand; the path must be in the - projects/[PROJECT_ID]/configs/[CONFIG_NAME] format. - name: - type: string - description: | - The key (name) of the variable. For example, status and - users/jane-smith/favorite_color are valid keys. Can contain digits, - letters, dashes, and slashes. The max length is 256 characters. - variable: - type: string - description: | - DEPRECATED, please use "name" - config: - type: string - description: | - Config resource name (for dependency) - text: - type: string - description: | - The string value of the variable. The length of the value must be less - than 4096 bytes. Empty values are also accepted. - For example, text: "my text value". The string must be valid UTF-8. - value: - type: string - description: | - The binary value of the variable. The length of the value must be less - than 4096 bytes. Empty values are also accepted. The value must be base64 - encoded. Only one of value or text can be set. - A base64-encoded string. - -outputs: - updateTime: - type: string - description: The time when the variable was last updated. - -documentation: - - templates/runtime_config/README.md - -examples: - - templates/runtime_config/examples/runtime_config.yaml diff --git a/dm/templates/runtime_config/waiter.py b/dm/templates/runtime_config/waiter.py deleted file mode 100644 index 192327d776a..00000000000 --- a/dm/templates/runtime_config/waiter.py +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" Creates a runtimeConfig waiter resource. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - project_id = properties.get('project', context.env['project']) - config_name = properties.get('config') - - props = { - 'waiter': properties.get('name', properties.get('waiter')), - 'parent': properties['parent'], - 'timeout': properties['timeout'], - 'success': properties['success'], - # TODO: uncomment after gcp type is fixed - # 'project': project_id, - } - - optional_properties = ['failure'] - props.update({ - p: properties[p] - for p in optional_properties if p in properties - }) - - resources = [{ - 'name': context.env['name'], - # https://cloud.google.com/deployment-manager/runtime-configurator/reference/rest/v1beta1/projects.configs.waiters - 'type': 'gcp-types/runtimeconfig-v1beta1:projects.configs.waiters', - 'properties': props, - 'metadata': { - 'dependsOn': [config_name] - } - }] - - outputs = [{ - 'name': 'createTime', - 'value': '$(ref.{}.createTime)'.format(context.env['name']) - }] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/runtime_config/waiter.py.schema b/dm/templates/runtime_config/waiter.py.schema deleted file mode 100644 index f1ec167398a..00000000000 --- a/dm/templates/runtime_config/waiter.py.schema +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Waiter - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of a RuntimeConfig Waiter resource. - - For more information on this resource, see - https://cloud.google.com/deployment-manager/runtime-configurator/creating-a-waiter - - APIs endpoints used by this template: - - gcp-types/runtimeconfig-v1beta1:projects.configs.waiters => - https://cloud.google.com/deployment-manager/runtime-configurator/reference/rest/v1beta1/projects.configs.waiters - -additionalProperties: false - -required: - - parent - - timeout - - success - -oneOf: - - required: - - waiter - - required: - - name - -properties: - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - parent: - type: string - description: | - The path to the configuration that will own the waiter. - The configuration must exist beforehand; the path must be in the - projects/[PROJECT_ID]/configs/[CONFIG_NAME] format. - name: - type: string - description: | - The name of the waiter resource, in the - projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME] format. - Must match the RFC 1035 segment specification. Maximum length is 64 - bytes. - waiter: - type: string - description: | - DEPRECATED, please use "name" - config: - type: string - description: | - Config resource name (for dependency) - timeout: - type: string - description: | - The timeout of the waiter in seconds, beginning from the - instant when the waiters().create method is called; e.g., "3.5s". - If this time elapses before the success or failure conditions are met, - the waiter fails and sets the error code to DEADLINE_EXCEEDED. - failure: - type: object - additionalProperties: false - description: | - The failure condition for the waiter. If this condition is met, done is - set to True, and the error code is set to ABORTED. The failure - condition takes precedence over the success condition. If both conditions - are met, the failure is indicated. This value is optional; if no - failure condition is set, the only failure scenario is the timeout. - properties: - cardinality: - type: object - additionalProperties: false - description: The cardinality of the EndCondition. - properties: - path: - type: string - description: | - The root of the variable subtree to monitor. E.g., /foo. - number: - type: number - default: 1 - description: | - The number of variables under the path that must exist to meet - this condition. If not specified, defaults to 1. - success: - type: object - additionalProperties: false - description: | - The success condition. If this condition is met, done is set to True, - and the error value remains unset. The failure condition takes - precedence over the success condition. If both conditions are met, the - failure is indicated. - properties: - cardinality: - type: object - additionalProperties: false - description: The cardinality of the EndCondition. - properties: - path: - type: string - description: | - The root of the variable subtree to monitor. E.g. /foo. - number: - type: number - default: 1 - description: | - The number of variables under the path that must exist to meet - this condition. If not specified, defaults to 1. - -outputs: - createTime: - type: string - description: | - The instant at which the waiter resource was created. - A timestamp in the RFC3339 UTC "Zulu" format, accurate to nanoseconds. - Example: "2014-10-02T15:01:23.045123456Z". - -documentation: - - templates/runtime_config/README.md - -examples: - - templates/runtime_config/examples/runtime_config.yaml diff --git a/dm/templates/shared_vpc_subnet_iam/README.md b/dm/templates/shared_vpc_subnet_iam/README.md deleted file mode 100644 index 45e08730525..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# Shared VPC Subnet IAM - -This template grants IAM roles to a user on a shared VPC subnetwork. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network and subnetworks](../network/README.md) -- Grant the [compute.networkAdmin or compute.admin](https://cloud.google.com/compute/docs/access/iam) IAM role to the project service account - -## Deployment - -### Resources - -- [gcp-types/compute-beta:compute.subnetworks.setIamPolicy](https://cloud.google.com/compute/docs/reference/rest/beta/subnetworks/setIamPolicy) -- [gcp-types/compute-beta:compute.subnetworks.getIamPolicy](https://cloud.google.com/compute/docs/reference/rest/beta/subnetworks/getIamPolicy) - -### Properties - -See `properties` section in the schema file(s): - -- [Shared VPC Subnet IAM](shared_vpc_subnet_iam.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/shared\_vpc\_subnet_iam.yaml](examples/shared_vpc_subnet_iam.yaml): - -```shell - cp templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam.yaml my_shared_vpc_subnet-iam.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_shared_vpc_subnet-iam.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_shared_vpc_subnet-iam.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples -- [Shared VPC Subnet IAM Bindings syntax](examples/shared_vpc_subnet_iam_bindings.yaml) -- [Shared VPC Subnet IAM Policy syntax](examples/shared_vpc_subnet_iam_policy.yaml) -- [Shared VPC Subnet IAM Legacy](examples/shared_vpc_subnet_iam_legacy.yaml) - -## Tests Cases -- [Shared VPC Subnet IAM Bindings syntax](tests/integration/bindings.bats) -- [Shared VPC Subnet IAM Policy syntax](tests/integration/policy.bats) -- [Shared VPC Subnet IAM Legacy syntax](tests/integration/legacy.bats) diff --git a/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_bindings.yaml b/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_bindings.yaml deleted file mode 100644 index 19bb2263f75..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_bindings.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# Example usage of the shared VPC subnet IAM template -# -# The `members` property is a list of members to -# grant IAM roles on a shared VPC subnetwork. -# A member can be a user, service account, group, or domain. -# -# Replace `resourceId` with a valid subnet ID. - -imports: - - path: templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py - name: shared_vpc_subnet_iam.py - -resources: - - name: test-shared-vpc-subnet-iam-policy - type: shared_vpc_subnet_iam.py - properties: - bindings: - - resourceId: test-subnet-1 - region: us-east1 - role: roles/compute.networkUser - members: - - user:name@example.com - - serviceAccount:example@myprojectname.gserviceaccount.com - - resourceId: - region: us-east1 - role: roles/compute.networkUser - members: - - group:admins@example.com - - domain:example.com diff --git a/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_legacy.yaml b/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_legacy.yaml deleted file mode 100644 index 3281c458197..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_legacy.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# Example usage of the shared VPC subnet IAM template -# -# The `members` property is a list of members to -# grant IAM roles on a shared VPC subnetwork. -# A member can be a user, service account, group, or domain. -# -# Replace `subnetId` with a valid subnet ID. - -imports: - - path: templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py - name: shared_vpc_subnet_iam.py - -resources: - - name: test-shared-vpc-subnet-iam - type: shared_vpc_subnet_iam.py - properties: - subnets: - - subnetId: test-subnet-1 - region: us-east1 - role: roles/compute.networkUser - members: - - user:name@example.com - - serviceAccount:example@myprojectname.gserviceaccount.com - - subnetId: - region: us-east1 - role: roles/compute.networkUser - members: - - group:admins@example.com - - domain:example.com diff --git a/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_policy.yaml b/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_policy.yaml deleted file mode 100644 index ba71849d298..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam_policy.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Example usage of the shared VPC subnet IAM template -# -# The `members` property is a list of members to -# grant IAM roles on a shared VPC subnetwork. -# A member can be a user, service account, group, or domain. -# -# Replace `resourceId` with a valid subnet ID. - -imports: - - path: templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py - name: shared_vpc_subnet_iam.py - -resources: - - name: test-shared-vpc-subnet-iam-policy - type: shared_vpc_subnet_iam.py - properties: - policy: - bindings: - - resourceId: test-subnet-1 - region: us-east1 - role: roles/compute.networkUser - members: - - user:name@example.com - - serviceAccount:example@myprojectname.gserviceaccount.com - - resourceId: - region: us-east1 - role: roles/compute.networkUser - members: - - group:admins@example.com - - domain:example.com diff --git a/dm/templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py b/dm/templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py deleted file mode 100644 index 38119687b95..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -"""This template grants IAM roles to a user on a shared VPC subnetwork.""" - - -def _append_resource(subnets, project, name_id): - """Append subnets to resources.""" - resources = [] - out = {} - for subnet in subnets: - policy_name = 'iam-subnet-policy-{}'.format(subnet[name_id]) - resources.append({ - 'name': policy_name, - # https://cloud.google.com/compute/docs/reference/rest/beta/subnetworks/setIamPolicy - 'type': 'gcp-types/compute-beta:compute.subnetworks.setIamPolicy', - 'properties': { - 'name': subnet[name_id], - 'project': project, - 'region': subnet['region'], - 'bindings': [{ - 'role': subnet['role'], - 'members': subnet['members'] - }] - } - }) - - out[policy_name] = { - 'etag': '$(ref.' + policy_name + '.etag)' - } - return resources, out - - -def generate_config(context): - """Entry point for the deployment resources.""" - try: - resources, out = _append_resource( - context.properties['subnets'], # Legacy syntax - context.env['project'], - 'subnetId' - ) - except KeyError: - try: - resources, out = _append_resource( - context.properties['policy']['bindings'], # Policy syntax - context.env['project'], - 'resourceId' - ) - except KeyError: - resources, out = _append_resource( - context.properties['bindings'], # Bindings syntax - context.env['project'], - 'resourceId' - ) - outputs = [{'name': 'policies', 'value': out}] - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py.schema b/dm/templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py.schema deleted file mode 100644 index 97734fb03be..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py.schema +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Shared VPC Subnet IAM - author: Sourced Group Inc. - version: 1.0.0 - description: | - Grants IAM roles to a user on a shared VPC subnetwork - - For more information on this resource: - https://cloud.google.com/compute/docs/reference/rest/beta/subnetworks - - APIs endpoints used by this template: - - gcp-types/compute-beta:compute.subnetworks.setIamPolicy => - https://cloud.google.com/compute/docs/reference/rest/beta/subnetworks/setIamPolicy - -oneOf: -- required: - - bindings -- required: - - policy -- required: - - subnets # Legacy - -additionalProperties: false - -project: - type: string - description: The Project ID. - -definitions: - policy: - type: object - description: | - REQUIRED: The complete policy to be applied to the 'resource'. - The size of the policy is limited to a few 10s of KB. An empty policy is - in general a valid policy but certain services (like Projects) might - reject them. - additionalProperties: false - properties: - version: - type: integer - description: Deprecated - bindings: - type: array - description: | - Associates a list of members to a role. bindings with no members will - result in an error. - uniqItems: true - items: - subnetId: # legacy - type: string - description: The subnet ID. - requestId: - type: string - description: Name or id of the resource for this request. - role: - type: string - description: | - Role that is assigned to members. For example, - roles/viewer, roles/editor, or roles/owner. - members: - type: array - description: A list of member identities. - uniqItems: true - items: - type: string - description: | - Specifies the identities requesting access for a Cloud Platform - resource. `members` can have the following values: - - allUsers: A special identifier that represents anyone who - is on the internet; with or without a Google account. - - allAuthenticatedUsers: A special identifier that represents - anyone who is authenticated with a Google account or a - service account. - - user:{emailid} - An email address that represents a - specific Google account. For example, user:name@example.com - - serviceAccount:{emailid} - An email address that represents - a service account. For example, - serviceAccount:my-other-app@appspot.gserviceaccount.com - - group:{emailid} - An email address that represents a Google - group. For example, group:admins@example.com - - domain:{domain} - A Google Apps domain name that represents - all the users of that domain. For example, - google.com or example.com. - condition: - type: object - description: | - The condition that is associated with this binding. NOTE: An - unsatisfied condition will not allow user access via current - binding. Different bindings, including their conditions, are - examined independently. - additionalProperties: false - properties: - expression: - type: string - description: | - Textual representation of an expression in Common Expression - Language syntax. The application context of the containing - message determines which well-known feature set of CEL is - supported. - title: - type: string - description: | - An optional title for the expression, i.e. a short string - describing its purpose. This can be used e.g. in UIs which - allow to enter the expression. - description: - type: string - description: | - An optional description of the expression. This is a longer - text which describes the expression, e.g. when hovered over - it in a UI. - location: - type: string - description: | - An optional string indicating the location of the expression - for error reporting, e.g. a file name and a position in the - file. - auditConfigs: - type: object - description: | - Specifies cloud audit logging configuration for this policy. - additionalProperties: false - properties: - service: - type: string - description: | - Specifies a service that will be enabled for audit logging. - For example, storage.googleapis.com, cloudsql.googleapis.com. - allServices is a special value that covers all services. - auditLogConfigs: - type: object - description: | - The configuration for logging of each type of permission. - additionalProperties: false - properties: - logType: - type: string - description: The log type that this config enables. - exemptedMembers: - type: array - description: | - Specifies the identities that do not cause logging for this - type of permission. Follows the same format of - Binding.members. - uniqItems: true - items: - type: string - etag: - type: string - description: | - etag is used for optimistic concurrency control as a way to help - prevent simultaneous updates of a policy from overwriting each other. - It is strongly suggested that systems make use of the etag in the - read-modify-write cycle to perform policy updates in order to avoid - race conditions: An etag is returned in the response to getIamPolicy, - and systems are expected to put that etag in the request to - setIamPolicy to ensure that their change will be applied to the same - version of the policy. If no etag is provided in the call to - setIamPolicy, then the existing policy is overwritten blindly. - A base64-encoded string. - -properties: - policy: - $ref: '#/definitions/policy' - bindings: - $ref: '#/definitions/policy/properties/bindings' - subnets: # legacy - $ref: '#/definitions/policy/properties/bindings' - etag: - $ref: '#/definitions/policy/properties/etag' - -outputs: - policies: - type: array - description: Array of IAM policy resource information. - items: - description: | - IAM policy resource name. Will be in the format - 'iam-subnet-policy-'. For example, the output - can be referenced as: - $(ref..policies.iam-subnet-policy-.selfLink) - patternProperties: - ".*": - type: object - description: Details for a subnetwork IAM policy. - properties: - etag: - type: string - description: The etag of the subnetwork's IAM policy. - -documentation: - - templates/shared_vpc_subnet_iam/README.md - -examples: - - templates/shared_vpc_subnet_iam/examples/shared_vpc_subnet_iam.yaml diff --git a/dm/templates/shared_vpc_subnet_iam/tests/integration/bindings.bats b/dm/templates/shared_vpc_subnet_iam/tests/integration/bindings.bats deleted file mode 120000 index 785c07d8fb8..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/tests/integration/bindings.bats +++ /dev/null @@ -1 +0,0 @@ -shared_vpc_subnet_iam.bats \ No newline at end of file diff --git a/dm/templates/shared_vpc_subnet_iam/tests/integration/bindings.yaml b/dm/templates/shared_vpc_subnet_iam/tests/integration/bindings.yaml deleted file mode 100644 index 5ca33a8bc4a..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/tests/integration/bindings.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Test of the shared VPC subnet IAM template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py - name: shared_vpc_subnet_iam.py - -resources: - - name: test-shared-vpc-subnet-iam-${RAND} - type: shared_vpc_subnet_iam.py - properties: - bindings: - - resourceId: subnet-${RAND}-1 - region: us-east1 - role: roles/compute.networkUser - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - resourceId: subnet-${RAND}-2 - region: us-east1 - role: roles/compute.networkUser - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com diff --git a/dm/templates/shared_vpc_subnet_iam/tests/integration/legacy.bats b/dm/templates/shared_vpc_subnet_iam/tests/integration/legacy.bats deleted file mode 120000 index 785c07d8fb8..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/tests/integration/legacy.bats +++ /dev/null @@ -1 +0,0 @@ -shared_vpc_subnet_iam.bats \ No newline at end of file diff --git a/dm/templates/shared_vpc_subnet_iam/tests/integration/legacy.yaml b/dm/templates/shared_vpc_subnet_iam/tests/integration/legacy.yaml deleted file mode 100644 index da29a9bc14a..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/tests/integration/legacy.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Test of the shared VPC subnet IAM template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py - name: shared_vpc_subnet_iam.py - -resources: - - name: test-shared-vpc-subnet-iam-${RAND} - type: shared_vpc_subnet_iam.py - properties: - subnets: - - subnetId: subnet-${RAND}-1 - region: us-east1 - role: roles/compute.networkUser - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - subnetId: subnet-${RAND}-2 - region: us-east1 - role: roles/compute.networkUser - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com diff --git a/dm/templates/shared_vpc_subnet_iam/tests/integration/policy.bats b/dm/templates/shared_vpc_subnet_iam/tests/integration/policy.bats deleted file mode 120000 index 785c07d8fb8..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/tests/integration/policy.bats +++ /dev/null @@ -1 +0,0 @@ -shared_vpc_subnet_iam.bats \ No newline at end of file diff --git a/dm/templates/shared_vpc_subnet_iam/tests/integration/policy.yaml b/dm/templates/shared_vpc_subnet_iam/tests/integration/policy.yaml deleted file mode 100644 index b38fc74b15e..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/tests/integration/policy.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Test of the shared VPC subnet IAM template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py - name: shared_vpc_subnet_iam.py - -resources: - - name: test-shared-vpc-subnet-iam-${RAND} - type: shared_vpc_subnet_iam.py - properties: - policy: - bindings: - - resourceId: subnet-${RAND}-1 - region: us-east1 - role: roles/compute.networkUser - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - resourceId: subnet-${RAND}-2 - region: us-east1 - role: roles/compute.networkUser - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com diff --git a/dm/templates/shared_vpc_subnet_iam/tests/integration/shared_vpc_subnet_iam.bats b/dm/templates/shared_vpc_subnet_iam/tests/integration/shared_vpc_subnet_iam.bats deleted file mode 100755 index c9ea6e29dc4..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/tests/integration/shared_vpc_subnet_iam.bats +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -export TEST_SERVICE_ACCOUNT="test-sa-${RAND}" - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/shared_vpc_subnet_iam/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud compute networks create "network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "Integration test ${RAND}" \ - --subnet-mode custom - gcloud compute networks subnets create "subnet-${RAND}-1" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network "network-${RAND}" \ - --range 10.118.8.0/22 \ - --region us-east1 - gcloud compute networks subnets create "subnet-${RAND}-2" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network "network-${RAND}" \ - --range 192.168.0.0/16 \ - --region us-east1 - gcloud iam service-accounts create "${TEST_SERVICE_ACCOUNT}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute networks subnets delete "subnet-${RAND}-2" --region us-east1 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - gcloud compute networks subnets delete "subnet-${RAND}-1" --region us-east1 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - gcloud compute networks delete network-${RAND} --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - gcloud iam service-accounts delete "${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} - -@test "Verifying that roles were granted in deployment ${DEPLOYMENT_NAME}" { - run gcloud beta compute networks subnets get-iam-policy "subnet-${RAND}-1" --region us-east1 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="bindings.members:${TEST_SERVICE_ACCOUNT}" - [[ "$output" =~ "serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" ]] - [[ "$output" =~ "roles/compute.networkUser" ]] - - run gcloud beta compute networks subnets get-iam-policy "subnet-${RAND}-2" --region us-east1 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --filter="bindings.members:${TEST_SERVICE_ACCOUNT}" - [[ "$output" =~ "serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com" ]] - [[ "$output" =~ "roles/compute.networkUser" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q --project "${CLOUD_FOUNDATION_PROJECT_ID}" -} diff --git a/dm/templates/shared_vpc_subnet_iam/tests/integration/shared_vpc_subnet_iam.yaml b/dm/templates/shared_vpc_subnet_iam/tests/integration/shared_vpc_subnet_iam.yaml deleted file mode 100644 index da29a9bc14a..00000000000 --- a/dm/templates/shared_vpc_subnet_iam/tests/integration/shared_vpc_subnet_iam.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Test of the shared VPC subnet IAM template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/shared_vpc_subnet_iam/shared_vpc_subnet_iam.py - name: shared_vpc_subnet_iam.py - -resources: - - name: test-shared-vpc-subnet-iam-${RAND} - type: shared_vpc_subnet_iam.py - properties: - subnets: - - subnetId: subnet-${RAND}-1 - region: us-east1 - role: roles/compute.networkUser - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com - - subnetId: subnet-${RAND}-2 - region: us-east1 - role: roles/compute.networkUser - members: - - serviceAccount:${TEST_SERVICE_ACCOUNT}@${CLOUD_FOUNDATION_PROJECT_ID}.iam.gserviceaccount.com diff --git a/dm/templates/ssl_certificate/README.md b/dm/templates/ssl_certificate/README.md deleted file mode 100644 index 977d6f84b40..00000000000 --- a/dm/templates/ssl_certificate/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# SSL Certificate - -This template creates an SSL certificate. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [roles/compute.securityAdmin](https://cloud.google.com/compute/docs/access/iam), - or [compute.loadBalancerAdmin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [gcp-types/compute-v1:sslCertificates](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates) -- [gcp-types/compute-beta:sslCertificates](https://cloud.google.com/compute/docs/reference/rest/beta/sslCertificates) -(If `betaFeaturesEnabled` flag turned on.) - -### Properties - -See the `properties` section in the schema file(s): - -- [SSL Certificate](ssl_certificate.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this - case, [examples/ssl\_certificate.yaml](examples/ssl_certificate.yaml): - -```shell - cp templates/ssl_certificate/examples/ssl_certificate.yaml \ - my_ssl_certificate.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_ssl_certificate.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_ssl_certificate.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [SSL Certificate](examples/ssl_certificate.yaml) diff --git a/dm/templates/ssl_certificate/examples/ssl_certificate.yaml b/dm/templates/ssl_certificate/examples/ssl_certificate.yaml deleted file mode 100644 index 88ef96018c3..00000000000 --- a/dm/templates/ssl_certificate/examples/ssl_certificate.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example of the SSL certificate template usage. -# -# Replace the following placeholders with valid values: -# : contents of the certificate file -# : contents of the private key file - -imports: - - path: templates/ssl_certificate/ssl_certificate.py - name: ssl_certificate.py - -resources: - - name: example-certificate - type: ssl_certificate.py - properties: - certificate: - privateKey: diff --git a/dm/templates/ssl_certificate/examples/ssl_certificate_managed.yaml b/dm/templates/ssl_certificate/examples/ssl_certificate_managed.yaml deleted file mode 100644 index 7033fd5bddf..00000000000 --- a/dm/templates/ssl_certificate/examples/ssl_certificate_managed.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Example of the SSL certificate template usage. -# -# Replace the following placeholders with valid values: -# : DNS name for the managed certificate. (ex: test.cft.com) - -imports: - - path: templates/ssl_certificate/ssl_certificate.py - name: ssl_certificate.py - -resources: - - name: example-certificate - type: ssl_certificate.py - properties: - betaFeaturesEnabled: True - type: MANAGED - managed: - domains: - - diff --git a/dm/templates/ssl_certificate/ssl_certificate.py b/dm/templates/ssl_certificate/ssl_certificate.py deleted file mode 100644 index caa7f7e49c4..00000000000 --- a/dm/templates/ssl_certificate/ssl_certificate.py +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates an SSL certificate. """ - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - ssl_props = { - 'name': name, - 'project': project_id, - } - - if properties.get('betaFeaturesEnabled', False): - gcptype = 'gcp-types/compute-beta:sslCertificates' - else: - gcptype = 'gcp-types/compute-v1:sslCertificates' - - resource = { - 'name': context.env['name'], - # https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates - 'type': gcptype, - 'properties': ssl_props, - } - - for prop in [ - 'privateKey', - 'certificate', - 'description', - 'managed', - 'selfManaged', - 'type']: - set_optional_property(ssl_props, properties, prop) - - return { - 'resources': [resource], - 'outputs': - [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/ssl_certificate/ssl_certificate.py.schema b/dm/templates/ssl_certificate/ssl_certificate.py.schema deleted file mode 100644 index 47eba8d3762..00000000000 --- a/dm/templates/ssl_certificate/ssl_certificate.py.schema +++ /dev/null @@ -1,140 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: SSL Certificate - author: Sourced Group Inc. - version: 1.1.0 - description: | - Supports creation of the SSL certificate resource. - - For more information on this resource: - https://cloud.google.com/load-balancing/docs/ssl-certificates - - APIs endpoints used by this template: - - gcp-types/compute-v1:sslCertificates => - https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates - -additionalProperties: false - -oneOf: - - required: - - privateKey - - certificate - - required: - - managed - - required: - - selfManaged - -dependencies: - managed: - required: - - betaFeaturesEnabled - - type - properties: - type: - enum: - - MANAGED - selfManaged: - required: - - betaFeaturesEnabled - - type - properties: - type: - enum: - - SELF_MANAGED - -properties: - name: - type: string - description: | - Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, - and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression - [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following - characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the SSL instance. The - Google apps domain is prefixed if applicable. - description: - type: string - description: | - An optional description of this resource. Provide this property when you create the resource. - privateKey: - type: string - description: | - The write-only private key in the PEM format. - certificate: - type: string - description: | - The local certificate file. The certificate must be in the PEM format. - The certificate chain must be no greater than 5 certs long. The chain - must include at least one intermediate cert. - managed: - type: object - description: | - Configuration and status of a managed SSL certificate. - properties: - domains: - type: array - uniqItems: true - items: - type: string - description: | - The domains for which a managed SSL certificate will be generated. Currently only single-domain certs are supported. - selfManaged: - type: object - description: | - Configuration and status of a self-managed SSL certificate. - required: - - privateKey - - certificate - properties: - certificate: - type: string - description: | - A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert. - privateKey: - type: string - description: | - A write-only private key in PEM format. Only insert requests will include this field. - type: - type: string - enum: - - SELF_MANAGED - - MANAGED - description: | - (Optional) Specifies the type of SSL certificate, either "SELF_MANAGED" or "MANAGED". If not specified, the certificate is self-managed and the fields certificate and privateKey are used. - betaFeaturesEnabled: - type: boolean - default: false - description: | - If this flag is enabled, beta properties can be used and the beta type will be used. - -outputs: - name: - type: string - description: The resource name. - selfLink: - type: string - description: The URI (SelfLink) of the SSL certificate resource. - -documentation: - - templates/ssl_certificate/README.md - -examples: - - templates/ssl_certificate/examples/ssl_certificate.yaml - diff --git a/dm/templates/ssl_certificate/tests/integration/ssl_certificate.bats b/dm/templates/ssl_certificate/tests/integration/ssl_certificate.bats deleted file mode 100755 index f6642eb2b94..00000000000 --- a/dm/templates/ssl_certificate/tests/integration/ssl_certificate.bats +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - export CERT_NAME="test-certificate-${RAND}" - export CERT_DESCRIPTION="test certificate description" - export CERT_EXTRACT="RXhhbXBsZSBPcmcuMRQwEgYDVQQDDAtleGFtcGxlLmNvbTAeFw0xODEwMTEyMDEy" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] -} - -@test "Verifying certificate" { - run gcloud compute ssl-certificates describe "${CERT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] - [[ "$output" =~ "description: ${CERT_DESCRIPTION}" ]] - [[ "$output" =~ "${CERT_EXTRACT}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - - echo "Status: $status" - echo "Output: $output" - - [[ "$status" -eq 0 ]] -} - diff --git a/dm/templates/ssl_certificate/tests/integration/ssl_certificate.yaml b/dm/templates/ssl_certificate/tests/integration/ssl_certificate.yaml deleted file mode 100644 index 7ed8141030b..00000000000 --- a/dm/templates/ssl_certificate/tests/integration/ssl_certificate.yaml +++ /dev/null @@ -1,127 +0,0 @@ -# Test of the SSL certificate template. - -imports: - - path: templates/ssl_certificate/ssl_certificate.py - name: ssl_certificate.py - -resources: - - name: test-cert - type: ssl_certificate.py - properties: - name: ${CERT_NAME} - description: ${CERT_DESCRIPTION} - certificate: | - -----BEGIN CERTIFICATE----- - MIIDODCCAiACCQCqBGuEeBXJTjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJD - QTEQMA4GA1UECAwHT250YXJpbzEQMA4GA1UEBwwHVG9yb250bzEVMBMGA1UECgwM - RXhhbXBsZSBPcmcuMRQwEgYDVQQDDAtleGFtcGxlLmNvbTAeFw0xODEwMTEyMDEy - MjVaFw0xOTEwMTEyMDEyMjVaMF4xCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRh - cmlvMRAwDgYDVQQHDAdUb3JvbnRvMRUwEwYDVQQKDAxFeGFtcGxlIE9yZy4xFDAS - BgNVBAMMC2V4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC - AQEA5yLVBWSqKRWSJrGh2nbW0j+Soy+uvDKCjSZtXIVIcWvSP+WXd6RE2zlsNee4 - UA90Jjhx6Si2MxraCNblm4MJSQg46irBn4Vmex/2iY2vD1MbMEusTNIfpDh3A27H - qdBe+WSO0uHXfmgC68M8mgTMcMLVoUsGgv8B710qBN1D9EKPZdEhYBAEhC1RFj+8 - o3krWa983QFVND4PeFJSZe0LxAg44/bHVFNKK5Ub+TPa9P3t86SpoNj9/M7DPSkh - AtqmHL+90G0gvkfvtaoNRHHdqk2X+Uz3cUXWgl8xE+X5wcWu7r3cMxPaJvuLldJa - SIcc4YIlKOB0nFDKPK+iy7LqPwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAdf4dG - IkEmdNmTeGPVOUis+7ziWzRPxt8Vpmuq24z4H9mIkAPo/2aLpMKH7bloeYvz8blu - 5VQZx7StoE5Sde1ss/AoaL1dVJi/dgmeN2cHy7J6POu3e9n6yXGiIh0qHlFe83nJ - RVIqtN9QGGuabGt3WGbKElMKwrCl9NGhExi/LntPFllXfTLb2pVGXH47ZihynbUj - 4S21+KnQUPjhg6Na6hP3qLVqSYtWataJFpy6DOG1wgoAWjagNc3ltGdmv6O/ZkI3 - 3vymENyn8G7n+Z1knXUXxv4rJoeiYbZ7/2/bQ8BTc/RI5qnhzO8VYmyAZrrKGZnD - W2xuikK4nQHsideP - -----END CERTIFICATE----- - privateKey: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEA5yLVBWSqKRWSJrGh2nbW0j+Soy+uvDKCjSZtXIVIcWvSP+WX - d6RE2zlsNee4UA90Jjhx6Si2MxraCNblm4MJSQg46irBn4Vmex/2iY2vD1MbMEus - TNIfpDh3A27HqdBe+WSO0uHXfmgC68M8mgTMcMLVoUsGgv8B710qBN1D9EKPZdEh - YBAEhC1RFj+8o3krWa983QFVND4PeFJSZe0LxAg44/bHVFNKK5Ub+TPa9P3t86Sp - oNj9/M7DPSkhAtqmHL+90G0gvkfvtaoNRHHdqk2X+Uz3cUXWgl8xE+X5wcWu7r3c - MxPaJvuLldJaSIcc4YIlKOB0nFDKPK+iy7LqPwIDAQABAoIBACHHm25gWeYLOwLg - rxDokVjE5b9ntpfWofHTDeSZrg61fVLNUSexIEcRy1jNdshsmcMEONGkm4w4fmkQ - Txo9OlwsEXVXrliL/IA+GZ/czxrkQHL8fD/17Z3oiqw7wn5074xvP9heHUpiFRsz - u2WfEeng76vU9Syr7DJ5YSy40beew48gJsfclbbAWl1GQ4s1wluoMlutCWjRKSAD - Qg1pjJQuTHDpD+PNgHrx4Xbyjyo6tGqcdt9B0crhuxwTZXUogQsRKRuMHlxxBsbm - kINhSsNf8V8iRCBtZ4FPWcq+Rk/KntNzB9NZQFmrH5hS0oQmZjzNAyzCXIaYTji7 - Ju8XDaECgYEA9hUDBBwniphLZxvIC8GHVgAFx76Xw085bksVI0jNl2yG1HgNjCNA - W7DXJnyAtJZQjaItZfvB/tMm/ZAypf77tnru2n/uRvB4uG1Yh7RSy7rhLpibvTpU - e+DHm2c6kVW6Ng4q6rFxaunpjKEaeZO8pKowUu4YGU9YaSqvIGwoPFcCgYEA8HOc - 1J5Rop56BPvJgozqQRRQ3Q3AFfzlyYEniF35twIqnehemU3nJMdVp9jbZizOcrmu - ZBma5c5P5Bjgam3SQvswTUxmbIZ2VvvXOv5aPeldNdFHrADpVmOdKwcPxQ8qx+IT - GK3rrVRkH6+JByseHhxl3igIM7fAtbd27ENDkFkCgYEA9YmhqMgu7CtpkUg3IwPH - dhgvrE6QP2EdfN+OB9bszNqM7hOb8Oh7nwGkq9Iu2gHh/nCDu+6ocwtdLERlRRxX - LI0dJwffSQlIaz0vyLg0pPOjHEtJmlZJVhHDGVy3I6zWUHlyeRr0gClFz/wv3n97 - CxKFhTns8dQp80WT2FYTD6ECgYBU0KMYSIQJNZda3Km22BflPtJLNwdzehJf4qPc - MTHdQPFhY87Cir0mtv1ayF6TiuiDhUWjX3jI6N47Wh8Gy5goMkxWZ8WVMFTb19eS - opeYURGk4x5B6MxlwZt1yvbgDrqLaQ5NXUPNjwAGQTe3hJkKDABOvZYvD/j04DMd - oZhaeQKBgGGgnxTTUTEdqZ/AsVD0NmaqauTmyjsUpmAph9oazERM729n9igob85z - KXQmD9gmtTrCuv8LGyEPFsIhlBTOlLyzHpMhI2Hd23hzQp8v09ZdDpx8SqHv0THW - y8YMreKih6+reSfC+GuOzQoKi4vTKO7wwuXYysXkg3juupqZ7Kab - -----END RSA PRIVATE KEY----- - - name: test-cert1 - type: ssl_certificate.py - properties: - name: ${CERT_NAME}-1 - betaFeaturesEnabled: True - type: SELF_MANAGED - description: ${CERT_DESCRIPTION} - selfManaged: - certificate: | - -----BEGIN CERTIFICATE----- - MIIDODCCAiACCQCqBGuEeBXJTjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJD - QTEQMA4GA1UECAwHT250YXJpbzEQMA4GA1UEBwwHVG9yb250bzEVMBMGA1UECgwM - RXhhbXBsZSBPcmcuMRQwEgYDVQQDDAtleGFtcGxlLmNvbTAeFw0xODEwMTEyMDEy - MjVaFw0xOTEwMTEyMDEyMjVaMF4xCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRh - cmlvMRAwDgYDVQQHDAdUb3JvbnRvMRUwEwYDVQQKDAxFeGFtcGxlIE9yZy4xFDAS - BgNVBAMMC2V4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC - AQEA5yLVBWSqKRWSJrGh2nbW0j+Soy+uvDKCjSZtXIVIcWvSP+WXd6RE2zlsNee4 - UA90Jjhx6Si2MxraCNblm4MJSQg46irBn4Vmex/2iY2vD1MbMEusTNIfpDh3A27H - qdBe+WSO0uHXfmgC68M8mgTMcMLVoUsGgv8B710qBN1D9EKPZdEhYBAEhC1RFj+8 - o3krWa983QFVND4PeFJSZe0LxAg44/bHVFNKK5Ub+TPa9P3t86SpoNj9/M7DPSkh - AtqmHL+90G0gvkfvtaoNRHHdqk2X+Uz3cUXWgl8xE+X5wcWu7r3cMxPaJvuLldJa - SIcc4YIlKOB0nFDKPK+iy7LqPwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAdf4dG - IkEmdNmTeGPVOUis+7ziWzRPxt8Vpmuq24z4H9mIkAPo/2aLpMKH7bloeYvz8blu - 5VQZx7StoE5Sde1ss/AoaL1dVJi/dgmeN2cHy7J6POu3e9n6yXGiIh0qHlFe83nJ - RVIqtN9QGGuabGt3WGbKElMKwrCl9NGhExi/LntPFllXfTLb2pVGXH47ZihynbUj - 4S21+KnQUPjhg6Na6hP3qLVqSYtWataJFpy6DOG1wgoAWjagNc3ltGdmv6O/ZkI3 - 3vymENyn8G7n+Z1knXUXxv4rJoeiYbZ7/2/bQ8BTc/RI5qnhzO8VYmyAZrrKGZnD - W2xuikK4nQHsideP - -----END CERTIFICATE----- - privateKey: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEA5yLVBWSqKRWSJrGh2nbW0j+Soy+uvDKCjSZtXIVIcWvSP+WX - d6RE2zlsNee4UA90Jjhx6Si2MxraCNblm4MJSQg46irBn4Vmex/2iY2vD1MbMEus - TNIfpDh3A27HqdBe+WSO0uHXfmgC68M8mgTMcMLVoUsGgv8B710qBN1D9EKPZdEh - YBAEhC1RFj+8o3krWa983QFVND4PeFJSZe0LxAg44/bHVFNKK5Ub+TPa9P3t86Sp - oNj9/M7DPSkhAtqmHL+90G0gvkfvtaoNRHHdqk2X+Uz3cUXWgl8xE+X5wcWu7r3c - MxPaJvuLldJaSIcc4YIlKOB0nFDKPK+iy7LqPwIDAQABAoIBACHHm25gWeYLOwLg - rxDokVjE5b9ntpfWofHTDeSZrg61fVLNUSexIEcRy1jNdshsmcMEONGkm4w4fmkQ - Txo9OlwsEXVXrliL/IA+GZ/czxrkQHL8fD/17Z3oiqw7wn5074xvP9heHUpiFRsz - u2WfEeng76vU9Syr7DJ5YSy40beew48gJsfclbbAWl1GQ4s1wluoMlutCWjRKSAD - Qg1pjJQuTHDpD+PNgHrx4Xbyjyo6tGqcdt9B0crhuxwTZXUogQsRKRuMHlxxBsbm - kINhSsNf8V8iRCBtZ4FPWcq+Rk/KntNzB9NZQFmrH5hS0oQmZjzNAyzCXIaYTji7 - Ju8XDaECgYEA9hUDBBwniphLZxvIC8GHVgAFx76Xw085bksVI0jNl2yG1HgNjCNA - W7DXJnyAtJZQjaItZfvB/tMm/ZAypf77tnru2n/uRvB4uG1Yh7RSy7rhLpibvTpU - e+DHm2c6kVW6Ng4q6rFxaunpjKEaeZO8pKowUu4YGU9YaSqvIGwoPFcCgYEA8HOc - 1J5Rop56BPvJgozqQRRQ3Q3AFfzlyYEniF35twIqnehemU3nJMdVp9jbZizOcrmu - ZBma5c5P5Bjgam3SQvswTUxmbIZ2VvvXOv5aPeldNdFHrADpVmOdKwcPxQ8qx+IT - GK3rrVRkH6+JByseHhxl3igIM7fAtbd27ENDkFkCgYEA9YmhqMgu7CtpkUg3IwPH - dhgvrE6QP2EdfN+OB9bszNqM7hOb8Oh7nwGkq9Iu2gHh/nCDu+6ocwtdLERlRRxX - LI0dJwffSQlIaz0vyLg0pPOjHEtJmlZJVhHDGVy3I6zWUHlyeRr0gClFz/wv3n97 - CxKFhTns8dQp80WT2FYTD6ECgYBU0KMYSIQJNZda3Km22BflPtJLNwdzehJf4qPc - MTHdQPFhY87Cir0mtv1ayF6TiuiDhUWjX3jI6N47Wh8Gy5goMkxWZ8WVMFTb19eS - opeYURGk4x5B6MxlwZt1yvbgDrqLaQ5NXUPNjwAGQTe3hJkKDABOvZYvD/j04DMd - oZhaeQKBgGGgnxTTUTEdqZ/AsVD0NmaqauTmyjsUpmAph9oazERM729n9igob85z - KXQmD9gmtTrCuv8LGyEPFsIhlBTOlLyzHpMhI2Hd23hzQp8v09ZdDpx8SqHv0THW - y8YMreKih6+reSfC+GuOzQoKi4vTKO7wwuXYysXkg3juupqZ7Kab - -----END RSA PRIVATE KEY----- - - name: test-cert2 - type: ssl_certificate.py - properties: - name: ${CERT_NAME}-2 - betaFeaturesEnabled: True - type: MANAGED - managed: - domains: - - test.cloud.cft.tips diff --git a/dm/templates/stackdriver_metric_descriptor/README.md b/dm/templates/stackdriver_metric_descriptor/README.md deleted file mode 100644 index 77e19343e9f..00000000000 --- a/dm/templates/stackdriver_metric_descriptor/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Stackdriver Metric Descriptor - -This template creates a Stackdriver Metric Descriptor. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [Stackdriver Workspace](https://cloud.google.com/monitoring/workspaces/) -- Log in to the [Stackdriver Workspace](https://cloud.google.com/monitoring/workspaces/) - where the metric has to be deployed -- Grant the [monitoring.admin](https://cloud.google.com/monitoring/access-control) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [projects.metricDescriptors](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) -- [GCP metric list](https://cloud.google.com/monitoring/api/metrics_gcp) -- [AWS metric list](https://cloud.google.com/monitoring/api/metrics_aws) -- [Stackdriver Agent metric list](https://cloud.google.com/monitoring/api/metrics_agent) -- [External metric list](https://cloud.google.com/monitoring/api/metrics_other) - -### Properties - -See the `properties` section in the schema file(s): - -- [Stackdriver Metric Descriptor](stackdriver_metric_descriptor.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment, - in this case [examples/stackdriver\_metric\_descriptor.yaml](examples/stackdriver_metric_descriptor.yaml) - - ```shell - cp templates/stackdriver_metric_descriptor/examples/stackdriver_metric_descriptor.yaml my_metric_descriptor.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - - ```shell - vim my_metric_descriptor.yaml # <== Replace placeholders if any - ``` - -5. Set the project context to use the Stackdriver Workspace project - - ```shell - gcloud config set project - ``` - -6. Create your deployment as described below, replacing `` - with your with your own deployment name - - ```shell - gcloud deployment-manager deployments create \ - --config my_metric_descriptor.yaml - ``` - -7. In case you need to delete your deployment - - ```shell - gcloud deployment-manager deployments delete - ``` - -## Examples - -- [Stackdriver Metric Descriptor](examples/stackdriver_metric_descriptor.yaml) diff --git a/dm/templates/stackdriver_metric_descriptor/examples/stackdriver_metric_descriptor.yaml b/dm/templates/stackdriver_metric_descriptor/examples/stackdriver_metric_descriptor.yaml deleted file mode 100644 index 6ca8810c39f..00000000000 --- a/dm/templates/stackdriver_metric_descriptor/examples/stackdriver_metric_descriptor.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Example of the Stackdriver Metric Descriptor template usage. -# -# NOTE: For supported metric types, kind, valueType, and unit, see -# https://cloud.google.com/monitoring/api/metrics. - -imports: - - path: templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py - name: metric_descriptor.py - -resources: - - name: my-custom-metric - type: metric_descriptor.py - properties: - displayName: my-custom-metric - description: My custom metric descriptor - type: custom.googleapis.com/agent/log_entry_retry_count - metricKind: CUMULATIVE - valueType: INT64 - unit: "1" - launchStage: ALPHA - metadata: - samplePeriod: "10s" - ingestDelay: "1s" diff --git a/dm/templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py b/dm/templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py deleted file mode 100644 index ef7d22d1a0b..00000000000 --- a/dm/templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Stackdriver Metric Descriptor. """ - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - outputs = [] - properties = context.properties - project_id = properties.get('project', context.env['project']) - metric_descriptor = { - 'name': context.env['name'], - # https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors - 'type': 'gcp-types/monitoring-v3:projects.metricDescriptors', - 'properties': { - 'name': properties.get('name', context.env['name']), - # 'project': project_id, - } - } - - required_properties = [ - 'type', - 'metricKind', - 'valueType', - 'unit' - ] - - for prop in required_properties: - if prop in properties: - metric_descriptor['properties'][prop] = properties[prop] - - # Optional properties: - optional_properties = ['displayName', 'labels', 'description', 'metadata', 'launchStage'] - - for prop in optional_properties: - if prop in properties: - metric_descriptor['properties'][prop] = properties[prop] - - resources.append(metric_descriptor) - - # Output variables: - output_props = [ - 'name', - 'type', - 'labels', - 'metricKind', - 'valueType', - 'unit', - 'description', - 'displayName', - 'metadata' - ] - - for outprop in output_props: - output = {} - if outprop in properties: - output['name'] = outprop - output['value'] = '$(ref.{}.{})'.format(context.env['name'], outprop) - outputs.append(output) - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py.schema b/dm/templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py.schema deleted file mode 100644 index 0c99e4b4ffe..00000000000 --- a/dm/templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py.schema +++ /dev/null @@ -1,242 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Stackdriver Metric Descriptor - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of a Stackdriver Metric Descriptor. - - For more information on this resource, see - https://cloud.google.com/monitoring/ - - APIs endpoints used by this template: - - gcp-types/monitoring-v3:projects.metricDescriptors => - https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors - -additionalProperties: false - -allOf: - - required: - - type - - metricKind - - valueType - - oneOf: - - required: - - launchStage - - allOf: - - required: - - metadata - - properties: - metadata: - required: - - launchStage - - allOf: - - not: - required: - - launchStage - - oneOf: - - not: - required: - - metadata - - properties: - metadata: - not: - required: - - launchStage - - - oneOf: - - valueType: - enum: - - INT64 - - DOUBLE - - DISTRIBUTION - - not: - required: - - unit - -definitions: - launchStage: - type: string - description: | - The launch stage as defined by Google Cloud Platform Launch Stages: - http://cloud.google.com/terms/launch-stages. - enum: - - LAUNCH_STAGE_UNSPECIFIED - - EARLY_ACCESS - - ALPHA - - BETA - - GA - - DEPRECATED - -properties: - name: - type: string - description: | - The name of the Metric Descriptor. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - type: - type: string - description: | - The metric type, including the DNS name prefix. The type is not - URL-encoded. All user-defined metric types have the DNS name - custom.googleapis.com or external.googleapis.com. Metric types must - use a natural hierarchical grouping. - For example: - "custom.googleapis.com/invoice/paid/amount" - "external.googleapis.com/prometheus/up" - "appengine.googleapis.com/http/server/response_latencies" - For a list of metric types, see: - https://cloud.google.com/monitoring/api/metrics - labels: - type: array - description: | - The set of labels that can be used to describe a specific instance of - this metric type. For example, the - appengine.googleapis.com/http/server/response_latencies metric type has a - label for the HTTP response code, response_code. This enables you to look - at latencies for successful responses, or just for those responses that - had failed. - items: - type: object - description: The label description. - properties: - key: - type: string - description: The label key. - valueType: - type: string - description: The type of data that can be assigned to the label. - enum: - - STRING - - BOOL - - INT64 - description: - type: string - description: A human-readable description for the label. - metricKind: - type: string - description: | - Defines whether the metric records instantaneous values, changes to a - value, etc. Some combinations of metricKind and valueType might not be - supported. For detail, see: - https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors#MetricKind. - enum: - - METRIC_KIND_UNSPECIFIED - - GAUGE - - DELTA - - CUMULATIVE - valueType: - type: string - description: | - Defines whether the measurement is an integer, a floating-point number, - etc. Some combinations of metricKind and valueType might not be - supported. - enum: - - VALUE_TYPE_UNSPECIFIED - - BOOL - - INT64 - - DOUBLE - - STRING - - DISTRIBUTION - - MONEY - unit: - type: string - description: | - The unit in which the metric value is reported. Applicable if valueType - is INT64, DOUBLE, or DISTRIBUTION. - The supported units are a subset of The Unified Code for Units of - Measure standard. - For details, see: - http://unitsofmeasure.org/ucum.html - https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors#MetricDescriptor - description: - type: string - description: A detailed description of the metric. - displayName: - type: string - description: | - The metric name that can be displayed in user interfaces. Use sentence - case without the ending period; for example, "Request count". - Optional but recommended to be set for any metrics associated with - user-visible concepts, such as Quota. - launchStage: - $ref: '#/definitions/launchStage' - metadata: - type: object - description: | - Additional annotations that can be used to guide the usage of a metric. - properties: - launchStage: - $ref: '#/definitions/launchStage' - samplePeriod: - type: string - description: | - The sampling period for the metric data points. For metrics that are - written periodically, consecutive data points are stored at this time - interval, excluding data loss due to errors. Metrics with a higher - granularity have a smaller sampling period. - See here for more information: - https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Duration. - ingestDelay: - type: string - description: | - The delay of data points caused by ingestion. Data points older than - this age are guaranteed to be ingested and available to be read, - excluding data loss due to errors. - See here for more information: - https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Duration. - -outputs: - name: - type: string - description: The name of the Metric Descriptor. - type: - type: string - description: The metric type as defined in the descriptor. - labels: - type: array - description: List of the defined labels. - items: - type: string - metricKind: - type: string - description: The metric kind as defined. - valueType: - type: string - description: The measurement type (int, string, etc.). - unit: - type: string - description: The unit in which the metric value is reported. - description: - type: string - description: The metric description. - displayName: - type: string - description: The display name of the metric. - metadata: - type: object - description: Metadata associated with the metric. - -documentation: - - templates/stackdriver_metric_descriptor/README.md - -examples: - - templates/stackdriver_metric_descriptor/examples/metric_descriptor.yaml diff --git a/dm/templates/stackdriver_metric_descriptor/tests/integration/stackdriver_metric_descriptor.bats b/dm/templates/stackdriver_metric_descriptor/tests/integration/stackdriver_metric_descriptor.bats deleted file mode 100644 index 6d8e43cfad7..00000000000 --- a/dm/templates/stackdriver_metric_descriptor/tests/integration/stackdriver_metric_descriptor.bats +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - # DM config file name must be 61 chars or less. - # Must be a match of regex '[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?' - DEPLOYMENT_NAME=`echo $DEPLOYMENT_NAME | cut -c 1-61` - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - export METRIC_NAME="test-metric-${RAND}" - export METRIC_TYPE="custom.googleapis.com/agent/log_entry_retry_count" - export METRIC_KIND="CUMULATIVE" - export VALUE_TYPE="INT64" - export UNIT="1" - export LAUNCH_STAGE="ALPHA" - export SAMPLE_PERIOD="10s" - export INGEST_DELAY="1s" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] -} - -########## NOTE ########### -# -# From Google Cloud SDK version 221.0.0, beta 2018.07.16, the only way to -# list a metric descriptor is to make an API call to the -# project.metricDescriptors resource type. Hence, no test assertions were -# written. -# -# The following logging commands do not list custom metricDescriptors: -# `gcloud logging metrics list` -# `gcloud beta logging metrics list` -# -# -# References: -# https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors -# https://cloud.google.com/monitoring/custom-metrics/creating-metrics -# -########################### diff --git a/dm/templates/stackdriver_metric_descriptor/tests/integration/stackdriver_metric_descriptor.yaml b/dm/templates/stackdriver_metric_descriptor/tests/integration/stackdriver_metric_descriptor.yaml deleted file mode 100644 index 2eb6eaf325f..00000000000 --- a/dm/templates/stackdriver_metric_descriptor/tests/integration/stackdriver_metric_descriptor.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Test of the Stackdriver Metric Descriptor template. - -########## NOTE ########################### -# These tests need to be run in the Stackdriver workspace. -# -# To list the current context: -# gcloud config list -# -# To switch context: -# gcloud config set project -# -########################################### - -imports: - - path: templates/stackdriver_metric_descriptor/stackdriver_metric_descriptor.py - name: metric_descriptor.py - -resources: - - name: metric - type: metric_descriptor.py - properties: - name: ${METRIC_NAME} - displayName: my test custom metric - description: My test custom metric descriptor - type: ${METRIC_TYPE} - metricKind: ${METRIC_KIND} - valueType: ${VALUE_TYPE} - unit: "${UNIT}" - launchStage: ${LAUNCH_STAGE} - metadata: - samplePeriod: "${SAMPLE_PERIOD}" - ingestDelay: "${INGEST_DELAY}" diff --git a/dm/templates/stackdriver_notification_channels/README.md b/dm/templates/stackdriver_notification_channels/README.md deleted file mode 100644 index efa93215e53..00000000000 --- a/dm/templates/stackdriver_notification_channels/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Stackdriver Notification Channels - -This template creates a Stackdriver Notification Channel. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Enable the [Stackdriver Monitoring AP](https://cloud.google.com/monitoring/api/ref_v3/rest/) -- Create a [Stackdriver Workspace](https://cloud.google.com/monitoring/workspaces/) -- Log in to the [Stackdriver Workspace](https://cloud.google.com/monitoring/workspaces/) - where the metric has to be deployed -- Grant the [monitoring.admin](https://cloud.google.com/monitoring/access-control) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [projects.notificationChannels](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.notificationChannels) - -### Properties - -See the `properties` section in the schema file(s): - -- [Stackdriver Notification Channels](stackdriver_notification_channels.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - - ```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit - ``` - -2. Go to the [dm](../../) directory - - ```shell - cd dm - ``` - -3. Copy the example DM config to be used as a model for the deployment, - in this case [examples/stackdriver\_metric\_descriptor.yaml](examples/stackdriver_notification_channels.yaml) - - ```shell - cp templates/stackdriver_notification_channels/examples/stackdriver_notification_channels.yaml my_notification_channels.yaml - ``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - - ```shell - vim my_notification_channels.yaml # <== Replace placeholders if any - ``` - -5. Set the project context to use the Stackdriver Workspace project - - ```shell - gcloud config set project - ``` - -6. Create your deployment as described below, replacing `` - with your with your own deployment name - - ```shell - gcloud deployment-manager deployments create \ - --config my_notification_channels.yaml - ``` - -7. In case you need to delete your deployment - - ```shell - gcloud deployment-manager deployments delete - ``` - -## Examples - -- [Stackdriver Notification Channels](examples/stackdriver_notification_channels.yaml) diff --git a/dm/templates/stackdriver_notification_channels/examples/stackdriver_notification_channels.yaml b/dm/templates/stackdriver_notification_channels/examples/stackdriver_notification_channels.yaml deleted file mode 100644 index f1bc04b7a92..00000000000 --- a/dm/templates/stackdriver_notification_channels/examples/stackdriver_notification_channels.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. -# Example of the Stackdriver Notification Channels template usage. - -imports: - - path: templates/stackdriver_notification_channels/stackdriver_notification_channels.py - name: stackdriver_notification_channels.py - -resources: - - name: my-notification-channels - type: stackdriver_notification_channels.py - properties: - notificationChannels: - - displayName: "name" - typeName: "slack" - labels: - channel_name: "#slack-channel" - auth_token: "token-1234567890" - policies: - - name: "1 - Availability - Cloud SQL Database - Memory usage (filtered) [MAX]" - documentationContent: "The janus rule ${condition.display_name} has generated this alert for the ${metric.display_name}." - conditions: - - displayName: "CloudSQL Memory" - filter: "metric.type=\"cloudsql.googleapis.com/database/memory/usage\" resource.type=\"cloudsql_database\" resource.label.database_id=\"sql_instance_id\"" - comparison: "COMPARISON_GT" - duration: "300s" - thresholdValue: 2750000000 - trigger: - count: 1 - aggregations: - - alignmentPeriod: "60s" - perSeriesAligner: "ALIGN_MAX" - crossSeriesReducer: "REDUCE_MEAN" - groupByFields: - - 'project' - diff --git a/dm/templates/stackdriver_notification_channels/stackdriver_notification_channels.py b/dm/templates/stackdriver_notification_channels/stackdriver_notification_channels.py deleted file mode 100644 index dc781d63ea0..00000000000 --- a/dm/templates/stackdriver_notification_channels/stackdriver_notification_channels.py +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. -""" This template creates a Stackdriver Metric Descriptor. """ - - -def get_condition_threshold(condition_properties): - condition_threshold = {} - properties = [ - 'filter', - 'comparison', - 'duration', - 'thresholdValue', - 'trigger', - 'aggregations' - ] - for prop in condition_properties: - if prop in properties: - condition_threshold[prop] = condition_properties[prop] - return condition_threshold - - -def get_policy_conditions(policy_conditions): - conditions = [] - for condition in policy_conditions: - conditions.append({ - 'displayName': condition['displayName'], - 'conditionThreshold': get_condition_threshold(condition) - }) - return conditions - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - resources = [] - outputs = [] - properties = context.properties - resource_name = context.env['name'] - project_id = properties.get('project', context.env['project']) - notification_channels = properties["notificationChannels"] - policies = properties["policies"] - - notification_channel_names = [] - - for index, channel in enumerate(notification_channels): - channel_type = channel['typeName'] - notification_channel_name = '{}-{}-{}'.format(resource_name, channel_type, index) - notification_channel_names.append('$(ref.{}.name)'.format(notification_channel_name)) - resources.append({ - 'name': notification_channel_name, - 'type': 'gcp-types/monitoring-v3:projects.notificationChannels', - 'properties': { - 'name': 'projects/{}'.format(project_id), - 'type': channel_type, - 'enabled': channel['channelEnabled'], - 'displayName': channel['displayName'], - 'labels': channel['labels'] - } - }) - - for index, policy in enumerate(policies): - resources.append({ - 'name': 'alerting-policy-{}-{}'.format(context.env['name'], index), - 'type': 'gcp-types/monitoring-v3:projects.alertPolicies', - 'properties': { - 'displayName': policy['name'], - 'documentation': { - 'content': policy['documentationContent'], - 'mimeType': policy['mimeType'] - }, - 'combiner': policy['combiner'], - 'enabled': policy['policyEnabled'], - 'conditions': get_policy_conditions(policy['conditions']), - 'notificationChannels': notification_channel_names - } - }) - - # Output variables: - output_props = [ - 'name', - 'type', - 'labels', - 'metricKind', - 'valueType', - 'unit', - 'description', - 'displayName', - 'metadata' - ] - - for outprop in output_props: - output = {} - if outprop in properties: - output['name'] = outprop - output['value'] = '$(ref.{}.{})'.format(resource_name, outprop) - outputs.append(output) - - return {'resources': resources, 'outputs': outputs} diff --git a/dm/templates/stackdriver_notification_channels/stackdriver_notification_channels.py.schema b/dm/templates/stackdriver_notification_channels/stackdriver_notification_channels.py.schema deleted file mode 100644 index ac0c992864b..00000000000 --- a/dm/templates/stackdriver_notification_channels/stackdriver_notification_channels.py.schema +++ /dev/null @@ -1,156 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. - -info: - title: Stackdriver Notification Channels - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of the Stackdriver notification channel and alert resources. - - For more information on this resource: - - https://cloud.google.com/monitoring/alerts/using-channels-api - - https://cloud.google.com/monitoring/alerts/using-alerting-api - - APIs endpoints used by this template: - - gcp-types/monitoring-v3:projects.notificationChannels => - https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.notificationChannels - - gcp-types/monitoring-v3:projects.alertPolicies => - https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.alertPolicies - -required: - - notificationChannels - - policies - -properties: - notificationChannels: - type: array - minItems: 1 - description: | - A NotificationChannel is a medium through which an alert is delivered - when a policy violation is detected. Examples of channels include email, SMS, - and third-party messaging applications. Fields containing sensitive information - like authentication tokens or contact info are only partially populated on retrieval. - items: - type: object - additionalProperties: false - required: - - typeName - properties: - channelEnabled: - type: boolean - default: True - description: Whether or not the channel is enabled. - labels: - description: Configuration fields that define the channel and its behavior. - type: object - additionalProperties: true - verificationStatus: - description: Indicates whether this channel has been verified or not. - type: string - description: - description: An optional human-readable description of this notification channel. This may not exceed 1024 Unicode characters. - type: string - displayName: - type: string - description: An optional human-readable name for this notification channel. - typeName: - type: string - description: The type of the notification channel. - policies: - type: array - minItems: 1 - description: | - A description of the conditions under which some aspect of your system - is considered to be "unhealthy" and the ways to notify people or services about - this state. For an overview of alert policies, see Introduction to Alerting. - items: - type: object - additionalProperties: false - required: - - name - properties: - name: - description: | - A short name or phrase used to identify the policy in dashboards, - notifications, and incidents. To avoid confusion, don't use the same display - name for multiple policies in the same project. The name is limited to 512 - Unicode characters. - type: string - policyEnabled: - type: boolean - default: True - description: Whether or not the policy is enabled. - combiner: - description: | - The conditions are combined by AND or OR according - to the combiner field. If the combined conditions - evaluate to true, then an incident is created. - type: string - default: OR - conditions: - type: array - minItems: 1 - maxItems: 6 - description: A list of conditions for the policy. - documentationContent: - description: | - The text of the documentation, interpreted according to mime_type. - The content may not exceed 8,192 Unicode characters and may not exceed more - than 10,240 bytes when encoded in UTF-8 format, whichever is smaller. - type: string - mimeType: - description: Content type - type: string - default: text/markdown -outputs: - name: - type: string - description: The name of the Metric Descriptor. - type: - type: string - description: The metric type as defined in the descriptor. - labels: - type: array - description: List of the defined labels. - minItems: 0 - items: - type: string - metricKind: - type: string - description: The metric kind as defined. - valueType: - type: string - description: The measurement type (int, string, etc.). - unit: - type: string - description: The unit in which the metric value is reported. - description: - type: string - description: The metric description. - displayName: - type: string - description: The display name of the metric. - metadata: - type: object - additionalProperties: false - description: Metadata associated with the metric. - -documentation: - - templates/stackdriver_metric_descriptor/README.md - - - - - diff --git a/dm/templates/stackdriver_notification_channels/tests/integration/stackdriver_notification_channels.bats b/dm/templates/stackdriver_notification_channels/tests/integration/stackdriver_notification_channels.bats deleted file mode 100644 index b4465e78581..00000000000 --- a/dm/templates/stackdriver_notification_channels/tests/integration/stackdriver_notification_channels.bats +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - # DM config file name must be 61 chars or less. - # Must be a match of regex '[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?' - DEPLOYMENT_NAME=`echo $DEPLOYMENT_NAME | cut -c 1-61` - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - - export SLACK_CHANNEL_NAME="#slack-channel" - export SLACK_TOKEN="token-1234567890" - export SLACK_DISPLAY_NAME="name" - export SLACK_TYPE="slack" - export TEST_POLICY_NAME="1 - Availability - Cloud SQL Database - Memory usage (filtered) [MAX]" - export CONDITION_DISPLAY_NAME="CloudSQL Memory" - export CONDITION_FILTER="metric.type=\\\"cloudsql.googleapis.com/database/memory/usage\\\" resource.type=\\\"cloudsql_database\\\" resource.label.database_id=\\\"sql_instance_id\\\"" - export CONDITION_COMPARISON="COMPARISON_GT" - export CONDITION_DURATION="300s" - export CONDITION_THRESHOLD_VALUE=2750000000 - export CONDITION_TRIGGER_COUNT=1 - export CONDITION_AGGREGATION_ALIGNMENT_PERIOD="60s" - export CONDITION_AGGREGATION_ALIGNMENT_PER_SERIES="ALIGN_MAX" - export CONDITION_AGGREGATION_CROSS_SERIES_REDUCER="REDUCE_MEAN" - export CONDITION_AGGREGATION_GROUP_BY_FIELD="project" - export TEST_POLICY_DOCUMENTATION_CONTEXT="The janus rule \${condition.display_name} has generated this alert for the \${metric.display_name}." - - -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - -########## TESTS ########## - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Check Slack notification channel configuration" { - run gcloud alpha monitoring channels list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "displayName: ${SLACK_DISPLAY_NAME}" ]] - [[ "$output" =~ "channel_name: '${SLACK_CHANNEL_NAME}'" ]] - [[ "$output" =~ "type: ${SLACK_TYPE}" ]] - [[ "$output" =~ "name: projects/${CLOUD_FOUNDATION_PROJECT_ID}/notificationChannels/" ]] -} - -@test "Check alert policies" { - run gcloud alpha monitoring policies list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "combiner: OR" ]] - [[ "$output" =~ "displayName: ${TEST_POLICY_NAME}" ]] - [[ "$output" =~ "alignmentPeriod: ${CONDITION_AGGREGATION_ALIGNMENT_PERIOD}" ]] - [[ "$output" =~ "crossSeriesReducer: ${CONDITION_AGGREGATION_CROSS_SERIES_REDUCER}" ]] - [[ "$output" =~ "perSeriesAligner: ${CONDITION_AGGREGATION_ALIGNMENT_PER_SERIES}" ]] - [[ "$output" =~ "comparison: ${CONDITION_COMPARISON}" ]] - [[ "$output" =~ "duration: ${CONDITION_DURATION}" ]] - [[ "$output" =~ "displayName: ${CONDITION_DISPLAY_NAME}" ]] - [[ "$output" =~ "count: ${CONDITION_TRIGGER_COUNT}" ]] -} - -@test "Deleting deployment ${DEPLOYMENT_NAME}" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] -} diff --git a/dm/templates/stackdriver_notification_channels/tests/integration/stackdriver_notification_channels.yaml b/dm/templates/stackdriver_notification_channels/tests/integration/stackdriver_notification_channels.yaml deleted file mode 100644 index 6d7d0d75952..00000000000 --- a/dm/templates/stackdriver_notification_channels/tests/integration/stackdriver_notification_channels.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# Test of the Stackdriver Metric Descriptor template. - -########## NOTE ########################### -# These tests need to be run in the Stackdriver workspace. -# -# To list the current context: -# gcloud config list -# -# To switch context: -# gcloud config set project -# -########################################### - -imports: - - path: templates/stackdriver_notification_channels/stackdriver_notification_channels.py - name: stackdriver_notification_channels.py - -resources: - - name: my-notification-channels - type: stackdriver_notification_channels.py - properties: - notificationChannels: - - displayName: ${SLACK_DISPLAY_NAME} - typeName: ${SLACK_TYPE} - labels: - channel_name: "${SLACK_CHANNEL_NAME}" - auth_token: ${SLACK_TOKEN} - policies: - - name: ${TEST_POLICY_NAME} - documentationContent: "${TEST_POLICY_DOCUMENTATION_CONTEXT}" - conditions: - - displayName: ${CONDITION_DISPLAY_NAME} - filter: "${CONDITION_FILTER}" - comparison: ${CONDITION_COMPARISON} - duration: ${CONDITION_DURATION} - thresholdValue: ${CONDITION_THRESHOLD_VALUE} - trigger: - count: ${CONDITION_TRIGGER_COUNT} - aggregations: - - alignmentPeriod: ${CONDITION_AGGREGATION_ALIGNMENT_PERIOD} - perSeriesAligner: ${CONDITION_AGGREGATION_ALIGNMENT_PER_SERIES} - crossSeriesReducer: ${CONDITION_AGGREGATION_CROSS_SERIES_REDUCER} - groupByFields: - - ${CONDITION_AGGREGATION_GROUP_BY_FIELD} - diff --git a/dm/templates/target_proxy/README.md b/dm/templates/target_proxy/README.md deleted file mode 100644 index 941991ca47b..00000000000 --- a/dm/templates/target_proxy/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# Target Proxy - -This template creates one of the following target proxy resources (depending on the parameters): - -- targetHttpProxy -- targetHttpsProxy -- targetTcpProxy -- targetSslProxy - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.loadBalancerAdmin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the Deployment Manager service account -- To use the target TCP Proxy, request access to the Compute ALPHA features from the - Cloud [Support](https://cloud.google.com/support/) - -## Deployment - -### Resources - -- [compute.v1.targetHttpProxy](https://cloud.google.com/compute/docs/reference/latest/targetHttpProxies) -- [compute.v1.targetHttpsProxy](https://cloud.google.com/compute/docs/reference/latest/targetHttpsProxies) -- [compute.alpha.targetTcpProxy](https://www.googleapis.com/discovery/v1/apis/compute/alpha/rest) -- [compute.v1.targetSslProxy](https://cloud.google.com/compute/docs/reference/latest/targetSslProxies) - -### Properties - -See the `properties` section in the schema file(s): - -- [Target Proxy](target_proxy.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this - case, [examples/target\_proxy.yaml](examples/target_proxy.yaml): - -```shell - cp templates/target_proxy/examples/target_proxy.yaml \ - my_target_proxy.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_target_proxy.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_target_proxy.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Target HTTP Proxy](examples/target_proxy_http.yaml) -- [Target HTTPS Proxy](examples/target_proxy_https.yaml) -- [Target TCP Proxy](examples/target_proxy_tcp.yaml) -- [Target SSL Proxy](examples/target_proxy_ssl.yaml) diff --git a/dm/templates/target_proxy/examples/target_proxy_http.yaml b/dm/templates/target_proxy/examples/target_proxy_http.yaml deleted file mode 100644 index 99dd42cf7f1..00000000000 --- a/dm/templates/target_proxy/examples/target_proxy_http.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Example of the target proxy template usage. -# -# Replace the placeholder with a valid -# URL of the UrlMap resource. - -imports: - - path: templates/target_proxy/target_proxy.py - name: target_proxy.py - -resources: - - name: target-http-proxy - type: target_proxy.py - properties: - protocol: HTTP - target: diff --git a/dm/templates/target_proxy/examples/target_proxy_https.yaml b/dm/templates/target_proxy/examples/target_proxy_https.yaml deleted file mode 100644 index de26c69e96c..00000000000 --- a/dm/templates/target_proxy/examples/target_proxy_https.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Example of the target proxy template usage. -# -# Replace the following placeholders with valid values: -# : a URL of the UrlMap resource -# : a URL of the SslCertificate resource - -imports: - - path: templates/target_proxy/target_proxy.py - name: target_proxy.py - -resources: - - name: target-https-proxy - type: target_proxy.py - properties: - protocol: HTTPS - target: - ssl: - certificate: - url: diff --git a/dm/templates/target_proxy/examples/target_proxy_ssl.yaml b/dm/templates/target_proxy/examples/target_proxy_ssl.yaml deleted file mode 100644 index 36067f0aa50..00000000000 --- a/dm/templates/target_proxy/examples/target_proxy_ssl.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Example of the target proxy template usage. -# -# Replace the following placeholders with valid values: -# : a URL of the BackendService resource -# : contents of the certificate file -# : contents of the private key file - -imports: - - path: templates/target_proxy/target_proxy.py - name: target_proxy.py - -resources: - - name: target-ssl-proxy - type: target_proxy.py - properties: - protocol: SSL - target: - ssl: - certificate: - certificate: - privateKey: diff --git a/dm/templates/target_proxy/examples/target_proxy_tcp.yaml b/dm/templates/target_proxy/examples/target_proxy_tcp.yaml deleted file mode 100644 index b4ecdc2907f..00000000000 --- a/dm/templates/target_proxy/examples/target_proxy_tcp.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Example of the target proxy template usage. -# -# Replace the placeholder with -# a valid URL of the BackendService resource. - -imports: - - path: templates/target_proxy/target_proxy.py - name: target_proxy.py - -resources: - - name: target-http-proxy - type: target_proxy.py - properties: - protocol: TCP - target: diff --git a/dm/templates/target_proxy/target_proxy.py b/dm/templates/target_proxy/target_proxy.py deleted file mode 100644 index d98079c5bd3..00000000000 --- a/dm/templates/target_proxy/target_proxy.py +++ /dev/null @@ -1,184 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates HTTP(S) and TCP/SSL proxy resources. """ - -import copy - -HTTP_BASE = True -TCP_BASE = False - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - - -def get_certificate(properties, project_id, res_name): - """ - Gets a link to an existing or newly created SSL Certificate - resource. - """ - - if 'url' in properties: - return properties['url'], [], [] - - name = '{}-ssl-cert'.format(res_name) - - resource = { - 'name': name, - 'type': 'ssl_certificate.py', - 'properties': copy.copy(properties) - } - resource['properties']['name'] = properties.get('name', name) - resource['properties']['project'] = project_id - - self_link = '$(ref.{}.selfLink)'.format(name) - outputs = [ - { - 'name': 'certificateName', - 'value': '$(ref.{}.name)'.format(name) - }, - { - 'name': 'certificateSelfLink', - 'value': self_link - } - ] - - return self_link, [resource], outputs - - -def get_insecure_proxy(is_http, res_name, project_id, properties, optional_properties): - """ Creates a TCP or HTTP Proxy resource. """ - - if is_http: - # https://cloud.google.com/compute/docs/reference/rest/v1/targetHttpProxies - type_name = 'gcp-types/compute-v1:targetHttpProxies' - target_prop = 'urlMap' - else: - # https://cloud.google.com/compute/docs/reference/rest/v1/targetTcpProxies - type_name = 'gcp-types/compute-v1:targetTcpProxies' - target_prop = 'service' - - resource_props = { - 'name': properties.get('name', res_name), - 'project': project_id, - } - resource = {'type': type_name, 'name': res_name, 'properties': resource_props} - - resource_props[target_prop] = properties['target'] - - for prop in optional_properties: - set_optional_property(resource_props, properties, prop) - - return [resource], [] - - -def get_secure_proxy(is_http, res_name, project_id, properties, optional_properties): - """ Creates an SSL or HTTPS Proxy resource. """ - - if is_http: - create_base_proxy = get_http_proxy - # https://cloud.google.com/compute/docs/reference/rest/v1/targetHttpsProxies - target_type = 'gcp-types/compute-v1:targetHttpsProxies' - else: - create_base_proxy = get_tcp_proxy - # https://cloud.google.com/compute/docs/reference/rest/v1/targetSslProxies - target_type = 'gcp-types/compute-v1:targetSslProxies' - - # Base proxy settings: - resources, outputs = create_base_proxy(properties, res_name, project_id) - resource = resources[0] - resource['type'] = target_type - resource_prop = resource['properties'] - for prop in optional_properties: - set_optional_property(resource_prop, properties, prop) - - # SSL settings: - ssl_resources = [] - ssl_outputs = [] - if 'sslCertificates' not in properties.get('ssl', []): - ssl = properties['ssl'] - url, ssl_resources, ssl_outputs = get_certificate(ssl['certificate'], project_id, res_name) - resource_prop['sslCertificates'] = [url] - set_optional_property(resource_prop, ssl, 'sslPolicy') - - if 'sslCertificates' in properties.get('ssl', []): - set_optional_property(resource_prop, properties['ssl'], 'sslCertificates') - - return resources + ssl_resources, outputs + ssl_outputs - - -def get_http_proxy(properties, res_name, project_id): - """ Creates the HTTP Proxy resource. """ - - return get_insecure_proxy(HTTP_BASE, res_name, project_id, properties, ['description']) - - -def get_tcp_proxy(properties, res_name, project_id): - """ Creates the TCP Proxy resource. """ - - optional_properties = ['description', 'proxyHeader'] - return get_insecure_proxy(TCP_BASE, res_name, project_id, properties, optional_properties) - - -def get_https_proxy(properties, res_name, project_id): - """ Creates the HTTPS Proxy resource. """ - - return get_secure_proxy(HTTP_BASE, res_name, project_id, properties, ['quicOverride']) - - -def get_ssl_proxy(properties, res_name, project_id): - """ Creates the SSL Proxy resource. """ - - return get_secure_proxy(TCP_BASE, res_name, project_id, properties, []) - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - protocol = properties['protocol'] - - if protocol == 'SSL': - resources, outputs = get_ssl_proxy(properties, context.env['name'], project_id) - elif protocol == 'TCP': - resources, outputs = get_tcp_proxy(properties, context.env['name'], project_id) - elif protocol == 'HTTPS': - resources, outputs = get_https_proxy(properties, context.env['name'], project_id) - else: - resources, outputs = get_http_proxy(properties, context.env['name'], project_id) - - return { - 'resources': - resources, - 'outputs': - outputs + [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - }, - { - 'name': 'kind', - 'value': '$(ref.{}.kind)'.format(context.env['name']) - }, - ] - } diff --git a/dm/templates/target_proxy/target_proxy.py.schema b/dm/templates/target_proxy/target_proxy.py.schema deleted file mode 100644 index 7259ab13990..00000000000 --- a/dm/templates/target_proxy/target_proxy.py.schema +++ /dev/null @@ -1,191 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: Target Proxy - author: Sourced Group Inc. - version: 1.0.1 - description: | - Depending on the configuration, supports creation of one of these proxy - resources: - - targetHttpProxy - - targetHttpsProxy - - targetTcpPProxy - - targetSslProxy - - For more information on this resource: - https://cloud.google.com/load-balancing/docs/target-proxies - - APIs endpoints used by this template: - - gcp-types/compute-v1:targetSslProxies => - https://cloud.google.com/compute/docs/reference/rest/v1/targetSslProxies - - gcp-types/compute-v1:targetHttpProxies => - https://cloud.google.com/compute/docs/reference/rest/v1/targetHttpProxies - - gcp-types/compute-v1:targetHttpsProxies => - https://cloud.google.com/compute/docs/reference/rest/v1/targetHttpsProxies - - gcp-types/compute-v1:targetTcpProxies => - https://cloud.google.com/compute/docs/reference/rest/v1/targetTcpProxies - -imports: - - path: ../ssl_certificate/ssl_certificate.py - name: ssl_certificate.py - -additionalProperties: false - -required: - - target - - protocol - -properties: - name: - type: string - description: | - Must comply with RFC1035. Specifically, the name must be 1-63 characters long and match - the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, - and all following characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - description: - type: string - description: The resource description (optional). - protocol: - type: string - description: The protocol type for the resource to proxy. - enum: - - HTTP - - HTTPS - - TCP - - SSL - target: - type: string - description: | - The URL to the BackendService resource (for the TCP and SSL - protocols). The URL to the UrlMap resource that defines the mapping from - URL to the BackendService (for theHTTP and HTTPS protocols). - ssl: - type: object - description: | - Encryption settings for connections processed by the resource. Used for - HTTPS and SSL proxies only. - oneOf: - - required: - - sslCertificates - - required: - - certificate - properties: - sslCertificates: - type: array - uniqItems: true - description: | - URLs to SslCertificate resources that are used to authenticate connections to Backends. - At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. - - Authorization requires the following Google IAM permission on the specified resource sslCertificates: - - compute.sslCertificates.get - minItems: 0 - maxItems: 15 - items: - type: string - certificate: - type: object - description: SSL certificate settings. - oneOf: - - required: - - url - - required: - - privateKey - - certificate - properties: - url: - type: string - description: The URL of an existing SSL certificate resource. - name: - type: string - description: The name of the SSL certificate resource. - description: - type: string - description: | - The description of the SSL certificate resource (optional). - privateKey: - type: string - description: The write-only private key in the PEM format. - certificate: - type: string - description: | - The local certificate file. The certificate must be in the PEM - format. The certificate chain must be no greater than 5 certs - long. The chain must include at least one intermediate cert. - sslPolicy: - type: string - description: | - The URL of the SslPolicy resource to be associated with this - resource. If not set, the proxy resource will have no SSL policy - configured. - proxyHeader: - type: string - default: NONE - description: | - The type of the proxy header to append before sending data to the - backend: NONE or PROXY_V1. The default is NONE. Used for the TCP and - SSL proxies only. - enum: - - NONE - - PROXY_V1 - quicOverride: - type: string - default: NONE - description: | - The QUIC override policy for the proxy resource. Determines whether - the load balancer will attempt to negotiate QUIC with clients. The values - are: NONE, ENABLE, or DISABLE. Enables QUIC when set to ENABLE; disables - QUIC when set to DISABLE; uses the QUIC policy with no user overrides - when set to NONE. If no value provided, defaults to NONE. Used for HTTPS - proxies only. - enum: - - NONE - - ENABLE - - DISABLE - -outputs: - name: - type: string - description: The resource name. - selfLink: - type: string - description: The URI (SelfLink) of the URL target proxy resource. - kind: - type: string - description: The resource kind. - certificateName: - type: string - description: The name of the SSL certificate, if one is to be created. - certificateSelfLink: - type: string - description: | - The URI (SelfLink) of the SSL certificate, if one is to be created. - -documentation: - - templates/target_proxy/README.md - -examples: - - templates/target_proxy/examples/target_proxy_http.yaml - - templates/target_proxy/examples/target_proxy_https.yaml - - templates/target_proxy/examples/target_proxy_tcp.yaml - - templates/target_proxy/examples/target_proxy_ssl.yaml diff --git a/dm/templates/target_proxy/tests/integration/target_proxy.bats b/dm/templates/target_proxy/tests/integration/target_proxy.bats deleted file mode 100755 index f8f290eeec8..00000000000 --- a/dm/templates/target_proxy/tests/integration/target_proxy.bats +++ /dev/null @@ -1,124 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - export HTTPS_RES_NAME="https-proxy-${RAND}" - export URL_MAP_RES_NAME="url-map-${RAND}" - export HTTPS_QUIC_OVERRIDE="ENABLE" - export SSL_RES_NAME="ssl-proxy-${RAND}" - export SSL_NAME="ssl-proxy-name-${RAND}" - export SSL_DESCRIPTION="ssl-proxy-description-${RAND}" - export SSL_BS_RES_NAME="ssl-backend-service-${RAND}" - export PROXY_HEADER="PROXY_V1" - export SSL_CERT_NAME="ssl-certificate-${RAND}" - export SSL_POLICY_NAME="ssl-policy-${RAND}" - export HTTP_RES_NAME="http-proxy-${RAND}" - export HTTP_NAME="https-proxy-name-${RAND}" - export HTTP_DESCRIPTION="http-proxy-description-${RAND}" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - gcloud compute ssl-policies create "${SSL_POLICY_NAME}" \ - --profile MODERN --min-tls-version 1.2 \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - gcloud compute ssl-policies delete "${SSL_POLICY_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying HTTP proxy" { - run gcloud compute target-http-proxies describe "${HTTP_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "description: ${HTTP_DESCRIPTION}" ]] - [[ "$output" =~ "${URL_MAP_RES_NAME}" ]] -} - -@test "Verifying HTTPS proxy" { - run gcloud compute target-https-proxies describe "${HTTPS_RES_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "quicOverride: ${HTTPS_QUIC_OVERRIDE}" ]] - [[ "$output" =~ "${URL_MAP_RES_NAME}" ]] - [[ "$output" =~ "${SSL_CERT_NAME}" ]] -} - -@test "Verifying HTTPS proxy sslCertificates" { - run gcloud compute target-https-proxies describe "${HTTPS_RES_NAME}-2" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "quicOverride: ${HTTPS_QUIC_OVERRIDE}" ]] - [[ "$output" =~ "${URL_MAP_RES_NAME}" ]] - [[ "$output" =~ "${SSL_CERT_NAME}" ]] -} - - -@test "Verifying SSL proxy" { - run gcloud compute target-ssl-proxies describe "${SSL_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "description: ${SSL_DESCRIPTION}" ]] - [[ "$output" =~ "proxyHeader: ${PROXY_HEADER}" ]] - [[ "$output" =~ "${SSL_CERT_NAME}" ]] - [[ "$output" =~ "${SSL_POLICY_NAME}" ]] - [[ "$output" =~ "${SSL_BS_RES_NAME}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - diff --git a/dm/templates/target_proxy/tests/integration/target_proxy.yaml b/dm/templates/target_proxy/tests/integration/target_proxy.yaml deleted file mode 100644 index e31890425ed..00000000000 --- a/dm/templates/target_proxy/tests/integration/target_proxy.yaml +++ /dev/null @@ -1,162 +0,0 @@ -# Test of the target proxy template. - -imports: - - path: templates/target_proxy/target_proxy.py - name: target_proxy.py - -resources: - - name: test-proxy - type: target_proxy.py - properties: - name: ${HTTPS_RES_NAME} - protocol: HTTPS - target: $(ref.${URL_MAP_RES_NAME}.selfLink) - quicOverride: ${HTTPS_QUIC_OVERRIDE} - ssl: - certificate: - url: $(ref.${SSL_RES_NAME}.certificateSelfLink) - - - name: test-proxy-2 - type: target_proxy.py - properties: - name: ${HTTPS_RES_NAME}-2 - protocol: HTTPS - target: $(ref.${URL_MAP_RES_NAME}.selfLink) - quicOverride: ${HTTPS_QUIC_OVERRIDE} - ssl: - sslCertificates: - - $(ref.${SSL_RES_NAME}.certificateSelfLink) - - - name: ${SSL_RES_NAME} - type: target_proxy.py - properties: - name: ${SSL_NAME} - description: ${SSL_DESCRIPTION} - protocol: SSL - target: $(ref.${SSL_BS_RES_NAME}.selfLink) - proxyHeader: ${PROXY_HEADER} - ssl: - sslPolicy: https://www.googleapis.com/compute/v1/projects/${CLOUD_FOUNDATION_PROJECT_ID}/global/sslPolicies/${SSL_POLICY_NAME} - certificate: - name: ${SSL_CERT_NAME} - certificate: | - -----BEGIN CERTIFICATE----- - MIIDODCCAiACCQCqBGuEeBXJTjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJD - QTEQMA4GA1UECAwHT250YXJpbzEQMA4GA1UEBwwHVG9yb250bzEVMBMGA1UECgwM - RXhhbXBsZSBPcmcuMRQwEgYDVQQDDAtleGFtcGxlLmNvbTAeFw0xODEwMTEyMDEy - MjVaFw0xOTEwMTEyMDEyMjVaMF4xCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRh - cmlvMRAwDgYDVQQHDAdUb3JvbnRvMRUwEwYDVQQKDAxFeGFtcGxlIE9yZy4xFDAS - BgNVBAMMC2V4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC - AQEA5yLVBWSqKRWSJrGh2nbW0j+Soy+uvDKCjSZtXIVIcWvSP+WXd6RE2zlsNee4 - UA90Jjhx6Si2MxraCNblm4MJSQg46irBn4Vmex/2iY2vD1MbMEusTNIfpDh3A27H - qdBe+WSO0uHXfmgC68M8mgTMcMLVoUsGgv8B710qBN1D9EKPZdEhYBAEhC1RFj+8 - o3krWa983QFVND4PeFJSZe0LxAg44/bHVFNKK5Ub+TPa9P3t86SpoNj9/M7DPSkh - AtqmHL+90G0gvkfvtaoNRHHdqk2X+Uz3cUXWgl8xE+X5wcWu7r3cMxPaJvuLldJa - SIcc4YIlKOB0nFDKPK+iy7LqPwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAdf4dG - IkEmdNmTeGPVOUis+7ziWzRPxt8Vpmuq24z4H9mIkAPo/2aLpMKH7bloeYvz8blu - 5VQZx7StoE5Sde1ss/AoaL1dVJi/dgmeN2cHy7J6POu3e9n6yXGiIh0qHlFe83nJ - RVIqtN9QGGuabGt3WGbKElMKwrCl9NGhExi/LntPFllXfTLb2pVGXH47ZihynbUj - 4S21+KnQUPjhg6Na6hP3qLVqSYtWataJFpy6DOG1wgoAWjagNc3ltGdmv6O/ZkI3 - 3vymENyn8G7n+Z1knXUXxv4rJoeiYbZ7/2/bQ8BTc/RI5qnhzO8VYmyAZrrKGZnD - W2xuikK4nQHsideP - -----END CERTIFICATE----- - privateKey: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEA5yLVBWSqKRWSJrGh2nbW0j+Soy+uvDKCjSZtXIVIcWvSP+WX - d6RE2zlsNee4UA90Jjhx6Si2MxraCNblm4MJSQg46irBn4Vmex/2iY2vD1MbMEus - TNIfpDh3A27HqdBe+WSO0uHXfmgC68M8mgTMcMLVoUsGgv8B710qBN1D9EKPZdEh - YBAEhC1RFj+8o3krWa983QFVND4PeFJSZe0LxAg44/bHVFNKK5Ub+TPa9P3t86Sp - oNj9/M7DPSkhAtqmHL+90G0gvkfvtaoNRHHdqk2X+Uz3cUXWgl8xE+X5wcWu7r3c - MxPaJvuLldJaSIcc4YIlKOB0nFDKPK+iy7LqPwIDAQABAoIBACHHm25gWeYLOwLg - rxDokVjE5b9ntpfWofHTDeSZrg61fVLNUSexIEcRy1jNdshsmcMEONGkm4w4fmkQ - Txo9OlwsEXVXrliL/IA+GZ/czxrkQHL8fD/17Z3oiqw7wn5074xvP9heHUpiFRsz - u2WfEeng76vU9Syr7DJ5YSy40beew48gJsfclbbAWl1GQ4s1wluoMlutCWjRKSAD - Qg1pjJQuTHDpD+PNgHrx4Xbyjyo6tGqcdt9B0crhuxwTZXUogQsRKRuMHlxxBsbm - kINhSsNf8V8iRCBtZ4FPWcq+Rk/KntNzB9NZQFmrH5hS0oQmZjzNAyzCXIaYTji7 - Ju8XDaECgYEA9hUDBBwniphLZxvIC8GHVgAFx76Xw085bksVI0jNl2yG1HgNjCNA - W7DXJnyAtJZQjaItZfvB/tMm/ZAypf77tnru2n/uRvB4uG1Yh7RSy7rhLpibvTpU - e+DHm2c6kVW6Ng4q6rFxaunpjKEaeZO8pKowUu4YGU9YaSqvIGwoPFcCgYEA8HOc - 1J5Rop56BPvJgozqQRRQ3Q3AFfzlyYEniF35twIqnehemU3nJMdVp9jbZizOcrmu - ZBma5c5P5Bjgam3SQvswTUxmbIZ2VvvXOv5aPeldNdFHrADpVmOdKwcPxQ8qx+IT - GK3rrVRkH6+JByseHhxl3igIM7fAtbd27ENDkFkCgYEA9YmhqMgu7CtpkUg3IwPH - dhgvrE6QP2EdfN+OB9bszNqM7hOb8Oh7nwGkq9Iu2gHh/nCDu+6ocwtdLERlRRxX - LI0dJwffSQlIaz0vyLg0pPOjHEtJmlZJVhHDGVy3I6zWUHlyeRr0gClFz/wv3n97 - CxKFhTns8dQp80WT2FYTD6ECgYBU0KMYSIQJNZda3Km22BflPtJLNwdzehJf4qPc - MTHdQPFhY87Cir0mtv1ayF6TiuiDhUWjX3jI6N47Wh8Gy5goMkxWZ8WVMFTb19eS - opeYURGk4x5B6MxlwZt1yvbgDrqLaQ5NXUPNjwAGQTe3hJkKDABOvZYvD/j04DMd - oZhaeQKBgGGgnxTTUTEdqZ/AsVD0NmaqauTmyjsUpmAph9oazERM729n9igob85z - KXQmD9gmtTrCuv8LGyEPFsIhlBTOlLyzHpMhI2Hd23hzQp8v09ZdDpx8SqHv0THW - y8YMreKih6+reSfC+GuOzQoKi4vTKO7wwuXYysXkg3juupqZ7Kab - -----END RSA PRIVATE KEY----- - - - name: ${HTTP_RES_NAME} - type: target_proxy.py - properties: - name: ${HTTP_NAME} - description: ${HTTP_DESCRIPTION} - protocol: HTTP - target: $(ref.${URL_MAP_RES_NAME}.selfLink) - -# Test prerequisites: - - name: ${URL_MAP_RES_NAME} - type: compute.v1.urlMap - properties: - defaultService: $(ref.http-backend-service-${RAND}.selfLink) - - - name: ${SSL_BS_RES_NAME} - type: compute.v1.backendService - properties: - loadBalancingScheme: EXTERNAL - protocol: SSL - backends: - - group: $(ref.instance-group-manager-${RAND}.instanceGroup) - healthChecks: - - $(ref.ssl-health-check-${RAND}.selfLink) - - - name: http-backend-service-${RAND} - type: compute.v1.backendService - properties: - loadBalancingScheme: EXTERNAL - protocol: HTTP - backends: - - group: $(ref.instance-group-manager-${RAND}.instanceGroup) - healthChecks: - - $(ref.http-health-check-${RAND}.selfLink) - - - name: instance-group-manager-${RAND} - type: compute.v1.instanceGroupManager - properties: - instanceTemplate: $(ref.instance-template-${RAND}.selfLink) - zone: us-east1-c - targetSize: 1 - namedPorts: - - name: http - port: 80 - - - name: instance-template-${RAND} - type: compute.v1.instanceTemplate - properties: - properties: - machineType: f1-micro - disks: - - autoDelete: true - boot: true - deviceName: boot - initializeParams: - sourceImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - type: PERSISTENT - networkInterfaces: - - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - network: global/networks/default - - - name: http-health-check-${RAND} - type: compute.v1.httpHealthCheck - - - name: ssl-health-check-${RAND} - type: compute.v1.healthCheck - properties: - type: SSL - sslHealthCheck: - port: 443 diff --git a/dm/templates/unmanaged_instance_group/README.md b/dm/templates/unmanaged_instance_group/README.md deleted file mode 100644 index a271b27af86..00000000000 --- a/dm/templates/unmanaged_instance_group/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Unmanaged Instance Group - -This template creates a unmanaged instance group. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, setup billing, enable requisite APIs](../project/README.md) -- Grant the [compute.admin](https://cloud.google.com/compute/docs/access/iam) IAM role to the [Deployment Manager service account](https://cloud.google.com/deployment-manager/docs/access-control#access_control_for_deployment_manager) - -## Deployment - -### Resources - -- [compute.v1.instanceGroups](https://cloud.google.com/compute/docs/reference/latest/instanceGroups) - -### Properties - -See the `properties` section in the schema file(s): - -- [Unmanaged Instance Group](unmanaged_instance_group.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit) - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment, in this - case [examples/unmanaged\_instance\_group\_add\_instance.yaml](examples/unmanaged_instance_group_add_instance.yaml) - -```shell - cp templates/unmanaged_instance_group/examples/unmanaged_instance_group_add_instance.yaml \ - my_unmanaged_instance_group_add_instance.yaml -``` - -4. Change the values in the config file to match your specific GCP setup. - Refer to the properties in the schema files described above. - -```shell - vim my_unmanaged_instance_group_add_instance.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment as described below, replacing - \ with your with your own deployment name - -```shell - gcloud deployment-manager deployments create \ - --config my_unmanaged_instance_group_add_instance.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [Unmanaged Instance Group](examples/unmanaged_instance_group.yaml) diff --git a/dm/templates/unmanaged_instance_group/examples/unmanaged_instance_group_add_instance.yaml b/dm/templates/unmanaged_instance_group/examples/unmanaged_instance_group_add_instance.yaml deleted file mode 100644 index e5acf100368..00000000000 --- a/dm/templates/unmanaged_instance_group/examples/unmanaged_instance_group_add_instance.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Example of the Unmanaged Instance Group template usage. -# -# In this example, a simple unmanaged instance group is created and 2 instances added. - -imports: - - path: templates/unmanaged_instance_group/unmanaged_instance_group.py - name: unmanaged_instance_group.py - -resources: - - name: unmanaged-instance-group-example - type: unmanaged_instance_group.py - properties: - project: - name: - zone: \ No newline at end of file diff --git a/dm/templates/unmanaged_instance_group/examples/unmanaged_instance_group_remove_instance.yaml b/dm/templates/unmanaged_instance_group/examples/unmanaged_instance_group_remove_instance.yaml deleted file mode 100644 index 282450a5b66..00000000000 --- a/dm/templates/unmanaged_instance_group/examples/unmanaged_instance_group_remove_instance.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example of the Unmanaged Instance Group template usage. -# -# In this example, 1 instance removed from unmanaged instance group, created in -# `unmanaged_instance_group_add_instance.yaml` example. - -imports: - - path: templates/unmanaged_instance_group/unmanaged_instance_group.py - name: unmanaged_instance_group.py - -resources: - - name: unmanaged-instance-group-example - type: unmanaged_instance_group.py - properties: - project: - name: - zone: diff --git a/dm/templates/unmanaged_instance_group/tests/integration/unmanaged_instance_group.bats b/dm/templates/unmanaged_instance_group/tests/integration/unmanaged_instance_group.bats deleted file mode 100755 index c5f226e22bc..00000000000 --- a/dm/templates/unmanaged_instance_group/tests/integration/unmanaged_instance_group.bats +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - export UMIG_NAME="umig-${RAND}" - export UMIG_RES_NAME="umig-${RAND}" - export ZONE="us-central1-c" - export PORT_NAME="http" - export PORT="80" - export INSTANCE_NAME="test-umig-instance-${RAND}" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < templates/unmanaged_instance_group/tests/integration/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - # Needed for testing resource creation with preexisting (not referenced) - # instance - gcloud compute instances create "${INSTANCE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --zone "${ZONE}" - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - rm -f "${RANDOM_FILE}" - gcloud compute instances delete "${INSTANCE_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --zone "${ZONE}" -q - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config "${CONFIG}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "$output" - [[ "$status" -eq 0 ]] -} - -@test "Verifying that unmanaged intance group was created" { - run gcloud compute instance-groups unmanaged list \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - echo "$output" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${UMIG_NAME}" ]] - [[ "$output" =~ "${ZONE}" ]] -} - -@test "Verifying unmanaged instance group properties" { - run gcloud compute instance-groups unmanaged describe "${UMIG_NAME}" \ - --zone "${ZONE}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "instanceGroups/${UMIG_NAME}" ]] - [[ "$output" =~ "name: ${PORT_NAME}" ]] - [[ "$output" =~ "port: ${PORT}" ]] - [[ "$output" =~ "size: 1" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - [[ "$status" -eq 0 ]] -} - diff --git a/dm/templates/unmanaged_instance_group/tests/integration/unmanaged_instance_group.yaml b/dm/templates/unmanaged_instance_group/tests/integration/unmanaged_instance_group.yaml deleted file mode 100644 index 90a39c2dc68..00000000000 --- a/dm/templates/unmanaged_instance_group/tests/integration/unmanaged_instance_group.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Test of the Unanaged Instance Group template. - -imports: - - path: templates/unmanaged_instance_group/unmanaged_instance_group.py - name: unmanaged_instance_group.py - -resources: - - name: ${UMIG_RES_NAME} - type: unmanaged_instance_group.py - properties: - name: ${UMIG_NAME} - zone: ${ZONE} - namedPorts: - - name: ${PORT_NAME} - port: ${PORT} - -# Test prerequisites: -# - name: ${INSTANCE_NAME} -# type: compute.v1.instances -# properties: -# zone: ${ZONE} diff --git a/dm/templates/unmanaged_instance_group/unmanaged_instance_group.py b/dm/templates/unmanaged_instance_group/unmanaged_instance_group.py deleted file mode 100644 index 870f3dafef1..00000000000 --- a/dm/templates/unmanaged_instance_group/unmanaged_instance_group.py +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. -""" This template creates an unmanaged instance group. """ - -def set_optional_property(receiver, source, property_name): - """ If set, copies the given property value from one object to another. """ - - if property_name in source: - receiver[property_name] = source[property_name] - - -def generate_instance_url(project, zone, instance): - """ Format the resource name as a resource URI. """ - - is_self_link = '/' in instance or '.' in instance - - if is_self_link: - instance_url = instance - else: - instance_url = 'projects/{}/zones/{}/instances/{}' - instance_url = instance_url.format(project, zone, instance) - - return instance_url - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - zone = properties.get('zone') - - # Network formatting - if 'network' in properties: - network_name = properties.get('network') - if not '/' in network_name: - network_propertie = { 'network': 'global/networks/{}'.format(network_name) } - else: - network_propertie = { 'network': network_name } - else: - network_propertie = {} - - properties.update(network_propertie) - - # Create unmanaged instance group resource - umig_properties = { - 'name': name, - 'project': project_id, - 'zone': zone - } - - known_properties = [ - 'description', - 'namedPorts', - 'region', - 'network', - ] - - for prop in known_properties: - set_optional_property(umig_properties, properties, prop) - - umig_resources = [ - { - 'name': name, - 'type': 'gcp-types/compute-v1:instanceGroups', - 'properties': umig_properties - }, - ] - - # If instances are specified, add/remove them to/from the group. - add_instances_resources = [] - remove_instances_resources = [] - instances = properties.get('instances', { - 'add': [], - 'delete': [] - }) - - # Generate outputs - umig_outputs = [ - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(name) - }, - { - 'name': 'name', - 'value': '$(ref.{}.name)'.format(name) - }, - { - 'name': 'zone', - 'value': '$(ref.{}.zone)'.format(name) - } - ] - - return { - 'resources': umig_resources + add_instances_resources + remove_instances_resources, - 'outputs': umig_outputs - } diff --git a/dm/templates/unmanaged_instance_group/unmanaged_instance_group.py.schema b/dm/templates/unmanaged_instance_group/unmanaged_instance_group.py.schema deleted file mode 100644 index d0000a76711..00000000000 --- a/dm/templates/unmanaged_instance_group/unmanaged_instance_group.py.schema +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright 2019 Google Inc. All rights reserved. -# -# 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. - -info: - title: Unmanaged Instance Group - author: Google Cloud PSO and partners - version: 1.2.0 - description: | - Creates a unmanaged instance group. - - For more information on this resource: - https://cloud.google.com/compute/docs/instance-groups/ - - APIs endpoints used by this template: - - gcp-types/compute-v1:instanceGroups => - https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups - - gcp-types/compute-v1:compute.instanceGroups.addInstances => - https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/addInstances - -additionalProperties: false - -required: - - zone - -properties: - name: - type: string - description: The name of the unmanaged instance group. Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the instance. - description: - type: string - description: An optional description of the resource. - zone: - type: string - description: | - The name of the zone where the unmanaged instance group is located. - namedPorts: - type: array - uniqueItems: true - description: | - A list of the named ports configured for the instance groups - complementary to the Instance Group Manager. - items: - type: object - additionalProperties: false - required: - - name - - port - properties: - name: - type: string - description: The port name. - port: - type: integer - minimum: 1 - maximum: 65535 - description: The port number. - network: - type: string - description: | - The URL of the network to which all instances in the instance group belong. - -outputs: - selfLink: - type: string - description: The URL (SelfLink) of the unmanaged instance group resource. - name: - type: string - description: The name of the unmanaged instance group resource. - zone: - type: string - description: | - The name of the zone where the unmanaged instance group is located. - -documentation: - - templates/unmanaged_instance_group/README.md - -examples: - - templates/unmanaged_instance_group/examples/unmanaged_instance_group.yaml diff --git a/dm/templates/url_map/README.md b/dm/templates/url_map/README.md deleted file mode 100644 index ca1bf5c36d3..00000000000 --- a/dm/templates/url_map/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# URL Map - -This template creates a URL map. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Grant the [compute.networkAdmin](https://cloud.google.com/compute/docs/access/iam) - or [compute.loadBalancerAdmin](https://cloud.google.com/compute/docs/access/iam) - IAM role to the Deployment Manager service account - -## Deployment - -### Resources - -- [compute.v1.urlMap](https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps) - -### Properties - -See the `properties` section in the schema file(s): - -- [URL Map](url_map.py.schema) - -### Usage - -1. Clone the [Deployment Manager Samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this - case, [examples/url\_map.yaml](examples/url_map.yaml): - -```shell - cp templates/url_map/examples/url_map.yaml \ - my_url_map.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for - properties, refer to the schema files listed above): - -```shell - vim my_url_map.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace \ with the relevant - deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_url_map.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [URL Map](examples/url_map.yaml) diff --git a/dm/templates/url_map/examples/url_map.yaml b/dm/templates/url_map/examples/url_map.yaml deleted file mode 100644 index 798a092ccff..00000000000 --- a/dm/templates/url_map/examples/url_map.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Example of the URL map template usage. -# -# Replace the following placeholders with valid values: -# : a URL of the backend service to handle requests -# when none of the host rules match -# : a host name for which the traffic must be handled by -# 'media-matcher' -# : a URL of the backend service to handle requests -# starting with the /media path -# : a URL of the backend service to handle requests -# of the matched hosts that do not start with the /media path - -imports: - - path: templates/url_map/url_map.py - name: url_map.py - -resources: - - name: test-url-map - type: url_map.py - properties: - defaultService: - hostRules: - - hosts: - - - pathMatcher: media-matcher - pathMatchers: - - name: media-matcher - defaultService: - pathRules: - - service: - paths: - - /media diff --git a/dm/templates/url_map/tests/integration/url_map.bats b/dm/templates/url_map/tests/integration/url_map.bats deleted file mode 100755 index 5e48ba91069..00000000000 --- a/dm/templates/url_map/tests/integration/url_map.bats +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores with dashes in the deployment name. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" - # Test specific variables. - export RES_NAME="url-map-${RAND}" - export NAME="url-map-name-${RAND}" - export DESCRIPTION="url-map-description" - export BACKEND_SERVICE_NAME="external-backend-service-${RAND}" - export IGM_NAME="zonal-igm-http-${RAND}" - export IT_NAME="instance-template-${RAND}" - export HC_NAME="test-healthcheck-http-test" - export PORT="80" - export HOST="example.com" - export PATH1="/audio" - export PATH2="/video" - export MATCHER_NAME="default-matcher" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < ${BATS_TEST_DIRNAME}/${TEST_NAME}.yaml > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - delete_config - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - run gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --config ${CONFIG} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - -@test "Verifying URL map properties" { - run gcloud compute url-maps describe "${NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "description: ${DESCRIPTION}" ]] -} - -@test "Verifying URL map default backend" { - run gcloud compute url-maps describe "${NAME}" \ - --format "yaml(defaultService)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "${BACKEND_SERVICE_NAME}" ]] -} - -@test "Verifying path matcher" { - run gcloud compute url-maps describe "${NAME}" \ - --format "yaml(pathMatchers)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "name: ${MATCHER_NAME}" ]] - [[ "$output" =~ "${BACKEND_SERVICE_NAME}" ]] -} - -@test "Verifying path matcher paths" { - run gcloud compute url-maps describe "${NAME}" \ - --format "yaml(pathMatchers)" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] - [[ "$output" =~ "- ${PATH1}" ]] - [[ "$output" =~ "- ${PATH2}" ]] - [[ "$output" =~ "${BACKEND_SERVICE_NAME}" ]] -} - -@test "Deleting deployment" { - run gcloud deployment-manager deployments delete "${DEPLOYMENT_NAME}" -q \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ "$status" -eq 0 ]] -} - diff --git a/dm/templates/url_map/tests/integration/url_map.yaml b/dm/templates/url_map/tests/integration/url_map.yaml deleted file mode 100644 index 8a23572a8c0..00000000000 --- a/dm/templates/url_map/tests/integration/url_map.yaml +++ /dev/null @@ -1,78 +0,0 @@ -# Test of the URL map template. - -imports: - - path: templates/url_map/url_map.py - name: url_map.py - -resources: - - name: ${RES_NAME} - type: url_map.py - properties: - name: ${NAME} - description: ${DESCRIPTION} - defaultService: $(ref.${BACKEND_SERVICE_NAME}.selfLink) - hostRules: - - hosts: - - ${HOST} - pathMatcher: ${MATCHER_NAME} - pathMatchers: - - name: ${MATCHER_NAME} - defaultService: $(ref.${BACKEND_SERVICE_NAME}.selfLink) - pathRules: - - service: $(ref.${BACKEND_SERVICE_NAME}.selfLink) - paths: - - ${PATH1} - - ${PATH2} - -# Test prerequisites. - - - name: ${BACKEND_SERVICE_NAME} - type: compute.v1.backendService - properties: - loadBalancingScheme: EXTERNAL - protocol: HTTP - backends: - - group: $(ref.${IGM_NAME}.instanceGroup) - healthChecks: - - $(ref.${HC_NAME}.selfLink) - - - name: ${IGM_NAME} - type: compute.v1.instanceGroupManager - properties: - instanceTemplate: $(ref.${IT_NAME}.selfLink) - zone: us-east1-c - targetSize: 1 - namedPorts: - - name: http - port: ${PORT} - - - name: ${IT_NAME} - type: compute.v1.instanceTemplate - properties: - properties: - machineType: f1-micro - disks: - - autoDelete: true - boot: true - deviceName: boot - initializeParams: - sourceImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - type: PERSISTENT - networkInterfaces: - - accessConfigs: - - name: External NAT - type: ONE_TO_ONE_NAT - network: global/networks/default - metadata: - items: - - key: startup-script - value: | - #! /bin/bash - sudo apt-get update - sudo apt-get install apache2 -y - sudo service apache2 restart - echo "http-`hostname`" | sudo tee /var/www/html/index.html - EOF" - - - name: ${HC_NAME} - type: compute.v1.httpHealthCheck diff --git a/dm/templates/url_map/url_map.py b/dm/templates/url_map/url_map.py deleted file mode 100644 index 378139d3a8c..00000000000 --- a/dm/templates/url_map/url_map.py +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -""" This template creates a URL map. """ - - -def set_optional_property(destination, source, prop_name): - """ Copies the property value if present. """ - - if prop_name in source: - destination[prop_name] = source[prop_name] - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - properties = context.properties - name = properties.get('name', context.env['name']) - project_id = properties.get('project', context.env['project']) - - resource = { - 'name': context.env['name'], - # https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps - 'type': 'gcp-types/compute-v1:urlMaps', - 'properties': { - 'name': name, - 'project': project_id, - }, - } - - optional_properties = [ - 'defaultService', - 'defaultUrlRedirect', - 'description', - 'hostRules', - 'pathMatchers', - 'tests', - ] - - for prop in optional_properties: - set_optional_property(resource['properties'], properties, prop) - - return { - 'resources': [resource], - 'output': - [ - { - 'name': 'name', - 'value': name - }, - { - 'name': 'selfLink', - 'value': '$(ref.{}.selfLink)'.format(context.env['name']) - } - ] - } diff --git a/dm/templates/url_map/url_map.py.schema b/dm/templates/url_map/url_map.py.schema deleted file mode 100644 index 8e18da29fd0..00000000000 --- a/dm/templates/url_map/url_map.py.schema +++ /dev/null @@ -1,247 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: URL Map - author: Sourced Group Inc. - version: 1.0.0 - description: | - Supports creation of the URL Map resource. - - For more information on this resource: - https://cloud.google.com/load-balancing/docs/https/url-map-concepts - - APIs endpoints used by this template: - - gcp-types/compute-v1:urlMaps => - https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps - -additionalProperties: false - -allOf: - - oneOf: - - required: - - defaultUrlRedirect - - required: - - defaultRouteAction - - required: - - defaultService - -properties: - name: - type: string - description: | - Must comply with RFC1035. Specifically, the name must be 1-63 characters long and match - the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, - and all following characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing the Cloud Router instance. The - Google apps domain is prefixed if applicable. - description: - type: string - description: The resource description (optional). - defaultUrlRedirect: - type: object - additionalProperties: false - properties: - hostRedirect: - type: string - description: | - The host that will be used in the redirect response instead of the one that was supplied in the request. - pathRedirect: - type: string - description: | - The path that will be used in the redirect response instead of the one that was supplied in the request. - pathRedirect cannot be supplied together with prefixRedirect. Supply one alone or neither. If neither is supplied, the path of the original request will be used for the redirect. - prefixRedirect: - type: string - description: | - The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch, retaining the remaining portion of the URL before redirecting the request. - prefixRedirect cannot be supplied together with pathRedirect. Supply one alone or neither. If neither is supplied, the path of the original request will be used for the redirect. - redirectResponseCode: - type: string - description: The HTTP Status code to use for this RedirectAction. - enum: - - MOVED_PERMANENTLY_DEFAULT - - FOUND - - SEE_OTHER - - TEMPORARY_REDIRECT - - PERMANENT_REDIRECT - httpsRedirect: - type: boolean - description: | - If set to true, the URL scheme in the redirected request is set to https. If set to false, the URL scheme of the redirected request will remain the same as that of the request. - This must only be set for UrlMaps used in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted. - stripQuery: - type: boolean - description: If set to true, any accompanying query portion of the original URL is removed prior to redirecting the request. If set to false, the query portion of the original URL is retained. - defaultService: - type: string - description: | - The full or partial URL of the defaultService resource to which traffic is directed if none of the - hostRules match. If defaultRouteAction is additionally specified, advanced routing actions like URL Rewrites, - etc. take effect prior to sending the request to the backend. However, if defaultService is specified, - defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any - weightedBackendServices, service must not be specified. - - Only one of defaultService, defaultUrlRedirect or defaultRouteAction.weightedBackendService must be set. - - Authorization requires one or more of the following Google IAM permissions on the specified resource defaultService: - - compute.backendBuckets.use - - compute.backendServices.use - hostRules: - type: array - uniqItems: true - description: | - The list of HostRules to use against the URL. - items: - type: object - additionalProperties: false - properties: - description: - type: string - description: | - The resource description (optional). - hosts: - type: array - description: | - The list of host patterns to match. They must be valid hostnames, except * will match any string of - ([a-z0-9-.]*). In that case, * must be the first character and must be followed - in the pattern by either - or .. - items: - type: string - pathMatcher: - type: string - description: | - The name of the PathMatcher to use for matching the path portion of - the URL if the hostRule matches the URL's host portion. - pathMatchers: - type: array - uniqItems: true - description: | - The list of the named PathMatchers to use against the URL. - items: - type: object - additionalProperties: false - properties: - name: - type: string - description: | - The name to which the PathMatcher is referred by the HostRule. - description: - type: string - description: | - The resource description (optional). - defaultService: - type: string - description: | - The full or partial URL to the BackendService resource. This will be used if none of the pathRules or - routeRules defined by this PathMatcher are matched. For example, the following are - all valid URLs to a BackendService resource: - - https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService - - compute/v1/projects/project/global/backendServices/backendService - - global/backendServices/backendService - - If defaultRouteAction is additionally specified, advanced routing actions like URL Rewrites, etc. take - effect prior to sending the request to the backend. However, if defaultService is specified, - defaultRouteAction cannot contain any weightedBackendServices. - Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified. - Only one of defaultService, defaultUrlRedirect or defaultRouteAction.weightedBackendService must be set. - - Authorization requires one or more of the following Google IAM permissions on the specified resource defaultService: - - compute.backendBuckets.use - - compute.backendServices.use - - Authorization requires one or more of the following Google IAM permissions on the specified resource defaultService: - - compute.backendBuckets.use - - compute.backendServices.use - pathRules: - type: array - uniqItems: true - description: | - The list of path rules. - items: - type: object - additionalProperties: false - properties: - service: - type: string - description: | - The full or partial URL of the backend service resource to which traffic is directed if this - rule is matched. If routeAction is additionally specified, advanced routing actions like - URL Rewrites, etc. take effect prior to sending the request to the backend. However, if service - is specified, routeAction cannot contain any weightedBackendService s. Conversely, if routeAction - specifies any weightedBackendServices, service must not be specified. - - Only one of urlRedirect, service or routeAction.weightedBackendService must be set. - - Authorization requires one or more of the following Google IAM permissions on the specified resource service: - - compute.backendBuckets.use - - compute.backendServices.use - paths: - type: array - uniqItems: true - description: | - The list of the path patterns to match. Each pattern must - start with /. Asterisks (*) are allowed only at the end, - following the /. The string fed to the path matcher does not - include any text after the first ? or #, and those characters - are not allowed here. - items: - type: string - tests: - type: array - uniqItems: true - description: | - The list of the expected URL mapping tests. Request to update this UrlMap - succeed only if all of the test cases pass. You can specify a maximum of - 100 tests per UrlMap. - items: - type: object - additionalProperties: false - properties: - description: - type: string - description: | - The test case description. - host: - type: string - description: | - The host portion of the URL. - path: - type: string - description: | - The path portion of the URL. - service: - type: string - description: | - The BackendService resource the given URL is expected to be mapped - to. - -outputs: - name: - type: string - description: The resource name. - selfLink: - type: string - description: The URI (SelfLink) of the URL map rule resource. - -documentation: - - templates/url_map/README.md - -examples: - - templates/url_map/examples/url_map.yaml diff --git a/dm/templates/vpn/README.md b/dm/templates/vpn/README.md deleted file mode 100644 index 332157cb683..00000000000 --- a/dm/templates/vpn/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# VPN - -This template creates a VPN. - -## Prerequisites - -- Install [gcloud](https://cloud.google.com/sdk) -- Create a [GCP project, set up billing, enable requisite APIs](../project/README.md) -- Create a [network](../network/README.md) -- Grant the [compute.networkAdmin or compute.admin](https://cloud.google.com/compute/docs/access/iam) IAM role to the project service account - -## Deployment - -### Resources - -- [compute.v1.targetVpnGateway](https://cloud.google.com/compute/docs/reference/latest/targetVpnGateways) -- [compute.v1.address](https://cloud.google.com/compute/docs/reference/rest/v1/addresses) -- [compute.v1.forwardingRule](https://cloud.google.com/compute/docs/reference/latest/forwardingRules) -- [compute.v1.vpnTunnel](https://cloud.google.com/compute/docs/reference/latest/vpnTunnels) -- [gcp-types/compute-v1:compute.routers.patch](https://www.googleapis.com/discovery/v1/apis/compute/v1/rest) - -### Properties - -See `properties` section in the schema file(s): - -- [VPN](../vpn/vpn.py.schema) - -### Usage - -1. Clone the [Deployment Manager samples repository](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit): - -```shell - git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit -``` - -2. Go to the [dm](../../) directory: - -```shell - cd dm -``` - -3. Copy the example DM config to be used as a model for the deployment; in this case, [examples/vpn.yaml](examples/vpn.yaml): - -```shell - cp templates/vpn/examples/vpn.yaml my_vpn.yaml -``` - -4. Change the values in the config file to match your specific GCP setup (for properties, refer to the schema files listed above): - -```shell - vim my_vpn.yaml # <== change values to match your GCP setup -``` - -5. Create your deployment (replace with the relevant deployment name): - -```shell - gcloud deployment-manager deployments create \ - --config my_vpn.yaml -``` - -6. In case you need to delete your deployment: - -```shell - gcloud deployment-manager deployments delete -``` - -## Examples - -- [VPN](examples/vpn.yaml) diff --git a/dm/templates/vpn/examples/vpn.yaml b/dm/templates/vpn/examples/vpn.yaml deleted file mode 100644 index c090e2aaf1d..00000000000 --- a/dm/templates/vpn/examples/vpn.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Example of the VPN template usage. -# -# In this example, a VPN is created. -# -# Upon successful deployment of the VPN resource, the following resources -# are created: -# - a target VPN gateway (compute.v1.targetVpnGateway) -# - a static address (compute.v1.address) -# - an ESP forwarding rule (compute.v1.forwardingRule) -# - a UDP 4500 forwarding rule (compute.v1.forwardingRule) -# - a UDP 500 forwarding rule (compute.v1.forwardingRule) -# - a VPN tunnel (compute.v1.vpnTunnel) -# -# Replace FIXME:network-name with the name of a valid VPC within the region -# Replace FIXME:cloud-router-name with the name a valid Cloud Router - -imports: - - path: templates/vpn/vpn.py - name: vpn.py - -resources: - - name: test-vpn - type: vpn.py - properties: - region: us-east1 - network: - peerAddress: 1.2.3.4 - asn: 65001 - sharedSecret: superSecretPassw0rd - router: diff --git a/dm/templates/vpn/tests/integration/vpn.bats b/dm/templates/vpn/tests/integration/vpn.bats deleted file mode 100644 index db68770fc8f..00000000000 --- a/dm/templates/vpn/tests/integration/vpn.bats +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env bats - -source tests/helpers.bash - -TEST_NAME=$(basename "${BATS_TEST_FILENAME}" | cut -d '.' -f 1) - -# Create a random 10-char string and save it in a file. -RANDOM_FILE="/tmp/${CLOUD_FOUNDATION_ORGANIZATION_ID}-${TEST_NAME}.txt" -if [[ ! -e "${RANDOM_FILE}" ]]; then - RAND=$(head /dev/urandom | LC_ALL=C tr -dc a-z0-9 | head -c 10) - echo ${RAND} > "${RANDOM_FILE}" -fi - -# Set variables based on the random string saved in the file. -# envsubst requires all variables used in the example/config to be exported. -if [[ -e "${RANDOM_FILE}" ]]; then - export RAND=$(cat "${RANDOM_FILE}") - DEPLOYMENT_NAME="${CLOUD_FOUNDATION_PROJECT_ID}-${TEST_NAME}-${RAND}" - # Replace underscores in the deployment name with dashes. - DEPLOYMENT_NAME=${DEPLOYMENT_NAME//_/-} - CONFIG=".${DEPLOYMENT_NAME}.yaml" -fi - -########## HELPER FUNCTIONS ########## - -function create_config() { - echo "Creating ${CONFIG}" - envsubst < "templates/vpn/tests/integration/${TEST_NAME}.yaml" > "${CONFIG}" -} - -function delete_config() { - echo "Deleting ${CONFIG}" - rm -f "${CONFIG}" -} - -function setup() { - # Global setup; this is executed once per test file. - if [ ${BATS_TEST_NUMBER} -eq 1 ]; then - gcloud compute networks create "network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --description "integration test ${RAND}" \ - --subnet-mode custom - gcloud compute networks subnets create "subnet-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network "network-${RAND}" \ - --range 10.118.8.0/22 \ - --region us-east1 - gcloud compute routers create "router-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --network "network-${RAND}" \ - --asn 65001 \ - --region us-east1 - create_config - fi - - # Per-test setup steps. -} - -function teardown() { - # Global teardown; this is executed once per test file. - if [[ "$BATS_TEST_NUMBER" -eq "${#BATS_TEST_NAMES[@]}" ]]; then - gcloud compute routers delete "router-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute networks subnets delete "subnet-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" \ - --region us-east1 -q - gcloud compute networks delete "network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - delete_config - rm -f "${RANDOM_FILE}" - fi - - # Per-test teardown steps. -} - - -@test "Creating deployment ${DEPLOYMENT_NAME} from ${CONFIG}" { - gcloud deployment-manager deployments create "${DEPLOYMENT_NAME}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" --config "${CONFIG}" -} - -@test "Verifying that resources were created in deployment ${DEPLOYMENT_NAME}" { - run gcloud compute networks list --filter="name:network-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [ "$status" -eq 0 ] - [[ "$output" =~ "network-${RAND}" ]] - - run gcloud compute routers list --filter="name:router-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [ "$status" -eq 0 ] - [[ "$output" =~ "router-${RAND} us-east1 network-${RAND}" ]] -} - -@test "Verifying the the static address was created in deployment ${DEPLOYMENT_NAME}" { - - run gcloud compute addresses list --filter="name:test-vpn-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [ "$status" -eq 0 ] - [[ "$output" =~ "test-vpn-${RAND}" ]] - [[ "$output" =~ "us-east1" ]] -} - -@test "Verifying that the target VPN gateway was created in deployment ${DEPLOYMENT_NAME}" { - - run gcloud compute target-vpn-gateways list \ - --filter="name:test-vpn-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [ "$status" -eq 0 ] - [[ "$output" =~ "test-vpn-${RAND} network-${RAND} us-east1" ]] -} - -@test "Verifying that the VPN tunnel was created in deployment ${DEPLOYMENT_NAME}" { - - run gcloud compute vpn-tunnels list --filter="name:test-vpn-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [ "$status" -eq 0 ] - [[ "$output" =~ "test-vpn-${RAND} us-east1 test-vpn-${RAND} 1.2.3.4" ]] -} - -@test "Verifying that the forwarding rules were created in deployment ${DEPLOYMENT_NAME}" { - - run gcloud compute forwarding-rules list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [ "$status" -eq 0 ] - [[ "$output" =~ "test-vpn-${RAND}-esp us-east1" ]] - [[ "$output" =~ "test-vpn-${RAND}-udp-4500 us-east1" ]] - [[ "$output" =~ "test-vpn-${RAND}-udp-500 us-east1" ]] -} - -@test "Deleting deployment" { - gcloud deployment-manager deployments delete ${DEPLOYMENT_NAME} \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" -q - - run gcloud compute addresses list --filter="name:test-vpn-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-vpn-${RAND}" ]] - - run gcloud compute target-vpn-gateways list \ - --filter="name:test-vpn-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-vpn-${RAND}" ]] - - run gcloud compute vpn-tunnels list --filter="name:test-vpn-${RAND}" \ - --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-vpn-${RAND}" ]] - - run gcloud compute forwarding-rules list --project "${CLOUD_FOUNDATION_PROJECT_ID}" - [[ ! "$output" =~ "test-vpn-${RAND}-esp" ]] - [[ ! "$output" =~ "test-vpn-${RAND}-udp-4500" ]] - [[ ! "$output" =~ "test-vpn-${RAND}-udp-500" ]] -} diff --git a/dm/templates/vpn/tests/integration/vpn.yaml b/dm/templates/vpn/tests/integration/vpn.yaml deleted file mode 100644 index 39f41d221c2..00000000000 --- a/dm/templates/vpn/tests/integration/vpn.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Test of the VPN template. -# -# Variables: -# RAND: A random string used by the testing suite. -# - -imports: - - path: templates/vpn/vpn.py - name: vpn.py - -resources: - - name: vpn-${RAND} - type: vpn.py - properties: - name: test-vpn-${RAND} - region: us-east1 - network: network-${RAND} - peerAddress: 1.2.3.4 - asn: 65001 - sharedSecret: superSecretPassw0rd - router: router-${RAND} diff --git a/dm/templates/vpn/vpn.py b/dm/templates/vpn/vpn.py deleted file mode 100644 index 968f4160cea..00000000000 --- a/dm/templates/vpn/vpn.py +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. -"""This template creates a VPN tunnel, gateway, and forwarding rules.""" - - -def generate_config(context): - """ Entry point for the deployment resources. """ - - - properties = context.properties - project_id = properties.get('project', context.env['project']) - - network = context.properties.get('networkURL', generate_network_uri( - project_id, - context.properties.get('network','') - )) - target_vpn_gateway = context.env['name'] + '-tvpng' - esp_rule = context.env['name'] + '-esp-rule' - udp_500_rule = context.env['name'] + '-udp-500-rule' - udp_4500_rule = context.env['name'] + '-udp-4500-rule' - vpn_tunnel = context.env['name'] + '-vpn' - router_vpn_binding = context.env['name'] + '-router-vpn-binding' - resources = [] - if 'ipAddress' in context.properties: - ip_address = context.properties['ipAddress'] - static_ip = '' - else: - static_ip = context.env['name'] + '-ip' - resources.append({ - # The reserved address resource. - 'name': static_ip, - # https://cloud.google.com/compute/docs/reference/rest/v1/addresses - 'type': 'gcp-types/compute-v1:addresses', - 'properties': { - 'name': properties.get('name', static_ip), - 'project': project_id, - 'region': context.properties['region'] - } - }) - ip_address = '$(ref.' + static_ip + '.address)' - - resources.extend([ - { - # The target VPN gateway resource. - 'name': target_vpn_gateway, - # https://cloud.google.com/compute/docs/reference/rest/v1/targetVpnGateways - 'type': 'gcp-types/compute-v1:targetVpnGateways', - 'properties': - { - 'name': properties.get('name', target_vpn_gateway), - 'project': project_id, - 'network': network, - 'region': context.properties['region'], - } - }, - { - # The forwarding rule resource for the ESP traffic. - 'name': esp_rule, - # https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules - 'type': 'gcp-types/compute-v1:forwardingRules', - 'properties': - { - 'name': '{}-esp'.format(properties.get('name')) if 'name' in properties else esp_rule, - 'project': project_id, - 'IPAddress': ip_address, - 'IPProtocol': 'ESP', - 'region': context.properties['region'], - 'target': '$(ref.' + target_vpn_gateway + '.selfLink)', - } - }, - { - # The forwarding rule resource for the UDP traffic on port 4500. - 'name': udp_4500_rule, - # https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules - 'type': 'gcp-types/compute-v1:forwardingRules', - 'properties': - { - 'name': '{}-udp-4500'.format(properties.get('name')) if 'name' in properties else udp_4500_rule, - 'project': project_id, - 'IPAddress': ip_address, - 'IPProtocol': 'UDP', - 'portRange': 4500, - 'region': context.properties['region'], - 'target': '$(ref.' + target_vpn_gateway + '.selfLink)', - } - }, - { - # The forwarding rule resource for the UDP traffic on port 500 - 'name': udp_500_rule, - # https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules - 'type': 'gcp-types/compute-v1:forwardingRules', - 'properties': - { - 'name': '{}-udp-500'.format(properties.get('name')) if 'name' in properties else udp_500_rule, - 'project': project_id, - 'IPAddress': ip_address, - 'IPProtocol': 'UDP', - 'portRange': 500, - 'region': context.properties['region'], - 'target': '$(ref.' + target_vpn_gateway + '.selfLink)', - } - }, - - ]) - router_url_tag = 'routerURL' - router_name_tag = 'router' - - if router_name_tag in context.properties: - router_url = context.properties.get(router_url_tag, generate_router_uri( - context.env['project'], - context.properties['region'], - context.properties[router_name_tag])) - # Create dynamic routing VPN - resources.extend([ - { - # The VPN tunnel resource. - 'name': vpn_tunnel, - # https://cloud.google.com/compute/docs/reference/rest/v1/vpnTunnels - 'type': 'gcp-types/compute-v1:vpnTunnels', - 'properties': - { - 'name': properties.get('name', vpn_tunnel), - 'project': project_id, - 'description': - 'A vpn tunnel', - 'ikeVersion': - 2, - 'peerIp': - context.properties['peerAddress'], - 'region': - context.properties['region'], - 'router': router_url, - 'sharedSecret': - context.properties['sharedSecret'], - 'targetVpnGateway': - '$(ref.' + target_vpn_gateway + '.selfLink)' - }, - 'metadata': { - 'dependsOn': [esp_rule, - udp_500_rule, - udp_4500_rule] - } - }]) - else: - # Create static routing VPN - resources.append( - { - # The VPN tunnel resource. - 'name': vpn_tunnel, - 'type': 'gcp-types/compute-v1:vpnTunnels', - 'properties': { - 'name': vpn_tunnel, - 'description': - 'A vpn tunnel', - 'ikeVersion': - 2, - 'peerIp': - context.properties['peerAddress'], - 'region': - context.properties['region'], - 'sharedSecret': - context.properties['sharedSecret'], - 'targetVpnGateway': - '$(ref.' + target_vpn_gateway + '.selfLink)', - 'localTrafficSelector': - context.properties['localTrafficSelector'], - 'remoteTrafficSelector': - context.properties['remoteTrafficSelector'], - - }, - 'metadata': { - 'dependsOn': [esp_rule, udp_500_rule, udp_4500_rule] - } - }, - ) - - return { - 'resources': - resources, - 'outputs': - [ - { - 'name': 'targetVpnGateway', - 'value': target_vpn_gateway - }, - { - 'name': 'staticIp', - 'value': static_ip - }, - { - 'name': 'espRule', - 'value': esp_rule - }, - { - 'name': 'udp500Rule', - 'value': udp_500_rule - }, - { - 'name': 'udp4500Rule', - 'value': udp_4500_rule - }, - { - 'name': 'vpnTunnel', - 'value': vpn_tunnel - }, - { - 'name': 'vpnTunnelUri', - 'value': '$(ref.'+vpn_tunnel+'.selfLink)' - } - ] - } - -def generate_network_uri(project_id, network): - """Format the resource name as a resource URI.""" - return 'projects/{}/global/networks/{}'.format(project_id, network) - -def generate_router_uri(project_id, region, router_name): - """Format the router name as a router URI.""" - return 'projects/{}/regions/{}/routers/{}'.format( - project_id, - region, - router_name - ) diff --git a/dm/templates/vpn/vpn.py.schema b/dm/templates/vpn/vpn.py.schema deleted file mode 100644 index 6efd082ee8f..00000000000 --- a/dm/templates/vpn/vpn.py.schema +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright 2018 Google Inc. All rights reserved. -# -# 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. - -info: - title: VPN - author: Sourced Group - version: 1.1.0 - description: | - Creates a VPN tunnel, gateway, and forwarding rules. - - For more information on this resource: - https://cloud.google.com/vpn/docs/concepts/overview - - APIs endpoints used by this template: - - gcp-types/compute-v1:instances => - https://cloud.google.com/compute/docs/reference/rest/v1/instances - - gcp-types/compute-v1:forwardingRules => - https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules - - gcp-types/compute-v1:addresses => - https://cloud.google.com/compute/docs/reference/rest/v1/addresses - - gcp-types/compute-v1:targetVpnGateways => - https://cloud.google.com/compute/docs/reference/rest/v1/targetVpnGateways - - gcp-types/compute-v1:vpnTunnels => - https://cloud.google.com/compute/docs/reference/rest/v1/vpnTunnels - - gcp-types/compute-v1:compute.routers.patch => - https://cloud.google.com/compute/docs/reference/rest/v1/routers/patch - -additionalProperties: false - -allOf: - - required: - - region - - peerAddress - - sharedSecret - - oneOf: - - required: - - networkURL - - required: - - network - - oneOf: - # Use dynamic routing. - - required: - - asn - - router - # Use static routing. - - allOf: - - not: - required: - - router - - required: - - localTrafficSelector - - remoteTrafficSelector - -properties: - name: - type: string - description: | - Common name for all provisioned resources. - Resource name would be used if omitted. - project: - type: string - description: | - The project ID of the project containing resources. The - Google apps domain is prefixed if applicable. - routerURL: - type: string - description: URL (or URI) of the Router resource. Used by vpnTunnels. - router: - type: string - description: | - Name of the Router resource. - networkURL: - type: string - description: | - The URL (or URI) of the network to which the VPN belongs. - network: - type: string - description: | - The name of the network to which the VPN belongs. Only use "networkName" - when it is impossible to get "networkURL". - region: - type: string - description: The URI of the region where the VPN resides. - peerAddress: - type: string - description: The IP address of the peer VPN gateway. Only IPv4 is supported. - pattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}$ - asn: - type: integer - description: | - The local BGP Autonomous System Number (ASN). Must be an RFC6996 private - ASN, either 16-bit or 32-bit. The value will be fixed for the VPN resource. - All VPN tunnels that link to the router will have the same local ASN. - sharedSecret: - type: string - description: | - The value is used to set the secure session between the Cloud VPN - gateway and the peer VPN gateway. - localTrafficSelector: - type: array - description: | - Used when establishing the VPN tunnel with the peer VPN gateway. - default: ["0.0.0.0/0"] - uniqItems: true - items: - type: string - description: "CIDR formatted string, for example: 192.168.0.0/16." - remoteTrafficSelector: - type: array - description: | - Used when establishing the VPN tunnel with the peer VPN gateway. - default: ["0.0.0.0/0"] - uniqItems: true - items: - type: string - description: "CIDR formatted string, for example: 192.168.0.0/16." - ipAddress: - type: string - description: | - Static IP address used by forwarding rules. When not specified, a new static - IP address will be created. - -outputs: - targetVpnGateway: - type: string - description: The name of the target VPN gateway resource. - staticIp: - type: string - description: The name of the reserved address resource. - espRule: - type: string - description: The name of the ForwardingRule resource for the ESP traffic. - udp4500Rule: - type: string - description: The name of the ForwardingRule resource for the UDP 4500 traffic. - udp500Rule: - type: string - description: The name of the ForwardingRule resource for the UDP 500 traffic. - vpnTunnel: - type: string - description: The name of the VPN tunnel resource. - vpnTunnelUri: - type: string - description: The URI of the VPN tunnel resource. - -documentation: - - templates/vpn/README.md - -examples: - - templates/vpn/examples/vpn.yaml diff --git a/dm/tests/cloud-foundation-tests.conf.example b/dm/tests/cloud-foundation-tests.conf.example deleted file mode 100644 index 53fede64694..00000000000 --- a/dm/tests/cloud-foundation-tests.conf.example +++ /dev/null @@ -1,5 +0,0 @@ -# Please change the values for these variables to match your organization's GCP setup -export CLOUD_FOUNDATION_ORGANIZATION_ID="111111111111" -export CLOUD_FOUNDATION_PROJECT_ID="my-project" -export CLOUD_FOUNDATION_BILLING_ACCOUNT_ID="AAAAAA-111111-222222" -export CLOUD_FOUNDATION_USER_ACCOUNT="my-name@example.com" diff --git a/dm/tests/fixtures/configs/my-firewalls.yaml b/dm/tests/fixtures/configs/my-firewalls.yaml deleted file mode 100644 index 766c72db350..00000000000 --- a/dm/tests/fixtures/configs/my-firewalls.yaml +++ /dev/null @@ -1,48 +0,0 @@ -name: my-firewalls -description: My firewalls deployment - -imports: - - path: templates/firewall/firewall.py -resources: - - type: templates/firewall/firewall.py - name: my-firewall-prod - properties: - network: $(out.my-networks.my-network-prod.name) - rules: - - name: allow-proxy-from-inside-prod - allowed: - - IPProtocol: tcp - ports: - - "80" - - "444" - description: This rule allows connectivity to the HTTP proxies - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 - - name: allow-dns-from-inside-prod - allowed: - - IPProtocol: udp - ports: - - "53" - - IPProtocol: tcp - ports: - - "53" - description: this rule allows DNS queries to google's 8.8.8.8 - direction: EGRESS - destinationRanges: - - 8.8.8.8/32 - - type: templates/firewall/firewall.py - name: my-firewall-dev - properties: - network: $(out.my-networks.my-network-prod.name) - rules: - - name: allow-proxy-from-inside-dev - allowed: - - IPProtocol: tcp - ports: - - "80" - - "444" - description: This rule allows connectivity to the HTTP proxies - direction: INGRESS - sourceRanges: - - 10.0.0.0/8 diff --git a/dm/tests/fixtures/configs/my-instance-1.yaml b/dm/tests/fixtures/configs/my-instance-1.yaml deleted file mode 100644 index 2d0359a6ace..00000000000 --- a/dm/tests/fixtures/configs/my-instance-1.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Example on how to use the instance template -# -# In this example, a Ubuntu 18.04 instance with Nginx is created. -description: My instance deployment for prod environment - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: my-instance-prod-1 - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - network: $(out.my-networks.my-network-prod.name) - metadata: - items: - - key: startup-script - value: sudo apt-get update && sudo apt-get install -y nginx diff --git a/dm/tests/fixtures/configs/my-instance-2.yaml b/dm/tests/fixtures/configs/my-instance-2.yaml deleted file mode 100644 index cfcf6703102..00000000000 --- a/dm/tests/fixtures/configs/my-instance-2.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Example on how to use the instance template -# -# In this example, a Ubuntu 18.04 instance with Nginx is created. -description: | - This instance is dependend on 'my-networks' and 'my-instance-1' configs - -imports: - - path: templates/instance/instance.py - name: instance.py - -resources: - - name: my-instance-prod-2 - type: instance.py - properties: - zone: us-central1-a - diskImage: projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts - diskSizeGb: 100 - machineType: f1-micro - diskType: pd-ssd - network: $(out.my-networks.my-network-prod.name) - metadata: - items: - - key: startup-script - value: | - #!/bin/bash - apt-get update - apt-get install -y nginx - cat << EOF > /tmp/instance-1-ip.txt - $(out.my-instance-1.my-instance-prod-1.internalIp) - EOF diff --git a/dm/tests/fixtures/configs/my-networks.yaml b/dm/tests/fixtures/configs/my-networks.yaml deleted file mode 100644 index d3837a6c35d..00000000000 --- a/dm/tests/fixtures/configs/my-networks.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Example of a config that has no dependencies. -# -# Notice the 'name' and 'project' yaml directives are not specified in this -# config, meaning that the deployment name will be obtained from the filename -# (without the extension), and the project needs to be specified via one of -# these methods, in this order of precedence: -# 1- The '--project' command line option (highest precedence) -# 2- The 'project' directive in this config file -# 3- The CLOUD_FOUNDATION_TOOLKIT_PROJECT_ID environment variable -# 4- The default projected configured with the CGP SDK - - -description: my networks deployment - -imports: - - path: templates/network/network.py - -resources: - - type: templates/network/network.py - name: my-network-prod - properties: - autoCreateSubnetworks: true - - - type: templates/network/network.py - name: my-network-dev - properties: - autoCreateSubnetworks: false diff --git a/dm/tests/helpers.bash b/dm/tests/helpers.bash deleted file mode 100644 index 96c24f33a56..00000000000 --- a/dm/tests/helpers.bash +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# This file is meant to hold common variables and functions to be used by the -# testing suite (bats). -# -# Tests need to run against the user's own organization/projects/etc, so the -# most basic configs are read and exported from the user's own -# `~/.cloud-foundation-test.conf`. -# -# An example for this config is placed under `tests/cloud-foundation-tests.conf`. Users should -# move this file to `~/.cloud-foundation-test.conf` and tweak according to their own GCP -# organizational structure - -CLOUD_FOUNDATION_CONF=${CLOUD_FOUNDATION_CONF-~/.cloud-foundation-tests.conf} - -if [[ -z "${CLOUD_FOUNDATION_ORGANIZATION_ID}" || -z "${CLOUD_FOUNDATION_BILLING_ACCOUNT_ID}" || -z "${CLOUD_FOUNDATION_PROJECT_ID}" ]]; then - if [[ ! -e ${CLOUD_FOUNDATION_CONF} ]]; then - echo "Please setup your environment variables or Cloud Foundation config file" - echo "Default location for config: ~/.cloud-foundation-tests.conf. Example:" - echo "=====================" - cat tests/cloud-foundation-tests.conf.example - echo "=====================" - exit 1 - fi - source ${CLOUD_FOUNDATION_CONF} -fi diff --git a/dm/tests/run-tests b/dm/tests/run-tests deleted file mode 100644 index b51dc2762ee..00000000000 --- a/dm/tests/run-tests +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -# Copyright 2018 Google Inc. All Rights Reserved. -# - -# Finds the directory name for this script, and source the env -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -source "$DIR/../src/cftenv" - -# Executes tests -exec python -m pytest ${@} diff --git a/dm/tests/templates/__init__.py b/dm/tests/templates/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/dm/tests/templates/conftest.py b/dm/tests/templates/conftest.py deleted file mode 100644 index c93cf88fb00..00000000000 --- a/dm/tests/templates/conftest.py +++ /dev/null @@ -1,39 +0,0 @@ -from os.path import join, dirname, isdir -from os import walk -import yaml - -def read_file(path): - with open(path) as f: - contents = f.read() - f.close() - return yaml.safe_load(contents) - -def look_for_schemas_tests(root): - ret = [] - - for (dirpath, dirnames, filenames) in walk(root): - for file in filenames: - if ( - file.endswith('.yaml') and - (file.startswith('invalid_') or file.startswith('valid_')) - ): - filename = join(dirpath, file) - ret.append( - (file.startswith('valid_'), filename, read_file(filename)) - ) - - return ret - -def look_for_schemas_dirs_tests(): - template_root = join(dirname(__file__), '..', '..', 'templates') - ret = [] - - for (dirpath, dirnames, filenames) in walk(template_root): - for dir in dirnames: - dir_unit = join(dirpath, dir, 'tests', 'schemas') - if isdir(dir_unit): - schema = read_file(join(dirpath, dir, dir + '.py.schema')) - ret.append((dir, schema, look_for_schemas_tests(dir_unit))) - - return ret - diff --git a/dm/tests/templates/test_schemas.py b/dm/tests/templates/test_schemas.py deleted file mode 100644 index cfb4f274b64..00000000000 --- a/dm/tests/templates/test_schemas.py +++ /dev/null @@ -1,15 +0,0 @@ -from .conftest import look_for_schemas_dirs_tests -from jsonschema.exceptions import ValidationError -from jsonschema import validate - -def test_schemas(): - modules = look_for_schemas_dirs_tests() - for (module, schema, files) in modules: - for (isValid, path, data) in files: - try: - validate(data, schema) - if not isValid: - raise Exception("Validation for {} should have failed".format(path)) - except ValidationError: - if isValid: - raise diff --git a/dm/tests/unit/__init__.py b/dm/tests/unit/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/dm/tests/unit/conftest.py b/dm/tests/unit/conftest.py deleted file mode 100644 index 8b058460470..00000000000 --- a/dm/tests/unit/conftest.py +++ /dev/null @@ -1,84 +0,0 @@ -from collections import namedtuple -import io -import jinja2 -import os -import os.path -import pytest - -FIXTURES_DIR = '../fixtures' - -ConfigType = namedtuple('ConfigType', ['path', 'content', 'jinja']) - -def get_fixtures_fullpath(): - """ Returns the full path for the fixture directory - - Args: - - Returns: The full path to the fixture diretory, Eg: - /home/vagrant/git/cloud-foundation-toolkit/dm/tests/unit/../fixtures/configs/ - - """ - return '{}/{}'.format( - os.path.dirname(os.path.realpath(__file__)), - FIXTURES_DIR, - ) - -def get_configsdir_fullpath(): - """ Returns the full path for a config file fixture - - Args: - - Returns: The full path to the config directory, Eg: - /home/vagrant/git/cloud-foundation-toolkit/dm/tests/unit/../fixtures/configs/config-test-1.yaml - - """ - return '{}/{}'.format( - get_fixtures_fullpath(), - 'configs' - ) - -def get_config_fullpath(config): - """ Returns the full path for a config file fixture - - Args: - config (string): The config file name. Eg, config-test-1.yaml - - Returns: The full path to the config file, Eg: - /home/vagrant/git/cloud-foundation-toolkit/dm/tests/unit/../fixtures/configs/config-test-1.yaml - - """ - return '{}/{}'.format( - get_configsdir_fullpath(), - config - ) - - -class Configs(): - directory = get_configsdir_fullpath() - - @property - def files(self): - if not hasattr(self, '_files'): - self._files = {} - files = [f for f in os.listdir(self.directory) if '.yaml' == f[-5:]] - for f in files: - fullpath = get_config_fullpath(f) - content = io.open(fullpath).read() - self._files[f] = ConfigType( - path=fullpath, - content=content, - jinja=jinja2.Template(content).render() - ) - return self._files - - -@pytest.fixture -def configs(): - return Configs() - - -if __name__ == '__main__': - c = Configs() - print(c.directory) - for f in c.files: - print(f.path, f.content) diff --git a/dm/tests/unit/test_actions.py b/dm/tests/unit/test_actions.py deleted file mode 100644 index 490ca8eb30c..00000000000 --- a/dm/tests/unit/test_actions.py +++ /dev/null @@ -1,137 +0,0 @@ -from six import PY2 - -if PY2: - import mock -else: - import unittest.mock as mock - - -from apitools.base.py.exceptions import HttpNotFoundError -import pytest - -from cloud_foundation_toolkit import actions -from cloud_foundation_toolkit.deployment import Config, ConfigGraph - - -ACTIONS = ['apply', 'create', 'delete', 'update'] - - -class Args(object): - - def __init__(self, **kwargs): - self.preview = False - self.project = False - self.show_stages = False - self.format = 'human' - [setattr(self, k, v) for k, v in kwargs.items()] - - -def get_number_of_elements(items): - if isinstance(item, list): - return sum(get_number_of_elements(subitem) for subitem in item) - else: - return 1 - - -def test_execute(configs): - args = Args(action='apply', config=[configs.directory]) - with mock.patch('cloud_foundation_toolkit.actions.Deployment') as m1: - graph = ConfigGraph([v.path for k, v in configs.files.items()]) - n_configs = len(configs.files) - - r = actions.execute(args) - assert r == None - assert m1.call_count == n_configs - - args.show_stages = True - r = actions.execute(args) - assert r == None - assert m1.call_count == n_configs - - with mock.patch('cloud_foundation_toolkit.actions.json.dumps') as m2: - args.format = 'json' - r = actions.execute(args) - assert m1.call_count == n_configs - assert m2.call_count == 1 - - with mock.patch('cloud_foundation_toolkit.actions.YAML.dump') as m2: - args.format = 'yaml' - r = actions.execute(args) - assert m1.call_count == n_configs - assert m2.call_count == 1 - - - - - -def test_valid_actions(): - ACTUAL_ACTIONS = actions.ACTION_MAP.keys() - ACTUAL_ACTIONS.sort() - assert ACTUAL_ACTIONS == ACTIONS - - -def test_action(configs): - args = Args(config=[configs.directory]) - for action in ACTIONS: - args.action = action - args.show_stages = False - n_configs = len(configs.files) - with mock.patch('cloud_foundation_toolkit.actions.Deployment') as m1: - # Test the normal/expected flow of the function - r = actions.execute(args) - method = getattr(mock.call(), action) - assert m1.call_count == n_configs - if action == 'delete': - assert m1.mock_calls.count(method()) == n_configs - else: - assert m1.mock_calls.count(method(preview=args.preview)) == n_configs - - # Test exception handling in the function - m1.reset_mock() - getattr(m1.return_value, action).side_effect = HttpNotFoundError('a', 'b', 'c') - if action == 'delete': - # if delete is called, execute() should catch the exception - # and keep going as if nothing happens - r = actions.execute(args) - assert m1.mock_calls.count(method()) == n_configs - else: - # If exception is raised in any method other than delete, - # something is really wrong, so exception in re-raised - # by `execute()`, making the script exit - # called onde - with pytest.raises(HttpNotFoundError): - r = actions.execute(args) - assert m1.mock_calls.count(method(preview=args.preview)) == 1 - - # Test dry-run - m1.reset_mock() - args.show_stages = True - r = actions.execute(args) - method = getattr(mock.call(), action) - m1.assert_not_called() - - -def test_get_config_files(configs): - # Test only single directory - r = actions.get_config_files([configs.directory]) - files = [v.path for k, v in configs.files.items()] - files.sort() - r.sort() - assert files == r - - # Test only files - files = [v.path for k, v in configs.files.items()] - r = actions.get_config_files(files) - files.sort() - r.sort() - assert files == r - - # Test files and directories - confs = [configs.directory] + ['some_file.yaml'] - r = actions.get_config_files(confs) - files = [v.path for k, v in configs.files.items()] + ['some_file.yaml'] - files.sort() - r.sort() - assert files == r - - diff --git a/dm/tests/unit/test_deployment.py b/dm/tests/unit/test_deployment.py deleted file mode 100644 index b64978eaea3..00000000000 --- a/dm/tests/unit/test_deployment.py +++ /dev/null @@ -1,90 +0,0 @@ -from six import PY2 - -from apitools.base.py.exceptions import HttpNotFoundError -import jinja2 -import pytest -from ruamel.yaml import YAML - -from cloud_foundation_toolkit.deployment import Config -from cloud_foundation_toolkit.deployment import ConfigGraph -from cloud_foundation_toolkit.deployment import Deployment - -if PY2: - import mock -else: - import unittest.mock as mock - -class Message(): - def __init__(self, **kwargs): - [setattr(self, k, v) for k, v in kwargs.items()] - - -@pytest.fixture -def args(): - return Args() - -def test_config(configs): - c = Config(configs.files['my-networks.yaml'].path) - assert c.as_string == configs.files['my-networks.yaml'].jinja - - -def test_config_list(configs): - config_paths = [v.path for k, v in configs.files.items()] - config_list = ConfigGraph(config_paths) - for level in config_list: - assert isinstance(level, list) - for c in level: - assert isinstance(c, Config) - - -def test_deployment_object(configs): - config = Config(configs.files['my-networks.yaml'].path) - deployment = Deployment(config) - assert deployment.config['name'] == 'my-networks' - - -def test_deployment_get(configs): - config = Config(configs.files['my-networks.yaml'].path) - deployment = Deployment(config) - with mock.patch.object(deployment.client.deployments, 'Get') as m: - m.return_value = Message( - name='my-networks', - fingerprint='abcdefgh' - ) - d = deployment.get() - assert d is not None - assert deployment.current == d - - -def test_deployment_get_doesnt_exist(configs): - config = Config(configs.files['my-networks.yaml'].path) - deployment = Deployment(config) - with mock.patch('cloud_foundation_toolkit.deployment.get_deployment') as m: - m.return_value = None - d = deployment.get() - assert d is None - assert deployment.current == d - - -def test_deployment_create(configs): - config = Config(configs.files['my-networks.yaml'].path) - patches = { - 'client': mock.DEFAULT, - 'wait': mock.DEFAULT, - 'get': mock.DEFAULT, - 'print_resources_and_outputs': mock.DEFAULT - } - - with mock.patch.multiple(Deployment, **patches) as mocks: - deployment = Deployment(config) - mocks['client'].deployments.Insert.return_value = Message( - name='my-network-prod', - fingerprint='abcdefgh' - ) - mocks['client'].deployments.Get.return_value = Message( - name='my-network-prod', - fingerprint='abcdefgh' - ) - - d = deployment.create() - assert deployment.current == d diff --git a/dm/tests/unit/test_dm_utils.py b/dm/tests/unit/test_dm_utils.py deleted file mode 100644 index 268ac94cfd9..00000000000 --- a/dm/tests/unit/test_dm_utils.py +++ /dev/null @@ -1,26 +0,0 @@ -from six import PY2 - -from apitools.base.py.exceptions import HttpNotFoundError -import pytest -from ruamel.yaml import YAML - -from cloud_foundation_toolkit.dm_utils import API -from cloud_foundation_toolkit.dm_utils import get_deployment - - -if PY2: - import mock -else: - import unittest.mock as mock - -class Message(): - def __init__(self, **kwargs): - [setattr(self, k, v) for k, v in kwargs.items()] - - -def test_get_deployment(): - with mock.patch.object(API.client.deployments, 'Get') as m: - m.side_effect = HttpNotFoundError('a', 'b', 'c') - d = get_deployment('some-deployment', 'some-project') - assert d is None - diff --git a/dm/tox.ini b/dm/tox.ini deleted file mode 100644 index 35660b8268a..00000000000 --- a/dm/tox.ini +++ /dev/null @@ -1,18 +0,0 @@ -[tox] -envlist = py27 - -[testenv] -setenv = - VIRTUAL_ENV={envdir} -deps = - -rrequirements/development.txt -usedevelop = True -whitelist_externals = - make - /bin/bash -commands = - {toxinidir}/tests/run-tests {posargs} - -[testenv:venv] -envdir = venv -commands = From 9ba67cfb2ae590336db235b1dff421e005f5fe51 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Mon, 8 Apr 2024 12:26:59 -0700 Subject: [PATCH 0905/1371] chore: Add local.jss_common_group to dataanalytics-eventdriven JSS (#2257) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 70b5654ae7e..03804013b0a 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -893,6 +893,7 @@ locals { short_name = "dataanalytics-eventdriven" org = "GoogleCloudPlatform" description = "Uses click-to-deploy to demonstrate how to load data from Cloud Storage to BigQuery using an event-driven load function." + groups = [local.jss_common_group] owners = ["fellipeamedeiros", "sylvioneto"] }, ] From bb29bbef8137f9e084e3269f62bd174e50121281 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 8 Apr 2024 18:32:03 -0500 Subject: [PATCH 0906/1371] feat: support plan assertions in blueprint test (#2258) Co-authored-by: Andrew Peabody --- infra/blueprint-test/README.md | 16 +- .../blueprint-test/build/int.cloudbuild.yaml | 2 +- infra/blueprint-test/pkg/tft/terraform.go | 140 ++++++++++++------ .../terraform_simple_base_api_module_test.go | 6 + .../test/terraform_simple_plan_test.go | 48 ++++++ 5 files changed, 164 insertions(+), 48 deletions(-) create mode 100644 infra/blueprint-test/test/terraform_simple_plan_test.go diff --git a/infra/blueprint-test/README.md b/infra/blueprint-test/README.md index 5682ab44848..a2b50d57c49 100644 --- a/infra/blueprint-test/README.md +++ b/infra/blueprint-test/README.md @@ -383,7 +383,7 @@ Here, the custom assertion failed since the expected region and zone configured # 5. Appendix -## 5.1 Advanced Topic +## 5.1 Advanced Topics ### 5.1.1 Terraform Fixtures Fixtures can also be used to test similar examples and modules when the only thing changing is the data. The following example illustrates the usage of the `examples/mysql-public` as the source and passing in the data required to execute the test. @@ -405,3 +405,17 @@ module "mysql-fixture" { Similar to the example module, outputs can be configured for the fixture module as well, especially for the generated values that need to be asserted in the test. Complete code files for the fixture module can be found [here](https://github.com/terraform-google-modules/terraform-google-sql-db/tree/master/test/fixtures/mysql-public). + +### 5.1.2 Plan Assertions + +The `plan` stage can be used to perform additional assertions on planfiles. This can be useful for scenarios where additional validation is useful to fail fast before proceeding to more expensive stages like `apply`, or smoke testing configuration without performing an `apply` at all. + +Currently a default plan function does not exist and cannot be used with auto generated tests. Plan stage can be activated by providing a custom plan function. Plan function recieves a parsed `PlanStruct` which contains the [raw TF plan JSON representation](https://www.terraform.io/docs/internals/json-format.html#plan-representation) as well as some additional processed data like map of resource changes. + +```go +networkBlueprint.DefinePlan(func(ps *terraform.PlanStruct, assert *assert.Assertions) { + ... + }) +``` + +Additionally, the `TFBlueprintTest` also exposes a `PlanAndShow` method which can be used to perform ad-hoc plans (for example in `verify` stage). diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 6dd7109f372..9cd9f66b038 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -23,7 +23,7 @@ steps: dir: 'infra/blueprint-test/pkg' - id: test name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' - args: ['/bin/bash', '-c', 'git config --global user.name "cft-test"; git config --global user.email "<>"; go test -v'] + args: ['/bin/bash', '-c', 'git config --global user.name "cft-test"; git config --global user.email "<>"; go test -v -timeout 20m'] dir: 'infra/blueprint-test/test' - id: teardown name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 35807a49582..23f26a7917f 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -39,9 +39,9 @@ import ( ) const ( - setupKeyOutputName = "sa_key" - tftCacheMutexFilename = "bpt-tft-cache.lock" - vetFilename = "plan.tfplan" + setupKeyOutputName = "sa_key" + tftCacheMutexFilename = "bpt-tft-cache.lock" + planFilename = "plan.tfplan" ) var ( @@ -56,29 +56,30 @@ var ( // TFBlueprintTest implements bpt.Blueprint and stores information associated with a Terraform blueprint test. type TFBlueprintTest struct { - discovery.BlueprintTestConfig // additional blueprint test configs - name string // descriptive name for the test - saKey string // optional setup sa key - tfDir string // directory containing Terraform configs - tfEnvVars map[string]string // variables to pass to Terraform as environment variables prefixed with TF_VAR_ - backendConfig map[string]interface{} // backend configuration for terraform init - retryableTerraformErrors map[string]string // If Terraform apply fails with one of these (transient) errors, retry. The keys are a regexp to match against the error and the message is what to display to a user if that error is matched. - maxRetries int // Maximum number of times to retry errors matching RetryableTerraformErrors - timeBetweenRetries time.Duration // The amount of time to wait between retries - migrateState bool // suppress user confirmation in a migration in terraform init - setupDir string // optional directory containing applied TF configs to import outputs as variables for the test - policyLibraryPath string // optional absolute path to directory containing policy library constraints - terraformVetProject string // optional a valid existing project that will be used when a plan has resources in a project that still does not exist. - vars map[string]interface{} // variables to pass to Terraform as flags - logger *logger.Logger // custom logger - sensitiveLogger *logger.Logger // custom logger for sensitive logging - t testing.TB // TestingT or TestingB - init func(*assert.Assertions) // init function - apply func(*assert.Assertions) // apply function - verify func(*assert.Assertions) // verify function - teardown func(*assert.Assertions) // teardown function - setupOutputOverrides map[string]interface{} // override outputs from the Setup phase - tftCacheMutex *filemutex.FileMutex // Mutex to protect Terraform plugin cache + discovery.BlueprintTestConfig // additional blueprint test configs + name string // descriptive name for the test + saKey string // optional setup sa key + tfDir string // directory containing Terraform configs + tfEnvVars map[string]string // variables to pass to Terraform as environment variables prefixed with TF_VAR_ + backendConfig map[string]interface{} // backend configuration for terraform init + retryableTerraformErrors map[string]string // If Terraform apply fails with one of these (transient) errors, retry. The keys are a regexp to match against the error and the message is what to display to a user if that error is matched. + maxRetries int // Maximum number of times to retry errors matching RetryableTerraformErrors + timeBetweenRetries time.Duration // The amount of time to wait between retries + migrateState bool // suppress user confirmation in a migration in terraform init + setupDir string // optional directory containing applied TF configs to import outputs as variables for the test + policyLibraryPath string // optional absolute path to directory containing policy library constraints + terraformVetProject string // optional a valid existing project that will be used when a plan has resources in a project that still does not exist. + vars map[string]interface{} // variables to pass to Terraform as flags + logger *logger.Logger // custom logger + sensitiveLogger *logger.Logger // custom logger for sensitive logging + t testing.TB // TestingT or TestingB + init func(*assert.Assertions) // init function + plan func(*terraform.PlanStruct, *assert.Assertions) // plan function + apply func(*assert.Assertions) // apply function + verify func(*assert.Assertions) // verify function + teardown func(*assert.Assertions) // teardown function + setupOutputOverrides map[string]interface{} // override outputs from the Setup phase + tftCacheMutex *filemutex.FileMutex // Mutex to protect Terraform plugin cache } type tftOption func(*TFBlueprintTest) @@ -186,6 +187,7 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { } // default TF blueprint methods tft.init = tft.DefaultInit + // No default plan function, plan is skipped if no custom func provided. tft.apply = tft.DefaultApply tft.verify = tft.DefaultVerify tft.teardown = tft.DefaultTeardown @@ -448,6 +450,11 @@ func (b *TFBlueprintTest) DefineInit(init func(*assert.Assertions)) { b.init = init } +// DefinePlan defines a custom plan function for the blueprint. +func (b *TFBlueprintTest) DefinePlan(plan func(*terraform.PlanStruct, *assert.Assertions)) { + b.plan = plan +} + // DefineApply defines a custom apply function for the blueprint. func (b *TFBlueprintTest) DefineApply(apply func(*assert.Assertions)) { b.apply = apply @@ -491,20 +498,14 @@ func (b *TFBlueprintTest) DefaultInit(assert *assert.Assertions) { // Vet runs TF plan, TF show, and gcloud terraform vet on a blueprint. func (b *TFBlueprintTest) Vet(assert *assert.Assertions) { - vetTempDir, err := os.MkdirTemp(os.TempDir(), "btp") - if err != nil { - b.t.Fatalf("Temp directory %q could not created: %v", vetTempDir, err) - } - defer os.RemoveAll(vetTempDir) - - localOptions := b.GetTFOptions() - localOptions.PlanFilePath = filepath.Join(vetTempDir, vetFilename) - terraform.Plan(b.t, localOptions) - jsonPlan := terraform.Show(b.t, localOptions) + jsonPlan, _ := b.PlanAndShow() filepath, err := utils.WriteTmpFileWithExtension(jsonPlan, "json") - defer os.Remove(filepath) - defer os.Remove(localOptions.PlanFilePath) assert.NoError(err) + defer func() { + if err := os.Remove(filepath); err != nil { + b.t.Fatalf("Could not remove plan json: %v", err) + } + }() results := gcloud.TFVet(b.t, filepath, b.policyLibraryPath, b.terraformVetProject).Array() assert.Empty(results, "Should have no Terraform Vet violations") } @@ -531,6 +532,43 @@ func (b *TFBlueprintTest) Init(assert *assert.Assertions) { b.init(assert) } +// PlanAndShow performs a Terraform plan, show and returns the parsed plan output. +func (b *TFBlueprintTest) PlanAndShow() (string, *terraform.PlanStruct) { + tDir, err := os.MkdirTemp(os.TempDir(), "btp") + if err != nil { + b.t.Fatalf("Temp directory %q could not created: %v", tDir, err) + } + defer func() { + if err := os.RemoveAll(tDir); err != nil { + b.t.Fatalf("Could not remove plan temp dir: %v", err) + } + }() + + planOpts := b.GetTFOptions() + planOpts.PlanFilePath = filepath.Join(tDir, planFilename) + rUnlockFn := b.rLockFn() + defer rUnlockFn() + terraform.Plan(b.t, planOpts) + // Logging show output is not useful since we log plan output above + // and show output is parsed and retured. + planOpts.Logger = logger.Discard + planJSON := terraform.Show(b.t, planOpts) + ps, err := terraform.ParsePlanJSON(planJSON) + assert.NoError(b.t, err) + return planJSON, ps +} + +// Plan runs the custom plan function for the blueprint. +// If not custom plan function is defined, this stage is skipped. +func (b *TFBlueprintTest) Plan(assert *assert.Assertions) { + if b.plan == nil { + b.logger.Logf(b.t, "skipping plan as no function defined") + return + } + _, ps := b.PlanAndShow() + b.plan(ps, assert) +} + // Apply runs the default or custom apply function for the blueprint. func (b *TFBlueprintTest) Apply(assert *assert.Assertions) { // allow only parallel reads as Terraform plugin cache isn't concurrent safe @@ -555,6 +593,14 @@ func (b *TFBlueprintTest) Teardown(assert *assert.Assertions) { b.teardown(assert) } +const ( + initStage = "init" + planStage = "plan" + applyStage = "apply" + verifyStage = "verify" + teardownStage = "teardown" +) + // Test runs init, apply, verify, teardown in order for the blueprint. func (b *TFBlueprintTest) Test() { if b.ShouldSkip() { @@ -564,10 +610,11 @@ func (b *TFBlueprintTest) Test() { } a := assert.New(b.t) // run stages - utils.RunStage("init", func() { b.Init(a) }) - defer utils.RunStage("teardown", func() { b.Teardown(a) }) - utils.RunStage("apply", func() { b.Apply(a) }) - utils.RunStage("verify", func() { b.Verify(a) }) + utils.RunStage(initStage, func() { b.Init(a) }) + defer utils.RunStage(teardownStage, func() { b.Teardown(a) }) + utils.RunStage(planStage, func() { b.Plan(a) }) + utils.RunStage(applyStage, func() { b.Apply(a) }) + utils.RunStage(verifyStage, func() { b.Verify(a) }) } // RedeployTest deploys the test n times in separate workspaces before teardown. @@ -594,14 +641,15 @@ func (b *TFBlueprintTest) RedeployTest(n int, nVars map[int]map[string]interface for i := 1; i <= n; i++ { ws := terraform.WorkspaceSelectOrNew(b.t, b.GetTFOptions(), fmt.Sprintf("test-%d", i)) overrideVars(i) - utils.RunStage("init", func() { b.Init(a) }) + utils.RunStage(initStage, func() { b.Init(a) }) defer func(i int) { overrideVars(i) terraform.WorkspaceSelectOrNew(b.t, b.GetTFOptions(), ws) - utils.RunStage("teardown", func() { b.Teardown(a) }) + utils.RunStage(teardownStage, func() { b.Teardown(a) }) }(i) - utils.RunStage("apply", func() { b.Apply(a) }) - utils.RunStage("verify", func() { b.Verify(a) }) + utils.RunStage(planStage, func() { b.Plan(a) }) + utils.RunStage(applyStage, func() { b.Apply(a) }) + utils.RunStage(verifyStage, func() { b.Verify(a) }) } } diff --git a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go index 3414d77f74d..0f3c9caa0f7 100644 --- a/infra/blueprint-test/test/terraform_simple_base_api_module_test.go +++ b/infra/blueprint-test/test/terraform_simple_base_api_module_test.go @@ -80,6 +80,7 @@ func TestSimpleTFModule(t *testing.T) { utils.RunStage("init", func() { nt.Init(nil) }) defer utils.RunStage("teardown", func() { nt.Teardown(nil) }) + utils.RunStage("plan", func() { nt.Plan(nil) }) utils.RunStage("apply", func() { nt.Apply(nil) }) utils.RunStage("verify", func() { @@ -99,4 +100,9 @@ func TestSimpleTFModule(t *testing.T) { if !strings.Contains(sensitiveLogs.String(), sensitiveOP) { t.Errorf("sensitive logs should contain sensitive output") } + + // Custom plan function not defined, plan should be skipped. + if !strings.Contains(regularLogs.String(), "skipping plan as no function defined") { + t.Errorf("plan should be skipped") + } } diff --git a/infra/blueprint-test/test/terraform_simple_plan_test.go b/infra/blueprint-test/test/terraform_simple_plan_test.go new file mode 100644 index 00000000000..21f2521f900 --- /dev/null +++ b/infra/blueprint-test/test/terraform_simple_plan_test.go @@ -0,0 +1,48 @@ +/** + * Copyright 2024 Google LLC + * + * 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 ( + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/stretchr/testify/assert" + + tfjson "github.com/hashicorp/terraform-json" +) + +func TestPlan(t *testing.T) { + networkBlueprint := tft.NewTFBlueprintTest(t, + tft.WithTFDir("../examples/simple_tf_module"), + tft.WithSetupPath("setup"), + ) + networkBlueprint.DefinePlan(func(ps *terraform.PlanStruct, assert *assert.Assertions) { + assert.Equal(4, len(ps.ResourceChangesMap), "expected 4 resources") + }) + networkBlueprint.DefineVerify( + func(assert *assert.Assertions) { + _, ps := networkBlueprint.PlanAndShow() + for _, r := range ps.ResourceChangesMap { + assert.Equal(tfjson.Actions{tfjson.ActionNoop}, r.Change.Actions, "must be no-op") + } + op := gcloud.Runf(t, "compute networks subnets describe subnet-01 --project %s --region us-west1", networkBlueprint.GetStringOutput("project_id")) + assert.Equal("10.10.10.0/24", op.Get("ipCidrRange").String(), "should have the right CIDR") + }) + networkBlueprint.Test() +} From 95445ef518bec29f1b6274622af79d43dd75a086 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 8 Apr 2024 17:14:54 -0700 Subject: [PATCH 0907/1371] chore: enable periodic on terraform-google-enterprise-application (#2232) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 03804013b0a..b64789d42e9 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -835,11 +835,12 @@ locals { topics = local.common_topics.da }, { - name = "terraform-google-enterprise-application" - org = "GoogleCloudPlatform" - description = "Deploy an enterprise developer platform on Google Cloud" - owners = ["gtsorbo"] - topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) + name = "terraform-google-enterprise-application" + org = "GoogleCloudPlatform" + description = "Deploy an enterprise developer platform on Google Cloud" + owners = ["gtsorbo"] + topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) + enable_periodic = true }, { name = "terraform-genai-rag" From 7d99592564d6d032162ed8630ad103b4c40aa641 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:14:12 -0500 Subject: [PATCH 0908/1371] chore(master): release blueprint-test 0.14.0 (#2253) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a87616f6d1d..5ff59e92d49 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.13.2", + "infra/blueprint-test": "0.14.0", "infra/module-swapper": "0.4.5" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 9a9f1bde00b..e1557effa50 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.14.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.13.2...infra/blueprint-test/v0.14.0) (2024-04-09) + + +### Features + +* support plan assertions in blueprint test ([#2258](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2258)) ([bb29bbe](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/bb29bbef8137f9e084e3269f62bd174e50121281)) + + +### Bug Fixes + +* **deps:** update module golang.org/x/mod to v0.17.0 ([#2252](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2252)) ([6a2a1e1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6a2a1e1d74b3029e489a106fe93d84cf6a42924e)) +* **deps:** update module sigs.k8s.io/kustomize/kyaml to v0.17.0 ([#2255](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2255)) ([f2e762e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/f2e762eeb807b79b381f5a95f790f8c85a54d78e)) + ## [0.13.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.13.1...infra/blueprint-test/v0.13.2) (2024-03-21) From 2f604799d6090f87d0610b6550215da36503c1a5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 Apr 2024 21:37:59 +0200 Subject: [PATCH 0909/1371] chore(deps): update github/codeql-action action to v3.24.10 (#2261) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e5c40f36a8b..b658b38f13f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + uses: github/codeql-action/init@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + uses: github/codeql-action/autobuild@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + uses: github/codeql-action/analyze@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2eefb1d1f97..71c79a263f4 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 with: sarif_file: results.sarif From 3a4d90f5f609a8e0611aa7d1a5c72068795f04da Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 Apr 2024 21:40:51 +0200 Subject: [PATCH 0910/1371] fix(deps): update module github.com/jedib0t/go-pretty/v6 to v6.5.7 (#2262) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 6b06187f98f..53f5c4d5025 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.5.6 + github.com/jedib0t/go-pretty/v6 v6.5.7 github.com/stretchr/testify v1.9.0 google.golang.org/api v0.172.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 1502f8149c1..dcaa1b00cd3 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -61,8 +61,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= -github.com/jedib0t/go-pretty/v6 v6.5.6 h1:nKXVLqPfAwY7sWcYXdNZZZ2fjqDpAtj9UeWupgfUxSg= -github.com/jedib0t/go-pretty/v6 v6.5.6/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= +github.com/jedib0t/go-pretty/v6 v6.5.7 h1:28Z6UxnNyKCVISGdItMiCCc7A0mbDF+SYvgo3U8ZKuQ= +github.com/jedib0t/go-pretty/v6 v6.5.7/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From 51025bf2942143c32c526651cfe533e40c8ecc0f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 12 Apr 2024 21:45:20 +0200 Subject: [PATCH 0911/1371] fix(deps): update module github.com/jedib0t/go-pretty/v6 to v6.5.8 (#2263) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 53f5c4d5025..5463a06e70b 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.5.7 + github.com/jedib0t/go-pretty/v6 v6.5.8 github.com/stretchr/testify v1.9.0 google.golang.org/api v0.172.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index dcaa1b00cd3..41826cbe643 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -61,8 +61,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= -github.com/jedib0t/go-pretty/v6 v6.5.7 h1:28Z6UxnNyKCVISGdItMiCCc7A0mbDF+SYvgo3U8ZKuQ= -github.com/jedib0t/go-pretty/v6 v6.5.7/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.5.8 h1:8BCzJdSvUbaDuRba4YVh+SKMGcAAKdkcF3SVFbrHAtQ= +github.com/jedib0t/go-pretty/v6 v6.5.8/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From 461302e839616b95eef08523bbcb5d598e834d70 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 15 Apr 2024 12:38:19 -0500 Subject: [PATCH 0912/1371] feat: blueprints tflint plugin (#2265) Co-authored-by: Andrew Peabody --- .github/workflows/go-lint.yaml | 3 +- .github/workflows/go-tflint-plugin.yml | 40 ++++++ go.work | 1 + tflint-ruleset-blueprint/.gitignore | 5 + tflint-ruleset-blueprint/Makefile | 11 ++ tflint-ruleset-blueprint/README.md | 3 + tflint-ruleset-blueprint/go.mod | 34 +++++ tflint-ruleset-blueprint/go.sum | 95 ++++++++++++ tflint-ruleset-blueprint/main.go | 20 +++ .../terraform_doc_sample_restricted_blocks.go | 93 ++++++++++++ ...aform_doc_sample_restricted_blocks_test.go | 32 +++++ ...rraform_doc_sample_restricted_resources.go | 70 +++++++++ ...rm_doc_sample_restricted_resources_test.go | 32 +++++ .../multiple-restricted/.expected/issues.json | 70 +++++++++ .../multiple-restricted/main.tf | 53 +++++++ .../multiple-restricted/variables.tf | 11 ++ .../single-restricted/.expected/issues.json | 19 +++ .../single-restricted/main.tf | 21 +++ .../valid/.expected/issues.json | 1 + .../valid/main.tf | 29 ++++ .../multiple-invalid/.expected/issues.json | 36 +++++ .../multiple-invalid/main.tf | 7 + .../single-invalid/.expected/issues.json | 19 +++ .../single-invalid/main.tf | 6 + .../valid/.expected/issues.json | 1 + .../valid/main.tf | 2 + tflint-ruleset-blueprint/rules/utils_test.go | 136 ++++++++++++++++++ 27 files changed, 849 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/go-tflint-plugin.yml create mode 100644 tflint-ruleset-blueprint/.gitignore create mode 100644 tflint-ruleset-blueprint/Makefile create mode 100644 tflint-ruleset-blueprint/README.md create mode 100644 tflint-ruleset-blueprint/go.mod create mode 100644 tflint-ruleset-blueprint/go.sum create mode 100644 tflint-ruleset-blueprint/main.go create mode 100644 tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_blocks.go create mode 100644 tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_blocks_test.go create mode 100644 tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_resources.go create mode 100644 tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_resources_test.go create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/main.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/variables.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/single-restricted/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/single-restricted/main.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/valid/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/valid/main.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/multiple-invalid/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/multiple-invalid/main.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/single-invalid/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/single-invalid/main.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/valid/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/valid/main.tf create mode 100644 tflint-ruleset-blueprint/rules/utils_test.go diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 352a44fa446..6e99a022a36 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -7,6 +7,7 @@ on: - ".github/workflows/go-lint.yaml" - "cli/**" - "infra/blueprint-test/**" + - "tflint-ruleset-blueprint/**" permissions: contents: read @@ -21,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - folder: [cli, infra/blueprint-test] + folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml new file mode 100644 index 00000000000..39c7c8a70d3 --- /dev/null +++ b/.github/workflows/go-tflint-plugin.yml @@ -0,0 +1,40 @@ +name: TFLint blueprint ruleset + +on: + push: + branches: + - 'master' + paths: + - 'tflint-ruleset-blueprint/**' + - '.github/workflows/go-tflint-plugin.yaml.yml' + pull_request: + branches: + - 'master' + paths: + - 'tflint-ruleset-blueprint/**' + - '.github/workflows/go-tflint-plugin.yaml.yml' + +concurrency: + group: '${{github.workflow}}-${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + unit: + name: ${{ matrix.operating-system }} unit tests + runs-on: ${{ matrix.operating-system }} + defaults: + run: + shell: bash + working-directory: 'tflint-ruleset-blueprint' + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest] + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + with: + go-version-file: tflint-ruleset-blueprint/go.mod + cache-dependency-path: tflint-ruleset-blueprint/go.sum + - run: |- + make test diff --git a/go.work b/go.work index 972e3ffdb6e..35f7c0899a7 100644 --- a/go.work +++ b/go.work @@ -5,4 +5,5 @@ use ( ./infra/blueprint-test ./infra/module-swapper ./infra/utils/fbf + ./tflint-ruleset-blueprint ) diff --git a/tflint-ruleset-blueprint/.gitignore b/tflint-ruleset-blueprint/.gitignore new file mode 100644 index 00000000000..60a78ebf955 --- /dev/null +++ b/tflint-ruleset-blueprint/.gitignore @@ -0,0 +1,5 @@ +tflint-ruleset-blueprint +.terraform +.terraform.lock.hcl +terraform.tfstate +terraform.tfstate.backup diff --git a/tflint-ruleset-blueprint/Makefile b/tflint-ruleset-blueprint/Makefile new file mode 100644 index 00000000000..ae016fe17ca --- /dev/null +++ b/tflint-ruleset-blueprint/Makefile @@ -0,0 +1,11 @@ +default: build + +test: + go test ./... -v + +build: + go build + +install: build + mkdir -p ~/.tflint.d/plugins + mv ./tflint-ruleset-blueprint ~/.tflint.d/plugins diff --git a/tflint-ruleset-blueprint/README.md b/tflint-ruleset-blueprint/README.md new file mode 100644 index 00000000000..b8dcd12c1c3 --- /dev/null +++ b/tflint-ruleset-blueprint/README.md @@ -0,0 +1,3 @@ +# Blueprints ruleset plugin for TFLint + +TFlint ruleset plugin enforcing best practices for TF blueprints and samples. diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod new file mode 100644 index 00000000000..545e3b61017 --- /dev/null +++ b/tflint-ruleset-blueprint/go.mod @@ -0,0 +1,34 @@ +module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint + +go 1.21 + +require github.com/terraform-linters/tflint-plugin-sdk v0.18.0 + +require ( + github.com/agext/levenshtein v1.2.1 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/fatih/color v1.13.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/hashicorp/go-hclog v1.6.2 // indirect + github.com/hashicorp/go-plugin v1.6.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/hcl/v2 v2.20.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77 // indirect + github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect + github.com/oklog/run v1.0.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/zclconf/go-cty v1.14.2 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/grpc v1.61.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect +) diff --git a/tflint-ruleset-blueprint/go.sum b/tflint-ruleset-blueprint/go.sum new file mode 100644 index 00000000000..3cae87d495a --- /dev/null +++ b/tflint-ruleset-blueprint/go.sum @@ -0,0 +1,95 @@ +github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= +github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +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/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= +github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +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/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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/hashicorp/go-hclog v1.6.2 h1:NOtoftovWkDheyUM/8JW3QMiXyxJK3uHRK7wV04nD2I= +github.com/hashicorp/go-hclog v1.6.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= +github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= +github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77 h1:7GoSOOW2jpsfkntVKaS2rAr1TJqfcxotyaUcuxoZSzg= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +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/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/terraform-linters/tflint-plugin-sdk v0.18.0 h1:XqQS6/RfUU6J3ySDTdN5c/KvNu6sOYdGqtTo4zgRPXE= +github.com/terraform-linters/tflint-plugin-sdk v0.18.0/go.mod h1:OvyC1d9NyIFxNZQeKM7vSGrRWq0cuq27zAQUMpJH5h8= +github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI= +github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +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/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= +google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +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.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +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= diff --git a/tflint-ruleset-blueprint/main.go b/tflint-ruleset-blueprint/main.go new file mode 100644 index 00000000000..a988665a1da --- /dev/null +++ b/tflint-ruleset-blueprint/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint/rules" + "github.com/terraform-linters/tflint-plugin-sdk/plugin" + "github.com/terraform-linters/tflint-plugin-sdk/tflint" +) + +func main() { + plugin.Serve(&plugin.ServeOpts{ + RuleSet: &tflint.BuiltinRuleSet{ + Name: "blueprint", + Version: "0.1.0", + Rules: []tflint.Rule{ + rules.NewTerraformDocSamplesRestrictedBlocks(), + rules.NewTerraformDocSamplesRestrictedResources(), + }, + }, + }) +} diff --git a/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_blocks.go b/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_blocks.go new file mode 100644 index 00000000000..249591b38b3 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_blocks.go @@ -0,0 +1,93 @@ +package rules + +import ( + "fmt" + + "github.com/terraform-linters/tflint-plugin-sdk/hclext" + "github.com/terraform-linters/tflint-plugin-sdk/tflint" +) + +// TerraformDocSamplesRestrictedBlocks checks whether restricted blocks are used. +type TerraformDocSamplesRestrictedBlocks struct { + tflint.DefaultRule +} + +// NewTerraformDocSamplesRestrictedBlocks returns a new rule. +func NewTerraformDocSamplesRestrictedBlocks() *TerraformDocSamplesRestrictedBlocks { + return &TerraformDocSamplesRestrictedBlocks{} +} + +// Name returns the rule name. +func (r *TerraformDocSamplesRestrictedBlocks) Name() string { + return "terraform_doc_sample_restricted_blocks" +} + +// Enabled returns whether the rule is enabled by default. +func (r *TerraformDocSamplesRestrictedBlocks) Enabled() bool { + return false +} + +// Severity returns the rule severity. +func (r *TerraformDocSamplesRestrictedBlocks) Severity() tflint.Severity { + return tflint.ERROR +} + +// Link returns the rule reference link +func (r *TerraformDocSamplesRestrictedBlocks) Link() string { + return "https://googlecloudplatform.github.io/samples-style-guide/#language-specific" +} + +const ( + moduleBlockType = "module" + variableBlockType = "variable" +) + +var restrictedBlocks = []string{moduleBlockType, variableBlockType} + +// Check checks whether config contains restricted block types. +func (r *TerraformDocSamplesRestrictedBlocks) Check(runner tflint.Runner) error { + path, err := runner.GetModulePath() + if err != nil { + return err + } + if !path.IsRoot() { + // Each sample must be a root module. + return nil + } + + // Extract restricted blocks if any from config. + restrictedBlocksSchema := make([]hclext.BlockSchema, 0, len(restrictedBlocks)) + for _, rb := range restrictedBlocks { + rs := hclext.BlockSchema{ + Type: rb, + LabelNames: []string{"name"}, + Body: &hclext.BodySchema{}, + } + restrictedBlocksSchema = append(restrictedBlocksSchema, rs) + } + body, err := runner.GetModuleContent(&hclext.BodySchema{ + Blocks: restrictedBlocksSchema, + }, &tflint.GetModuleContentOption{ExpandMode: tflint.ExpandModeNone}) + if err != nil { + return err + } + + // Emit issues if extracted blocks are found. + blocks := body.Blocks.ByType() + for _, rBlockType := range restrictedBlocks { + rBlocks, ok := blocks[rBlockType] + if ok { + for _, rBlock := range rBlocks { + err := runner.EmitIssue( + r, + fmt.Sprintf("doc sample restricted block type %s", rBlockType), + rBlock.DefRange, + ) + if err != nil { + return err + } + } + } + } + return nil +} diff --git a/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_blocks_test.go b/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_blocks_test.go new file mode 100644 index 00000000000..5345afabfc6 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_blocks_test.go @@ -0,0 +1,32 @@ +package rules + +import ( + "path" + "testing" +) + +const ( + restrictedBlocksTestDir = "doc-sample-restricted-blocks" +) + +func TestRestrictedBlocks(t *testing.T) { + tests := []ruleTC{ + { + dir: path.Join(restrictedBlocksTestDir, "valid"), + }, + { + dir: path.Join(restrictedBlocksTestDir, "single-restricted"), + }, + { + dir: path.Join(restrictedBlocksTestDir, "multiple-restricted"), + }, + } + + rule := NewTerraformDocSamplesRestrictedBlocks() + + for _, tc := range tests { + t.Run(tc.dir, func(t *testing.T) { + ruleTest(t, rule, tc) + }) + } +} diff --git a/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_resources.go b/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_resources.go new file mode 100644 index 00000000000..d3bc52e81be --- /dev/null +++ b/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_resources.go @@ -0,0 +1,70 @@ +package rules + +import ( + "fmt" + + "github.com/terraform-linters/tflint-plugin-sdk/hclext" + "github.com/terraform-linters/tflint-plugin-sdk/tflint" +) + +// TerraformDocSamplesRestrictedResources checks whether restricted resources are used. +type TerraformDocSamplesRestrictedResources struct { + tflint.DefaultRule +} + +// NewTerraformDocSamplesRestrictedResources returns a new rule. +func NewTerraformDocSamplesRestrictedResources() *TerraformDocSamplesRestrictedResources { + return &TerraformDocSamplesRestrictedResources{} +} + +// Name returns the rule name. +func (r *TerraformDocSamplesRestrictedResources) Name() string { + return "terraform_doc_sample_restricted_resources" +} + +// Enabled returns whether the rule is enabled by default. +func (r *TerraformDocSamplesRestrictedResources) Enabled() bool { + return false +} + +// Severity returns the rule severity. +func (r *TerraformDocSamplesRestrictedResources) Severity() tflint.Severity { + return tflint.ERROR +} + +// Link returns the rule reference link +func (r *TerraformDocSamplesRestrictedResources) Link() string { + return "https://googlecloudplatform.github.io/samples-style-guide/#language-specific" +} + +const ( + nullResource = "null_resource" +) + +var restrictedResources = []string{nullResource} + +// Check checks whether config contains restricted resource types. +func (r *TerraformDocSamplesRestrictedResources) Check(runner tflint.Runner) error { + path, err := runner.GetModulePath() + if err != nil { + return err + } + if !path.IsRoot() { + // Each sample must be a root module. + return nil + } + + for _, restrictedResource := range restrictedResources { + content, err := runner.GetResourceContent(restrictedResource, &hclext.BodySchema{}, nil) + if err != nil { + return err + } + for _, b := range content.Blocks { + err := runner.EmitIssue(r, fmt.Sprintf("doc sample restricted resource type: %s", restrictedResource), b.DefRange) + if err != nil { + return err + } + } + } + return nil +} diff --git a/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_resources_test.go b/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_resources_test.go new file mode 100644 index 00000000000..07652540c3d --- /dev/null +++ b/tflint-ruleset-blueprint/rules/terraform_doc_sample_restricted_resources_test.go @@ -0,0 +1,32 @@ +package rules + +import ( + "path" + "testing" +) + +const ( + restrictedResourcesTestDir = "doc-sample-restricted-resources" +) + +func TestRestrictedResources(t *testing.T) { + tests := []ruleTC{ + { + dir: path.Join(restrictedResourcesTestDir, "valid"), + }, + { + dir: path.Join(restrictedResourcesTestDir, "single-invalid"), + }, + { + dir: path.Join(restrictedResourcesTestDir, "multiple-invalid"), + }, + } + + rule := NewTerraformDocSamplesRestrictedResources() + + for _, tc := range tests { + t.Run(tc.dir, func(t *testing.T) { + ruleTest(t, rule, tc) + }) + } +} diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/.expected/issues.json new file mode 100644 index 00000000000..85f84bad5c0 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/.expected/issues.json @@ -0,0 +1,70 @@ +[ + { + "Rule": null, + "Message": "doc sample restricted block type module", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 22, + "Column": 1, + "Byte": 669 + }, + "End": { + "Line": 22, + "Column": 18, + "Byte": 686 + } + } + }, + { + "Rule": null, + "Message": "doc sample restricted block type variable", + "Range": { + "Filename": "variables.tf", + "Start": { + "Line": 1, + "Column": 1, + "Byte": 0 + }, + "End": { + "Line": 1, + "Column": 22, + "Byte": 21 + } + } + }, + { + "Rule": null, + "Message": "doc sample restricted block type variable", + "Range": { + "Filename": "variables.tf", + "Start": { + "Line": 5, + "Column": 1, + "Byte": 30 + }, + "End": { + "Line": 5, + "Column": 22, + "Byte": 51 + } + } + }, + { + "Rule": null, + "Message": "doc sample restricted block type variable", + "Range": { + "Filename": "variables.tf", + "Start": { + "Line": 9, + "Column": 1, + "Byte": 60 + }, + "End": { + "Line": 9, + "Column": 16, + "Byte": 75 + } + } + } +] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/main.tf b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/main.tf new file mode 100644 index 00000000000..f15fe47d455 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/main.tf @@ -0,0 +1,53 @@ +# https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_view/main.tf + +# [START bigquery_create_view] +resource "google_bigquery_dataset" "default" { + dataset_id = var.dataset_id + default_partition_expiration_ms = var.expr + default_table_expiration_ms = 31536000000 # 365 days + description = "dataset description" + location = "US" + max_time_travel_hours = 96 # 4 days + + labels = { + billing_group = "accounting", + pii = "sensitive" + } +} + +output "creation_time" { + value = google_bigquery_dataset.default.creation_time +} + +module "bigquery" { + source = "terraform-google-modules/bigquery/google" + version = "~> 7.0" + + dataset_id = "foo" + dataset_name = "foo" + description = "some description" + project_id = var.project_id + location = "US" + delete_contents_on_destroy = true + tables = [ + { + table_id = "bar", + schema = file("sample_bq_schema.json"), + time_partitioning = null, + range_partitioning = null, + expiration_time = 2524604400000, # 2050/01/01 + clustering = [], + labels = { + env = "devops" + billable = "true" + owner = "joedoe" + }, + } + ] + dataset_labels = { + env = "dev" + billable = "true" + owner = "janesmith" + } +} +# [END bigquery_create_view] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/variables.tf b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/variables.tf new file mode 100644 index 00000000000..2041b8eca8c --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/variables.tf @@ -0,0 +1,11 @@ +variable "project_id" { + +} + +variable "dataset_id" { + +} + +variable "expr" { + default = 123 +} diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/single-restricted/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/single-restricted/.expected/issues.json new file mode 100644 index 00000000000..ba172f9ab9a --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/single-restricted/.expected/issues.json @@ -0,0 +1,19 @@ +[ + { + "Rule": null, + "Message": "doc sample restricted block type variable", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 3, + "Column": 1, + "Byte": 118 + }, + "End": { + "Line": 3, + "Column": 22, + "Byte": 139 + } + } + } +] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/single-restricted/main.tf b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/single-restricted/main.tf new file mode 100644 index 00000000000..3158bf82845 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/single-restricted/main.tf @@ -0,0 +1,21 @@ +# https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_view/main.tf + +variable "dataset_id" { + +} + +# [START bigquery_create_view] +resource "google_bigquery_dataset" "default" { + dataset_id = var.dataset_id + default_partition_expiration_ms = 2592000000 # 30 days + default_table_expiration_ms = 31536000000 # 365 days + description = "dataset description" + location = "US" + max_time_travel_hours = 96 # 4 days + + labels = { + billing_group = "accounting", + pii = "sensitive" + } +} +# [END bigquery_create_view] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/valid/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/valid/.expected/issues.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/valid/.expected/issues.json @@ -0,0 +1 @@ +[] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/valid/main.tf b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/valid/main.tf new file mode 100644 index 00000000000..357f3a46bd9 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/valid/main.tf @@ -0,0 +1,29 @@ +# https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_view/main.tf + +# [START bigquery_create_view] +resource "google_bigquery_dataset" "default" { + dataset_id = "mydataset" + default_partition_expiration_ms = 2592000000 # 30 days + default_table_expiration_ms = 31536000000 # 365 days + description = "dataset description" + location = "US" + max_time_travel_hours = 96 # 4 days + + labels = { + billing_group = "accounting", + pii = "sensitive" + } +} + +resource "google_bigquery_table" "default" { + dataset_id = google_bigquery_dataset.default.dataset_id + table_id = "myview" + deletion_protection = false # set to "true" in production + + view { + query = "SELECT global_id, faa_identifier, name, latitude, longitude FROM `bigquery-public-data.faa.us_airports`" + use_legacy_sql = false + } + +} +# [END bigquery_create_view] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/multiple-invalid/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/multiple-invalid/.expected/issues.json new file mode 100644 index 00000000000..e1de1d34e5b --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/multiple-invalid/.expected/issues.json @@ -0,0 +1,36 @@ +[ + { + "Rule": null, + "Message": "doc sample restricted resource type: null_resource", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 1, + "Column": 1, + "Byte": 0 + }, + "End": { + "Line": 1, + "Column": 31, + "Byte": 30 + } + } + }, + { + "Rule": null, + "Message": "doc sample restricted resource type: null_resource", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 5, + "Column": 1, + "Byte": 39 + }, + "End": { + "Line": 5, + "Column": 31, + "Byte": 69 + } + } + } +] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/multiple-invalid/main.tf b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/multiple-invalid/main.tf new file mode 100644 index 00000000000..f2e5c5bf205 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/multiple-invalid/main.tf @@ -0,0 +1,7 @@ +resource "null_resource" "nr1" { + +} + +resource "null_resource" "nr2" { + +} diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/single-invalid/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/single-invalid/.expected/issues.json new file mode 100644 index 00000000000..42ed4bfb621 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/single-invalid/.expected/issues.json @@ -0,0 +1,19 @@ +[ + { + "Rule": null, + "Message": "doc sample restricted resource type: null_resource", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 1, + "Column": 1, + "Byte": 0 + }, + "End": { + "Line": 1, + "Column": 31, + "Byte": 30 + } + } + } +] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/single-invalid/main.tf b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/single-invalid/main.tf new file mode 100644 index 00000000000..1afe5685bad --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/single-invalid/main.tf @@ -0,0 +1,6 @@ +resource "null_resource" "nr1" { + +} + +resource "random_pet" "p" { +} diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/valid/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/valid/.expected/issues.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/valid/.expected/issues.json @@ -0,0 +1 @@ +[] diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/valid/main.tf b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/valid/main.tf new file mode 100644 index 00000000000..f677ae6e844 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-resources/valid/main.tf @@ -0,0 +1,2 @@ +resource "random_pet" "p" { +} diff --git a/tflint-ruleset-blueprint/rules/utils_test.go b/tflint-ruleset-blueprint/rules/utils_test.go new file mode 100644 index 00000000000..a05da469c43 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/utils_test.go @@ -0,0 +1,136 @@ +package rules + +import ( + "encoding/json" + "io/fs" + "os" + "path" + "path/filepath" + "strings" + "testing" + + "github.com/terraform-linters/tflint-plugin-sdk/helper" + "github.com/terraform-linters/tflint-plugin-sdk/tflint" +) + +const ( + testdataDir = "testdata" + expectedSuffix = ".expected" + tfExt = ".tf" + updateEnvVar = "UPDATE_EXPECTED" + issueFile = "issues.json" +) + +// ruleTC is a single rule test case. +type ruleTC struct { + // Dir with root module to be tested. + dir string +} + +// ruleTest tests rule r with test case rt. +func ruleTest(t *testing.T, r tflint.Rule, rt ruleTC) { + t.Helper() + + config := configForTest(t, rt.dir) + runner := helper.TestRunner(t, config) + + if err := r.Check(runner); err != nil { + t.Fatalf("rule check: %s", err) + } + + expected := path.Join(testdataDir, rt.dir, expectedSuffix, issueFile) + updateExpected(t, expected, issuesToJSON(t, runner.Issues)) + wantIssues := issuesFromJSON(t, expected) + helper.AssertIssues(t, wantIssues, runner.Issues) +} + +// configForTest returns a map of TF configs paths to data stored in subdir. +// Paths are relative to subdir. +func configForTest(t *testing.T, subdir string) map[string]string { + t.Helper() + + modDir := path.Join(testdataDir, subdir) + configs := map[string]string{} + err := filepath.WalkDir(modDir, func(fp string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + // ignore hidden dirs + if d.IsDir() && strings.HasPrefix(d.Name(), ".") { + return filepath.SkipDir + } + if !d.IsDir() && path.Ext(fp) == tfExt { + relPath, err := filepath.Rel(modDir, fp) + if err != nil { + return err + } + cfg, err := os.ReadFile(fp) + if err != nil { + return err + } + configs[relPath] = string(cfg) + } + return nil + }) + if err != nil { + t.Fatalf("fetching testdata: %v", err) + } + return configs +} + +// issuesFromJSON converts file at fp to a helper issues. +func issuesFromJSON(t *testing.T, fp string) helper.Issues { + t.Helper() + + issues := helper.Issues{} + data, err := os.ReadFile(fp) + if err != nil { + t.Fatalf("reading issues: %v", err) + } + err = json.Unmarshal(data, &issues) + if err != nil { + t.Fatalf("unmarshalling issues: %v", err) + } + return issues +} + +// issuesToJSON marshals issues to json bytes ignoring issue rule. +func issuesToJSON(t *testing.T, issues helper.Issues) []byte { + t.Helper() + + // Workaround for unmarshal error of rule interface. + for _, i := range issues { + i.Rule = nil + } + data, err := json.MarshalIndent(issues, "", " ") + if err != nil { + t.Fatalf("marshalling issues: %v", err) + } + data = append(data, "\n"...) + return data +} + +// UpdateExpected updates expected file at fp with data with update env var is set. +func updateExpected(t *testing.T, fp string, data []byte) { + t.Helper() + + if strings.ToLower(os.Getenv(updateEnvVar)) != "true" { + return + } + err := os.MkdirAll(path.Dir(fp), os.ModePerm) + if err != nil { + t.Fatalf("updating result: %v", err) + } + + if _, err := os.Stat(fp); os.IsNotExist(err) { + _, err := os.Create(fp) + if err != nil { + t.Fatalf("creating %s: %v", fp, err) + } + } + + err = os.WriteFile(fp, data, os.ModePerm) + if err != nil { + t.Fatalf("updating result: %v", err) + } +} From f3fc6f681027d96ad412aa97fe456e50842bb5f7 Mon Sep 17 00:00:00 2001 From: David Cavazos Date: Mon, 15 Apr 2024 12:51:48 -0700 Subject: [PATCH 0913/1371] chore: update owners for terraform-genai-doc-summarization (#2260) --- infra/terraform/test-org/org/locals.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index b64789d42e9..9f75018307d 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -740,8 +740,8 @@ locals { short_name = "genai-doc-summarization" org = "GoogleCloudPlatform" description = "Summarizes document using OCR and Vertex Generative AI LLM" - owners = ["asrivas", "balajismaniam", "telpirion", "yil532", "nicain"] - groups = ["dee-data-ai", local.jss_common_group] + owners = ["asrivas", "davidcavazos"] + groups = [local.jss_common_group] enable_periodic = true }, { From f0c012c730182756b7a43714a579c11eb55b32bb Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 16 Apr 2024 11:33:57 -0500 Subject: [PATCH 0914/1371] chore: remove attrib causing lint failure from test data (#2268) --- .../doc-sample-restricted-blocks/multiple-restricted/main.tf | 1 - 1 file changed, 1 deletion(-) diff --git a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/main.tf b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/main.tf index f15fe47d455..45c98436b9f 100644 --- a/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/main.tf +++ b/tflint-ruleset-blueprint/rules/testdata/doc-sample-restricted-blocks/multiple-restricted/main.tf @@ -32,7 +32,6 @@ module "bigquery" { tables = [ { table_id = "bar", - schema = file("sample_bq_schema.json"), time_partitioning = null, range_partitioning = null, expiration_time = 2524604400000, # 2050/01/01 From ed4bdc12721c8d3511770d23fe430bc50ac4a792 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 16 Apr 2024 11:40:39 -0500 Subject: [PATCH 0915/1371] chore: Exclude tflint plugin from lint workflow (#2269) --- .github/workflows/lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 3ec17989b2e..1b58603e93c 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -34,5 +34,5 @@ jobs: - uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' # v4 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: - EXCLUDE_LINT_DIRS: '\./cli|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' + EXCLUDE_LINT_DIRS: '\./cli|\./tflint-ruleset-blueprint|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' EXCLUDE_HEADER_CHECK: '.*' From 84a9bab7a5f573d9ae3f7125ec61ed488ad374af Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Sat, 20 Apr 2024 03:23:27 +1000 Subject: [PATCH 0916/1371] docs: syntax fixes for blueprint-test/README.md (#2270) --- infra/blueprint-test/README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/infra/blueprint-test/README.md b/infra/blueprint-test/README.md index a2b50d57c49..8043262dd2e 100644 --- a/infra/blueprint-test/README.md +++ b/infra/blueprint-test/README.md @@ -154,7 +154,7 @@ Complete code files for the example module can be found [here](https://github.co ### 3.1.2 Write an integration test After creating the example configuration, your example will automatically be tested and no further action is required. -However, if you need to make custom assertions regarding the resources the blueprint will create, you should create an integration test in Go using the (testing)[https://pkg.go.dev/testing] package. Custom assertions will mostly involve making an API calls to GCP (via gcloud commands) to assert a resource is configured as expected. +However, if you need to make custom assertions regarding the resources the blueprint will create, you should create an integration test in Go using the [testing](https://pkg.go.dev/testing) package. Custom assertions will mostly involve making an API calls to GCP (via gcloud commands) to assert a resource is configured as expected. The entire integration test explained below can be found [here](https://github.com/terraform-google-modules/terraform-google-sql-db/blob/master/test/integration/mysql-public/mysql_public_test.go). The first step in writing the test is to wire it up with the required packages and methods signatures that the test framework expects as follows: @@ -196,14 +196,14 @@ func TestMySqlPublicModule(t *testing.T) { The next step in the process is to write the logic for assertions. -1. In most cases, you will be asserting against values retrieved from the GCP environment. This can be done by using the (gcloud)[https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/blueprint-test/pkg/gcloud/gcloud.go] helper in our test framework, which executes gcloud commands and stores their JSON outputs as. The gcloud helper can be initialized as follows: +1. In most cases, you will be asserting against values retrieved from the GCP environment. This can be done by using the [gcloud](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/blueprint-test/pkg/gcloud/gcloud.go) helper in our test framework, which executes gcloud commands and stores their JSON outputs as. The gcloud helper can be initialized as follows: ```go // The tft struct can be used to pull output variables of the TF module being invoked by this test op := gcloud.Run(t, fmt.Sprintf("sql instances describe %s --project %s", mySqlT.GetStringOutput("name"), mySqlT.GetStringOutput("project_id"))) ``` -2. Once you have retrieved values from GCP, use the (assert)[https://pkg.go.dev/github.com/stretchr/testify/assert] package to perform custom validations with respect to the resources provisioned. Here are some common assertions that can be useful in most test scenarios. +2. Once you have retrieved values from GCP, use the [assert](https://pkg.go.dev/github.com/stretchr/testify/assert) package to perform custom validations with respect to the resources provisioned. Here are some common assertions that can be useful in most test scenarios. 1. Equal @@ -255,9 +255,8 @@ By default, tests go through 4 stages above. You can also explicitly run individ ## 4.1 Test prerequisites In order for the test to execute, certain prerequisite resources and components need to be in place. These can be set up using the TF modules under `test/setup`. Running `terraform apply` in this directory will set up all resources required for the test. -``` -Note: Output values from `test/setup` are automatically loaded as Terraform environment variables and are available to both auto discovered and custom/explicit tests as inputs. This is also illustrated in the (Create the example configuration - Step 4)[https://github.com/g-awmalik/cloud-foundation-toolkit/tree/feat/add-bp-test-doc/infra/blueprint-test#3111-create-the-example-configuration] above where the `project_id` variable output by the `test/setup` is consumed as a variable for the example. -``` +> Note: Output values from `test/setup` are automatically loaded as Terraform environment variables and are available to both auto discovered and custom/explicit tests as inputs. This is also illustrated in the [Create the example configuration - Step 4](https://github.com/g-awmalik/cloud-foundation-toolkit/tree/feat/add-bp-test-doc/infra/blueprint-test#3111-create-the-example-configuration) above where the `project_id` variable output by the `test/setup` is consumed as a variable for the example. + ## 4.2 Default and stage specific execution 1. Cd into the `test/integration` directory From fa95e267e7758c5d35e06f9551a176a0ca35d63c Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 19 Apr 2024 16:48:59 -0700 Subject: [PATCH 0917/1371] chore: Update Tools to 1.20.0 (#2254) Co-authored-by: Bharath KKB --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 14525356530..dba016c27e1 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.7.5 +TERRAFORM_VERSION := 1.8.1 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 471.0.0 +CLOUD_SDK_VERSION := 472.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,9 +25,9 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.55.21 +TERRAGRUNT_VERSION := 0.57.5 # Updated by Update Tooling Workflow -KUSTOMIZE_VERSION := 5.3.0 +KUSTOMIZE_VERSION := 5.4.1 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.49 PROTOC_VERSION := 23.4 @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.2.20 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.28.8 +KUBECTL_VERSION := 1.28.9 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19.11 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 2398aba1ba52984523b66157bc88144a77447093 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 17:02:22 +0200 Subject: [PATCH 0918/1371] chore(deps): update cft/developer-tools docker tag to v1.20 (#2279) --- infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 9cd9f66b038..738aabc3ef2 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -31,7 +31,7 @@ steps: dir: 'infra/blueprint-test' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.19' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.20' options: env: - 'TF_VAR_org_id=$_ORG_ID' From 5f41d8a5134450d0eb90f092d45232856d425444 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 17:26:42 +0200 Subject: [PATCH 0919/1371] chore(deps): update go modules (#2248) --- cli/go.mod | 37 +++++++++++++++++++------------------ cli/go.sum | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 18 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index d860ae76bd8..10326feab49 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -4,17 +4,18 @@ go 1.21 require ( cloud.google.com/go/asset v1.18.1 - cloud.google.com/go/storage v1.39.1 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2 + cloud.google.com/go/storage v1.40.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.16.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 github.com/golang/protobuf v1.5.4 - github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 + github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v60 v60.0.0 + github.com/google/go-github/v61 v61.0.0 github.com/hashicorp/hcl/v2 v2.20.1 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/iancoleman/strcase v0.3.0 @@ -22,19 +23,19 @@ require ( github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.5.6 + github.com/jedib0t/go-pretty/v6 v6.5.8 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.62.1 + github.com/open-policy-agent/opa v0.63.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 github.com/spf13/viper v1.18.2 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 - golang.org/x/oauth2 v0.18.0 + golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f + golang.org/x/oauth2 v0.19.0 golang.org/x/text v0.14.0 google.golang.org/api v0.172.0 google.golang.org/protobuf v1.33.0 @@ -47,7 +48,7 @@ require ( cloud.google.com/go/accesscontextmanager v1.8.5 // indirect cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/iam v1.1.7 // indirect cloud.google.com/go/longrunning v0.5.5 // indirect cloud.google.com/go/orgpolicy v1.12.1 // indirect cloud.google.com/go/osconfig v1.12.5 // indirect @@ -174,17 +175,17 @@ require ( go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.21.0 // indirect - golang.org/x/mod v0.16.0 // indirect - golang.org/x/net v0.22.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect + golang.org/x/crypto v0.22.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.19.0 // indirect + golang.org/x/tools v0.20.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect google.golang.org/grpc v1.62.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -198,12 +199,12 @@ require ( k8s.io/client-go v0.28.4 // indirect k8s.io/component-base v0.27.2 // indirect k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect + k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect k8s.io/kubectl v0.27.2 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/controller-runtime v0.15.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/kyaml v0.16.0 // indirect + sigs.k8s.io/kustomize/kyaml v0.17.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 736879c7592..5be9d6f3b90 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -11,6 +11,8 @@ cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGB cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iam v1.1.7 h1:z4VHOhwKLF/+UYXAJDFwGtNF0b6gjsW1Pk9Ml0U/IoM= +cloud.google.com/go/iam v1.1.7/go.mod h1:J4PMPg8TtyurAUvSmPj8FF3EDgY1SPRZxcUGrn7WXGA= cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= cloud.google.com/go/orgpolicy v1.12.1 h1:2JbXigqBJVp8Dx5dONUttFqewu4fP0p3pgOdIZAhpYU= @@ -19,11 +21,15 @@ cloud.google.com/go/osconfig v1.12.5 h1:Mo5jGAxOMKH/PmDY7fgY19yFcVbvwREb5D5zMPQj cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY= cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= +cloud.google.com/go/storage v1.40.0 h1:VEpDQV5CJxFmJ6ueWNsKxcr1QAYOXEgxDa+sBbJahPw= +cloud.google.com/go/storage v1.40.0/go.mod h1:Rrj7/hKlG87BLqDJYtwR0fbPld8uJPbQ2ucUMY7Ir0g= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2 h1:DQS5D0xaV1SVFNoGvHdYB0wYeZ24D9hVeFiLG2+r06I= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2/go.mod h1:uomWciQn6oAotW86ck0b0ix+sUeZHSXyS+IYAVFTPj8= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0 h1:db17HvmQPwTAq7/ex/w2DiNMA4oGUmTiHvScfPW/cRI= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0/go.mod h1:JSsaDg/h4yaiNNTNnrCjyL6/czHb/Oz/z+dzWVqJYBE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -241,6 +247,8 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 h1:4gjrh/PN2MuWCCElk8/I4OCKRKWCCo2zEct3VKCbibU= github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2 h1:yEt5djSYb4iNtmV9iJGVday+i4e9u6Mrn5iP64HH5QM= +github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -262,6 +270,7 @@ github.com/google/go-github/v59 v59.0.0 h1:7h6bgpF5as0YQLLkEiVqpgtJqjimMYhBkD4jT github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv40oDjhV/gH6wM= github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= +github.com/google/go-github/v61 v61.0.0/go.mod h1:0WR+KmsWX75G2EbpyGsGmradjo3IiciuI4BmdVCobQY= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -317,6 +326,8 @@ github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PH github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= github.com/jedib0t/go-pretty/v6 v6.5.6 h1:nKXVLqPfAwY7sWcYXdNZZZ2fjqDpAtj9UeWupgfUxSg= github.com/jedib0t/go-pretty/v6 v6.5.6/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= +github.com/jedib0t/go-pretty/v6 v6.5.8 h1:8BCzJdSvUbaDuRba4YVh+SKMGcAAKdkcF3SVFbrHAtQ= +github.com/jedib0t/go-pretty/v6 v6.5.8/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -393,6 +404,8 @@ github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcA github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= github.com/open-policy-agent/opa v0.62.1 h1:UcxBQ0fe6NEjkYc775j4PWoUFFhx4f6yXKIKSTAuTVk= github.com/open-policy-agent/opa v0.62.1/go.mod h1:YqiSIIuvKwyomtnnXkJvy0E3KtVKbavjPJ/hNMuOmeM= +github.com/open-policy-agent/opa v0.63.0 h1:ztNNste1v8kH0/vJMJNquE45lRvqwrM5mY9Ctr9xIXw= +github.com/open-policy-agent/opa v0.63.0/go.mod h1:9VQPqEfoB2N//AToTxzZ1pVTVPUoF2Mhd64szzjWPpU= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -558,9 +571,13 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= +golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= +golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -570,6 +587,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -588,9 +607,13 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= +golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= 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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -602,6 +625,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -628,6 +653,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -636,6 +663,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -665,6 +694,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= +golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= 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= @@ -686,6 +717,8 @@ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc= +google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -749,6 +782,8 @@ 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-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk= k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +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/kubectl v0.27.2 h1:sSBM2j94MHBFRWfHIWtEXWCicViQzZsb177rNsKBhZg= k8s.io/kubectl v0.27.2/go.mod h1:GCOODtxPcrjh+EC611MqREkU8RjYBh10ldQCQ6zpFKw= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= @@ -761,6 +796,8 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMm sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0= sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= +sigs.k8s.io/kustomize/kyaml v0.17.0 h1:G2bWs03V9Ur2PinHLzTUJ8Ded+30SzXZKiO92SRDs3c= +sigs.k8s.io/kustomize/kyaml v0.17.0/go.mod h1:6lxkYF1Cv9Ic8g/N7I86cvxNc5iinUo/P2vKsHNmpyE= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From c99d203b1020465ee12940f823ba67c3a3ee8597 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 17:39:06 +0200 Subject: [PATCH 0920/1371] chore(deps): update github/codeql-action action to v3.25.0 (#2280) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b658b38f13f..0c9816bf8f6 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/init@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/autobuild@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/analyze@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 71c79a263f4..0d44339976a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/upload-sarif@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 with: sarif_file: results.sarif From 463fb3bd5f2b7735709dab672abc09411c7f796b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 17:48:33 +0200 Subject: [PATCH 0921/1371] chore(deps): update peter-evans/create-pull-request action to v6.0.3 (#2271) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 59937c6c2ca..9fee12ca7ee 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -107,7 +107,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@70a41aba780001da0a30141984ae2a0c95d8704e # v6.0.2 + uses: peter-evans/create-pull-request@c55203cfde3e5c11a452d352b4393e68b85b4533 # v6.0.3 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From ac47a553c3b3d23288f0c94435796665cb93419b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 17:54:44 +0200 Subject: [PATCH 0922/1371] chore(deps): update actions/checkout action to v4.1.2 (#2282) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index b86bf09dc40..af48cd8d1ac 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 092b5f18b9a..a5a7c1b40b2 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 6e99a022a36..88d3f574414 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 8bc77277524..394e80d2d4e 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 39c7c8a70d3..861b19a91ea 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: tflint-ruleset-blueprint/go.mod diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index c2aad769279..312a7ed61ee 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 99622b6ca60..f3e40400ba8 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: cli/go.mod diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0d44339976a..7c2c39e34db 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: persist-credentials: false diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 33217dfa5f6..a029e6b17c5 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 9fee12ca7ee..318101c2efb 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -31,7 +31,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: ref: master - name: Update Tools From 5a1bc7d74c2e2c106918cac9e51b3b038b17e877 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 08:58:26 -0700 Subject: [PATCH 0923/1371] fix(deps): bump golang.org/x/net from 0.22.0 to 0.23.0 in /infra/utils/fbf (#2274) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 5463a06e70b..7dbf381a19e 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -34,7 +34,7 @@ require ( go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/crypto v0.21.0 // indirect - golang.org/x/net v0.22.0 // indirect + golang.org/x/net v0.23.0 // indirect golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/term v0.18.0 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 41826cbe643..67ff991fdac 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -114,8 +114,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL 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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= From a41759b823364b9602309cbdc797156eb22e7dc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 10:08:24 -0700 Subject: [PATCH 0924/1371] fix(deps): bump golang.org/x/net from 0.22.0 to 0.23.0 in /infra/module-swapper (#2276) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 66dcf3af9a8..821e9398215 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -32,7 +32,7 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.22.0 // indirect + golang.org/x/net v0.23.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.13.0 // indirect diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 60664c8ff43..ff759a8929f 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -104,8 +104,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 1dd1e008953eac31f78d15d5c996e983508deb2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:21:49 -0700 Subject: [PATCH 0925/1371] fix(deps): bump golang.org/x/net from 0.17.0 to 0.23.0 in /infra/blueprint-test (#2272) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 10 +++++----- infra/blueprint-test/go.sum | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 186fa76b178..3d0fabde8d1 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,6 +7,7 @@ require ( github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.46.13 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 + github.com/hashicorp/terraform-json v0.17.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.9.0 @@ -55,7 +56,6 @@ require ( github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f // indirect github.com/hashicorp/hcl/v2 v2.18.0 // indirect - github.com/hashicorp/terraform-json v0.17.1 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/jinzhu/copier v0.4.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect @@ -84,12 +84,12 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/zclconf/go-cty v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/net v0.17.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/net v0.23.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 89806cd8af6..f69a05e0fc6 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -545,8 +545,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -632,8 +632,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= 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/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= 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= @@ -741,13 +741,13 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= 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= From 7fa90f44eeeb31566e04291df27664f78eaaa941 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 20:28:06 +0200 Subject: [PATCH 0926/1371] chore(deps): update peter-evans/create-pull-request action to v6.0.4 (#2286) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 318101c2efb..ccfc97f5c01 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -107,7 +107,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@c55203cfde3e5c11a452d352b4393e68b85b4533 # v6.0.3 + uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 # v6.0.4 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 91680f82cb1402d08bca03f733fd6bd236fea20d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 20:33:11 +0200 Subject: [PATCH 0927/1371] chore(deps): update actions/checkout action to v4.1.3 (#2283) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index af48cd8d1ac..b4685ab5831 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index a5a7c1b40b2..0c130ca55bc 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 88d3f574414..34707044fcf 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 394e80d2d4e..ba981b39dce 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 861b19a91ea..18339c4a2e5 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: tflint-ruleset-blueprint/go.mod diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 312a7ed61ee..69a2d86604d 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index f3e40400ba8..ef514917409 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: cli/go.mod diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7c2c39e34db..49633b1fd15 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 with: persist-credentials: false diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index a029e6b17c5..9bfb5c758f5 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index ccfc97f5c01..81c6d729094 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -31,7 +31,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 with: ref: master - name: Update Tools From 658b6616eda73bd0af224d9b4c01f035bb23b29f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 20:36:31 +0200 Subject: [PATCH 0928/1371] chore(deps): update github/codeql-action action to v3.25.1 (#2284) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0c9816bf8f6..0e4a948f535 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 + uses: github/codeql-action/init@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 + uses: github/codeql-action/autobuild@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 + uses: github/codeql-action/analyze@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 49633b1fd15..cccaf5109c4 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 + uses: github/codeql-action/upload-sarif@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 with: sarif_file: results.sarif From dc58dffe1dac451967d43571edef267fa11f97b3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 20:44:58 +0200 Subject: [PATCH 0929/1371] chore(deps): update actions/checkout digest to v4.1.3 (#2281) Co-authored-by: Andrew Peabody --- .github/workflows/codeql.yml | 2 +- .github/workflows/lint.yaml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0e4a948f535..85955dfca71 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 1b58603e93c..e3470f650c7 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' # v4 + - uses: 'actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f' # v4.1.3 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./cli|\./tflint-ruleset-blueprint|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 8b9510d570e..0626e443a4a 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - name: Build run: |- From 77e37e65c4e7b72b97f79ca7fd714e2dc38bf6cc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 21:46:18 +0200 Subject: [PATCH 0930/1371] fix(deps): update module github.com/hashicorp/terraform-json to v0.21.0 (#2289) --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 3d0fabde8d1..e0894b38363 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,7 +7,7 @@ require ( github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.46.13 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 - github.com/hashicorp/terraform-json v0.17.1 + github.com/hashicorp/terraform-json v0.21.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.9.0 @@ -82,7 +82,7 @@ require ( github.com/urfave/cli/v2 v2.25.7 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - github.com/zclconf/go-cty v1.14.0 // indirect + github.com/zclconf/go-cty v1.14.1 // indirect go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/net v0.23.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index f69a05e0fc6..390b760af15 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -401,8 +401,8 @@ github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHL github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= -github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQHgyRwf3RkyA= -github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o= +github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= +github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= @@ -527,8 +527,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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= -github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= -github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= +github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= From 0cc74a2b219dc1c5854554c95f2a0e4802a2f17d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Apr 2024 23:28:38 +0200 Subject: [PATCH 0931/1371] chore(deps): update cft/developer-tools docker tag to v1.20 (#2278) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 420b3f4f624..958d719c41d 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.19 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd GOLANGCI_VERSION := 1.57.2 From f6f492e1721d914fbf64858f0c200e8f195c09cb Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:47:50 -0700 Subject: [PATCH 0932/1371] chore(master): release module-swapper 0.4.6 (#2285) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5ff59e92d49..a079f7446d8 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { "infra/blueprint-test": "0.14.0", - "infra/module-swapper": "0.4.5" + "infra/module-swapper": "0.4.6" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index a667f43816c..72e586b0e78 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.5...infra/module-swapper/v0.4.6) (2024-04-22) + + +### Bug Fixes + +* **deps:** bump golang.org/x/net from 0.22.0 to 0.23.0 in /infra/module-swapper ([#2276](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2276)) ([a41759b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/a41759b823364b9602309cbdc797156eb22e7dc2)) + ## [0.4.5](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.4...infra/module-swapper/v0.4.5) (2024-04-02) From b44bd772074eee95d8345e625cc7e0634671abe6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:53:33 -0700 Subject: [PATCH 0933/1371] chore(deps): bump golang.org/x/net from 0.21.0 to 0.23.0 in /tflint-ruleset-blueprint (#2273) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tflint-ruleset-blueprint/go.mod | 4 ++-- tflint-ruleset-blueprint/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 545e3b61017..7d4c439d0ab 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -24,8 +24,8 @@ require ( github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/zclconf/go-cty v1.14.2 // indirect golang.org/x/mod v0.15.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/sys v0.17.0 // indirect + golang.org/x/net v0.23.0 // indirect + golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.18.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect diff --git a/tflint-ruleset-blueprint/go.sum b/tflint-ruleset-blueprint/go.sum index 3cae87d495a..beefcb89e94 100644 --- a/tflint-ruleset-blueprint/go.sum +++ b/tflint-ruleset-blueprint/go.sum @@ -65,8 +65,8 @@ github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -74,8 +74,8 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= From 0e979fd1b563931aabad27934daf863184e4b7ae Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 24 Apr 2024 18:29:12 +0200 Subject: [PATCH 0934/1371] fix(deps): update module google.golang.org/api to v0.173.0 (#2291) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 7dbf381a19e..7363251faf2 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.8 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.172.0 + google.golang.org/api v0.173.0 ) require ( @@ -40,7 +40,7 @@ require ( golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa // indirect google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 67ff991fdac..6e8e5acdec9 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -156,8 +156,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= -google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= +google.golang.org/api v0.173.0 h1:fz6B7GWYWLS/HfruiTsRYVKQQApJ6vasTYWAK6+Qo8g= +google.golang.org/api v0.173.0/go.mod h1:ins7pTzjeBPQ3SdC/plzki6d/dQWwAWy8qVZ4Vgkzl8= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -168,8 +168,8 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa h1:RBgMaUMP+6soRkik4VoN8ojR2nex2TqZwjSSogic+eo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 1f218f6b726172cceb60af9f6731b1049b9bd225 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 24 Apr 2024 18:34:03 +0200 Subject: [PATCH 0935/1371] fix(deps): update module google.golang.org/api to v0.176.1 (#2292) --- infra/utils/fbf/go.mod | 24 ++++++------- infra/utils/fbf/go.sum | 77 +++++++++++++++--------------------------- 2 files changed, 39 insertions(+), 62 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 7363251faf2..100b6801884 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,19 +6,20 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.8 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.173.0 + google.golang.org/api v0.176.1 ) require ( - cloud.google.com/go/compute v1.23.4 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/auth v0.3.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect @@ -33,15 +34,14 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/crypto v0.21.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect + golang.org/x/crypto v0.22.0 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/oauth2 v0.19.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa // indirect - google.golang.org/grpc v1.62.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect + google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 6e8e5acdec9..d4cde3fc9e3 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,8 +1,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute v1.23.4 h1:EBT9Nw4q3zyE7G45Wvv3MzolIrCJEuHys5muLY0wvAw= -cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/auth v0.3.0 h1:PRyzEpGfx/Z9e8+lHsbkoUVXD0gnu4MNmm7Gp8TQNIs= +cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= @@ -39,17 +41,14 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -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/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= 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= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= @@ -84,7 +83,6 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= @@ -97,54 +95,40 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= +golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= 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-20190423024810-112230192c58/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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20210615035016-665e8c7367d1/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-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -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.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -152,31 +136,26 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.173.0 h1:fz6B7GWYWLS/HfruiTsRYVKQQApJ6vasTYWAK6+Qo8g= -google.golang.org/api v0.173.0/go.mod h1:ins7pTzjeBPQ3SdC/plzki6d/dQWwAWy8qVZ4Vgkzl8= +google.golang.org/api v0.176.1 h1:DJSXnV6An+NhJ1J+GWtoF2nHEuqB1VNoTfnIbjNvwD4= +google.golang.org/api v0.176.1/go.mod h1:j2MaSDYcvYV1lkZ1+SMW4IeF90SrEyFA+tluDYWRrFg= 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.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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa h1:RBgMaUMP+6soRkik4VoN8ojR2nex2TqZwjSSogic+eo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= -google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= 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= @@ -186,8 +165,6 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.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.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= From 43ab9788786797b0171def3379e28488db09918b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 24 Apr 2024 15:50:41 -0700 Subject: [PATCH 0936/1371] chore: do not run periodic-reporter on forks (#2293) --- infra/terraform/modules/workflow_files/periodic-reporter.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/infra/terraform/modules/workflow_files/periodic-reporter.yaml b/infra/terraform/modules/workflow_files/periodic-reporter.yaml index c5d815a4189..82ec8355c7d 100644 --- a/infra/terraform/modules/workflow_files/periodic-reporter.yaml +++ b/infra/terraform/modules/workflow_files/periodic-reporter.yaml @@ -1,4 +1,4 @@ -# Copyright 2023 Google LLC +# Copyright 2023-2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,6 +25,8 @@ on: jobs: report: + if: github.repository_owner == 'GoogleCloudPlatform' || github.repository_owner == 'terraform-google-modules' + permissions: issues: 'write' From 52deb430e543e603cc22007164b5d929470bfe3c Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:04:36 -0700 Subject: [PATCH 0937/1371] chore: Update Tools to 1.20.1 (#2290) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index dba016c27e1..9641bba65df 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.8.1 +TERRAFORM_VERSION := 1.8.2 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 472.0.0 +CLOUD_SDK_VERSION := 473.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.57.5 +TERRAGRUNT_VERSION := 0.57.8 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.1 # Updated by Update Tooling Workflow @@ -43,7 +43,7 @@ TFLINT_VERSION := 0.50.3 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.5 +MODULE_SWAPPER_VERSION := 0.4.6 # For developer-tools-krm # Updated by Update Tooling Workflow @@ -51,12 +51,12 @@ GOLANGCI_VERSION := 1.57.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.14.1 +GATOR_VERSION := 3.14.2 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From c88fe0ee5a7b23977e2decae41180829ceaa202d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 25 Apr 2024 18:39:48 +0200 Subject: [PATCH 0938/1371] chore(deps): update go modules (#2287) --- cli/go.mod | 24 +++++++++++++----------- cli/go.sum | 26 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 10326feab49..3daa52d2fa2 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.21 require ( - cloud.google.com/go/asset v1.18.1 + cloud.google.com/go/asset v1.19.0 cloud.google.com/go/storage v1.40.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad @@ -37,7 +37,7 @@ require ( golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f golang.org/x/oauth2 v0.19.0 golang.org/x/text v0.14.0 - google.golang.org/api v0.172.0 + google.golang.org/api v0.174.0 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -45,13 +45,15 @@ require ( require ( cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/accesscontextmanager v1.8.5 // indirect + cloud.google.com/go/accesscontextmanager v1.8.6 // indirect + cloud.google.com/go/auth v0.2.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.0 // indirect cloud.google.com/go/compute v1.24.0 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect cloud.google.com/go/iam v1.1.7 // indirect - cloud.google.com/go/longrunning v0.5.5 // indirect - cloud.google.com/go/orgpolicy v1.12.1 // indirect - cloud.google.com/go/osconfig v1.12.5 // indirect + cloud.google.com/go/longrunning v0.5.6 // indirect + cloud.google.com/go/orgpolicy v1.12.2 // indirect + cloud.google.com/go/osconfig v1.12.6 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -184,10 +186,10 @@ require ( golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.20.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/grpc v1.62.1 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect + google.golang.org/grpc v1.63.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 5be9d6f3b90..6c038f3e667 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -3,22 +3,38 @@ cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go/accesscontextmanager v1.8.5 h1:2GLNaNu9KRJhJBFTIVRoPwk6xE5mUDgD47abBq4Zp/I= cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= +cloud.google.com/go/accesscontextmanager v1.8.6 h1:NipmPd3BCzwa/mr40SK8pWRkbzv9Th5Azhi4dBYazlM= +cloud.google.com/go/accesscontextmanager v1.8.6/go.mod h1:rMC0Z8pCe/JR6yQSksprDc6swNKjMEvkfCbaesh+OS0= cloud.google.com/go/asset v1.18.1 h1:+NpxL5L53VY91EoJTHeGGXSWEUllf2hhXpCyTnSrd3Q= cloud.google.com/go/asset v1.18.1/go.mod h1:QXivw0mVqwrhZyuX6iqFbyfCdzYE9AFCJVG47Eh5dMM= +cloud.google.com/go/asset v1.19.0 h1:D1fzO6/fdMkGA7Lxrv/in2ahVm59DAe1EMMaDt33v9k= +cloud.google.com/go/asset v1.19.0/go.mod h1:eW/d/F3g1Pr07U7nNUhj2AI1e1AVgs3+j8inYS5QBl0= +cloud.google.com/go/auth v0.2.0 h1:y6oTcpMSbOcXbwYgUUrvI+mrQ2xbrcdpPgtVbCGTLTk= +cloud.google.com/go/auth v0.2.0/go.mod h1:+yb+oy3/P0geX6DLKlqiGHARGR6EX2GRtYCzWOCQSbU= +cloud.google.com/go/auth/oauth2adapt v0.2.0 h1:FR8zevgQwu+8CqiOT5r6xCmJa3pJC/wdXEEPF1OkNhA= +cloud.google.com/go/auth/oauth2adapt v0.2.0/go.mod h1:AfqujpDAlTfLfeCIl/HJZZlIxD8+nJoZ5e0x1IxGq5k= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= cloud.google.com/go/iam v1.1.7 h1:z4VHOhwKLF/+UYXAJDFwGtNF0b6gjsW1Pk9Ml0U/IoM= cloud.google.com/go/iam v1.1.7/go.mod h1:J4PMPg8TtyurAUvSmPj8FF3EDgY1SPRZxcUGrn7WXGA= cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= +cloud.google.com/go/longrunning v0.5.6 h1:xAe8+0YaWoCKr9t1+aWe+OeQgN/iJK1fEgZSXmjuEaE= +cloud.google.com/go/longrunning v0.5.6/go.mod h1:vUaDrWYOMKRuhiv6JBnn49YxCPz2Ayn9GqyjaBT8/mA= cloud.google.com/go/orgpolicy v1.12.1 h1:2JbXigqBJVp8Dx5dONUttFqewu4fP0p3pgOdIZAhpYU= cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= +cloud.google.com/go/orgpolicy v1.12.2 h1:x9GttuUZXXeKcJgHSGxYoPn2hOJhhuaN5YYJKfAfmLo= +cloud.google.com/go/orgpolicy v1.12.2/go.mod h1:XycP+uWN8Fev47r1XibYjOgZod8SjXQtZGsO2I8KXX8= cloud.google.com/go/osconfig v1.12.5 h1:Mo5jGAxOMKH/PmDY7fgY19yFcVbvwREb5D5zMPQjFfo= cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= +cloud.google.com/go/osconfig v1.12.6 h1:wIOhgzklE0hHZsho02rRVXYBHSfsAwYZYIaxFaUBIjs= +cloud.google.com/go/osconfig v1.12.6/go.mod h1:2dcXGl5qNbKo6Hjsnqbt5t6H2GX7UCAaPjF6BwDlFq8= cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY= cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= cloud.google.com/go/storage v1.40.0 h1:VEpDQV5CJxFmJ6ueWNsKxcr1QAYOXEgxDa+sBbJahPw= @@ -706,6 +722,8 @@ gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= +google.golang.org/api v0.174.0 h1:zB1BWl7ocxfTea2aQ9mgdzXjnfPySllpPOskdnO+q34= +google.golang.org/api v0.174.0/go.mod h1:aC7tB6j0HR1Nl0ni5ghpx6iLasmAX78Zkh/wgxAAjLg= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -715,12 +733,18 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc= google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s= +google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda h1:b6F6WIV4xHHD0FA4oIyzU6mHWg2WI2X1RBehwa5QN38= +google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda/go.mod h1:AHcE/gZH76Bk/ROZhQphlRoWo5xKDEtz3eVEO1LfA8c= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -728,6 +752,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8= +google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= 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= From 8fed89887331462314378bb1ee65be302f388f97 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 25 Apr 2024 22:15:06 +0200 Subject: [PATCH 0939/1371] chore(deps): update actions/upload-artifact action to v4.3.2 (#2295) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index ef514917409..85f26d90a6b 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index cccaf5109c4..d2ebf9feec2 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 with: name: SARIF file path: results.sarif From 5d5d6bd3127777ab31f37bc3dec3d0391d6aacc3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 25 Apr 2024 23:56:40 +0200 Subject: [PATCH 0940/1371] chore(deps): update actions/upload-artifact action to v4.3.3 (#2297) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 85f26d90a6b..20d35c7d997 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d2ebf9feec2..8bd25ae18c5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif From 1be7aebadc7f824e84cd64e4d817dd8edde4a3d9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 26 Apr 2024 08:58:57 -0700 Subject: [PATCH 0941/1371] chore: update ci_teams to write for cloudbuild trigger (#2267) Co-authored-by: Awais Malik --- infra/terraform/modules/repositories/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index 2f52153bc39..bae585d97c4 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -103,5 +103,5 @@ resource "github_team_repository" "ci_teams" { } repository = each.value.repo team_id = each.value.team - permission = "triage" + permission = "write" } From 924fa939036600d82f496e4e2ec85479497e15b1 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Mon, 29 Apr 2024 13:12:19 -0400 Subject: [PATCH 0942/1371] fix: Add jump-start-solutions-admins to JSS 17.1 (#2223) Co-authored-by: Andrew Peabody Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 9f75018307d..67032360340 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -242,6 +242,7 @@ locals { description = "Creates opinionated BigQuery datasets and tables" topics = local.common_topics.da owners = ["davenportjw", "shanecglass"] + groups = [local.jss_common_group] lint_env = { ENABLE_BPMETADATA = "1" } From f5ad70a840b2448a7617c9ae14c6c6295fa86e66 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 29 Apr 2024 19:34:33 +0200 Subject: [PATCH 0943/1371] chore(deps): update golangci/golangci-lint-action action to v4.0.1 (#2299) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 34707044fcf..4d29088aa26 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -38,7 +38,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@3cfe3a4abbb849e10058ce4af15d205b6da42804 # v4.0.0 + uses: golangci/golangci-lint-action@d6238b002a20823d52840fda27e2d4891c5952dc # v4.0.1 with: version: latest working-directory: ${{ matrix.folder }} diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index ba981b39dce..7d8c687e8b4 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -44,7 +44,7 @@ jobs: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum - name: golangci-lint - uses: golangci/golangci-lint-action@3cfe3a4abbb849e10058ce4af15d205b6da42804 # v4.0.0 + uses: golangci/golangci-lint-action@d6238b002a20823d52840fda27e2d4891c5952dc # v4.0.1 with: version: latest working-directory: 'infra/module-swapper' From aefdf42631fe029cc3fee30a050a531ea15d9493 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 12:42:08 -0700 Subject: [PATCH 0944/1371] fix(deps): bump github.com/hashicorp/go-getter from 1.7.2 to 1.7.4 in /infra/blueprint-test (#2298) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index e0894b38363..0abbb300870 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -50,7 +50,7 @@ require ( github.com/gruntwork-io/go-commons v0.17.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.2 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 390b760af15..23f58a297cc 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -385,8 +385,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.2 h1:uJDtyXwEfalmp1PqdxuhZqrNkUyClZAhVeZYTArbqkg= -github.com/hashicorp/go-getter v1.7.2/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= From a7402c779e3815fb3062d69958c63920387a2aa6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Apr 2024 02:15:12 +0200 Subject: [PATCH 0945/1371] chore(deps): update github/codeql-action action to v3.25.2 (#2300) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 85955dfca71..132aaec63cb 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 + uses: github/codeql-action/init@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 # v3.25.2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 + uses: github/codeql-action/autobuild@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 # v3.25.2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 + uses: github/codeql-action/analyze@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 # v3.25.2 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 8bd25ae18c5..8ef1a1eeeb5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 + uses: github/codeql-action/upload-sarif@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 # v3.25.2 with: sarif_file: results.sarif From e147794c96678d3680eb989c350c939bdc0f9d7f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Apr 2024 17:57:30 +0200 Subject: [PATCH 0946/1371] chore(deps): update golangci/golangci-lint-action action to v5 (#2307) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 4d29088aa26..ed09c53227f 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -38,7 +38,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@d6238b002a20823d52840fda27e2d4891c5952dc # v4.0.1 + uses: golangci/golangci-lint-action@9d1e0624a798bb64f6c3cea93db47765312263dc # v5.1.0 with: version: latest working-directory: ${{ matrix.folder }} diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 7d8c687e8b4..239936956fe 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -44,7 +44,7 @@ jobs: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum - name: golangci-lint - uses: golangci/golangci-lint-action@d6238b002a20823d52840fda27e2d4891c5952dc # v4.0.1 + uses: golangci/golangci-lint-action@9d1e0624a798bb64f6c3cea93db47765312263dc # v5.1.0 with: version: latest working-directory: 'infra/module-swapper' From eb2e935a156db90bf980282e1bcbfe3962c390f9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Apr 2024 18:08:33 +0200 Subject: [PATCH 0947/1371] chore(deps): update peter-evans/create-pull-request action to v6.0.5 (#2304) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 81c6d729094..a7f02badd38 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -107,7 +107,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 # v6.0.4 + uses: peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e # v6.0.5 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From d7bd472ca6e5179ce36b273addc03f7104c32cf4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Apr 2024 18:49:47 +0200 Subject: [PATCH 0948/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.46.14 (#2303) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 0abbb300870..79d966700a4 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -5,7 +5,7 @@ go 1.21 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.46.13 + github.com/gruntwork-io/terratest v0.46.14 github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 github.com/hashicorp/terraform-json v0.21.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 23f58a297cc..a7aace22828 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -378,8 +378,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.13 h1:FDaEoZ7DtkomV8pcwLdBV/VsytdjnPRqJkIriYEYwjs= -github.com/gruntwork-io/terratest v0.46.13/go.mod h1:8sxu3Qup8TxtbzOHzq0MUrQffJj/G61/OwlsReaCwpo= +github.com/gruntwork-io/terratest v0.46.14 h1:nVT2JpOPLr7KbwOSNDP0GJffljH+Yu5833cwLorxRjs= +github.com/gruntwork-io/terratest v0.46.14/go.mod h1:L/IHbj195wnjfIFpZYWUhjwA3jm4O6ehO//xz7NxN8o= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From d4c9f8d559cc75a9acd8b8f0cfb5970fb362bd3c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Apr 2024 19:21:52 +0200 Subject: [PATCH 0949/1371] chore(deps): update github/codeql-action action to v3.25.3 (#2301) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 132aaec63cb..1ab2445b809 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 # v3.25.2 + uses: github/codeql-action/init@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 # v3.25.2 + uses: github/codeql-action/autobuild@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 # v3.25.2 + uses: github/codeql-action/analyze@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 8ef1a1eeeb5..482a4e3718c 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 # v3.25.2 + uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: sarif_file: results.sarif From e861da2cb9c421644262fcabf9585fd077a50b27 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Apr 2024 19:55:48 +0200 Subject: [PATCH 0950/1371] chore(deps): update actions/checkout action to v4.1.4 (#2302) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 2 +- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index b4685ab5831..7110c240de4 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1ab2445b809..1f48a589b41 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 0c130ca55bc..006b1b61355 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index ed09c53227f..c4a4ef02568 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 239936956fe..23e1d0d32ff 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 18339c4a2e5..2932975e415 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: tflint-ruleset-blueprint/go.mod diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index e3470f650c7..03c8e381bb5 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f' # v4.1.3 + - uses: 'actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b' # v4.1.4 - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./cli|\./tflint-ruleset-blueprint|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 69a2d86604d..1d3d149bf61 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 20d35c7d997..8574df92282 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: cli/go.mod diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 482a4e3718c..38d7ccb3801 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 0626e443a4a..9f650f68e4f 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 9bfb5c758f5..bf0c41f6677 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index a7f02badd38..6f7519e25a8 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -31,7 +31,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: master - name: Update Tools From 08cab6fd082e71af2c4d97034c67e66727b68399 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:28:42 -0700 Subject: [PATCH 0951/1371] chore(master): release blueprint-test 0.14.1 (#2288) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a079f7446d8..3cd0c6eb1a2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "infra/blueprint-test": "0.14.0", + "infra/blueprint-test": "0.14.1", "infra/module-swapper": "0.4.6" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index e1557effa50..0d59470b4fa 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.14.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.14.0...infra/blueprint-test/v0.14.1) (2024-04-30) + + +### Bug Fixes + +* **deps:** bump github.com/hashicorp/go-getter from 1.7.2 to 1.7.4 in /infra/blueprint-test ([#2298](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2298)) ([aefdf42](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/aefdf42631fe029cc3fee30a050a531ea15d9493)) +* **deps:** bump golang.org/x/net from 0.17.0 to 0.23.0 in /infra/blueprint-test ([#2272](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2272)) ([1dd1e00](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1dd1e008953eac31f78d15d5c996e983508deb2a)) +* **deps:** update module github.com/gruntwork-io/terratest to v0.46.14 ([#2303](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2303)) ([d7bd472](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/d7bd472ca6e5179ce36b273addc03f7104c32cf4)) +* **deps:** update module github.com/hashicorp/terraform-json to v0.21.0 ([#2289](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2289)) ([77e37e6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/77e37e65c4e7b72b97f79ca7fd714e2dc38bf6cc)) + ## [0.14.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.13.2...infra/blueprint-test/v0.14.0) (2024-04-09) From 2cb69d8b2294435629c09c83e63fae2aae60ee24 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 1 May 2024 23:00:07 -0500 Subject: [PATCH 0952/1371] chore: add release automation for tflint plugin (#2277) Co-authored-by: Andrew Peabody --- .github/workflows/go-tflint-plugin.yml | 24 +++++++++++-- .github/workflows/release-tflint-plugin.yml | 39 +++++++++++++++++++++ .release-please-manifest.json | 3 +- release-please-config.json | 7 ++++ tflint-ruleset-blueprint/.goreleaser.yml | 32 +++++++++++++++++ 5 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/release-tflint-plugin.yml create mode 100644 tflint-ruleset-blueprint/.goreleaser.yml diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 2932975e415..0c3ae7dbb2d 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -6,13 +6,13 @@ on: - 'master' paths: - 'tflint-ruleset-blueprint/**' - - '.github/workflows/go-tflint-plugin.yaml.yml' + - '.github/workflows/go-tflint-plugin.yml' pull_request: branches: - 'master' paths: - 'tflint-ruleset-blueprint/**' - - '.github/workflows/go-tflint-plugin.yaml.yml' + - '.github/workflows/go-tflint-plugin.yml' concurrency: group: '${{github.workflow}}-${{ github.head_ref || github.ref }}' @@ -38,3 +38,23 @@ jobs: cache-dependency-path: tflint-ruleset-blueprint/go.sum - run: |- make test + releaser: + runs-on: ubuntu-latest + defaults: + run: + working-directory: 'tflint-ruleset-blueprint' + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Set up Go + uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + with: + go-version-file: 'tflint-ruleset-blueprint/go.mod' + - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser + - run: echo "${{env.GORELEASER_CURRENT_TAG}}" + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v5 + with: + version: latest + args: release --clean --skip=validate,publish + workdir: tflint-ruleset-blueprint diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml new file mode 100644 index 00000000000..e3cc84724ca --- /dev/null +++ b/.github/workflows/release-tflint-plugin.yml @@ -0,0 +1,39 @@ +name: release-tflint + +on: + push: + tags: + - tflint-ruleset-blueprint/v*.*.* + +permissions: + contents: write + id-token: write + +jobs: + release: + runs-on: ubuntu-latest + defaults: + run: + working-directory: 'tflint-ruleset-blueprint' + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Set up Go + uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + with: + go-version-file: 'tflint-ruleset-blueprint/go.mod' + - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV + - run: echo "${{env.GORELEASER_CURRENT_TAG}}" + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v5 + with: + version: latest + args: release --clean --skip=validate,publish + workdir: tflint-ruleset-blueprint + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: upload + run: | + gh release upload "tflint-ruleset-blueprint/${{env.GORELEASER_CURRENT_TAG}}" dist/tflint-ruleset-blueprint_*.zip dist/checksums.txt --repo ${{ github.repository }} --clobber + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3cd0c6eb1a2..d189242301f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,5 @@ { "infra/blueprint-test": "0.14.1", - "infra/module-swapper": "0.4.6" + "infra/module-swapper": "0.4.6", + "tflint-ruleset-blueprint": "0.0.1" } diff --git a/release-please-config.json b/release-please-config.json index 25e51b98d7d..cdf771a3593 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -16,6 +16,13 @@ "component": "infra/module-swapper", "pull-request-title-pattern": "chore${scope}: release module-swapper ${version}", "bump-minor-pre-major": true + }, + "tflint-ruleset-blueprint": { + "release-type": "go", + "package-name": "tflint-ruleset-blueprint", + "component": "tflint-ruleset-blueprint", + "pull-request-title-pattern": "chore${scope}: release tflint-ruleset-blueprint ${version}", + "bump-minor-pre-major": true } } } diff --git a/tflint-ruleset-blueprint/.goreleaser.yml b/tflint-ruleset-blueprint/.goreleaser.yml new file mode 100644 index 00000000000..7f3d4be6362 --- /dev/null +++ b/tflint-ruleset-blueprint/.goreleaser.yml @@ -0,0 +1,32 @@ +project_name: tflint-ruleset-blueprint +env: + - CGO_ENABLED=0 +builds: + - targets: + - darwin_amd64 + - darwin_arm64 + - linux_386 + - linux_amd64 + - linux_arm + - linux_arm64 + - windows_386 + - windows_amd64 + hooks: + post: + - mkdir -p ./dist/raw + - cp "{{ .Path }}" "./dist/raw/{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}" +archives: + - id: zip + name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}" + format: zip + files: + - none* +checksum: + name_template: 'checksums.txt' + extra_files: + - glob: ./dist/raw/* +changelog: + disable: true +release: + mode: 'keep-existing' + name_template: "tflint-ruleset-blueprint/v{{.Version}}" From 9940ef85cc58b3afb99feac5cb1d1720514fdd25 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 23:08:15 -0500 Subject: [PATCH 0953/1371] chore(master): release tflint-ruleset-blueprint 0.1.0 (#2312) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tflint-ruleset-blueprint/CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d189242301f..10c50be5158 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.14.1", "infra/module-swapper": "0.4.6", - "tflint-ruleset-blueprint": "0.0.1" + "tflint-ruleset-blueprint": "0.1.0" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md new file mode 100644 index 00000000000..eb1dd46d1e4 --- /dev/null +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +## [0.1.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint-v0.0.1...tflint-ruleset-blueprint/v0.1.0) (2024-05-02) + + +### Features + +* blueprints tflint plugin ([#2265](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2265)) ([461302e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/461302e839616b95eef08523bbcb5d598e834d70)) From f89271b3d9b6521187197ea9583d37481e55c8ac Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 2 May 2024 16:29:04 +0200 Subject: [PATCH 0954/1371] chore(deps): pin goreleaser/goreleaser-action action to 7ec5c2b (#2310) Co-authored-by: Andrew Peabody --- .github/workflows/go-tflint-plugin.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 0c3ae7dbb2d..db3a78ea806 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -53,7 +53,7 @@ jobs: - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser - run: echo "${{env.GORELEASER_CURRENT_TAG}}" - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 + uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 with: version: latest args: release --clean --skip=validate,publish diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index e3cc84724ca..3fbacaa5de8 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -25,7 +25,7 @@ jobs: - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV - run: echo "${{env.GORELEASER_CURRENT_TAG}}" - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 + uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 with: version: latest args: release --clean --skip=validate,publish From 6f412b9520b47fa0de73d76fe6e4ee6a85c2fd56 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 2 May 2024 16:34:22 +0200 Subject: [PATCH 0955/1371] chore(deps): update actions/setup-go action to v5.0.1 (#2314) --- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/test-cli.yml | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 006b1b61355..f67329a0cfa 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/utils/fbf/go.mod cache-dependency-path: infra/utils/fbf/go.sum diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index c4a4ef02568..fabb2501f77 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -25,7 +25,7 @@ jobs: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: ${{ matrix.folder }}/go.mod cache-dependency-path: ${{ matrix.folder }}/go.sum diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 23e1d0d32ff..474a3fdf87d 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum @@ -39,7 +39,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index db3a78ea806..e444fbdfd46 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: tflint-ruleset-blueprint/go.mod cache-dependency-path: tflint-ruleset-blueprint/go.sum @@ -47,7 +47,7 @@ jobs: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: 'tflint-ruleset-blueprint/go.mod' - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 8574df92282..12845991389 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 3fbacaa5de8..27277ddcd3c 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: 'tflint-ruleset-blueprint/go.mod' - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index bf0c41f6677..5b11305f322 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum From 192f42a40e3fbd6474011ab37e721cd52b67d0c3 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 2 May 2024 07:50:14 -0700 Subject: [PATCH 0956/1371] chore: update project_cleanup to v4 (#2309) --- infra/terraform/test-org/test-cleanup/cleanup.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index 714b9dc96df..06488f5c9a8 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -23,7 +23,7 @@ module "scheduler-app-engine" { module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 3.0" + version = "~> 4.0" job_schedule = "17 * * * *" max_project_age_in_hours = "6" From 0557df5dbeb9b0d75e71df719580a816cd3ec86d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 2 May 2024 17:02:12 +0200 Subject: [PATCH 0957/1371] chore(deps): update actions/checkout action to v4.1.4 (#2311) --- .github/workflows/go-tflint-plugin.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index e444fbdfd46..c676986c98c 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -45,7 +45,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Set up Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 27277ddcd3c..8008e6881f9 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -17,7 +17,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Set up Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: From 553589c5ca282d8a5dfe6a36fe5f914d4aae0c9a Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 2 May 2024 11:03:15 -0500 Subject: [PATCH 0958/1371] feat: expose plan stage via test cli (#2313) --- cli/Makefile | 2 +- cli/bptest/cmd.go | 2 +- cli/bptest/convert.go | 6 +++--- cli/bptest/stages.go | 9 +++++---- cli/bptest/stages_test.go | 3 ++- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 958d719c41d..8191ad3feee 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.2.20 +VERSION=v1.3.20 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index fed6ffa6f9a..466ed432df9 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -25,7 +25,7 @@ func init() { Cmd.AddCommand(initCmd) Cmd.PersistentFlags().StringVar(&flags.testDir, "test-dir", "", "Path to directory containing integration tests (default is computed by scanning current working directory)") - runCmd.Flags().StringVar(&flags.testStage, "stage", "", "Test stage to execute (default is running all stages in order - init, apply, verify, teardown)") + runCmd.Flags().StringVar(&flags.testStage, "stage", "", "Test stage to execute (default is running all stages in order - init, plan, apply, verify, teardown)") runCmd.Flags().StringToStringVar(&flags.setupVars, "setup-var", map[string]string{}, "Specify outputs from the setup phase (useful with --stage=verify)") } diff --git a/cli/bptest/convert.go b/cli/bptest/convert.go index 5854fac827e..3b126879c5b 100644 --- a/cli/bptest/convert.go +++ b/cli/bptest/convert.go @@ -29,9 +29,9 @@ var ( templateFiles embed.FS kitchenCFTStageMapping = map[string]string{ "create": stages[0], - "converge": stages[1], - "verify": stages[2], - "destroy": stages[3], + "converge": stages[2], + "verify": stages[3], + "destroy": stages[4], } ) diff --git a/cli/bptest/stages.go b/cli/bptest/stages.go index 7301f5c02f3..ea57e60786d 100644 --- a/cli/bptest/stages.go +++ b/cli/bptest/stages.go @@ -2,13 +2,14 @@ package bptest import "fmt" -var stages = []string{"init", "apply", "verify", "teardown"} +var stages = []string{"init", "plan", "apply", "verify", "teardown"} var stagesWithAlias = map[string][]string{ stages[0]: {"create"}, - stages[1]: {"converge"}, - stages[2]: {}, - stages[3]: {"destroy"}, + stages[1]: {}, + stages[2]: {"converge"}, + stages[3]: {}, + stages[4]: {"destroy"}, } // validateAndGetStage validates given stage and resolves to stage name if an alias is provided diff --git a/cli/bptest/stages_test.go b/cli/bptest/stages_test.go index 33197cd1103..d870663b621 100644 --- a/cli/bptest/stages_test.go +++ b/cli/bptest/stages_test.go @@ -1,6 +1,7 @@ package bptest import ( + "fmt" "testing" "github.com/stretchr/testify/assert" @@ -31,7 +32,7 @@ func TestValidateAndGetStage(t *testing.T) { { name: "invalid name", stage: "foo", - errMsg: "invalid stage name foo - one of [\"init\" \"apply\" \"verify\" \"teardown\"] expected", + errMsg: fmt.Sprintf("invalid stage name foo - one of %+q expected", stages), }, { name: "empty (all stages)", From 8f300ef7c0e208fe92fc91cdce33552ce4b78cbb Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Thu, 2 May 2024 11:08:41 -0500 Subject: [PATCH 0959/1371] chore: fix cli semver (#2315) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 8191ad3feee..7ad5238b4f3 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.3.20 +VERSION=v1.3.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From bd14618296524793477b2d18d619e3b3d6b23a18 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Fri, 3 May 2024 01:48:51 -0400 Subject: [PATCH 0960/1371] chore: Offboard JSS 11.1 and 11.2 (#2308) --- .../terraform/test-org/ci-triggers/locals.tf | 48 +++++++++---------- infra/terraform/test-org/org/locals.tf | 22 --------- 2 files changed, 23 insertions(+), 47 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 59a36e5c7d9..170f2f2b14c 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -27,31 +27,29 @@ locals { ] # custom mapping of the form name => repo_name used for overriding `terraform-google` prefix custom_repo_mapping = { - "cloud-foundation-training" = "cloud-foundation-training", - "example-foundation-app" = "terraform-example-foundation-app", - "anthos-samples" = "anthos-samples" - "cloud-deployment-gce" = "terraform-cloud-deployment-gce", - "cloud-deployment-gke" = "terraform-cloud-deployment-gke", - "docs-samples" = "terraform-docs-samples" - "dynamic-python-webapp" = "terraform-dynamic-python-webapp" - "dynamic-javascript-webapp" = "terraform-dynamic-javascript-webapp" - "deploy-java-multizone" = "terraform-example-deploy-java-multizone" - "ecommerce-microservices" = "terraform-ecommerce-microservices-on-gke" - "deploy-java-gke" = "terraform-example-deploy-java-gke" - "large-data-sharing-java-app" = "terraform-large-data-sharing-java-webapp" - "large-data-sharing-go-app" = "terraform-large-data-sharing-golang-webapp" - "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" - "ml-image-annotation-gcf" = "terraform-ml-image-annotation-gcf" - "genai-doc-summarization" = "terraform-genai-doc-summarization" - "genai-knowledge-base" = "terraform-genai-knowledge-base" - "secured-notebook" = "notebooks-blueprint-security" - "sdw-onprem-ingest" = "terraform-google-secured-data-warehouse-onprem-ingest" - "pubsub-golang-app" = "terraform-pubsub-integration-golang" - "pubsub-java-app" = "terraform-pubsub-integration-java" - "genai-rag" = "terraform-genai-rag" - "cloud-client-api" = "terraform-cloud-client-api" - "dataanalytics-eventdriven" = "terraform-dataanalytics-eventdriven" - "kms-solutions" = "kms-solutions" + "cloud-foundation-training" = "cloud-foundation-training", + "example-foundation-app" = "terraform-example-foundation-app", + "anthos-samples" = "anthos-samples" + "cloud-deployment-gce" = "terraform-cloud-deployment-gce", + "cloud-deployment-gke" = "terraform-cloud-deployment-gke", + "docs-samples" = "terraform-docs-samples" + "dynamic-python-webapp" = "terraform-dynamic-python-webapp" + "dynamic-javascript-webapp" = "terraform-dynamic-javascript-webapp" + "deploy-java-multizone" = "terraform-example-deploy-java-multizone" + "ecommerce-microservices" = "terraform-ecommerce-microservices-on-gke" + "deploy-java-gke" = "terraform-example-deploy-java-gke" + "java-dynamic-point-of-sale" = "terraform-example-java-dynamic-point-of-sale" + "ml-image-annotation-gcf" = "terraform-ml-image-annotation-gcf" + "genai-doc-summarization" = "terraform-genai-doc-summarization" + "genai-knowledge-base" = "terraform-genai-knowledge-base" + "secured-notebook" = "notebooks-blueprint-security" + "sdw-onprem-ingest" = "terraform-google-secured-data-warehouse-onprem-ingest" + "pubsub-golang-app" = "terraform-pubsub-integration-golang" + "pubsub-java-app" = "terraform-pubsub-integration-java" + "genai-rag" = "terraform-genai-rag" + "cloud-client-api" = "terraform-cloud-client-api" + "dataanalytics-eventdriven" = "terraform-dataanalytics-eventdriven" + "kms-solutions" = "kms-solutions" } # example foundation has custom test modes example_foundation = { "terraform-example-foundation" = data.terraform_remote_state.org.outputs.ci_repos_folders["example-foundation"] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 67032360340..87bd5106096 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -690,28 +690,6 @@ locals { owners = ["dulacp"] topics = join(",", [local.common_topics.da, local.common_topics.e2e], ["marketing"]) }, - { - name = "terraform-large-data-sharing-java-webapp" - short_name = "large-data-sharing-java-app" - org = "GoogleCloudPlatform" - description = "Deploys a large data sharing Java web app" - groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] - enable_periodic = true - lint_env = { - ENABLE_BPMETADATA = "1" - } - }, - { - name = "terraform-large-data-sharing-golang-webapp" - short_name = "large-data-sharing-go-app" - org = "GoogleCloudPlatform" - description = "Deploys a large data sharing Golang web app" - groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] - enable_periodic = true - lint_env = { - ENABLE_BPMETADATA = "1" - } - }, { name = "terraform-ml-image-annotation-gcf" short_name = "ml-image-annotation-gcf" From 9a55539215cfc63d829cf63b5ce8ccefc6252123 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 3 May 2024 09:33:45 -0700 Subject: [PATCH 0961/1371] chore(CI): ignore example.tfvars and helpers/foundation-deployer in example-foundation-int tests (#2318) --- infra/terraform/test-org/ci-triggers/triggers.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 62f1b5ef72e..72101eed614 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -422,7 +422,7 @@ resource "google_cloudbuild_trigger" "example_foundations_int_trigger" { } filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", "**/*.png", ".gitignore", ".github/**"] + ignored_files = ["**/*.md", "**/*.png", ".gitignore", ".github/**", "**/*.example.tfvars", "helpers/foundation-deployer/**"] } From 57c367d622041459d49664e75fa91d99e69df983 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 3 May 2024 20:35:35 +0200 Subject: [PATCH 0962/1371] fix(deps): update go modules (#2296) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 12 ++++++------ cli/go.sum | 12 ++++++++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 7ad5238b4f3..f99485aed92 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.3.0 +VERSION=v1.3.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 3daa52d2fa2..8002753e428 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -27,7 +27,7 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.63.0 + github.com/open-policy-agent/opa v0.64.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 @@ -37,7 +37,7 @@ require ( golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f golang.org/x/oauth2 v0.19.0 golang.org/x/text v0.14.0 - google.golang.org/api v0.174.0 + google.golang.org/api v0.176.1 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -46,8 +46,8 @@ require ( require ( cloud.google.com/go v0.112.1 // indirect cloud.google.com/go/accesscontextmanager v1.8.6 // indirect - cloud.google.com/go/auth v0.2.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.0 // indirect + cloud.google.com/go/auth v0.3.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect cloud.google.com/go/iam v1.1.7 // indirect @@ -137,7 +137,7 @@ require ( github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.19.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect @@ -189,7 +189,7 @@ require ( google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect - google.golang.org/grpc v1.63.0 // indirect + google.golang.org/grpc v1.63.2 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 6c038f3e667..cb8c4eb66c6 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -11,8 +11,12 @@ cloud.google.com/go/asset v1.19.0 h1:D1fzO6/fdMkGA7Lxrv/in2ahVm59DAe1EMMaDt33v9k cloud.google.com/go/asset v1.19.0/go.mod h1:eW/d/F3g1Pr07U7nNUhj2AI1e1AVgs3+j8inYS5QBl0= cloud.google.com/go/auth v0.2.0 h1:y6oTcpMSbOcXbwYgUUrvI+mrQ2xbrcdpPgtVbCGTLTk= cloud.google.com/go/auth v0.2.0/go.mod h1:+yb+oy3/P0geX6DLKlqiGHARGR6EX2GRtYCzWOCQSbU= +cloud.google.com/go/auth v0.3.0 h1:PRyzEpGfx/Z9e8+lHsbkoUVXD0gnu4MNmm7Gp8TQNIs= +cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w= cloud.google.com/go/auth/oauth2adapt v0.2.0 h1:FR8zevgQwu+8CqiOT5r6xCmJa3pJC/wdXEEPF1OkNhA= cloud.google.com/go/auth/oauth2adapt v0.2.0/go.mod h1:AfqujpDAlTfLfeCIl/HJZZlIxD8+nJoZ5e0x1IxGq5k= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= @@ -422,6 +426,8 @@ github.com/open-policy-agent/opa v0.62.1 h1:UcxBQ0fe6NEjkYc775j4PWoUFFhx4f6yXKIK github.com/open-policy-agent/opa v0.62.1/go.mod h1:YqiSIIuvKwyomtnnXkJvy0E3KtVKbavjPJ/hNMuOmeM= github.com/open-policy-agent/opa v0.63.0 h1:ztNNste1v8kH0/vJMJNquE45lRvqwrM5mY9Ctr9xIXw= github.com/open-policy-agent/opa v0.63.0/go.mod h1:9VQPqEfoB2N//AToTxzZ1pVTVPUoF2Mhd64szzjWPpU= +github.com/open-policy-agent/opa v0.64.0 h1:2g0JTt78zxhFaoBmZViY4UXvtOlzBjhhrnyrIxkm+tI= +github.com/open-policy-agent/opa v0.64.0/go.mod h1:j4VeLorVpKipnkQ2TDjWshEuV3cvP/rHzQhYaraUXZY= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -443,6 +449,8 @@ github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdU github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= @@ -724,6 +732,8 @@ google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= google.golang.org/api v0.174.0 h1:zB1BWl7ocxfTea2aQ9mgdzXjnfPySllpPOskdnO+q34= google.golang.org/api v0.174.0/go.mod h1:aC7tB6j0HR1Nl0ni5ghpx6iLasmAX78Zkh/wgxAAjLg= +google.golang.org/api v0.176.1 h1:DJSXnV6An+NhJ1J+GWtoF2nHEuqB1VNoTfnIbjNvwD4= +google.golang.org/api v0.176.1/go.mod h1:j2MaSDYcvYV1lkZ1+SMW4IeF90SrEyFA+tluDYWRrFg= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -754,6 +764,8 @@ google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8= google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= 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= From 044c3ca90693449fd05d1e7e58229cbf263db864 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 3 May 2024 17:02:22 -0500 Subject: [PATCH 0963/1371] feat: bundle tflint plugin in devtools (#2319) --- infra/build/Makefile | 4 ++- infra/build/developer-tools/Dockerfile | 3 +++ .../build/install_tflint_plugin.sh | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100755 infra/build/developer-tools/build/install_tflint_plugin.sh diff --git a/infra/build/Makefile b/infra/build/Makefile index 9641bba65df..bf18e55c348 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -44,6 +44,7 @@ TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.6 +TFLINT_BP_PLUGIN := 0.1.0 # For developer-tools-krm # Updated by Update Tooling Workflow @@ -56,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') @@ -92,6 +93,7 @@ build-image-developer-tools: --build-arg TINKEY_VERSION=${TINKEY_VERSION} \ --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ --build-arg MODULE_SWAPPER_VERSION=${MODULE_SWAPPER_VERSION} \ + --build-arg TFLINT_BP_PLUGIN=${TFLINT_BP_PLUGIN} \ -t ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools" docker build \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 036a66f57d3..5032fc1d9b0 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -114,6 +114,9 @@ RUN /build/install_kubectl.sh ${KUBECTL_VERSION} ARG MODULE_SWAPPER_VERSION RUN /build/install_module-swapper.sh ${MODULE_SWAPPER_VERSION} +ARG TFLINT_BP_PLUGIN +RUN /build/install_tflint_plugin.sh ${TFLINT_BP_PLUGIN} + WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . diff --git a/infra/build/developer-tools/build/install_tflint_plugin.sh b/infra/build/developer-tools/build/install_tflint_plugin.sh new file mode 100755 index 00000000000..65db2b99b00 --- /dev/null +++ b/infra/build/developer-tools/build/install_tflint_plugin.sh @@ -0,0 +1,27 @@ +#! /bin/bash +# Copyright 2024 Google LLC +# +# 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. + +set -e +set -u + +mkdir -p /build/install_tflint_plugin +cd /build/install_tflint_plugin + +TFLINT_BP_PLUGIN=$1 +wget -nv "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/tflint-ruleset-blueprint%2Fv${TFLINT_BP_PLUGIN}/tflint-ruleset-blueprint_linux_amd64.zip" +unzip -q tflint-ruleset-blueprint_linux_amd64.zip +mkdir -p ~/.tflint.d/plugins +install -o 0 -g 0 -m 0755 tflint-ruleset-blueprint ~/.tflint.d/plugins +rm -rf /build/install_tflint_plugin From 9aea71df3e7c41ec210077203b721aedc3fdaa99 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 May 2024 17:21:28 +0200 Subject: [PATCH 0964/1371] fix(deps): update go modules (#2320) --- cli/Makefile | 2 +- cli/go.mod | 6 +++--- cli/go.sum | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index f99485aed92..2a9a6245379 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.3.1 +VERSION=v1.3.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 8002753e428..95cd50ba2da 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -27,7 +27,7 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.64.0 + github.com/open-policy-agent/opa v0.64.1 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 @@ -35,8 +35,8 @@ require ( github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f - golang.org/x/oauth2 v0.19.0 - golang.org/x/text v0.14.0 + golang.org/x/oauth2 v0.20.0 + golang.org/x/text v0.15.0 google.golang.org/api v0.176.1 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v3 v3.0.1 diff --git a/cli/go.sum b/cli/go.sum index cb8c4eb66c6..ca1b08814fa 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -428,6 +428,8 @@ github.com/open-policy-agent/opa v0.63.0 h1:ztNNste1v8kH0/vJMJNquE45lRvqwrM5mY9C github.com/open-policy-agent/opa v0.63.0/go.mod h1:9VQPqEfoB2N//AToTxzZ1pVTVPUoF2Mhd64szzjWPpU= github.com/open-policy-agent/opa v0.64.0 h1:2g0JTt78zxhFaoBmZViY4UXvtOlzBjhhrnyrIxkm+tI= github.com/open-policy-agent/opa v0.64.0/go.mod h1:j4VeLorVpKipnkQ2TDjWshEuV3cvP/rHzQhYaraUXZY= +github.com/open-policy-agent/opa v0.64.1 h1:n8IJTYlFWzqiOYx+JiawbErVxiqAyXohovcZxYbskxQ= +github.com/open-policy-agent/opa v0.64.1/go.mod h1:j4VeLorVpKipnkQ2TDjWshEuV3cvP/rHzQhYaraUXZY= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -638,6 +640,8 @@ golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -700,6 +704,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From 50eaf64969dc3f1e144948760006ee0210242bb2 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 6 May 2024 18:16:23 -0700 Subject: [PATCH 0965/1371] chore: Update Tools to 1.20.3 (#2294) --- infra/build/Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index bf18e55c348..3b740384a35 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.8.2 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 473.0.0 +CLOUD_SDK_VERSION := 474.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,21 +25,21 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.57.8 +TERRAGRUNT_VERSION := 0.58.3 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.1 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.49 +KPT_VERSION := 1.0.0-beta.50 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.2.20 +CFT_CLI_VERSION := 1.3.2 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.9 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.50.3 +TFLINT_VERSION := 0.51.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow @@ -48,7 +48,7 @@ TFLINT_BP_PLUGIN := 0.1.0 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.57.2 +GOLANGCI_VERSION := 1.58.0 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 84fe2fd070f6613c21b8229d5fc372ac16a6b02c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 7 May 2024 03:32:37 +0200 Subject: [PATCH 0966/1371] chore(deps): update golangci/golangci-lint docker tag to v1.58.0 (#2324) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 2a9a6245379..50b55c27def 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.57.2 +GOLANGCI_VERSION := 1.58.0 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 18785cd1334c5291f3f89384febda101f15d33b1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 7 May 2024 15:11:52 +0200 Subject: [PATCH 0967/1371] chore(deps): update golangci/golangci-lint docker tag to v1.58.0 (#2325) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index eb925155cd5..e76f9844bde 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.57.2 +GOLANGCI_VERSION := 1.58.0 .PHONY: docker_go_lint docker_go_lint: From ed1a52792bcf28dbdbaa314907181b3fe544c36a Mon Sep 17 00:00:00 2001 From: Imran Nayer Date: Tue, 7 May 2024 11:48:44 -0500 Subject: [PATCH 0968/1371] chore: add Vertex AI module repo (#2326) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 87bd5106096..e0ce75e1721 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -76,7 +76,7 @@ locals { name = "cloud-foundation-training" org = "terraform-google-modules" description = "" - owners = ["marine675", "zefdelgadillo"] + owners = ["marine675"] }, { name = "terraform-google-healthcare" @@ -572,6 +572,13 @@ locals { owners = ["anaik91"] topics = join(",", [local.common_topics.serverless, local.common_topics.devtools]) }, + { + name = "terraform-google-vertex-ai" + org = "GoogleCloudPlatform" + description = "Deploy Vertex AI resources" + owners = ["imrannayer"] + topics = join(",", [local.common_topics.compute]) + }, { name = "terraform-google-cloud-armor" org = "GoogleCloudPlatform" From d64d9d324daa11fd8f95f914ef834cb09c4f3124 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 7 May 2024 22:32:24 +0200 Subject: [PATCH 0969/1371] fix(deps): update module google.golang.org/api to v0.177.0 (#2330) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 100b6801884..c1f3181fc18 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.8 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.176.1 + google.golang.org/api v0.177.0 ) require ( @@ -40,8 +40,8 @@ require ( golang.org/x/sys v0.19.0 // indirect golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 // indirect google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/protobuf v1.34.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index d4cde3fc9e3..0df73f79688 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -137,8 +137,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.176.1 h1:DJSXnV6An+NhJ1J+GWtoF2nHEuqB1VNoTfnIbjNvwD4= -google.golang.org/api v0.176.1/go.mod h1:j2MaSDYcvYV1lkZ1+SMW4IeF90SrEyFA+tluDYWRrFg= +google.golang.org/api v0.177.0 h1:8a0p/BbPa65GlqGWtUKxot4p0TV8OGOfyTjtmkXNXmk= +google.golang.org/api v0.177.0/go.mod h1:srbhue4MLjkjbkux5p3dw/ocYOSZTaIEvf7bCOnFQDw= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -147,8 +147,8 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 h1:DujSIu+2tC9Ht0aPNA7jgj23Iq8Ewi5sgkQ++wdvonE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -165,8 +165,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= +google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 957c935a8ac38390da6ace358ae52967b6f636d9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 8 May 2024 00:10:28 +0200 Subject: [PATCH 0970/1371] fix(deps): update go modules (#2331) --- infra/utils/fbf/go.mod | 10 +++++----- infra/utils/fbf/go.sum | 24 ++++++++++++------------ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index c1f3181fc18..4eaaf40d8ae 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,9 +4,9 @@ go 1.21 require ( github.com/briandowns/spinner v1.23.0 - github.com/jedib0t/go-pretty/v6 v6.5.8 + github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.177.0 + google.golang.org/api v0.178.0 ) require ( @@ -23,7 +23,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.3 // indirect + github.com/googleapis/gax-go/v2 v2.12.4 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect @@ -36,12 +36,12 @@ require ( go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/net v0.24.0 // indirect - golang.org/x/oauth2 v0.19.0 // indirect + golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 // indirect google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.34.0 // indirect + google.golang.org/protobuf v1.34.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 0df73f79688..31658ba97f9 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -58,10 +58,10 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= -github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= -github.com/jedib0t/go-pretty/v6 v6.5.8 h1:8BCzJdSvUbaDuRba4YVh+SKMGcAAKdkcF3SVFbrHAtQ= -github.com/jedib0t/go-pretty/v6 v6.5.8/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= +github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= +github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= +github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -110,8 +110,8 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= -golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -137,16 +137,16 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.177.0 h1:8a0p/BbPa65GlqGWtUKxot4p0TV8OGOfyTjtmkXNXmk= -google.golang.org/api v0.177.0/go.mod h1:srbhue4MLjkjbkux5p3dw/ocYOSZTaIEvf7bCOnFQDw= +google.golang.org/api v0.178.0 h1:yoW/QMI4bRVCHF+NWOTa4cL8MoWL3Jnuc7FlcFF91Ok= +google.golang.org/api v0.178.0/go.mod h1:84/k2v8DFpDRebpGcooklv/lais3MEfqpaBLA12gl2U= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be h1:Zz7rLWqp0ApfsR/l7+zSHhY3PMiH2xqgxlfYfAfNpoU= +google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be/go.mod h1:dvdCTIoAGbkWbcIKBniID56/7XHTt6WfxXNMxuziJ+w= google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 h1:DujSIu+2tC9Ht0aPNA7jgj23Iq8Ewi5sgkQ++wdvonE= google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -165,8 +165,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= -google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 9d40fd6dce2f43cef53683434cd7f636772d7cbc Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Wed, 8 May 2024 09:54:30 -0700 Subject: [PATCH 0971/1371] fix: add sjswerdlow as owner on sap (#2332) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index e0ce75e1721..8ec35fd59f3 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -458,6 +458,7 @@ locals { org = "terraform-google-modules" description = "Deploys SAP products" topics = local.common_topics.compute + owners = ["sjswerdlow"] }, { name = "terraform-google-scheduled-function" From 2a2857c3cbe822a1364f6234776f77bfc14bc2ea Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 8 May 2024 19:03:53 -0700 Subject: [PATCH 0972/1371] feat(tft): log TF version (#2323) --- infra/blueprint-test/pkg/tft/terraform.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 23f26a7917f..0cbf3145083 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -36,6 +36,7 @@ import ( "github.com/hashicorp/terraform-config-inspect/tfconfig" "github.com/mitchellh/go-testing-interface" "github.com/stretchr/testify/assert" + "github.com/tidwall/gjson" ) const ( @@ -259,7 +260,8 @@ func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { tft.setupOutputOverrides[k] = v } - tft.logger.Logf(tft.t, "Running tests TF configs in %s", tft.tfDir) + tftVersion := gjson.Get(terraform.RunTerraformCommand(tft.t, tft.GetTFOptions(), "version", "-json"), "terraform_version") + tft.logger.Logf(tft.t, "Running tests TF configs in %s with version %s", tft.tfDir, tftVersion) return tft } From f199bfc4fa81d7aea2410b533000532681e42912 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 8 May 2024 19:40:48 -0700 Subject: [PATCH 0973/1371] chore(CI): cache lint tf provider cache (#2329) --- .github/workflows/lint.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 03c8e381bb5..c4e2484c9b5 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -1,4 +1,4 @@ -# Copyright 2023 Google LLC +# Copyright 2023-2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,6 +32,14 @@ jobs: runs-on: 'ubuntu-latest' steps: - uses: 'actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b' # v4.1.4 + - name: Cache lint-infra-terraform + id: cache-lint-infra-terraform + uses: 'actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9' # v4.0.2 + with: + path: | + ${{ github.workspace }}/test/integration/tmp/.terraform + key: cache-lint-infra-terraform-${{ github.run_id }} + restore-keys: cache-lint-infra-terraform - run: docker run --rm -e EXCLUDE_LINT_DIRS -e EXCLUDE_HEADER_CHECK -v ${{ github.workspace }}:/workspace gcr.io/cloud-foundation-cicd/cft/developer-tools:1 /usr/local/bin/test_lint.sh env: EXCLUDE_LINT_DIRS: '\./cli|\./tflint-ruleset-blueprint|\./infra/build|\./infra/utils|\./infra/blueprint-test|\./infra/concourse|\./infra/modules|\./reports|\./.github|\./docs|\./infra/module-swapper' From 86652a8917e17b82e6c7ebf1bc04ee8dbe92a640 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 9 May 2024 17:13:26 +0200 Subject: [PATCH 0974/1371] chore(deps): update actions/checkout action to v4.1.5 (#2333) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 7110c240de4..4708996a743 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1f48a589b41..1a5883f372f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index f67329a0cfa..ac3a73786fc 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index fabb2501f77..6a4ba8b2032 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 474a3fdf87d..e00cbf48980 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index c676986c98c..8741d6b6f85 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: tflint-ruleset-blueprint/go.mod @@ -45,7 +45,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - name: Set up Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index c4e2484c9b5..f47d57fee9e 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b' # v4.1.4 + - uses: 'actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b' # v4.1.5 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform uses: 'actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9' # v4.0.2 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 1d3d149bf61..082d6ed3f5c 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 12845991389..6bac9a408bd 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: cli/go.mod diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 8008e6881f9..0c1b1a5f398 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -17,7 +17,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - name: Set up Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 38d7ccb3801..e4bdbd11014 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 with: persist-credentials: false diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 9f650f68e4f..3115485e2da 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 5b11305f322..d811f25a0a2 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 6f7519e25a8..2ac996322ee 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -31,7 +31,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 with: ref: master - name: Update Tools From 291351522f1b4914a95029377d6970d30dc4c20f Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 10 May 2024 10:51:57 -0700 Subject: [PATCH 0975/1371] chore(CI): update pre-commit hooks (#2336) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fb08eb9474d..4b2740f5148 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,11 +7,11 @@ exclude: | )$ repos: - repo: https://github.com/renovatebot/pre-commit-hooks - rev: 37.162.1 + rev: 37.353.0 hooks: - id: renovate-config-validator - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-yaml - id: end-of-file-fixer From 56db57e071f5d2e3686b21b714b78ddd4c1db82a Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Fri, 10 May 2024 14:14:14 -0400 Subject: [PATCH 0976/1371] fix(dev-tools): Ignore .jar files in lint checks (#2338) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- .../developer-tools/build/scripts/task_helper_functions.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 3b740384a35..e3539de409b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 24c536c8b3c..d6562cfaf35 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -75,6 +75,7 @@ find_files() { ".*/.*\.jpeg" ".*/.*\.svg" ".*/.*\.ico" + ".*/.*\.jar" ".*/.*\.parquet" ".*/.*\.pb" ".*/.*\.index" @@ -236,7 +237,7 @@ check_whitespace() { local rc echo "Checking for trailing whitespace" find_files . -print \ - | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip|ico|parquet|pb|index)$' \ + | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip|ico|jar|parquet|pb|index)$' \ | compat_xargs grep -H -n '[[:blank:]]$' rc=$? if [[ ${rc} -eq 0 ]]; then @@ -247,7 +248,7 @@ check_whitespace() { fi echo "Checking for missing newline at end of file" find_files . -print \ - | grep -v -E '\.(png|gz|tfvars|mp4|zip|ico|parquet|pb|index)$' \ + | grep -v -E '\.(png|gz|tfvars|mp4|zip|ico|jar|parquet|pb|index)$' \ | compat_xargs check_eof_newline return $((rc+$?)) } From 619ac010f194fefb4122fb1fd8457b3542daf479 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 10 May 2024 11:44:23 -0700 Subject: [PATCH 0977/1371] fix(dev-tools): add empty TF_PLUGIN_CACHE_DIR (#2337) --- infra/build/developer-tools/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 5032fc1d9b0..4eb9d409936 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -155,6 +155,7 @@ ADD ./build/home/.tflint.module.hcl /root/tflint/.tflint.module.hcl # Set TF cache dir ENV TF_PLUGIN_CACHE_DIR /workspace/test/integration/tmp/.terraform RUN mkdir -p ${TF_PLUGIN_CACHE_DIR} +RUN touch ${TF_PLUGIN_CACHE_DIR}/.empty # Add GO_PATH TO PATH ENV GO_PATH="/root/go" From ac60bc9612a4325526dc735255d0bb5ab53630d5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 10 May 2024 22:18:57 +0200 Subject: [PATCH 0978/1371] fix(deps): update module google.golang.org/api to v0.180.0 (#2347) --- infra/utils/fbf/go.mod | 14 +++++++------- infra/utils/fbf/go.sum | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 4eaaf40d8ae..fc926861a94 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.178.0 + google.golang.org/api v0.180.0 ) require ( - cloud.google.com/go/auth v0.3.0 // indirect + cloud.google.com/go/auth v0.4.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -34,12 +34,12 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/crypto v0.22.0 // indirect - golang.org/x/net v0.24.0 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/net v0.25.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/term v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/term v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 // indirect google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.34.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 31658ba97f9..119fd9d214a 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.3.0 h1:PRyzEpGfx/Z9e8+lHsbkoUVXD0gnu4MNmm7Gp8TQNIs= -cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w= +cloud.google.com/go/auth v0.4.1 h1:Z7YNIhlWRtrnKlZke7z3GMqzvuYzdc2z98F9D1NV5Hg= +cloud.google.com/go/auth v0.4.1/go.mod h1:QVBuVEKpCn4Zp58hzRGvL0tjRGU0YqdRTdCHM1IHnro= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= @@ -95,8 +95,8 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -107,8 +107,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -123,22 +123,22 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= -golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -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/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.178.0 h1:yoW/QMI4bRVCHF+NWOTa4cL8MoWL3Jnuc7FlcFF91Ok= -google.golang.org/api v0.178.0/go.mod h1:84/k2v8DFpDRebpGcooklv/lais3MEfqpaBLA12gl2U= +google.golang.org/api v0.180.0 h1:M2D87Yo0rGBPWpo1orwfCLehUUL6E7/TYe5gvMQWDh4= +google.golang.org/api v0.180.0/go.mod h1:51AiyoEg1MJPSZ9zvklA8VnRILPXxn1iVen9v25XHAE= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= From 91f85f2c5f1a96de7f47ceffb6ae1d7c89a20abd Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 10 May 2024 14:12:30 -0700 Subject: [PATCH 0979/1371] chore(CI): enable tags in test-cleanup (#2349) --- .../terraform/test-org/test-cleanup/cleanup.tf | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index 06488f5c9a8..151bbd86623 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC + * Copyright 2019-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,11 +25,12 @@ module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" version = "~> 4.0" - job_schedule = "17 * * * *" - max_project_age_in_hours = "6" - organization_id = local.org_id - project_id = module.cft-manager-project.project_id - region = local.region - target_excluded_labels = local.exclude_labels - target_folder_id = local.cleanup_folder + job_schedule = "17 * * * *" + max_project_age_in_hours = "6" + organization_id = local.org_id + project_id = module.cft-manager-project.project_id + region = local.region + target_excluded_labels = local.exclude_labels + target_folder_id = local.cleanup_folder + clean_up_org_level_tag_keys = true } From 530e869bb4976edcdf8362504b293ef4a2a769d1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 10 May 2024 23:21:30 +0200 Subject: [PATCH 0980/1371] chore(deps): update ossf/scorecard-action action to v2.3.3 (#2345) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e4bdbd11014..ca129e6defb 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 with: results_file: results.sarif results_format: sarif From 048f70529c098a48cb9bef8144e21cfb7084d7de Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 10 May 2024 23:29:49 +0200 Subject: [PATCH 0981/1371] chore(deps): update github/codeql-action action to v3.25.4 (#2340) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1a5883f372f..d64e2b52efd 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/init@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/autobuild@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/analyze@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ca129e6defb..95b6d979e3a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/upload-sarif@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 with: sarif_file: results.sarif From 2b3eb10893b607ae072e3495be85e0d74ddc3941 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 10 May 2024 23:33:49 +0200 Subject: [PATCH 0982/1371] chore(deps): update golangci/golangci-lint-action action to v6 (#2348) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 6a4ba8b2032..9fda9cceae0 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -38,7 +38,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@9d1e0624a798bb64f6c3cea93db47765312263dc # v5.1.0 + uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64 # v6.0.1 with: version: latest working-directory: ${{ matrix.folder }} diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index e00cbf48980..b792ab73bbd 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -44,7 +44,7 @@ jobs: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum - name: golangci-lint - uses: golangci/golangci-lint-action@9d1e0624a798bb64f6c3cea93db47765312263dc # v5.1.0 + uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64 # v6.0.1 with: version: latest working-directory: 'infra/module-swapper' From dee44b3a06a8f8de745a56e065cd04db34d061ec Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 10 May 2024 23:38:29 +0200 Subject: [PATCH 0983/1371] chore(deps): update goreleaser/goreleaser-action action to v5.1.0 (#2346) --- .github/workflows/go-tflint-plugin.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 8741d6b6f85..4ce16c51548 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -53,7 +53,7 @@ jobs: - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser - run: echo "${{env.GORELEASER_CURRENT_TAG}}" - name: Run GoReleaser - uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 + uses: goreleaser/goreleaser-action@5742e2a039330cbb23ebf35f046f814d4c6ff811 # v5.1.0 with: version: latest args: release --clean --skip=validate,publish diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 0c1b1a5f398..86ac59bba10 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -25,7 +25,7 @@ jobs: - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV - run: echo "${{env.GORELEASER_CURRENT_TAG}}" - name: Run GoReleaser - uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 + uses: goreleaser/goreleaser-action@5742e2a039330cbb23ebf35f046f814d4c6ff811 # v5.1.0 with: version: latest args: release --clean --skip=validate,publish From cc7b9fdac94baf09cd65c77360ceb892c4eb2179 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 10 May 2024 23:44:32 +0200 Subject: [PATCH 0984/1371] chore(deps): update golangci/golangci-lint docker tag to v1.58.1 (#2341) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 50b55c27def..69f048fe7b9 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.58.0 +GOLANGCI_VERSION := 1.58.1 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 6f81c6c92cf769b0dfc36495f67a879634931aa8 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 10 May 2024 14:53:07 -0700 Subject: [PATCH 0985/1371] chore: Update Tools to 1.20.5 (#2328) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index e3539de409b..ab3511f360b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.8.2 +TERRAFORM_VERSION := 1.8.3 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 474.0.0 +CLOUD_SDK_VERSION := 475.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.58.3 +TERRAGRUNT_VERSION := 0.58.4 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.1 # Updated by Update Tooling Workflow @@ -48,7 +48,7 @@ TFLINT_BP_PLUGIN := 0.1.0 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.58.0 +GOLANGCI_VERSION := 1.58.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 899a03ceeef77e4a767bdda09496e39fbbc29f38 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 11 May 2024 00:41:32 +0200 Subject: [PATCH 0986/1371] fix(deps): update module github.com/hashicorp/terraform-config-inspect to v0.0.0-20240509232506-4708120f8f30 (#2344) --- infra/blueprint-test/go.mod | 7 ++++--- infra/blueprint-test/go.sum | 18 ++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 79d966700a4..f95d2896825 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -6,7 +6,7 @@ require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.46.14 - github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 + github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 github.com/hashicorp/terraform-json v0.21.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 @@ -55,7 +55,7 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f // indirect - github.com/hashicorp/hcl/v2 v2.18.0 // indirect + github.com/hashicorp/hcl/v2 v2.20.1 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/jinzhu/copier v0.4.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect @@ -82,7 +82,7 @@ require ( github.com/urfave/cli/v2 v2.25.7 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - github.com/zclconf/go-cty v1.14.1 // indirect + github.com/zclconf/go-cty v1.14.4 // indirect go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/net v0.23.0 // indirect @@ -92,6 +92,7 @@ require ( golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect + golang.org/x/tools v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.138.0 // indirect google.golang.org/appengine v1.6.8 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index a7aace22828..05069459494 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -397,10 +397,10 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= -github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= -github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= -github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= +github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= +github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 h1:0qwr2oZy9mIIJMWh7W9NTHLWGMbEF5KEQ+QqM9hym34= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -432,8 +432,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -480,8 +478,6 @@ github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDN github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -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/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -527,8 +523,10 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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= -github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= -github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= +github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= From d6a34596ab0d974d9feeec9a82868c74e0592140 Mon Sep 17 00:00:00 2001 From: Leonardo Romanini <97033241+romanini-ciandt@users.noreply.github.com> Date: Mon, 13 May 2024 18:36:25 -0300 Subject: [PATCH 0987/1371] feat(dev-tools): Add openssl into image (#2352) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/build/developer-tools/Dockerfile | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index ab3511f360b..5c2d8929cc5 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 4eb9d409936..dceb5381e30 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -45,6 +45,7 @@ RUN apk upgrade --no-cache && \ python3-dev \ musl-dev \ openssh \ + openssl \ python3 \ py-pip \ ca-certificates \ From 4a02b48f96eb774c0e726e37c7f90b807954b30f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 14 May 2024 00:15:56 +0200 Subject: [PATCH 0988/1371] chore(deps): update golangci/golangci-lint docker tag to v1.58.1 (#2342) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index e76f9844bde..6f40131742d 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.58.0 +GOLANGCI_VERSION := 1.58.1 .PHONY: docker_go_lint docker_go_lint: From 9be77fafd4ee8240fd7a9c19c6d99c3402f38736 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 14 May 2024 08:57:02 -0700 Subject: [PATCH 0989/1371] chore(CI): enable cai and scc cleanup (#2350) --- .../test-org/test-cleanup/.terraform.lock.hcl | 135 +++++++++--------- .../test-org/test-cleanup/cleanup.tf | 8 +- .../test-org/test-cleanup/project.tf | 2 +- 3 files changed, 76 insertions(+), 69 deletions(-) diff --git a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl index 2bf44d8d28a..ef61418eb6c 100644 --- a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl +++ b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl @@ -2,62 +2,62 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/archive" { - version = "2.4.1" + version = "2.4.2" constraints = ">= 1.2.0, >= 1.3.0, < 3.0.0" hashes = [ - "h1:JgIo+nNySG8svjXevfoTRi0jzgHbLMDrnr55WBeRupw=", - "zh:00240c042740d18d6ba545b211ff7ed5a9e8490d30be3f865e71dba90d7a34cf", - "zh:230c285beafaffd8d60da3446157b95f8fb43b359ba94b09214c1822bf310c3d", - "zh:726672a0e61a1d39695ce5e330aa3e6caa97f2a9438cf8125360e80f4cb52fa5", + "h1:G4v6F6Lhqlo3EKGBKEK/kJRhNcQiRrhEdUiVpBHKHOA=", + "zh:08faed7c9f42d82bc3d406d0d9d4971e2d1c2d34eae268ad211b8aca57b7f758", + "zh:3564112ed2d097d7e0672378044a69b06642c326f6f1584d81c7cdd32ebf3a08", + "zh:53cd9afd223c15828c1916e68cb728d2be1cbccb9545568d6c2b122d0bac5102", + "zh:5ae4e41e3a1ce9d40b6458218a85bbde44f21723943982bca4a3b8bb7c103670", + "zh:5b65499218b315b96e95c5d3463ea6d7c66245b59461217c99eaa1611891cd2c", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:7bc8f4a4fc7059ec01e767246df7937603dbc6ec49cb3eedffe6ecb68dbe9cb4", - "zh:800d898ce8ac96b244746c5a41f4107bd3c883fe6093d9a972a28b138ac02c4e", - "zh:9a8ea216af3840af48c08ef5ed998606c556b15be30d7b42c89a62df54285903", - "zh:b9905d0ac55b61ea78ecf0e6b07d54a9863a9f02e249d0d492e68cfcede0d89f", - "zh:c822495ba01ab7cee66c892f941097971c3be122a6200d556f462a751d446df8", - "zh:e05c31f2f4dca9eaada2726d16d2ffb03d6441b4eb55547b93d62d81383cd0ef", - "zh:ec14c68ca5d881bac73dbbd298f0ca84444001a81d473f51e36c4e29df040983", - "zh:ed32ebccb20b21c112f01d73d138ba5ada28cf8ede175441738a30711c79119a", + "zh:7f45b35a8330bebd184c2545a41782ff58240ed6ba947274d9881dd5da44b02e", + "zh:87e67891033214e55cfead1391d68e6a3bf37993b7607753237e82aa3250bb71", + "zh:de3590d14037ad81fc5cedf7cfa44614a92452d7b39676289b704a962050bc5e", + "zh:e7e6f2ea567f2dbb3baa81c6203be69f9cd6aeeb01204fd93e3cf181e099b610", + "zh:fd24d03c89a7702628c2e5a3c732c0dede56fa75a08da4a1efe17b5f881c88e2", + "zh:febf4b7b5f3ff2adff0573ef6361f09b6638105111644bdebc0e4f575373935f", ] } provider "registry.terraform.io/hashicorp/google" { - version = "5.10.0" - constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 4.78.0, < 6.0.0" + version = "5.28.0" + constraints = ">= 3.38.0, >= 3.43.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 4.78.0, >= 5.22.0, < 6.0.0" hashes = [ - "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", - "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", - "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", - "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", - "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", - "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", - "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", - "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", - "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", - "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", + "h1:SDulaRuZPQeHs5MZHs4oGhstoqeaTZxN4nprxx2rWa8=", + "zh:00fb6916789d56c8801f95624fd30aca05f47918e6fab5c05fab7214cdecfc65", + "zh:204cc06787b8c55d2db744d020edf98bfdf294ed0a5d0fdc272afc0a9568a102", + "zh:3ccc7337801b6ebc8362a3cf4ae8eafacd235ee2389c84a58a4a7a6878159687", + "zh:6a91cf54404112651a2cffa2d59a140f1b1dbff7ff12e875f154deaebd969500", + "zh:6ade8996b11edb74afdf2b1b6c39c817e7f62bf2e899b1831bbc740457780456", + "zh:8691ad4285bf41a054a715b0cb9eb32c919512dded081437314b506fbe1ad0d2", + "zh:9c2ff4ca96299f65a6d23bb08d2a5f7005bef180fe5c9a3b5b3577f381d8bc8a", + "zh:cda256ff269b7ae289059e93f4d0ed071689c3fe58dcf6b3b68011523fc37c2d", + "zh:e38dc30b722922240c54ad2164a80505698933220afb2cde86b654cfc8e28900", + "zh:e3f8c05fc51a85508d78e3c5269d1b1c8425fe7c35f2659532d19be8da18c0ce", + "zh:e4894e409fcfbe0148e325ec9d342b4f3cf86b313e165628d20f90311e117a1d", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", - "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.10.0" - constraints = ">= 3.38.0, >= 3.43.0, >= 3.50.0, >= 4.11.0, >= 4.28.0, < 6.0.0" + version = "5.28.0" + constraints = ">= 3.38.0, >= 3.43.0, >= 4.11.0, >= 5.22.0, < 6.0.0" hashes = [ - "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", - "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", - "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", - "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", - "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", - "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", - "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", - "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", - "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", - "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", - "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", + "h1:QgPoqVrzhueqvDedrc0KzlMzJwfL1SjvT9Ah5/+OYYI=", + "zh:2cfb876235f0fbad55ef38389ab61daa3bee0b98d63b7131f4809775e2f4f824", + "zh:5bd207c00b53200fc6046ac61bafd96fc2fa36c0fe796a261c3958921238121d", + "zh:603dc0c7728e3c159bd6383eb08e0fe2a2fa4f872671102fbecb956279eed6a4", + "zh:6346401ade115f53eee296077ae9740f7ed790a59292fe01a7d11c4d4ff10f93", + "zh:661dfc3bd710291657ae4e8c472c78ae6025a477c125634952c27401ad675e61", + "zh:8257afe599ef95f3821d4f993349b661192b7e4ff2d0df32e2e62f8ba3a4c306", + "zh:c7903e573367b8d6b6cc389d2eef34536191900dd198b904a41fd1d682bf863f", + "zh:d7f061c59156489da24d80ca72b28330792e981d25b245a2e15825317c85b41c", + "zh:e6c67b4390a01cb97610dcc8cbfad8ab6225fbc6e2b5d3d02ebd0f6d8f66341e", + "zh:eb1db70a359bbf32d26e9fd621320b68791700636fded4120e82c3d9de8a18c9", + "zh:f270d24e135fc38e655f0be05b3223ab29b937fbd9f2f01e9e72dffc67e7a660", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } @@ -82,40 +82,41 @@ provider "registry.terraform.io/hashicorp/null" { } provider "registry.terraform.io/hashicorp/random" { - version = "3.6.0" + version = "3.6.1" constraints = ">= 2.1.0, >= 2.2.0, < 4.0.0" hashes = [ - "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=", - "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d", - "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211", - "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829", - "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d", - "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055", + "h1:1OlP753r4lOKlBprL0HdZGWerm5DCabD5Mli8k8lWAg=", + "zh:2a0ec154e39911f19c8214acd6241e469157489fc56b6c739f45fbed5896a176", + "zh:57f4e553224a5e849c99131f5e5294be3a7adcabe2d867d8a4fef8d0976e0e52", + "zh:58f09948c608e601bd9d0a9e47dcb78e2b2c13b4bda4d8f097d09152ea9e91c5", + "zh:5c2a297146ed6fb3fe934c800e78380f700f49ff24dbb5fb5463134948e3a65f", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17", - "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21", - "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839", - "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0", - "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c", - "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e", + "zh:7ce41e26f0603e31cdac849085fc99e5cd5b3b73414c6c6d955c0ceb249b593f", + "zh:8c9e8d30c4ef08ee8bcc4294dbf3c2115cd7d9049c6ba21422bd3471d92faf8a", + "zh:93e91be717a7ffbd6410120eb925ebb8658cc8f563de35a8b53804d33c51c8b0", + "zh:982542e921970d727ce10ed64795bf36c4dec77a5db0741d4665230d12250a0d", + "zh:b9d1873f14d6033e216510ef541c891f44d249464f13cc07d3f782d09c7d18de", + "zh:cfe27faa0bc9556391c8803ade135a5856c34a3fe85b9ae3bdd515013c0c87c1", + "zh:e4aabf3184bbb556b89e4b195eab1514c86a2914dd01c23ad9813ec17e863a8a", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.10.0" + version = "0.11.1" + constraints = ">= 0.5.0" hashes = [ - "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", - "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", - "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", - "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", - "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", + "h1:IkDriv5C9G+kQQ+mP+8QGIahwKgbQcw1/mzh9U6q+ZI=", + "zh:19a393db736ec4fd024d098d55aefaef07056c37a448ece3b55b3f5f4c2c7e4a", + "zh:227fa1e221de2907f37be78d40c06ca6a6f7b243a1ec33ade014dfaf6d92cd9c", + "zh:29970fecbf4a3ca23bacbb05d6b90cdd33dd379f90059fe39e08289951502d9f", + "zh:65024596f22f10e7dcb5e0e4a75277f275b529daa0bc0daf34ca7901c678ab88", + "zh:694d080cb5e3bf5ef08c7409208d061c135a4f5f4cdc93ea8607860995264b2e", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", - "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", - "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", - "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", - "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", - "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", - "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", + "zh:b29d15d13e1b3412e6a4e1627d378dbd102659132f7488f64017dd6b6d5216d3", + "zh:bb79f4cae9f8c17c73998edc54aa16c2130a03227f7f4e71fc6ac87e230575ec", + "zh:ceccf80e95929d97f62dcf1bb3c7c7553d5757b2d9e7d222518722fc934f7ad5", + "zh:f40e638336527490e294d9c938ae55919069e6987e85a80506784ba90348792a", + "zh:f99ef33b1629a3b2278201142a3011a8489e66d92da832a5b99e442204de18fb", + "zh:fded14754ea46fdecc62a52cd970126420d4cd190e598cb61190b4724a727edb", ] } diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index 151bbd86623..b75282d14e7 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -23,7 +23,7 @@ module "scheduler-app-engine" { module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 4.0" + version = "~> 4.1" job_schedule = "17 * * * *" max_project_age_in_hours = "6" @@ -33,4 +33,10 @@ module "projects_cleaner" { target_excluded_labels = local.exclude_labels target_folder_id = local.cleanup_folder clean_up_org_level_tag_keys = true + + clean_up_org_level_cai_feeds = true + target_included_feeds = [".*/feeds/fd-cai-monitoring-.*"] + + clean_up_org_level_scc_notifications = true + target_included_scc_notifications = [".*/notificationConfigs/scc-notify-.*"] } diff --git a/infra/terraform/test-org/test-cleanup/project.tf b/infra/terraform/test-org/test-cleanup/project.tf index d6256c46223..54750cbe407 100644 --- a/infra/terraform/test-org/test-cleanup/project.tf +++ b/infra/terraform/test-org/test-cleanup/project.tf @@ -16,7 +16,7 @@ module "cft-manager-project" { source = "terraform-google-modules/project-factory/google" - version = "~> 14.0" + version = "~> 15.0" name = "cft-project-manager" random_project_id = true From 95efa6c3940c7297b4ae387866295205f0028e21 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 14 May 2024 11:28:51 -0700 Subject: [PATCH 0990/1371] chore(CI): enable SC and CAI APIs in cft-project-manager (#2355) --- infra/terraform/test-org/test-cleanup/project.tf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/infra/terraform/test-org/test-cleanup/project.tf b/infra/terraform/test-org/test-cleanup/project.tf index 54750cbe407..c35dc075898 100644 --- a/infra/terraform/test-org/test-cleanup/project.tf +++ b/infra/terraform/test-org/test-cleanup/project.tf @@ -34,6 +34,8 @@ module "cft-manager-project" { "storage-api.googleapis.com", "serviceusage.googleapis.com", "storage-component.googleapis.com", - "appengine.googleapis.com" + "appengine.googleapis.com", + "securitycenter.googleapis.com", + "cloudasset.googleapis.com" ] } From 1653110c06d0f0802bc7dc51f0d835a721520018 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 15 May 2024 13:42:53 -0700 Subject: [PATCH 0991/1371] feat(tft): add GetJsonOutput() (#2356) --- infra/blueprint-test/pkg/tft/terraform.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 0cbf3145083..aefda05a86f 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -360,6 +360,8 @@ func (b *TFBlueprintTest) GetStringOutput(name string) string { // GetStringOutputList returns TF output for a given key as list. // It fails test if given key does not output a primitive. +// +// Deprecated: Use GetJsonOutput instead. func (b *TFBlueprintTest) GetStringOutputList(name string) []string { // allow only parallel reads as Terraform plugin cache isn't concurrent safe rUnlockFn := b.rLockFn() @@ -367,6 +369,21 @@ func (b *TFBlueprintTest) GetStringOutputList(name string) []string { return terraform.OutputList(b.t, b.GetTFOptions(), name) } +// GetJsonOutput returns all TF output as gjson.Result. +// It fails test on invalid JSON. +func (b *TFBlueprintTest) GetJsonOutput() gjson.Result { + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + rUnlockFn := b.rLockFn() + defer rUnlockFn() + + jsonString := terraform.OutputJson(b.t, b.GetTFOptions(), "") + if !gjson.Valid(jsonString) { + b.t.Fatalf("Invalid JSON: %s", jsonString) + } + + return gjson.Parse(jsonString) +} + // GetTFSetupOutputListVal returns TF output from setup for a given key as list. // It fails test if given key does not output a list type. func (b *TFBlueprintTest) GetTFSetupOutputListVal(key string) []string { From a061e37e15dabb3dd93c3ea430505b961bae74c4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 16 May 2024 00:11:27 +0200 Subject: [PATCH 0992/1371] fix(deps): update dependency nokogiri to v1.16.5 [security] (#2354) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/build/developer-tools/build/data/Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 5c2d8929cc5..2943b4d76cd 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 24ecd90df17..3774b8088b7 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -457,7 +457,7 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) mini_mime (1.1.5) - mini_portile2 (2.8.5) + mini_portile2 (2.8.6) minitest (5.19.0) mixlib-config (3.0.27) tomlrb @@ -488,7 +488,7 @@ GEM net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) netrc (0.11.0) - nokogiri (1.16.2) + nokogiri (1.16.5) mini_portile2 (~> 2.8.2) racc (~> 1.4) nori (2.6.0) From 63536b5979de707043ed890fe6d4d43d224480b3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 16 May 2024 20:24:52 +0200 Subject: [PATCH 0993/1371] fix(deps): update module github.com/hashicorp/terraform-json to v0.22.0 (#2359) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index f95d2896825..f126c7769e0 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,7 +7,7 @@ require ( github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.46.14 github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 - github.com/hashicorp/terraform-json v0.21.0 + github.com/hashicorp/terraform-json v0.22.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.9.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 05069459494..f4e19870b3c 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -401,8 +401,8 @@ github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdx github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 h1:0qwr2oZy9mIIJMWh7W9NTHLWGMbEF5KEQ+QqM9hym34= github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= -github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= -github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= +github.com/hashicorp/terraform-json v0.22.0 h1:cTZejr05cbovFmQ05MeJ43CPrn/+1hUBG7KDTcRwBc0= +github.com/hashicorp/terraform-json v0.22.0/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= From cff0fcb1e1c90711321c99fe1d65af08a0759e2e Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Thu, 16 May 2024 13:58:38 -0500 Subject: [PATCH 0994/1371] feat: update EAB owners (#2360) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 8ec35fd59f3..6a9f1b68ea6 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -825,7 +825,7 @@ locals { name = "terraform-google-enterprise-application" org = "GoogleCloudPlatform" description = "Deploy an enterprise developer platform on Google Cloud" - owners = ["gtsorbo"] + owners = ["gtsorbo", "erictune", "yliaog", "sleighton2022", "apeabody"] topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) enable_periodic = true }, From d22270cee9835b563125cfda6210d0cf4cdab061 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 16 May 2024 21:03:40 +0200 Subject: [PATCH 0995/1371] chore(deps): update github/codeql-action action to v3.25.5 (#2357) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d64e2b52efd..8a3f84cbf48 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/init@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/autobuild@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/analyze@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 95b6d979e3a..4030dbc4825 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/upload-sarif@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 with: sarif_file: results.sarif From c523d94423e3187f9414a5968146116f680a5178 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 16 May 2024 21:05:04 +0200 Subject: [PATCH 0996/1371] chore(deps): update google-github-actions/auth action to v2.1.3 (#2358) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 4708996a743..fb76fee3a65 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@55bd3a7c6e2ae7cf1877fd1ccb9d54c0503c457c' # v2.1.2 + uses: 'google-github-actions/auth@71fee32a0bb7e97b4d33d548e7d957010649d8fa' # v2.1.3 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 6bac9a408bd..7af74a6f52c 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@55bd3a7c6e2ae7cf1877fd1ccb9d54c0503c457c' # v2.1.2 + uses: 'google-github-actions/auth@71fee32a0bb7e97b4d33d548e7d957010649d8fa' # v2.1.3 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From b1cb2922b59952d64fcb0d0ebe6999a1ed711289 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 17 May 2024 23:55:36 +0200 Subject: [PATCH 0997/1371] chore(deps): update actions/checkout action to v4.1.6 (#2362) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index fb76fee3a65..a60b41d6edb 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 8a3f84cbf48..bd224778977 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index ac3a73786fc..52e669e1675 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 9fda9cceae0..16570112a79 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index b792ab73bbd..dec0b47ca79 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 4ce16c51548..6d978173d0c 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: tflint-ruleset-blueprint/go.mod @@ -45,7 +45,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Set up Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index f47d57fee9e..13383016a14 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b' # v4.1.5 + - uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' # v4.1.6 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform uses: 'actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9' # v4.0.2 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 082d6ed3f5c..2e8e01002c3 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 7af74a6f52c..b4dc2ce691d 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: cli/go.mod diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 86ac59bba10..9ab50da7907 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -17,7 +17,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Set up Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 4030dbc4825..ae6c9aaa239 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 3115485e2da..693279bfd6f 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index d811f25a0a2..354e02e7927 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 2ac996322ee..08b393e2901 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -31,7 +31,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: ref: master - name: Update Tools From f9684bbabece53d8744b2fb6fcc80778ff08f358 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 19 May 2024 17:32:06 +0200 Subject: [PATCH 0998/1371] fix(deps): update module github.com/hashicorp/terraform-json to v0.22.1 (#2366) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index f126c7769e0..40384ec840f 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,7 +7,7 @@ require ( github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.46.14 github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 - github.com/hashicorp/terraform-json v0.22.0 + github.com/hashicorp/terraform-json v0.22.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.9.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index f4e19870b3c..1b95eaf395f 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -401,8 +401,8 @@ github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdx github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 h1:0qwr2oZy9mIIJMWh7W9NTHLWGMbEF5KEQ+QqM9hym34= github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= -github.com/hashicorp/terraform-json v0.22.0 h1:cTZejr05cbovFmQ05MeJ43CPrn/+1hUBG7KDTcRwBc0= -github.com/hashicorp/terraform-json v0.22.0/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= +github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= +github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= From e8f9459a6f69c8f54b45a840b27378fd2813380a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 20 May 2024 20:08:35 +0200 Subject: [PATCH 0999/1371] fix(fbf): update module google.golang.org/api to v0.181.0 (#2363) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index fc926861a94..7166b487df7 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.180.0 + google.golang.org/api v0.181.0 ) require ( @@ -40,7 +40,7 @@ require ( golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.34.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 119fd9d214a..49503090357 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -137,8 +137,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.180.0 h1:M2D87Yo0rGBPWpo1orwfCLehUUL6E7/TYe5gvMQWDh4= -google.golang.org/api v0.180.0/go.mod h1:51AiyoEg1MJPSZ9zvklA8VnRILPXxn1iVen9v25XHAE= +google.golang.org/api v0.181.0 h1:rPdjwnWgiPPOJx3IcSAQ2III5aX5tCer6wMpa/xmZi4= +google.golang.org/api v0.181.0/go.mod h1:MnQ+M0CFsfUwA5beZ+g/vCBCPXvtmZwRz2qzZk8ih1k= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -147,8 +147,8 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be h1:Zz7rLWqp0ApfsR/l7+zSHhY3PMiH2xqgxlfYfAfNpoU= google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be/go.mod h1:dvdCTIoAGbkWbcIKBniID56/7XHTt6WfxXNMxuziJ+w= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 h1:DujSIu+2tC9Ht0aPNA7jgj23Iq8Ewi5sgkQ++wdvonE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From b5122b3ce15b36b7eddf2cf56a438fae5598e0de Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 20 May 2024 12:24:51 -0700 Subject: [PATCH 1000/1371] chore(master): release blueprint-test 0.15.0 (#2334) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 10c50be5158..3badb8e63b8 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.14.1", + "infra/blueprint-test": "0.15.0", "infra/module-swapper": "0.4.6", "tflint-ruleset-blueprint": "0.1.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 0d59470b4fa..2e6f3345dd0 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.15.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.14.1...infra/blueprint-test/v0.15.0) (2024-05-20) + + +### Features + +* **tft:** add GetJsonOutput() ([#2356](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2356)) ([1653110](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1653110c06d0f0802bc7dc51f0d835a721520018)) +* **tft:** log TF version ([#2323](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2323)) ([2a2857c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/2a2857c3cbe822a1364f6234776f77bfc14bc2ea)) + + +### Bug Fixes + +* **deps:** update module github.com/hashicorp/terraform-config-inspect to v0.0.0-20240509232506-4708120f8f30 ([#2344](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2344)) ([899a03c](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/899a03ceeef77e4a767bdda09496e39fbbc29f38)) +* **deps:** update module github.com/hashicorp/terraform-json to v0.22.0 ([#2359](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2359)) ([63536b5](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/63536b5979de707043ed890fe6d4d43d224480b3)) +* **deps:** update module github.com/hashicorp/terraform-json to v0.22.1 ([#2366](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2366)) ([f9684bb](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/f9684bbabece53d8744b2fb6fcc80778ff08f358)) + ## [0.14.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.14.0...infra/blueprint-test/v0.14.1) (2024-04-30) From ac88316bae1b5dcaa52c4c8ac501c09560683ac2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 20 May 2024 21:27:11 +0200 Subject: [PATCH 1001/1371] chore(deps): update github/codeql-action action to v3.25.6 (#2368) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index bd224778977..739fa63af8e 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 + uses: github/codeql-action/init@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,7 +68,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 + uses: github/codeql-action/autobuild@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -81,6 +81,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 + uses: github/codeql-action/analyze@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ae6c9aaa239..837cad62056 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 + uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: sarif_file: results.sarif From 2d351500ea57122c07f8883f7e91523ec18ad937 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 May 2024 20:23:17 +0000 Subject: [PATCH 1002/1371] fix(deps): bump rexml from 3.2.6 to 3.2.8 in /infra/build/developer-tools/build/data (#2361) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- infra/build/Makefile | 2 +- infra/build/developer-tools/build/data/Gemfile.lock | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 2943b4d76cd..f105d2e2223 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 3774b8088b7..79dd09e535e 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -523,7 +523,8 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.2) - rexml (3.2.6) + rexml (3.2.8) + strscan (>= 3.0.9) rspec (3.11.0) rspec-core (~> 3.11.0) rspec-expectations (~> 3.11.0) @@ -567,6 +568,7 @@ GEM unicode-display_width (>= 1.5, < 3.0) unicode_utils (~> 1.4) strings-ansi (0.2.0) + strscan (3.1.0) test-kitchen (3.5.0) bcrypt_pbkdf (~> 1.0) chef-utils (>= 16.4.35) From 92c8f5ea4216f07b911a4ee7f4655b846f417b70 Mon Sep 17 00:00:00 2001 From: sjswerdlow <109298351+sjswerdlow@users.noreply.github.com> Date: Mon, 20 May 2024 22:19:39 -0400 Subject: [PATCH 1003/1371] chore: Adding megela as an owner of the terraform-google-sap repository. (#2365) Co-authored-by: Andrew Peabody Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 6a9f1b68ea6..38f81c417ce 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -458,7 +458,7 @@ locals { org = "terraform-google-modules" description = "Deploys SAP products" topics = local.common_topics.compute - owners = ["sjswerdlow"] + owners = ["sjswerdlow", "megela"] }, { name = "terraform-google-scheduled-function" From 8210438fdb2ec2402b580469f4ebfa82572bca46 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 22 May 2024 19:57:06 +0200 Subject: [PATCH 1004/1371] fix(deps): update module sigs.k8s.io/kustomize/kyaml to v0.17.1 (#2372) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 40384ec840f..89cc325f174 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -14,7 +14,7 @@ require ( github.com/tidwall/gjson v1.17.1 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.17.0 - sigs.k8s.io/kustomize/kyaml v0.17.0 + sigs.k8s.io/kustomize/kyaml v0.17.1 ) require ( diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 1b95eaf395f..b48ece2313c 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -1090,8 +1090,8 @@ 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/kyaml v0.17.0 h1:G2bWs03V9Ur2PinHLzTUJ8Ded+30SzXZKiO92SRDs3c= -sigs.k8s.io/kustomize/kyaml v0.17.0/go.mod h1:6lxkYF1Cv9Ic8g/N7I86cvxNc5iinUo/P2vKsHNmpyE= +sigs.k8s.io/kustomize/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= +sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From 79e086fd4ed37253c99b385c5a6d07746c82eefa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 22 May 2024 22:13:24 +0200 Subject: [PATCH 1005/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.46.15 (#2374) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 89cc325f174..c6b8cd11553 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -5,7 +5,7 @@ go 1.21 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.46.14 + github.com/gruntwork-io/terratest v0.46.15 github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 github.com/hashicorp/terraform-json v0.22.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index b48ece2313c..9aadcaf55b2 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -378,8 +378,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.14 h1:nVT2JpOPLr7KbwOSNDP0GJffljH+Yu5833cwLorxRjs= -github.com/gruntwork-io/terratest v0.46.14/go.mod h1:L/IHbj195wnjfIFpZYWUhjwA3jm4O6ehO//xz7NxN8o= +github.com/gruntwork-io/terratest v0.46.15 h1:qfqjTFveymaqe7aAWn3LjlK0SwVGpRfoOut5ggNyfQ8= +github.com/gruntwork-io/terratest v0.46.15/go.mod h1:9bd22zAojjBBiYdsp+AR1iyl2iB6bRUVm2Yf1AFhfrA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From b4d0dd2ed40e87aa728fc4af1b18a69fda9e54b5 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 22 May 2024 21:13:53 -0700 Subject: [PATCH 1006/1371] chore(CI): enable clean_up_billing_sinks (#2371) --- infra/terraform/test-org/test-cleanup/cleanup.tf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index b75282d14e7..3d61ebcad52 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -16,14 +16,14 @@ module "scheduler-app-engine" { source = "terraform-google-modules/project-factory/google//modules/app_engine" - version = "~> 14.0" + version = "~> 15.0" location_id = local.app_location project_id = module.cft-manager-project.project_id } module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 4.1" + version = "~> 4.2" job_schedule = "17 * * * *" max_project_age_in_hours = "6" @@ -39,4 +39,8 @@ module "projects_cleaner" { clean_up_org_level_scc_notifications = true target_included_scc_notifications = [".*/notificationConfigs/scc-notify-.*"] + + clean_up_billing_sinks = true + target_billing_sinks = [".*/sinks/sk-c-logging-.*-billing-.*"] + billing_account = local.billing_account } From ae12f429d23f405bfc70e5dc33d6e0a21b2c50d2 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 22 May 2024 21:42:53 -0700 Subject: [PATCH 1007/1371] chore: Update Tools to 1.20.9 (#2351) --- infra/build/Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f105d2e2223..a02a935d0ec 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.8.3 +TERRAFORM_VERSION := 1.8.4 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 475.0.0 +CLOUD_SDK_VERSION := 477.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,9 +25,9 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.58.4 +TERRAGRUNT_VERSION := 0.58.9 # Updated by Update Tooling Workflow -KUSTOMIZE_VERSION := 5.4.1 +KUSTOMIZE_VERSION := 5.4.2 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.50 PROTOC_VERSION := 23.4 @@ -37,9 +37,9 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.3.2 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.28.9 +KUBECTL_VERSION := 1.28.10 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.51.0 +TFLINT_VERSION := 0.51.1 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.19 # Updated by Update Tooling Workflow @@ -48,7 +48,7 @@ TFLINT_BP_PLUGIN := 0.1.0 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.58.1 +GOLANGCI_VERSION := 1.58.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From f53a576023f4c7a91bfbb8550a126ee02bbdc873 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 22 May 2024 21:50:27 -0700 Subject: [PATCH 1008/1371] Revert "fix(dev-tools): add empty TF_PLUGIN_CACHE_DIR" (#2339) --- infra/build/developer-tools/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index dceb5381e30..f734c6b0685 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -156,7 +156,6 @@ ADD ./build/home/.tflint.module.hcl /root/tflint/.tflint.module.hcl # Set TF cache dir ENV TF_PLUGIN_CACHE_DIR /workspace/test/integration/tmp/.terraform RUN mkdir -p ${TF_PLUGIN_CACHE_DIR} -RUN touch ${TF_PLUGIN_CACHE_DIR}/.empty # Add GO_PATH TO PATH ENV GO_PATH="/root/go" From deb7629977a7e2894d3ce5e5329ea2647e740437 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 23 May 2024 08:54:54 -0700 Subject: [PATCH 1009/1371] chore: Update Tools to 1.21.0 (#2382) --- infra/build/Makefile | 4 ++-- infra/build/developer-tools/Dockerfile | 2 +- infra/build/developer-tools/build/data/Gemfile | 4 ++-- infra/build/developer-tools/build/data/Gemfile.lock | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index a02a935d0ec..f3fa386da5a 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -41,7 +41,7 @@ KUBECTL_VERSION := 1.28.10 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.51.1 TINKEY_VERSION := 1.7.0 -ALPINE_VERSION := 3.19 +ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.6 TFLINT_BP_PLUGIN := 0.1.0 @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index f734c6b0685..940ce257154 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -121,7 +121,7 @@ RUN /build/install_tflint_plugin.sh ${TFLINT_BP_PLUGIN} WORKDIR /opt/kitchen ADD ./build/data/Gemfile . ADD ./build/data/Gemfile.lock . -RUN gem install bundler:2.4.19 && bundle install --retry=10 +RUN gem install bundler:2.5.10 && bundle install --retry=10 COPY ./build/verify_boilerplate/ /build/verify_boilerplate/ RUN /build/install_verify_boilerplate.sh diff --git a/infra/build/developer-tools/build/data/Gemfile b/infra/build/developer-tools/build/data/Gemfile index 6e9f8a437ac..13093786583 100644 --- a/infra/build/developer-tools/build/data/Gemfile +++ b/infra/build/developer-tools/build/data/Gemfile @@ -16,5 +16,5 @@ source 'https://rubygems.org/' gem "kitchen-terraform", "~> 7.0" gem "kubeclient", "~> 4.11" gem "rest-client", "~> 2.1" -gem 'nokogiri', '~> 1.15' -ruby '~> 3.2.2' +gem 'nokogiri', '~> 1.16' +ruby '~> 3.3.1' diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index 79dd09e535e..de645bb9384 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -743,11 +743,11 @@ PLATFORMS DEPENDENCIES kitchen-terraform (~> 7.0) kubeclient (~> 4.11) - nokogiri (~> 1.15) + nokogiri (~> 1.16) rest-client (~> 2.1) RUBY VERSION - ruby 3.2.2p53 + ruby 3.3.1p55 BUNDLED WITH - 2.2.33 + 2.5.10 From 423b91c15a22e90b71e71bafd379562fd333b70d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 23 May 2024 18:48:57 +0200 Subject: [PATCH 1010/1371] chore(deps): update cft/developer-tools docker tag to v1.21 (#2384) --- infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index 738aabc3ef2..bd043d739e6 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -31,7 +31,7 @@ steps: dir: 'infra/blueprint-test' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.20' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.21' options: env: - 'TF_VAR_org_id=$_ORG_ID' From ba42f3bc9854dc2ee116419b272873c5c5411b98 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 23 May 2024 18:58:04 +0200 Subject: [PATCH 1011/1371] chore(deps): update cft/developer-tools docker tag to v1.21 (#2383) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 69f048fe7b9..64187525582 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.20 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd GOLANGCI_VERSION := 1.58.1 From d723e881bcfd3238f0df2404fc31f9f4826412f7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 23 May 2024 19:04:57 +0200 Subject: [PATCH 1012/1371] chore(deps): update golangci/golangci-lint docker tag to v1.58.2 (#2375) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 64187525582..93f1860b7a1 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.58.1 +GOLANGCI_VERSION := 1.58.2 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 2553b23469a57bf3b23800d06f0490439edaf3db Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 23 May 2024 20:47:56 +0200 Subject: [PATCH 1013/1371] chore(deps): update golangci/golangci-lint docker tag to v1.58.2 (#2376) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 6f40131742d..df69299abf5 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.58.1 +GOLANGCI_VERSION := 1.58.2 .PHONY: docker_go_lint docker_go_lint: From 99d34c279c8c7877ff9dac844c08b8d39cf30312 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 24 May 2024 08:59:45 -0700 Subject: [PATCH 1014/1371] fix(infra/modules): update for min tf v0.13 (#2370) --- .../modules/real_time_enforcer_roles/main.tf | 2 +- .../real_time_enforcer_roles/versions.tf | 19 +++++++++++++++++++ infra/modules/seed_project/variables.tf | 6 +++--- infra/modules/seed_project/versions.tf | 19 +++++++++++++++++++ 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 infra/modules/real_time_enforcer_roles/versions.tf create mode 100644 infra/modules/seed_project/versions.tf diff --git a/infra/modules/real_time_enforcer_roles/main.tf b/infra/modules/real_time_enforcer_roles/main.tf index ddbd02cf7b4..c5d2bc48158 100644 --- a/infra/modules/real_time_enforcer_roles/main.tf +++ b/infra/modules/real_time_enforcer_roles/main.tf @@ -58,7 +58,7 @@ resource "google_organization_iam_custom_role" "forseti-enforcer-writer" { resource "random_id" "prevent_destroy" { count = "${var.prevent_destroy ? 1 : 0}" byte_length = 8 - keepers { + keepers = { viewer = "${google_organization_iam_custom_role.forseti-enforcer-viewer.role_id}" writer = "${google_organization_iam_custom_role.forseti-enforcer-writer.role_id}" } diff --git a/infra/modules/real_time_enforcer_roles/versions.tf b/infra/modules/real_time_enforcer_roles/versions.tf new file mode 100644 index 00000000000..c19009fe619 --- /dev/null +++ b/infra/modules/real_time_enforcer_roles/versions.tf @@ -0,0 +1,19 @@ +/** + * Copyright 2024 Google LLC + * + * 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. + */ + +terraform { + required_version = ">= 0.13.7" +} diff --git a/infra/modules/seed_project/variables.tf b/infra/modules/seed_project/variables.tf index fd39f5f441e..13748608850 100644 --- a/infra/modules/seed_project/variables.tf +++ b/infra/modules/seed_project/variables.tf @@ -4,7 +4,7 @@ variable "username" { variable "owner_emails" { description = "A list of identities to add as owners on the project in the member format described here: https://cloud.google.com/iam/docs/overview#iam_policy" - type = "list" + type = list } variable "seed_project_services" { @@ -22,7 +22,7 @@ variable "seed_project_services" { "serviceusage.googleapis.com", ] - type = "list" + type = list } variable "seed_project_roles" { @@ -36,7 +36,7 @@ variable "seed_project_roles" { "roles/resourcemanager.projectIamAdmin", ] - type = "list" + type = list } variable "org_id" { diff --git a/infra/modules/seed_project/versions.tf b/infra/modules/seed_project/versions.tf new file mode 100644 index 00000000000..c19009fe619 --- /dev/null +++ b/infra/modules/seed_project/versions.tf @@ -0,0 +1,19 @@ +/** + * Copyright 2024 Google LLC + * + * 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. + */ + +terraform { + required_version = ">= 0.13.7" +} From 9f312196046d117f9cf8e1f12405d20144e7a91c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 24 May 2024 18:03:41 +0200 Subject: [PATCH 1015/1371] fix(deps): update go modules (#2322) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 54 ++++++++++++++++++++++++++-------------------------- cli/go.sum | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 28 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 93f1860b7a1..07c22613525 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.3.2 +VERSION=v1.3.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 95cd50ba2da..33cf9f1ead1 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,27 +3,27 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.21 require ( - cloud.google.com/go/asset v1.19.0 - cloud.google.com/go/storage v1.40.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0 + cloud.google.com/go/asset v1.19.1 + cloud.google.com/go/storage v1.41.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 - github.com/fatih/color v1.16.0 + github.com/fatih/color v1.17.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v60 v60.0.0 - github.com/google/go-github/v61 v61.0.0 + github.com/google/go-github/v62 v62.0.0 github.com/hashicorp/hcl/v2 v2.20.1 - github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 + github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.5.8 + github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 @@ -34,24 +34,24 @@ require ( github.com/spf13/viper v1.18.2 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 golang.org/x/oauth2 v0.20.0 golang.org/x/text v0.15.0 - google.golang.org/api v0.176.1 - google.golang.org/protobuf v1.33.0 + google.golang.org/api v0.181.0 + google.golang.org/protobuf v1.34.1 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go v0.113.0 // indirect cloud.google.com/go/accesscontextmanager v1.8.6 // indirect - cloud.google.com/go/auth v0.3.0 // indirect + cloud.google.com/go/auth v0.4.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute v1.24.0 // indirect + cloud.google.com/go/compute v1.25.1 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/iam v1.1.7 // indirect - cloud.google.com/go/longrunning v0.5.6 // indirect + cloud.google.com/go/iam v1.1.8 // indirect + cloud.google.com/go/longrunning v0.5.7 // indirect cloud.google.com/go/orgpolicy v1.12.2 // indirect cloud.google.com/go/osconfig v1.12.6 // indirect dario.cat/mergo v1.0.0 // indirect @@ -107,10 +107,10 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.3 // indirect + github.com/googleapis/gax-go/v2 v2.12.4 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/gruntwork-io/terratest v0.46.13 // indirect + github.com/gruntwork-io/terratest v0.46.14 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -163,7 +163,7 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect - github.com/zclconf/go-cty v1.14.0 // indirect + github.com/zclconf/go-cty v1.14.4 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect @@ -172,23 +172,23 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.22.0 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.22.0 // indirect + golang.org/x/crypto v0.23.0 // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.24.0 // indirect + golang.org/x/net v0.25.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/term v0.19.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/term v0.20.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.20.0 // indirect + golang.org/x/tools v0.21.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect + google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect google.golang.org/grpc v1.63.2 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index ca1b08814fa..8251aad6bfd 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,6 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go v0.113.0 h1:g3C70mn3lWfckKBiCVsAshabrDg01pQ0pnX1MNtnMkA= +cloud.google.com/go v0.113.0/go.mod h1:glEqlogERKYeePz6ZdkcLJ28Q2I6aERgDDErBg9GzO8= cloud.google.com/go/accesscontextmanager v1.8.5 h1:2GLNaNu9KRJhJBFTIVRoPwk6xE5mUDgD47abBq4Zp/I= cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= cloud.google.com/go/accesscontextmanager v1.8.6 h1:NipmPd3BCzwa/mr40SK8pWRkbzv9Th5Azhi4dBYazlM= @@ -9,16 +11,22 @@ cloud.google.com/go/asset v1.18.1 h1:+NpxL5L53VY91EoJTHeGGXSWEUllf2hhXpCyTnSrd3Q cloud.google.com/go/asset v1.18.1/go.mod h1:QXivw0mVqwrhZyuX6iqFbyfCdzYE9AFCJVG47Eh5dMM= cloud.google.com/go/asset v1.19.0 h1:D1fzO6/fdMkGA7Lxrv/in2ahVm59DAe1EMMaDt33v9k= cloud.google.com/go/asset v1.19.0/go.mod h1:eW/d/F3g1Pr07U7nNUhj2AI1e1AVgs3+j8inYS5QBl0= +cloud.google.com/go/asset v1.19.1 h1:mCqyoaDjDzaW1RqmmQtCJuawb9nca5bEu7HvVcpZDwg= +cloud.google.com/go/asset v1.19.1/go.mod h1:kGOS8DiCXv6wU/JWmHWCgaErtSZ6uN5noCy0YwVaGfs= cloud.google.com/go/auth v0.2.0 h1:y6oTcpMSbOcXbwYgUUrvI+mrQ2xbrcdpPgtVbCGTLTk= cloud.google.com/go/auth v0.2.0/go.mod h1:+yb+oy3/P0geX6DLKlqiGHARGR6EX2GRtYCzWOCQSbU= cloud.google.com/go/auth v0.3.0 h1:PRyzEpGfx/Z9e8+lHsbkoUVXD0gnu4MNmm7Gp8TQNIs= cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w= +cloud.google.com/go/auth v0.4.1 h1:Z7YNIhlWRtrnKlZke7z3GMqzvuYzdc2z98F9D1NV5Hg= +cloud.google.com/go/auth v0.4.1/go.mod h1:QVBuVEKpCn4Zp58hzRGvL0tjRGU0YqdRTdCHM1IHnro= cloud.google.com/go/auth/oauth2adapt v0.2.0 h1:FR8zevgQwu+8CqiOT5r6xCmJa3pJC/wdXEEPF1OkNhA= cloud.google.com/go/auth/oauth2adapt v0.2.0/go.mod h1:AfqujpDAlTfLfeCIl/HJZZlIxD8+nJoZ5e0x1IxGq5k= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= @@ -27,10 +35,14 @@ cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= cloud.google.com/go/iam v1.1.7 h1:z4VHOhwKLF/+UYXAJDFwGtNF0b6gjsW1Pk9Ml0U/IoM= cloud.google.com/go/iam v1.1.7/go.mod h1:J4PMPg8TtyurAUvSmPj8FF3EDgY1SPRZxcUGrn7WXGA= +cloud.google.com/go/iam v1.1.8 h1:r7umDwhj+BQyz0ScZMp4QrGXjSTI3ZINnpgU2nlB/K0= +cloud.google.com/go/iam v1.1.8/go.mod h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE= cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= cloud.google.com/go/longrunning v0.5.6 h1:xAe8+0YaWoCKr9t1+aWe+OeQgN/iJK1fEgZSXmjuEaE= cloud.google.com/go/longrunning v0.5.6/go.mod h1:vUaDrWYOMKRuhiv6JBnn49YxCPz2Ayn9GqyjaBT8/mA= +cloud.google.com/go/longrunning v0.5.7 h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU= +cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng= cloud.google.com/go/orgpolicy v1.12.1 h1:2JbXigqBJVp8Dx5dONUttFqewu4fP0p3pgOdIZAhpYU= cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= cloud.google.com/go/orgpolicy v1.12.2 h1:x9GttuUZXXeKcJgHSGxYoPn2hOJhhuaN5YYJKfAfmLo= @@ -43,6 +55,8 @@ cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dV cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= cloud.google.com/go/storage v1.40.0 h1:VEpDQV5CJxFmJ6ueWNsKxcr1QAYOXEgxDa+sBbJahPw= cloud.google.com/go/storage v1.40.0/go.mod h1:Rrj7/hKlG87BLqDJYtwR0fbPld8uJPbQ2ucUMY7Ir0g= +cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0= +cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -50,6 +64,8 @@ github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0. github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2/go.mod h1:uomWciQn6oAotW86ck0b0ix+sUeZHSXyS+IYAVFTPj8= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0 h1:db17HvmQPwTAq7/ex/w2DiNMA4oGUmTiHvScfPW/cRI= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0/go.mod h1:JSsaDg/h4yaiNNTNnrCjyL6/czHb/Oz/z+dzWVqJYBE= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.1 h1:xfCNVLZQAclUxmhICDwaOUJUw4OioNc1wIEfjtSgfCg= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.1/go.mod h1:AEQP8/V/hIp+SllHtmBV7ftuoQQ82eC032UdsnL3tnY= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -141,6 +157,8 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -291,6 +309,7 @@ github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= github.com/google/go-github/v61 v61.0.0/go.mod h1:0WR+KmsWX75G2EbpyGsGmradjo3IiciuI4BmdVCobQY= +github.com/google/go-github/v62 v62.0.0/go.mod h1:EMxeUqGJq2xRu9DYBMwel/mr7kZrzUOfQmmpYrZn2a4= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -310,12 +329,16 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= +github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= +github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/gruntwork-io/terratest v0.46.13 h1:FDaEoZ7DtkomV8pcwLdBV/VsytdjnPRqJkIriYEYwjs= github.com/gruntwork-io/terratest v0.46.13/go.mod h1:8sxu3Qup8TxtbzOHzq0MUrQffJj/G61/OwlsReaCwpo= +github.com/gruntwork-io/terratest v0.46.14 h1:nVT2JpOPLr7KbwOSNDP0GJffljH+Yu5833cwLorxRjs= +github.com/gruntwork-io/terratest v0.46.14/go.mod h1:L/IHbj195wnjfIFpZYWUhjwA3jm4O6ehO//xz7NxN8o= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -327,6 +350,8 @@ github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdx github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 h1:0qwr2oZy9mIIJMWh7W9NTHLWGMbEF5KEQ+QqM9hym34= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= @@ -348,6 +373,8 @@ github.com/jedib0t/go-pretty/v6 v6.5.6 h1:nKXVLqPfAwY7sWcYXdNZZZ2fjqDpAtj9UeWupg github.com/jedib0t/go-pretty/v6 v6.5.6/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= github.com/jedib0t/go-pretty/v6 v6.5.8 h1:8BCzJdSvUbaDuRba4YVh+SKMGcAAKdkcF3SVFbrHAtQ= github.com/jedib0t/go-pretty/v6 v6.5.8/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= +github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -550,6 +577,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= +github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= @@ -572,6 +601,8 @@ go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGX go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= @@ -599,11 +630,15 @@ golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -635,6 +670,8 @@ golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= @@ -683,6 +720,8 @@ golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -693,6 +732,8 @@ golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -726,6 +767,8 @@ golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= +golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= 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= @@ -740,6 +783,8 @@ google.golang.org/api v0.174.0 h1:zB1BWl7ocxfTea2aQ9mgdzXjnfPySllpPOskdnO+q34= google.golang.org/api v0.174.0/go.mod h1:aC7tB6j0HR1Nl0ni5ghpx6iLasmAX78Zkh/wgxAAjLg= google.golang.org/api v0.176.1 h1:DJSXnV6An+NhJ1J+GWtoF2nHEuqB1VNoTfnIbjNvwD4= google.golang.org/api v0.176.1/go.mod h1:j2MaSDYcvYV1lkZ1+SMW4IeF90SrEyFA+tluDYWRrFg= +google.golang.org/api v0.181.0 h1:rPdjwnWgiPPOJx3IcSAQ2III5aX5tCer6wMpa/xmZi4= +google.golang.org/api v0.181.0/go.mod h1:MnQ+M0CFsfUwA5beZ+g/vCBCPXvtmZwRz2qzZk8ih1k= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -751,16 +796,22 @@ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda h1:wu/KJm9KJwpfHWhkkZGohVC6KRrc1oJNr4jwtQMOQXw= +google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda/go.mod h1:g2LLCvCeCSir/JJSWosk19BR4NVxGqHUC6rxIRsd7Aw= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc= google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s= google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda h1:b6F6WIV4xHHD0FA4oIyzU6mHWg2WI2X1RBehwa5QN38= google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda/go.mod h1:AHcE/gZH76Bk/ROZhQphlRoWo5xKDEtz3eVEO1LfA8c= +google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae h1:AH34z6WAGVNkllnKs5raNq3yRq93VnjBG6rpfub/jYk= +google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae/go.mod h1:FfiGhwUm6CJviekPrc0oJ+7h29e+DmWU6UtjX0ZvI7Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A= google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -785,6 +836,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 05c5a971de8404ef938d536d4d59740468ab8059 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 24 May 2024 11:40:06 -0500 Subject: [PATCH 1016/1371] chore: bump go version (#2259) Co-authored-by: Awais Malik Co-authored-by: Andrew Peabody --- cli/go.mod | 2 +- go.work | 2 +- infra/blueprint-test/go.mod | 2 +- infra/module-swapper/go.mod | 2 +- infra/utils/fbf/go.mod | 2 +- tflint-ruleset-blueprint/go.mod | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 33cf9f1ead1..5c211c3b3cd 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli -go 1.21 +go 1.22 require ( cloud.google.com/go/asset v1.19.1 diff --git a/go.work b/go.work index 35f7c0899a7..e6835f5f8de 100644 --- a/go.work +++ b/go.work @@ -1,4 +1,4 @@ -go 1.21 +go 1.22 use ( ./cli diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index c6b8cd11553..9e42a97f887 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test -go 1.21 +go 1.22 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 821e9398215..0f578f58853 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/module-swapper -go 1.21 +go 1.22 require ( github.com/chainguard-dev/git-urls v1.0.2 diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 7166b487df7..399f9a9ae54 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/utils/fbf -go 1.21 +go 1.22 require ( github.com/briandowns/spinner v1.23.0 diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 7d4c439d0ab..d7ed251ca36 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -1,6 +1,6 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint -go 1.21 +go 1.22 require github.com/terraform-linters/tflint-plugin-sdk v0.18.0 From 1b041242842549ee0f01c9de1fa0ff55b42793bb Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 24 May 2024 10:48:07 -0700 Subject: [PATCH 1017/1371] fix(tft): plumb GetJsonOutput() key (#2385) --- infra/blueprint-test/go.mod | 2 ++ infra/blueprint-test/pkg/tft/terraform.go | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 9e42a97f887..d3e1a0ac935 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -2,6 +2,8 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.22 +toolchain go1.22.3 + require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index aefda05a86f..57df9b2f9a0 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -369,14 +369,15 @@ func (b *TFBlueprintTest) GetStringOutputList(name string) []string { return terraform.OutputList(b.t, b.GetTFOptions(), name) } -// GetJsonOutput returns all TF output as gjson.Result. +// GetJsonOutput returns TF output for key as gjson.Result. +// An empty string for key can be used to return all values // It fails test on invalid JSON. -func (b *TFBlueprintTest) GetJsonOutput() gjson.Result { +func (b *TFBlueprintTest) GetJsonOutput(key string) gjson.Result { // allow only parallel reads as Terraform plugin cache isn't concurrent safe rUnlockFn := b.rLockFn() defer rUnlockFn() - jsonString := terraform.OutputJson(b.t, b.GetTFOptions(), "") + jsonString := terraform.OutputJson(b.t, b.GetTFOptions(), key) if !gjson.Valid(jsonString) { b.t.Fatalf("Invalid JSON: %s", jsonString) } From e223acf3e76976a198bc20084e79df5f12a74df7 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 18:24:52 +0000 Subject: [PATCH 1018/1371] chore(master): release blueprint-test 0.15.1 (#2373) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3badb8e63b8..c9b760bf423 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.15.0", + "infra/blueprint-test": "0.15.1", "infra/module-swapper": "0.4.6", "tflint-ruleset-blueprint": "0.1.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 2e6f3345dd0..ca689284ede 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.15.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.15.0...infra/blueprint-test/v0.15.1) (2024-05-24) + + +### Bug Fixes + +* **deps:** update module github.com/gruntwork-io/terratest to v0.46.15 ([#2374](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2374)) ([79e086f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/79e086fd4ed37253c99b385c5a6d07746c82eefa)) +* **deps:** update module sigs.k8s.io/kustomize/kyaml to v0.17.1 ([#2372](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2372)) ([8210438](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8210438fdb2ec2402b580469f4ebfa82572bca46)) +* **tft:** plumb GetJsonOutput() key ([#2385](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2385)) ([1b04124](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1b041242842549ee0f01c9de1fa0ff55b42793bb)) + ## [0.15.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.14.1...infra/blueprint-test/v0.15.0) (2024-05-20) From a5c2e983316968b898b1db8f14279e58ff0a6b01 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 24 May 2024 12:15:10 -0700 Subject: [PATCH 1019/1371] chore(CI): install work.go version on gh runner (#2389) --- .github/workflows/codeql.yml | 6 ++++++ infra/blueprint-test/pkg/tft/terraform.go | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 739fa63af8e..b180a8a7bf3 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -52,6 +52,12 @@ jobs: - name: Checkout repository uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - name: Install Go + if: matrix.language == 'go' + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + with: + go-version-file: 'go.work' + # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 57df9b2f9a0..86df7ec1503 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -673,7 +673,7 @@ func (b *TFBlueprintTest) RedeployTest(n int, nVars map[int]map[string]interface } } -// rLockFn sets a read mutex lock, and returns the corresponding unlock function +// rLockFn sets a read mutex lock, and returns the corresponding unlock function. func (b *TFBlueprintTest) rLockFn() func() { if err := b.tftCacheMutex.RLock(); err != nil { b.t.Fatalf("Could not acquire read lock:%v", err) From 72f91834b81b17d0e8b41ad82c3b0d82d8477ed5 Mon Sep 17 00:00:00 2001 From: sleighton2022 <111580944+sleighton2022@users.noreply.github.com> Date: Fri, 24 May 2024 15:28:48 -0400 Subject: [PATCH 1020/1371] chore: Update locals.tf to add sleighton2022 (#2395) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 38f81c417ce..dc3fd2cbc96 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -144,7 +144,7 @@ locals { short_name = "example-foundation" org = "terraform-google-modules" description = "Shows how the CFT modules can be composed to build a secure cloud foundation" - owners = ["rjerrems", "gtsorbo", "eeaton"] + owners = ["rjerrems", "gtsorbo", "eeaton", "sleighton2022"] homepage_url = "https://cloud.google.com/architecture/security-foundations" topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) lint_env = { From de3765276bbe20d2ae12a553447cece3444e9c73 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 28 May 2024 14:41:22 -0700 Subject: [PATCH 1021/1371] chore(CI): bump repo's renovate go version (#2394) --- infra/terraform/test-org/github/resources/renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 214cfcb5816..a7822210d77 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -13,7 +13,7 @@ "labels": ["type:security"], "minimumReleaseAge": "0 days" }, - "constraints": {"go": "1.21"}, + "constraints": {"go": "1.22"}, "packageRules": [ { "matchFileNames": ["*", "modules/**"], @@ -42,7 +42,7 @@ "matchManagers": ["gomod"], "matchDatasources": ["golang-version"], "rangeStrategy": "replace", - "allowedVersions": "1.21", + "allowedVersions": "1.22", "postUpdateOptions": ["gomodTidy"] }, { From 6bc4f2d709ec3878467ca34db8290b95238fa200 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 28 May 2024 23:45:00 +0200 Subject: [PATCH 1022/1371] fix(deps): update module github.com/terraform-linters/tflint-plugin-sdk to v0.20.0 (#2380) --- tflint-ruleset-blueprint/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index d7ed251ca36..2746902971d 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -2,7 +2,7 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint go 1.22 -require github.com/terraform-linters/tflint-plugin-sdk v0.18.0 +require github.com/terraform-linters/tflint-plugin-sdk v0.20.0 require ( github.com/agext/levenshtein v1.2.1 // indirect From 0309463d06ffcdffcdccb32c6580ee8acfce136c Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 28 May 2024 15:22:16 -0700 Subject: [PATCH 1023/1371] chore(CI): renovate allow Go v1.22 (#2397) --- .github/renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index c0e90c91a6b..fd6e917342d 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -14,7 +14,7 @@ }, "separateMajorMinor": false, "additionalBranchPrefix": "{{parentDir}}-", - "constraints": {"go": "1.21"}, + "constraints": {"go": "1.22"}, "packageRules": [ { "matchFileNames": [".github/**"], @@ -37,7 +37,7 @@ }, { "matchPackageNames": ["go"], - "allowedVersions": "1.21", + "allowedVersions": "1.22", "postUpdateOptions": ["gomodTidy"] } ], From 4fffe167dff8133e0ae5f51ae58fc78279aa173e Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 29 May 2024 15:37:44 -0500 Subject: [PATCH 1024/1371] chore: add new billing admin group (#2398) --- infra/terraform/test-org/org-iam-policy/iam.tf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index af0ef31c4aa..d27f5e32850 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -20,6 +20,7 @@ locals { cft_dev_group = "cft-developers@develop.blueprints.joonix.net" gcp_admins_group_test = "gcp-admins@test.blueprints.joonix.net" project_cleaner = "project-cleaner-function@${data.terraform_remote_state.project_cleaner.outputs.project_id}.iam.gserviceaccount.com" + billing_admin_group = "billing-admin@test.blueprints.joonix.net" ci_gsuite_sa = "ci-gsuite-sa@ci-gsuite-sa-project.iam.gserviceaccount.com" cft_admin = "cft-admin@test.blueprints.joonix.net" @@ -62,6 +63,7 @@ locals { "group:${local.foundation_leads_group}", "group:${data.google_secret_manager_secret_version.ba-admin-1.secret_data}", "group:${data.google_secret_manager_secret_version.ba-admin-2.secret_data}", + "group:${local.billing_admin_group}", ], "roles/billing.user" : concat([ "serviceAccount:${local.ci_gsuite_sa}", From d1d2611df3c30ea51f9ab94282a2227d4c3b721b Mon Sep 17 00:00:00 2001 From: sjswerdlow <109298351+sjswerdlow@users.noreply.github.com> Date: Thu, 30 May 2024 15:53:59 -0400 Subject: [PATCH 1025/1371] chore: Update locals.tf for megelatim (#2399) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index dc3fd2cbc96..d1e96d4e22a 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -458,7 +458,7 @@ locals { org = "terraform-google-modules" description = "Deploys SAP products" topics = local.common_topics.compute - owners = ["sjswerdlow", "megela"] + owners = ["sjswerdlow", "megelatim"] }, { name = "terraform-google-scheduled-function" From cebae62536be8d35dbd0201d68488198c576e332 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 4 Jun 2024 09:00:59 -0700 Subject: [PATCH 1026/1371] chore: add configWriter for project_cleaner (#2381) --- infra/terraform/test-org/org-iam-policy/iam.tf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/infra/terraform/test-org/org-iam-policy/iam.tf b/infra/terraform/test-org/org-iam-policy/iam.tf index d27f5e32850..2c70c7fb310 100644 --- a/infra/terraform/test-org/org-iam-policy/iam.tf +++ b/infra/terraform/test-org/org-iam-policy/iam.tf @@ -65,6 +65,10 @@ locals { "group:${data.google_secret_manager_secret_version.ba-admin-2.secret_data}", "group:${local.billing_admin_group}", ], + "roles/logging.configWriter" : [ + "serviceAccount:${local.project_cleaner}", + "user:${local.cft_admin}", + ], "roles/billing.user" : concat([ "serviceAccount:${local.ci_gsuite_sa}", ], jsondecode(data.google_storage_bucket_object_content.ba-users.content)) From bdcb6f12489e00fc18fa67e63e5c476fe1d30654 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 4 Jun 2024 09:50:10 -0700 Subject: [PATCH 1027/1371] chore: Update Tools to 1.21.1 (#2388) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f3fa386da5a..c6314e4b6a6 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.8.4 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 477.0.0 +CLOUD_SDK_VERSION := 478.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,17 +25,17 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.58.9 +TERRAGRUNT_VERSION := 0.58.14 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.2 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.50 +KPT_VERSION := 1.0.0-beta.52 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.3.2 +CFT_CLI_VERSION := 1.3.3 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.10 # Updated by Update Tooling Workflow @@ -48,7 +48,7 @@ TFLINT_BP_PLUGIN := 0.1.0 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.58.2 +GOLANGCI_VERSION := 1.59.0 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From eaef7c8711097c1b65bcdeb6356f1ee4140f13b8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 4 Jun 2024 20:13:20 +0200 Subject: [PATCH 1028/1371] fix(deps): update module golang.org/x/mod to v0.18.0 (#2403) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index d3e1a0ac935..9306c7983e5 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -15,7 +15,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.17.1 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.17.0 + golang.org/x/mod v0.18.0 sigs.k8s.io/kustomize/kyaml v0.17.1 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 9aadcaf55b2..e3f89dab6cc 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -581,8 +581,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From 725d42d06ad93933d8d28b1c99889880095b707b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 5 Jun 2024 00:49:34 +0200 Subject: [PATCH 1029/1371] chore(deps): update golangci/golangci-lint docker tag to v1.59.0 (#2401) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index df69299abf5..30b573eed16 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.58.2 +GOLANGCI_VERSION := 1.59.0 .PHONY: docker_go_lint docker_go_lint: From eac203616396af48d337156b6c207daae52d8261 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 5 Jun 2024 00:59:20 +0200 Subject: [PATCH 1030/1371] chore(deps): update golangci/golangci-lint docker tag to v1.59.0 (#2400) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 07c22613525..ba23e507089 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.58.2 +GOLANGCI_VERSION := 1.59.0 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From fee22594fd62bb47789b8bfbfaec6fffaaeb03ee Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 10 Jun 2024 20:30:41 +0200 Subject: [PATCH 1031/1371] chore(deps): update github/codeql-action action to v3.25.7 (#2409) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b180a8a7bf3..4f8eef827bf 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/init@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/autobuild@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/analyze@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 837cad62056..44fecad37fa 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/upload-sarif@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 with: sarif_file: results.sarif From 194cd81f7d936a2377c2b6cb2f02d5a8aad0784c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 10 Jun 2024 21:41:26 +0200 Subject: [PATCH 1032/1371] chore(deps): update github/codeql-action action to v3.25.8 (#2410) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4f8eef827bf..4635238b11c 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 + uses: github/codeql-action/init@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 + uses: github/codeql-action/autobuild@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 + uses: github/codeql-action/analyze@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 44fecad37fa..aa0378fb520 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 + uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: sarif_file: results.sarif From e1eb0d173381e72d4e5a00ed09121509a73b59fc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 10 Jun 2024 23:29:56 +0200 Subject: [PATCH 1033/1371] fix(deps): update github.com/hashicorp/terraform-config-inspect digest to 271db41 (#2411) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 9306c7983e5..a7b018ab06f 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.46.15 - github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 + github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb github.com/hashicorp/terraform-json v0.22.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index e3f89dab6cc..d3621b3322a 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -399,8 +399,8 @@ github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+Db github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 h1:0qwr2oZy9mIIJMWh7W9NTHLWGMbEF5KEQ+QqM9hym34= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb h1:6gCfY5aQdQgRr0G5VDjnV5ENpd+hTamWaZfVz+lJ724= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= From 8c3a75c4f47312ee6dbac10177572ab530bf5c50 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:14:17 -0700 Subject: [PATCH 1034/1371] chore: Update Tools to 1.21.2 (#2404) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index c6314e4b6a6..f0c78490e7e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.8.4 +TERRAFORM_VERSION := 1.8.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 478.0.0 +CLOUD_SDK_VERSION := 479.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.58.14 +TERRAGRUNT_VERSION := 0.58.15 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.2 # Updated by Update Tooling Workflow @@ -48,7 +48,7 @@ TFLINT_BP_PLUGIN := 0.1.0 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.59.0 +GOLANGCI_VERSION := 1.59.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 86dcc5d5c18893e1d8c9588b379c872fbd5f5ed1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 11 Jun 2024 00:27:02 +0200 Subject: [PATCH 1035/1371] chore(deps): update golangci/golangci-lint docker tag to v1.59.1 (#2413) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index ba23e507089..617f53f9324 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.59.0 +GOLANGCI_VERSION := 1.59.1 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 317013ff7589feefa60b7e8c3553f08bb7b13b65 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 11 Jun 2024 00:58:57 +0200 Subject: [PATCH 1036/1371] chore(deps): update go modules (#2387) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 34 +++++++++++++++++----------------- cli/go.sum | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 18 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 617f53f9324..8b3025123ed 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.3.3 +VERSION=v1.3.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 5c211c3b3cd..08bf5bf4e9e 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -5,7 +5,7 @@ go 1.22 require ( cloud.google.com/go/asset v1.19.1 cloud.google.com/go/storage v1.41.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.0 github.com/fatih/color v1.17.0 @@ -27,26 +27,26 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.64.1 + github.com/open-policy-agent/opa v0.65.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 - github.com/spf13/viper v1.18.2 + github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 - golang.org/x/oauth2 v0.20.0 - golang.org/x/text v0.15.0 - google.golang.org/api v0.181.0 + golang.org/x/oauth2 v0.21.0 + golang.org/x/text v0.16.0 + google.golang.org/api v0.182.0 google.golang.org/protobuf v1.34.1 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.113.0 // indirect + cloud.google.com/go v0.114.0 // indirect cloud.google.com/go/accesscontextmanager v1.8.6 // indirect - cloud.google.com/go/auth v0.4.1 // indirect + cloud.google.com/go/auth v0.4.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute v1.25.1 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect @@ -83,7 +83,7 @@ require ( github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-ini/ini v1.67.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.21.2 // indirect github.com/go-openapi/errors v0.20.2 // indirect @@ -110,7 +110,7 @@ require ( github.com/googleapis/gax-go/v2 v2.12.4 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/gruntwork-io/terratest v0.46.14 // indirect + github.com/gruntwork-io/terratest v0.46.15 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -133,10 +133,10 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f // indirect github.com/open-policy-agent/gatekeeper/v3 v3.13.0 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect @@ -184,12 +184,12 @@ require ( golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.21.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect - google.golang.org/grpc v1.63.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e // indirect + google.golang.org/grpc v1.64.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect @@ -207,6 +207,6 @@ require ( sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/controller-runtime v0.15.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/kyaml v0.17.0 // indirect + sigs.k8s.io/kustomize/kyaml v0.17.1 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 8251aad6bfd..1a5789753c3 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -3,6 +3,8 @@ cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go v0.113.0 h1:g3C70mn3lWfckKBiCVsAshabrDg01pQ0pnX1MNtnMkA= cloud.google.com/go v0.113.0/go.mod h1:glEqlogERKYeePz6ZdkcLJ28Q2I6aERgDDErBg9GzO8= +cloud.google.com/go v0.114.0 h1:OIPFAdfrFDFO2ve2U7r/H5SwSbBzEdrBdE7xkgwc+kY= +cloud.google.com/go v0.114.0/go.mod h1:ZV9La5YYxctro1HTPug5lXH/GefROyW8PPD4T8n9J8E= cloud.google.com/go/accesscontextmanager v1.8.5 h1:2GLNaNu9KRJhJBFTIVRoPwk6xE5mUDgD47abBq4Zp/I= cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= cloud.google.com/go/accesscontextmanager v1.8.6 h1:NipmPd3BCzwa/mr40SK8pWRkbzv9Th5Azhi4dBYazlM= @@ -19,6 +21,8 @@ cloud.google.com/go/auth v0.3.0 h1:PRyzEpGfx/Z9e8+lHsbkoUVXD0gnu4MNmm7Gp8TQNIs= cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w= cloud.google.com/go/auth v0.4.1 h1:Z7YNIhlWRtrnKlZke7z3GMqzvuYzdc2z98F9D1NV5Hg= cloud.google.com/go/auth v0.4.1/go.mod h1:QVBuVEKpCn4Zp58hzRGvL0tjRGU0YqdRTdCHM1IHnro= +cloud.google.com/go/auth v0.4.2 h1:sb0eyLkhRtpq5jA+a8KWw0W70YcdVca7KJ8TM0AFYDg= +cloud.google.com/go/auth v0.4.2/go.mod h1:Kqvlz1cf1sNA0D+sYJnkPQOP+JMHkuHeIgVmCRtZOLc= cloud.google.com/go/auth/oauth2adapt v0.2.0 h1:FR8zevgQwu+8CqiOT5r6xCmJa3pJC/wdXEEPF1OkNhA= cloud.google.com/go/auth/oauth2adapt v0.2.0/go.mod h1:AfqujpDAlTfLfeCIl/HJZZlIxD8+nJoZ5e0x1IxGq5k= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= @@ -66,6 +70,8 @@ github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0. github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0/go.mod h1:JSsaDg/h4yaiNNTNnrCjyL6/czHb/Oz/z+dzWVqJYBE= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.1 h1:xfCNVLZQAclUxmhICDwaOUJUw4OioNc1wIEfjtSgfCg= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.1/go.mod h1:AEQP8/V/hIp+SllHtmBV7ftuoQQ82eC032UdsnL3tnY= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1 h1:c1tEK/Ma0NstqqkjS1tCClrFxIX1cNLdrM5cB03Sv24= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1/go.mod h1:bssUTs81Q0xIUg/dYT8/8fqEXOVB8GQVyngw9U79EN4= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -191,6 +197,8 @@ github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= @@ -339,6 +347,8 @@ github.com/gruntwork-io/terratest v0.46.13 h1:FDaEoZ7DtkomV8pcwLdBV/VsytdjnPRqJk github.com/gruntwork-io/terratest v0.46.13/go.mod h1:8sxu3Qup8TxtbzOHzq0MUrQffJj/G61/OwlsReaCwpo= github.com/gruntwork-io/terratest v0.46.14 h1:nVT2JpOPLr7KbwOSNDP0GJffljH+Yu5833cwLorxRjs= github.com/gruntwork-io/terratest v0.46.14/go.mod h1:L/IHbj195wnjfIFpZYWUhjwA3jm4O6ehO//xz7NxN8o= +github.com/gruntwork-io/terratest v0.46.15 h1:qfqjTFveymaqe7aAWn3LjlK0SwVGpRfoOut5ggNyfQ8= +github.com/gruntwork-io/terratest v0.46.15/go.mod h1:9bd22zAojjBBiYdsp+AR1iyl2iB6bRUVm2Yf1AFhfrA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -457,6 +467,8 @@ github.com/open-policy-agent/opa v0.64.0 h1:2g0JTt78zxhFaoBmZViY4UXvtOlzBjhhrnyr github.com/open-policy-agent/opa v0.64.0/go.mod h1:j4VeLorVpKipnkQ2TDjWshEuV3cvP/rHzQhYaraUXZY= github.com/open-policy-agent/opa v0.64.1 h1:n8IJTYlFWzqiOYx+JiawbErVxiqAyXohovcZxYbskxQ= github.com/open-policy-agent/opa v0.64.1/go.mod h1:j4VeLorVpKipnkQ2TDjWshEuV3cvP/rHzQhYaraUXZY= +github.com/open-policy-agent/opa v0.65.0 h1:wnEU0pEk80YjFi3yoDbFTMluyNssgPI4VJNJetD9a4U= +github.com/open-policy-agent/opa v0.65.0/go.mod h1:CNoLL44LuCH1Yot/zoeZXRKFylQtCJV+oGFiP2TeeEc= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -464,6 +476,8 @@ github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAq github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= 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/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -475,6 +489,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= @@ -522,6 +538,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -679,6 +697,8 @@ golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -747,6 +767,8 @@ 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/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -769,6 +791,8 @@ golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= 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= @@ -785,6 +809,8 @@ google.golang.org/api v0.176.1 h1:DJSXnV6An+NhJ1J+GWtoF2nHEuqB1VNoTfnIbjNvwD4= google.golang.org/api v0.176.1/go.mod h1:j2MaSDYcvYV1lkZ1+SMW4IeF90SrEyFA+tluDYWRrFg= google.golang.org/api v0.181.0 h1:rPdjwnWgiPPOJx3IcSAQ2III5aX5tCer6wMpa/xmZi4= google.golang.org/api v0.181.0/go.mod h1:MnQ+M0CFsfUwA5beZ+g/vCBCPXvtmZwRz2qzZk8ih1k= +google.golang.org/api v0.182.0 h1:if5fPvudRQ78GeRx3RayIoiuV7modtErPIZC/T2bIvE= +google.golang.org/api v0.182.0/go.mod h1:cGhjy4caqA5yXRzEhkHI8Y9mfyC2VLTlER2l08xaqtM= 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.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= @@ -806,12 +832,16 @@ google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda h1: google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda/go.mod h1:AHcE/gZH76Bk/ROZhQphlRoWo5xKDEtz3eVEO1LfA8c= google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae h1:AH34z6WAGVNkllnKs5raNq3yRq93VnjBG6rpfub/jYk= google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae/go.mod h1:FfiGhwUm6CJviekPrc0oJ+7h29e+DmWU6UtjX0ZvI7Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 h1:W5Xj/70xIA4x60O/IFyXivR5MGqblAb8R3w26pnD6No= +google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8/go.mod h1:vPrPUTsDCYxXWjP7clS81mZ6/803D8K4iM9Ma27VKas= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A= google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA= google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e h1:Elxv5MwEkCI9f5SkoL6afed6NTdxaGoAo39eANBwHL8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -823,6 +853,8 @@ google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8= google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= 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= @@ -895,6 +927,8 @@ sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3 sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= sigs.k8s.io/kustomize/kyaml v0.17.0 h1:G2bWs03V9Ur2PinHLzTUJ8Ded+30SzXZKiO92SRDs3c= sigs.k8s.io/kustomize/kyaml v0.17.0/go.mod h1:6lxkYF1Cv9Ic8g/N7I86cvxNc5iinUo/P2vKsHNmpyE= +sigs.k8s.io/kustomize/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= +sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From a202d1aa693956df25e3cda89513119348d87bef Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 11 Jun 2024 01:38:55 +0200 Subject: [PATCH 1037/1371] chore(deps): update golangci/golangci-lint docker tag to v1.59.1 (#2414) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 30b573eed16..5e79d4e440f 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.59.0 +GOLANGCI_VERSION := 1.59.1 .PHONY: docker_go_lint docker_go_lint: From 5d822e38b7649b13195187e30bba3d8e54fdb7a6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 11 Jun 2024 01:57:30 +0200 Subject: [PATCH 1038/1371] chore(deps): update goreleaser/goreleaser-action action to v6 (#2416) --- .github/workflows/go-tflint-plugin.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 6d978173d0c..d5f1f207735 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -53,7 +53,7 @@ jobs: - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser - run: echo "${{env.GORELEASER_CURRENT_TAG}}" - name: Run GoReleaser - uses: goreleaser/goreleaser-action@5742e2a039330cbb23ebf35f046f814d4c6ff811 # v5.1.0 + uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0 with: version: latest args: release --clean --skip=validate,publish diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 9ab50da7907..a66d40a1a09 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -25,7 +25,7 @@ jobs: - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV - run: echo "${{env.GORELEASER_CURRENT_TAG}}" - name: Run GoReleaser - uses: goreleaser/goreleaser-action@5742e2a039330cbb23ebf35f046f814d4c6ff811 # v5.1.0 + uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0 with: version: latest args: release --clean --skip=validate,publish From 46b82dcf73fb1e5d9ea1399c67d08797bffbe0e0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 11 Jun 2024 18:37:53 +0200 Subject: [PATCH 1039/1371] fix(deps): update dependency go to v1.22.4 (#2412) --- infra/blueprint-test/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index a7b018ab06f..ee1eaeac2ba 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -2,7 +2,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.22 -toolchain go1.22.3 +toolchain go1.22.4 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d From 3bcbdf5c8f81201b6ccf03819b590a39e774c3c8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 12 Jun 2024 19:47:48 +0200 Subject: [PATCH 1040/1371] fix(deps): update module google.golang.org/api to v0.183.0 (#2406) --- infra/utils/fbf/go.mod | 10 +++++----- infra/utils/fbf/go.sum | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 399f9a9ae54..3df3e209e3b 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.0 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.181.0 + google.golang.org/api v0.183.0 ) require ( - cloud.google.com/go/auth v0.4.1 // indirect + cloud.google.com/go/auth v0.5.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -36,12 +36,12 @@ require ( go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/net v0.25.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect - google.golang.org/grpc v1.63.2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/grpc v1.64.0 // indirect google.golang.org/protobuf v1.34.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 49503090357..e986b9f8f5e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.4.1 h1:Z7YNIhlWRtrnKlZke7z3GMqzvuYzdc2z98F9D1NV5Hg= -cloud.google.com/go/auth v0.4.1/go.mod h1:QVBuVEKpCn4Zp58hzRGvL0tjRGU0YqdRTdCHM1IHnro= +cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= +cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= @@ -110,8 +110,8 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -137,25 +137,25 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.181.0 h1:rPdjwnWgiPPOJx3IcSAQ2III5aX5tCer6wMpa/xmZi4= -google.golang.org/api v0.181.0/go.mod h1:MnQ+M0CFsfUwA5beZ+g/vCBCPXvtmZwRz2qzZk8ih1k= +google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE= +google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240528184218-531527333157 h1:u7WMYrIrVvs0TF5yaKwKNbcJyySYf+HAIFXxWltJOXE= google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be h1:Zz7rLWqp0ApfsR/l7+zSHhY3PMiH2xqgxlfYfAfNpoU= google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be/go.mod h1:dvdCTIoAGbkWbcIKBniID56/7XHTt6WfxXNMxuziJ+w= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= 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= From b02b43725956049ccd102657d3868306f60da94a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 12 Jun 2024 22:22:44 +0200 Subject: [PATCH 1041/1371] fix(deps): update go modules (#2417) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 33 +++-- cli/go.sum | 245 +++++------------------------------ 7 files changed, 56 insertions(+), 232 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 8b3025123ed..fa5ee393b69 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.3.4 +VERSION=v1.3.5 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index 1cd0cbedde1..314569d67af 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v60/github" + "github.com/google/go-github/v62/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index 0080cfded99..eb7111834d3 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v60/github" + "github.com/google/go-github/v62/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index baa198fd12a..9e73d79d40f 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v60/github" + "github.com/google/go-github/v62/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 8e2fa877f4f..c6187eeca95 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v60/github" + "github.com/google/go-github/v62/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index 08bf5bf4e9e..24cb29e5102 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -14,7 +14,6 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v60 v60.0.0 github.com/google/go-github/v62 v62.0.0 github.com/hashicorp/hcl/v2 v2.20.1 github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 @@ -34,10 +33,10 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 golang.org/x/oauth2 v0.21.0 golang.org/x/text v0.16.0 - google.golang.org/api v0.182.0 + google.golang.org/api v0.183.0 google.golang.org/protobuf v1.34.1 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -45,15 +44,14 @@ require ( require ( cloud.google.com/go v0.114.0 // indirect - cloud.google.com/go/accesscontextmanager v1.8.6 // indirect - cloud.google.com/go/auth v0.4.2 // indirect + cloud.google.com/go/accesscontextmanager v1.8.7 // indirect + cloud.google.com/go/auth v0.5.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute v1.25.1 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect cloud.google.com/go/iam v1.1.8 // indirect cloud.google.com/go/longrunning v0.5.7 // indirect - cloud.google.com/go/orgpolicy v1.12.2 // indirect - cloud.google.com/go/osconfig v1.12.6 // indirect + cloud.google.com/go/orgpolicy v1.12.3 // indirect + cloud.google.com/go/osconfig v1.12.7 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -177,18 +175,17 @@ require ( go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e // indirect + golang.org/x/tools v0.22.0 // indirect + google.golang.org/genproto v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240521202816-d264139d666e // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect google.golang.org/grpc v1.64.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index 1a5789753c3..abef35c0d64 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,75 +1,29 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= -cloud.google.com/go v0.113.0 h1:g3C70mn3lWfckKBiCVsAshabrDg01pQ0pnX1MNtnMkA= -cloud.google.com/go v0.113.0/go.mod h1:glEqlogERKYeePz6ZdkcLJ28Q2I6aERgDDErBg9GzO8= cloud.google.com/go v0.114.0 h1:OIPFAdfrFDFO2ve2U7r/H5SwSbBzEdrBdE7xkgwc+kY= cloud.google.com/go v0.114.0/go.mod h1:ZV9La5YYxctro1HTPug5lXH/GefROyW8PPD4T8n9J8E= -cloud.google.com/go/accesscontextmanager v1.8.5 h1:2GLNaNu9KRJhJBFTIVRoPwk6xE5mUDgD47abBq4Zp/I= -cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= -cloud.google.com/go/accesscontextmanager v1.8.6 h1:NipmPd3BCzwa/mr40SK8pWRkbzv9Th5Azhi4dBYazlM= -cloud.google.com/go/accesscontextmanager v1.8.6/go.mod h1:rMC0Z8pCe/JR6yQSksprDc6swNKjMEvkfCbaesh+OS0= -cloud.google.com/go/asset v1.18.1 h1:+NpxL5L53VY91EoJTHeGGXSWEUllf2hhXpCyTnSrd3Q= -cloud.google.com/go/asset v1.18.1/go.mod h1:QXivw0mVqwrhZyuX6iqFbyfCdzYE9AFCJVG47Eh5dMM= -cloud.google.com/go/asset v1.19.0 h1:D1fzO6/fdMkGA7Lxrv/in2ahVm59DAe1EMMaDt33v9k= -cloud.google.com/go/asset v1.19.0/go.mod h1:eW/d/F3g1Pr07U7nNUhj2AI1e1AVgs3+j8inYS5QBl0= +cloud.google.com/go/accesscontextmanager v1.8.7 h1:GgdNoDwZR5RIO3j8XwXqa6Gc6q5mP3KYMdFC7FEVyG4= +cloud.google.com/go/accesscontextmanager v1.8.7/go.mod h1:jSvChL1NBQ+uLY9zUBdPy9VIlozPoHptdBnRYeWuQoM= cloud.google.com/go/asset v1.19.1 h1:mCqyoaDjDzaW1RqmmQtCJuawb9nca5bEu7HvVcpZDwg= cloud.google.com/go/asset v1.19.1/go.mod h1:kGOS8DiCXv6wU/JWmHWCgaErtSZ6uN5noCy0YwVaGfs= -cloud.google.com/go/auth v0.2.0 h1:y6oTcpMSbOcXbwYgUUrvI+mrQ2xbrcdpPgtVbCGTLTk= -cloud.google.com/go/auth v0.2.0/go.mod h1:+yb+oy3/P0geX6DLKlqiGHARGR6EX2GRtYCzWOCQSbU= -cloud.google.com/go/auth v0.3.0 h1:PRyzEpGfx/Z9e8+lHsbkoUVXD0gnu4MNmm7Gp8TQNIs= -cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w= -cloud.google.com/go/auth v0.4.1 h1:Z7YNIhlWRtrnKlZke7z3GMqzvuYzdc2z98F9D1NV5Hg= -cloud.google.com/go/auth v0.4.1/go.mod h1:QVBuVEKpCn4Zp58hzRGvL0tjRGU0YqdRTdCHM1IHnro= -cloud.google.com/go/auth v0.4.2 h1:sb0eyLkhRtpq5jA+a8KWw0W70YcdVca7KJ8TM0AFYDg= -cloud.google.com/go/auth v0.4.2/go.mod h1:Kqvlz1cf1sNA0D+sYJnkPQOP+JMHkuHeIgVmCRtZOLc= -cloud.google.com/go/auth/oauth2adapt v0.2.0 h1:FR8zevgQwu+8CqiOT5r6xCmJa3pJC/wdXEEPF1OkNhA= -cloud.google.com/go/auth/oauth2adapt v0.2.0/go.mod h1:AfqujpDAlTfLfeCIl/HJZZlIxD8+nJoZ5e0x1IxGq5k= +cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= +cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= -cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= -cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= -cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= -cloud.google.com/go/iam v1.1.7 h1:z4VHOhwKLF/+UYXAJDFwGtNF0b6gjsW1Pk9Ml0U/IoM= -cloud.google.com/go/iam v1.1.7/go.mod h1:J4PMPg8TtyurAUvSmPj8FF3EDgY1SPRZxcUGrn7WXGA= cloud.google.com/go/iam v1.1.8 h1:r7umDwhj+BQyz0ScZMp4QrGXjSTI3ZINnpgU2nlB/K0= cloud.google.com/go/iam v1.1.8/go.mod h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE= -cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= -cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= -cloud.google.com/go/longrunning v0.5.6 h1:xAe8+0YaWoCKr9t1+aWe+OeQgN/iJK1fEgZSXmjuEaE= -cloud.google.com/go/longrunning v0.5.6/go.mod h1:vUaDrWYOMKRuhiv6JBnn49YxCPz2Ayn9GqyjaBT8/mA= cloud.google.com/go/longrunning v0.5.7 h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU= cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng= -cloud.google.com/go/orgpolicy v1.12.1 h1:2JbXigqBJVp8Dx5dONUttFqewu4fP0p3pgOdIZAhpYU= -cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= -cloud.google.com/go/orgpolicy v1.12.2 h1:x9GttuUZXXeKcJgHSGxYoPn2hOJhhuaN5YYJKfAfmLo= -cloud.google.com/go/orgpolicy v1.12.2/go.mod h1:XycP+uWN8Fev47r1XibYjOgZod8SjXQtZGsO2I8KXX8= -cloud.google.com/go/osconfig v1.12.5 h1:Mo5jGAxOMKH/PmDY7fgY19yFcVbvwREb5D5zMPQjFfo= -cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= -cloud.google.com/go/osconfig v1.12.6 h1:wIOhgzklE0hHZsho02rRVXYBHSfsAwYZYIaxFaUBIjs= -cloud.google.com/go/osconfig v1.12.6/go.mod h1:2dcXGl5qNbKo6Hjsnqbt5t6H2GX7UCAaPjF6BwDlFq8= -cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY= -cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= -cloud.google.com/go/storage v1.40.0 h1:VEpDQV5CJxFmJ6ueWNsKxcr1QAYOXEgxDa+sBbJahPw= -cloud.google.com/go/storage v1.40.0/go.mod h1:Rrj7/hKlG87BLqDJYtwR0fbPld8uJPbQ2ucUMY7Ir0g= +cloud.google.com/go/orgpolicy v1.12.3 h1:fGftW2bPi8vTjQm57xlwtLBZQcrgC+c3HMFBzJ+KWPc= +cloud.google.com/go/orgpolicy v1.12.3/go.mod h1:6BOgIgFjWfJzTsVcib/4QNHOAeOjCdaBj69aJVs//MA= +cloud.google.com/go/osconfig v1.12.7 h1:HXsXGFaFaLTklwKgSob/GSE+c3verYDQDgreFaosxyc= +cloud.google.com/go/osconfig v1.12.7/go.mod h1:ID7Lbqr0fiihKMwAOoPomWRqsZYKWxfiuafNZ9j1Y1M= cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0= cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2 h1:DQS5D0xaV1SVFNoGvHdYB0wYeZ24D9hVeFiLG2+r06I= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.13.2/go.mod h1:uomWciQn6oAotW86ck0b0ix+sUeZHSXyS+IYAVFTPj8= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0 h1:db17HvmQPwTAq7/ex/w2DiNMA4oGUmTiHvScfPW/cRI= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.0/go.mod h1:JSsaDg/h4yaiNNTNnrCjyL6/czHb/Oz/z+dzWVqJYBE= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.1 h1:xfCNVLZQAclUxmhICDwaOUJUw4OioNc1wIEfjtSgfCg= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.14.1/go.mod h1:AEQP8/V/hIp+SllHtmBV7ftuoQQ82eC032UdsnL3tnY= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1 h1:c1tEK/Ma0NstqqkjS1tCClrFxIX1cNLdrM5cB03Sv24= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1/go.mod h1:bssUTs81Q0xIUg/dYT8/8fqEXOVB8GQVyngw9U79EN4= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= @@ -161,8 +115,6 @@ github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCv github.com/evanphx/json-patch v5.6.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/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -195,8 +147,6 @@ github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -284,15 +234,11 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 h1:4gjrh/PN2MuWCCElk8/I4OCKRKWCCo2zEct3VKCbibU= -github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2 h1:yEt5djSYb4iNtmV9iJGVday+i4e9u6Mrn5iP64HH5QM= github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= @@ -308,23 +254,20 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/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/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/go-github/v59 v59.0.0 h1:7h6bgpF5as0YQLLkEiVqpgtJqjimMYhBkD4jT5aN3VA= github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv40oDjhV/gH6wM= -github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= -github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= -github.com/google/go-github/v61 v61.0.0/go.mod h1:0WR+KmsWX75G2EbpyGsGmradjo3IiciuI4BmdVCobQY= +github.com/google/go-github/v62 v62.0.0 h1:/6mGCaRywZz9MuHyw9gD1CwsbmBX8GWsbFkwMmHdhl4= github.com/google/go-github/v62 v62.0.0/go.mod h1:EMxeUqGJq2xRu9DYBMwel/mr7kZrzUOfQmmpYrZn2a4= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= 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= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= @@ -335,18 +278,12 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= -github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/gruntwork-io/terratest v0.46.13 h1:FDaEoZ7DtkomV8pcwLdBV/VsytdjnPRqJkIriYEYwjs= -github.com/gruntwork-io/terratest v0.46.13/go.mod h1:8sxu3Qup8TxtbzOHzq0MUrQffJj/G61/OwlsReaCwpo= -github.com/gruntwork-io/terratest v0.46.14 h1:nVT2JpOPLr7KbwOSNDP0GJffljH+Yu5833cwLorxRjs= -github.com/gruntwork-io/terratest v0.46.14/go.mod h1:L/IHbj195wnjfIFpZYWUhjwA3jm4O6ehO//xz7NxN8o= github.com/gruntwork-io/terratest v0.46.15 h1:qfqjTFveymaqe7aAWn3LjlK0SwVGpRfoOut5ggNyfQ8= github.com/gruntwork-io/terratest v0.46.15/go.mod h1:9bd22zAojjBBiYdsp+AR1iyl2iB6bRUVm2Yf1AFhfrA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -358,8 +295,6 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72 h1:nZ5gGjbe5o7XUu1d7j+Y5Ztcxlp+yaumTKH9i0D3wlg= -github.com/hashicorp/terraform-config-inspect v0.0.0-20231204233900-a34142ec2a72/go.mod h1:l8HcFPm9cQh6Q0KSWoYPiePqMvRFenybP1CH2MjKdlg= github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 h1:0qwr2oZy9mIIJMWh7W9NTHLWGMbEF5KEQ+QqM9hym34= github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -379,10 +314,6 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.5.6 h1:nKXVLqPfAwY7sWcYXdNZZZ2fjqDpAtj9UeWupgfUxSg= -github.com/jedib0t/go-pretty/v6 v6.5.6/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg= -github.com/jedib0t/go-pretty/v6 v6.5.8 h1:8BCzJdSvUbaDuRba4YVh+SKMGcAAKdkcF3SVFbrHAtQ= -github.com/jedib0t/go-pretty/v6 v6.5.8/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -398,8 +329,8 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= -github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -459,14 +390,6 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.62.1 h1:UcxBQ0fe6NEjkYc775j4PWoUFFhx4f6yXKIKSTAuTVk= -github.com/open-policy-agent/opa v0.62.1/go.mod h1:YqiSIIuvKwyomtnnXkJvy0E3KtVKbavjPJ/hNMuOmeM= -github.com/open-policy-agent/opa v0.63.0 h1:ztNNste1v8kH0/vJMJNquE45lRvqwrM5mY9Ctr9xIXw= -github.com/open-policy-agent/opa v0.63.0/go.mod h1:9VQPqEfoB2N//AToTxzZ1pVTVPUoF2Mhd64szzjWPpU= -github.com/open-policy-agent/opa v0.64.0 h1:2g0JTt78zxhFaoBmZViY4UXvtOlzBjhhrnyrIxkm+tI= -github.com/open-policy-agent/opa v0.64.0/go.mod h1:j4VeLorVpKipnkQ2TDjWshEuV3cvP/rHzQhYaraUXZY= -github.com/open-policy-agent/opa v0.64.1 h1:n8IJTYlFWzqiOYx+JiawbErVxiqAyXohovcZxYbskxQ= -github.com/open-policy-agent/opa v0.64.1/go.mod h1:j4VeLorVpKipnkQ2TDjWshEuV3cvP/rHzQhYaraUXZY= github.com/open-policy-agent/opa v0.65.0 h1:wnEU0pEk80YjFi3yoDbFTMluyNssgPI4VJNJetD9a4U= github.com/open-policy-agent/opa v0.65.0/go.mod h1:CNoLL44LuCH1Yot/zoeZXRKFylQtCJV+oGFiP2TeeEc= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= @@ -474,8 +397,6 @@ github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -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/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= @@ -487,13 +408,9 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -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/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= @@ -536,8 +453,6 @@ github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyh github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= @@ -546,6 +461,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ 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= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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= @@ -593,8 +509,6 @@ github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7Jul github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= -github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= @@ -617,8 +531,6 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqhe go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= -go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= @@ -644,19 +556,11 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= -golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -664,10 +568,8 @@ 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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= -golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -684,19 +586,9 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= -golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= -golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -708,8 +600,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -736,37 +626,24 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= -golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -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/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= @@ -785,14 +662,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= -golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= -golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= -golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= 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= @@ -801,58 +672,24 @@ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSm golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= -google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= -google.golang.org/api v0.174.0 h1:zB1BWl7ocxfTea2aQ9mgdzXjnfPySllpPOskdnO+q34= -google.golang.org/api v0.174.0/go.mod h1:aC7tB6j0HR1Nl0ni5ghpx6iLasmAX78Zkh/wgxAAjLg= -google.golang.org/api v0.176.1 h1:DJSXnV6An+NhJ1J+GWtoF2nHEuqB1VNoTfnIbjNvwD4= -google.golang.org/api v0.176.1/go.mod h1:j2MaSDYcvYV1lkZ1+SMW4IeF90SrEyFA+tluDYWRrFg= -google.golang.org/api v0.181.0 h1:rPdjwnWgiPPOJx3IcSAQ2III5aX5tCer6wMpa/xmZi4= -google.golang.org/api v0.181.0/go.mod h1:MnQ+M0CFsfUwA5beZ+g/vCBCPXvtmZwRz2qzZk8ih1k= -google.golang.org/api v0.182.0 h1:if5fPvudRQ78GeRx3RayIoiuV7modtErPIZC/T2bIvE= -google.golang.org/api v0.182.0/go.mod h1:cGhjy4caqA5yXRzEhkHI8Y9mfyC2VLTlER2l08xaqtM= +google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE= +google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= 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.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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda h1:wu/KJm9KJwpfHWhkkZGohVC6KRrc1oJNr4jwtQMOQXw= -google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda/go.mod h1:g2LLCvCeCSir/JJSWosk19BR4NVxGqHUC6rxIRsd7Aw= -google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc= -google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s= -google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda h1:b6F6WIV4xHHD0FA4oIyzU6mHWg2WI2X1RBehwa5QN38= -google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda/go.mod h1:AHcE/gZH76Bk/ROZhQphlRoWo5xKDEtz3eVEO1LfA8c= -google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae h1:AH34z6WAGVNkllnKs5raNq3yRq93VnjBG6rpfub/jYk= -google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae/go.mod h1:FfiGhwUm6CJviekPrc0oJ+7h29e+DmWU6UtjX0ZvI7Y= -google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 h1:W5Xj/70xIA4x60O/IFyXivR5MGqblAb8R3w26pnD6No= -google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8/go.mod h1:vPrPUTsDCYxXWjP7clS81mZ6/803D8K4iM9Ma27VKas= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e h1:Elxv5MwEkCI9f5SkoL6afed6NTdxaGoAo39eANBwHL8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto v0.0.0-20240528184218-531527333157 h1:u7WMYrIrVvs0TF5yaKwKNbcJyySYf+HAIFXxWltJOXE= +google.golang.org/genproto v0.0.0-20240528184218-531527333157/go.mod h1:ubQlAQnzejB8uZzszhrTCU2Fyp6Vi7ZE5nn0c3W8+qQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240521202816-d264139d666e h1:SkdGTrROJl2jRGT/Fxv5QUf9jtdKCQh4KQJXbXVLAi0= +google.golang.org/genproto/googleapis/api v0.0.0-20240521202816-d264139d666e/go.mod h1:LweJcLbyVij6rCex8YunD8DYR5VDonap/jYl3ZRxcIU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= -google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= -google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8= -google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -864,10 +701,6 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.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.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -909,8 +742,6 @@ k8s.io/component-base v0.27.2 h1:neju+7s/r5O4x4/txeUONNTS9r1HsPbyoPBAtHsDCpo= k8s.io/component-base v0.27.2/go.mod h1:5UPk7EjfgrfgRIuDBFtsEFAe4DAvP3U+M8RTzoSJkpo= 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-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk= -k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= 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/kubectl v0.27.2 h1:sSBM2j94MHBFRWfHIWtEXWCicViQzZsb177rNsKBhZg= @@ -923,10 +754,6 @@ sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUT sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= 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/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0= -sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= -sigs.k8s.io/kustomize/kyaml v0.17.0 h1:G2bWs03V9Ur2PinHLzTUJ8Ded+30SzXZKiO92SRDs3c= -sigs.k8s.io/kustomize/kyaml v0.17.0/go.mod h1:6lxkYF1Cv9Ic8g/N7I86cvxNc5iinUo/P2vKsHNmpyE= sigs.k8s.io/kustomize/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= From 9ad502109471016371008b29ddc0ccd68de67156 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 14 Jun 2024 19:54:26 +0200 Subject: [PATCH 1042/1371] fix(deps): update module github.com/briandowns/spinner to v1.23.1 (#2420) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 3df3e209e3b..f9e30c2a85e 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/utils/fbf go 1.22 require ( - github.com/briandowns/spinner v1.23.0 + github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 google.golang.org/api v0.183.0 diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index e986b9f8f5e..dde1df4174f 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -6,8 +6,8 @@ cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRk cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= -github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= +github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= +github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= 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= From eb4672bdbe33c3e5edcdbe01db17f10875baa4bd Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 14 Jun 2024 20:10:53 +0200 Subject: [PATCH 1043/1371] fix(deps): update module google.golang.org/api to v0.184.0 (#2421) --- infra/utils/fbf/go.mod | 14 +++++++------- infra/utils/fbf/go.sum | 30 +++++++++++++++--------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index f9e30c2a85e..00a13d1f4e6 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.183.0 + google.golang.org/api v0.184.0 ) require ( @@ -34,13 +34,13 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect google.golang.org/grpc v1.64.0 // indirect google.golang.org/protobuf v1.34.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index dde1df4174f..3b5aa497719 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -95,8 +95,8 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -107,8 +107,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -123,32 +123,32 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE= -google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= +google.golang.org/api v0.184.0 h1:dmEdk6ZkJNXy1JcDhn/ou0ZUq7n9zropG2/tR4z+RDg= +google.golang.org/api v0.184.0/go.mod h1:CeDTtUEiYENAf8PPG5VZW2yNp2VM3VWbCeTioAZBTBA= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240528184218-531527333157 h1:u7WMYrIrVvs0TF5yaKwKNbcJyySYf+HAIFXxWltJOXE= +google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 h1:HCZ6DlkKtCDAtD8ForECsY3tKuaR+p4R3grlK80uCCc= google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be h1:Zz7rLWqp0ApfsR/l7+zSHhY3PMiH2xqgxlfYfAfNpoU= google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be/go.mod h1:dvdCTIoAGbkWbcIKBniID56/7XHTt6WfxXNMxuziJ+w= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From ed940dc934c576325c7ef0debb0c38ed87103938 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 17 Jun 2024 22:56:50 -0500 Subject: [PATCH 1044/1371] chore: Update Tools to 1.21.3 (#2418) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f0c78490e7e..606a4b1a79b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.8.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 479.0.0 +CLOUD_SDK_VERSION := 480.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.58.15 +TERRAGRUNT_VERSION := 0.59.3 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.2 # Updated by Update Tooling Workflow @@ -35,9 +35,9 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.3.3 +CFT_CLI_VERSION := 1.3.5 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.28.10 +KUBECTL_VERSION := 1.28.11 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.51.1 TINKEY_VERSION := 1.7.0 @@ -57,7 +57,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.19.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 1e7bc1b9c06f9da264226d9baba735636a05e82d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 18 Jun 2024 09:57:08 -0700 Subject: [PATCH 1045/1371] feat(tft): add GetTFSetupJsonOutput() (#2423) Co-authored-by: Bharath KKB --- infra/blueprint-test/pkg/tft/terraform.go | 27 ++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index 86df7ec1503..bb0bce9aee7 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -370,7 +370,7 @@ func (b *TFBlueprintTest) GetStringOutputList(name string) []string { } // GetJsonOutput returns TF output for key as gjson.Result. -// An empty string for key can be used to return all values +// An empty string for key can be used to return all values. // It fails test on invalid JSON. func (b *TFBlueprintTest) GetJsonOutput(key string) gjson.Result { // allow only parallel reads as Terraform plugin cache isn't concurrent safe @@ -419,6 +419,31 @@ func (b *TFBlueprintTest) GetTFSetupStringOutput(key string) string { return terraform.Output(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger, NoColor: true}, key) } +// GetTFSetupJsonOutput returns TF setup output for a given key as gjson.Result. +// An empty string for key can be used to return all values. +// It fails test if given key does not output valid JSON or if setupDir is not configured. +func (b *TFBlueprintTest) GetTFSetupJsonOutput(key string) gjson.Result { + if v, ok := b.setupOutputOverrides[key]; ok { + if !gjson.Valid(v.(string)) { + b.t.Fatalf("Invalid JSON in setup output override: %s", v) + } + return gjson.Parse(v.(string)) + } + if b.setupDir == "" { + b.t.Fatal("Setup path not set") + } + // allow only parallel reads as Terraform plugin cache isn't concurrent safe + rUnlockFn := b.rLockFn() + defer rUnlockFn() + + jsonString := terraform.OutputJson(b.t, &terraform.Options{TerraformDir: b.setupDir, Logger: b.logger, NoColor: true}, key) + if !gjson.Valid(jsonString) { + b.t.Fatalf("Invalid JSON: %s", jsonString) + } + + return gjson.Parse(jsonString) +} + // loadTFEnvVar adds new env variables prefixed with TF_VAR_ to an existing map of variables. func loadTFEnvVar(m map[string]string, new map[string]string) { for k, v := range new { From a60b126d30dae7f24289ef818fd3e11f13da28b4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 20 Jun 2024 18:12:16 +0200 Subject: [PATCH 1046/1371] chore(deps): update github/codeql-action action to v3.25.10 (#2425) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4635238b11c..191eebf406a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/init@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/autobuild@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/analyze@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index aa0378fb520..b4ed8d88ab1 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 with: sarif_file: results.sarif From 3011df6b2acc12c3911d0008ebd910815e0f9ca0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 20 Jun 2024 18:29:03 +0200 Subject: [PATCH 1047/1371] chore(deps): update actions/checkout action to v4.1.7 (#2426) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index a60b41d6edb..33b8e7b661d 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 191eebf406a..54f958356f3 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Install Go if: matrix.language == 'go' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 52e669e1675..52a318dc38f 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 16570112a79..172af66297f 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index dec0b47ca79..c1e87b9b957 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index d5f1f207735..6a926e2e556 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: tflint-ruleset-blueprint/go.mod @@ -45,7 +45,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Set up Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 13383016a14..e33e2c113f0 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' # v4.1.6 + - uses: 'actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332' # v4.1.7 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform uses: 'actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9' # v4.0.2 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 2e8e01002c3..48dcbe56976 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index b4dc2ce691d..bcb5cd60c68 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: cli/go.mod diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index a66d40a1a09..04e37488ee3 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -17,7 +17,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Set up Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b4ed8d88ab1..5cedc5d9316 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: persist-credentials: false diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 693279bfd6f..9531e8f511a 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 354e02e7927..e72824d6407 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 08b393e2901..5d6c8b529de 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -31,7 +31,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: ref: master - name: Update Tools From 7167d4e03b82a65db0bc94a4ad91ef42edb6cb2d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 20 Jun 2024 11:39:38 -0700 Subject: [PATCH 1048/1371] feat(tft): add WithParallelism() (#2424) Co-authored-by: Bharath KKB --- infra/blueprint-test/pkg/tft/terraform.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/infra/blueprint-test/pkg/tft/terraform.go b/infra/blueprint-test/pkg/tft/terraform.go index bb0bce9aee7..89c20e44bba 100644 --- a/infra/blueprint-test/pkg/tft/terraform.go +++ b/infra/blueprint-test/pkg/tft/terraform.go @@ -81,6 +81,7 @@ type TFBlueprintTest struct { teardown func(*assert.Assertions) // teardown function setupOutputOverrides map[string]interface{} // override outputs from the Setup phase tftCacheMutex *filemutex.FileMutex // Mutex to protect Terraform plugin cache + parallelism int // Set the parallelism setting for Terraform } type tftOption func(*TFBlueprintTest) @@ -173,6 +174,12 @@ func WithSetupOutputs(vars map[string]interface{}) tftOption { } } +func WithParallelism(p int) tftOption { + return func(f *TFBlueprintTest) { + f.parallelism = p + } +} + // NewTFBlueprintTest sets defaults, validates and returns a TFBlueprintTest. func NewTFBlueprintTest(t testing.TB, opts ...tftOption) *TFBlueprintTest { var err error @@ -308,6 +315,7 @@ func (b *TFBlueprintTest) GetTFOptions() *terraform.Options { MigrateState: b.migrateState, RetryableTerraformErrors: b.retryableTerraformErrors, NoColor: true, + Parallelism: b.parallelism, }) if b.maxRetries > 0 { newOptions.MaxRetries = b.maxRetries From e9fe26d80c5afce73f0c04f582deccbd661a30d3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 24 Jun 2024 18:12:08 +0200 Subject: [PATCH 1049/1371] fix(deps): update go modules (#2419) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 20 ++++++++++---------- cli/go.sum | 42 +++++++++++++++++++++--------------------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index fa5ee393b69..59a19819e35 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.3.5 +VERSION=v1.3.6 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 24cb29e5102..0e292ca1612 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -4,10 +4,10 @@ go 1.22 require ( cloud.google.com/go/asset v1.19.1 - cloud.google.com/go/storage v1.41.0 + cloud.google.com/go/storage v1.42.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad - github.com/briandowns/spinner v1.23.0 + github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.17.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 @@ -16,7 +16,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/google/go-github/v62 v62.0.0 github.com/hashicorp/hcl/v2 v2.20.1 - github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 + github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 @@ -29,15 +29,15 @@ require ( github.com/open-policy-agent/opa v0.65.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 golang.org/x/oauth2 v0.21.0 golang.org/x/text v0.16.0 - google.golang.org/api v0.183.0 - google.golang.org/protobuf v1.34.1 + google.golang.org/api v0.184.0 + google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) @@ -183,9 +183,9 @@ require ( golang.org/x/term v0.21.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.22.0 // indirect - google.golang.org/genproto v0.0.0-20240528184218-531527333157 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240521202816-d264139d666e // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect google.golang.org/grpc v1.64.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index abef35c0d64..9d433b2596e 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -19,8 +19,8 @@ cloud.google.com/go/orgpolicy v1.12.3 h1:fGftW2bPi8vTjQm57xlwtLBZQcrgC+c3HMFBzJ+ cloud.google.com/go/orgpolicy v1.12.3/go.mod h1:6BOgIgFjWfJzTsVcib/4QNHOAeOjCdaBj69aJVs//MA= cloud.google.com/go/osconfig v1.12.7 h1:HXsXGFaFaLTklwKgSob/GSE+c3verYDQDgreFaosxyc= cloud.google.com/go/osconfig v1.12.7/go.mod h1:ID7Lbqr0fiihKMwAOoPomWRqsZYKWxfiuafNZ9j1Y1M= -cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0= -cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80= +cloud.google.com/go/storage v1.42.0 h1:4QtGpplCVt1wz6g5o1ifXd656P5z+yNgzdw1tVfp0cU= +cloud.google.com/go/storage v1.42.0/go.mod h1:HjMXRFq65pGKFn6hxj6x3HCyR41uSB72Z0SO/Vn6JFQ= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -60,8 +60,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= -github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= +github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= +github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= @@ -85,7 +85,7 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUK github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= @@ -295,8 +295,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30 h1:0qwr2oZy9mIIJMWh7W9NTHLWGMbEF5KEQ+QqM9hym34= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240509232506-4708120f8f30/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb h1:6gCfY5aQdQgRr0G5VDjnV5ENpd+hTamWaZfVz+lJ724= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= @@ -448,8 +448,8 @@ github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNo github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -559,8 +559,8 @@ golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= -golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -672,19 +672,19 @@ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSm golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE= -google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= +google.golang.org/api v0.184.0 h1:dmEdk6ZkJNXy1JcDhn/ou0ZUq7n9zropG2/tR4z+RDg= +google.golang.org/api v0.184.0/go.mod h1:CeDTtUEiYENAf8PPG5VZW2yNp2VM3VWbCeTioAZBTBA= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240528184218-531527333157 h1:u7WMYrIrVvs0TF5yaKwKNbcJyySYf+HAIFXxWltJOXE= -google.golang.org/genproto v0.0.0-20240528184218-531527333157/go.mod h1:ubQlAQnzejB8uZzszhrTCU2Fyp6Vi7ZE5nn0c3W8+qQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240521202816-d264139d666e h1:SkdGTrROJl2jRGT/Fxv5QUf9jtdKCQh4KQJXbXVLAi0= -google.golang.org/genproto/googleapis/api v0.0.0-20240521202816-d264139d666e/go.mod h1:LweJcLbyVij6rCex8YunD8DYR5VDonap/jYl3ZRxcIU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 h1:HCZ6DlkKtCDAtD8ForECsY3tKuaR+p4R3grlK80uCCc= +google.golang.org/genproto v0.0.0-20240604185151-ef581f913117/go.mod h1:lesfX/+9iA+3OdqeCpoDddJaNxVB1AB6tD7EfqMmprc= +google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= +google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -701,8 +701,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 1cc0f29d0440122aa9c24329940f4d649c229cd1 Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Mon, 24 Jun 2024 14:58:36 -0500 Subject: [PATCH 1050/1371] fix: update github-actions-runners owners (#2430) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index d1e96d4e22a..d66fd0dcfd8 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -349,6 +349,7 @@ locals { org = "terraform-google-modules" description = "Creates self-hosted GitHub Actions Runners on Google Cloud" topics = local.common_topics.devtools + owners = ["gtsorbo"] }, { name = "terraform-google-gke-gitlab" From 6b104e41844353a18524380786b92947665ec915 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jun 2024 15:48:02 -0700 Subject: [PATCH 1051/1371] fix(deps): bump github.com/hashicorp/go-getter from 1.7.4 to 1.7.5 in /infra/blueprint-test (#2434) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index ee1eaeac2ba..b973a37ef8f 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -52,7 +52,7 @@ require ( github.com/gruntwork-io/go-commons v0.17.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-getter v1.7.5 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index d3621b3322a..65e53ecacdf 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -385,8 +385,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= -github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= +github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= From 0fd6abbf6a5d3b3eb65c733c3a4a8c3c8c3fa246 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 27 Jun 2024 00:51:52 +0200 Subject: [PATCH 1052/1371] chore(deps): update peter-evans/create-pull-request action to v6.1.0 (#2433) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 5d6c8b529de..9681378790d 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -107,7 +107,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e # v6.0.5 + uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 83ae0c8f323edd7985a1267529fbb17877803f66 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 27 Jun 2024 00:57:17 +0200 Subject: [PATCH 1053/1371] fix(deps): update module github.com/hashicorp/hcl/v2 to v2.21.0 (#2435) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 0f578f58853..a6a5f4f17ca 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -6,7 +6,7 @@ require ( github.com/chainguard-dev/git-urls v1.0.2 github.com/go-git/go-git/v5 v5.12.0 github.com/google/go-cmp v0.6.0 - github.com/hashicorp/hcl/v2 v2.20.1 + github.com/hashicorp/hcl/v2 v2.21.0 github.com/pmezard/go-difflib v1.0.0 github.com/zclconf/go-cty v1.14.4 ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index ff759a8929f..aab4a0c6553 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -44,8 +44,8 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= +github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -84,8 +84,8 @@ github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= From f0330dc8a1e03a7737b89192b8fa71a5508e3768 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 27 Jun 2024 01:04:50 +0200 Subject: [PATCH 1054/1371] fix(deps): update module google.golang.org/api to v0.185.0 (#2432) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 00a13d1f4e6..d3d8e683e0a 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.184.0 + google.golang.org/api v0.185.0 ) require ( @@ -40,8 +40,8 @@ require ( golang.org/x/sys v0.21.0 // indirect golang.org/x/term v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect google.golang.org/grpc v1.64.0 // indirect - google.golang.org/protobuf v1.34.1 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 3b5aa497719..fb3b6a9877e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -137,18 +137,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.184.0 h1:dmEdk6ZkJNXy1JcDhn/ou0ZUq7n9zropG2/tR4z+RDg= -google.golang.org/api v0.184.0/go.mod h1:CeDTtUEiYENAf8PPG5VZW2yNp2VM3VWbCeTioAZBTBA= +google.golang.org/api v0.185.0 h1:ENEKk1k4jW8SmmaT6RE+ZasxmxezCrD5Vw4npvr+pAU= +google.golang.org/api v0.185.0/go.mod h1:HNfvIkJGlgrIlrbYkAm9W9IdkmKZjOTVh33YltygGbg= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 h1:HCZ6DlkKtCDAtD8ForECsY3tKuaR+p4R3grlK80uCCc= +google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 h1:CUiCqkPw1nNrNQzCCG4WA65m0nAmQiwXHpub3dNyruU= google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be h1:Zz7rLWqp0ApfsR/l7+zSHhY3PMiH2xqgxlfYfAfNpoU= google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be/go.mod h1:dvdCTIoAGbkWbcIKBniID56/7XHTt6WfxXNMxuziJ+w= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -165,8 +165,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From f06f28e4a817e37355d3ed61720d0ce28e49dc7c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 27 Jun 2024 01:57:13 +0200 Subject: [PATCH 1055/1371] fix(deps): update module google.golang.org/api to v0.186.0 (#2437) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index d3d8e683e0a..5a7d92b9ca7 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.185.0 + google.golang.org/api v0.186.0 ) require ( - cloud.google.com/go/auth v0.5.1 // indirect + cloud.google.com/go/auth v0.6.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -23,7 +23,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.4 // indirect + github.com/googleapis/gax-go/v2 v2.12.5 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index fb3b6a9877e..ab0006858b0 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= -cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= +cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g= +cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= @@ -58,8 +58,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= -github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= +github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= +github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -137,16 +137,16 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.185.0 h1:ENEKk1k4jW8SmmaT6RE+ZasxmxezCrD5Vw4npvr+pAU= -google.golang.org/api v0.185.0/go.mod h1:HNfvIkJGlgrIlrbYkAm9W9IdkmKZjOTVh33YltygGbg= +google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug= +google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 h1:CUiCqkPw1nNrNQzCCG4WA65m0nAmQiwXHpub3dNyruU= -google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be h1:Zz7rLWqp0ApfsR/l7+zSHhY3PMiH2xqgxlfYfAfNpoU= -google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be/go.mod h1:dvdCTIoAGbkWbcIKBniID56/7XHTt6WfxXNMxuziJ+w= +google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3 h1:QW9+G6Fir4VcRXVH8x3LilNAb6cxBGLa6+GM4hRwexE= +google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3/go.mod h1:kdrSS/OiLkPrNUpzD4aHgCq2rVuC/YRxok32HXZ4vRE= google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0= google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= From 773eaf4597ea7df417fde18d079adafd935fc1f8 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 28 Jun 2024 08:24:21 -0700 Subject: [PATCH 1056/1371] chore: update release-please PR titles (#2438) --- release-please-config.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release-please-config.json b/release-please-config.json index cdf771a3593..3d57e6ea89e 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -7,21 +7,21 @@ "release-type": "go", "package-name": "blueprint-test", "component": "infra/blueprint-test", - "pull-request-title-pattern": "chore${scope}: release blueprint-test ${version}", + "pull-request-title-pattern": "chore(release-please): release blueprint-test ${version}", "bump-minor-pre-major": true }, "infra/module-swapper": { "release-type": "go", "package-name": "module-swapper", "component": "infra/module-swapper", - "pull-request-title-pattern": "chore${scope}: release module-swapper ${version}", + "pull-request-title-pattern": "chore(release-please): release module-swapper ${version}", "bump-minor-pre-major": true }, "tflint-ruleset-blueprint": { "release-type": "go", "package-name": "tflint-ruleset-blueprint", "component": "tflint-ruleset-blueprint", - "pull-request-title-pattern": "chore${scope}: release tflint-ruleset-blueprint ${version}", + "pull-request-title-pattern": "chore(release-please): release tflint-ruleset-blueprint ${version}", "bump-minor-pre-major": true } } From 96ca6d6fa76e142731eb0973eec4a029abf55abe Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 16:00:49 +0000 Subject: [PATCH 1057/1371] chore(release-please): release blueprint-test 0.16.0 (#2405) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c9b760bf423..12f41597c10 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.15.1", + "infra/blueprint-test": "0.16.0", "infra/module-swapper": "0.4.6", "tflint-ruleset-blueprint": "0.1.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index ca689284ede..65e734b2e33 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [0.16.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.15.1...infra/blueprint-test/v0.16.0) (2024-06-28) + + +### Features + +* **tft:** add GetTFSetupJsonOutput() ([#2423](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2423)) ([1e7bc1b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1e7bc1b9c06f9da264226d9baba735636a05e82d)) +* **tft:** add WithParallelism() ([#2424](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2424)) ([7167d4e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/7167d4e03b82a65db0bc94a4ad91ef42edb6cb2d)) + + +### Bug Fixes + +* **deps:** bump github.com/hashicorp/go-getter from 1.7.4 to 1.7.5 in /infra/blueprint-test ([#2434](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2434)) ([6b104e4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6b104e41844353a18524380786b92947665ec915)) +* **deps:** update dependency go to v1.22.4 ([#2412](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2412)) ([46b82dc](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/46b82dcf73fb1e5d9ea1399c67d08797bffbe0e0)) +* **deps:** update github.com/hashicorp/terraform-config-inspect digest to 271db41 ([#2411](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2411)) ([e1eb0d1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e1eb0d173381e72d4e5a00ed09121509a73b59fc)) +* **deps:** update module golang.org/x/mod to v0.18.0 ([#2403](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2403)) ([eaef7c8](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/eaef7c8711097c1b65bcdeb6356f1ee4140f13b8)) + ## [0.15.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.15.0...infra/blueprint-test/v0.15.1) (2024-05-24) From 4b68110c1c6aa9897b4fed63662a7082df5bca60 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:40:11 -0700 Subject: [PATCH 1058/1371] chore(release-please): release module-swapper 0.4.7 (#2436) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 12f41597c10..340670be981 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.0", - "infra/module-swapper": "0.4.6", + "infra/module-swapper": "0.4.7", "tflint-ruleset-blueprint": "0.1.0" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 72e586b0e78..716e5919273 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.6...infra/module-swapper/v0.4.7) (2024-06-28) + + +### Bug Fixes + +* **deps:** update module github.com/hashicorp/hcl/v2 to v2.21.0 ([#2435](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2435)) ([83ae0c8](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/83ae0c8f323edd7985a1267529fbb17877803f66)) + ## [0.4.6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.5...infra/module-swapper/v0.4.6) (2024-04-22) From 608996c1b55568068bfda2ae837771df6fb77e38 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 8 Jul 2024 15:27:45 -0500 Subject: [PATCH 1059/1371] feat: Add blueprint connections and related metadata (#2440) --- cli/bpmetadata/bpmetadata.pb.go | 1022 +++++++++++++++------- cli/bpmetadata/bpmetadata_ui.pb.go | 549 ++++++++---- cli/bpmetadata/proto/bpmetadata.proto | 58 ++ cli/bpmetadata/proto/bpmetadata_ui.proto | 29 + 4 files changed, 1176 insertions(+), 482 deletions(-) diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go index 6b6672d2124..a423e663533 100644 --- a/cli/bpmetadata/bpmetadata.pb.go +++ b/cli/bpmetadata/bpmetadata.pb.go @@ -741,6 +741,9 @@ type BlueprintRequirements struct { // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf // as "activate_apis" in the project module. Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty" yaml:"services,omitempty"` // @gotags: json:"services,omitempty" yaml:"services,omitempty" + // Required provider versions. + // Gen: auto-generated from required providers block. + ProviderVersions []*ProviderVersion `protobuf:"bytes,3,rep,name=provider_versions,json=providerVersions,proto3" json:"versions,omitempty" yaml:"providerVersions,omitempty"` // @gotags: json:"versions,omitempty" yaml:"providerVersions,omitempty" } func (x *BlueprintRequirements) Reset() { @@ -789,6 +792,74 @@ func (x *BlueprintRequirements) GetServices() []string { return nil } +func (x *BlueprintRequirements) GetProviderVersions() []*ProviderVersion { + if x != nil { + return x.ProviderVersions + } + return nil +} + +// ProviderVersion defines the required version for a provider. +type ProviderVersion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Provider source of form [hostname]/namespace/name. + // Hostname is optional defaulting to Terraform registry. + // Gen: auto-generated from required providers block. + Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty" yaml:"source,omitempty"` // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Version constraint string. + // Gen: auto-generated from required providers block. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" +} + +func (x *ProviderVersion) Reset() { + *x = ProviderVersion{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProviderVersion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProviderVersion) ProtoMessage() {} + +func (x *ProviderVersion) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProviderVersion.ProtoReflect.Descriptor instead. +func (*ProviderVersion) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{7} +} + +func (x *ProviderVersion) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *ProviderVersion) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + // BlueprintUI is the top-level structure for holding UI specific metadata. type BlueprintUI struct { state protoimpl.MessageState @@ -808,7 +879,7 @@ type BlueprintUI struct { func (x *BlueprintUI) Reset() { *x = BlueprintUI{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[7] + mi := &file_bpmetadata_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -821,7 +892,7 @@ func (x *BlueprintUI) String() string { func (*BlueprintUI) ProtoMessage() {} func (x *BlueprintUI) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[7] + mi := &file_bpmetadata_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -834,7 +905,7 @@ func (x *BlueprintUI) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintUI.ProtoReflect.Descriptor instead. func (*BlueprintUI) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{7} + return file_bpmetadata_proto_rawDescGZIP(), []int{8} } func (x *BlueprintUI) GetInput() *BlueprintUIInput { @@ -870,7 +941,7 @@ type BlueprintRepoDetail struct { func (x *BlueprintRepoDetail) Reset() { *x = BlueprintRepoDetail{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[8] + mi := &file_bpmetadata_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -883,7 +954,7 @@ func (x *BlueprintRepoDetail) String() string { func (*BlueprintRepoDetail) ProtoMessage() {} func (x *BlueprintRepoDetail) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[8] + mi := &file_bpmetadata_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -896,7 +967,7 @@ func (x *BlueprintRepoDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintRepoDetail.ProtoReflect.Descriptor instead. func (*BlueprintRepoDetail) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{8} + return file_bpmetadata_proto_rawDescGZIP(), []int{9} } func (x *BlueprintRepoDetail) GetRepo() string { @@ -942,7 +1013,7 @@ type BlueprintActuationTool struct { func (x *BlueprintActuationTool) Reset() { *x = BlueprintActuationTool{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[9] + mi := &file_bpmetadata_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -955,7 +1026,7 @@ func (x *BlueprintActuationTool) String() string { func (*BlueprintActuationTool) ProtoMessage() {} func (x *BlueprintActuationTool) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[9] + mi := &file_bpmetadata_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -968,7 +1039,7 @@ func (x *BlueprintActuationTool) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintActuationTool.ProtoReflect.Descriptor instead. func (*BlueprintActuationTool) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{9} + return file_bpmetadata_proto_rawDescGZIP(), []int{10} } func (x *BlueprintActuationTool) GetFlavor() string { @@ -1010,7 +1081,7 @@ type BlueprintDescription struct { func (x *BlueprintDescription) Reset() { *x = BlueprintDescription{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[10] + mi := &file_bpmetadata_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1023,7 +1094,7 @@ func (x *BlueprintDescription) String() string { func (*BlueprintDescription) ProtoMessage() {} func (x *BlueprintDescription) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[10] + mi := &file_bpmetadata_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1036,7 +1107,7 @@ func (x *BlueprintDescription) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintDescription.ProtoReflect.Descriptor instead. func (*BlueprintDescription) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{10} + return file_bpmetadata_proto_rawDescGZIP(), []int{11} } func (x *BlueprintDescription) GetTagline() string { @@ -1098,7 +1169,7 @@ type BlueprintTimeEstimate struct { func (x *BlueprintTimeEstimate) Reset() { *x = BlueprintTimeEstimate{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[11] + mi := &file_bpmetadata_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1111,7 +1182,7 @@ func (x *BlueprintTimeEstimate) String() string { func (*BlueprintTimeEstimate) ProtoMessage() {} func (x *BlueprintTimeEstimate) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[11] + mi := &file_bpmetadata_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1124,7 +1195,7 @@ func (x *BlueprintTimeEstimate) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintTimeEstimate.ProtoReflect.Descriptor instead. func (*BlueprintTimeEstimate) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{11} + return file_bpmetadata_proto_rawDescGZIP(), []int{12} } func (x *BlueprintTimeEstimate) GetConfigurationSecs() int64 { @@ -1158,7 +1229,7 @@ type BlueprintCostEstimate struct { func (x *BlueprintCostEstimate) Reset() { *x = BlueprintCostEstimate{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[12] + mi := &file_bpmetadata_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1171,7 +1242,7 @@ func (x *BlueprintCostEstimate) String() string { func (*BlueprintCostEstimate) ProtoMessage() {} func (x *BlueprintCostEstimate) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[12] + mi := &file_bpmetadata_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1184,7 +1255,7 @@ func (x *BlueprintCostEstimate) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintCostEstimate.ProtoReflect.Descriptor instead. func (*BlueprintCostEstimate) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{12} + return file_bpmetadata_proto_rawDescGZIP(), []int{13} } func (x *BlueprintCostEstimate) GetDescription() string { @@ -1227,7 +1298,7 @@ type BlueprintCloudProduct struct { func (x *BlueprintCloudProduct) Reset() { *x = BlueprintCloudProduct{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[13] + mi := &file_bpmetadata_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1240,7 +1311,7 @@ func (x *BlueprintCloudProduct) String() string { func (*BlueprintCloudProduct) ProtoMessage() {} func (x *BlueprintCloudProduct) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[13] + mi := &file_bpmetadata_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1253,7 +1324,7 @@ func (x *BlueprintCloudProduct) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintCloudProduct.ProtoReflect.Descriptor instead. func (*BlueprintCloudProduct) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{13} + return file_bpmetadata_proto_rawDescGZIP(), []int{14} } func (x *BlueprintCloudProduct) GetProductId() string { @@ -1303,7 +1374,7 @@ type BlueprintOrgPolicyCheck struct { func (x *BlueprintOrgPolicyCheck) Reset() { *x = BlueprintOrgPolicyCheck{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[14] + mi := &file_bpmetadata_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1316,7 +1387,7 @@ func (x *BlueprintOrgPolicyCheck) String() string { func (*BlueprintOrgPolicyCheck) ProtoMessage() {} func (x *BlueprintOrgPolicyCheck) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[14] + mi := &file_bpmetadata_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1329,7 +1400,7 @@ func (x *BlueprintOrgPolicyCheck) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintOrgPolicyCheck.ProtoReflect.Descriptor instead. func (*BlueprintOrgPolicyCheck) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{14} + return file_bpmetadata_proto_rawDescGZIP(), []int{15} } func (x *BlueprintOrgPolicyCheck) GetPolicyId() string { @@ -1374,7 +1445,7 @@ type BlueprintQuotaDetail struct { func (x *BlueprintQuotaDetail) Reset() { *x = BlueprintQuotaDetail{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[15] + mi := &file_bpmetadata_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1387,7 +1458,7 @@ func (x *BlueprintQuotaDetail) String() string { func (*BlueprintQuotaDetail) ProtoMessage() {} func (x *BlueprintQuotaDetail) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[15] + mi := &file_bpmetadata_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1400,7 +1471,7 @@ func (x *BlueprintQuotaDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintQuotaDetail.ProtoReflect.Descriptor instead. func (*BlueprintQuotaDetail) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{15} + return file_bpmetadata_proto_rawDescGZIP(), []int{16} } func (x *BlueprintQuotaDetail) GetDynamicVariable() string { @@ -1444,7 +1515,7 @@ type BlueprintAuthor struct { func (x *BlueprintAuthor) Reset() { *x = BlueprintAuthor{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[16] + mi := &file_bpmetadata_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1457,7 +1528,7 @@ func (x *BlueprintAuthor) String() string { func (*BlueprintAuthor) ProtoMessage() {} func (x *BlueprintAuthor) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[16] + mi := &file_bpmetadata_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1470,7 +1541,7 @@ func (x *BlueprintAuthor) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintAuthor.ProtoReflect.Descriptor instead. func (*BlueprintAuthor) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{16} + return file_bpmetadata_proto_rawDescGZIP(), []int{17} } func (x *BlueprintAuthor) GetTitle() string { @@ -1511,7 +1582,7 @@ type BlueprintSoftwareGroup struct { func (x *BlueprintSoftwareGroup) Reset() { *x = BlueprintSoftwareGroup{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[17] + mi := &file_bpmetadata_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1524,7 +1595,7 @@ func (x *BlueprintSoftwareGroup) String() string { func (*BlueprintSoftwareGroup) ProtoMessage() {} func (x *BlueprintSoftwareGroup) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[17] + mi := &file_bpmetadata_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1537,7 +1608,7 @@ func (x *BlueprintSoftwareGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintSoftwareGroup.ProtoReflect.Descriptor instead. func (*BlueprintSoftwareGroup) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{17} + return file_bpmetadata_proto_rawDescGZIP(), []int{18} } func (x *BlueprintSoftwareGroup) GetType() SoftwareGroupType { @@ -1578,7 +1649,7 @@ type BlueprintSoftware struct { func (x *BlueprintSoftware) Reset() { *x = BlueprintSoftware{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[18] + mi := &file_bpmetadata_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1591,7 +1662,7 @@ func (x *BlueprintSoftware) String() string { func (*BlueprintSoftware) ProtoMessage() {} func (x *BlueprintSoftware) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[18] + mi := &file_bpmetadata_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1604,7 +1675,7 @@ func (x *BlueprintSoftware) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintSoftware.ProtoReflect.Descriptor instead. func (*BlueprintSoftware) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{18} + return file_bpmetadata_proto_rawDescGZIP(), []int{19} } func (x *BlueprintSoftware) GetTitle() string { @@ -1659,7 +1730,7 @@ type BlueprintSupport struct { func (x *BlueprintSupport) Reset() { *x = BlueprintSupport{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[19] + mi := &file_bpmetadata_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1672,7 +1743,7 @@ func (x *BlueprintSupport) String() string { func (*BlueprintSupport) ProtoMessage() {} func (x *BlueprintSupport) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[19] + mi := &file_bpmetadata_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1685,7 +1756,7 @@ func (x *BlueprintSupport) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintSupport.ProtoReflect.Descriptor instead. func (*BlueprintSupport) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{19} + return file_bpmetadata_proto_rawDescGZIP(), []int{20} } func (x *BlueprintSupport) GetDescription() string { @@ -1735,7 +1806,7 @@ type BlueprintArchitecture struct { func (x *BlueprintArchitecture) Reset() { *x = BlueprintArchitecture{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[20] + mi := &file_bpmetadata_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +1819,7 @@ func (x *BlueprintArchitecture) String() string { func (*BlueprintArchitecture) ProtoMessage() {} func (x *BlueprintArchitecture) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[20] + mi := &file_bpmetadata_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +1832,7 @@ func (x *BlueprintArchitecture) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintArchitecture.ProtoReflect.Descriptor instead. func (*BlueprintArchitecture) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{20} + return file_bpmetadata_proto_rawDescGZIP(), []int{21} } func (x *BlueprintArchitecture) GetDiagramUrl() string { @@ -1790,7 +1861,7 @@ type BlueprintMiscContent struct { func (x *BlueprintMiscContent) Reset() { *x = BlueprintMiscContent{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[21] + mi := &file_bpmetadata_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1803,7 +1874,7 @@ func (x *BlueprintMiscContent) String() string { func (*BlueprintMiscContent) ProtoMessage() {} func (x *BlueprintMiscContent) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[21] + mi := &file_bpmetadata_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1816,7 +1887,7 @@ func (x *BlueprintMiscContent) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintMiscContent.ProtoReflect.Descriptor instead. func (*BlueprintMiscContent) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{21} + return file_bpmetadata_proto_rawDescGZIP(), []int{22} } func (x *BlueprintMiscContent) GetName() string { @@ -1846,7 +1917,7 @@ type BlueprintDiagram struct { func (x *BlueprintDiagram) Reset() { *x = BlueprintDiagram{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[22] + mi := &file_bpmetadata_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1859,7 +1930,7 @@ func (x *BlueprintDiagram) String() string { func (*BlueprintDiagram) ProtoMessage() {} func (x *BlueprintDiagram) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[22] + mi := &file_bpmetadata_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1872,7 +1943,7 @@ func (x *BlueprintDiagram) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintDiagram.ProtoReflect.Descriptor instead. func (*BlueprintDiagram) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{22} + return file_bpmetadata_proto_rawDescGZIP(), []int{23} } func (x *BlueprintDiagram) GetName() string { @@ -1908,7 +1979,7 @@ type BlueprintListContent struct { func (x *BlueprintListContent) Reset() { *x = BlueprintListContent{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[23] + mi := &file_bpmetadata_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1921,7 +1992,7 @@ func (x *BlueprintListContent) String() string { func (*BlueprintListContent) ProtoMessage() {} func (x *BlueprintListContent) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[23] + mi := &file_bpmetadata_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1934,7 +2005,7 @@ func (x *BlueprintListContent) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintListContent.ProtoReflect.Descriptor instead. func (*BlueprintListContent) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{23} + return file_bpmetadata_proto_rawDescGZIP(), []int{24} } func (x *BlueprintListContent) GetTitle() string { @@ -1961,12 +2032,17 @@ type BlueprintVariable struct { VarType string `protobuf:"bytes,3,opt,name=var_type,json=varType,proto3" json:"varType,omitempty" yaml:"varType,omitempty"` // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" DefaultValue *structpb.Value `protobuf:"bytes,4,opt,name=default_value,json=defaultValue,proto3" json:"defaultValue,omitempty" yaml:"defaultValue,omitempty"` // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" Required bool `protobuf:"varint,5,opt,name=required,proto3" json:"required,omitempty" yaml:"required,omitempty"` // @gotags: json:"required,omitempty" yaml:"required,omitempty" + // Incoming connections to this variable. + // Connections are outputs from other blueprints that can be potentially + // connected to this variable. + // Gen: manually-authored. + Connections []*BlueprintConnection `protobuf:"bytes,6,rep,name=connections,proto3" json:"connections,omitempty" yaml:"connections,omitempty"` // @gotags: json:"connections,omitempty" yaml:"connections,omitempty" } func (x *BlueprintVariable) Reset() { *x = BlueprintVariable{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[24] + mi := &file_bpmetadata_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1979,7 +2055,7 @@ func (x *BlueprintVariable) String() string { func (*BlueprintVariable) ProtoMessage() {} func (x *BlueprintVariable) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[24] + mi := &file_bpmetadata_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1992,7 +2068,7 @@ func (x *BlueprintVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintVariable.ProtoReflect.Descriptor instead. func (*BlueprintVariable) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{24} + return file_bpmetadata_proto_rawDescGZIP(), []int{25} } func (x *BlueprintVariable) GetName() string { @@ -2030,6 +2106,197 @@ func (x *BlueprintVariable) GetRequired() bool { return false } +func (x *BlueprintVariable) GetConnections() []*BlueprintConnection { + if x != nil { + return x.Connections + } + return nil +} + +// Defines an incoming connection from a blueprint. +type BlueprintConnection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Source of the connection. + // Gen: manually-authored. + Source *ConnectionSource `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty" yaml:"source,omitempty"` // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Connection specifications. + // Gen: manually-authored. + Spec *ConnectionSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty" yaml:"spec,omitempty"` // @gotags: json:"spec,omitempty" yaml:"spec,omitempty" +} + +func (x *BlueprintConnection) Reset() { + *x = BlueprintConnection{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueprintConnection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueprintConnection) ProtoMessage() {} + +func (x *BlueprintConnection) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueprintConnection.ProtoReflect.Descriptor instead. +func (*BlueprintConnection) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{26} +} + +func (x *BlueprintConnection) GetSource() *ConnectionSource { + if x != nil { + return x.Source + } + return nil +} + +func (x *BlueprintConnection) GetSpec() *ConnectionSpec { + if x != nil { + return x.Spec + } + return nil +} + +// Defines the source of a connection. +type ConnectionSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Source of the connection. Defined using the same format as module source + // of form [hostname]/namespace/name/provider for registry references and + // unprefixed github.com URLs for github references. + // Gen: manually-authored. + Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty" yaml:"source,omitempty"` // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Version constraint syntax using the same format as module version + // constraints. + // Gen: manually-authored. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` // @gotags: json:"version,omitempty" yaml:"version,omitempty" +} + +func (x *ConnectionSource) Reset() { + *x = ConnectionSource{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConnectionSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectionSource) ProtoMessage() {} + +func (x *ConnectionSource) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConnectionSource.ProtoReflect.Descriptor instead. +func (*ConnectionSource) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{27} +} + +func (x *ConnectionSource) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *ConnectionSource) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +// Defines the specifications of a connection. +type ConnectionSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output expression identifying output being connected to variable. + // This can be the output name or more complex expression like attribuite notation. + // Gen: manually-authored. + OutputExpr string `protobuf:"bytes,1,opt,name=output_expr,json=outputExpr,proto3" json:"outputExpr,omitempty" yaml:"outputExpr,omitempty"` // @gotags: json:"outputExpr,omitempty" yaml:"outputExpr,omitempty" + // Optional dot separated attribuite notation to connect to a specific object field of the input variable. + // Gen: manually-authored. + InputPath *string `protobuf:"bytes,2,opt,name=input_path,json=inputPath,proto3,oneof" json:"inputPath,omitempty" yaml:"inputPath,omitempty"` // @gotags: json:"inputPath,omitempty" yaml:"inputPath,omitempty" +} + +func (x *ConnectionSpec) Reset() { + *x = ConnectionSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConnectionSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectionSpec) ProtoMessage() {} + +func (x *ConnectionSpec) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConnectionSpec.ProtoReflect.Descriptor instead. +func (*ConnectionSpec) Descriptor() ([]byte, []int) { + return file_bpmetadata_proto_rawDescGZIP(), []int{28} +} + +func (x *ConnectionSpec) GetOutputExpr() string { + if x != nil { + return x.OutputExpr + } + return "" +} + +func (x *ConnectionSpec) GetInputPath() string { + if x != nil && x.InputPath != nil { + return *x.InputPath + } + return "" +} + // BlueprintVariableGroup is manually entered. type BlueprintVariableGroup struct { state protoimpl.MessageState @@ -2044,7 +2311,7 @@ type BlueprintVariableGroup struct { func (x *BlueprintVariableGroup) Reset() { *x = BlueprintVariableGroup{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[25] + mi := &file_bpmetadata_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2057,7 +2324,7 @@ func (x *BlueprintVariableGroup) String() string { func (*BlueprintVariableGroup) ProtoMessage() {} func (x *BlueprintVariableGroup) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[25] + mi := &file_bpmetadata_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2070,7 +2337,7 @@ func (x *BlueprintVariableGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintVariableGroup.ProtoReflect.Descriptor instead. func (*BlueprintVariableGroup) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{25} + return file_bpmetadata_proto_rawDescGZIP(), []int{29} } func (x *BlueprintVariableGroup) GetName() string { @@ -2101,12 +2368,15 @@ type BlueprintOutput struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` // @gotags: json:"name" yaml:"name" Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description,omitempty"` // @gotags: json:"description,omitempty" yaml:"description,omitempty" + // Serialized type representation of the output value. + // Gen: manually-authored but will be automated in the future. + Type *structpb.Value `protobuf:"bytes,3,opt,name=type,proto3,oneof" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" } func (x *BlueprintOutput) Reset() { *x = BlueprintOutput{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[26] + mi := &file_bpmetadata_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2119,7 +2389,7 @@ func (x *BlueprintOutput) String() string { func (*BlueprintOutput) ProtoMessage() {} func (x *BlueprintOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[26] + mi := &file_bpmetadata_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2132,7 +2402,7 @@ func (x *BlueprintOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintOutput.ProtoReflect.Descriptor instead. func (*BlueprintOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{26} + return file_bpmetadata_proto_rawDescGZIP(), []int{30} } func (x *BlueprintOutput) GetName() string { @@ -2149,6 +2419,13 @@ func (x *BlueprintOutput) GetDescription() string { return "" } +func (x *BlueprintOutput) GetType() *structpb.Value { + if x != nil { + return x.Type + } + return nil +} + type BlueprintRoles struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2161,7 +2438,7 @@ type BlueprintRoles struct { func (x *BlueprintRoles) Reset() { *x = BlueprintRoles{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_proto_msgTypes[27] + mi := &file_bpmetadata_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2174,7 +2451,7 @@ func (x *BlueprintRoles) String() string { func (*BlueprintRoles) ProtoMessage() {} func (x *BlueprintRoles) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_proto_msgTypes[27] + mi := &file_bpmetadata_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2187,7 +2464,7 @@ func (x *BlueprintRoles) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintRoles.ProtoReflect.Descriptor instead. func (*BlueprintRoles) Descriptor() ([]byte, []int) { - return file_bpmetadata_proto_rawDescGZIP(), []int{27} + return file_bpmetadata_proto_rawDescGZIP(), []int{31} } func (x *BlueprintRoles) GetLevel() string { @@ -2391,190 +2668,230 @@ var file_bpmetadata_proto_rawDesc = []byte{ 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x22, 0x79, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x05, 0x72, - 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, + 0x74, 0x73, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x05, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x5c, + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x43, 0x0a, 0x0f, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x0b, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, + 0x49, 0x12, 0x46, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4b, 0x0a, 0x07, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xa2, 0x01, - 0x0a, 0x0b, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x12, 0x46, 0x0a, - 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, + 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x64, 0x69, 0x72, 0x22, 0x4a, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x41, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0xc0, 0x01, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x67, + 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x67, 0x6c, + 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x74, + 0x6d, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x75, 0x6c, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x75, 0x6c, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, + 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x22, 0x6f, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x65, 0x63, 0x73, 0x22, 0x4b, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x22, 0x88, 0x01, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, + 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, + 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x5f, 0x0a, 0x17, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x02, + 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x71, 0x75, 0x6f, + 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x09, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x3c, 0x0a, + 0x0e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5b, 0x0a, 0x0f, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x73, 0x6f, + 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, - 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x05, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4b, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, - 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1f, 0x0a, - 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x72, - 0x22, 0x4a, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x63, 0x74, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6c, - 0x61, 0x76, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6c, 0x61, 0x76, - 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc0, 0x01, 0x0a, - 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, 0x6e, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x67, 0x6c, 0x69, 0x6e, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x72, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x74, - 0x6d, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x12, 0x1b, - 0x0a, 0x09, 0x65, 0x75, 0x6c, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x75, 0x6c, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, - 0x6f, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x73, - 0x22, 0x4b, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x73, - 0x74, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x88, 0x01, - 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x55, 0x72, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x65, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, - 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x5f, 0x0a, 0x17, 0x42, 0x6c, 0x75, 0x65, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, - 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x14, 0x42, 0x6c, - 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x79, - 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x56, 0x0a, - 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x51, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x51, 0x75, 0x6f, - 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5b, 0x0a, 0x0f, 0x42, 0x6c, 0x75, 0x65, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x72, 0x6c, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, - 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, - 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, - 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x52, 0x08, 0x73, 0x6f, 0x66, - 0x74, 0x77, 0x61, 0x72, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, - 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x86, 0x01, - 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x26, - 0x0a, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x15, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x72, 0x6c, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4d, - 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x10, 0x42, 0x6c, - 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x12, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x52, + 0x08, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x55, 0x72, + 0x6c, 0x22, 0x86, 0x01, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, + 0x77, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x15, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, + 0x6d, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x4d, 0x69, 0x73, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x3e, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, - 0xbd, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x76, - 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, - 0x6c, 0x0a, 0x16, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, + 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, + 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0x0a, 0x14, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x22, 0x94, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x47, 0x0a, - 0x0f, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3c, 0x0a, 0x0e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, - 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0x6a, 0x0a, 0x11, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x51, 0x52, 0x54, - 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, - 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, - 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x02, - 0x2a, 0x32, 0x0a, 0x11, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x47, 0x5f, - 0x4f, 0x53, 0x10, 0x01, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, - 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, - 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x19, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, + 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x13, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x04, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x22, 0x44, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x22, 0x0a, 0x0a, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x22, 0x6c, 0x0a, 0x16, + 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x0f, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3c, + 0x0a, 0x0e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2a, 0x6a, 0x0a, 0x11, + 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x51, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x51, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x43, 0x45, 0x5f, 0x49, 0x4e, + 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x52, 0x54, 0x5f, + 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x43, + 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x02, 0x2a, 0x32, 0x0a, 0x11, 0x53, 0x6f, 0x66, 0x74, + 0x77, 0x61, 0x72, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x0e, 0x53, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x47, 0x5f, 0x4f, 0x53, 0x10, 0x01, 0x42, 0x48, 0x5a, 0x46, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2590,7 +2907,7 @@ func file_bpmetadata_proto_rawDescGZIP() []byte { } var file_bpmetadata_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_bpmetadata_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_bpmetadata_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_bpmetadata_proto_goTypes = []interface{}{ (QuotaResourceType)(0), // 0: google.cloud.config.bpmetadata.QuotaResourceType (SoftwareGroupType)(0), // 1: google.cloud.config.bpmetadata.SoftwareGroupType @@ -2601,76 +2918,85 @@ var file_bpmetadata_proto_goTypes = []interface{}{ (*BlueprintContent)(nil), // 6: google.cloud.config.bpmetadata.BlueprintContent (*BlueprintInterface)(nil), // 7: google.cloud.config.bpmetadata.BlueprintInterface (*BlueprintRequirements)(nil), // 8: google.cloud.config.bpmetadata.BlueprintRequirements - (*BlueprintUI)(nil), // 9: google.cloud.config.bpmetadata.BlueprintUI - (*BlueprintRepoDetail)(nil), // 10: google.cloud.config.bpmetadata.BlueprintRepoDetail - (*BlueprintActuationTool)(nil), // 11: google.cloud.config.bpmetadata.BlueprintActuationTool - (*BlueprintDescription)(nil), // 12: google.cloud.config.bpmetadata.BlueprintDescription - (*BlueprintTimeEstimate)(nil), // 13: google.cloud.config.bpmetadata.BlueprintTimeEstimate - (*BlueprintCostEstimate)(nil), // 14: google.cloud.config.bpmetadata.BlueprintCostEstimate - (*BlueprintCloudProduct)(nil), // 15: google.cloud.config.bpmetadata.BlueprintCloudProduct - (*BlueprintOrgPolicyCheck)(nil), // 16: google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck - (*BlueprintQuotaDetail)(nil), // 17: google.cloud.config.bpmetadata.BlueprintQuotaDetail - (*BlueprintAuthor)(nil), // 18: google.cloud.config.bpmetadata.BlueprintAuthor - (*BlueprintSoftwareGroup)(nil), // 19: google.cloud.config.bpmetadata.BlueprintSoftwareGroup - (*BlueprintSoftware)(nil), // 20: google.cloud.config.bpmetadata.BlueprintSoftware - (*BlueprintSupport)(nil), // 21: google.cloud.config.bpmetadata.BlueprintSupport - (*BlueprintArchitecture)(nil), // 22: google.cloud.config.bpmetadata.BlueprintArchitecture - (*BlueprintMiscContent)(nil), // 23: google.cloud.config.bpmetadata.BlueprintMiscContent - (*BlueprintDiagram)(nil), // 24: google.cloud.config.bpmetadata.BlueprintDiagram - (*BlueprintListContent)(nil), // 25: google.cloud.config.bpmetadata.BlueprintListContent - (*BlueprintVariable)(nil), // 26: google.cloud.config.bpmetadata.BlueprintVariable - (*BlueprintVariableGroup)(nil), // 27: google.cloud.config.bpmetadata.BlueprintVariableGroup - (*BlueprintOutput)(nil), // 28: google.cloud.config.bpmetadata.BlueprintOutput - (*BlueprintRoles)(nil), // 29: google.cloud.config.bpmetadata.BlueprintRoles - nil, // 30: google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry - nil, // 31: google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry - nil, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry - (*BlueprintUIInput)(nil), // 33: google.cloud.config.bpmetadata.BlueprintUIInput - (*BlueprintUIOutput)(nil), // 34: google.cloud.config.bpmetadata.BlueprintUIOutput - (*structpb.Value)(nil), // 35: google.protobuf.Value + (*ProviderVersion)(nil), // 9: google.cloud.config.bpmetadata.ProviderVersion + (*BlueprintUI)(nil), // 10: google.cloud.config.bpmetadata.BlueprintUI + (*BlueprintRepoDetail)(nil), // 11: google.cloud.config.bpmetadata.BlueprintRepoDetail + (*BlueprintActuationTool)(nil), // 12: google.cloud.config.bpmetadata.BlueprintActuationTool + (*BlueprintDescription)(nil), // 13: google.cloud.config.bpmetadata.BlueprintDescription + (*BlueprintTimeEstimate)(nil), // 14: google.cloud.config.bpmetadata.BlueprintTimeEstimate + (*BlueprintCostEstimate)(nil), // 15: google.cloud.config.bpmetadata.BlueprintCostEstimate + (*BlueprintCloudProduct)(nil), // 16: google.cloud.config.bpmetadata.BlueprintCloudProduct + (*BlueprintOrgPolicyCheck)(nil), // 17: google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck + (*BlueprintQuotaDetail)(nil), // 18: google.cloud.config.bpmetadata.BlueprintQuotaDetail + (*BlueprintAuthor)(nil), // 19: google.cloud.config.bpmetadata.BlueprintAuthor + (*BlueprintSoftwareGroup)(nil), // 20: google.cloud.config.bpmetadata.BlueprintSoftwareGroup + (*BlueprintSoftware)(nil), // 21: google.cloud.config.bpmetadata.BlueprintSoftware + (*BlueprintSupport)(nil), // 22: google.cloud.config.bpmetadata.BlueprintSupport + (*BlueprintArchitecture)(nil), // 23: google.cloud.config.bpmetadata.BlueprintArchitecture + (*BlueprintMiscContent)(nil), // 24: google.cloud.config.bpmetadata.BlueprintMiscContent + (*BlueprintDiagram)(nil), // 25: google.cloud.config.bpmetadata.BlueprintDiagram + (*BlueprintListContent)(nil), // 26: google.cloud.config.bpmetadata.BlueprintListContent + (*BlueprintVariable)(nil), // 27: google.cloud.config.bpmetadata.BlueprintVariable + (*BlueprintConnection)(nil), // 28: google.cloud.config.bpmetadata.BlueprintConnection + (*ConnectionSource)(nil), // 29: google.cloud.config.bpmetadata.ConnectionSource + (*ConnectionSpec)(nil), // 30: google.cloud.config.bpmetadata.ConnectionSpec + (*BlueprintVariableGroup)(nil), // 31: google.cloud.config.bpmetadata.BlueprintVariableGroup + (*BlueprintOutput)(nil), // 32: google.cloud.config.bpmetadata.BlueprintOutput + (*BlueprintRoles)(nil), // 33: google.cloud.config.bpmetadata.BlueprintRoles + nil, // 34: google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry + nil, // 35: google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry + nil, // 36: google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry + (*BlueprintUIInput)(nil), // 37: google.cloud.config.bpmetadata.BlueprintUIInput + (*BlueprintUIOutput)(nil), // 38: google.cloud.config.bpmetadata.BlueprintUIOutput + (*structpb.Value)(nil), // 39: google.protobuf.Value } var file_bpmetadata_proto_depIdxs = []int32{ 3, // 0: google.cloud.config.bpmetadata.BlueprintMetadata.metadata:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta 4, // 1: google.cloud.config.bpmetadata.BlueprintMetadata.spec:type_name -> google.cloud.config.bpmetadata.BlueprintMetadataSpec - 30, // 2: google.cloud.config.bpmetadata.ResourceTypeMeta.labels:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry - 31, // 3: google.cloud.config.bpmetadata.ResourceTypeMeta.annotations:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry + 34, // 2: google.cloud.config.bpmetadata.ResourceTypeMeta.labels:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.LabelsEntry + 35, // 3: google.cloud.config.bpmetadata.ResourceTypeMeta.annotations:type_name -> google.cloud.config.bpmetadata.ResourceTypeMeta.AnnotationsEntry 5, // 4: google.cloud.config.bpmetadata.BlueprintMetadataSpec.info:type_name -> google.cloud.config.bpmetadata.BlueprintInfo 6, // 5: google.cloud.config.bpmetadata.BlueprintMetadataSpec.content:type_name -> google.cloud.config.bpmetadata.BlueprintContent 7, // 6: google.cloud.config.bpmetadata.BlueprintMetadataSpec.interfaces:type_name -> google.cloud.config.bpmetadata.BlueprintInterface 8, // 7: google.cloud.config.bpmetadata.BlueprintMetadataSpec.requirements:type_name -> google.cloud.config.bpmetadata.BlueprintRequirements - 9, // 8: google.cloud.config.bpmetadata.BlueprintMetadataSpec.ui:type_name -> google.cloud.config.bpmetadata.BlueprintUI - 10, // 9: google.cloud.config.bpmetadata.BlueprintInfo.source:type_name -> google.cloud.config.bpmetadata.BlueprintRepoDetail - 11, // 10: google.cloud.config.bpmetadata.BlueprintInfo.actuation_tool:type_name -> google.cloud.config.bpmetadata.BlueprintActuationTool - 12, // 11: google.cloud.config.bpmetadata.BlueprintInfo.description:type_name -> google.cloud.config.bpmetadata.BlueprintDescription - 13, // 12: google.cloud.config.bpmetadata.BlueprintInfo.deployment_duration:type_name -> google.cloud.config.bpmetadata.BlueprintTimeEstimate - 14, // 13: google.cloud.config.bpmetadata.BlueprintInfo.cost_estimate:type_name -> google.cloud.config.bpmetadata.BlueprintCostEstimate - 15, // 14: google.cloud.config.bpmetadata.BlueprintInfo.cloud_products:type_name -> google.cloud.config.bpmetadata.BlueprintCloudProduct - 17, // 15: google.cloud.config.bpmetadata.BlueprintInfo.quota_details:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail - 18, // 16: google.cloud.config.bpmetadata.BlueprintInfo.author:type_name -> google.cloud.config.bpmetadata.BlueprintAuthor - 19, // 17: google.cloud.config.bpmetadata.BlueprintInfo.software_groups:type_name -> google.cloud.config.bpmetadata.BlueprintSoftwareGroup - 21, // 18: google.cloud.config.bpmetadata.BlueprintInfo.support_info:type_name -> google.cloud.config.bpmetadata.BlueprintSupport - 16, // 19: google.cloud.config.bpmetadata.BlueprintInfo.org_policy_checks:type_name -> google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck - 22, // 20: google.cloud.config.bpmetadata.BlueprintContent.architecture:type_name -> google.cloud.config.bpmetadata.BlueprintArchitecture - 24, // 21: google.cloud.config.bpmetadata.BlueprintContent.diagrams:type_name -> google.cloud.config.bpmetadata.BlueprintDiagram - 25, // 22: google.cloud.config.bpmetadata.BlueprintContent.documentation:type_name -> google.cloud.config.bpmetadata.BlueprintListContent - 23, // 23: google.cloud.config.bpmetadata.BlueprintContent.sub_blueprints:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent - 23, // 24: google.cloud.config.bpmetadata.BlueprintContent.examples:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent - 26, // 25: google.cloud.config.bpmetadata.BlueprintInterface.variables:type_name -> google.cloud.config.bpmetadata.BlueprintVariable - 27, // 26: google.cloud.config.bpmetadata.BlueprintInterface.variable_groups:type_name -> google.cloud.config.bpmetadata.BlueprintVariableGroup - 28, // 27: google.cloud.config.bpmetadata.BlueprintInterface.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintOutput - 29, // 28: google.cloud.config.bpmetadata.BlueprintRequirements.roles:type_name -> google.cloud.config.bpmetadata.BlueprintRoles - 33, // 29: google.cloud.config.bpmetadata.BlueprintUI.input:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput - 34, // 30: google.cloud.config.bpmetadata.BlueprintUI.runtime:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput - 0, // 31: google.cloud.config.bpmetadata.BlueprintQuotaDetail.resource_type:type_name -> google.cloud.config.bpmetadata.QuotaResourceType - 32, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.quota_type:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry - 1, // 33: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.type:type_name -> google.cloud.config.bpmetadata.SoftwareGroupType - 20, // 34: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.software:type_name -> google.cloud.config.bpmetadata.BlueprintSoftware - 35, // 35: google.cloud.config.bpmetadata.BlueprintVariable.default_value:type_name -> google.protobuf.Value - 36, // [36:36] is the sub-list for method output_type - 36, // [36:36] is the sub-list for method input_type - 36, // [36:36] is the sub-list for extension type_name - 36, // [36:36] is the sub-list for extension extendee - 0, // [0:36] is the sub-list for field type_name + 10, // 8: google.cloud.config.bpmetadata.BlueprintMetadataSpec.ui:type_name -> google.cloud.config.bpmetadata.BlueprintUI + 11, // 9: google.cloud.config.bpmetadata.BlueprintInfo.source:type_name -> google.cloud.config.bpmetadata.BlueprintRepoDetail + 12, // 10: google.cloud.config.bpmetadata.BlueprintInfo.actuation_tool:type_name -> google.cloud.config.bpmetadata.BlueprintActuationTool + 13, // 11: google.cloud.config.bpmetadata.BlueprintInfo.description:type_name -> google.cloud.config.bpmetadata.BlueprintDescription + 14, // 12: google.cloud.config.bpmetadata.BlueprintInfo.deployment_duration:type_name -> google.cloud.config.bpmetadata.BlueprintTimeEstimate + 15, // 13: google.cloud.config.bpmetadata.BlueprintInfo.cost_estimate:type_name -> google.cloud.config.bpmetadata.BlueprintCostEstimate + 16, // 14: google.cloud.config.bpmetadata.BlueprintInfo.cloud_products:type_name -> google.cloud.config.bpmetadata.BlueprintCloudProduct + 18, // 15: google.cloud.config.bpmetadata.BlueprintInfo.quota_details:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail + 19, // 16: google.cloud.config.bpmetadata.BlueprintInfo.author:type_name -> google.cloud.config.bpmetadata.BlueprintAuthor + 20, // 17: google.cloud.config.bpmetadata.BlueprintInfo.software_groups:type_name -> google.cloud.config.bpmetadata.BlueprintSoftwareGroup + 22, // 18: google.cloud.config.bpmetadata.BlueprintInfo.support_info:type_name -> google.cloud.config.bpmetadata.BlueprintSupport + 17, // 19: google.cloud.config.bpmetadata.BlueprintInfo.org_policy_checks:type_name -> google.cloud.config.bpmetadata.BlueprintOrgPolicyCheck + 23, // 20: google.cloud.config.bpmetadata.BlueprintContent.architecture:type_name -> google.cloud.config.bpmetadata.BlueprintArchitecture + 25, // 21: google.cloud.config.bpmetadata.BlueprintContent.diagrams:type_name -> google.cloud.config.bpmetadata.BlueprintDiagram + 26, // 22: google.cloud.config.bpmetadata.BlueprintContent.documentation:type_name -> google.cloud.config.bpmetadata.BlueprintListContent + 24, // 23: google.cloud.config.bpmetadata.BlueprintContent.sub_blueprints:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent + 24, // 24: google.cloud.config.bpmetadata.BlueprintContent.examples:type_name -> google.cloud.config.bpmetadata.BlueprintMiscContent + 27, // 25: google.cloud.config.bpmetadata.BlueprintInterface.variables:type_name -> google.cloud.config.bpmetadata.BlueprintVariable + 31, // 26: google.cloud.config.bpmetadata.BlueprintInterface.variable_groups:type_name -> google.cloud.config.bpmetadata.BlueprintVariableGroup + 32, // 27: google.cloud.config.bpmetadata.BlueprintInterface.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintOutput + 33, // 28: google.cloud.config.bpmetadata.BlueprintRequirements.roles:type_name -> google.cloud.config.bpmetadata.BlueprintRoles + 9, // 29: google.cloud.config.bpmetadata.BlueprintRequirements.provider_versions:type_name -> google.cloud.config.bpmetadata.ProviderVersion + 37, // 30: google.cloud.config.bpmetadata.BlueprintUI.input:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput + 38, // 31: google.cloud.config.bpmetadata.BlueprintUI.runtime:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput + 0, // 32: google.cloud.config.bpmetadata.BlueprintQuotaDetail.resource_type:type_name -> google.cloud.config.bpmetadata.QuotaResourceType + 36, // 33: google.cloud.config.bpmetadata.BlueprintQuotaDetail.quota_type:type_name -> google.cloud.config.bpmetadata.BlueprintQuotaDetail.QuotaTypeEntry + 1, // 34: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.type:type_name -> google.cloud.config.bpmetadata.SoftwareGroupType + 21, // 35: google.cloud.config.bpmetadata.BlueprintSoftwareGroup.software:type_name -> google.cloud.config.bpmetadata.BlueprintSoftware + 39, // 36: google.cloud.config.bpmetadata.BlueprintVariable.default_value:type_name -> google.protobuf.Value + 28, // 37: google.cloud.config.bpmetadata.BlueprintVariable.connections:type_name -> google.cloud.config.bpmetadata.BlueprintConnection + 29, // 38: google.cloud.config.bpmetadata.BlueprintConnection.source:type_name -> google.cloud.config.bpmetadata.ConnectionSource + 30, // 39: google.cloud.config.bpmetadata.BlueprintConnection.spec:type_name -> google.cloud.config.bpmetadata.ConnectionSpec + 39, // 40: google.cloud.config.bpmetadata.BlueprintOutput.type:type_name -> google.protobuf.Value + 41, // [41:41] is the sub-list for method output_type + 41, // [41:41] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_bpmetadata_proto_init() } @@ -2765,7 +3091,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintUI); i { + switch v := v.(*ProviderVersion); i { case 0: return &v.state case 1: @@ -2777,7 +3103,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintRepoDetail); i { + switch v := v.(*BlueprintUI); i { case 0: return &v.state case 1: @@ -2789,7 +3115,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintActuationTool); i { + switch v := v.(*BlueprintRepoDetail); i { case 0: return &v.state case 1: @@ -2801,7 +3127,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintDescription); i { + switch v := v.(*BlueprintActuationTool); i { case 0: return &v.state case 1: @@ -2813,7 +3139,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintTimeEstimate); i { + switch v := v.(*BlueprintDescription); i { case 0: return &v.state case 1: @@ -2825,7 +3151,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintCostEstimate); i { + switch v := v.(*BlueprintTimeEstimate); i { case 0: return &v.state case 1: @@ -2837,7 +3163,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintCloudProduct); i { + switch v := v.(*BlueprintCostEstimate); i { case 0: return &v.state case 1: @@ -2849,7 +3175,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintOrgPolicyCheck); i { + switch v := v.(*BlueprintCloudProduct); i { case 0: return &v.state case 1: @@ -2861,7 +3187,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintQuotaDetail); i { + switch v := v.(*BlueprintOrgPolicyCheck); i { case 0: return &v.state case 1: @@ -2873,7 +3199,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintAuthor); i { + switch v := v.(*BlueprintQuotaDetail); i { case 0: return &v.state case 1: @@ -2885,7 +3211,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintSoftwareGroup); i { + switch v := v.(*BlueprintAuthor); i { case 0: return &v.state case 1: @@ -2897,7 +3223,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintSoftware); i { + switch v := v.(*BlueprintSoftwareGroup); i { case 0: return &v.state case 1: @@ -2909,7 +3235,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintSupport); i { + switch v := v.(*BlueprintSoftware); i { case 0: return &v.state case 1: @@ -2921,7 +3247,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintArchitecture); i { + switch v := v.(*BlueprintSupport); i { case 0: return &v.state case 1: @@ -2933,7 +3259,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintMiscContent); i { + switch v := v.(*BlueprintArchitecture); i { case 0: return &v.state case 1: @@ -2945,7 +3271,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintDiagram); i { + switch v := v.(*BlueprintMiscContent); i { case 0: return &v.state case 1: @@ -2957,7 +3283,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintListContent); i { + switch v := v.(*BlueprintDiagram); i { case 0: return &v.state case 1: @@ -2969,7 +3295,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintVariable); i { + switch v := v.(*BlueprintListContent); i { case 0: return &v.state case 1: @@ -2981,7 +3307,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintVariableGroup); i { + switch v := v.(*BlueprintVariable); i { case 0: return &v.state case 1: @@ -2993,7 +3319,7 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintOutput); i { + switch v := v.(*BlueprintConnection); i { case 0: return &v.state case 1: @@ -3005,6 +3331,54 @@ func file_bpmetadata_proto_init() { } } file_bpmetadata_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConnectionSource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConnectionSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintVariableGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueprintOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlueprintRoles); i { case 0: return &v.state @@ -3017,13 +3391,15 @@ func file_bpmetadata_proto_init() { } } } + file_bpmetadata_proto_msgTypes[28].OneofWrappers = []interface{}{} + file_bpmetadata_proto_msgTypes[30].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bpmetadata_proto_rawDesc, NumEnums: 2, - NumMessages: 31, + NumMessages: 35, NumExtensions: 0, NumServices: 0, }, diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index b69f5e15bba..35e2c47da26 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -9,6 +9,7 @@ package bpmetadata import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" reflect "reflect" sync "sync" ) @@ -20,6 +21,105 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Type of the alternate default. +type DisplayVariable_AlternateDefault_AlternateType int32 + +const ( + // Default + DisplayVariable_AlternateDefault_ALTERNATE_TYPE_UNSPECIFIED DisplayVariable_AlternateDefault_AlternateType = 0 + // A more secure default. + DisplayVariable_AlternateDefault_ALTERNATE_TYPE_SECURITY DisplayVariable_AlternateDefault_AlternateType = 1 +) + +// Enum value maps for DisplayVariable_AlternateDefault_AlternateType. +var ( + DisplayVariable_AlternateDefault_AlternateType_name = map[int32]string{ + 0: "ALTERNATE_TYPE_UNSPECIFIED", + 1: "ALTERNATE_TYPE_SECURITY", + } + DisplayVariable_AlternateDefault_AlternateType_value = map[string]int32{ + "ALTERNATE_TYPE_UNSPECIFIED": 0, + "ALTERNATE_TYPE_SECURITY": 1, + } +) + +func (x DisplayVariable_AlternateDefault_AlternateType) Enum() *DisplayVariable_AlternateDefault_AlternateType { + p := new(DisplayVariable_AlternateDefault_AlternateType) + *p = x + return p +} + +func (x DisplayVariable_AlternateDefault_AlternateType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DisplayVariable_AlternateDefault_AlternateType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_proto_enumTypes[0].Descriptor() +} + +func (DisplayVariable_AlternateDefault_AlternateType) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_proto_enumTypes[0] +} + +func (x DisplayVariable_AlternateDefault_AlternateType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DisplayVariable_AlternateDefault_AlternateType.Descriptor instead. +func (DisplayVariable_AlternateDefault_AlternateType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{1, 0, 0} +} + +// Visibility defines how the output is exposed. +// Gen: manually-authored. +type DisplayOutput_Visibility int32 + +const ( + // Default + DisplayOutput_VISIBILITY_UNSPECIFIED DisplayOutput_Visibility = 0 + // Expose output as root module output. + DisplayOutput_VISIBILITY_ROOT DisplayOutput_Visibility = 1 +) + +// Enum value maps for DisplayOutput_Visibility. +var ( + DisplayOutput_Visibility_name = map[int32]string{ + 0: "VISIBILITY_UNSPECIFIED", + 1: "VISIBILITY_ROOT", + } + DisplayOutput_Visibility_value = map[string]int32{ + "VISIBILITY_UNSPECIFIED": 0, + "VISIBILITY_ROOT": 1, + } +) + +func (x DisplayOutput_Visibility) Enum() *DisplayOutput_Visibility { + p := new(DisplayOutput_Visibility) + *p = x + return p +} + +func (x DisplayOutput_Visibility) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DisplayOutput_Visibility) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_proto_enumTypes[1].Descriptor() +} + +func (DisplayOutput_Visibility) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_proto_enumTypes[1] +} + +func (x DisplayOutput_Visibility) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DisplayOutput_Visibility.Descriptor instead. +func (DisplayOutput_Visibility) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{7, 0} +} + // BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. type BlueprintUIInput struct { state protoimpl.MessageState @@ -179,7 +279,8 @@ type DisplayVariable struct { // properties list and must belong to the same section (if any). // Optional. // Gen: manually-authored - BooleanGroup string `protobuf:"bytes,20,opt,name=boolean_group,json=booleanGroup,proto3" json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty"` // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" + BooleanGroup string `protobuf:"bytes,20,opt,name=boolean_group,json=booleanGroup,proto3" json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty"` // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" + AltDefaults []*DisplayVariable_AlternateDefault `protobuf:"bytes,21,rep,name=alt_defaults,json=altDefaults,proto3" json:"altDefaults,omitempty" yaml:"altDefaults,omitempty"` // @gotags: json:"altDefaults,omitempty" yaml:"altDefaults,omitempty" } func (x *DisplayVariable) Reset() { @@ -347,6 +448,13 @@ func (x *DisplayVariable) GetBooleanGroup() string { return "" } +func (x *DisplayVariable) GetAltDefaults() []*DisplayVariable_AlternateDefault { + if x != nil { + return x.AltDefaults + } + return nil +} + type ValueLabel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -762,7 +870,8 @@ type DisplayOutput struct { ShowInNotification bool `protobuf:"varint,2,opt,name=show_in_notification,json=showInNotification,proto3" json:"showInNotification,omitempty" yaml:"showInNotification,omitempty"` // @gotags: json:"showInNotification,omitempty" yaml:"showInNotification,omitempty" // label to display on the Output action button // Gen: manually-authored - Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty" yaml:"label,omitEmpty"` // @gotags: json:"label,omitempty" yaml:"label,omitEmpty" + Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty" yaml:"label,omitEmpty"` // @gotags: json:"label,omitempty" yaml:"label,omitEmpty" + Visibility DisplayOutput_Visibility `protobuf:"varint,4,opt,name=visibility,proto3,enum=google.cloud.config.bpmetadata.DisplayOutput_Visibility" json:"visibility,omitempty" yaml:"visibility,omitEmpty"` // @gotags: json:"visibility,omitempty" yaml:"visibility,omitEmpty" } func (x *DisplayOutput) Reset() { @@ -818,144 +927,244 @@ func (x *DisplayOutput) GetLabel() string { return "" } +func (x *DisplayOutput) GetVisibility() DisplayOutput_Visibility { + if x != nil { + return x.Visibility + } + return DisplayOutput_VISIBILITY_UNSPECIFIED +} + +// Alternate default value. +// This allows authors to define an alternative value for pre identified usecases such as security. +// If specified, this value can be used instead of the default value in BlueprintVariable. +// Gen: manually-authored. +type DisplayVariable_AlternateDefault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type DisplayVariable_AlternateDefault_AlternateType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.DisplayVariable_AlternateDefault_AlternateType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" + // Value of the alternate default. + Value *structpb.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty" yaml:"value,omitempty"` // @gotags: json:"value,omitempty" yaml:"value,omitempty" +} + +func (x *DisplayVariable_AlternateDefault) Reset() { + *x = DisplayVariable_AlternateDefault{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayVariable_AlternateDefault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayVariable_AlternateDefault) ProtoMessage() {} + +func (x *DisplayVariable_AlternateDefault) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayVariable_AlternateDefault.ProtoReflect.Descriptor instead. +func (*DisplayVariable_AlternateDefault) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *DisplayVariable_AlternateDefault) GetType() DisplayVariable_AlternateDefault_AlternateType { + if x != nil { + return x.Type + } + return DisplayVariable_AlternateDefault_ALTERNATE_TYPE_UNSPECIFIED +} + +func (x *DisplayVariable_AlternateDefault) GetValue() *structpb.Value { + if x != nil { + return x.Value + } + return nil +} + var File_bpmetadata_ui_proto protoreflect.FileDescriptor var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x0a, 0x13, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x81, - 0x03, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x75, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x81, 0x03, 0x0a, + 0x10, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, + 0x49, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x0e, + 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x1a, 0x6d, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, - 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x1a, 0x6d, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0xae, 0x05, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, - 0x67, 0x65, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, - 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, - 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, - 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x61, - 0x78, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x11, 0x78, - 0x5f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x0f, 0x78, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, - 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x56, 0x0a, 0x11, 0x65, 0x6e, - 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x88, 0x08, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, + 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6d, + 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, 0x0a, 0x11, 0x78, 0x5f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x78, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1e, + 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x56, 0x0a, 0x11, 0x65, 0x6e, 0x75, 0x6d, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x11, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, + 0x0f, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, + 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, + 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x63, 0x0a, 0x0c, 0x61, + 0x6c, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x61, 0x6c, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x1a, 0xf2, 0x01, 0x0a, 0x10, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x62, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4c, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x4c, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, + 0x49, 0x54, 0x59, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, 0x38, 0x0a, 0x0a, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, + 0x0a, 0x0c, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, + 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, + 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, + 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x52, 0x0f, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, - 0x65, 0x61, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x04, 0x08, - 0x13, 0x10, 0x14, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, - 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, - 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, - 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x0c, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, - 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, - 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, - 0x74, 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, + 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x97, 0x02, 0x0a, 0x0d, 0x44, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, + 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, + 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x58, 0x0a, 0x0a, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, - 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, - 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, - 0x22, 0x7e, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, - 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, - 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, - 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, - 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x22, 0x3d, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, + 0x0f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x4f, 0x4f, 0x54, + 0x10, 0x01, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, + 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -970,35 +1179,44 @@ func file_bpmetadata_ui_proto_rawDescGZIP() []byte { return file_bpmetadata_ui_proto_rawDescData } -var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_bpmetadata_ui_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_bpmetadata_ui_proto_goTypes = []interface{}{ - (*BlueprintUIInput)(nil), // 0: google.cloud.config.bpmetadata.BlueprintUIInput - (*DisplayVariable)(nil), // 1: google.cloud.config.bpmetadata.DisplayVariable - (*ValueLabel)(nil), // 2: google.cloud.config.bpmetadata.ValueLabel - (*DisplaySection)(nil), // 3: google.cloud.config.bpmetadata.DisplaySection - (*BooleanGroup)(nil), // 4: google.cloud.config.bpmetadata.BooleanGroup - (*BlueprintUIOutput)(nil), // 5: google.cloud.config.bpmetadata.BlueprintUIOutput - (*UIActionItem)(nil), // 6: google.cloud.config.bpmetadata.UIActionItem - (*DisplayOutput)(nil), // 7: google.cloud.config.bpmetadata.DisplayOutput - nil, // 8: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - nil, // 9: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - (*GooglePropertyExtension)(nil), // 10: google.cloud.config.bpmetadata.GooglePropertyExtension + (DisplayVariable_AlternateDefault_AlternateType)(0), // 0: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.AlternateType + (DisplayOutput_Visibility)(0), // 1: google.cloud.config.bpmetadata.DisplayOutput.Visibility + (*BlueprintUIInput)(nil), // 2: google.cloud.config.bpmetadata.BlueprintUIInput + (*DisplayVariable)(nil), // 3: google.cloud.config.bpmetadata.DisplayVariable + (*ValueLabel)(nil), // 4: google.cloud.config.bpmetadata.ValueLabel + (*DisplaySection)(nil), // 5: google.cloud.config.bpmetadata.DisplaySection + (*BooleanGroup)(nil), // 6: google.cloud.config.bpmetadata.BooleanGroup + (*BlueprintUIOutput)(nil), // 7: google.cloud.config.bpmetadata.BlueprintUIOutput + (*UIActionItem)(nil), // 8: google.cloud.config.bpmetadata.UIActionItem + (*DisplayOutput)(nil), // 9: google.cloud.config.bpmetadata.DisplayOutput + nil, // 10: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + (*DisplayVariable_AlternateDefault)(nil), // 11: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault + nil, // 12: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + (*GooglePropertyExtension)(nil), // 13: google.cloud.config.bpmetadata.GooglePropertyExtension + (*structpb.Value)(nil), // 14: google.protobuf.Value } var file_bpmetadata_ui_proto_depIdxs = []int32{ - 8, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - 3, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection - 4, // 2: google.cloud.config.bpmetadata.BlueprintUIInput.boolean_groups:type_name -> google.cloud.config.bpmetadata.BooleanGroup - 10, // 3: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension - 2, // 4: google.cloud.config.bpmetadata.DisplayVariable.enum_value_labels:type_name -> google.cloud.config.bpmetadata.ValueLabel - 6, // 5: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem - 9, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - 1, // 7: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable - 7, // 8: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 10, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + 5, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection + 6, // 2: google.cloud.config.bpmetadata.BlueprintUIInput.boolean_groups:type_name -> google.cloud.config.bpmetadata.BooleanGroup + 13, // 3: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension + 4, // 4: google.cloud.config.bpmetadata.DisplayVariable.enum_value_labels:type_name -> google.cloud.config.bpmetadata.ValueLabel + 11, // 5: google.cloud.config.bpmetadata.DisplayVariable.alt_defaults:type_name -> google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault + 8, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem + 12, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + 1, // 8: google.cloud.config.bpmetadata.DisplayOutput.visibility:type_name -> google.cloud.config.bpmetadata.DisplayOutput.Visibility + 3, // 9: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable + 0, // 10: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.type:type_name -> google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.AlternateType + 14, // 11: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.value:type_name -> google.protobuf.Value + 9, // 12: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput + 13, // [13:13] is the sub-list for method output_type + 13, // [13:13] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name } func init() { file_bpmetadata_ui_proto_init() } @@ -1104,19 +1322,32 @@ func file_bpmetadata_ui_proto_init() { return nil } } + file_bpmetadata_ui_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayVariable_AlternateDefault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bpmetadata_ui_proto_rawDesc, - NumEnums: 0, - NumMessages: 10, + NumEnums: 2, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, GoTypes: file_bpmetadata_ui_proto_goTypes, DependencyIndexes: file_bpmetadata_ui_proto_depIdxs, + EnumInfos: file_bpmetadata_ui_proto_enumTypes, MessageInfos: file_bpmetadata_ui_proto_msgTypes, }.Build() File_bpmetadata_ui_proto = out.File diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index 1a0c23565e7..95beb5e1888 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -192,6 +192,21 @@ message BlueprintRequirements { // Gen: auto-generated - all services required for the blueprint in test/setup/main.tf // as "activate_apis" in the project module. repeated string services = 2; // @gotags: json:"services,omitempty" yaml:"services,omitempty" + + // Required provider versions. + // Gen: auto-generated from required providers block. + repeated ProviderVersion provider_versions = 3; // @gotags: json:"versions,omitempty" yaml:"providerVersions,omitempty" +} + +// ProviderVersion defines the required version for a provider. +message ProviderVersion { + // Provider source of form [hostname]/namespace/name. + // Hostname is optional defaulting to Terraform registry. + // Gen: auto-generated from required providers block. + string source = 1; // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Version constraint string. + // Gen: auto-generated from required providers block. + string version = 2; // @gotags: json:"version,omitempty" yaml:"version,omitempty" } // BlueprintUI is the top-level structure for holding UI specific metadata. @@ -453,6 +468,45 @@ message BlueprintVariable { string var_type = 3; // @gotags: json:"varType,omitempty" yaml:"varType,omitempty" google.protobuf.Value default_value = 4; // @gotags: json:"defaultValue,omitempty" yaml:"defaultValue,omitempty" bool required = 5; // @gotags: json:"required,omitempty" yaml:"required,omitempty" + // Incoming connections to this variable. + // Connections are outputs from other blueprints that can be potentially + // connected to this variable. + // Gen: manually-authored. + repeated BlueprintConnection connections = 6; // @gotags: json:"connections,omitempty" yaml:"connections,omitempty" +} + +// Defines an incoming connection from a blueprint. +message BlueprintConnection { + // Source of the connection. + // Gen: manually-authored. + ConnectionSource source = 1; // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Connection specifications. + // Gen: manually-authored. + ConnectionSpec spec = 2; // @gotags: json:"spec,omitempty" yaml:"spec,omitempty" +} + +// Defines the source of a connection. +message ConnectionSource { + // Source of the connection. Defined using the same format as module source + // of form [hostname]/namespace/name/provider for registry references and + // unprefixed github.com URLs for github references. + // Gen: manually-authored. + string source = 1; // @gotags: json:"source,omitempty" yaml:"source,omitempty" + // Version constraint syntax using the same format as module version + // constraints. + // Gen: manually-authored. + string version = 2; // @gotags: json:"version,omitempty" yaml:"version,omitempty" +} + +// Defines the specifications of a connection. +message ConnectionSpec { + // Output expression identifying output being connected to variable. + // This can be the output name or more complex expression like attribuite notation. + // Gen: manually-authored. + string output_expr = 1; // @gotags: json:"outputExpr,omitempty" yaml:"outputExpr,omitempty" + // Optional dot separated attribuite notation to connect to a specific object field of the input variable. + // Gen: manually-authored. + optional string input_path = 2; // @gotags: json:"inputPath,omitempty" yaml:"inputPath,omitempty" } // BlueprintVariableGroup is manually entered. @@ -465,6 +519,10 @@ message BlueprintVariableGroup { message BlueprintOutput { string name = 1; // @gotags: json:"name" yaml:"name" string description = 2; // @gotags: json:"description,omitempty" yaml:"description,omitempty" + // Serialized type representation of the output value. + // Gen: manually-authored but will be automated in the future. + optional google.protobuf.Value type = 3; // @gotags: json:"type,omitempty" yaml:"type,omitempty" + } message BlueprintRoles { diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index d4d4a834388..d264a531389 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package google.cloud.config.bpmetadata; +import "google/protobuf/struct.proto"; import "bpmetadata_ui_ext.proto"; // TODO: update copybara configuration for go to java package transformation @@ -126,6 +127,24 @@ message DisplayVariable { // Optional. // Gen: manually-authored string boolean_group = 20; // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" + + // Alternate default value. + // This allows authors to define an alternative value for pre identified usecases such as security. + // If specified, this value can be used instead of the default value in BlueprintVariable. + // Gen: manually-authored. + message AlternateDefault { + // Type of the alternate default. + enum AlternateType { + // Default + ALTERNATE_TYPE_UNSPECIFIED = 0; + // A more secure default. + ALTERNATE_TYPE_SECURITY = 1; + } + AlternateType type = 1; // @gotags: json:"type,omitempty" yaml:"type,omitempty" + // Value of the alternate default. + google.protobuf.Value value = 2; // @gotags: json:"value,omitempty" yaml:"value,omitempty" + } + repeated AlternateDefault alt_defaults = 21; // @gotags: json:"altDefaults,omitempty" yaml:"altDefaults,omitempty" } message ValueLabel { @@ -248,4 +267,14 @@ message DisplayOutput { // label to display on the Output action button // Gen: manually-authored string label = 3; // @gotags: json:"label,omitempty" yaml:"label,omitEmpty" + + // Visibility defines how the output is exposed. + // Gen: manually-authored. + enum Visibility { + // Default + VISIBILITY_UNSPECIFIED = 0; + // Expose output as root module output. + VISIBILITY_ROOT = 1; + } + Visibility visibility = 4; // @gotags: json:"visibility,omitempty" yaml:"visibility,omitEmpty" } From e2600e4579582d26d59cae06e2978c59a57a3c2d Mon Sep 17 00:00:00 2001 From: hariprabhaam <110563592+hariprabhaam@users.noreply.github.com> Date: Mon, 8 Jul 2024 21:25:34 +0000 Subject: [PATCH 1060/1371] chore: onboard terraform-google-bigtable (#2431) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/locals.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index d66fd0dcfd8..f9ecd8af61c 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -849,6 +849,13 @@ locals { owners = ["prabhu34"] topics = join(",", [local.common_topics.containers, local.common_topics.devtools]) }, + { + name = "terraform-google-bigtable" + org = "GoogleCloudPlatform" + description = "Create and manage Google Bigtable resources" + owners = ["hariprabhaam"] + topics = local.common_topics.da + }, { name = "terraform-google-secure-web-proxy" org = "GoogleCloudPlatform" From 7e5140e908c45b456d51c5425e548f066b14189c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:31:17 -0700 Subject: [PATCH 1061/1371] chore(deps): bump google.golang.org/grpc from 1.64.0 to 1.64.1 in /cli (#2446) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli/go.mod | 2 +- cli/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 0e292ca1612..ba7fc7c9933 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -186,7 +186,7 @@ require ( google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/grpc v1.64.0 // indirect + google.golang.org/grpc v1.64.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 9d433b2596e..f6a6bf5ff17 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -690,8 +690,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= 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= From e6cc9852c1ed324ef512b47b90a961ee84dfd89e Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Tue, 9 Jul 2024 19:39:47 -0400 Subject: [PATCH 1062/1371] fix: Disable JSS 15.1 periodic tests (#2445) Co-authored-by: Awais Malik --- infra/terraform/test-org/org/github.tf | 3 ++- infra/terraform/test-org/org/locals.tf | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/org/github.tf b/infra/terraform/test-org/org/github.tf index cfb30d91b15..a2423ba156a 100644 --- a/infra/terraform/test-org/org/github.tf +++ b/infra/terraform/test-org/org/github.tf @@ -34,9 +34,10 @@ variable "temp_allow_invalid_owners" { type = list(string) description = "Googlers added as owners on TF blueprint repos but are not part of the GCP or TGM orgs yet." default = [ - "dulacp", "nidhi0710", # remove once heynidhi@ is added to GCP org "sylvioneto", + "erictune", + "megelatim", ] } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index f9ecd8af61c..ba8aec0f6ee 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -642,7 +642,7 @@ locals { description = "Deploy a multizone Java application" owners = ["donmccasland"] groups = [local.jss_common_group] - enable_periodic = true + enable_periodic = false lint_env = { ENABLE_BPMETADATA = "1" } From 289eba32e1afe801d4aadbf1a8a46b320c0d342a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 10 Jul 2024 02:39:11 +0200 Subject: [PATCH 1063/1371] chore(deps): update dependency go to v1.22.5 (#2444) Co-authored-by: Awais Malik --- infra/blueprint-test/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index b973a37ef8f..ec39b16ffe7 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -2,7 +2,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.22 -toolchain go1.22.4 +toolchain go1.22.5 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d From c9b5c3b11bb04219f770b9576531df79a9aba35e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 10 Jul 2024 23:58:39 +0200 Subject: [PATCH 1064/1371] chore(deps): update module google.golang.org/api to v0.187.0 (#2443) Co-authored-by: Awais Malik --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 5a7d92b9ca7..40381dd318e 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.186.0 + google.golang.org/api v0.187.0 ) require ( - cloud.google.com/go/auth v0.6.0 // indirect + cloud.google.com/go/auth v0.6.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -40,7 +40,7 @@ require ( golang.org/x/sys v0.21.0 // indirect golang.org/x/term v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect google.golang.org/grpc v1.64.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index ab0006858b0..de2a596e035 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g= -cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g= +cloud.google.com/go/auth v0.6.1 h1:T0Zw1XM5c1GlpN2HYr2s+m3vr1p2wy+8VN+Z1FKxW38= +cloud.google.com/go/auth v0.6.1/go.mod h1:eFHG7zDzbXHKmjJddFG/rBlcGp6t25SwRUiEQSlO4x4= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= @@ -137,18 +137,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug= -google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc= +google.golang.org/api v0.187.0 h1:Mxs7VATVC2v7CY+7Xwm4ndkX71hpElcvx0D1Ji/p1eo= +google.golang.org/api v0.187.0/go.mod h1:KIHlTc4x7N7gKKuVsdmfBXN13yEEWXWFURWY6SBp2gk= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 h1:CUiCqkPw1nNrNQzCCG4WA65m0nAmQiwXHpub3dNyruU= +google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d h1:PksQg4dV6Sem3/HkBX+Ltq8T0ke0PKIRBNBatoDTVls= google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3 h1:QW9+G6Fir4VcRXVH8x3LilNAb6cxBGLa6+GM4hRwexE= google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3/go.mod h1:kdrSS/OiLkPrNUpzD4aHgCq2rVuC/YRxok32HXZ4vRE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From cad30b0676fea8f9281eb8b6b4e1724a336bde9e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 11 Jul 2024 00:02:40 +0200 Subject: [PATCH 1065/1371] chore(deps): update github/codeql-action action to v3.25.11 (#2442) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 54f958356f3..fa70254a9b8 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/init@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/autobuild@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/analyze@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5cedc5d9316..f6e6bf0d575 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 with: sarif_file: results.sarif From 74cc87417c15413e43adb292c49e627d3e647397 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 11 Jul 2024 00:06:20 +0200 Subject: [PATCH 1066/1371] chore(deps): update actions/setup-go action to v5.0.2 (#2447) --- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/test-cli.yml | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index fa70254a9b8..55663c36265 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: - name: Install Go if: matrix.language == 'go' - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'go.work' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 52a318dc38f..eb5eeefa051 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/utils/fbf/go.mod cache-dependency-path: infra/utils/fbf/go.sum diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 172af66297f..99908289e43 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -25,7 +25,7 @@ jobs: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: ${{ matrix.folder }}/go.mod cache-dependency-path: ${{ matrix.folder }}/go.sum diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index c1e87b9b957..908f2894e97 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum @@ -39,7 +39,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 6a926e2e556..382d3751647 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: tflint-ruleset-blueprint/go.mod cache-dependency-path: tflint-ruleset-blueprint/go.sum @@ -47,7 +47,7 @@ jobs: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Set up Go - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'tflint-ruleset-blueprint/go.mod' - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index bcb5cd60c68..be5df384be5 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 04e37488ee3..de34bde2362 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Set up Go - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'tflint-ruleset-blueprint/go.mod' - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index e72824d6407..2c030f84b42 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum From 8564e948037cce59c7d2b1894cd1fb14af1fe1c4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 11 Jul 2024 00:53:08 +0200 Subject: [PATCH 1067/1371] fix(deps): update go modules (#2441) --- infra/blueprint-test/go.mod | 6 +++--- infra/blueprint-test/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index ec39b16ffe7..e1a4a404fcc 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,15 +7,15 @@ toolchain go1.22.5 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.46.15 - github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb + github.com/gruntwork-io/terratest v0.46.16 + github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 github.com/hashicorp/terraform-json v0.22.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.17.1 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.18.0 + golang.org/x/mod v0.19.0 sigs.k8s.io/kustomize/kyaml v0.17.1 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 65e53ecacdf..f8aa1f2006b 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -378,8 +378,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.15 h1:qfqjTFveymaqe7aAWn3LjlK0SwVGpRfoOut5ggNyfQ8= -github.com/gruntwork-io/terratest v0.46.15/go.mod h1:9bd22zAojjBBiYdsp+AR1iyl2iB6bRUVm2Yf1AFhfrA= +github.com/gruntwork-io/terratest v0.46.16 h1:l+HHuU7lNLwoAl2sP8zkYJy0uoE2Mwha2nw+rim+OhQ= +github.com/gruntwork-io/terratest v0.46.16/go.mod h1:oywHw1cFKXSYvKPm27U7quZVzDUlA22H2xUrKCe26xM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -399,8 +399,8 @@ github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+Db github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb h1:6gCfY5aQdQgRr0G5VDjnV5ENpd+hTamWaZfVz+lJ724= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 h1:ApSEBSu6EhcJWCdwSMd1VbQUeJDtB1jAOHfIxjZyMTc= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -581,8 +581,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From c6e470ed8be9863a1ebdd7186ae544158dbc0443 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 11 Jul 2024 01:03:42 +0200 Subject: [PATCH 1068/1371] chore(deps): update module google.golang.org/api to v0.188.0 (#2448) --- infra/utils/fbf/go.mod | 18 +++++++++--------- infra/utils/fbf/go.sum | 38 +++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 40381dd318e..7845b2abeac 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,13 +6,13 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.187.0 + google.golang.org/api v0.188.0 ) require ( - cloud.google.com/go/auth v0.6.1 // indirect + cloud.google.com/go/auth v0.7.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.4.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -34,14 +34,14 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/net v0.27.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect - google.golang.org/grpc v1.64.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect + google.golang.org/grpc v1.64.1 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index de2a596e035..c9cc41835d1 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,10 +1,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.6.1 h1:T0Zw1XM5c1GlpN2HYr2s+m3vr1p2wy+8VN+Z1FKxW38= -cloud.google.com/go/auth v0.6.1/go.mod h1:eFHG7zDzbXHKmjJddFG/rBlcGp6t25SwRUiEQSlO4x4= +cloud.google.com/go/auth v0.7.0 h1:kf/x9B3WTbBUHkC+1VS8wwwli9TzhSt0vSTVBmMR8Ts= +cloud.google.com/go/auth v0.7.0/go.mod h1:D+WqdrpcjmiCgWrXmLLxOVq1GACoE36chW6KXoEvuIw= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.4.0 h1:vHzJCWaM4g8XIcm8kopr3XmDA4Gy/lblD3EhhSux05c= +cloud.google.com/go/compute/metadata v0.4.0/go.mod h1:SIQh1Kkb4ZJ8zJ874fqVkslA29PRXuleyj6vOzlbK7M= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM= @@ -95,8 +95,8 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -107,8 +107,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -123,10 +123,10 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= @@ -137,25 +137,25 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.187.0 h1:Mxs7VATVC2v7CY+7Xwm4ndkX71hpElcvx0D1Ji/p1eo= -google.golang.org/api v0.187.0/go.mod h1:KIHlTc4x7N7gKKuVsdmfBXN13yEEWXWFURWY6SBp2gk= +google.golang.org/api v0.188.0 h1:51y8fJ/b1AaaBRJr4yWm96fPcuxSo0JcegXE3DaHQHw= +google.golang.org/api v0.188.0/go.mod h1:VR0d+2SIiWOYG3r/jdm7adPW9hI2aRv9ETOSCQ9Beag= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d h1:PksQg4dV6Sem3/HkBX+Ltq8T0ke0PKIRBNBatoDTVls= +google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b h1:dSTjko30weBaMj3eERKc0ZVXW4GudCswM3m+P++ukU0= google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3 h1:QW9+G6Fir4VcRXVH8x3LilNAb6cxBGLa6+GM4hRwexE= google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3/go.mod h1:kdrSS/OiLkPrNUpzD4aHgCq2rVuC/YRxok32HXZ4vRE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b h1:04+jVzTs2XBnOZcPsLnmrTGqltqJbZQ1Ey26hjYdQQ0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= 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= From f1bf6f622cd5d8ce9048872e25c94213fa6cbb27 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 15 Jul 2024 23:00:50 +0200 Subject: [PATCH 1069/1371] chore(deps): update actions/upload-artifact action to v4.3.4 (#2451) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index be5df384be5..622820fa3f8 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f6e6bf0d575..19bd24c13f2 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 with: name: SARIF file path: results.sarif From 787ebff48de3e0b9159ea935983cfa7a3dde2731 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 15 Jul 2024 21:19:09 -0500 Subject: [PATCH 1070/1371] feat: support connection and associated metadata in validate (#2453) Co-authored-by: Andrew Peabody --- .../schema/gcp-blueprint-metadata.json | 98 ++++++++++++++++++- cli/bpmetadata/schema/generate.go | 6 ++ cli/bpmetadata/validate_test.go | 5 + .../schema/valid-metadata-connections.yaml | 45 +++++++++ 4 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 cli/testdata/bpmetadata/schema/valid-metadata-connections.yaml diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 2c9ea851b1e..96cf07fba92 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -73,6 +73,18 @@ "pageUrl" ] }, + "BlueprintConnection": { + "properties": { + "source": { + "$ref": "#/$defs/ConnectionSource" + }, + "spec": { + "$ref": "#/$defs/ConnectionSpec" + } + }, + "additionalProperties": false, + "type": "object" + }, "BlueprintContent": { "properties": { "architecture": { @@ -357,7 +369,8 @@ }, "description": { "type": "string" - } + }, + "type": true }, "additionalProperties": false, "type": "object", @@ -426,6 +439,12 @@ "type": "string" }, "type": "array" + }, + "versions": { + "items": { + "$ref": "#/$defs/ProviderVersion" + }, + "type": "array" } }, "additionalProperties": false, @@ -597,6 +616,12 @@ "defaultValue": true, "required": { "type": "boolean" + }, + "connections": { + "items": { + "$ref": "#/$defs/BlueprintConnection" + }, + "type": "array" } }, "additionalProperties": false, @@ -645,6 +670,30 @@ "title" ] }, + "ConnectionSource": { + "properties": { + "source": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + }, + "ConnectionSpec": { + "properties": { + "outputExpr": { + "type": "string" + }, + "inputPath": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + }, "DisplayOutput": { "properties": { "openInNewTab": { @@ -655,6 +704,16 @@ }, "label": { "type": "string" + }, + "visibility": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] } }, "additionalProperties": false, @@ -745,6 +804,12 @@ }, "booleanGroup": { "type": "string" + }, + "altDefaults": { + "items": { + "$ref": "#/$defs/DisplayVariable_AlternateDefault" + }, + "type": "array" } }, "additionalProperties": false, @@ -754,6 +819,25 @@ "title" ] }, + "DisplayVariable_AlternateDefault": { + "properties": { + "type": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "value": { + "$ref": "#/$defs/Value" + } + }, + "additionalProperties": false, + "type": "object" + }, "GCEDiskSizeExtension": { "properties": { "diskTypeVariable": { @@ -1060,6 +1144,18 @@ "roles" ] }, + "ProviderVersion": { + "properties": { + "source": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + }, "ResourceTypeMeta": { "properties": { "name": { diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go index 1f72bc357cb..3d350dbe570 100644 --- a/cli/bpmetadata/schema/generate.go +++ b/cli/bpmetadata/schema/generate.go @@ -51,6 +51,12 @@ func GenerateSchema() ([]byte, error) { if defExists { vDef.Properties.Set("defaultValue", jsonschema.TrueSchema) } + // JSON schema seems to infer google.protobuf.Value as object type + // so we use the same workaround as above. + oDef, defExists := s.Definitions["BlueprintOutput"] + if defExists { + oDef.Properties.Set("type", jsonschema.TrueSchema) + } sData, err := json.MarshalIndent(s, "", " ") if err != nil { diff --git a/cli/bpmetadata/validate_test.go b/cli/bpmetadata/validate_test.go index 785b85ef0e0..f75b6ac77a4 100644 --- a/cli/bpmetadata/validate_test.go +++ b/cli/bpmetadata/validate_test.go @@ -27,6 +27,11 @@ func TestValidateMetadata(t *testing.T) { path: "valid-metadata.yaml", wantErr: false, }, + { + name: "valid metadata with connections", + path: "valid-metadata-connections.yaml", + wantErr: false, + }, { name: "invalid metadata - title missing", path: "invalid-metadata.yaml", diff --git a/cli/testdata/bpmetadata/schema/valid-metadata-connections.yaml b/cli/testdata/bpmetadata/schema/valid-metadata-connections.yaml new file mode 100644 index 00000000000..a3cd295fae9 --- /dev/null +++ b/cli/testdata/bpmetadata/schema/valid-metadata-connections.yaml @@ -0,0 +1,45 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-module +spec: + info: + title: Terraform Google Module + source: + repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git + sourceType: git + interfaces: + variables: + - name: foo + connections: + - source: + source: "GoogleCloudPlatform/terraform-google-module1" + version: "~> v1" + spec: + outputExpr: "field1" + inputPath: "nested.field" + - name: bar + connections: + - source: + source: "GoogleCloudPlatform/terraform-google-module1" + version: "~> v1" + spec: + outputExpr: "field1" + - source: + source: "GoogleCloudPlatform/terraform-google-module1" + version: "~> v2" + spec: + outputExpr: "field2" + - name: baz + outputs: + - name: qux + type: [ + "object", + { + "VAR1": "string", + "VAR2": "number" + } + ] + + + From 2883b3f1115773226eef949cb4ff488df7eb9f29 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Tue, 16 Jul 2024 10:58:11 -0500 Subject: [PATCH 1071/1371] chore: bump cli version (#2454) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 59a19819e35..c6916162cde 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.3.6 +VERSION=v1.4.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From 4eb6ee13448ef505eace6b36d474edd2e5d463f4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 16 Jul 2024 10:57:38 -0700 Subject: [PATCH 1072/1371] chore(test-org): exclude modules from combined go updates (#2452) --- infra/terraform/test-org/github/resources/renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index a7822210d77..0bf057c78ee 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -47,6 +47,7 @@ }, { "matchManagers": ["regex", "gomod"], + "matchFileNames": ["!(modules/**)"], "groupName": "go modules and/or dev-tools" }, { From 50373717e73b67f03d1dd394e527cbf198d4dc88 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Wed, 17 Jul 2024 08:54:48 +1000 Subject: [PATCH 1073/1371] chore: Update codeowners for team-egg, dynamic JSS applications (#2450) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index ba8aec0f6ee..3653345c3d4 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -616,7 +616,7 @@ locals { description = "Deploy a dynamic python webapp" owners = ["glasnt", "donmccasland"] homepage_url = "avocano.dev" - groups = [local.jss_common_group, "torus-dpe"] + groups = [local.jss_common_group, "team-egg"] enable_periodic = true lint_env = { ENABLE_BPMETADATA = "1" @@ -627,9 +627,9 @@ locals { short_name = "dynamic-javascript-webapp" org = "GoogleCloudPlatform" description = "Deploy a dynamic javascript webapp" - owners = ["glasnt", "donmccasland"] + owners = ["lukeschlangen", "donmccasland"] homepage_url = "avocano.dev" - groups = [local.jss_common_group, "torus-dpe"] + groups = [local.jss_common_group, "team-egg", "developer-journey-app-approvers"] enable_periodic = true lint_env = { ENABLE_BPMETADATA = "1" @@ -767,7 +767,7 @@ locals { short_name = "cloud-deployment-gce" org = "GoogleCloudPlatform" description = "Deploy a change to a live stateful service (Java on GCE)" - groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] + groups = ["team-egg", "dee-platform-ops", "dee-data-ai", local.jss_common_group] enable_periodic = true lint_env = { ENABLE_BPMETADATA = "1" @@ -778,7 +778,7 @@ locals { short_name = "cloud-deployment-gke" org = "GoogleCloudPlatform" description = "Deploy a change to a live stateful service (Go on GKE)" - groups = ["torus-dpe", "dee-platform-ops", "dee-data-ai", local.jss_common_group] + groups = ["team-egg", "dee-platform-ops", "dee-data-ai", local.jss_common_group] enable_periodic = true lint_env = { ENABLE_BPMETADATA = "1" From 078254d31880a6357c98aedb974592de6ca158fa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Jul 2024 01:13:30 +0200 Subject: [PATCH 1074/1371] chore(deps): update go modules (#2429) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 48 ++++++++++++------------ cli/go.sum | 102 +++++++++++++++++++++++++-------------------------- 3 files changed, 75 insertions(+), 77 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index c6916162cde..6b0a51407ec 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.4.0 +VERSION=v1.4.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index ba7fc7c9933..35d9b23fc1a 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,20 +3,20 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.22 require ( - cloud.google.com/go/asset v1.19.1 - cloud.google.com/go/storage v1.42.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1 + cloud.google.com/go/asset v1.19.3 + cloud.google.com/go/storage v1.43.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.0 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.17.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 github.com/golang/protobuf v1.5.4 - github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2 + github.com/gomarkdown/markdown v0.0.0-20240626202925-2eda941fd024 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v62 v62.0.0 - github.com/hashicorp/hcl/v2 v2.20.1 - github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb + github.com/hashicorp/hcl/v2 v2.21.0 + github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 @@ -26,7 +26,7 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v0.0.23 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.65.0 + github.com/open-policy-agent/opa v0.66.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.1 @@ -36,22 +36,22 @@ require ( golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 golang.org/x/oauth2 v0.21.0 golang.org/x/text v0.16.0 - google.golang.org/api v0.184.0 + google.golang.org/api v0.188.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.114.0 // indirect - cloud.google.com/go/accesscontextmanager v1.8.7 // indirect - cloud.google.com/go/auth v0.5.1 // indirect + cloud.google.com/go v0.115.0 // indirect + cloud.google.com/go/accesscontextmanager v1.8.9 // indirect + cloud.google.com/go/auth v0.7.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/iam v1.1.8 // indirect - cloud.google.com/go/longrunning v0.5.7 // indirect - cloud.google.com/go/orgpolicy v1.12.3 // indirect - cloud.google.com/go/osconfig v1.12.7 // indirect + cloud.google.com/go/compute/metadata v0.4.0 // indirect + cloud.google.com/go/iam v1.1.10 // indirect + cloud.google.com/go/longrunning v0.5.9 // indirect + cloud.google.com/go/orgpolicy v1.12.5 // indirect + cloud.google.com/go/osconfig v1.13.0 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -105,7 +105,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.4 // indirect + github.com/googleapis/gax-go/v2 v2.12.5 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect github.com/gruntwork-io/terratest v0.46.15 // indirect @@ -175,17 +175,17 @@ require ( go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.24.0 // indirect + golang.org/x/crypto v0.25.0 // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/net v0.27.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.22.0 // indirect - google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect + google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect google.golang.org/grpc v1.64.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index f6a6bf5ff17..ac3f7ef6c18 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,31 +1,31 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.114.0 h1:OIPFAdfrFDFO2ve2U7r/H5SwSbBzEdrBdE7xkgwc+kY= -cloud.google.com/go v0.114.0/go.mod h1:ZV9La5YYxctro1HTPug5lXH/GefROyW8PPD4T8n9J8E= -cloud.google.com/go/accesscontextmanager v1.8.7 h1:GgdNoDwZR5RIO3j8XwXqa6Gc6q5mP3KYMdFC7FEVyG4= -cloud.google.com/go/accesscontextmanager v1.8.7/go.mod h1:jSvChL1NBQ+uLY9zUBdPy9VIlozPoHptdBnRYeWuQoM= -cloud.google.com/go/asset v1.19.1 h1:mCqyoaDjDzaW1RqmmQtCJuawb9nca5bEu7HvVcpZDwg= -cloud.google.com/go/asset v1.19.1/go.mod h1:kGOS8DiCXv6wU/JWmHWCgaErtSZ6uN5noCy0YwVaGfs= -cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= -cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= +cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= +cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= +cloud.google.com/go/accesscontextmanager v1.8.9 h1:oVjc3eFQP92zezKsof5ly6ENhuNSsgadRdFKhUn7L9g= +cloud.google.com/go/accesscontextmanager v1.8.9/go.mod h1:IXvQesVgOC7aXgK9OpYFn5eWnzz8fazegIiJ5WnCOVw= +cloud.google.com/go/asset v1.19.3 h1:vl8wy3jpRa3ATctym5tiICp70iymSyOVbpKb3tKA668= +cloud.google.com/go/asset v1.19.3/go.mod h1:1j8NNcHsbSE/KeHMZrizPIS6c8nm0WjEAPoFXzXNCj4= +cloud.google.com/go/auth v0.7.0 h1:kf/x9B3WTbBUHkC+1VS8wwwli9TzhSt0vSTVBmMR8Ts= +cloud.google.com/go/auth v0.7.0/go.mod h1:D+WqdrpcjmiCgWrXmLLxOVq1GACoE36chW6KXoEvuIw= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/iam v1.1.8 h1:r7umDwhj+BQyz0ScZMp4QrGXjSTI3ZINnpgU2nlB/K0= -cloud.google.com/go/iam v1.1.8/go.mod h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE= -cloud.google.com/go/longrunning v0.5.7 h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU= -cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng= -cloud.google.com/go/orgpolicy v1.12.3 h1:fGftW2bPi8vTjQm57xlwtLBZQcrgC+c3HMFBzJ+KWPc= -cloud.google.com/go/orgpolicy v1.12.3/go.mod h1:6BOgIgFjWfJzTsVcib/4QNHOAeOjCdaBj69aJVs//MA= -cloud.google.com/go/osconfig v1.12.7 h1:HXsXGFaFaLTklwKgSob/GSE+c3verYDQDgreFaosxyc= -cloud.google.com/go/osconfig v1.12.7/go.mod h1:ID7Lbqr0fiihKMwAOoPomWRqsZYKWxfiuafNZ9j1Y1M= -cloud.google.com/go/storage v1.42.0 h1:4QtGpplCVt1wz6g5o1ifXd656P5z+yNgzdw1tVfp0cU= -cloud.google.com/go/storage v1.42.0/go.mod h1:HjMXRFq65pGKFn6hxj6x3HCyR41uSB72Z0SO/Vn6JFQ= +cloud.google.com/go/compute/metadata v0.4.0 h1:vHzJCWaM4g8XIcm8kopr3XmDA4Gy/lblD3EhhSux05c= +cloud.google.com/go/compute/metadata v0.4.0/go.mod h1:SIQh1Kkb4ZJ8zJ874fqVkslA29PRXuleyj6vOzlbK7M= +cloud.google.com/go/iam v1.1.10 h1:ZSAr64oEhQSClwBL670MsJAW5/RLiC6kfw3Bqmd5ZDI= +cloud.google.com/go/iam v1.1.10/go.mod h1:iEgMq62sg8zx446GCaijmA2Miwg5o3UbO+nI47WHJps= +cloud.google.com/go/longrunning v0.5.9 h1:haH9pAuXdPAMqHvzX0zlWQigXT7B0+CL4/2nXXdBo5k= +cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c= +cloud.google.com/go/orgpolicy v1.12.5 h1:NEbK9U6HuhjXOUI1+fJVdIEh0FHiJtGVq4kYQQ5B8t8= +cloud.google.com/go/orgpolicy v1.12.5/go.mod h1:f778/jOHKp6cP6NbbQgjy4SDfQf6BoVGiSWdxky3ONQ= +cloud.google.com/go/osconfig v1.13.0 h1:k+nAmaTcJ08BSR1yGadRZyLwRSvk5XgaZJinS1sEz4Q= +cloud.google.com/go/osconfig v1.13.0/go.mod h1:tlACnQi1rtSLnHRYzfw9SH9zXs0M7S1jqiW2EOCn2Y0= +cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= +cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1 h1:c1tEK/Ma0NstqqkjS1tCClrFxIX1cNLdrM5cB03Sv24= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.15.1/go.mod h1:bssUTs81Q0xIUg/dYT8/8fqEXOVB8GQVyngw9U79EN4= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.0 h1:1rjUGjXuTnVp/RANDMfCRnDsUi0lIFJUQf4K1aPf5YE= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.0/go.mod h1:EJ+GwRNr/M3wZmmsaBpoUYgQ31+IO+y3sOtKIxw48PI= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -239,8 +239,8 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2 h1:yEt5djSYb4iNtmV9iJGVday+i4e9u6Mrn5iP64HH5QM= -github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20240626202925-2eda941fd024 h1:saBP362Qm7zDdDXqv61kI4rzhmLFq3Z1gx34xpl6cWE= +github.com/gomarkdown/markdown v0.0.0-20240626202925-2eda941fd024/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -278,8 +278,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= -github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= +github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= +github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= @@ -293,10 +293,10 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb h1:6gCfY5aQdQgRr0G5VDjnV5ENpd+hTamWaZfVz+lJ724= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240607080351-271db412dbcb/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= +github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 h1:ApSEBSu6EhcJWCdwSMd1VbQUeJDtB1jAOHfIxjZyMTc= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= @@ -390,8 +390,8 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.65.0 h1:wnEU0pEk80YjFi3yoDbFTMluyNssgPI4VJNJetD9a4U= -github.com/open-policy-agent/opa v0.65.0/go.mod h1:CNoLL44LuCH1Yot/zoeZXRKFylQtCJV+oGFiP2TeeEc= +github.com/open-policy-agent/opa v0.66.0 h1:DbrvfJQja0FBRcPOB3Z/BOckocN+M4ApNWyNhSRJt0w= +github.com/open-policy-agent/opa v0.66.0/go.mod h1:EIgNnJcol7AvQR/IcWLwL13k64gHVbNAVG46b2G+/EY= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -511,8 +511,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -556,8 +556,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= @@ -586,8 +586,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -626,16 +626,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -668,23 +668,21 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.184.0 h1:dmEdk6ZkJNXy1JcDhn/ou0ZUq7n9zropG2/tR4z+RDg= -google.golang.org/api v0.184.0/go.mod h1:CeDTtUEiYENAf8PPG5VZW2yNp2VM3VWbCeTioAZBTBA= +google.golang.org/api v0.188.0 h1:51y8fJ/b1AaaBRJr4yWm96fPcuxSo0JcegXE3DaHQHw= +google.golang.org/api v0.188.0/go.mod h1:VR0d+2SIiWOYG3r/jdm7adPW9hI2aRv9ETOSCQ9Beag= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 h1:HCZ6DlkKtCDAtD8ForECsY3tKuaR+p4R3grlK80uCCc= -google.golang.org/genproto v0.0.0-20240604185151-ef581f913117/go.mod h1:lesfX/+9iA+3OdqeCpoDddJaNxVB1AB6tD7EfqMmprc= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b h1:dSTjko30weBaMj3eERKc0ZVXW4GudCswM3m+P++ukU0= +google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b h1:04+jVzTs2XBnOZcPsLnmrTGqltqJbZQ1Ey26hjYdQQ0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 241057ef240def283298b9c762d3a35229645e6f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Jul 2024 18:07:50 +0200 Subject: [PATCH 1075/1371] chore(deps): update actions/setup-python action to v5.1.1 (#2457) --- .github/workflows/pre-commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 48dcbe56976..5d71c155a78 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -10,5 +10,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 From 5ba8bc0d6c4211b576582dc68359f1b132709a68 Mon Sep 17 00:00:00 2001 From: Grant Sorbo Date: Thu, 18 Jul 2024 14:14:31 -0500 Subject: [PATCH 1076/1371] fix: disable periodic for EAB (#2460) --- infra/terraform/test-org/org/locals.tf | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 3653345c3d4..235e57ffa4e 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -823,12 +823,11 @@ locals { topics = local.common_topics.da }, { - name = "terraform-google-enterprise-application" - org = "GoogleCloudPlatform" - description = "Deploy an enterprise developer platform on Google Cloud" - owners = ["gtsorbo", "erictune", "yliaog", "sleighton2022", "apeabody"] - topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) - enable_periodic = true + name = "terraform-google-enterprise-application" + org = "GoogleCloudPlatform" + description = "Deploy an enterprise developer platform on Google Cloud" + owners = ["gtsorbo", "erictune", "yliaog", "sleighton2022", "apeabody"] + topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) }, { name = "terraform-genai-rag" From ab386e9a5f822e386b4cfcefdacb22ab640eddb9 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 18 Jul 2024 12:16:28 -0700 Subject: [PATCH 1077/1371] chore(CI): add gomodUpdateImportPaths to renovate.json (#2459) --- .github/renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index fd6e917342d..b3a403ccb2f 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -32,13 +32,13 @@ }, { "matchDepTypes": ["require"], - "postUpdateOptions": ["gomodTidy"], + "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths"], "groupName": "GO modules" }, { "matchPackageNames": ["go"], "allowedVersions": "1.22", - "postUpdateOptions": ["gomodTidy"] + "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths"] } ], "regexManagers": [ From 50ffdf6a4cbb52802aadfb58c110dd8a451c5956 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 18 Jul 2024 12:29:57 -0700 Subject: [PATCH 1078/1371] chore(CI): add gomodUpdateImportPaths to renovate.json (#2458) --- infra/terraform/test-org/github/resources/renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index 0bf057c78ee..ef9bbe6b494 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -36,14 +36,14 @@ }, { "matchManagers": ["gomod"], - "postUpdateOptions": ["gomodTidy"] + "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths"] }, { "matchManagers": ["gomod"], "matchDatasources": ["golang-version"], "rangeStrategy": "replace", "allowedVersions": "1.22", - "postUpdateOptions": ["gomodTidy"] + "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths"] }, { "matchManagers": ["regex", "gomod"], From 902741cf7682437172653305a180c437c10a8612 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 18 Jul 2024 21:52:36 +0200 Subject: [PATCH 1079/1371] fix(deps): update go modules (#2456) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 4 ++-- cli/go.sum | 8 ++++---- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 6b0a51407ec..d9217f8ba10 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.4.1 +VERSION=v1.4.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index 314569d67af..bfaa93de82c 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v62/github" + "github.com/google/go-github/v63/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index eb7111834d3..e5a777a81dc 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v62/github" + "github.com/google/go-github/v63/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index 9e73d79d40f..e3d389b8e9f 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v62/github" + "github.com/google/go-github/v63/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index c6187eeca95..9b77ca64c4b 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v62/github" + "github.com/google/go-github/v63/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index 35d9b23fc1a..0845e87df4f 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.22 require ( - cloud.google.com/go/asset v1.19.3 + cloud.google.com/go/asset v1.19.4 cloud.google.com/go/storage v1.43.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.0 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad @@ -14,7 +14,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20240626202925-2eda941fd024 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v62 v62.0.0 + github.com/google/go-github/v63 v63.0.0 github.com/hashicorp/hcl/v2 v2.21.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 github.com/iancoleman/strcase v0.3.0 diff --git a/cli/go.sum b/cli/go.sum index ac3f7ef6c18..7b332bdeac4 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -3,8 +3,8 @@ cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= cloud.google.com/go/accesscontextmanager v1.8.9 h1:oVjc3eFQP92zezKsof5ly6ENhuNSsgadRdFKhUn7L9g= cloud.google.com/go/accesscontextmanager v1.8.9/go.mod h1:IXvQesVgOC7aXgK9OpYFn5eWnzz8fazegIiJ5WnCOVw= -cloud.google.com/go/asset v1.19.3 h1:vl8wy3jpRa3ATctym5tiICp70iymSyOVbpKb3tKA668= -cloud.google.com/go/asset v1.19.3/go.mod h1:1j8NNcHsbSE/KeHMZrizPIS6c8nm0WjEAPoFXzXNCj4= +cloud.google.com/go/asset v1.19.4 h1:TFHvHGifCl8wRWzDDqomfUmCK3tml7lX9Jx3jZgxre8= +cloud.google.com/go/asset v1.19.4/go.mod h1:zSEhgb9eNLeBcl4eSO/nsrh1MyUNCBynvyRaFnXMaeY= cloud.google.com/go/auth v0.7.0 h1:kf/x9B3WTbBUHkC+1VS8wwwli9TzhSt0vSTVBmMR8Ts= cloud.google.com/go/auth v0.7.0/go.mod h1:D+WqdrpcjmiCgWrXmLLxOVq1GACoE36chW6KXoEvuIw= cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= @@ -259,8 +259,8 @@ 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/go-github/v59 v59.0.0 h1:7h6bgpF5as0YQLLkEiVqpgtJqjimMYhBkD4jT5aN3VA= github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv40oDjhV/gH6wM= -github.com/google/go-github/v62 v62.0.0 h1:/6mGCaRywZz9MuHyw9gD1CwsbmBX8GWsbFkwMmHdhl4= -github.com/google/go-github/v62 v62.0.0/go.mod h1:EMxeUqGJq2xRu9DYBMwel/mr7kZrzUOfQmmpYrZn2a4= +github.com/google/go-github/v63 v63.0.0 h1:13xwK/wk9alSokujB9lJkuzdmQuVn2QCPeck76wR3nE= +github.com/google/go-github/v63 v63.0.0/go.mod h1:IqbcrgUmIcEaioWrGYei/09o+ge5vhffGOcxrO0AfmA= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= From d8c9a5d10468fbbe83f21490da7b9c4051ef69a0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 19 Jul 2024 17:25:05 +0200 Subject: [PATCH 1080/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.47.0 (#2463) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index e1a4a404fcc..e4e700c6e64 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,7 +7,7 @@ toolchain go1.22.5 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.46.16 + github.com/gruntwork-io/terratest v0.47.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 github.com/hashicorp/terraform-json v0.22.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index f8aa1f2006b..fcc330e0076 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -378,8 +378,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.46.16 h1:l+HHuU7lNLwoAl2sP8zkYJy0uoE2Mwha2nw+rim+OhQ= -github.com/gruntwork-io/terratest v0.46.16/go.mod h1:oywHw1cFKXSYvKPm27U7quZVzDUlA22H2xUrKCe26xM= +github.com/gruntwork-io/terratest v0.47.0 h1:xIy1pT7NbGVlMLDZEHl3+3iSnvffh8tN2pL6idn448c= +github.com/gruntwork-io/terratest v0.47.0/go.mod h1:oywHw1cFKXSYvKPm27U7quZVzDUlA22H2xUrKCe26xM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From c972b9dcc21a55b679e4ad9f5c1ea7704f8e42ef Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 19 Jul 2024 17:38:19 +0200 Subject: [PATCH 1081/1371] chore(deps): update github/codeql-action action to v3.25.12 (#2462) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 55663c36265..8329761d286 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 + uses: github/codeql-action/init@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 + uses: github/codeql-action/autobuild@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 + uses: github/codeql-action/analyze@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 19bd24c13f2..1f3d3f2b132 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 + uses: github/codeql-action/upload-sarif@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 with: sarif_file: results.sarif From c94ae0e032e1a34abbafef1b97e9481cff4c2f72 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 19 Jul 2024 18:18:08 +0200 Subject: [PATCH 1082/1371] chore(deps): update github/codeql-action action to v3.25.13 (#2464) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 8329761d286..618051df7d2 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 + uses: github/codeql-action/init@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 + uses: github/codeql-action/autobuild@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 + uses: github/codeql-action/analyze@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1f3d3f2b132..dddef122305 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 + uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 with: sarif_file: results.sarif From f0325cc7f1e5ca10bbb21886bc605969623123f4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Jul 2024 19:18:43 +0200 Subject: [PATCH 1083/1371] chore(deps): update module github.com/migueleliasweb/go-github-mock to v1 (#2461) --- cli/go.mod | 4 ++-- cli/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 0845e87df4f..0619cbfa73c 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -24,7 +24,7 @@ require ( github.com/jedib0t/go-pretty v4.3.0+incompatible github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/manifoldco/promptui v0.9.0 - github.com/migueleliasweb/go-github-mock v0.0.23 + github.com/migueleliasweb/go-github-mock v1.0.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/open-policy-agent/opa v0.66.0 github.com/otiai10/copy v1.14.0 @@ -99,7 +99,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-github/v59 v59.0.0 // indirect + github.com/google/go-github/v61 v61.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect diff --git a/cli/go.sum b/cli/go.sum index 7b332bdeac4..3e8f1573c01 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -257,8 +257,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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/go-github/v59 v59.0.0 h1:7h6bgpF5as0YQLLkEiVqpgtJqjimMYhBkD4jT5aN3VA= -github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv40oDjhV/gH6wM= +github.com/google/go-github/v61 v61.0.0 h1:VwQCBwhyE9JclCI+22/7mLB1PuU9eowCXKY5pNlu1go= +github.com/google/go-github/v61 v61.0.0/go.mod h1:0WR+KmsWX75G2EbpyGsGmradjo3IiciuI4BmdVCobQY= github.com/google/go-github/v63 v63.0.0 h1:13xwK/wk9alSokujB9lJkuzdmQuVn2QCPeck76wR3nE= github.com/google/go-github/v63 v63.0.0/go.mod h1:IqbcrgUmIcEaioWrGYei/09o+ge5vhffGOcxrO0AfmA= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= @@ -361,8 +361,8 @@ github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZ github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= -github.com/migueleliasweb/go-github-mock v0.0.23 h1:GOi9oX/+Seu9JQ19V8bPDLqDI7M9iEOjo3g8v1k6L2c= -github.com/migueleliasweb/go-github-mock v0.0.23/go.mod h1:NsT8FGbkvIZQtDu38+295sZEX8snaUiiQgsGxi6GUxk= +github.com/migueleliasweb/go-github-mock v1.0.0 h1:Lj6w6irqwF7rGI4zTnHpxQSyB2Hm6w6H4SkhskrpvXU= +github.com/migueleliasweb/go-github-mock v1.0.0/go.mod h1:MlZpwicg4/DUTuai8Q8qXo10uvg2yGZ9Myn+XGq6tIc= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= From 65a1aa030f528e8fa6ce85ef60aedd5995dc5cae Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 22 Jul 2024 23:14:53 +0200 Subject: [PATCH 1084/1371] fix(deps): update module github.com/zclconf/go-cty to v1.15.0 (#2466) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index a6a5f4f17ca..80c70024170 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/hashicorp/hcl/v2 v2.21.0 github.com/pmezard/go-difflib v1.0.0 - github.com/zclconf/go-cty v1.14.4 + github.com/zclconf/go-cty v1.15.0 ) require ( diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index aab4a0c6553..f90d36ca201 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -82,8 +82,8 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= -github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= +github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= From e66dbcc5914fd9a797fc3e4573ca39ce4b940d59 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 07:59:18 -0700 Subject: [PATCH 1085/1371] chore(release-please): release module-swapper 0.4.8 (#2467) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 340670be981..7b6b2a61c4f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.0", - "infra/module-swapper": "0.4.7", + "infra/module-swapper": "0.4.8", "tflint-ruleset-blueprint": "0.1.0" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 716e5919273..3a1ad7f22ba 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.8](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.7...infra/module-swapper/v0.4.8) (2024-07-22) + + +### Bug Fixes + +* **deps:** update module github.com/zclconf/go-cty to v1.15.0 ([#2466](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2466)) ([65a1aa0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/65a1aa030f528e8fa6ce85ef60aedd5995dc5cae)) + ## [0.4.7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.6...infra/module-swapper/v0.4.7) (2024-06-28) From e09310b44eb17a7e23c83b0deef313284babb8b8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 23 Jul 2024 17:02:56 +0200 Subject: [PATCH 1086/1371] chore(deps): update go modules (#2465) Co-authored-by: Awais Malik --- cli/go.mod | 18 +++++++++--------- cli/go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 0619cbfa73c..e4c6e78675b 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -33,10 +33,10 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 golang.org/x/oauth2 v0.21.0 golang.org/x/text v0.16.0 - google.golang.org/api v0.188.0 + google.golang.org/api v0.189.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -45,9 +45,9 @@ require ( require ( cloud.google.com/go v0.115.0 // indirect cloud.google.com/go/accesscontextmanager v1.8.9 // indirect - cloud.google.com/go/auth v0.7.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.4.0 // indirect + cloud.google.com/go/auth v0.7.2 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.10 // indirect cloud.google.com/go/longrunning v0.5.9 // indirect cloud.google.com/go/orgpolicy v1.12.5 // indirect @@ -176,16 +176,16 @@ require ( go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/crypto v0.25.0 // indirect - golang.org/x/mod v0.18.0 // indirect + golang.org/x/mod v0.19.0 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.22.0 // indirect golang.org/x/term v0.22.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.22.0 // indirect - google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b // indirect + golang.org/x/tools v0.23.0 // indirect + google.golang.org/genproto v0.0.0-20240722135656-d784300faade // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect google.golang.org/grpc v1.64.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index 3e8f1573c01..c256a33d861 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -5,12 +5,12 @@ cloud.google.com/go/accesscontextmanager v1.8.9 h1:oVjc3eFQP92zezKsof5ly6ENhuNSs cloud.google.com/go/accesscontextmanager v1.8.9/go.mod h1:IXvQesVgOC7aXgK9OpYFn5eWnzz8fazegIiJ5WnCOVw= cloud.google.com/go/asset v1.19.4 h1:TFHvHGifCl8wRWzDDqomfUmCK3tml7lX9Jx3jZgxre8= cloud.google.com/go/asset v1.19.4/go.mod h1:zSEhgb9eNLeBcl4eSO/nsrh1MyUNCBynvyRaFnXMaeY= -cloud.google.com/go/auth v0.7.0 h1:kf/x9B3WTbBUHkC+1VS8wwwli9TzhSt0vSTVBmMR8Ts= -cloud.google.com/go/auth v0.7.0/go.mod h1:D+WqdrpcjmiCgWrXmLLxOVq1GACoE36chW6KXoEvuIw= -cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= -cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= -cloud.google.com/go/compute/metadata v0.4.0 h1:vHzJCWaM4g8XIcm8kopr3XmDA4Gy/lblD3EhhSux05c= -cloud.google.com/go/compute/metadata v0.4.0/go.mod h1:SIQh1Kkb4ZJ8zJ874fqVkslA29PRXuleyj6vOzlbK7M= +cloud.google.com/go/auth v0.7.2 h1:uiha352VrCDMXg+yoBtaD0tUF4Kv9vrtrWPYXwutnDE= +cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= +cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= +cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/iam v1.1.10 h1:ZSAr64oEhQSClwBL670MsJAW5/RLiC6kfw3Bqmd5ZDI= cloud.google.com/go/iam v1.1.10/go.mod h1:iEgMq62sg8zx446GCaijmA2Miwg5o3UbO+nI47WHJps= cloud.google.com/go/longrunning v0.5.9 h1:haH9pAuXdPAMqHvzX0zlWQigXT7B0+CL4/2nXXdBo5k= @@ -559,8 +559,8 @@ golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -568,8 +568,8 @@ 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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -662,27 +662,27 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= 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.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.188.0 h1:51y8fJ/b1AaaBRJr4yWm96fPcuxSo0JcegXE3DaHQHw= -google.golang.org/api v0.188.0/go.mod h1:VR0d+2SIiWOYG3r/jdm7adPW9hI2aRv9ETOSCQ9Beag= +google.golang.org/api v0.189.0 h1:equMo30LypAkdkLMBqfeIqtyAnlyig1JSZArl4XPwdI= +google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b h1:dSTjko30weBaMj3eERKc0ZVXW4GudCswM3m+P++ukU0= -google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY= +google.golang.org/genproto v0.0.0-20240722135656-d784300faade h1:lKFsS7wpngDgSCeFn7MoLy+wBDQZ1UQIJD4UNM1Qvkg= +google.golang.org/genproto v0.0.0-20240722135656-d784300faade/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY= google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b h1:04+jVzTs2XBnOZcPsLnmrTGqltqJbZQ1Ey26hjYdQQ0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade h1:oCRSWfwGXQsqlVdErcyTt4A93Y8fo0/9D4b1gnI++qo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From db31f2e13291aa32b2d5f41fa58f36c5c4c3f226 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 23 Jul 2024 23:15:52 +0200 Subject: [PATCH 1087/1371] fix(deps): update module sigs.k8s.io/kustomize/kyaml to v0.17.2 (#2469) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index e4e700c6e64..dd3f933bf13 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -16,7 +16,7 @@ require ( github.com/tidwall/gjson v1.17.1 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.19.0 - sigs.k8s.io/kustomize/kyaml v0.17.1 + sigs.k8s.io/kustomize/kyaml v0.17.2 ) require ( diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index fcc330e0076..bf1c832d4ca 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -1090,8 +1090,8 @@ 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= -sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= +sigs.k8s.io/kustomize/kyaml v0.17.2 h1:+AzvoJUY0kq4QAhH/ydPHHMRLijtUKiyVyh7fOSshr0= +sigs.k8s.io/kustomize/kyaml v0.17.2/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From 2660412164b1c7ac15b20c2b8dff5d9b9bf26aec Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 24 Jul 2024 15:33:35 -0700 Subject: [PATCH 1088/1371] chore(release-please): release blueprint-test 0.16.1 (#2449) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 7b6b2a61c4f..44480328fd0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.16.0", + "infra/blueprint-test": "0.16.1", "infra/module-swapper": "0.4.8", "tflint-ruleset-blueprint": "0.1.0" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 65e734b2e33..a0ace9c15b1 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.16.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.16.0...infra/blueprint-test/v0.16.1) (2024-07-23) + + +### Bug Fixes + +* **deps:** update go modules ([#2441](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2441)) ([8564e94](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/8564e948037cce59c7d2b1894cd1fb14af1fe1c4)) +* **deps:** update module github.com/gruntwork-io/terratest to v0.47.0 ([#2463](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2463)) ([d8c9a5d](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/d8c9a5d10468fbbe83f21490da7b9c4051ef69a0)) +* **deps:** update module sigs.k8s.io/kustomize/kyaml to v0.17.2 ([#2469](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2469)) ([db31f2e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/db31f2e13291aa32b2d5f41fa58f36c5c4c3f226)) + ## [0.16.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.15.1...infra/blueprint-test/v0.16.0) (2024-06-28) From 5f3131f236a396c40864670206fd411617f48260 Mon Sep 17 00:00:00 2001 From: hsmatulisgoogle Date: Thu, 25 Jul 2024 02:51:48 -0400 Subject: [PATCH 1089/1371] chore: Add stackdriver-commiters to owners for terraform-google-cloud-operations repo (#2455) --- infra/terraform/test-org/org/locals.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 235e57ffa4e..9e21d470cec 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -280,6 +280,7 @@ locals { description = "Manages Cloud Logging and Cloud Monitoring" topics = local.common_topics.ops owners = ["imrannayer"] + groups = ["stackdriver-committers"] }, { name = "terraform-google-cloud-router" From be4007c75604bf80986f06db29424adcc3e88885 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 26 Jul 2024 19:34:13 +0200 Subject: [PATCH 1090/1371] fix(deps): update module google.golang.org/api to v0.189.0 (#2471) --- infra/utils/fbf/go.mod | 12 ++++++------ infra/utils/fbf/go.sum | 26 +++++++++++++------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 7845b2abeac..3beebd65229 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,17 +6,17 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.188.0 + google.golang.org/api v0.189.0 ) require ( - cloud.google.com/go/auth v0.7.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.4.0 // indirect + cloud.google.com/go/auth v0.7.2 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect @@ -40,7 +40,7 @@ require ( golang.org/x/sys v0.22.0 // indirect golang.org/x/term v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect google.golang.org/grpc v1.64.1 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index c9cc41835d1..c0f7a688415 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,10 +1,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.7.0 h1:kf/x9B3WTbBUHkC+1VS8wwwli9TzhSt0vSTVBmMR8Ts= -cloud.google.com/go/auth v0.7.0/go.mod h1:D+WqdrpcjmiCgWrXmLLxOVq1GACoE36chW6KXoEvuIw= -cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= -cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= -cloud.google.com/go/compute/metadata v0.4.0 h1:vHzJCWaM4g8XIcm8kopr3XmDA4Gy/lblD3EhhSux05c= -cloud.google.com/go/compute/metadata v0.4.0/go.mod h1:SIQh1Kkb4ZJ8zJ874fqVkslA29PRXuleyj6vOzlbK7M= +cloud.google.com/go/auth v0.7.2 h1:uiha352VrCDMXg+yoBtaD0tUF4Kv9vrtrWPYXwutnDE= +cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= +cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= +cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM= @@ -23,8 +23,8 @@ github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBD github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -137,18 +137,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.188.0 h1:51y8fJ/b1AaaBRJr4yWm96fPcuxSo0JcegXE3DaHQHw= -google.golang.org/api v0.188.0/go.mod h1:VR0d+2SIiWOYG3r/jdm7adPW9hI2aRv9ETOSCQ9Beag= +google.golang.org/api v0.189.0 h1:equMo30LypAkdkLMBqfeIqtyAnlyig1JSZArl4XPwdI= +google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b h1:dSTjko30weBaMj3eERKc0ZVXW4GudCswM3m+P++ukU0= +google.golang.org/genproto v0.0.0-20240722135656-d784300faade h1:lKFsS7wpngDgSCeFn7MoLy+wBDQZ1UQIJD4UNM1Qvkg= google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3 h1:QW9+G6Fir4VcRXVH8x3LilNAb6cxBGLa6+GM4hRwexE= google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3/go.mod h1:kdrSS/OiLkPrNUpzD4aHgCq2rVuC/YRxok32HXZ4vRE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b h1:04+jVzTs2XBnOZcPsLnmrTGqltqJbZQ1Ey26hjYdQQ0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade h1:oCRSWfwGXQsqlVdErcyTt4A93Y8fo0/9D4b1gnI++qo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 11c65dc4718426348852b081573bc32d032d7398 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 30 Jul 2024 13:57:29 -0700 Subject: [PATCH 1091/1371] chore(CI): enable cluster deletion (#2472) --- .../test-org/test-cleanup/.terraform.lock.hcl | 104 +++++++++--------- .../test-org/test-cleanup/cleanup.tf | 2 +- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl index ef61418eb6c..798229f1ce8 100644 --- a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl +++ b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl @@ -22,41 +22,41 @@ provider "registry.terraform.io/hashicorp/archive" { } provider "registry.terraform.io/hashicorp/google" { - version = "5.28.0" + version = "5.39.1" constraints = ">= 3.38.0, >= 3.43.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 4.78.0, >= 5.22.0, < 6.0.0" hashes = [ - "h1:SDulaRuZPQeHs5MZHs4oGhstoqeaTZxN4nprxx2rWa8=", - "zh:00fb6916789d56c8801f95624fd30aca05f47918e6fab5c05fab7214cdecfc65", - "zh:204cc06787b8c55d2db744d020edf98bfdf294ed0a5d0fdc272afc0a9568a102", - "zh:3ccc7337801b6ebc8362a3cf4ae8eafacd235ee2389c84a58a4a7a6878159687", - "zh:6a91cf54404112651a2cffa2d59a140f1b1dbff7ff12e875f154deaebd969500", - "zh:6ade8996b11edb74afdf2b1b6c39c817e7f62bf2e899b1831bbc740457780456", - "zh:8691ad4285bf41a054a715b0cb9eb32c919512dded081437314b506fbe1ad0d2", - "zh:9c2ff4ca96299f65a6d23bb08d2a5f7005bef180fe5c9a3b5b3577f381d8bc8a", - "zh:cda256ff269b7ae289059e93f4d0ed071689c3fe58dcf6b3b68011523fc37c2d", - "zh:e38dc30b722922240c54ad2164a80505698933220afb2cde86b654cfc8e28900", - "zh:e3f8c05fc51a85508d78e3c5269d1b1c8425fe7c35f2659532d19be8da18c0ce", - "zh:e4894e409fcfbe0148e325ec9d342b4f3cf86b313e165628d20f90311e117a1d", + "h1:6AJPkCW3JqdpVO+HCb8g0mzZyZXPUEt/+3BTmCGnTTg=", + "zh:28763694f5f06a98a4745f0e37f8f8ae412e48a6cfd9b7339599abf89e7577c5", + "zh:469a415b398a08c8b479e32cb24b028791eac57bdab3c15d8b987290e55bfa55", + "zh:4a1f97c58f22379f7c98c7bfe94c923d58c41cb9801679e1a54f85c9848af48c", + "zh:4b2bc066b977cf57de895d1a68f47cc4df48cc7ce0054f8c3de06f6cd63f263d", + "zh:6436aa9a7721079f0784b3ccc0da953337f96500bd34a5ba927fe1833392c54a", + "zh:6b0833e932bc904dee2ca320d5efb785766fd4474c041128868232cc78a0e764", + "zh:8c2a47a571dce3b825fd90789d1af3699cdd615f06e5bf13258585d1560222b8", + "zh:ae5b4cdc76720165023870bc9899bb7de9aee8f4ead95dd368a6ebad95176fe4", + "zh:c30307a74d64f61fbd5a6b5e8658e4d11152ee1f54f43a02c0fe734e5f0f529a", + "zh:e892a200145641b8ae55ba0f69cf83454267b41e0f2d3b6932d4d917d8112911", + "zh:ecd95d22838181ae578eba90154a972661bcdc779f728d71957c059b56c7fd61", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.28.0" + version = "5.39.1" constraints = ">= 3.38.0, >= 3.43.0, >= 4.11.0, >= 5.22.0, < 6.0.0" hashes = [ - "h1:QgPoqVrzhueqvDedrc0KzlMzJwfL1SjvT9Ah5/+OYYI=", - "zh:2cfb876235f0fbad55ef38389ab61daa3bee0b98d63b7131f4809775e2f4f824", - "zh:5bd207c00b53200fc6046ac61bafd96fc2fa36c0fe796a261c3958921238121d", - "zh:603dc0c7728e3c159bd6383eb08e0fe2a2fa4f872671102fbecb956279eed6a4", - "zh:6346401ade115f53eee296077ae9740f7ed790a59292fe01a7d11c4d4ff10f93", - "zh:661dfc3bd710291657ae4e8c472c78ae6025a477c125634952c27401ad675e61", - "zh:8257afe599ef95f3821d4f993349b661192b7e4ff2d0df32e2e62f8ba3a4c306", - "zh:c7903e573367b8d6b6cc389d2eef34536191900dd198b904a41fd1d682bf863f", - "zh:d7f061c59156489da24d80ca72b28330792e981d25b245a2e15825317c85b41c", - "zh:e6c67b4390a01cb97610dcc8cbfad8ab6225fbc6e2b5d3d02ebd0f6d8f66341e", - "zh:eb1db70a359bbf32d26e9fd621320b68791700636fded4120e82c3d9de8a18c9", - "zh:f270d24e135fc38e655f0be05b3223ab29b937fbd9f2f01e9e72dffc67e7a660", + "h1:KOBwBBNtenF6bAgQlvIdtx4tfnrl2iXNRyAYAYfpqA4=", + "zh:07fcc7db2fdc302627f2cddd16fe6b2bf1e8a0fd24e41172afaee96dcb7894bd", + "zh:0f17e28afe3322b692cf912b09378333f59e51d3e62da27e8a337e86b34cb9e9", + "zh:252abaeb1dd9739f7b919d1ed3728c20f266c761125b6c33dc17fbbf08af77fb", + "zh:313c8db8dfb4b80d44aff470d6dcc2c7f5f6dbf4484717636e7fe42a401f5dff", + "zh:353ecd422983e3d993c7daa3fb0d7fd6663b663dfd95894734dc8f5261dba6bf", + "zh:486ffdfe5e834a03dd374813451fb6ec15392934b1adfadac0b9c2485f6f8e27", + "zh:847a88f8c392efd0c84e85d716d2ab7ec3a2d52c213c6b79db67aedd31b23a81", + "zh:9569b0d3029198d5dac39a7d714553d3456eb9db885393965f585b33ded60c7e", + "zh:b79475e63c78a24c70500c0e28e7526104b385fd5fa08f332d8bf0c94d6597de", + "zh:bf70c9fcd96d2abd1d3682cfd39075709745185b874a005465c6c067ce102dee", + "zh:d644a1043481d16a5788847b4204933f528bf65fb571546aec62f7da19d7e6b4", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } @@ -82,41 +82,41 @@ provider "registry.terraform.io/hashicorp/null" { } provider "registry.terraform.io/hashicorp/random" { - version = "3.6.1" + version = "3.6.2" constraints = ">= 2.1.0, >= 2.2.0, < 4.0.0" hashes = [ - "h1:1OlP753r4lOKlBprL0HdZGWerm5DCabD5Mli8k8lWAg=", - "zh:2a0ec154e39911f19c8214acd6241e469157489fc56b6c739f45fbed5896a176", - "zh:57f4e553224a5e849c99131f5e5294be3a7adcabe2d867d8a4fef8d0976e0e52", - "zh:58f09948c608e601bd9d0a9e47dcb78e2b2c13b4bda4d8f097d09152ea9e91c5", - "zh:5c2a297146ed6fb3fe934c800e78380f700f49ff24dbb5fb5463134948e3a65f", + "h1:wmG0QFjQ2OfyPy6BB7mQ57WtoZZGGV07uAPQeDmIrAE=", + "zh:0ef01a4f81147b32c1bea3429974d4d104bbc4be2ba3cfa667031a8183ef88ec", + "zh:1bcd2d8161e89e39886119965ef0f37fcce2da9c1aca34263dd3002ba05fcb53", + "zh:37c75d15e9514556a5f4ed02e1548aaa95c0ecd6ff9af1119ac905144c70c114", + "zh:4210550a767226976bc7e57d988b9ce48f4411fa8a60cd74a6b246baf7589dad", + "zh:562007382520cd4baa7320f35e1370ffe84e46ed4e2071fdc7e4b1a9b1f8ae9b", + "zh:5efb9da90f665e43f22c2e13e0ce48e86cae2d960aaf1abf721b497f32025916", + "zh:6f71257a6b1218d02a573fc9bff0657410404fb2ef23bc66ae8cd968f98d5ff6", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:7ce41e26f0603e31cdac849085fc99e5cd5b3b73414c6c6d955c0ceb249b593f", - "zh:8c9e8d30c4ef08ee8bcc4294dbf3c2115cd7d9049c6ba21422bd3471d92faf8a", - "zh:93e91be717a7ffbd6410120eb925ebb8658cc8f563de35a8b53804d33c51c8b0", - "zh:982542e921970d727ce10ed64795bf36c4dec77a5db0741d4665230d12250a0d", - "zh:b9d1873f14d6033e216510ef541c891f44d249464f13cc07d3f782d09c7d18de", - "zh:cfe27faa0bc9556391c8803ade135a5856c34a3fe85b9ae3bdd515013c0c87c1", - "zh:e4aabf3184bbb556b89e4b195eab1514c86a2914dd01c23ad9813ec17e863a8a", + "zh:9647e18f221380a85f2f0ab387c68fdafd58af6193a932417299cdcae4710150", + "zh:bb6297ce412c3c2fa9fec726114e5e0508dd2638cad6a0cb433194930c97a544", + "zh:f83e925ed73ff8a5ef6e3608ad9225baa5376446349572c2449c0c0b3cf184b7", + "zh:fbef0781cb64de76b1df1ca11078aecba7800d82fd4a956302734999cfd9a4af", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.11.1" + version = "0.12.0" constraints = ">= 0.5.0" hashes = [ - "h1:IkDriv5C9G+kQQ+mP+8QGIahwKgbQcw1/mzh9U6q+ZI=", - "zh:19a393db736ec4fd024d098d55aefaef07056c37a448ece3b55b3f5f4c2c7e4a", - "zh:227fa1e221de2907f37be78d40c06ca6a6f7b243a1ec33ade014dfaf6d92cd9c", - "zh:29970fecbf4a3ca23bacbb05d6b90cdd33dd379f90059fe39e08289951502d9f", - "zh:65024596f22f10e7dcb5e0e4a75277f275b529daa0bc0daf34ca7901c678ab88", - "zh:694d080cb5e3bf5ef08c7409208d061c135a4f5f4cdc93ea8607860995264b2e", + "h1:YV9bUZSUihGBKuwqNmRnm4wKQf11pr3hnYcarpoPoQQ=", + "zh:019a4c09af254ef80b72cf0d843dfe72d99483e227138cf5b514a1b9977ab4c3", + "zh:0ae310ec740ebc6f275529507d60bb747d0bf39e72fc5a2fa90d74486006132c", + "zh:13d6aec117f05237fbf8c7d91d6ebb19797b00aa87e7a812642d3ea4738a394e", + "zh:2e87abbc261f9317d0c2ef26e01d5fabf77679da7d2cac6f47df7d198f720989", + "zh:4a6d471176ce0264455aa7d5457b8702f78400010c201c1719708958a1b7b647", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:b29d15d13e1b3412e6a4e1627d378dbd102659132f7488f64017dd6b6d5216d3", - "zh:bb79f4cae9f8c17c73998edc54aa16c2130a03227f7f4e71fc6ac87e230575ec", - "zh:ceccf80e95929d97f62dcf1bb3c7c7553d5757b2d9e7d222518722fc934f7ad5", - "zh:f40e638336527490e294d9c938ae55919069e6987e85a80506784ba90348792a", - "zh:f99ef33b1629a3b2278201142a3011a8489e66d92da832a5b99e442204de18fb", - "zh:fded14754ea46fdecc62a52cd970126420d4cd190e598cb61190b4724a727edb", + "zh:8978d5474a6da30bc0ad21c17db188d6918cacf3df3f6506b72ef3a268d53e2e", + "zh:b109efe138dfcb45dc04a9cc6809d185ab8b0ebc12040847c2dac430fda5af68", + "zh:b58e039b9106ac0a8de3c07f53b5279d7f0215fb35f2d23df642dfce0875382f", + "zh:ba2cbb2e515922d13efe3a46647be84f5426fcfcaa0f1520b3efeab8db847ed3", + "zh:c6c1ef1f26f25bca3abb5e07fa33dca37ed39cc26d0ff877964f2ffe5edd618c", + "zh:f8e171f923b7d2e789abd034072465dec3e6133c3a7644b7a7a965a74d52224e", ] } diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index 3d61ebcad52..158f7186745 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -23,7 +23,7 @@ module "scheduler-app-engine" { module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 4.2" + version = "~> 4.3" job_schedule = "17 * * * *" max_project_age_in_hours = "6" From 3a6c056966d5669365302f0c9a9b4fc53a3902a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:45:29 -0700 Subject: [PATCH 1092/1371] fix(deps): bump rexml from 3.2.8 to 3.3.2 in /infra/build/developer-tools/build/data (#2473) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- infra/build/developer-tools/build/data/Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index de645bb9384..fbd20bf01b3 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -523,8 +523,8 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.2) - rexml (3.2.8) - strscan (>= 3.0.9) + rexml (3.3.2) + strscan rspec (3.11.0) rspec-core (~> 3.11.0) rspec-expectations (~> 3.11.0) From 7fe2b66489a4cf3be5d6451ca3177bfeb5c94249 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jul 2024 01:29:27 +0200 Subject: [PATCH 1093/1371] fix(deps): update module github.com/tidwall/gjson to v1.17.3 (#2474) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index dd3f933bf13..dcc632148b8 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -13,7 +13,7 @@ require ( github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.9.0 - github.com/tidwall/gjson v1.17.1 + github.com/tidwall/gjson v1.17.3 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.19.0 sigs.k8s.io/kustomize/kyaml v0.17.2 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index bf1c832d4ca..58aa8a83fc3 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -497,8 +497,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= -github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= +github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= From 7f4169a37ec94b20d3ef8d2ab1371590fabfbb97 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jul 2024 01:34:19 +0200 Subject: [PATCH 1094/1371] chore(deps): update ossf/scorecard-action action to v2.4.0 (#2478) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index dddef122305..9f8bb1c4fe6 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 + uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 with: results_file: results.sarif results_format: sarif From e18a6a3f422ad00d448e034c1dc681c2fbec8aa8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jul 2024 01:37:14 +0200 Subject: [PATCH 1095/1371] chore(deps): update github/codeql-action action to v3.25.15 (#2476) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 618051df7d2..931c960c486 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/init@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/autobuild@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/analyze@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 9f8bb1c4fe6..88a1643165a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 with: sarif_file: results.sarif From 96ac4f561c8c6aa63d95057978cb203fc941fa5b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jul 2024 01:45:12 +0200 Subject: [PATCH 1096/1371] chore(deps): update golangci/golangci-lint-action action to v6.1.0 (#2477) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 99908289e43..a2186734b9c 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -38,7 +38,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64 # v6.0.1 + uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 # v6.1.0 with: version: latest working-directory: ${{ matrix.folder }} diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 908f2894e97..b13aa17e0a5 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -44,7 +44,7 @@ jobs: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum - name: golangci-lint - uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64 # v6.0.1 + uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 # v6.1.0 with: version: latest working-directory: 'infra/module-swapper' From 78de0b9369c4d92fefc3c6299ade0aa3554e79b5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jul 2024 01:54:08 +0200 Subject: [PATCH 1097/1371] fix(deps): update module github.com/terraform-linters/tflint-plugin-sdk to v0.21.0 (#2479) Co-authored-by: Andrew Peabody --- tflint-ruleset-blueprint/go.mod | 33 +++++++------ tflint-ruleset-blueprint/go.sum | 83 ++++++++++++++------------------- 2 files changed, 54 insertions(+), 62 deletions(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 2746902971d..7bb4d53da00 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -2,18 +2,20 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint go 1.22 -require github.com/terraform-linters/tflint-plugin-sdk v0.20.0 +toolchain go1.22.5 + +require github.com/terraform-linters/tflint-plugin-sdk v0.21.0 require ( github.com/agext/levenshtein v1.2.1 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/hashicorp/go-hclog v1.6.2 // indirect - github.com/hashicorp/go-plugin v1.6.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/hcl/v2 v2.20.0 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-plugin v1.6.1 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/hcl/v2 v2.21.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect @@ -22,13 +24,14 @@ require ( github.com/oklog/run v1.0.0 // indirect github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/zclconf/go-cty v1.14.2 // indirect - golang.org/x/mod v0.15.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.18.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect - google.golang.org/grpc v1.61.1 // indirect - google.golang.org/protobuf v1.33.0 // indirect + github.com/zclconf/go-cty v1.15.0 // indirect + golang.org/x/mod v0.19.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.23.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/grpc v1.65.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect ) diff --git a/tflint-ruleset-blueprint/go.sum b/tflint-ruleset-blueprint/go.sum index beefcb89e94..20e9d1f4ac6 100644 --- a/tflint-ruleset-blueprint/go.sum +++ b/tflint-ruleset-blueprint/go.sum @@ -9,32 +9,24 @@ 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/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= -github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -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/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U= +github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= 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/hashicorp/go-hclog v1.6.2 h1:NOtoftovWkDheyUM/8JW3QMiXyxJK3uHRK7wV04nD2I= -github.com/hashicorp/go-hclog v1.6.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= -github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= -github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= +github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= @@ -49,46 +41,43 @@ github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= 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/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/terraform-linters/tflint-plugin-sdk v0.18.0 h1:XqQS6/RfUU6J3ySDTdN5c/KvNu6sOYdGqtTo4zgRPXE= -github.com/terraform-linters/tflint-plugin-sdk v0.18.0/go.mod h1:OvyC1d9NyIFxNZQeKM7vSGrRWq0cuq27zAQUMpJH5h8= +github.com/terraform-linters/tflint-plugin-sdk v0.21.0 h1:RoorxuuWh1RuL09PWAmaCKw/hmb9QP5dukGXZiB0fs8= +github.com/terraform-linters/tflint-plugin-sdk v0.21.0/go.mod h1:f7ruoYh44RQvnZRxpWhn8JFkpEVlQFT8wC9MhIF0Rp4= github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI= -github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= +github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -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/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= -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.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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= From 105cd2b75fe13a978752232fe0d7019e084b9e85 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 Jul 2024 19:21:52 +0200 Subject: [PATCH 1098/1371] chore(deps): update go modules (#2468) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 42 ++++++++++++------------- cli/go.sum | 88 ++++++++++++++++++++++++++-------------------------- 3 files changed, 66 insertions(+), 66 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index d9217f8ba10..29cb5e240a9 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.4.2 +VERSION=v1.4.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index e4c6e78675b..be0b316337a 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,16 +3,16 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.22 require ( - cloud.google.com/go/asset v1.19.4 + cloud.google.com/go/asset v1.19.5 cloud.google.com/go/storage v1.43.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.17.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 github.com/golang/protobuf v1.5.4 - github.com/gomarkdown/markdown v0.0.0-20240626202925-2eda941fd024 + github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v63 v63.0.0 github.com/hashicorp/hcl/v2 v2.21.0 @@ -26,7 +26,7 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v1.0.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.66.0 + github.com/open-policy-agent/opa v0.67.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.1 @@ -65,8 +65,8 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect @@ -95,7 +95,7 @@ require ( github.com/go-stack/stack v1.8.1 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang/glog v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect @@ -105,10 +105,10 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.5 // indirect + github.com/googleapis/gax-go/v2 v2.13.0 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/gruntwork-io/terratest v0.46.15 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect + github.com/gruntwork-io/terratest v0.47.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -165,14 +165,14 @@ require ( go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/sdk v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/crypto v0.25.0 // indirect @@ -184,9 +184,9 @@ require ( golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.23.0 // indirect google.golang.org/genproto v0.0.0-20240722135656-d784300faade // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect - google.golang.org/grpc v1.64.1 // indirect + google.golang.org/grpc v1.65.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect @@ -204,6 +204,6 @@ require ( sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/controller-runtime v0.15.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/kyaml v0.17.1 // indirect + sigs.k8s.io/kustomize/kyaml v0.17.2 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index c256a33d861..bfa0819c996 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -3,8 +3,8 @@ cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= cloud.google.com/go/accesscontextmanager v1.8.9 h1:oVjc3eFQP92zezKsof5ly6ENhuNSsgadRdFKhUn7L9g= cloud.google.com/go/accesscontextmanager v1.8.9/go.mod h1:IXvQesVgOC7aXgK9OpYFn5eWnzz8fazegIiJ5WnCOVw= -cloud.google.com/go/asset v1.19.4 h1:TFHvHGifCl8wRWzDDqomfUmCK3tml7lX9Jx3jZgxre8= -cloud.google.com/go/asset v1.19.4/go.mod h1:zSEhgb9eNLeBcl4eSO/nsrh1MyUNCBynvyRaFnXMaeY= +cloud.google.com/go/asset v1.19.5 h1:/R2XZS6lR8oj/Y3L+epD2yy7mf44Zp62H4xZ4vzaR/Y= +cloud.google.com/go/asset v1.19.5/go.mod h1:sqyLOYaLLfc4ACcn3YxqHno+J7lRt9NJTdO50zCUcY0= cloud.google.com/go/auth v0.7.2 h1:uiha352VrCDMXg+yoBtaD0tUF4Kv9vrtrWPYXwutnDE= cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= @@ -24,8 +24,8 @@ cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502Jw dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.0 h1:1rjUGjXuTnVp/RANDMfCRnDsUi0lIFJUQf4K1aPf5YE= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.0/go.mod h1:EJ+GwRNr/M3wZmmsaBpoUYgQ31+IO+y3sOtKIxw48PI= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.1 h1:IfsF5yta+pslEAWF1QYFSP/3obWsjLQzFyEKJYAhzos= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.1/go.mod h1:Bop47HzdH60K1rPgNRNqBHrBWhhmqCBG9Y4Y5PEn9fE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -67,13 +67,13 @@ github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx2 github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= @@ -219,8 +219,8 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -239,8 +239,8 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomarkdown/markdown v0.0.0-20240626202925-2eda941fd024 h1:saBP362Qm7zDdDXqv61kI4rzhmLFq3Z1gx34xpl6cWE= -github.com/gomarkdown/markdown v0.0.0-20240626202925-2eda941fd024/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6 h1:ZPy+2XJ8u0bB3sNFi+I72gMEMS7MTg7aZCCXPOjV8iw= +github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -278,14 +278,14 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= -github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= +github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= +github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/gruntwork-io/terratest v0.46.15 h1:qfqjTFveymaqe7aAWn3LjlK0SwVGpRfoOut5ggNyfQ8= -github.com/gruntwork-io/terratest v0.46.15/go.mod h1:9bd22zAojjBBiYdsp+AR1iyl2iB6bRUVm2Yf1AFhfrA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/gruntwork-io/terratest v0.47.0 h1:xIy1pT7NbGVlMLDZEHl3+3iSnvffh8tN2pL6idn448c= +github.com/gruntwork-io/terratest v0.47.0/go.mod h1:oywHw1cFKXSYvKPm27U7quZVzDUlA22H2xUrKCe26xM= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -390,8 +390,8 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.66.0 h1:DbrvfJQja0FBRcPOB3Z/BOckocN+M4ApNWyNhSRJt0w= -github.com/open-policy-agent/opa v0.66.0/go.mod h1:EIgNnJcol7AvQR/IcWLwL13k64gHVbNAVG46b2G+/EY= +github.com/open-policy-agent/opa v0.67.0 h1:FOdsO9yNhfmrh+72oVK7ImWmzruG+VSpfbr5IBqEWVs= +github.com/open-policy-agent/opa v0.67.0/go.mod h1:aqKlHc8E2VAAylYE9x09zJYr/fYzGX+JKne89UGqFzk= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -424,8 +424,8 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= @@ -521,22 +521,22 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -679,8 +679,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20240722135656-d784300faade h1:lKFsS7wpngDgSCeFn7MoLy+wBDQZ1UQIJD4UNM1Qvkg= google.golang.org/genproto v0.0.0-20240722135656-d784300faade/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= +google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade h1:WxZOF2yayUHpHSbUE6NMzumUzBxYc3YGwo0YHnbzsJY= +google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade h1:oCRSWfwGXQsqlVdErcyTt4A93Y8fo0/9D4b1gnI++qo= google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -688,8 +688,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= 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= @@ -752,8 +752,8 @@ sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUT sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= 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/kustomize/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= -sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= +sigs.k8s.io/kustomize/kyaml v0.17.2 h1:+AzvoJUY0kq4QAhH/ydPHHMRLijtUKiyVyh7fOSshr0= +sigs.k8s.io/kustomize/kyaml v0.17.2/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From 4c7e1b3f8d6429560e8af61250b1ef71658dab9e Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:38:33 -0500 Subject: [PATCH 1099/1371] chore: Update Tools to 1.22.0 (#2428) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 606a4b1a79b..8562e3d50ee 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.8.5 +TERRAFORM_VERSION := 1.9.3 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 480.0.0 +CLOUD_SDK_VERSION := 486.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,25 +25,25 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.59.3 +TERRAGRUNT_VERSION := 0.64.4 # Updated by Update Tooling Workflow -KUSTOMIZE_VERSION := 5.4.2 +KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.52 +KPT_VERSION := 1.0.0-beta.54 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.3.5 +CFT_CLI_VERSION := 1.4.2 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.28.11 +KUBECTL_VERSION := 1.28.12 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.51.1 +TFLINT_VERSION := 0.52.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.6 +MODULE_SWAPPER_VERSION := 0.4.8 TFLINT_BP_PLUGIN := 0.1.0 # For developer-tools-krm @@ -55,9 +55,9 @@ KIND_VERSION := 0.18.0 GATOR_VERSION := 3.14.2 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.19.1 +GCRANE_VERSION := 0.20.1 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From d5d910e78e99b8809a9c4736192c968d8c7ac5dd Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 1 Aug 2024 02:03:03 +0200 Subject: [PATCH 1100/1371] chore(deps): update cft/developer-tools docker tag to v1.22 (#2481) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 29cb5e240a9..9335c466d90 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.21 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd GOLANGCI_VERSION := 1.59.1 From ccd164fa1f877b89982789b7bea55f1f2b0251c1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 1 Aug 2024 20:05:54 +0200 Subject: [PATCH 1101/1371] chore(deps): update cft/developer-tools docker tag to v1.22 (#2482) --- infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index bd043d739e6..b9ef766a0b0 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -31,7 +31,7 @@ steps: dir: 'infra/blueprint-test' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.21' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.22' options: env: - 'TF_VAR_org_id=$_ORG_ID' From 712b7f2d81bed9d8ae08e85a7142b51bf6e593e7 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Fri, 2 Aug 2024 11:13:01 -0500 Subject: [PATCH 1102/1371] chore: migrate dev project cleaner to GAR (#2487) --- infra/terraform/dev-org/dev-project-cleanup/cleanup.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf index 23d056f9c92..cd60a0aacc7 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf @@ -23,7 +23,7 @@ module "app-engine" { module "projects_cleanup" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 3.0" + version = "~> 4.0" job_schedule = "17 * * * *" max_project_age_in_hours = "24" @@ -32,4 +32,5 @@ module "projects_cleanup" { region = local.region target_excluded_labels = local.exclude_labels target_folder_id = local.cleanup_folder + function_docker_registry = "ARTIFACT_REGISTRY" } From e88be7ca41410770248effbc1c656fd40d1bce3f Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Fri, 2 Aug 2024 09:27:48 -0700 Subject: [PATCH 1103/1371] feat: setup a GAR repository for CFT images (#2484) Co-authored-by: Andrew Peabody --- .../test-org/ci-project/.terraform.lock.hcl | 89 ++++++++++--------- infra/terraform/test-org/ci-project/gar.tf | 19 ++++ .../terraform/test-org/ci-project/versions.tf | 4 +- 3 files changed, 66 insertions(+), 46 deletions(-) create mode 100644 infra/terraform/test-org/ci-project/gar.tf diff --git a/infra/terraform/test-org/ci-project/.terraform.lock.hcl b/infra/terraform/test-org/ci-project/.terraform.lock.hcl index c9dad1b9f0b..32e14175887 100644 --- a/infra/terraform/test-org/ci-project/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-project/.terraform.lock.hcl @@ -2,63 +2,64 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "5.20.0" - constraints = ">= 3.39.0, >= 3.53.0, >= 3.64.0, < 6.0.0" + version = "5.39.1" + constraints = ">= 3.53.0, >= 3.64.0, >= 5.26.0, < 6.0.0" hashes = [ - "h1:1A6/7vxNHz+9Htdkr0NF3cFFStT+kR3aC5Hh8y4fyVA=", - "zh:10197fce4ddf2be32717fb3a5992b45ee1a134f8c66207ba7a2d89339bcad17e", - "zh:428c22bc9ae637adaa3c99e7ec2f5df3828c1625cebfc0ef680e520abdaff820", - "zh:4474139669a13997abd3d8282dc00905a08c695895b1b3d09e5a87753be54a24", - "zh:4bcd7a09577303d71146899f70413a7376531c940015eb6bfa047df55778d2ef", - "zh:5c5083c8deae3093a63d9a7ff18844985e35f2108fca49a812be85f3ec8e7409", - "zh:72ab7bf2a7a1ae98bf1ed790cc3babcd6399db58aa2c9bcef005f9b709b8ad98", - "zh:95cf50e8aa4fe5495b983aca1478cd7909fafc92c0e1942b764343076f367e3f", - "zh:9efd8613897beee98c11befc1f8ebfea14b5a0e88b0fdd2f737a1a2acd5e2a2f", - "zh:b91ddced2f7916338e1f7d0fa003a15bb5700d8d4f389d906f2944334d67bbc2", - "zh:db0270eb90eda9ce98668afc517365d5876c81bb12f0375d6837d204231f6df5", + "h1:6AJPkCW3JqdpVO+HCb8g0mzZyZXPUEt/+3BTmCGnTTg=", + "zh:28763694f5f06a98a4745f0e37f8f8ae412e48a6cfd9b7339599abf89e7577c5", + "zh:469a415b398a08c8b479e32cb24b028791eac57bdab3c15d8b987290e55bfa55", + "zh:4a1f97c58f22379f7c98c7bfe94c923d58c41cb9801679e1a54f85c9848af48c", + "zh:4b2bc066b977cf57de895d1a68f47cc4df48cc7ce0054f8c3de06f6cd63f263d", + "zh:6436aa9a7721079f0784b3ccc0da953337f96500bd34a5ba927fe1833392c54a", + "zh:6b0833e932bc904dee2ca320d5efb785766fd4474c041128868232cc78a0e764", + "zh:8c2a47a571dce3b825fd90789d1af3699cdd615f06e5bf13258585d1560222b8", + "zh:ae5b4cdc76720165023870bc9899bb7de9aee8f4ead95dd368a6ebad95176fe4", + "zh:c30307a74d64f61fbd5a6b5e8658e4d11152ee1f54f43a02c0fe734e5f0f529a", + "zh:e892a200145641b8ae55ba0f69cf83454267b41e0f2d3b6932d4d917d8112911", + "zh:ecd95d22838181ae578eba90154a972661bcdc779f728d71957c059b56c7fd61", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f58e490c192698ff8655081d467e57ee13558aa47f950f1d249318bf5cc93e5e", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.20.0" - constraints = ">= 3.39.0, >= 3.64.0, < 6.0.0" + version = "5.39.1" + constraints = ">= 3.64.0, >= 5.26.0, < 6.0.0" hashes = [ - "h1:VSz6LygMw9vekbL9jkhxImhjeiafFrOkVIpojyeWVOU=", - "zh:2792639ca660f373ce0c0d152f28d1d2e59b590c19d960eddea3c7b70be2e811", - "zh:5a29c775934d5fdf3960687222b0c1505741104ade9a94e42a11d6bef73c1656", - "zh:71fcdf323e7e5bf91d12450ad7f948eef3df935e1875764d5f3c6316b57faa1b", - "zh:89ca5d8cb4d17d7855b7ee7c347a3bb57d5c935c4cc6d18ac78098c9c1c6008a", - "zh:c2a1e2d093ade9a5a4d5170fa4d439c2542f7d01a114af2a5a92b071268d193e", - "zh:c4999b0bb00ce68bea7b203fdd6685c8133f7593d8ce7a9214cedac4844c22b0", - "zh:c912e8f6baa182780678b1caf44863e7d829942c0e9f4a3f04bd623e1bf5f430", - "zh:d553df714bc0d94b3bcdba37a3fca2eb099d7e494502a64a20b3d0f5213b979b", - "zh:d92266f87f3679b179a238b2a3df5309da6b9d86bdcb9311cce5f4b9537938fb", - "zh:e0daa80c3691c6b977c64d22a0c4f6e180d5d3dc888306f7057adb179baab761", + "h1:KOBwBBNtenF6bAgQlvIdtx4tfnrl2iXNRyAYAYfpqA4=", + "zh:07fcc7db2fdc302627f2cddd16fe6b2bf1e8a0fd24e41172afaee96dcb7894bd", + "zh:0f17e28afe3322b692cf912b09378333f59e51d3e62da27e8a337e86b34cb9e9", + "zh:252abaeb1dd9739f7b919d1ed3728c20f266c761125b6c33dc17fbbf08af77fb", + "zh:313c8db8dfb4b80d44aff470d6dcc2c7f5f6dbf4484717636e7fe42a401f5dff", + "zh:353ecd422983e3d993c7daa3fb0d7fd6663b663dfd95894734dc8f5261dba6bf", + "zh:486ffdfe5e834a03dd374813451fb6ec15392934b1adfadac0b9c2485f6f8e27", + "zh:847a88f8c392efd0c84e85d716d2ab7ec3a2d52c213c6b79db67aedd31b23a81", + "zh:9569b0d3029198d5dac39a7d714553d3456eb9db885393965f585b33ded60c7e", + "zh:b79475e63c78a24c70500c0e28e7526104b385fd5fa08f332d8bf0c94d6597de", + "zh:bf70c9fcd96d2abd1d3682cfd39075709745185b874a005465c6c067ce102dee", + "zh:d644a1043481d16a5788847b4204933f528bf65fb571546aec62f7da19d7e6b4", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fee824aeb0f16837d3aaeadbabdf9e40d162344415acba8c521e43cf76d0efa8", ] } provider "registry.terraform.io/integrations/github" { - version = "6.0.1" + version = "6.2.3" constraints = "~> 6.0" hashes = [ - "h1:0KIqqSJNVJeGVWmuQ/E+dMxXUyZqFcPBKx0TwCa0k58=", - "zh:02809196d73846c34f435633deb876391e036628254ec7733e991ef4be8937b8", - "zh:107974d5ee14c2116ecb175e9a98b80b49d1b16f0a9120f55fc59bb494510446", - "zh:1af00f406b490d28f105b9fec7151b467004676b829437d2f0e796409e8353fb", - "zh:1b9989d19e3b6a795e166952baaf3ade64b45d416933aa3ba14591effd15c0a0", - "zh:2b74693b5bf0d1be923acf9b34062f8a046473858bb7f22d05779f8752dd7bb2", - "zh:4845cb2a8eb59d3d3cfba8906d51681f312469fa9694ad6fd3e8f4c39396a385", - "zh:58fa1b8dbe09b553a5e92e108439c0be454181ba295afb65e9f004589619044c", - "zh:66136c381022fa6e1829d5de0ded42d75b1566b7bd431370fc716829f1bc4cb0", - "zh:680e93f5525541047b78bdac6a88779fe6656b503d60cedab6a31a134116be52", - "zh:6a9c7fb124aac014bd7f2248ae317316da52118ffdc9289850e86cea8d503717", - "zh:82250d7d4eba026a9438e7637931fc662a70a918efc346b83aebeb1fb031ee81", - "zh:858229daa25ef519c194441663b163fb03daa5f8e2376d77f523aa2c0ae1268f", - "zh:94eba25a9e491640428f5ee349f7fa00bc7d7e7928bc60ca2c5be82c51187441", - "zh:e6a75c879bb8c1f3a867a7320afb01e52bde5881459e568c0424a048ce2d4f4d", + "h1:nHTegsQYYUJZbaTnU1aMJBgnZUbR2zsfCl7DsL/kZjQ=", + "zh:05874671652a260b12d784cc46b0eea156f493a5f12e00368d1f6cb319156257", + "zh:0c7a3cae5a66e5c5efc3b25ba646a0d46bfe1fd3edba1f5a75f51aede85a9d1b", + "zh:174310010d08f13e36e53ff18e44a21dd040c89884ef190a192c6ce27926a912", + "zh:23d1d8731e518354ce6a83419f49101aece63882b0ca7c489f3c598cc6ea5d5e", + "zh:4e88953816daf11ab1681c32c7988d4e29476fc44f0959fe03173532cf5044de", + "zh:6fab07734ccf27f5afee4442abae2d33245eabf35519032ce1e2aad6961a640a", + "zh:7b2f324b918e161c892c29ee80d36c48ca8b891b8047e132fc701ca741e5ae72", + "zh:8ef4f0d691ade98082ef1f6b36e556468e5ab26e60021f0de0fb22e3acdfd990", + "zh:8f0f3e139faa8f2b9075bb9978dd683f4bab5ac91171bbb969addd04d7f0b90f", + "zh:97cb6d7fdf640237cc2f0ab830db8f878770968c59fd28298e9dddb8b9e6294d", + "zh:a17038d8747c6bb660e4c5981e8ffbbc33c66ba164868fd35d442e7f828a1e01", + "zh:aa9f4b7d947f7b11277b4e9ba7147f5594cf60a6589b7aac4344f73d1400d1c0", + "zh:c780b951e14d583ef6ffef9a934831b56ee157c50ed8e969c676a636810f7db1", + "zh:d8497bb2986fd76107b7208b33cc39281797164fdea09453e987b969a461befb", + "zh:fbd1fee2c9df3aa19cf8851ce134dea6e45ea01cb85695c1726670c285797e25", ] } diff --git a/infra/terraform/test-org/ci-project/gar.tf b/infra/terraform/test-org/ci-project/gar.tf new file mode 100644 index 00000000000..91090bffe83 --- /dev/null +++ b/infra/terraform/test-org/ci-project/gar.tf @@ -0,0 +1,19 @@ +module "artifact_registry" { + source = "GoogleCloudPlatform/artifact-registry/google" + version = "~> 0.2" + + location = "us" + project_id = local.project_id + format = "DOCKER" + repository_id = "gcr.io" + + members = { + readers = [ + "allUsers", + ] + + writers = [ + "serviceAccount:${module.service_accounts.service_account.email}", + ] + } +} diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf index 67d0458307c..16e4e21a7c2 100644 --- a/infra/terraform/test-org/ci-project/versions.tf +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -22,10 +22,10 @@ terraform { version = "~> 6.0" } google = { - version = ">= 3.39, < 6" + version = ">= 5.26, < 6" } google-beta = { - version = ">= 3.39, < 6" + version = ">= 5.26, < 6" } } } From a93ed62b3c4b68615ca248b173534e254a63f6a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Aug 2024 11:19:49 -0700 Subject: [PATCH 1104/1371] chore(deps): bump rexml from 3.3.2 to 3.3.3 in /infra/build/developer-tools/build/data (#2486) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/build/developer-tools/build/data/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index fbd20bf01b3..b53b366f7b8 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -523,7 +523,7 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.2) - rexml (3.3.2) + rexml (3.3.3) strscan rspec (3.11.0) rspec-core (~> 3.11.0) From e0f2c994c6629fc9d5f68d6652daba66f4f9725b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 2 Aug 2024 20:27:10 +0200 Subject: [PATCH 1105/1371] fix(deps): update module google.golang.org/api to v0.190.0 (#2489) --- infra/utils/fbf/go.mod | 11 +++++------ infra/utils/fbf/go.sum | 28 +++++++++++++--------------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 3beebd65229..1e1c01966b9 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.189.0 + google.golang.org/api v0.190.0 ) require ( - cloud.google.com/go/auth v0.7.2 // indirect + cloud.google.com/go/auth v0.7.3 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -19,11 +19,10 @@ require ( github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/s2a-go v0.1.7 // indirect + github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.5 // indirect + github.com/googleapis/gax-go/v2 v2.13.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect @@ -40,7 +39,7 @@ require ( golang.org/x/sys v0.22.0 // indirect golang.org/x/term v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect google.golang.org/grpc v1.64.1 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index c0f7a688415..0ba75229cb5 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.7.2 h1:uiha352VrCDMXg+yoBtaD0tUF4Kv9vrtrWPYXwutnDE= -cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= +cloud.google.com/go/auth v0.7.3 h1:98Vr+5jMaCZ5NZk6e/uBgf60phTk/XN84r8QEWB9yjY= +cloud.google.com/go/auth v0.7.3/go.mod h1:HJtWUx1P5eqjy/f6Iq5KeytNpbAcGolPhOgyop2LlzA= cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= @@ -41,8 +41,6 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= 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= @@ -51,15 +49,15 @@ github.com/google/go-cmp v0.5.0/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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= -github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= +github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= +github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -137,18 +135,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.189.0 h1:equMo30LypAkdkLMBqfeIqtyAnlyig1JSZArl4XPwdI= -google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8= +google.golang.org/api v0.190.0 h1:ASM+IhLY1zljNdLu19W1jTmU6A+gMk6M46Wlur61s+Q= +google.golang.org/api v0.190.0/go.mod h1:QIr6I9iedBLnfqoD6L6Vze1UvS5Hzj5r2aUBOaZnLHo= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240722135656-d784300faade h1:lKFsS7wpngDgSCeFn7MoLy+wBDQZ1UQIJD4UNM1Qvkg= -google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3 h1:QW9+G6Fir4VcRXVH8x3LilNAb6cxBGLa6+GM4hRwexE= -google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3/go.mod h1:kdrSS/OiLkPrNUpzD4aHgCq2rVuC/YRxok32HXZ4vRE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade h1:oCRSWfwGXQsqlVdErcyTt4A93Y8fo0/9D4b1gnI++qo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf h1:OqdXDEakZCVtDiZTjcxfwbHPCT11ycCEsTKesBVKvyY= +google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY= +google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From ca03f449f2ee9c928e702b8520e823cca83d445a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 2 Aug 2024 22:47:35 +0200 Subject: [PATCH 1106/1371] fix(deps): update github.com/hashicorp/terraform-config-inspect digest to 6714b46 (#2488) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index dcc632148b8..c690b6e8efc 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -8,7 +8,7 @@ require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.47.0 - github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 + github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 github.com/hashicorp/terraform-json v0.22.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 58aa8a83fc3..4a911a7a9a7 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -399,8 +399,8 @@ github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+Db github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 h1:ApSEBSu6EhcJWCdwSMd1VbQUeJDtB1jAOHfIxjZyMTc= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 h1:RwY5HBgtBZ997UtKJAO2Rx+94ETyevwWEVXWx1SL5YY= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= From 091a4ff2c68dfccb8a5011b039a22cc34074ccef Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 2 Aug 2024 15:36:36 -0700 Subject: [PATCH 1107/1371] feat(tflint-ruleset): add terraform_required_version (#2485) --- go.work | 12 +- tflint-ruleset-blueprint/go.mod | 10 +- .../rules/terraform_required_version.go | 138 ++++++++++++++ .../rules/terraform_required_version_test.go | 29 +++ .../multiple-invalid/.expected/issues.json | 170 ++++++++++++++++++ .../multiple-invalid/main.tf | 47 +++++ .../multiple-valid/.expected/issues.json | 1 + .../multiple-valid/main.tf | 47 +++++ 8 files changed, 444 insertions(+), 10 deletions(-) create mode 100644 tflint-ruleset-blueprint/rules/terraform_required_version.go create mode 100644 tflint-ruleset-blueprint/rules/terraform_required_version_test.go create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/main.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/main.tf diff --git a/go.work b/go.work index e6835f5f8de..a2e06c98acc 100644 --- a/go.work +++ b/go.work @@ -1,9 +1,9 @@ -go 1.22 +go 1.22.2 use ( - ./cli - ./infra/blueprint-test - ./infra/module-swapper - ./infra/utils/fbf - ./tflint-ruleset-blueprint + ./cli + ./infra/blueprint-test + ./infra/module-swapper + ./infra/utils/fbf + ./tflint-ruleset-blueprint ) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 7bb4d53da00..275497b9282 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -1,10 +1,14 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint -go 1.22 +go 1.22.2 toolchain go1.22.5 -require github.com/terraform-linters/tflint-plugin-sdk v0.21.0 +require ( + github.com/hashicorp/go-version v1.7.0 + github.com/hashicorp/hcl/v2 v2.21.0 + github.com/terraform-linters/tflint-plugin-sdk v0.21.0 +) require ( github.com/agext/levenshtein v1.2.1 // indirect @@ -14,8 +18,6 @@ require ( github.com/google/go-cmp v0.6.0 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect - github.com/hashicorp/hcl/v2 v2.21.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version.go b/tflint-ruleset-blueprint/rules/terraform_required_version.go new file mode 100644 index 00000000000..98afdf731bc --- /dev/null +++ b/tflint-ruleset-blueprint/rules/terraform_required_version.go @@ -0,0 +1,138 @@ +package rules + +import ( + "fmt" + "strconv" + "strings" + + "github.com/hashicorp/go-version" + "github.com/hashicorp/hcl/v2/gohcl" + "github.com/terraform-linters/tflint-plugin-sdk/hclext" + "github.com/terraform-linters/tflint-plugin-sdk/tflint" +) + +// TerraformRequiredVersion checks if a module has a terraform required_version within valid range. +type TerraformRequiredVersion struct { + tflint.DefaultRule +} + +// NewTerraformRequiredVersion returns a new rule. +func NewTerraformRequiredVersion() *TerraformRequiredVersion { + return &TerraformRequiredVersion{} +} + +// Name returns the rule name. +func (r *TerraformRequiredVersion) Name() string { + return "terraform_required_version" +} + +// Enabled returns whether the rule is enabled by default. +func (r *TerraformRequiredVersion) Enabled() bool { + return false +} + +// Severity returns the rule severity. +func (r *TerraformRequiredVersion) Severity() tflint.Severity { + return tflint.ERROR +} + +// Link returns the rule reference link +func (r *TerraformRequiredVersion) Link() string { + return "https://googlecloudplatform.github.io/samples-style-guide/#language-specific" +} + +const ( + minimumTerraformRequiredVersion = "1.3" + maximumTerraformRequiredVersion = "1.5" +) + +// Checks if a module has a terraform required_version within valid range. +func (r *TerraformRequiredVersion) Check(runner tflint.Runner) error { + splitVersion := strings.Split(minimumTerraformRequiredVersion, ".") + majorVersion, err := strconv.Atoi(splitVersion[0]) + if err != nil { + return err + } + minorVersion, err := strconv.Atoi(splitVersion[1]) + if err != nil { + return err + } + + var terraform_below_minimum_required_version string + if minorVersion > 0 { + terraform_below_minimum_required_version = fmt.Sprintf( + "v%d.%d.999", + majorVersion, + minorVersion - 1, + ) + } else { + terraform_below_minimum_required_version = fmt.Sprintf( + "v%d.%d.999", + majorVersion - 1, + 999, + ) + } + + below_required_version, err := version.NewVersion(terraform_below_minimum_required_version) + if err != nil { + return err + } + + minimum_required_version, err := version.NewVersion(minimumTerraformRequiredVersion) + if err != nil { + return err + } + + maximum_required_version, err := version.NewVersion(maximumTerraformRequiredVersion) + if err != nil { + return err + } + + path, err := runner.GetModulePath() + if err != nil { + return err + } + + if !path.IsRoot() { + return nil + } + + content, err := runner.GetModuleContent(&hclext.BodySchema{ + Blocks: []hclext.BlockSchema{ + { + Type: "terraform", + Body: &hclext.BodySchema{ + Attributes: []hclext.AttributeSchema{{Name: "required_version"}}, + }, + }, + }, + }, &tflint.GetModuleContentOption{ExpandMode: tflint.ExpandModeNone}) + if err != nil { + return err + } + + for _, block := range content.Blocks { + var raw_terraform_required_version string + diags := gohcl.DecodeExpression(block.Body.Attributes["required_version"].Expr, nil, &raw_terraform_required_version) + if diags.HasErrors() { + return fmt.Errorf("failed to decode terraform required_version %q: %v", block.Labels[0], diags.Error()) + } + + constraints, err := version.NewConstraint(raw_terraform_required_version) + if err != nil { + return err + } + + //TODO: add option for repository exemptions + if !((constraints.Check(minimum_required_version) || constraints.Check(maximum_required_version)) && !constraints.Check(below_required_version)) { + //TODO: use EmitIssueWithFix() + err := runner.EmitIssue(r, fmt.Sprintf("required_version is not inclusive of the the minimum %q and maximum %q terraform required_version: %q", minimumTerraformRequiredVersion, maximumTerraformRequiredVersion, constraints.String()), block.DefRange) + if err != nil { + return err + } + } + + } + + return nil +} diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version_test.go b/tflint-ruleset-blueprint/rules/terraform_required_version_test.go new file mode 100644 index 00000000000..d1e0f832042 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/terraform_required_version_test.go @@ -0,0 +1,29 @@ +package rules + +import ( + "path" + "testing" +) + +const ( + terraformRequiredVersionTestDir = "terraform_required_version" +) + +func TestTerraformMinimumRequiredVersion(t *testing.T) { + tests := []ruleTC{ + { + dir: path.Join(terraformRequiredVersionTestDir, "multiple-valid"), + }, + { + dir: path.Join(terraformRequiredVersionTestDir, "multiple-invalid"), + }, + } + + rule := NewTerraformRequiredVersion() + + for _, tc := range tests { + t.Run(tc.dir, func(t *testing.T) { + ruleTest(t, rule, tc) + }) + } +} diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/.expected/issues.json new file mode 100644 index 00000000000..bbc81408b49 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/.expected/issues.json @@ -0,0 +1,170 @@ +[ + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \">= 1\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 1, + "Column": 1 + }, + "End": { + "Line": 1, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \">= 1.1\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 5, + "Column": 1 + }, + "End": { + "Line": 5, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \">= 1.1.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 9, + "Column": 1 + }, + "End": { + "Line": 9, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \">=1.1.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 13, + "Column": 1 + }, + "End": { + "Line": 13, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \">= 1.1.0, < 2.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 17, + "Column": 1 + }, + "End": { + "Line": 17, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \">=0.13.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 21, + "Column": 1 + }, + "End": { + "Line": 21, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \"=0.13.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 25, + "Column": 1 + }, + "End": { + "Line": 25, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \"0.13.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 29, + "Column": 1 + }, + "End": { + "Line": 29, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \">= 1.6.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 33, + "Column": 1 + }, + "End": { + "Line": 33, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \">= 1.6.0, < 2.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 37, + "Column": 1 + }, + "End": { + "Line": 37, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \"~>1.6\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 41, + "Column": 1 + }, + "End": { + "Line": 41, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.3\" and maximum \"1.5\" terraform required_version: \"~>0.13.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 45, + "Column": 1 + }, + "End": { + "Line": 45, + "Column": 10 + } + } + } +] diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/main.tf new file mode 100644 index 00000000000..004cf3e2edd --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/main.tf @@ -0,0 +1,47 @@ +terraform { + required_version = ">= 1" +} + +terraform { + required_version = ">= 1.1" +} + +terraform { + required_version = ">= 1.1.0" +} + +terraform { + required_version = ">=1.1.0" +} + +terraform { + required_version = ">= 1.1.0, < 2.0" +} + +terraform { + required_version = ">=0.13.0" +} + +terraform { + required_version = "=0.13.0" +} + +terraform { + required_version = "0.13.0" +} + +terraform { + required_version = ">= 1.6.0" +} + +terraform { + required_version = ">= 1.6.0, < 2.0" +} + +terraform { + required_version = "~>1.6" +} + +terraform { + required_version = "~>0.13.0" +} diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/.expected/issues.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/.expected/issues.json @@ -0,0 +1 @@ +[] diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/main.tf new file mode 100644 index 00000000000..f80548fcffc --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/main.tf @@ -0,0 +1,47 @@ +terraform { + required_version = ">=1.3" +} + +terraform { + required_version = ">=1.3.0" +} + +terraform { + required_version = ">=v1.3" +} + +terraform { + required_version = ">=1.4" +} + +terraform { + required_version = ">= 1.3" +} + +terraform { + required_version = ">= v1.3" +} + +terraform { + required_version = ">=1.3, <2.0" +} + +terraform { + required_version = ">= 1.3, < 2.0" +} + +terraform { + required_version = "=1.3" +} + +terraform { + required_version = "1.3" +} + +terraform { + required_version = "~>1.3" +} + +terraform { + required_version = "~>1.5" +} From 4f91f46fe6b084bb428dc2db8cf2afc8598d5022 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Mon, 5 Aug 2024 11:55:43 -0500 Subject: [PATCH 1108/1371] chore: migrate test project cleaner to GAR (#2492) --- infra/terraform/test-org/test-cleanup/cleanup.tf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index 158f7186745..e50a4cce5bc 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -40,7 +40,8 @@ module "projects_cleaner" { clean_up_org_level_scc_notifications = true target_included_scc_notifications = [".*/notificationConfigs/scc-notify-.*"] - clean_up_billing_sinks = true - target_billing_sinks = [".*/sinks/sk-c-logging-.*-billing-.*"] - billing_account = local.billing_account + clean_up_billing_sinks = true + target_billing_sinks = [".*/sinks/sk-c-logging-.*-billing-.*"] + billing_account = local.billing_account + function_docker_registry = "ARTIFACT_REGISTRY" } From acf2ac447c2c53cfe11c163d69608e8db6ab247a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 5 Aug 2024 11:28:39 -0700 Subject: [PATCH 1109/1371] chore(renovate): ignore testdata (#2494) --- .github/renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/renovate.json b/.github/renovate.json index b3a403ccb2f..af02f458249 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -7,6 +7,7 @@ "helpers:pinGitHubActionDigests" ], "minimumReleaseAge": "7 days", + "ignorePaths": ["tflint-ruleset-blueprint/rules/testdata/**"], "labels": ["dependencies"], "vulnerabilityAlerts": { "labels": ["type:security"], From 306bfb5372c67e351d35c73d5e218feb1021b7b7 Mon Sep 17 00:00:00 2001 From: abhishek kumar tiwari Date: Tue, 6 Aug 2024 05:03:30 +0000 Subject: [PATCH 1110/1371] chore: Add terraform-google-apphub to list of repos (#2493) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 9e21d470cec..26167f37eb9 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -892,5 +892,11 @@ locals { groups = [local.jss_common_group] owners = ["fellipeamedeiros", "sylvioneto"] }, + { + name = "terraform-google-apphub" + org = "GoogleCloudPlatform" + description = "Creates and manages AppHub resources" + owners = ["bharathkkb", "q2w"] + }, ] } From 37e941ea8b7975973c44f6c91355b6a2da41a656 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 7 Aug 2024 23:34:09 +0200 Subject: [PATCH 1111/1371] chore(deps): update dependency go to v1.22.6 (#2495) Co-authored-by: Awais Malik Co-authored-by: Andrew Peabody From 687afeb09118feec5633ebbd553abdda5a4be021 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 7 Aug 2024 23:42:47 +0200 Subject: [PATCH 1112/1371] chore(deps): update dependency go to v1.22.6 (#2498) Co-authored-by: Awais Malik Co-authored-by: Andrew Peabody From 905dc838f60b9ca78828b11c9b1de31868287059 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 8 Aug 2024 02:05:25 +0200 Subject: [PATCH 1113/1371] chore(deps): update dependency go to v1.22.6 (#2499) Co-authored-by: Awais Malik Co-authored-by: Andrew Peabody --- infra/blueprint-test/go.mod | 2 +- tflint-ruleset-blueprint/go.mod | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index c690b6e8efc..e1923e77c88 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -2,7 +2,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.22 -toolchain go1.22.5 +toolchain go1.22.6 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 275497b9282..fc491ef1f2c 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -2,7 +2,7 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint go 1.22.2 -toolchain go1.22.5 +toolchain go1.22.6 require ( github.com/hashicorp/go-version v1.7.0 From c02f7da259b16f15ba613876d1a9b6756e29993c Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 8 Aug 2024 08:52:08 -0700 Subject: [PATCH 1114/1371] chore: Update Tools to 1.22.1 (#2480) --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 8562e3d50ee..a6f32bb1baf 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.9.3 +TERRAFORM_VERSION := 1.9.4 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 486.0.0 +CLOUD_SDK_VERSION := 487.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.64.4 +TERRAGRUNT_VERSION := 0.66.3 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.4.2 +CFT_CLI_VERSION := 1.4.3 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.12 # Updated by Update Tooling Workflow @@ -55,9 +55,9 @@ KIND_VERSION := 0.18.0 GATOR_VERSION := 3.14.2 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow -GCRANE_VERSION := 0.20.1 +GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From a44d4986a81e549fd906006bc6915007e6d925bd Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 8 Aug 2024 12:16:05 -0700 Subject: [PATCH 1115/1371] chore(renovate): update config to current schema (#2497) Co-authored-by: Awais Malik --- .github/renovate.json | 7 ++++++- .pre-commit-config.yaml | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index af02f458249..f31b9f1656c 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,6 +1,7 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ + "mergeConfidence:all-badges", "config:recommended", ":semanticCommits", ":preserveSemverRanges", @@ -42,14 +43,16 @@ "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths"] } ], - "regexManagers": [ + "customManagers": [ { + "customType": "regex", "fileMatch": ["(^|/)Makefile$"], "matchStrings": ["ALPINE_VERSION := (?.*?)\\n"], "datasourceTemplate": "docker", "depNameTemplate": "alpine" }, { + "customType": "regex", "fileMatch": ["(^|/)Makefile$"], "matchStrings": [ "DOCKER_TAG_VERSION_DEVELOPER_TOOLS := (?.*?)\\n" @@ -59,6 +62,7 @@ "depNameTemplate": "cft/developer-tools" }, { + "customType": "regex", "fileMatch": ["(^|/)build/(int|lint)\\.cloudbuild\\.yaml$"], "matchStrings": [ " _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '(?.*?)'\\n" @@ -68,6 +72,7 @@ "depNameTemplate": "cft/developer-tools" }, { + "customType": "regex", "fileMatch": ["(^|/)Makefile$"], "matchStrings": ["GOLANGCI_VERSION := (?.*?)\\n"], "datasourceTemplate": "docker", diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4b2740f5148..3c1a7dfac33 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ exclude: | )$ repos: - repo: https://github.com/renovatebot/pre-commit-hooks - rev: 37.353.0 + rev: 38.21.2 hooks: - id: renovate-config-validator - repo: https://github.com/pre-commit/pre-commit-hooks From f43ba90c4546f9a0facba80d6325a44024ed240d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 8 Aug 2024 13:53:15 -0700 Subject: [PATCH 1116/1371] chore(tooling): add support for TFLINT_BP_PLUGIN (#2501) --- .github/workflows/update-tooling.yml | 6 +++++- infra/build/Makefile | 5 +++-- infra/build/developer-tools/Dockerfile | 4 ++-- infra/build/developer-tools/build/install_tflint_plugin.sh | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 9681378790d..25b737f4038 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -15,6 +15,7 @@ env: KPT_URL: "https://api.github.com/repos/kptdev/kpt/releases" CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" MODULE_SWAPPER_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" + TFLINT_BP_PLUGIN_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" KUBECTL_MINOR: "1.28" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" GATOR_MINOR: "3.14" @@ -38,7 +39,7 @@ jobs: run: | PR_UPDATE_BODY="" newline=$'\n' - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER" "KUSTOMIZE" "TERRAGRUNT" "TFLINT" "GOLANGCI") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER" "KUSTOMIZE" "TERRAGRUNT" "TFLINT" "GOLANGCI" "TFLINT_BP_PLUGIN") for tool in ${tools[@]} do @@ -58,6 +59,9 @@ jobs: elif [ "$tool" == "MODULE_SWAPPER" ]; then # get latest MODULE_SWAPPER release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("infra/module-swapper"))][0].tag_name' | tr -d "infra/module\-swapper/v") + elif [ "$tool" == "TFLINT_BP_PLUGIN" ]; then + # get latest TFLINT_BP_PLUGIN release + LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("tflint-ruleset-blueprint"))][0].tag_name' | tr -d "tflint\-ruleset\-blueprint/v") elif [ "$tool" == "KUBECTL" ]; then # get latest KUBECTL_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") diff --git a/infra/build/Makefile b/infra/build/Makefile index a6f32bb1baf..f2767244047 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -44,7 +44,8 @@ TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.8 -TFLINT_BP_PLUGIN := 0.1.0 +# Updated by Update Tooling Workflow +TFLINT_BP_PLUGIN_VERSION := 0.1.0 # For developer-tools-krm # Updated by Update Tooling Workflow @@ -93,7 +94,7 @@ build-image-developer-tools: --build-arg TINKEY_VERSION=${TINKEY_VERSION} \ --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ --build-arg MODULE_SWAPPER_VERSION=${MODULE_SWAPPER_VERSION} \ - --build-arg TFLINT_BP_PLUGIN=${TFLINT_BP_PLUGIN} \ + --build-arg TFLINT_BP_PLUGIN_VERSION=${TFLINT_BP_PLUGIN_VERSION} \ -t ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} "./developer-tools" docker build \ --build-arg BASE_IMAGE_VERSION=${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 940ce257154..98982491744 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -115,8 +115,8 @@ RUN /build/install_kubectl.sh ${KUBECTL_VERSION} ARG MODULE_SWAPPER_VERSION RUN /build/install_module-swapper.sh ${MODULE_SWAPPER_VERSION} -ARG TFLINT_BP_PLUGIN -RUN /build/install_tflint_plugin.sh ${TFLINT_BP_PLUGIN} +ARG TFLINT_BP_PLUGIN_VERSION +RUN /build/install_tflint_plugin.sh ${TFLINT_BP_PLUGIN_VERSION} WORKDIR /opt/kitchen ADD ./build/data/Gemfile . diff --git a/infra/build/developer-tools/build/install_tflint_plugin.sh b/infra/build/developer-tools/build/install_tflint_plugin.sh index 65db2b99b00..9b29ca6c8aa 100755 --- a/infra/build/developer-tools/build/install_tflint_plugin.sh +++ b/infra/build/developer-tools/build/install_tflint_plugin.sh @@ -19,8 +19,8 @@ set -u mkdir -p /build/install_tflint_plugin cd /build/install_tflint_plugin -TFLINT_BP_PLUGIN=$1 -wget -nv "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/tflint-ruleset-blueprint%2Fv${TFLINT_BP_PLUGIN}/tflint-ruleset-blueprint_linux_amd64.zip" +TFLINT_BP_PLUGIN_VERSION=$1 +wget -nv "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/releases/download/tflint-ruleset-blueprint%2Fv${TFLINT_BP_PLUGIN_VERSION}/tflint-ruleset-blueprint_linux_amd64.zip" unzip -q tflint-ruleset-blueprint_linux_amd64.zip mkdir -p ~/.tflint.d/plugins install -o 0 -g 0 -m 0755 tflint-ruleset-blueprint ~/.tflint.d/plugins From 6b5c501bce5558aa5d2aef315c2a4d273c664d81 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 8 Aug 2024 17:02:57 -0700 Subject: [PATCH 1117/1371] feat(tflint_bp_plugin): add min & max parameters (#2502) --- .../rules/terraform_required_version.go | 41 +++++- .../rules/terraform_required_version_test.go | 9 ++ .../.expected/issues.json | 128 ++++++++++++++++++ .../multiple-invalid-config/.tflint.hcl | 5 + .../multiple-invalid-config/main.tf | 35 +++++ .../.expected/issues.json | 1 + .../multiple-valid-config-single/.tflint.hcl | 4 + .../multiple-valid-config-single/main.tf | 11 ++ .../.expected/issues.json | 1 + .../multiple-valid-config/.tflint.hcl | 5 + .../multiple-valid-config/main.tf | 15 ++ tflint-ruleset-blueprint/rules/utils_test.go | 6 +- 12 files changed, 255 insertions(+), 6 deletions(-) create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.tflint.hcl create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/main.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.tflint.hcl create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/main.tf create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.expected/issues.json create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.tflint.hcl create mode 100644 tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/main.tf diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version.go b/tflint-ruleset-blueprint/rules/terraform_required_version.go index 98afdf731bc..4c8572209f7 100644 --- a/tflint-ruleset-blueprint/rules/terraform_required_version.go +++ b/tflint-ruleset-blueprint/rules/terraform_required_version.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/go-version" "github.com/hashicorp/hcl/v2/gohcl" "github.com/terraform-linters/tflint-plugin-sdk/hclext" + "github.com/terraform-linters/tflint-plugin-sdk/logger" "github.com/terraform-linters/tflint-plugin-sdk/tflint" ) @@ -16,6 +17,12 @@ type TerraformRequiredVersion struct { tflint.DefaultRule } +// TerraformRequiredVersionConfig is a config of TerraformRequiredVersion +type TerraformRequiredVersionConfig struct { + MinVersion string `hclext:"min_version,optional"` + MaxVersion string `hclext:"max_version,optional"` +} + // NewTerraformRequiredVersion returns a new rule. func NewTerraformRequiredVersion() *TerraformRequiredVersion { return &TerraformRequiredVersion{} @@ -48,7 +55,30 @@ const ( // Checks if a module has a terraform required_version within valid range. func (r *TerraformRequiredVersion) Check(runner tflint.Runner) error { - splitVersion := strings.Split(minimumTerraformRequiredVersion, ".") + config := &TerraformRequiredVersionConfig{} + if err := runner.DecodeRuleConfig(r.Name(), config); err != nil { + return err + } + + minVersion := minimumTerraformRequiredVersion + if config.MinVersion != "" { + if _, err := version.NewSemver(config.MinVersion); err != nil { + return err + } + minVersion = config.MinVersion + } + + maxVersion := maximumTerraformRequiredVersion + if config.MaxVersion != "" { + if _, err := version.NewSemver(config.MaxVersion); err != nil { + return err + } + maxVersion = config.MaxVersion + } + + logger.Info(fmt.Sprintf("Running with min_version: %q max_version: %q", minVersion, maxVersion)) + + splitVersion := strings.Split(minVersion, ".") majorVersion, err := strconv.Atoi(splitVersion[0]) if err != nil { return err @@ -66,6 +96,9 @@ func (r *TerraformRequiredVersion) Check(runner tflint.Runner) error { minorVersion - 1, ) } else { + if majorVersion == 0 { + return fmt.Errorf("Error: minimum version test constraint would be below zero: v%d.%d.999", majorVersion - 1, 999) + } terraform_below_minimum_required_version = fmt.Sprintf( "v%d.%d.999", majorVersion - 1, @@ -78,12 +111,12 @@ func (r *TerraformRequiredVersion) Check(runner tflint.Runner) error { return err } - minimum_required_version, err := version.NewVersion(minimumTerraformRequiredVersion) + minimum_required_version, err := version.NewVersion(minVersion) if err != nil { return err } - maximum_required_version, err := version.NewVersion(maximumTerraformRequiredVersion) + maximum_required_version, err := version.NewVersion(maxVersion) if err != nil { return err } @@ -126,7 +159,7 @@ func (r *TerraformRequiredVersion) Check(runner tflint.Runner) error { //TODO: add option for repository exemptions if !((constraints.Check(minimum_required_version) || constraints.Check(maximum_required_version)) && !constraints.Check(below_required_version)) { //TODO: use EmitIssueWithFix() - err := runner.EmitIssue(r, fmt.Sprintf("required_version is not inclusive of the the minimum %q and maximum %q terraform required_version: %q", minimumTerraformRequiredVersion, maximumTerraformRequiredVersion, constraints.String()), block.DefRange) + err := runner.EmitIssue(r, fmt.Sprintf("required_version is not inclusive of the the minimum %q and maximum %q terraform required_version: %q", minVersion, maxVersion, constraints.String()), block.DefRange) if err != nil { return err } diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version_test.go b/tflint-ruleset-blueprint/rules/terraform_required_version_test.go index d1e0f832042..f218ee2d2c8 100644 --- a/tflint-ruleset-blueprint/rules/terraform_required_version_test.go +++ b/tflint-ruleset-blueprint/rules/terraform_required_version_test.go @@ -17,6 +17,15 @@ func TestTerraformMinimumRequiredVersion(t *testing.T) { { dir: path.Join(terraformRequiredVersionTestDir, "multiple-invalid"), }, + { + dir: path.Join(terraformRequiredVersionTestDir, "multiple-valid-config"), + }, + { + dir: path.Join(terraformRequiredVersionTestDir, "multiple-invalid-config"), + }, + { + dir: path.Join(terraformRequiredVersionTestDir, "multiple-valid-config-single"), + }, } rule := NewTerraformRequiredVersion() diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.expected/issues.json new file mode 100644 index 00000000000..0b2c3ff98ef --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.expected/issues.json @@ -0,0 +1,128 @@ +[ + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \">= 1\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 1, + "Column": 1 + }, + "End": { + "Line": 1, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \">= 1.1\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 5, + "Column": 1 + }, + "End": { + "Line": 5, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \">= 1.1.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 9, + "Column": 1 + }, + "End": { + "Line": 9, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \">=1.1.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 13, + "Column": 1 + }, + "End": { + "Line": 13, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \">= 1.1.0, < 2.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 17, + "Column": 1 + }, + "End": { + "Line": 17, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \">=0.13.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 21, + "Column": 1 + }, + "End": { + "Line": 21, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \"=0.13.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 25, + "Column": 1 + }, + "End": { + "Line": 25, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \"0.13.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 29, + "Column": 1 + }, + "End": { + "Line": 29, + "Column": 10 + } + } + }, + { + "Message": "required_version is not inclusive of the the minimum \"1.6\" and maximum \"1.9\" terraform required_version: \"~>0.13.0\"", + "Range": { + "Filename": "main.tf", + "Start": { + "Line": 33, + "Column": 1 + }, + "End": { + "Line": 33, + "Column": 10 + } + } + } +] diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.tflint.hcl b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.tflint.hcl new file mode 100644 index 00000000000..e9e5ba835f5 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.tflint.hcl @@ -0,0 +1,5 @@ +rule "terraform_required_version" { + enabled = true + min_version = "1.6" + max_version = "1.9" +} diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/main.tf new file mode 100644 index 00000000000..1a50f6c00f0 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/main.tf @@ -0,0 +1,35 @@ +terraform { + required_version = ">= 1" +} + +terraform { + required_version = ">= 1.1" +} + +terraform { + required_version = ">= 1.1.0" +} + +terraform { + required_version = ">=1.1.0" +} + +terraform { + required_version = ">= 1.1.0, < 2.0" +} + +terraform { + required_version = ">=0.13.0" +} + +terraform { + required_version = "=0.13.0" +} + +terraform { + required_version = "0.13.0" +} + +terraform { + required_version = "~>0.13.0" +} diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.expected/issues.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.expected/issues.json @@ -0,0 +1 @@ +[] diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.tflint.hcl b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.tflint.hcl new file mode 100644 index 00000000000..2af18905a66 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.tflint.hcl @@ -0,0 +1,4 @@ +rule "terraform_required_version" { + enabled = true + max_version = "1.6" +} diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/main.tf new file mode 100644 index 00000000000..730b2432247 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/main.tf @@ -0,0 +1,11 @@ +terraform { + required_version = ">=1.3" +} + +terraform { + required_version = ">= 1.3, < 2.0" +} + +terraform { + required_version = "~>1.6" +} diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.expected/issues.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.expected/issues.json @@ -0,0 +1 @@ +[] diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.tflint.hcl b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.tflint.hcl new file mode 100644 index 00000000000..e9e5ba835f5 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.tflint.hcl @@ -0,0 +1,5 @@ +rule "terraform_required_version" { + enabled = true + min_version = "1.6" + max_version = "1.9" +} diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/main.tf new file mode 100644 index 00000000000..d1ec99d54d7 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/main.tf @@ -0,0 +1,15 @@ +terraform { + required_version = ">=1.6" +} + +terraform { + required_version = ">= 1.6, < 2.0" +} + +terraform { + required_version = "~>1.6" +} + +terraform { + required_version = "~>1.9" +} diff --git a/tflint-ruleset-blueprint/rules/utils_test.go b/tflint-ruleset-blueprint/rules/utils_test.go index a05da469c43..81c35967d76 100644 --- a/tflint-ruleset-blueprint/rules/utils_test.go +++ b/tflint-ruleset-blueprint/rules/utils_test.go @@ -6,6 +6,7 @@ import ( "os" "path" "path/filepath" + "slices" "strings" "testing" @@ -16,11 +17,12 @@ import ( const ( testdataDir = "testdata" expectedSuffix = ".expected" - tfExt = ".tf" updateEnvVar = "UPDATE_EXPECTED" issueFile = "issues.json" ) +var validExtensions = []string{".tf", ".hcl"} + // ruleTC is a single rule test case. type ruleTC struct { // Dir with root module to be tested. @@ -59,7 +61,7 @@ func configForTest(t *testing.T, subdir string) map[string]string { if d.IsDir() && strings.HasPrefix(d.Name(), ".") { return filepath.SkipDir } - if !d.IsDir() && path.Ext(fp) == tfExt { + if !d.IsDir() && slices.Contains(validExtensions, path.Ext(fp)) { relPath, err := filepath.Rel(modDir, fp) if err != nil { return err From e52c99b5b50c0ae15199f099b1af8b63a9380b8c Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 9 Aug 2024 11:37:30 -0700 Subject: [PATCH 1118/1371] chore(build): load optional local repo tflint config (#2500) --- infra/build/Makefile | 2 +- .../developer-tools/build/scripts/task_helper_functions.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index f2767244047..76eb3936205 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index d6562cfaf35..0a6f9a4dbcc 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -375,8 +375,11 @@ function check_tflint() { fi # load default ruleset tflintCfg="/root/tflint/.tflint.example.hcl" + # load if local repo ruleset + if [[ -f "./github/.tflint.repo.hcl" ]]; then + tflintCfg="./github/.tflint.repo.hcl" # if module, load tighter ruleset - if [[ $path == "." || $path == "./modules"* ]];then + elif [[ $path == "." || $path == "./modules"* || $path =~ "^[0-9]+-.*" ]]; then tflintCfg="/root/tflint/.tflint.module.hcl" fi From 97922719e7e251f611535079e1969fbb4af6bf9b Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 9 Aug 2024 13:32:38 -0700 Subject: [PATCH 1119/1371] chore(CI): fix custom tflint path (#2503) --- .../developer-tools/build/scripts/task_helper_functions.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 0a6f9a4dbcc..5d4342ce7e6 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -376,14 +376,14 @@ function check_tflint() { # load default ruleset tflintCfg="/root/tflint/.tflint.example.hcl" # load if local repo ruleset - if [[ -f "./github/.tflint.repo.hcl" ]]; then - tflintCfg="./github/.tflint.repo.hcl" + if [[ -f "/workspace/.github/.tflint.repo.hcl" ]]; then + tflintCfg="/workspace/.github/.tflint.repo.hcl" # if module, load tighter ruleset elif [[ $path == "." || $path == "./modules"* || $path =~ "^[0-9]+-.*" ]]; then tflintCfg="/root/tflint/.tflint.module.hcl" fi - cd "${path}" && echo "Working in ${path} ..." + cd "${path}" && echo "Working in ${path} using ${tflintCfg}..." tflint --config=${tflintCfg} --no-color rc=$? if [[ "${rc}" -ne 0 ]]; then From c9570c3d740c21a7ddf51438a42ba71910e384a8 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 9 Aug 2024 15:01:22 -0700 Subject: [PATCH 1120/1371] chore(release-please): release tflint-ruleset-blueprint 0.2.0 (#2396) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 44480328fd0..ad5e181011e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.1", "infra/module-swapper": "0.4.8", - "tflint-ruleset-blueprint": "0.1.0" + "tflint-ruleset-blueprint": "0.2.0" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md index eb1dd46d1e4..2c0ca0f410e 100644 --- a/tflint-ruleset-blueprint/CHANGELOG.md +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.2.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.1.0...tflint-ruleset-blueprint/v0.2.0) (2024-08-09) + + +### Features + +* **tflint_bp_plugin:** add min & max parameters ([#2502](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2502)) ([6b5c501](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6b5c501bce5558aa5d2aef315c2a4d273c664d81)) +* **tflint-ruleset:** add terraform_required_version ([#2485](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2485)) ([091a4ff](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/091a4ff2c68dfccb8a5011b039a22cc34074ccef)) + + +### Bug Fixes + +* **deps:** update module github.com/terraform-linters/tflint-plugin-sdk to v0.20.0 ([#2380](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2380)) ([6bc4f2d](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/6bc4f2d709ec3878467ca34db8290b95238fa200)) +* **deps:** update module github.com/terraform-linters/tflint-plugin-sdk to v0.21.0 ([#2479](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2479)) ([78de0b9](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/78de0b9369c4d92fefc3c6299ade0aa3554e79b5)) + ## [0.1.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint-v0.0.1...tflint-ruleset-blueprint/v0.1.0) (2024-05-02) From 0d37c19ed314bf2ed2efac4ce193343efa299dc8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 12 Aug 2024 20:27:30 +0200 Subject: [PATCH 1121/1371] chore(deps): update go modules (#2483) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 20 ++++++++++---------- cli/go.sum | 40 ++++++++++++++++++++-------------------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 9335c466d90..8b5b096967c 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.4.3 +VERSION=v1.4.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index be0b316337a..d3c988329f5 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -33,9 +33,9 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 - golang.org/x/oauth2 v0.21.0 - golang.org/x/text v0.16.0 + golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa + golang.org/x/oauth2 v0.22.0 + golang.org/x/text v0.17.0 google.golang.org/api v0.189.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 @@ -175,14 +175,14 @@ require ( go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.25.0 // indirect - golang.org/x/mod v0.19.0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect + golang.org/x/crypto v0.26.0 // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/term v0.23.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.23.0 // indirect + golang.org/x/tools v0.24.0 // indirect google.golang.org/genproto v0.0.0-20240722135656-d784300faade // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect diff --git a/cli/go.sum b/cli/go.sum index bfa0819c996..adbca60b845 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -556,11 +556,11 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -568,8 +568,8 @@ 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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= -golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -586,11 +586,11 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -600,8 +600,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -626,16 +626,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -644,8 +644,8 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -662,8 +662,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= -golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= 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= From 5d53e42dab4bdc35104fde9bf6258c13101b05be Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Aug 2024 18:21:17 +0200 Subject: [PATCH 1122/1371] chore(deps): update actions/upload-artifact action to v4.3.5 (#2507) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 622820fa3f8..1a2cd46de86 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 88a1643165a..992ad2dd252 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5 with: name: SARIF file path: results.sarif From 179ff6105a2df1e150cc3ab31266effdff364d8f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Aug 2024 18:29:09 +0200 Subject: [PATCH 1123/1371] chore(deps): update actions/upload-artifact action to v4.3.6 (#2508) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 1a2cd46de86..4b07054bfff 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5 + uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 992ad2dd252..dc30cd7166b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5 + uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: SARIF file path: results.sarif From a81993f1f3d8d4afa717769ae6e94b240afd203d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Aug 2024 18:39:34 +0200 Subject: [PATCH 1124/1371] chore(deps): update google-github-actions/auth action to v2.1.4 (#2509) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 33b8e7b661d..71548d6d371 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@71fee32a0bb7e97b4d33d548e7d957010649d8fa' # v2.1.3 + uses: 'google-github-actions/auth@f112390a2df9932162083945e46d439060d66ec2' # v2.1.4 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 4b07054bfff..27c20bac7c3 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@71fee32a0bb7e97b4d33d548e7d957010649d8fa' # v2.1.3 + uses: 'google-github-actions/auth@f112390a2df9932162083945e46d439060d66ec2' # v2.1.4 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From e4e7f671b6bff71b46d75eb6d24af737a243bf14 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Aug 2024 18:51:21 +0200 Subject: [PATCH 1125/1371] chore(deps): update github/codeql-action action to v3.26.0 (#2511) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 931c960c486..15ea7459725 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/init@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/autobuild@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/analyze@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index dc30cd7166b..eaffa4263d8 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/upload-sarif@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 with: sarif_file: results.sarif From f3bf93f9488698ae836808e437c08517c8538585 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Aug 2024 19:00:20 +0200 Subject: [PATCH 1126/1371] chore(deps): update module google.golang.org/api to v0.191.0 (#2514) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 1e1c01966b9..ea79837dbe4 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.190.0 + google.golang.org/api v0.191.0 ) require ( @@ -35,7 +35,7 @@ require ( go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/crypto v0.25.0 // indirect golang.org/x/net v0.27.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/oauth2 v0.22.0 // indirect golang.org/x/sys v0.22.0 // indirect golang.org/x/term v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 0ba75229cb5..26693420a8c 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -108,13 +108,13 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -135,8 +135,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.190.0 h1:ASM+IhLY1zljNdLu19W1jTmU6A+gMk6M46Wlur61s+Q= -google.golang.org/api v0.190.0/go.mod h1:QIr6I9iedBLnfqoD6L6Vze1UvS5Hzj5r2aUBOaZnLHo= +google.golang.org/api v0.191.0 h1:cJcF09Z+4HAB2t5qTQM1ZtfL/PemsLFkcFG67qq2afk= +google.golang.org/api v0.191.0/go.mod h1:tD5dsFGxFza0hnQveGfVk9QQYKcfp+VzgRqyXFxE0+E= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= From 711a675d7c82ea997038b55a016b554d9de41175 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Aug 2024 19:09:46 +0200 Subject: [PATCH 1127/1371] chore(deps): update google-github-actions/setup-gcloud action to v2.1.1 (#2510) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 71548d6d371..35dd25a0461 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -29,7 +29,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@98ddc00a17442e89a24bbf282954a3b65ce6d200 # v2.1.0 + - uses: google-github-actions/setup-gcloud@f0990588f1e5b5af6827153b93673613abdc6ec7 # v2.1.1 with: project_id: ${{ env.PROJECT_ID }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 27c20bac7c3..0aeb5aed891 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -34,7 +34,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@98ddc00a17442e89a24bbf282954a3b65ce6d200 # v2.1.0 + - uses: google-github-actions/setup-gcloud@f0990588f1e5b5af6827153b93673613abdc6ec7 # v2.1.1 with: version: "410.0.0" From 13973f0a4aade9b6a1bb24210a9a0d7038416cae Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Aug 2024 19:48:07 +0200 Subject: [PATCH 1128/1371] fix(deps): update module golang.org/x/mod to v0.20.0 (#2512) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index e1923e77c88..f74f741ec58 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -15,7 +15,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.17.3 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.19.0 + golang.org/x/mod v0.20.0 sigs.k8s.io/kustomize/kyaml v0.17.2 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 4a911a7a9a7..fbcb2a61d6e 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -581,8 +581,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= -golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From 7125f5efd2cd8264eb6e3b531660073c254db376 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 13 Aug 2024 12:11:38 -0700 Subject: [PATCH 1129/1371] chore: Update Tools to 1.22.3 (#2504) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 76eb3936205..d8411dc3333 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.9.4 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 487.0.0 +CLOUD_SDK_VERSION := 488.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.66.3 +TERRAGRUNT_VERSION := 0.66.5 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.4.3 +CFT_CLI_VERSION := 1.4.4 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.12 # Updated by Update Tooling Workflow @@ -45,7 +45,7 @@ ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.8 # Updated by Update Tooling Workflow -TFLINT_BP_PLUGIN_VERSION := 0.1.0 +TFLINT_BP_PLUGIN_VERSION := 0.2.0 # For developer-tools-krm # Updated by Update Tooling Workflow @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 0cc19e2068b9b41e594ed0659319ed03a0f7b5b7 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 13 Aug 2024 14:14:56 -0700 Subject: [PATCH 1130/1371] fix(tflint): rename plugin (#2516) --- ...go => terraform_required_version_range.go} | 36 +++++++++--------- .../terraform_required_version_range_test.go | 38 +++++++++++++++++++ .../rules/terraform_required_version_test.go | 38 ------------------- .../.expected/issues.json | 0 .../multiple-invalid-config}/.tflint.hcl | 2 +- .../multiple-invalid-config/main.tf | 0 .../multiple-invalid/.expected/issues.json | 0 .../multiple-invalid/main.tf | 0 .../.expected/issues.json | 0 .../multiple-valid-config-single/.tflint.hcl | 2 +- .../multiple-valid-config-single/main.tf | 0 .../.expected/issues.json | 0 .../multiple-valid-config}/.tflint.hcl | 2 +- .../multiple-valid-config/main.tf | 0 .../multiple-valid/.expected/issues.json | 0 .../multiple-valid/main.tf | 0 16 files changed, 59 insertions(+), 59 deletions(-) rename tflint-ruleset-blueprint/rules/{terraform_required_version.go => terraform_required_version_range.go} (77%) create mode 100644 tflint-ruleset-blueprint/rules/terraform_required_version_range_test.go delete mode 100644 tflint-ruleset-blueprint/rules/terraform_required_version_test.go rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-invalid-config/.expected/issues.json (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version/multiple-valid-config => terraform_required_version_range/multiple-invalid-config}/.tflint.hcl (61%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-invalid-config/main.tf (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-invalid/.expected/issues.json (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-invalid/main.tf (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-valid-config-single/.expected/issues.json (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-valid-config-single/.tflint.hcl (51%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-valid-config-single/main.tf (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-valid-config/.expected/issues.json (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version/multiple-invalid-config => terraform_required_version_range/multiple-valid-config}/.tflint.hcl (61%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-valid-config/main.tf (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-valid/.expected/issues.json (100%) rename tflint-ruleset-blueprint/rules/testdata/{terraform_required_version => terraform_required_version_range}/multiple-valid/main.tf (100%) diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version.go b/tflint-ruleset-blueprint/rules/terraform_required_version_range.go similarity index 77% rename from tflint-ruleset-blueprint/rules/terraform_required_version.go rename to tflint-ruleset-blueprint/rules/terraform_required_version_range.go index 4c8572209f7..8f28d485c8b 100644 --- a/tflint-ruleset-blueprint/rules/terraform_required_version.go +++ b/tflint-ruleset-blueprint/rules/terraform_required_version_range.go @@ -12,55 +12,55 @@ import ( "github.com/terraform-linters/tflint-plugin-sdk/tflint" ) -// TerraformRequiredVersion checks if a module has a terraform required_version within valid range. -type TerraformRequiredVersion struct { +// TerraformRequiredVersionRange checks if a module has a terraform required_version within valid range. +type TerraformRequiredVersionRange struct { tflint.DefaultRule } -// TerraformRequiredVersionConfig is a config of TerraformRequiredVersion -type TerraformRequiredVersionConfig struct { +// TerraformRequiredVersionRangeConfig is a config of TerraformRequiredVersionRange +type TerraformRequiredVersionRangeConfig struct { MinVersion string `hclext:"min_version,optional"` MaxVersion string `hclext:"max_version,optional"` } -// NewTerraformRequiredVersion returns a new rule. -func NewTerraformRequiredVersion() *TerraformRequiredVersion { - return &TerraformRequiredVersion{} +// NewTerraformRequiredVersionRange returns a new rule. +func NewTerraformRequiredVersionRange() *TerraformRequiredVersionRange { + return &TerraformRequiredVersionRange{} } // Name returns the rule name. -func (r *TerraformRequiredVersion) Name() string { - return "terraform_required_version" +func (r *TerraformRequiredVersionRange) Name() string { + return "terraform_required_version_range" } // Enabled returns whether the rule is enabled by default. -func (r *TerraformRequiredVersion) Enabled() bool { +func (r *TerraformRequiredVersionRange) Enabled() bool { return false } // Severity returns the rule severity. -func (r *TerraformRequiredVersion) Severity() tflint.Severity { +func (r *TerraformRequiredVersionRange) Severity() tflint.Severity { return tflint.ERROR } // Link returns the rule reference link -func (r *TerraformRequiredVersion) Link() string { +func (r *TerraformRequiredVersionRange) Link() string { return "https://googlecloudplatform.github.io/samples-style-guide/#language-specific" } const ( - minimumTerraformRequiredVersion = "1.3" - maximumTerraformRequiredVersion = "1.5" + minimumTerraformRequiredVersionRange = "1.3" + maximumTerraformRequiredVersionRange = "1.5" ) // Checks if a module has a terraform required_version within valid range. -func (r *TerraformRequiredVersion) Check(runner tflint.Runner) error { - config := &TerraformRequiredVersionConfig{} +func (r *TerraformRequiredVersionRange) Check(runner tflint.Runner) error { + config := &TerraformRequiredVersionRangeConfig{} if err := runner.DecodeRuleConfig(r.Name(), config); err != nil { return err } - minVersion := minimumTerraformRequiredVersion + minVersion := minimumTerraformRequiredVersionRange if config.MinVersion != "" { if _, err := version.NewSemver(config.MinVersion); err != nil { return err @@ -68,7 +68,7 @@ func (r *TerraformRequiredVersion) Check(runner tflint.Runner) error { minVersion = config.MinVersion } - maxVersion := maximumTerraformRequiredVersion + maxVersion := maximumTerraformRequiredVersionRange if config.MaxVersion != "" { if _, err := version.NewSemver(config.MaxVersion); err != nil { return err diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version_range_test.go b/tflint-ruleset-blueprint/rules/terraform_required_version_range_test.go new file mode 100644 index 00000000000..120896387f6 --- /dev/null +++ b/tflint-ruleset-blueprint/rules/terraform_required_version_range_test.go @@ -0,0 +1,38 @@ +package rules + +import ( + "path" + "testing" +) + +const ( + TerraformRequiredVersionRangeTestDir = "terraform_required_version_range" +) + +func TestTerraformMinimumRequiredVersionRange(t *testing.T) { + tests := []ruleTC{ + { + dir: path.Join(TerraformRequiredVersionRangeTestDir, "multiple-valid"), + }, + { + dir: path.Join(TerraformRequiredVersionRangeTestDir, "multiple-invalid"), + }, + { + dir: path.Join(TerraformRequiredVersionRangeTestDir, "multiple-valid-config"), + }, + { + dir: path.Join(TerraformRequiredVersionRangeTestDir, "multiple-invalid-config"), + }, + { + dir: path.Join(TerraformRequiredVersionRangeTestDir, "multiple-valid-config-single"), + }, + } + + rule := NewTerraformRequiredVersionRange() + + for _, tc := range tests { + t.Run(tc.dir, func(t *testing.T) { + ruleTest(t, rule, tc) + }) + } +} diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version_test.go b/tflint-ruleset-blueprint/rules/terraform_required_version_test.go deleted file mode 100644 index f218ee2d2c8..00000000000 --- a/tflint-ruleset-blueprint/rules/terraform_required_version_test.go +++ /dev/null @@ -1,38 +0,0 @@ -package rules - -import ( - "path" - "testing" -) - -const ( - terraformRequiredVersionTestDir = "terraform_required_version" -) - -func TestTerraformMinimumRequiredVersion(t *testing.T) { - tests := []ruleTC{ - { - dir: path.Join(terraformRequiredVersionTestDir, "multiple-valid"), - }, - { - dir: path.Join(terraformRequiredVersionTestDir, "multiple-invalid"), - }, - { - dir: path.Join(terraformRequiredVersionTestDir, "multiple-valid-config"), - }, - { - dir: path.Join(terraformRequiredVersionTestDir, "multiple-invalid-config"), - }, - { - dir: path.Join(terraformRequiredVersionTestDir, "multiple-valid-config-single"), - }, - } - - rule := NewTerraformRequiredVersion() - - for _, tc := range tests { - t.Run(tc.dir, func(t *testing.T) { - ruleTest(t, rule, tc) - }) - } -} diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid-config/.expected/issues.json similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.expected/issues.json rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid-config/.expected/issues.json diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.tflint.hcl b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid-config/.tflint.hcl similarity index 61% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.tflint.hcl rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid-config/.tflint.hcl index e9e5ba835f5..5844e3c25ee 100644 --- a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.tflint.hcl +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid-config/.tflint.hcl @@ -1,4 +1,4 @@ -rule "terraform_required_version" { +rule "terraform_required_version_range" { enabled = true min_version = "1.6" max_version = "1.9" diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid-config/main.tf similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/main.tf rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid-config/main.tf diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid/.expected/issues.json similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/.expected/issues.json rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid/.expected/issues.json diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid/main.tf similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid/main.tf rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-invalid/main.tf diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config-single/.expected/issues.json similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.expected/issues.json rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config-single/.expected/issues.json diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.tflint.hcl b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config-single/.tflint.hcl similarity index 51% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.tflint.hcl rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config-single/.tflint.hcl index 2af18905a66..2b138f4a409 100644 --- a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/.tflint.hcl +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config-single/.tflint.hcl @@ -1,4 +1,4 @@ -rule "terraform_required_version" { +rule "terraform_required_version_range" { enabled = true max_version = "1.6" } diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config-single/main.tf similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config-single/main.tf rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config-single/main.tf diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/.expected/issues.json similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/.expected/issues.json rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/.expected/issues.json diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.tflint.hcl b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/.tflint.hcl similarity index 61% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.tflint.hcl rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/.tflint.hcl index e9e5ba835f5..5844e3c25ee 100644 --- a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-invalid-config/.tflint.hcl +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/.tflint.hcl @@ -1,4 +1,4 @@ -rule "terraform_required_version" { +rule "terraform_required_version_range" { enabled = true min_version = "1.6" max_version = "1.9" diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/main.tf similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid-config/main.tf rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/main.tf diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/.expected/issues.json b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid/.expected/issues.json similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/.expected/issues.json rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid/.expected/issues.json diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid/main.tf similarity index 100% rename from tflint-ruleset-blueprint/rules/testdata/terraform_required_version/multiple-valid/main.tf rename to tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid/main.tf From b8c7fdc1c3e62c386d2dfc03a59b1cc513bc77e1 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 13 Aug 2024 14:20:53 -0700 Subject: [PATCH 1131/1371] chore(release-please): release tflint-ruleset-blueprint 0.2.1 (#2517) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ad5e181011e..83143c439ec 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.1", "infra/module-swapper": "0.4.8", - "tflint-ruleset-blueprint": "0.2.0" + "tflint-ruleset-blueprint": "0.2.1" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md index 2c0ca0f410e..4eb35eeab46 100644 --- a/tflint-ruleset-blueprint/CHANGELOG.md +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.0...tflint-ruleset-blueprint/v0.2.1) (2024-08-13) + + +### Bug Fixes + +* **tflint:** rename plugin ([#2516](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2516)) ([0cc19e2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/0cc19e2068b9b41e594ed0659319ed03a0f7b5b7)) + ## [0.2.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.1.0...tflint-ruleset-blueprint/v0.2.0) (2024-08-09) From acea2b2058cfd69c1d07a32da24da2357715e41c Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 13 Aug 2024 14:30:35 -0700 Subject: [PATCH 1132/1371] chore: Update Tools to 1.22.4 (#2515) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d8411dc3333..cf710de7dee 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.66.5 +TERRAGRUNT_VERSION := 0.66.6 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -45,7 +45,7 @@ ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.8 # Updated by Update Tooling Workflow -TFLINT_BP_PLUGIN_VERSION := 0.2.0 +TFLINT_BP_PLUGIN_VERSION := 0.2.1 # For developer-tools-krm # Updated by Update Tooling Workflow @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 1f450a3ee0bb9c660f04b8ff491a680d9f667ab1 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 13 Aug 2024 17:01:31 -0700 Subject: [PATCH 1133/1371] fix(tflint-ruleset-blueprint): increment internal version (#2518) --- tflint-ruleset-blueprint/main.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tflint-ruleset-blueprint/main.go b/tflint-ruleset-blueprint/main.go index a988665a1da..100c2591311 100644 --- a/tflint-ruleset-blueprint/main.go +++ b/tflint-ruleset-blueprint/main.go @@ -10,10 +10,11 @@ func main() { plugin.Serve(&plugin.ServeOpts{ RuleSet: &tflint.BuiltinRuleSet{ Name: "blueprint", - Version: "0.1.0", + Version: "0.2.2", Rules: []tflint.Rule{ rules.NewTerraformDocSamplesRestrictedBlocks(), rules.NewTerraformDocSamplesRestrictedResources(), + rules.NewTerraformRequiredVersionRange(), }, }, }) From 7b3c64520edbbefd0722ca5c9b2c75b81a0d44bc Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 13 Aug 2024 17:06:24 -0700 Subject: [PATCH 1134/1371] chore(release-please): release tflint-ruleset-blueprint 0.2.2 (#2519) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 83143c439ec..a186d31982c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.1", "infra/module-swapper": "0.4.8", - "tflint-ruleset-blueprint": "0.2.1" + "tflint-ruleset-blueprint": "0.2.2" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md index 4eb35eeab46..9c1924f20a6 100644 --- a/tflint-ruleset-blueprint/CHANGELOG.md +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.1...tflint-ruleset-blueprint/v0.2.2) (2024-08-14) + + +### Bug Fixes + +* **tflint-ruleset-blueprint:** increment internal version ([#2518](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2518)) ([1f450a3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/1f450a3ee0bb9c660f04b8ff491a680d9f667ab1)) + ## [0.2.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.0...tflint-ruleset-blueprint/v0.2.1) (2024-08-13) From a1b8785a1522572b877924178dbf3ba3eca06e02 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Aug 2024 19:33:45 +0200 Subject: [PATCH 1135/1371] chore(deps): update go modules (#2506) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpmetadata/cmd.go | 2 +- cli/go.mod | 26 +++++++++++----------- cli/go.sum | 52 +++++++++++++++++++++---------------------- 4 files changed, 41 insertions(+), 41 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 8b5b096967c..dde71baa898 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.4.4 +VERSION=v1.4.5 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index c7f6f96ca6c..52146513e01 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -127,7 +127,7 @@ func generate(cmd *cobra.Command, args []string) error { } if len(errors) > 0 { - return fmt.Errorf(strings.Join(errors, "\n")) + return fmt.Errorf("%s", strings.Join(errors, "\n")) } Log.Info("metadata generated successfully") diff --git a/cli/go.mod b/cli/go.mod index d3c988329f5..32396335baf 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/google/go-github/v63 v63.0.0 github.com/hashicorp/hcl/v2 v2.21.0 - github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 + github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 @@ -26,7 +26,7 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v1.0.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.67.0 + github.com/open-policy-agent/opa v0.67.1 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.1 @@ -36,7 +36,7 @@ require ( golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa golang.org/x/oauth2 v0.22.0 golang.org/x/text v0.17.0 - google.golang.org/api v0.189.0 + google.golang.org/api v0.190.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -44,14 +44,14 @@ require ( require ( cloud.google.com/go v0.115.0 // indirect - cloud.google.com/go/accesscontextmanager v1.8.9 // indirect - cloud.google.com/go/auth v0.7.2 // indirect + cloud.google.com/go/accesscontextmanager v1.8.11 // indirect + cloud.google.com/go/auth v0.7.3 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect - cloud.google.com/go/iam v1.1.10 // indirect - cloud.google.com/go/longrunning v0.5.9 // indirect - cloud.google.com/go/orgpolicy v1.12.5 // indirect - cloud.google.com/go/osconfig v1.13.0 // indirect + cloud.google.com/go/iam v1.1.12 // indirect + cloud.google.com/go/longrunning v0.5.11 // indirect + cloud.google.com/go/orgpolicy v1.12.7 // indirect + cloud.google.com/go/osconfig v1.13.2 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -102,7 +102,7 @@ require ( github.com/google/go-github/v61 v61.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/s2a-go v0.1.7 // indirect + github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.13.0 // indirect @@ -183,9 +183,9 @@ require ( golang.org/x/term v0.23.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.24.0 // indirect - google.golang.org/genproto v0.0.0-20240722135656-d784300faade // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect + google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect google.golang.org/grpc v1.65.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index adbca60b845..351b86453e4 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,24 +1,24 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= -cloud.google.com/go/accesscontextmanager v1.8.9 h1:oVjc3eFQP92zezKsof5ly6ENhuNSsgadRdFKhUn7L9g= -cloud.google.com/go/accesscontextmanager v1.8.9/go.mod h1:IXvQesVgOC7aXgK9OpYFn5eWnzz8fazegIiJ5WnCOVw= +cloud.google.com/go/accesscontextmanager v1.8.11 h1:IQ3KLJmNKPgstN0ZcRw0niU4KfsiOZmzvcGCF+NT618= +cloud.google.com/go/accesscontextmanager v1.8.11/go.mod h1:nwPysISS3KR5qXipAU6cW/UbDavDdTBBgPohbkhGSok= cloud.google.com/go/asset v1.19.5 h1:/R2XZS6lR8oj/Y3L+epD2yy7mf44Zp62H4xZ4vzaR/Y= cloud.google.com/go/asset v1.19.5/go.mod h1:sqyLOYaLLfc4ACcn3YxqHno+J7lRt9NJTdO50zCUcY0= -cloud.google.com/go/auth v0.7.2 h1:uiha352VrCDMXg+yoBtaD0tUF4Kv9vrtrWPYXwutnDE= -cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= +cloud.google.com/go/auth v0.7.3 h1:98Vr+5jMaCZ5NZk6e/uBgf60phTk/XN84r8QEWB9yjY= +cloud.google.com/go/auth v0.7.3/go.mod h1:HJtWUx1P5eqjy/f6Iq5KeytNpbAcGolPhOgyop2LlzA= cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= -cloud.google.com/go/iam v1.1.10 h1:ZSAr64oEhQSClwBL670MsJAW5/RLiC6kfw3Bqmd5ZDI= -cloud.google.com/go/iam v1.1.10/go.mod h1:iEgMq62sg8zx446GCaijmA2Miwg5o3UbO+nI47WHJps= -cloud.google.com/go/longrunning v0.5.9 h1:haH9pAuXdPAMqHvzX0zlWQigXT7B0+CL4/2nXXdBo5k= -cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c= -cloud.google.com/go/orgpolicy v1.12.5 h1:NEbK9U6HuhjXOUI1+fJVdIEh0FHiJtGVq4kYQQ5B8t8= -cloud.google.com/go/orgpolicy v1.12.5/go.mod h1:f778/jOHKp6cP6NbbQgjy4SDfQf6BoVGiSWdxky3ONQ= -cloud.google.com/go/osconfig v1.13.0 h1:k+nAmaTcJ08BSR1yGadRZyLwRSvk5XgaZJinS1sEz4Q= -cloud.google.com/go/osconfig v1.13.0/go.mod h1:tlACnQi1rtSLnHRYzfw9SH9zXs0M7S1jqiW2EOCn2Y0= +cloud.google.com/go/iam v1.1.12 h1:JixGLimRrNGcxvJEQ8+clfLxPlbeZA6MuRJ+qJNQ5Xw= +cloud.google.com/go/iam v1.1.12/go.mod h1:9LDX8J7dN5YRyzVHxwQzrQs9opFFqn0Mxs9nAeB+Hhg= +cloud.google.com/go/longrunning v0.5.11 h1:Havn1kGjz3whCfoD8dxMLP73Ph5w+ODyZB9RUsDxtGk= +cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4= +cloud.google.com/go/orgpolicy v1.12.7 h1:StymaN9vS7949m15Nwgf5aKd9yaRtzWJ4VqHdbXcOEM= +cloud.google.com/go/orgpolicy v1.12.7/go.mod h1:Os3GlUFRPf1UxOHTup5b70BARnhHeQNNVNZzJXPbWYI= +cloud.google.com/go/osconfig v1.13.2 h1:IbbTg7jtTEn4+iEJwgbCYck5NLMOc2eKrqVpQb7Xx6c= +cloud.google.com/go/osconfig v1.13.2/go.mod h1:eupylkWQJCwSIEMkpVR4LqpgKkQi0mD4m1DzNCgpQso= cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= @@ -270,8 +270,8 @@ github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9 github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -295,8 +295,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553 h1:ApSEBSu6EhcJWCdwSMd1VbQUeJDtB1jAOHfIxjZyMTc= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240701073647-9fc3669f7553/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 h1:RwY5HBgtBZ997UtKJAO2Rx+94ETyevwWEVXWx1SL5YY= +github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= @@ -390,8 +390,8 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.67.0 h1:FOdsO9yNhfmrh+72oVK7ImWmzruG+VSpfbr5IBqEWVs= -github.com/open-policy-agent/opa v0.67.0/go.mod h1:aqKlHc8E2VAAylYE9x09zJYr/fYzGX+JKne89UGqFzk= +github.com/open-policy-agent/opa v0.67.1 h1:rzy26J6g1X+CKknAcx0Vfbt41KqjuSzx4E0A8DAZf3E= +github.com/open-policy-agent/opa v0.67.1/go.mod h1:aqKlHc8E2VAAylYE9x09zJYr/fYzGX+JKne89UGqFzk= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -670,19 +670,19 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.189.0 h1:equMo30LypAkdkLMBqfeIqtyAnlyig1JSZArl4XPwdI= -google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8= +google.golang.org/api v0.190.0 h1:ASM+IhLY1zljNdLu19W1jTmU6A+gMk6M46Wlur61s+Q= +google.golang.org/api v0.190.0/go.mod h1:QIr6I9iedBLnfqoD6L6Vze1UvS5Hzj5r2aUBOaZnLHo= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240722135656-d784300faade h1:lKFsS7wpngDgSCeFn7MoLy+wBDQZ1UQIJD4UNM1Qvkg= -google.golang.org/genproto v0.0.0-20240722135656-d784300faade/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY= -google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade h1:WxZOF2yayUHpHSbUE6NMzumUzBxYc3YGwo0YHnbzsJY= -google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade h1:oCRSWfwGXQsqlVdErcyTt4A93Y8fo0/9D4b1gnI++qo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf h1:OqdXDEakZCVtDiZTjcxfwbHPCT11ycCEsTKesBVKvyY= +google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:mCr1K1c8kX+1iSBREvU3Juo11CB+QOEWxbRS01wWl5M= +google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f h1:b1Ln/PG8orm0SsBbHZWke8dDp2lrCD4jSmfglFpTZbk= +google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From f903e4f3238822bd111ed72543d56cee8869143e Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:49:53 -0700 Subject: [PATCH 1136/1371] chore: Update Tools to 1.22.5 (#2520) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index cf710de7dee..945b91f1016 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.4.4 +CFT_CLI_VERSION := 1.4.5 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.12 # Updated by Update Tooling Workflow @@ -45,11 +45,11 @@ ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.8 # Updated by Update Tooling Workflow -TFLINT_BP_PLUGIN_VERSION := 0.2.1 +TFLINT_BP_PLUGIN_VERSION := 0.2.2 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.59.1 +GOLANGCI_VERSION := 1.60.1 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.4 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.5 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 23fc89f97b968b97c2a9da8235ed62b45e181d6c Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 14 Aug 2024 13:42:47 -0700 Subject: [PATCH 1137/1371] fix(terraform_required_version_range): skip missing (#2522) --- tflint-ruleset-blueprint/main.go | 2 +- .../rules/terraform_required_version_range.go | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tflint-ruleset-blueprint/main.go b/tflint-ruleset-blueprint/main.go index 100c2591311..86350a01008 100644 --- a/tflint-ruleset-blueprint/main.go +++ b/tflint-ruleset-blueprint/main.go @@ -10,7 +10,7 @@ func main() { plugin.Serve(&plugin.ServeOpts{ RuleSet: &tflint.BuiltinRuleSet{ Name: "blueprint", - Version: "0.2.2", + Version: "0.2.3", Rules: []tflint.Rule{ rules.NewTerraformDocSamplesRestrictedBlocks(), rules.NewTerraformDocSamplesRestrictedResources(), diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version_range.go b/tflint-ruleset-blueprint/rules/terraform_required_version_range.go index 8f28d485c8b..f15bd36c5f9 100644 --- a/tflint-ruleset-blueprint/rules/terraform_required_version_range.go +++ b/tflint-ruleset-blueprint/rules/terraform_required_version_range.go @@ -145,8 +145,14 @@ func (r *TerraformRequiredVersionRange) Check(runner tflint.Runner) error { } for _, block := range content.Blocks { + requiredVersion, exists := block.Body.Attributes["required_version"] + if !exists { + logger.Info(fmt.Sprintf("required_version does not exist for %s", block.Labels[0])) + continue + } + var raw_terraform_required_version string - diags := gohcl.DecodeExpression(block.Body.Attributes["required_version"].Expr, nil, &raw_terraform_required_version) + diags := gohcl.DecodeExpression(requiredVersion.Expr, nil, &raw_terraform_required_version) if diags.HasErrors() { return fmt.Errorf("failed to decode terraform required_version %q: %v", block.Labels[0], diags.Error()) } From 900bd7819d6f9c9f845a8b8702cb103bb5fdeed1 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 14 Aug 2024 13:50:55 -0700 Subject: [PATCH 1138/1371] chore(release-please): release tflint-ruleset-blueprint 0.2.3 (#2523) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a186d31982c..ad69bfde4e4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.1", "infra/module-swapper": "0.4.8", - "tflint-ruleset-blueprint": "0.2.2" + "tflint-ruleset-blueprint": "0.2.3" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md index 9c1924f20a6..5130ebfe172 100644 --- a/tflint-ruleset-blueprint/CHANGELOG.md +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.2...tflint-ruleset-blueprint/v0.2.3) (2024-08-14) + + +### Bug Fixes + +* **terraform_required_version_range:** skip missing ([#2522](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2522)) ([23fc89f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/23fc89f97b968b97c2a9da8235ed62b45e181d6c)) + ## [0.2.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.1...tflint-ruleset-blueprint/v0.2.2) (2024-08-14) From 3a3b0d7ab7e16e456fe39685f5607ed5d397dbdb Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Aug 2024 23:00:56 +0200 Subject: [PATCH 1139/1371] chore(deps): update golangci/golangci-lint docker tag to v1.60.1 (#2526) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index dde71baa898..dd14902d200 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.59.1 +GOLANGCI_VERSION := 1.60.1 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 953af9ec2030132d6f3f5a49a4de2452e9528d9c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Aug 2024 23:38:12 +0200 Subject: [PATCH 1140/1371] chore(deps): update golangci/golangci-lint docker tag to v1.60.1 (#2527) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 5e79d4e440f..4c4a52ae18b 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.59.1 +GOLANGCI_VERSION := 1.60.1 .PHONY: docker_go_lint docker_go_lint: From 09f1bf8c46d3169364540fa3154ef5c3a175439b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Aug 2024 23:40:24 +0200 Subject: [PATCH 1141/1371] chore(deps): update github/codeql-action action to v3.26.2 (#2525) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 15ea7459725..bfc964f5914 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 + uses: github/codeql-action/init@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 + uses: github/codeql-action/autobuild@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 + uses: github/codeql-action/analyze@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index eaffa4263d8..91adfd33c5b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 + uses: github/codeql-action/upload-sarif@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 with: sarif_file: results.sarif From bf33dd4b907219158c9669dfe05b6dd349e2115c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Aug 2024 23:44:27 +0200 Subject: [PATCH 1142/1371] chore(deps): update module google.golang.org/api to v0.192.0 (#2528) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index ea79837dbe4..78a1e88cb46 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.191.0 + google.golang.org/api v0.192.0 ) require ( - cloud.google.com/go/auth v0.7.3 // indirect + cloud.google.com/go/auth v0.8.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 26693420a8c..db0bd82059b 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.7.3 h1:98Vr+5jMaCZ5NZk6e/uBgf60phTk/XN84r8QEWB9yjY= -cloud.google.com/go/auth v0.7.3/go.mod h1:HJtWUx1P5eqjy/f6Iq5KeytNpbAcGolPhOgyop2LlzA= +cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo= +cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc= cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= @@ -135,8 +135,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.191.0 h1:cJcF09Z+4HAB2t5qTQM1ZtfL/PemsLFkcFG67qq2afk= -google.golang.org/api v0.191.0/go.mod h1:tD5dsFGxFza0hnQveGfVk9QQYKcfp+VzgRqyXFxE0+E= +google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0= +google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= From c7bc1012bac5e379f4764d00ba623dd006524f71 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 15 Aug 2024 09:21:08 -0700 Subject: [PATCH 1143/1371] chore: Update Tools to 1.22.6 (#2524) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 945b91f1016..98dad0b14ac 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.66.6 +TERRAGRUNT_VERSION := 0.66.7 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.4.5 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.28.12 +KUBECTL_VERSION := 1.28.13 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.52.0 TINKEY_VERSION := 1.7.0 @@ -45,7 +45,7 @@ ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.8 # Updated by Update Tooling Workflow -TFLINT_BP_PLUGIN_VERSION := 0.2.2 +TFLINT_BP_PLUGIN_VERSION := 0.2.3 # For developer-tools-krm # Updated by Update Tooling Workflow @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.5 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.6 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From f5dce52092c3c41662c7722db99d80c0e4a9d74d Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 15 Aug 2024 13:09:42 -0700 Subject: [PATCH 1144/1371] fix(terraform_required_version_range): terraform block (#2529) --- tflint-ruleset-blueprint/main.go | 2 +- .../rules/terraform_required_version_range.go | 6 ++---- .../multiple-valid-config/main.tf | 10 ++++++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/tflint-ruleset-blueprint/main.go b/tflint-ruleset-blueprint/main.go index 86350a01008..79c0201ced4 100644 --- a/tflint-ruleset-blueprint/main.go +++ b/tflint-ruleset-blueprint/main.go @@ -10,7 +10,7 @@ func main() { plugin.Serve(&plugin.ServeOpts{ RuleSet: &tflint.BuiltinRuleSet{ Name: "blueprint", - Version: "0.2.3", + Version: "0.2.4", Rules: []tflint.Rule{ rules.NewTerraformDocSamplesRestrictedBlocks(), rules.NewTerraformDocSamplesRestrictedResources(), diff --git a/tflint-ruleset-blueprint/rules/terraform_required_version_range.go b/tflint-ruleset-blueprint/rules/terraform_required_version_range.go index f15bd36c5f9..066fe15f7e7 100644 --- a/tflint-ruleset-blueprint/rules/terraform_required_version_range.go +++ b/tflint-ruleset-blueprint/rules/terraform_required_version_range.go @@ -147,14 +147,14 @@ func (r *TerraformRequiredVersionRange) Check(runner tflint.Runner) error { for _, block := range content.Blocks { requiredVersion, exists := block.Body.Attributes["required_version"] if !exists { - logger.Info(fmt.Sprintf("required_version does not exist for %s", block.Labels[0])) + logger.Info(fmt.Sprintf("terraform block does not contain required_version: %s", block.DefRange)) continue } var raw_terraform_required_version string diags := gohcl.DecodeExpression(requiredVersion.Expr, nil, &raw_terraform_required_version) if diags.HasErrors() { - return fmt.Errorf("failed to decode terraform required_version %q: %v", block.Labels[0], diags.Error()) + return fmt.Errorf("failed to decode terraform block required_version: %v", diags.Error()) } constraints, err := version.NewConstraint(raw_terraform_required_version) @@ -162,7 +162,6 @@ func (r *TerraformRequiredVersionRange) Check(runner tflint.Runner) error { return err } - //TODO: add option for repository exemptions if !((constraints.Check(minimum_required_version) || constraints.Check(maximum_required_version)) && !constraints.Check(below_required_version)) { //TODO: use EmitIssueWithFix() err := runner.EmitIssue(r, fmt.Sprintf("required_version is not inclusive of the the minimum %q and maximum %q terraform required_version: %q", minVersion, maxVersion, constraints.String()), block.DefRange) @@ -170,7 +169,6 @@ func (r *TerraformRequiredVersionRange) Check(runner tflint.Runner) error { return err } } - } return nil diff --git a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/main.tf b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/main.tf index d1ec99d54d7..39548f0e887 100644 --- a/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/main.tf +++ b/tflint-ruleset-blueprint/rules/testdata/terraform_required_version_range/multiple-valid-config/main.tf @@ -13,3 +13,13 @@ terraform { terraform { required_version = "~>1.9" } + +terraform { + backend "gcs" { + bucket = "UPDATE_ME" + prefix = "UPDATE_ME" + } +} + +terraform { +} From 2fda6962afa3d64d1705b19b3ece2c132f4e5580 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 15 Aug 2024 13:18:19 -0700 Subject: [PATCH 1145/1371] chore(release-please): release tflint-ruleset-blueprint 0.2.4 (#2532) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ad69bfde4e4..29efb83c47f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.1", "infra/module-swapper": "0.4.8", - "tflint-ruleset-blueprint": "0.2.3" + "tflint-ruleset-blueprint": "0.2.4" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md index 5130ebfe172..50c10e041cc 100644 --- a/tflint-ruleset-blueprint/CHANGELOG.md +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.3...tflint-ruleset-blueprint/v0.2.4) (2024-08-15) + + +### Bug Fixes + +* **terraform_required_version_range:** terraform block ([#2529](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2529)) ([f5dce52](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/f5dce52092c3c41662c7722db99d80c0e4a9d74d)) + ## [0.2.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.2...tflint-ruleset-blueprint/v0.2.3) (2024-08-14) From cef8144ca1cc4e225b4e388ef8d5fbeb961e9355 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 15 Aug 2024 13:46:04 -0700 Subject: [PATCH 1146/1371] chore: Update Tools to 1.22.7 (#2531) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 98dad0b14ac..ef6eb417cb8 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.66.7 +TERRAGRUNT_VERSION := 0.66.8 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -45,7 +45,7 @@ ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.8 # Updated by Update Tooling Workflow -TFLINT_BP_PLUGIN_VERSION := 0.2.3 +TFLINT_BP_PLUGIN_VERSION := 0.2.4 # For developer-tools-krm # Updated by Update Tooling Workflow @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.6 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.7 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 3adea874dc17797724ab19900e44dcd9f5b27ef1 Mon Sep 17 00:00:00 2001 From: tjy9206 Date: Mon, 19 Aug 2024 10:52:14 -0400 Subject: [PATCH 1147/1371] feat: preserve manually added connections fields (#2530) Co-authored-by: Bharath KKB --- cli/bpmetadata/cmd.go | 7 ++ cli/bpmetadata/tfconfig.go | 16 ++++ cli/bpmetadata/tfconfig_test.go | 43 +++++++++++ ...terfaces_with_one_connection_metadata.yaml | 65 ++++++++++++++++ ...rfaces_with_some_connections_metadata.yaml | 76 +++++++++++++++++++ ...terfaces_without_connections_metadata.yaml | 59 ++++++++++++++ ...ew_interfaces_no_connections_metadata.yaml | 59 ++++++++++++++ 7 files changed, 325 insertions(+) create mode 100644 cli/testdata/bpmetadata/metadata/existing_interfaces_with_one_connection_metadata.yaml create mode 100644 cli/testdata/bpmetadata/metadata/existing_interfaces_with_some_connections_metadata.yaml create mode 100644 cli/testdata/bpmetadata/metadata/existing_interfaces_without_connections_metadata.yaml create mode 100644 cli/testdata/bpmetadata/metadata/new_interfaces_no_connections_metadata.yaml diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 52146513e01..4aff3651bf7 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -12,6 +12,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" "sigs.k8s.io/yaml" ) @@ -229,8 +230,11 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error creating blueprint info: %w", err) } + var existingInterfaces *BlueprintInterface if bpMetadataObj.Spec.Interfaces == nil { bpMetadataObj.Spec.Interfaces = &BlueprintInterface{} + } else { + existingInterfaces = proto.Clone(bpMetadataObj.Spec.Interfaces).(*BlueprintInterface) } // create blueprint interfaces i.e. variables & outputs @@ -239,6 +243,9 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error creating blueprint interfaces: %w", err) } + // Merge existing connections (if any) into the newly generated interfaces + mergeExistingConnections(bpMetadataObj.Spec.Interfaces, existingInterfaces) + // get blueprint requirements rolesCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfRolesFileName) svcsCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfServicesFileName) diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index ac604abcc13..6c2fd316880 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -395,3 +395,19 @@ func hasTfconfigErrors(diags tfconfig.Diagnostics) error { return nil } + +// MergeExistingConnections merges existing connections from an old BlueprintInterface into a new one, +// preserving manually authored connections. +func mergeExistingConnections(newInterfaces, existingInterfaces *BlueprintInterface) { + if existingInterfaces == nil { + return // Nothing to merge if existingInterfaces is nil + } + + for i, variable := range newInterfaces.Variables { + for _, existingVariable := range existingInterfaces.Variables { + if variable.Name == existingVariable.Name && existingVariable.Connections != nil { + newInterfaces.Variables[i].Connections = existingVariable.Connections + } + } + } +} diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index 7422969273c..f8db84eb080 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -12,6 +12,7 @@ import ( const ( tfTestdataPath = "../testdata/bpmetadata/tf" + metadataTestdataPath = "../testdata/bpmetadata/metadata" interfaces = "sample-module" ) @@ -266,3 +267,45 @@ func TestTFRoles(t *testing.T) { }) } } + +func TestMergeExistingConnections(t *testing.T) { + tests := []struct { + name string + newInterfacesFile string + existingInterfacesFile string + }{ + { + name: "No existing connections", + newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", + existingInterfacesFile: "existing_interfaces_without_connections_metadata.yaml", + }, + { + name: "One existing connection is preserved", + newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", + existingInterfacesFile: "existing_interfaces_with_one_connection_metadata.yaml", + }, + { + name: "Multiple existing connections are preserved", + newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", + existingInterfacesFile: "existing_interfaces_with_some_connections_metadata.yaml", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Load new interfaces from file + newInterfaces, err := UnmarshalMetadata(metadataTestdataPath, tt.newInterfacesFile) + require.NoError(t, err) + + // Load existing interfaces from file + existingInterfaces, err := UnmarshalMetadata(metadataTestdataPath, tt.existingInterfacesFile) + require.NoError(t, err) + + // Perform the merge + mergeExistingConnections(newInterfaces.Spec.Interfaces, existingInterfaces.Spec.Interfaces) + + // Assert that the merged interfaces match the existing ones + assert.Equal(t, existingInterfaces.Spec.Interfaces, newInterfaces.Spec.Interfaces) + }) + } +} diff --git a/cli/testdata/bpmetadata/metadata/existing_interfaces_with_one_connection_metadata.yaml b/cli/testdata/bpmetadata/metadata/existing_interfaces_with_one_connection_metadata.yaml new file mode 100644 index 00000000000..53fbaf86cc2 --- /dev/null +++ b/cli/testdata/bpmetadata/metadata/existing_interfaces_with_one_connection_metadata.yaml @@ -0,0 +1,65 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-memorystore + annotations: + config.kubernetes.io/local-config: "true" +spec: + info: + title: Google Cloud Memorystore Terraform Module + source: + repo: https://github.com/terraform-google-modules/terraform-google-memorystore.git + sourceType: git + version: 10.0.0 + actuationTool: + flavor: Terraform + version: ">= 0.13" + description: {} + content: + subBlueprints: + - name: memcache + location: modules/memcache + - name: redis-cluster + location: modules/redis-cluster + examples: + - name: basic + location: examples/basic + - name: memcache + location: examples/memcache + - name: minimal + location: examples/minimal + - name: redis + location: examples/redis + - name: redis-cluster + location: examples/redis-cluster + interfaces: + variables: + - name: auth_enabled + description: Indicates whether OSS Redis AUTH is enabled for the instance. If set to true AUTH is enabled on the instance. + varType: bool + defaultValue: false + - name: authorized_network + description: The full name of the Google Compute Engine network to which the instance is connected. If left unspecified, the default network will be used. + varType: string + connections: + - source: + source: github.com/terraform-google-modules/terraform-google-network//modules/vpc + version: v9.1.0 + spec: + outputExpr: network_name + - name: customer_managed_key + description: Default encryption key to apply to the Redis instance. Defaults to null (Google-managed). + varType: string + requirements: + roles: + - level: Project + roles: + - roles/owner + services: + - cloudresourcemanager.googleapis.com + - serviceusage.googleapis.com + - redis.googleapis.com + - memcache.googleapis.com + - serviceconsumermanagement.googleapis.com + - networkconnectivity.googleapis.com + - compute.googleapis.com \ No newline at end of file diff --git a/cli/testdata/bpmetadata/metadata/existing_interfaces_with_some_connections_metadata.yaml b/cli/testdata/bpmetadata/metadata/existing_interfaces_with_some_connections_metadata.yaml new file mode 100644 index 00000000000..41af1a87828 --- /dev/null +++ b/cli/testdata/bpmetadata/metadata/existing_interfaces_with_some_connections_metadata.yaml @@ -0,0 +1,76 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-memorystore + annotations: + config.kubernetes.io/local-config: "true" +spec: + info: + title: Google Cloud Memorystore Terraform Module + source: + repo: https://github.com/terraform-google-modules/terraform-google-memorystore.git + sourceType: git + version: 10.0.0 + actuationTool: + flavor: Terraform + version: ">= 0.13" + description: {} + content: + subBlueprints: + - name: memcache + location: modules/memcache + - name: redis-cluster + location: modules/redis-cluster + examples: + - name: basic + location: examples/basic + - name: memcache + location: examples/memcache + - name: minimal + location: examples/minimal + - name: redis + location: examples/redis + - name: redis-cluster + location: examples/redis-cluster + interfaces: + variables: + - name: auth_enabled + description: Indicates whether OSS Redis AUTH is enabled for the instance. If set to true AUTH is enabled on the instance. + varType: bool + defaultValue: false + - name: authorized_network + description: The full name of the Google Compute Engine network to which the instance is connected. If left unspecified, the default network will be used. + varType: string + connections: + - source: + source: github.com/terraform-google-modules/terraform-google-network//modules/vpc + version: v9.1.0 + spec: + outputExpr: network_name + - source: + source: github.com/terraform-google-modules/terraform-google-vpc-service-controls//modules/access_level + version: v6.0.0 + spec: + outputExpr: network_acl_name + - name: customer_managed_key + description: Default encryption key to apply to the Redis instance. Defaults to null (Google-managed). + varType: string + connections: + - source: + source: github.com/terraform-google-modules/terraform-google-kms + version: v2.3.0 + spec: + outputExpr: kms_name + requirements: + roles: + - level: Project + roles: + - roles/owner + services: + - cloudresourcemanager.googleapis.com + - serviceusage.googleapis.com + - redis.googleapis.com + - memcache.googleapis.com + - serviceconsumermanagement.googleapis.com + - networkconnectivity.googleapis.com + - compute.googleapis.com \ No newline at end of file diff --git a/cli/testdata/bpmetadata/metadata/existing_interfaces_without_connections_metadata.yaml b/cli/testdata/bpmetadata/metadata/existing_interfaces_without_connections_metadata.yaml new file mode 100644 index 00000000000..cceab1772d7 --- /dev/null +++ b/cli/testdata/bpmetadata/metadata/existing_interfaces_without_connections_metadata.yaml @@ -0,0 +1,59 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-memorystore + annotations: + config.kubernetes.io/local-config: "true" +spec: + info: + title: Google Cloud Memorystore Terraform Module + source: + repo: https://github.com/terraform-google-modules/terraform-google-memorystore.git + sourceType: git + version: 10.0.0 + actuationTool: + flavor: Terraform + version: ">= 0.13" + description: {} + content: + subBlueprints: + - name: memcache + location: modules/memcache + - name: redis-cluster + location: modules/redis-cluster + examples: + - name: basic + location: examples/basic + - name: memcache + location: examples/memcache + - name: minimal + location: examples/minimal + - name: redis + location: examples/redis + - name: redis-cluster + location: examples/redis-cluster + interfaces: + variables: + - name: auth_enabled + description: Indicates whether OSS Redis AUTH is enabled for the instance. If set to true AUTH is enabled on the instance. + varType: bool + defaultValue: false + - name: authorized_network + description: The full name of the Google Compute Engine network to which the instance is connected. If left unspecified, the default network will be used. + varType: string + - name: customer_managed_key + description: Default encryption key to apply to the Redis instance. Defaults to null (Google-managed). + varType: string + requirements: + roles: + - level: Project + roles: + - roles/owner + services: + - cloudresourcemanager.googleapis.com + - serviceusage.googleapis.com + - redis.googleapis.com + - memcache.googleapis.com + - serviceconsumermanagement.googleapis.com + - networkconnectivity.googleapis.com + - compute.googleapis.com \ No newline at end of file diff --git a/cli/testdata/bpmetadata/metadata/new_interfaces_no_connections_metadata.yaml b/cli/testdata/bpmetadata/metadata/new_interfaces_no_connections_metadata.yaml new file mode 100644 index 00000000000..cceab1772d7 --- /dev/null +++ b/cli/testdata/bpmetadata/metadata/new_interfaces_no_connections_metadata.yaml @@ -0,0 +1,59 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-memorystore + annotations: + config.kubernetes.io/local-config: "true" +spec: + info: + title: Google Cloud Memorystore Terraform Module + source: + repo: https://github.com/terraform-google-modules/terraform-google-memorystore.git + sourceType: git + version: 10.0.0 + actuationTool: + flavor: Terraform + version: ">= 0.13" + description: {} + content: + subBlueprints: + - name: memcache + location: modules/memcache + - name: redis-cluster + location: modules/redis-cluster + examples: + - name: basic + location: examples/basic + - name: memcache + location: examples/memcache + - name: minimal + location: examples/minimal + - name: redis + location: examples/redis + - name: redis-cluster + location: examples/redis-cluster + interfaces: + variables: + - name: auth_enabled + description: Indicates whether OSS Redis AUTH is enabled for the instance. If set to true AUTH is enabled on the instance. + varType: bool + defaultValue: false + - name: authorized_network + description: The full name of the Google Compute Engine network to which the instance is connected. If left unspecified, the default network will be used. + varType: string + - name: customer_managed_key + description: Default encryption key to apply to the Redis instance. Defaults to null (Google-managed). + varType: string + requirements: + roles: + - level: Project + roles: + - roles/owner + services: + - cloudresourcemanager.googleapis.com + - serviceusage.googleapis.com + - redis.googleapis.com + - memcache.googleapis.com + - serviceconsumermanagement.googleapis.com + - networkconnectivity.googleapis.com + - compute.googleapis.com \ No newline at end of file From 26ca082b3f59a25b8ba93aee4a498ad01c7a8d8e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 19 Aug 2024 20:47:03 +0200 Subject: [PATCH 1148/1371] fix(deps): update go modules (#2521) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 8 ++++---- cli/go.sum | 16 ++++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index dd14902d200..6a4dac31c73 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.4.5 +VERSION=v1.4.6 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 32396335baf..21418c910a9 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.22 require ( - cloud.google.com/go/asset v1.19.5 + cloud.google.com/go/asset v1.19.6 cloud.google.com/go/storage v1.43.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad @@ -36,7 +36,7 @@ require ( golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa golang.org/x/oauth2 v0.22.0 golang.org/x/text v0.17.0 - google.golang.org/api v0.190.0 + google.golang.org/api v0.191.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -45,7 +45,7 @@ require ( require ( cloud.google.com/go v0.115.0 // indirect cloud.google.com/go/accesscontextmanager v1.8.11 // indirect - cloud.google.com/go/auth v0.7.3 // indirect + cloud.google.com/go/auth v0.8.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.12 // indirect @@ -181,7 +181,7 @@ require ( golang.org/x/sync v0.8.0 // indirect golang.org/x/sys v0.23.0 // indirect golang.org/x/term v0.23.0 // indirect - golang.org/x/time v0.5.0 // indirect + golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.24.0 // indirect google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f // indirect diff --git a/cli/go.sum b/cli/go.sum index 351b86453e4..bde98d9b891 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -3,10 +3,10 @@ cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= cloud.google.com/go/accesscontextmanager v1.8.11 h1:IQ3KLJmNKPgstN0ZcRw0niU4KfsiOZmzvcGCF+NT618= cloud.google.com/go/accesscontextmanager v1.8.11/go.mod h1:nwPysISS3KR5qXipAU6cW/UbDavDdTBBgPohbkhGSok= -cloud.google.com/go/asset v1.19.5 h1:/R2XZS6lR8oj/Y3L+epD2yy7mf44Zp62H4xZ4vzaR/Y= -cloud.google.com/go/asset v1.19.5/go.mod h1:sqyLOYaLLfc4ACcn3YxqHno+J7lRt9NJTdO50zCUcY0= -cloud.google.com/go/auth v0.7.3 h1:98Vr+5jMaCZ5NZk6e/uBgf60phTk/XN84r8QEWB9yjY= -cloud.google.com/go/auth v0.7.3/go.mod h1:HJtWUx1P5eqjy/f6Iq5KeytNpbAcGolPhOgyop2LlzA= +cloud.google.com/go/asset v1.19.6 h1:p8Huo2TW4GyTfqQZuvUsmvYc3bXC1uS51VvpKfPfqqU= +cloud.google.com/go/asset v1.19.6/go.mod h1:UsijVGuWC6uml/+ODlL+mv6e3dZ52fbdOfOkiv4f0cE= +cloud.google.com/go/auth v0.8.0 h1:y8jUJLl/Fg+qNBWxP/Hox2ezJvjkrPb952PC1p0G6A4= +cloud.google.com/go/auth v0.8.0/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc= cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= @@ -646,8 +646,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -670,8 +670,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.190.0 h1:ASM+IhLY1zljNdLu19W1jTmU6A+gMk6M46Wlur61s+Q= -google.golang.org/api v0.190.0/go.mod h1:QIr6I9iedBLnfqoD6L6Vze1UvS5Hzj5r2aUBOaZnLHo= +google.golang.org/api v0.191.0 h1:cJcF09Z+4HAB2t5qTQM1ZtfL/PemsLFkcFG67qq2afk= +google.golang.org/api v0.191.0/go.mod h1:tD5dsFGxFza0hnQveGfVk9QQYKcfp+VzgRqyXFxE0+E= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= From a28dfd5ee5d7f71b9e3dfb148a36c19ca408a5c8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 19 Aug 2024 22:35:08 +0200 Subject: [PATCH 1149/1371] chore(deps): update github/codeql-action action to v3.26.3 (#2535) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index bfc964f5914..15b3e643743 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 + uses: github/codeql-action/init@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 + uses: github/codeql-action/autobuild@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 + uses: github/codeql-action/analyze@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 91adfd33c5b..5281db9e9cd 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 + uses: github/codeql-action/upload-sarif@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3 with: sarif_file: results.sarif From f6e8584bad31500b961008a24d9a8398884aa61f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Aug 2024 17:45:45 +0200 Subject: [PATCH 1150/1371] chore(deps): update module google.golang.org/api to v0.192.0 (#2534) --- cli/go.mod | 4 ++-- cli/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 21418c910a9..a372eee1b6e 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -36,7 +36,7 @@ require ( golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa golang.org/x/oauth2 v0.22.0 golang.org/x/text v0.17.0 - google.golang.org/api v0.191.0 + google.golang.org/api v0.192.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -45,7 +45,7 @@ require ( require ( cloud.google.com/go v0.115.0 // indirect cloud.google.com/go/accesscontextmanager v1.8.11 // indirect - cloud.google.com/go/auth v0.8.0 // indirect + cloud.google.com/go/auth v0.8.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.12 // indirect diff --git a/cli/go.sum b/cli/go.sum index bde98d9b891..6016924e855 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -5,8 +5,8 @@ cloud.google.com/go/accesscontextmanager v1.8.11 h1:IQ3KLJmNKPgstN0ZcRw0niU4Kfsi cloud.google.com/go/accesscontextmanager v1.8.11/go.mod h1:nwPysISS3KR5qXipAU6cW/UbDavDdTBBgPohbkhGSok= cloud.google.com/go/asset v1.19.6 h1:p8Huo2TW4GyTfqQZuvUsmvYc3bXC1uS51VvpKfPfqqU= cloud.google.com/go/asset v1.19.6/go.mod h1:UsijVGuWC6uml/+ODlL+mv6e3dZ52fbdOfOkiv4f0cE= -cloud.google.com/go/auth v0.8.0 h1:y8jUJLl/Fg+qNBWxP/Hox2ezJvjkrPb952PC1p0G6A4= -cloud.google.com/go/auth v0.8.0/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc= +cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo= +cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc= cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= @@ -670,8 +670,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.191.0 h1:cJcF09Z+4HAB2t5qTQM1ZtfL/PemsLFkcFG67qq2afk= -google.golang.org/api v0.191.0/go.mod h1:tD5dsFGxFza0hnQveGfVk9QQYKcfp+VzgRqyXFxE0+E= +google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0= +google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= From 629875baf7f392569c8a1ee98c0ad82c5ac4b1d8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Aug 2024 18:35:45 +0200 Subject: [PATCH 1151/1371] fix(deps): update go modules (#2537) --- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 32 +++++++++--------- cli/go.sum | 64 ++++++++++++++++++------------------ 6 files changed, 52 insertions(+), 52 deletions(-) diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index bfaa93de82c..a5c77c51c93 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v63/github" + "github.com/google/go-github/v64/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index e5a777a81dc..ee9eb3ccf63 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v63/github" + "github.com/google/go-github/v64/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index e3d389b8e9f..c4a217ea188 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v63/github" + "github.com/google/go-github/v64/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 9b77ca64c4b..4548a172617 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v63/github" + "github.com/google/go-github/v64/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index a372eee1b6e..11d8d72022b 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,7 +3,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.22 require ( - cloud.google.com/go/asset v1.19.6 + cloud.google.com/go/asset v1.20.0 cloud.google.com/go/storage v1.43.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad @@ -14,7 +14,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v63 v63.0.0 + github.com/google/go-github/v64 v64.0.0 github.com/hashicorp/hcl/v2 v2.21.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 github.com/iancoleman/strcase v0.3.0 @@ -36,22 +36,22 @@ require ( golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa golang.org/x/oauth2 v0.22.0 golang.org/x/text v0.17.0 - google.golang.org/api v0.192.0 + google.golang.org/api v0.193.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.115.0 // indirect - cloud.google.com/go/accesscontextmanager v1.8.11 // indirect - cloud.google.com/go/auth v0.8.1 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect + cloud.google.com/go v0.115.1 // indirect + cloud.google.com/go/accesscontextmanager v1.8.12 // indirect + cloud.google.com/go/auth v0.9.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect - cloud.google.com/go/iam v1.1.12 // indirect - cloud.google.com/go/longrunning v0.5.11 // indirect - cloud.google.com/go/orgpolicy v1.12.7 // indirect - cloud.google.com/go/osconfig v1.13.2 // indirect + cloud.google.com/go/iam v1.1.13 // indirect + cloud.google.com/go/longrunning v0.5.12 // indirect + cloud.google.com/go/orgpolicy v1.12.8 // indirect + cloud.google.com/go/osconfig v1.13.3 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -164,7 +164,7 @@ require ( github.com/zclconf/go-cty v1.14.4 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect @@ -179,13 +179,13 @@ require ( golang.org/x/mod v0.20.0 // indirect golang.org/x/net v0.28.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.23.0 // indirect + golang.org/x/sys v0.24.0 // indirect golang.org/x/term v0.23.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.24.0 // indirect - google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect + google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/grpc v1.65.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index 6016924e855..67399446b8a 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,24 +1,24 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= -cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= -cloud.google.com/go/accesscontextmanager v1.8.11 h1:IQ3KLJmNKPgstN0ZcRw0niU4KfsiOZmzvcGCF+NT618= -cloud.google.com/go/accesscontextmanager v1.8.11/go.mod h1:nwPysISS3KR5qXipAU6cW/UbDavDdTBBgPohbkhGSok= -cloud.google.com/go/asset v1.19.6 h1:p8Huo2TW4GyTfqQZuvUsmvYc3bXC1uS51VvpKfPfqqU= -cloud.google.com/go/asset v1.19.6/go.mod h1:UsijVGuWC6uml/+ODlL+mv6e3dZ52fbdOfOkiv4f0cE= -cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo= -cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc= -cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= -cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= +cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= +cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= +cloud.google.com/go/accesscontextmanager v1.8.12 h1:u3gLVJFZ8couGeVBZmhK0ON5YU3w9YIXOVr+THOik/M= +cloud.google.com/go/accesscontextmanager v1.8.12/go.mod h1:EmaVYmffq+2jA2waP0/XHECDkaOKVztxVsdzl65t8hw= +cloud.google.com/go/asset v1.20.0 h1:2kHJKyVUEbuisDjvOK9+XQrvoosEBqsb6yaEzq5gaWY= +cloud.google.com/go/asset v1.20.0/go.mod h1:CT3ME6xNZKsPSvi0lMBPgW3azvRhiurJTFSnNl6ahw8= +cloud.google.com/go/auth v0.9.0 h1:cYhKl1JUhynmxjXfrk4qdPc6Amw7i+GC9VLflgT0p5M= +cloud.google.com/go/auth v0.9.0/go.mod h1:2HsApZBr9zGZhC9QAXsYVYaWk8kNUt37uny+XVKi7wM= +cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= +cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= -cloud.google.com/go/iam v1.1.12 h1:JixGLimRrNGcxvJEQ8+clfLxPlbeZA6MuRJ+qJNQ5Xw= -cloud.google.com/go/iam v1.1.12/go.mod h1:9LDX8J7dN5YRyzVHxwQzrQs9opFFqn0Mxs9nAeB+Hhg= -cloud.google.com/go/longrunning v0.5.11 h1:Havn1kGjz3whCfoD8dxMLP73Ph5w+ODyZB9RUsDxtGk= -cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4= -cloud.google.com/go/orgpolicy v1.12.7 h1:StymaN9vS7949m15Nwgf5aKd9yaRtzWJ4VqHdbXcOEM= -cloud.google.com/go/orgpolicy v1.12.7/go.mod h1:Os3GlUFRPf1UxOHTup5b70BARnhHeQNNVNZzJXPbWYI= -cloud.google.com/go/osconfig v1.13.2 h1:IbbTg7jtTEn4+iEJwgbCYck5NLMOc2eKrqVpQb7Xx6c= -cloud.google.com/go/osconfig v1.13.2/go.mod h1:eupylkWQJCwSIEMkpVR4LqpgKkQi0mD4m1DzNCgpQso= +cloud.google.com/go/iam v1.1.13 h1:7zWBXG9ERbMLrzQBRhFliAV+kjcRToDTgQT3CTwYyv4= +cloud.google.com/go/iam v1.1.13/go.mod h1:K8mY0uSXwEXS30KrnVb+j54LB/ntfZu1dr+4zFMNbus= +cloud.google.com/go/longrunning v0.5.12 h1:5LqSIdERr71CqfUsFlJdBpOkBH8FBCFD7P1nTWy3TYE= +cloud.google.com/go/longrunning v0.5.12/go.mod h1:S5hMV8CDJ6r50t2ubVJSKQVv5u0rmik5//KgLO3k4lU= +cloud.google.com/go/orgpolicy v1.12.8 h1:lBKGvA07J42nQpU6X61hQDIv/jcnuJtz/BhnTjGIDYg= +cloud.google.com/go/orgpolicy v1.12.8/go.mod h1:WHkLGqHILPnMgJ4UTdag6YgztVIgWS+T5T6tywH3cSM= +cloud.google.com/go/osconfig v1.13.3 h1:GoiK/q0OAhaGxZMMapulq+lxZU4BEZn8ado2g3yqfqc= +cloud.google.com/go/osconfig v1.13.3/go.mod h1:gIFyyriC1ANob8SnpwrQ6jjNroRwItoBOYfqiG3LkUU= cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= @@ -259,8 +259,8 @@ 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/go-github/v61 v61.0.0 h1:VwQCBwhyE9JclCI+22/7mLB1PuU9eowCXKY5pNlu1go= github.com/google/go-github/v61 v61.0.0/go.mod h1:0WR+KmsWX75G2EbpyGsGmradjo3IiciuI4BmdVCobQY= -github.com/google/go-github/v63 v63.0.0 h1:13xwK/wk9alSokujB9lJkuzdmQuVn2QCPeck76wR3nE= -github.com/google/go-github/v63 v63.0.0/go.mod h1:IqbcrgUmIcEaioWrGYei/09o+ge5vhffGOcxrO0AfmA= +github.com/google/go-github/v64 v64.0.0 h1:4G61sozmY3eiPAjjoOHponXDBONm+utovTKbyUb2Qdg= +github.com/google/go-github/v64 v64.0.0/go.mod h1:xB3vqMQNdHzilXBiO2I+M7iEFtHf+DP/omBOv6tQzVo= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -519,8 +519,8 @@ go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= @@ -626,8 +626,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -670,19 +670,19 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0= -google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ= +google.golang.org/api v0.193.0 h1:eOGDoJFsLU+HpCBaDJex2fWiYujAw9KbXgpOAMePoUs= +google.golang.org/api v0.193.0/go.mod h1:Po3YMV1XZx+mTku3cfJrlIYR03wiGrCOsdpC67hjZvw= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf h1:OqdXDEakZCVtDiZTjcxfwbHPCT11ycCEsTKesBVKvyY= -google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:mCr1K1c8kX+1iSBREvU3Juo11CB+QOEWxbRS01wWl5M= -google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f h1:b1Ln/PG8orm0SsBbHZWke8dDp2lrCD4jSmfglFpTZbk= -google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0= +google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 7bf21d86c8db6c337ec20b9e4aef91c81ec02e46 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Aug 2024 18:45:48 +0200 Subject: [PATCH 1152/1371] fix(deps): update module google.golang.org/api to v0.193.0 (#2541) --- infra/utils/fbf/go.mod | 20 ++++++++++---------- infra/utils/fbf/go.sum | 42 +++++++++++++++++++++--------------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 78a1e88cb46..3ae51739907 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,12 +6,12 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.192.0 + google.golang.org/api v0.193.0 ) require ( - cloud.google.com/go/auth v0.8.1 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect + cloud.google.com/go/auth v0.9.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect @@ -33,14 +33,14 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/crypto v0.25.0 // indirect - golang.org/x/net v0.27.0 // indirect + golang.org/x/crypto v0.26.0 // indirect + golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.22.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect - google.golang.org/grpc v1.64.1 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index db0bd82059b..a6d607a9698 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,8 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo= -cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc= -cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= -cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= +cloud.google.com/go/auth v0.9.0 h1:cYhKl1JUhynmxjXfrk4qdPc6Amw7i+GC9VLflgT0p5M= +cloud.google.com/go/auth v0.9.0/go.mod h1:2HsApZBr9zGZhC9QAXsYVYaWk8kNUt37uny+XVKi7wM= +cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= +cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -93,8 +93,8 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -105,8 +105,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -121,39 +121,39 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0= -google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ= +google.golang.org/api v0.193.0 h1:eOGDoJFsLU+HpCBaDJex2fWiYujAw9KbXgpOAMePoUs= +google.golang.org/api v0.193.0/go.mod h1:Po3YMV1XZx+mTku3cfJrlIYR03wiGrCOsdpC67hjZvw= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf h1:OqdXDEakZCVtDiZTjcxfwbHPCT11ycCEsTKesBVKvyY= +google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0= google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY= google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= 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= From 18038f10e6bc5e6f5f5eeb0c67e72113380ffe1b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Aug 2024 18:48:59 +0200 Subject: [PATCH 1153/1371] chore(deps): update google-github-actions/auth action to v2.1.5 (#2540) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 35dd25a0461..697dbb3db1e 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@f112390a2df9932162083945e46d439060d66ec2' # v2.1.4 + uses: 'google-github-actions/auth@62cf5bd3e4211a0a0b51f2c6d6a37129d828611d' # v2.1.5 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 0aeb5aed891..bb24d4d159d 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@f112390a2df9932162083945e46d439060d66ec2' # v2.1.4 + uses: 'google-github-actions/auth@62cf5bd3e4211a0a0b51f2c6d6a37129d828611d' # v2.1.5 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From 003422ab9f705001ad454151160ef788f58c7c49 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 21 Aug 2024 19:27:13 +0200 Subject: [PATCH 1154/1371] chore(deps): update golangci/golangci-lint docker tag to v1.60.2 (#2538) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 4c4a52ae18b..4eaffe697fe 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.60.1 +GOLANGCI_VERSION := 1.60.2 .PHONY: docker_go_lint docker_go_lint: From afd42a72a954505a2d10db467f51d00a976e03b1 Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 21 Aug 2024 12:38:44 -0500 Subject: [PATCH 1155/1371] chore: bump cli version (#2536) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 6a4dac31c73..993774519f5 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.4.6 +VERSION=v1.5.0 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin From 735980c50d410d1e8e204e87d3d083cd69a62a90 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:23:33 -0700 Subject: [PATCH 1156/1371] chore: Update Tools to 1.22.8 (#2533) --- infra/build/Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index ef6eb417cb8..dc07db58bfa 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.9.4 +TERRAFORM_VERSION := 1.9.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 488.0.0 +CLOUD_SDK_VERSION := 489.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.66.8 +TERRAGRUNT_VERSION := 0.66.9 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -35,11 +35,11 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.4.5 +CFT_CLI_VERSION := 1.5.0 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.13 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.52.0 +TFLINT_VERSION := 0.53.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow @@ -49,7 +49,7 @@ TFLINT_BP_PLUGIN_VERSION := 0.2.4 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.60.1 +GOLANGCI_VERSION := 1.60.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.7 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.8 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 75a441562ff31a68dca6a0a38daacc7b2a503070 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 14:19:30 -0700 Subject: [PATCH 1157/1371] chore(deps): bump rexml from 3.3.3 to 3.3.6 in /infra/build/developer-tools/build/data (#2543) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/build/developer-tools/build/data/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index b53b366f7b8..a07da9a500b 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -523,7 +523,7 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.2) - rexml (3.3.3) + rexml (3.3.6) strscan rspec (3.11.0) rspec-core (~> 3.11.0) From 12f8179dab8bc869110144ab7fc759e987aee15c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 28 Aug 2024 22:30:43 +0200 Subject: [PATCH 1158/1371] chore(deps): update module github.com/hashicorp/hcl/v2 to v2.22.0 (#2545) --- tflint-ruleset-blueprint/go.mod | 2 +- tflint-ruleset-blueprint/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index fc491ef1f2c..5824755af89 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -6,7 +6,7 @@ toolchain go1.22.6 require ( github.com/hashicorp/go-version v1.7.0 - github.com/hashicorp/hcl/v2 v2.21.0 + github.com/hashicorp/hcl/v2 v2.22.0 github.com/terraform-linters/tflint-plugin-sdk v0.21.0 ) diff --git a/tflint-ruleset-blueprint/go.sum b/tflint-ruleset-blueprint/go.sum index 20e9d1f4ac6..ca5a5f775d6 100644 --- a/tflint-ruleset-blueprint/go.sum +++ b/tflint-ruleset-blueprint/go.sum @@ -21,8 +21,8 @@ github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOs github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= -github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= From cd233192565a2842e4402d15e7d7c775fed56397 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 28 Aug 2024 22:40:03 +0200 Subject: [PATCH 1159/1371] chore(deps): update terraform google to v6 (#2546) Co-authored-by: Andrew Peabody --- cli/testdata/bpmetadata/tf/versions-beta.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/testdata/bpmetadata/tf/versions-beta.tf b/cli/testdata/bpmetadata/tf/versions-beta.tf index 0b18aa032c0..c505ed8375c 100644 --- a/cli/testdata/bpmetadata/tf/versions-beta.tf +++ b/cli/testdata/bpmetadata/tf/versions-beta.tf @@ -4,11 +4,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 4.4.0, < 6" + version = ">= 4.4.0, < 7" } google-beta = { source = "hashicorp/google-beta" - version = ">= 4.4.0, < 6" + version = ">= 4.4.0, < 7" } } From 65a4874bd6145410b24406bcb7d4838f6d96e0b3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 28 Aug 2024 22:44:54 +0200 Subject: [PATCH 1160/1371] chore(deps): update github/codeql-action action to v3.26.4 (#2556) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 15b3e643743..0405a14852c 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3 + uses: github/codeql-action/init@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3 + uses: github/codeql-action/autobuild@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3 + uses: github/codeql-action/analyze@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5281db9e9cd..f5c2aa916ea 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3 + uses: github/codeql-action/upload-sarif@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 with: sarif_file: results.sarif From d2c565f2b2cd4d2f1b2ecef8a58769941af438b0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 28 Aug 2024 22:52:19 +0200 Subject: [PATCH 1161/1371] chore(deps): update golangci/golangci-lint docker tag to v1.60.2 (#2558) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 993774519f5..3ee794dc829 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.60.1 +GOLANGCI_VERSION := 1.60.2 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From bb8e52907af269d6759db8284ba5fd97d3803ec4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Aug 2024 18:54:49 +0200 Subject: [PATCH 1162/1371] chore(deps): update github/codeql-action action to v3.26.6 (#2559) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0405a14852c..54cc25312a4 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 + uses: github/codeql-action/init@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 + uses: github/codeql-action/autobuild@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 + uses: github/codeql-action/analyze@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f5c2aa916ea..e284e034411 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 + uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: sarif_file: results.sarif From ccd6595cb8b1a66a2c2aad81b3c05f29698628fc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Aug 2024 22:48:50 +0200 Subject: [PATCH 1163/1371] chore(deps): update golangci/golangci-lint docker tag to v1.60.3 (#2560) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 3ee794dc829..b1037c0ac6e 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.60.2 +GOLANGCI_VERSION := 1.60.3 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 7200c009e161b4b303cd3e094fd00ed9e5fe80f4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Aug 2024 22:59:38 +0200 Subject: [PATCH 1164/1371] chore(deps): update actions/setup-python action to v5.2.0 (#2563) --- .github/workflows/pre-commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 5d71c155a78..ff4c08e947d 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -10,5 +10,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 From 314e92b130865aaa20f6565f0e2fcf5f906f5fa6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Aug 2024 23:42:39 +0200 Subject: [PATCH 1165/1371] chore(deps): update module google.golang.org/api to v0.194.0 (#2564) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 3ae51739907..74ba89ea397 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.193.0 + google.golang.org/api v0.194.0 ) require ( - cloud.google.com/go/auth v0.9.0 // indirect + cloud.google.com/go/auth v0.9.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -36,7 +36,7 @@ require ( golang.org/x/crypto v0.26.0 // indirect golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.22.0 // indirect - golang.org/x/sys v0.23.0 // indirect + golang.org/x/sys v0.24.0 // indirect golang.org/x/term v0.23.0 // indirect golang.org/x/text v0.17.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index a6d607a9698..2496d504bd2 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.9.0 h1:cYhKl1JUhynmxjXfrk4qdPc6Amw7i+GC9VLflgT0p5M= -cloud.google.com/go/auth v0.9.0/go.mod h1:2HsApZBr9zGZhC9QAXsYVYaWk8kNUt37uny+XVKi7wM= +cloud.google.com/go/auth v0.9.1 h1:+pMtLEV2k0AXKvs/tGZojuj6QaioxfUjOpMsG5Gtx+w= +cloud.google.com/go/auth v0.9.1/go.mod h1:Sw8ocT5mhhXxFklyhT12Eiy0ed6tTrPMCJjSI8KhYLk= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= @@ -121,8 +121,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -135,8 +135,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.193.0 h1:eOGDoJFsLU+HpCBaDJex2fWiYujAw9KbXgpOAMePoUs= -google.golang.org/api v0.193.0/go.mod h1:Po3YMV1XZx+mTku3cfJrlIYR03wiGrCOsdpC67hjZvw= +google.golang.org/api v0.194.0 h1:dztZKG9HgtIpbI35FhfuSNR/zmaMVdxNlntHj1sIS4s= +google.golang.org/api v0.194.0/go.mod h1:AgvUFdojGANh3vI+P7EVnxj3AISHllxGCJSFmggmnd0= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= From 38b95b6a4bced1e78f3d5845f19d43e27141ab8b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 30 Aug 2024 01:21:08 +0200 Subject: [PATCH 1166/1371] chore(deps): update module google.golang.org/api to v0.195.0 (#2565) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 74ba89ea397..e86b26411da 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.194.0 + google.golang.org/api v0.195.0 ) require ( @@ -39,7 +39,7 @@ require ( golang.org/x/sys v0.24.0 // indirect golang.org/x/term v0.23.0 // indirect golang.org/x/text v0.17.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c // indirect google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 2496d504bd2..fc2fb86b452 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -135,18 +135,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.194.0 h1:dztZKG9HgtIpbI35FhfuSNR/zmaMVdxNlntHj1sIS4s= -google.golang.org/api v0.194.0/go.mod h1:AgvUFdojGANh3vI+P7EVnxj3AISHllxGCJSFmggmnd0= +google.golang.org/api v0.195.0 h1:Ude4N8FvTKnnQJHU48RFI40jOBgIrL8Zqr3/QeST6yU= +google.golang.org/api v0.195.0/go.mod h1:DOGRWuv3P8TU8Lnz7uQc4hyNqrBpMtD9ppW3wBJurgc= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0= +google.golang.org/genproto v0.0.0-20240823204242-4ba0660f739c h1:TYOEhrQMrNDTAd2rX9m+WgGr8Ku6YNuj1D7OX6rWSok= google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY= google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c h1:Kqjm4WpoWvwhMPcrAczoTyMySQmYa9Wy2iL6Con4zn8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 5d6c061f5830c5d219ef63b8325e08ddcde8f1d1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 31 Aug 2024 01:29:38 +0200 Subject: [PATCH 1167/1371] chore(deps): update golangci/golangci-lint docker tag to v1.60.3 (#2566) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 4eaffe697fe..133ba654d71 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.60.2 +GOLANGCI_VERSION := 1.60.3 .PHONY: docker_go_lint docker_go_lint: From 0109d72a139a0c9e3003bb0ce9562fe6cde31915 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Tue, 3 Sep 2024 09:16:19 -0700 Subject: [PATCH 1168/1371] chore: Update Tools to 1.22.9 (#2544) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index dc07db58bfa..089a1cfb6f1 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.9.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 489.0.0 +CLOUD_SDK_VERSION := 490.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,11 +25,11 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.66.9 +TERRAGRUNT_VERSION := 0.67.1 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow -KPT_VERSION := 1.0.0-beta.54 +KPT_VERSION := 1.0.0-beta.55 PROTOC_VERSION := 23.4 PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 @@ -49,7 +49,7 @@ TFLINT_BP_PLUGIN_VERSION := 0.2.4 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.60.2 +GOLANGCI_VERSION := 1.60.3 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.8 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.9 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From cfc0fdd4489800c38c5896fc0847cc927a953c59 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 3 Sep 2024 18:59:15 +0200 Subject: [PATCH 1169/1371] fix(deps): update module github.com/hashicorp/hcl/v2 to v2.22.0 (#2569) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 80c70024170..3ec8a6f4b60 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -6,7 +6,7 @@ require ( github.com/chainguard-dev/git-urls v1.0.2 github.com/go-git/go-git/v5 v5.12.0 github.com/google/go-cmp v0.6.0 - github.com/hashicorp/hcl/v2 v2.21.0 + github.com/hashicorp/hcl/v2 v2.22.0 github.com/pmezard/go-difflib v1.0.0 github.com/zclconf/go-cty v1.15.0 ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index f90d36ca201..72f7c6e8acd 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -44,8 +44,8 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= -github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= From 3629841897a92c9e1a0a14d223aaebe3571958b0 Mon Sep 17 00:00:00 2001 From: Leonardo Romanini <97033241+romanini-ciandt@users.noreply.github.com> Date: Tue, 3 Sep 2024 20:45:38 -0300 Subject: [PATCH 1170/1371] chore: Add elo into kms-solutions repo (#2555) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 26167f37eb9..74b00243d61 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -879,7 +879,7 @@ locals { name = "kms-solutions" org = "GoogleCloudPlatform" description = "Store Cloud KMS scripts, artifacts, code samples, and more." - owners = ["tdbhacks"] + owners = ["tdbhacks", "erlanderlo"] lint_env = { ENABLE_BPMETADATA = "1" } From c6a716ef1865e9d9091efcc38d33eda122612757 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 5 Sep 2024 10:56:35 -0700 Subject: [PATCH 1171/1371] chore(CI): Update renovate.json (#2573) --- .github/renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index f31b9f1656c..d6e62ef8cb0 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -23,7 +23,8 @@ "extends": [":semanticCommitTypeAll(chore)", ":rebaseStalePrs"] }, { - "matchPackageNames": ["google", "google-beta"], + "matchManagers": ["terraform"], + "matchDepNames": ["google", "google-beta"], "groupName": "terraform google provider", "rangeStrategy": "widen" }, From 7190012022376acc5f726c5b6d82fef07edaa83c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 5 Sep 2024 20:27:23 +0200 Subject: [PATCH 1172/1371] chore(deps): update actions/upload-artifact action to v4.4.0 (#2576) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index bb24d4d159d..e54d7e3aa32 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e284e034411..0622fdedc43 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: SARIF file path: results.sarif From e288615361472de1940ca092388439864749cba1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 5 Sep 2024 21:12:17 +0200 Subject: [PATCH 1173/1371] fix(deps): update module golang.org/x/mod to v0.21.0 (#2574) Co-authored-by: Andrew Peabody --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index f74f741ec58..eba4766cd04 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -2,7 +2,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-t go 1.22 -toolchain go1.22.6 +toolchain go1.22.7 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d @@ -15,7 +15,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.17.3 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.20.0 + golang.org/x/mod v0.21.0 sigs.k8s.io/kustomize/kyaml v0.17.2 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index fbcb2a61d6e..48c75bfabe5 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -581,8 +581,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= -golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From 490d63bf25395f71ad571cb7ade136663cafebef Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 5 Sep 2024 21:56:58 +0200 Subject: [PATCH 1174/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.47.1 (#2578) Co-authored-by: Andrew Peabody --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index eba4766cd04..e56a45a1ce5 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,7 +7,7 @@ toolchain go1.22.7 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.47.0 + github.com/gruntwork-io/terratest v0.47.1 github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 github.com/hashicorp/terraform-json v0.22.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 @@ -52,7 +52,7 @@ require ( github.com/gruntwork-io/go-commons v0.17.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.5 // indirect + github.com/hashicorp/go-getter v1.7.6 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 48c75bfabe5..7537b06bf27 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -378,15 +378,15 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.47.0 h1:xIy1pT7NbGVlMLDZEHl3+3iSnvffh8tN2pL6idn448c= -github.com/gruntwork-io/terratest v0.47.0/go.mod h1:oywHw1cFKXSYvKPm27U7quZVzDUlA22H2xUrKCe26xM= +github.com/gruntwork-io/terratest v0.47.1 h1:qOaxnL7Su5+KpDHYUN/ek1jn8ImvCKtOkaY4OSMS4tI= +github.com/gruntwork-io/terratest v0.47.1/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4CBERWSCusbJ0d/64= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= -github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4= +github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= From 9d273e6938ca089b24480d4b4cb984d3f3feaee0 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 14:30:08 -0700 Subject: [PATCH 1175/1371] chore(release-please): release blueprint-test 0.16.2 (#2475) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 29efb83c47f..d4d408caeea 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.16.1", + "infra/blueprint-test": "0.16.2", "infra/module-swapper": "0.4.8", "tflint-ruleset-blueprint": "0.2.4" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index a0ace9c15b1..0e9b09ef733 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.16.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.16.1...infra/blueprint-test/v0.16.2) (2024-09-05) + + +### Bug Fixes + +* **deps:** update github.com/hashicorp/terraform-config-inspect digest to 6714b46 ([#2488](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2488)) ([ca03f44](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/ca03f449f2ee9c928e702b8520e823cca83d445a)) +* **deps:** update module github.com/gruntwork-io/terratest to v0.47.1 ([#2578](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2578)) ([490d63b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/490d63bf25395f71ad571cb7ade136663cafebef)) +* **deps:** update module github.com/tidwall/gjson to v1.17.3 ([#2474](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2474)) ([7fe2b66](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/7fe2b66489a4cf3be5d6451ca3177bfeb5c94249)) +* **deps:** update module golang.org/x/mod to v0.20.0 ([#2512](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2512)) ([13973f0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/13973f0a4aade9b6a1bb24210a9a0d7038416cae)) +* **deps:** update module golang.org/x/mod to v0.21.0 ([#2574](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2574)) ([e288615](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/e288615361472de1940ca092388439864749cba1)) + ## [0.16.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.16.0...infra/blueprint-test/v0.16.1) (2024-07-23) From 3081bdc1f6710674330c337aac74484df3e4daa1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 6 Sep 2024 01:33:31 +0200 Subject: [PATCH 1176/1371] chore(deps): update terraform google provider to v6 (#2579) Co-authored-by: Andrew Peabody --- .../test-org/ci-triggers/.terraform.lock.hcl | 56 +++++++++---------- infra/terraform/test-org/ci-triggers/logs.tf | 2 +- .../test-org/ci-triggers/versions.tf | 4 +- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl index 850cd5f3bc8..f34e75026cd 100644 --- a/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-triggers/.terraform.lock.hcl @@ -2,41 +2,41 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "5.10.0" - constraints = ">= 4.46.0, < 6.0.0" + version = "5.43.1" + constraints = ">= 2.18.0, >= 4.46.0, < 6.0.0, < 7.0.0" hashes = [ - "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", - "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", - "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", - "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", - "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", - "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", - "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", - "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", - "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", - "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", + "h1:kKqTi+6TS7GCMKFbwf0aTA3FwZtJTaAtagGEZAFbCEg=", + "zh:40b46223d3804c32b8e1e8e16ba057230a774d9f250896d8d410272ed5b14318", + "zh:95a2f2b029b9f9dc0311f0a81d1d2ef41b0a19b4cfb50393c2ece23f53fcd785", + "zh:a8263fbc090c80c8c21b4278f7fedaeb792b5f6061b9e5182ce8aa69fc828035", + "zh:ac900b372ac879691cdc0bf149baee3a11a37d4102e30a4931f6cfd960f5c852", + "zh:ae336bee99114a98327141ef6555aa5953a87ce216f0f105c88a88947d477d2c", + "zh:babe5974f850610746111264e897d9d7ac1c44e17e81ffef53d28059e3019453", + "zh:c7f77ac8e07e488432d6b45688e2a45f1bded82d9914666136b7e50a74ab6fd9", + "zh:d5dd46a0bbf783141d0592043720c61ea055a359986f50bdbfd6fc5d03aae68c", + "zh:d805f8abc5e3d547bc9964ccc7d87e687add92397b2e3fedb40afcda7d93dca8", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", - "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", + "zh:f678f3ee9d96b373d582d8012dcceca446f4891b9d1593447023b04137a6529e", + "zh:f6a75d48a0be31ee42b1db22b3ad9af2ead170bdd9f023ec8fb292b861b5fa3a", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.10.0" - constraints = ">= 2.18.0, < 6.0.0" + version = "6.1.0" + constraints = ">= 2.18.0, < 7.0.0" hashes = [ - "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", - "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", - "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", - "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", - "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", - "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", - "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", - "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", - "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", - "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", - "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", + "h1:AEOTKPFbO8SKMOCBhzANkGST9yjGKO6OXjEScROE8Ro=", + "zh:3ea706aa701755ed212a13ebfc0332a587738add77f7433449ec0b0bde9ba6f3", + "zh:5025a74240983a7a55c1496b124da4193f23dec751dec203e1801439e6c232af", + "zh:535fe811841e7ce06050b66f4d32d5812df17cf942c15d3063c8d29197733938", + "zh:66e81f66c2bc4e2d325b537f9e9e51ea4ca4d1015b8c7ee8bdca74c6fc1f41b6", + "zh:71ebb3ba56666ba38424acebb5b149df10cb31f68e268e7be6ec66046c9e83b3", + "zh:8c798beb2516f726324289a06eb6956c88905c2a385e4cf18830c5210d9abc64", + "zh:9110f27d1c5cf2b797162c17ab75c47c856f8273fb66dbf26b3d2fe5b1a9b105", + "zh:a85f6ed96ade11563eaa3c8ab25e36c4a8abea8f3de2c59a2a318a110903d110", + "zh:aec1733cbe018418f62182b06f982ecaa32888398f93072cf5300523e9c6763d", + "zh:b58eb8b422eb6c576f1b597c1bcda618ef143d6acc9663730e9b4ce55e035814", + "zh:b5984d64c9bf7ac5e27b9fdbcc44fd206b320259007b5c7fc6e3c975b0762478", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } diff --git a/infra/terraform/test-org/ci-triggers/logs.tf b/infra/terraform/test-org/ci-triggers/logs.tf index 9eedfa84391..43a64acc18d 100644 --- a/infra/terraform/test-org/ci-triggers/logs.tf +++ b/infra/terraform/test-org/ci-triggers/logs.tf @@ -16,7 +16,7 @@ module "filelogs_bucket" { source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket" - version = "~> 5.0" + version = "~> 6.1" name = "${local.project_id}-filelogs" project_id = local.project_id diff --git a/infra/terraform/test-org/ci-triggers/versions.tf b/infra/terraform/test-org/ci-triggers/versions.tf index 30a8eb20698..34f1e6a9f7f 100644 --- a/infra/terraform/test-org/ci-triggers/versions.tf +++ b/infra/terraform/test-org/ci-triggers/versions.tf @@ -19,11 +19,11 @@ terraform { required_providers { google-beta = { source = "hashicorp/google-beta" - version = ">= 2.18, < 6" + version = ">= 2.18, < 7" } google = { source = "hashicorp/google" - version = ">= 2.18, < 6" + version = ">= 2.18, < 7" } } } From 9b4036c469459c001bcfe0f7e13d48265ede6334 Mon Sep 17 00:00:00 2001 From: Zheng Qin Date: Mon, 9 Sep 2024 12:26:57 -0400 Subject: [PATCH 1177/1371] feat: add provider version to metadata generation (#2496) Co-authored-by: Zheng Qin Co-authored-by: Andrew Peabody Co-authored-by: Bharath KKB --- cli/bpmetadata/bpmetadata.pb.go | 2 +- cli/bpmetadata/cmd.go | 3 +- .../int-test/goldens/golden-metadata.yaml | 5 ++ cli/bpmetadata/proto/bpmetadata.proto | 2 +- .../schema/gcp-blueprint-metadata.json | 2 +- cli/bpmetadata/tfconfig.go | 82 +++++++++++++++---- cli/bpmetadata/tfconfig_test.go | 79 +++++++++++++++--- .../bpmetadata/tf/provider-versions-bad.tf | 19 +++++ .../bpmetadata/tf/provider-versions-empty.tf | 13 +++ 9 files changed, 179 insertions(+), 28 deletions(-) create mode 100644 cli/testdata/bpmetadata/tf/provider-versions-bad.tf create mode 100644 cli/testdata/bpmetadata/tf/provider-versions-empty.tf diff --git a/cli/bpmetadata/bpmetadata.pb.go b/cli/bpmetadata/bpmetadata.pb.go index a423e663533..b46e93b9296 100644 --- a/cli/bpmetadata/bpmetadata.pb.go +++ b/cli/bpmetadata/bpmetadata.pb.go @@ -743,7 +743,7 @@ type BlueprintRequirements struct { Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty" yaml:"services,omitempty"` // @gotags: json:"services,omitempty" yaml:"services,omitempty" // Required provider versions. // Gen: auto-generated from required providers block. - ProviderVersions []*ProviderVersion `protobuf:"bytes,3,rep,name=provider_versions,json=providerVersions,proto3" json:"versions,omitempty" yaml:"providerVersions,omitempty"` // @gotags: json:"versions,omitempty" yaml:"providerVersions,omitempty" + ProviderVersions []*ProviderVersion `protobuf:"bytes,3,rep,name=provider_versions,json=providerVersions,proto3" json:"providerVersions,omitempty" yaml:"providerVersions,omitempty"` // @gotags: json:"providerVersions,omitempty" yaml:"providerVersions,omitempty" } func (x *BlueprintRequirements) Reset() { diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 4aff3651bf7..5430a2bf3a3 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -249,7 +249,8 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* // get blueprint requirements rolesCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfRolesFileName) svcsCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfServicesFileName) - requirements, err := getBlueprintRequirements(rolesCfgPath, svcsCfgPath) + versionsCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfVersionsFileName) + requirements, err := getBlueprintRequirements(rolesCfgPath, svcsCfgPath, versionsCfgPath) if err != nil { Log.Info("skipping blueprint requirements since roles and/or services configurations were not found as per https://tinyurl.com/tf-iam and https://tinyurl.com/tf-services") } else { diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml index 814422849c2..6059145ef0e 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -249,3 +249,8 @@ spec: - cloudresourcemanager.googleapis.com - compute.googleapis.com - serviceusage.googleapis.com + providerVersions: + - source: hashicorp/google + version: ">= 4.42, < 5.0" + - source: hashicorp/random + version: ">= 2.1" diff --git a/cli/bpmetadata/proto/bpmetadata.proto b/cli/bpmetadata/proto/bpmetadata.proto index 95beb5e1888..7ffeeb2924b 100644 --- a/cli/bpmetadata/proto/bpmetadata.proto +++ b/cli/bpmetadata/proto/bpmetadata.proto @@ -195,7 +195,7 @@ message BlueprintRequirements { // Required provider versions. // Gen: auto-generated from required providers block. - repeated ProviderVersion provider_versions = 3; // @gotags: json:"versions,omitempty" yaml:"providerVersions,omitempty" + repeated ProviderVersion provider_versions = 3; // @gotags: json:"providerVersions,omitempty" yaml:"providerVersions,omitempty" } // ProviderVersion defines the required version for a provider. diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 96cf07fba92..768f2f86b21 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -440,7 +440,7 @@ }, "type": "array" }, - "versions": { + "providerVersions": { "items": { "$ref": "#/$defs/ProviderVersion" }, diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index 6c2fd316880..89ba1d1ab57 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -6,6 +6,7 @@ import ( "path/filepath" "regexp" "sort" + "strings" hcl "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/gohcl" @@ -188,6 +189,36 @@ func parseBlueprintVersion(versionsFile *hcl.File, diags hcl.Diagnostics) (strin return "", nil } +// parseBlueprintProviderVersions gets the blueprint provider_versions from the provided config +// from the required_providers block. +func parseBlueprintProviderVersions(versionsFile *hcl.File) ([]*ProviderVersion, error) { + var v []*ProviderVersion + // parse out the required providers from the config + var hclModule tfconfig.Module + hclModule.RequiredProviders = make(map[string]*tfconfig.ProviderRequirement) + diags := tfconfig.LoadModuleFromFile(versionsFile, &hclModule) + err := hasHclErrors(diags) + if err != nil { + return nil, err + } + + for _, providerData := range hclModule.RequiredProviders { + if providerData.Source == "" { + Log.Info("Not found source in provider settings\n") + continue + } + if len(providerData.VersionConstraints) == 0 { + Log.Info("Not found version in provider settings\n") + continue + } + v = append(v, &ProviderVersion{ + Source: providerData.Source, + Version: strings.Join(providerData.VersionConstraints, ", "), + }) + } + return v, nil +} + // getBlueprintInterfaces gets the variables and outputs associated // with the blueprint func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { @@ -253,7 +284,7 @@ func getBlueprintOutput(modOut *tfconfig.Output) *BlueprintOutput { // getBlueprintRequirements gets the services and roles associated // with the blueprint -func getBlueprintRequirements(rolesConfigPath, servicesConfigPath string) (*BlueprintRequirements, error) { +func getBlueprintRequirements(rolesConfigPath, servicesConfigPath, versionsConfigPath string) (*BlueprintRequirements, error) { //parse blueprint roles p := hclparse.NewParser() rolesFile, diags := p.ParseHCLFile(rolesConfigPath) @@ -279,10 +310,33 @@ func getBlueprintRequirements(rolesConfigPath, servicesConfigPath string) (*Blue return nil, err } + versionCfgFileExists, _ := fileExists(versionsConfigPath) + + if !versionCfgFileExists { + return &BlueprintRequirements{ + Roles: r, + Services: s, + }, nil + } + + //parse blueprint provider versions + versionsFile, diags := p.ParseHCLFile(versionsConfigPath) + err = hasHclErrors(diags) + if err != nil { + return nil, err + } + + v, err := parseBlueprintProviderVersions(versionsFile) + if err != nil { + return nil, err + } + return &BlueprintRequirements{ - Roles: r, - Services: s, + Roles: r, + Services: s, + ProviderVersions: v, }, nil + } // parseBlueprintRoles gets the roles required for the blueprint to be provisioned @@ -399,15 +453,15 @@ func hasTfconfigErrors(diags tfconfig.Diagnostics) error { // MergeExistingConnections merges existing connections from an old BlueprintInterface into a new one, // preserving manually authored connections. func mergeExistingConnections(newInterfaces, existingInterfaces *BlueprintInterface) { - if existingInterfaces == nil { - return // Nothing to merge if existingInterfaces is nil - } - - for i, variable := range newInterfaces.Variables { - for _, existingVariable := range existingInterfaces.Variables { - if variable.Name == existingVariable.Name && existingVariable.Connections != nil { - newInterfaces.Variables[i].Connections = existingVariable.Connections - } - } - } + if existingInterfaces == nil { + return // Nothing to merge if existingInterfaces is nil + } + + for i, variable := range newInterfaces.Variables { + for _, existingVariable := range existingInterfaces.Variables { + if variable.Name == existingVariable.Name && existingVariable.Connections != nil { + newInterfaces.Variables[i].Connections = existingVariable.Connections + } + } + } } diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index f8db84eb080..05673ea375d 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -11,9 +11,9 @@ import ( ) const ( - tfTestdataPath = "../testdata/bpmetadata/tf" + tfTestdataPath = "../testdata/bpmetadata/tf" metadataTestdataPath = "../testdata/bpmetadata/metadata" - interfaces = "sample-module" + interfaces = "sample-module" ) func TestTFInterfaces(t *testing.T) { @@ -268,25 +268,58 @@ func TestTFRoles(t *testing.T) { } } +func TestTFProviderVersions(t *testing.T) { + tests := []struct { + name string + configName string + wantProviderVersions []*ProviderVersion + }{ + { + name: "Simple list of provider versions", + configName: "versions-beta.tf", + wantProviderVersions: []*ProviderVersion{ + { + Source: "hashicorp/google", + Version: ">= 4.4.0, < 7", + }, + { + Source: "hashicorp/google-beta", + Version: ">= 4.4.0, < 7", + }, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + p := hclparse.NewParser() + content, _ := p.ParseHCLFile(path.Join(tfTestdataPath, tt.configName)) + got, err := parseBlueprintProviderVersions(content) + require.NoError(t, err) + assert.Equal(t, got, tt.wantProviderVersions) + }) + } +} + func TestMergeExistingConnections(t *testing.T) { tests := []struct { - name string - newInterfacesFile string + name string + newInterfacesFile string existingInterfacesFile string }{ { - name: "No existing connections", - newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", + name: "No existing connections", + newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", existingInterfacesFile: "existing_interfaces_without_connections_metadata.yaml", }, { - name: "One existing connection is preserved", - newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", + name: "One existing connection is preserved", + newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", existingInterfacesFile: "existing_interfaces_with_one_connection_metadata.yaml", }, { - name: "Multiple existing connections are preserved", - newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", + name: "Multiple existing connections are preserved", + newInterfacesFile: "new_interfaces_no_connections_metadata.yaml", existingInterfacesFile: "existing_interfaces_with_some_connections_metadata.yaml", }, } @@ -309,3 +342,29 @@ func TestMergeExistingConnections(t *testing.T) { }) } } + +func TestTFIncompleteProviderVersions(t *testing.T) { + tests := []struct { + name string + configName string + }{ + { + name: "Empty list of provider versions", + configName: "provider-versions-empty.tf", + }, + { + name: "Missing ProviderVersion field", + configName: "provider-versions-bad.tf", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + p := hclparse.NewParser() + content, _ := p.ParseHCLFile(path.Join(tfTestdataPath, tt.configName)) + got, err := parseBlueprintProviderVersions(content) + require.NoError(t, err) + assert.Nil(t, got) + }) + } +} diff --git a/cli/testdata/bpmetadata/tf/provider-versions-bad.tf b/cli/testdata/bpmetadata/tf/provider-versions-bad.tf new file mode 100644 index 00000000000..3924ce27744 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/provider-versions-bad.tf @@ -0,0 +1,19 @@ +terraform { + required_version = ">= 0.13.0" + + required_providers { + google = { + version = ">= 4.4.0, < 6" + } + google-beta = { + source = "hashicorp/google-beta" + } + } + + provider_meta "google" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } + provider_meta "google-beta" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } +} diff --git a/cli/testdata/bpmetadata/tf/provider-versions-empty.tf b/cli/testdata/bpmetadata/tf/provider-versions-empty.tf new file mode 100644 index 00000000000..6e23b30fe84 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/provider-versions-empty.tf @@ -0,0 +1,13 @@ +terraform { + required_version = ">= 0.13.0" + + required_providers { + } + + provider_meta "google" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } + provider_meta "google-beta" { + module_name = "blueprints/terraform/terraform-google-kubernetes-engine:hub/v23.1.0" + } +} From eaffea3ff2d91ffb8f459fb19a2e16c8b1125618 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Sep 2024 23:35:02 +0200 Subject: [PATCH 1178/1371] chore(deps): update peter-evans/create-pull-request action to v7 (#2588) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 25b737f4038..a1bddbf4cf6 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -111,7 +111,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0 + uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 222d59d8be5deadfeed9667c25282327b43e468c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 12 Sep 2024 21:05:46 +0200 Subject: [PATCH 1179/1371] chore(deps): update peter-evans/create-pull-request action to v7.0.1 (#2590) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index a1bddbf4cf6..2870be3c058 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -111,7 +111,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 + uses: peter-evans/create-pull-request@8867c4aba1b742c39f8d0ba35429c2dfa4b6cb20 # v7.0.1 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From d7d97f7d0019a99aac9cd91fd96ad56a3f074ad0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 12 Sep 2024 21:17:05 +0200 Subject: [PATCH 1180/1371] chore(deps): update peter-evans/create-pull-request action to v7.0.2 (#2592) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 2870be3c058..77dd7e63e91 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -111,7 +111,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@8867c4aba1b742c39f8d0ba35429c2dfa4b6cb20 # v7.0.1 + uses: peter-evans/create-pull-request@d121e62763d8cc35b5fb1710e887d6e69a52d3a4 # v7.0.2 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From c65eb3b953b0c1bed7395e9a5db6bb4a3140f8ac Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Sep 2024 01:51:36 +0200 Subject: [PATCH 1181/1371] fix(deps): update module google.golang.org/api to v0.196.0 (#2587) --- infra/utils/fbf/go.mod | 18 +++++++++--------- infra/utils/fbf/go.sum | 38 +++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index e86b26411da..dc5eba88121 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.195.0 + google.golang.org/api v0.196.0 ) require ( - cloud.google.com/go/auth v0.9.1 // indirect + cloud.google.com/go/auth v0.9.3 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -21,7 +21,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.3 // indirect github.com/googleapis/gax-go/v2 v2.13.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect @@ -29,18 +29,18 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect + go.opentelemetry.io/otel v1.29.0 // indirect + go.opentelemetry.io/otel/metric v1.29.0 // indirect + go.opentelemetry.io/otel/trace v1.29.0 // indirect golang.org/x/crypto v0.26.0 // indirect golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.22.0 // indirect golang.org/x/sys v0.24.0 // indirect golang.org/x/term v0.23.0 // indirect golang.org/x/text v0.17.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c // indirect - google.golang.org/grpc v1.65.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.66.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index fc2fb86b452..678f475c731 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.9.1 h1:+pMtLEV2k0AXKvs/tGZojuj6QaioxfUjOpMsG5Gtx+w= -cloud.google.com/go/auth v0.9.1/go.mod h1:Sw8ocT5mhhXxFklyhT12Eiy0ed6tTrPMCJjSI8KhYLk= +cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U= +cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= @@ -54,8 +54,8 @@ github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/enterprise-certificate-proxy v0.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0= +github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= @@ -83,14 +83,14 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= @@ -135,25 +135,25 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.195.0 h1:Ude4N8FvTKnnQJHU48RFI40jOBgIrL8Zqr3/QeST6yU= -google.golang.org/api v0.195.0/go.mod h1:DOGRWuv3P8TU8Lnz7uQc4hyNqrBpMtD9ppW3wBJurgc= +google.golang.org/api v0.196.0 h1:k/RafYqebaIJBO3+SMnfEGtFVlvp5vSgqTUF54UN/zg= +google.golang.org/api v0.196.0/go.mod h1:g9IL21uGkYgvQ5BZg6BAtoGJQIm8r6EgaAbpNey5wBE= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240823204242-4ba0660f739c h1:TYOEhrQMrNDTAd2rX9m+WgGr8Ku6YNuj1D7OX6rWSok= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY= google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c h1:Kqjm4WpoWvwhMPcrAczoTyMySQmYa9Wy2iL6Con4zn8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= +google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= 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= From 1b4ef6a3bc1957b59da86db4b2ad17898cf295f3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Sep 2024 17:39:35 +0200 Subject: [PATCH 1182/1371] fix(deps): update module google.golang.org/api to v0.197.0 (#2594) --- infra/utils/fbf/go.mod | 18 +++++++++--------- infra/utils/fbf/go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index dc5eba88121..5e44bc6f131 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.196.0 + google.golang.org/api v0.197.0 ) require ( @@ -21,7 +21,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.3 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect github.com/googleapis/gax-go/v2 v2.13.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect @@ -33,14 +33,14 @@ require ( go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect - golang.org/x/crypto v0.26.0 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/oauth2 v0.22.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/term v0.23.0 // indirect - golang.org/x/text v0.17.0 // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.0 // indirect + google.golang.org/grpc v1.66.1 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 678f475c731..0db0a8ab46a 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -54,8 +54,8 @@ github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0= -github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= +github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= +github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= @@ -93,8 +93,8 @@ go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt3 go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -105,11 +105,11 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= -golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -121,22 +121,22 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.196.0 h1:k/RafYqebaIJBO3+SMnfEGtFVlvp5vSgqTUF54UN/zg= -google.golang.org/api v0.196.0/go.mod h1:g9IL21uGkYgvQ5BZg6BAtoGJQIm8r6EgaAbpNey5wBE= +google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ= +google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -152,8 +152,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= -google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= +google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= 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= From fd980e05c527a1eb97b29ee1715e75b015ca7700 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Sep 2024 18:09:50 +0200 Subject: [PATCH 1183/1371] fix(deps): update dependency go to v1.22.7 (#2593) --- tflint-ruleset-blueprint/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 5824755af89..8767b040671 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -2,7 +2,7 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint go 1.22.2 -toolchain go1.22.6 +toolchain go1.22.7 require ( github.com/hashicorp/go-version v1.7.0 From 9860d1ec41eef433afc83d018099cbf4973bc917 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Sep 2024 18:14:58 +0200 Subject: [PATCH 1184/1371] fix(deps): update go modules (#2562) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 52 ++++++++++++------------- cli/go.sum | 108 +++++++++++++++++++++++++-------------------------- 3 files changed, 81 insertions(+), 81 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index b1037c0ac6e..b553bfd1b9f 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.0 +VERSION=v1.5.1 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 11d8d72022b..36a399b1f15 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -15,7 +15,7 @@ require ( github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v64 v64.0.0 - github.com/hashicorp/hcl/v2 v2.21.0 + github.com/hashicorp/hcl/v2 v2.22.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible @@ -24,9 +24,9 @@ require ( github.com/jedib0t/go-pretty v4.3.0+incompatible github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/manifoldco/promptui v0.9.0 - github.com/migueleliasweb/go-github-mock v1.0.0 + github.com/migueleliasweb/go-github-mock v1.0.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.67.1 + github.com/open-policy-agent/opa v0.68.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.1 @@ -34,9 +34,9 @@ require ( github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa - golang.org/x/oauth2 v0.22.0 - golang.org/x/text v0.17.0 - google.golang.org/api v0.193.0 + golang.org/x/oauth2 v0.23.0 + golang.org/x/text v0.18.0 + google.golang.org/api v0.196.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -44,14 +44,14 @@ require ( require ( cloud.google.com/go v0.115.1 // indirect - cloud.google.com/go/accesscontextmanager v1.8.12 // indirect - cloud.google.com/go/auth v0.9.0 // indirect + cloud.google.com/go/accesscontextmanager v1.9.0 // indirect + cloud.google.com/go/auth v0.9.3 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect - cloud.google.com/go/iam v1.1.13 // indirect - cloud.google.com/go/longrunning v0.5.12 // indirect - cloud.google.com/go/orgpolicy v1.12.8 // indirect - cloud.google.com/go/osconfig v1.13.3 // indirect + cloud.google.com/go/iam v1.2.0 // indirect + cloud.google.com/go/longrunning v0.6.0 // indirect + cloud.google.com/go/orgpolicy v1.13.0 // indirect + cloud.google.com/go/osconfig v1.14.0 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect @@ -99,12 +99,11 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-github/v61 v61.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.3 // indirect github.com/googleapis/gax-go/v2 v2.13.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect @@ -118,6 +117,7 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -134,10 +134,10 @@ require ( github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_golang v1.20.2 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.48.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect @@ -164,14 +164,14 @@ require ( github.com/zclconf/go-cty v1.14.4 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect - go.opentelemetry.io/otel v1.28.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect + go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/sdk v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.29.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect @@ -183,10 +183,10 @@ require ( golang.org/x/term v0.23.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.24.0 // indirect - google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect - google.golang.org/grpc v1.65.0 // indirect + google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.66.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 67399446b8a..c42eaa57b08 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,24 +1,24 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= -cloud.google.com/go/accesscontextmanager v1.8.12 h1:u3gLVJFZ8couGeVBZmhK0ON5YU3w9YIXOVr+THOik/M= -cloud.google.com/go/accesscontextmanager v1.8.12/go.mod h1:EmaVYmffq+2jA2waP0/XHECDkaOKVztxVsdzl65t8hw= +cloud.google.com/go/accesscontextmanager v1.9.0 h1:K0zCbd23A64sdJmOZDaW39dEMB6JVnGz2uycwd8PTu0= +cloud.google.com/go/accesscontextmanager v1.9.0/go.mod h1:EmdQRGq5FHLrjGjGTp2X2tlRBvU3LDCUqfnysFYooxQ= cloud.google.com/go/asset v1.20.0 h1:2kHJKyVUEbuisDjvOK9+XQrvoosEBqsb6yaEzq5gaWY= cloud.google.com/go/asset v1.20.0/go.mod h1:CT3ME6xNZKsPSvi0lMBPgW3azvRhiurJTFSnNl6ahw8= -cloud.google.com/go/auth v0.9.0 h1:cYhKl1JUhynmxjXfrk4qdPc6Amw7i+GC9VLflgT0p5M= -cloud.google.com/go/auth v0.9.0/go.mod h1:2HsApZBr9zGZhC9QAXsYVYaWk8kNUt37uny+XVKi7wM= +cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U= +cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= -cloud.google.com/go/iam v1.1.13 h1:7zWBXG9ERbMLrzQBRhFliAV+kjcRToDTgQT3CTwYyv4= -cloud.google.com/go/iam v1.1.13/go.mod h1:K8mY0uSXwEXS30KrnVb+j54LB/ntfZu1dr+4zFMNbus= -cloud.google.com/go/longrunning v0.5.12 h1:5LqSIdERr71CqfUsFlJdBpOkBH8FBCFD7P1nTWy3TYE= -cloud.google.com/go/longrunning v0.5.12/go.mod h1:S5hMV8CDJ6r50t2ubVJSKQVv5u0rmik5//KgLO3k4lU= -cloud.google.com/go/orgpolicy v1.12.8 h1:lBKGvA07J42nQpU6X61hQDIv/jcnuJtz/BhnTjGIDYg= -cloud.google.com/go/orgpolicy v1.12.8/go.mod h1:WHkLGqHILPnMgJ4UTdag6YgztVIgWS+T5T6tywH3cSM= -cloud.google.com/go/osconfig v1.13.3 h1:GoiK/q0OAhaGxZMMapulq+lxZU4BEZn8ado2g3yqfqc= -cloud.google.com/go/osconfig v1.13.3/go.mod h1:gIFyyriC1ANob8SnpwrQ6jjNroRwItoBOYfqiG3LkUU= +cloud.google.com/go/iam v1.2.0 h1:kZKMKVNk/IsSSc/udOb83K0hL/Yh/Gcqpz+oAkoIFN8= +cloud.google.com/go/iam v1.2.0/go.mod h1:zITGuWgsLZxd8OwAlX+eMFgZDXzBm7icj1PVTYG766Q= +cloud.google.com/go/longrunning v0.6.0 h1:mM1ZmaNsQsnb+5n1DNPeL0KwQd9jQRqSqSDEkBZr+aI= +cloud.google.com/go/longrunning v0.6.0/go.mod h1:uHzSZqW89h7/pasCWNYdUpwGz3PcVWhrWupreVPYLts= +cloud.google.com/go/orgpolicy v1.13.0 h1:WaabiSAxtyi4JNFATvsPmQS2IWRjr1+pwU3/Bihj7eA= +cloud.google.com/go/orgpolicy v1.13.0/go.mod h1:oKtT56zEFSsYORUunkN2mWVQBc9WGP7yBAPOZW1XCXc= +cloud.google.com/go/osconfig v1.14.0 h1:7XGKH/O0PGIoPIIYc+Ja5WD5Sc1nK0y5DT7jvSfyJVc= +cloud.google.com/go/osconfig v1.14.0/go.mod h1:GhZzWYVrnQ42r+K5pA/hJCsnWVW2lB6bmVg+GnZ6JkM= cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= @@ -257,8 +257,6 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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/go-github/v61 v61.0.0 h1:VwQCBwhyE9JclCI+22/7mLB1PuU9eowCXKY5pNlu1go= -github.com/google/go-github/v61 v61.0.0/go.mod h1:0WR+KmsWX75G2EbpyGsGmradjo3IiciuI4BmdVCobQY= github.com/google/go-github/v64 v64.0.0 h1:4G61sozmY3eiPAjjoOHponXDBONm+utovTKbyUb2Qdg= github.com/google/go-github/v64 v64.0.0/go.mod h1:xB3vqMQNdHzilXBiO2I+M7iEFtHf+DP/omBOv6tQzVo= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= @@ -276,8 +274,8 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/enterprise-certificate-proxy v0.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0= +github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= @@ -293,8 +291,8 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= -github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 h1:RwY5HBgtBZ997UtKJAO2Rx+94ETyevwWEVXWx1SL5YY= github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -329,8 +327,8 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= -github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -341,6 +339,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -361,8 +361,8 @@ github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZ github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= -github.com/migueleliasweb/go-github-mock v1.0.0 h1:Lj6w6irqwF7rGI4zTnHpxQSyB2Hm6w6H4SkhskrpvXU= -github.com/migueleliasweb/go-github-mock v1.0.0/go.mod h1:MlZpwicg4/DUTuai8Q8qXo10uvg2yGZ9Myn+XGq6tIc= +github.com/migueleliasweb/go-github-mock v1.0.1 h1:amLEECVny28RCD1ElALUpQxrAimamznkg9rN2O7t934= +github.com/migueleliasweb/go-github-mock v1.0.1/go.mod h1:8PJ7MpMoIiCBBNpuNmvndHm0QicjsE+hjex1yMGmjYQ= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -390,8 +390,8 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.67.1 h1:rzy26J6g1X+CKknAcx0Vfbt41KqjuSzx4E0A8DAZf3E= -github.com/open-policy-agent/opa v0.67.1/go.mod h1:aqKlHc8E2VAAylYE9x09zJYr/fYzGX+JKne89UGqFzk= +github.com/open-policy-agent/opa v0.68.0 h1:Jl3U2vXRjwk7JrHmS19U3HZO5qxQRinQbJ2eCJYSqJQ= +github.com/open-policy-agent/opa v0.68.0/go.mod h1:5E5SvaPwTpwt2WM177I9Z3eT7qUpmOGjk1ZdHs+TZ4w= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -408,15 +408,15 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg= +github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= @@ -519,22 +519,22 @@ go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -589,8 +589,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= -golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -644,8 +644,8 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -670,26 +670,26 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.193.0 h1:eOGDoJFsLU+HpCBaDJex2fWiYujAw9KbXgpOAMePoUs= -google.golang.org/api v0.193.0/go.mod h1:Po3YMV1XZx+mTku3cfJrlIYR03wiGrCOsdpC67hjZvw= +google.golang.org/api v0.196.0 h1:k/RafYqebaIJBO3+SMnfEGtFVlvp5vSgqTUF54UN/zg= +google.golang.org/api v0.196.0/go.mod h1:g9IL21uGkYgvQ5BZg6BAtoGJQIm8r6EgaAbpNey5wBE= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0= -google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4= +google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0= +google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= +google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= 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= From 71c150874260ce15c3a71edc721fc744663f0b68 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Sep 2024 19:26:22 +0200 Subject: [PATCH 1185/1371] chore(deps): update terraform google to v6 (#2585) Co-authored-by: Andrew Peabody --- .../test-org/tf-validator/.terraform.lock.hcl | 134 +++++++++--------- .../test-org/tf-validator/project.tf | 2 +- .../test-org/tf-validator/versions.tf | 9 +- 3 files changed, 75 insertions(+), 70 deletions(-) diff --git a/infra/terraform/test-org/tf-validator/.terraform.lock.hcl b/infra/terraform/test-org/tf-validator/.terraform.lock.hcl index c732cd04735..939bcd9bb13 100644 --- a/infra/terraform/test-org/tf-validator/.terraform.lock.hcl +++ b/infra/terraform/test-org/tf-validator/.terraform.lock.hcl @@ -2,101 +2,101 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "5.10.0" - constraints = ">= 3.43.0, >= 3.50.0, >= 4.28.0, < 6.0.0" + version = "6.2.0" + constraints = ">= 3.43.0, >= 4.28.0, >= 5.41.0, < 7.0.0" hashes = [ - "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", - "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", - "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", - "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", - "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", - "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", - "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", - "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", - "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", - "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", + "h1:7JIgzQKRW0AT6UliiYSjYUKxDr03baZpQmt5XVkrujs=", + "zh:08a7dc0b53d2b63baab928e66086bf3e09107516af078ce011d2667456e64834", + "zh:1cf9a1373e516844b43fdcea36e73f5a68f19ad07afcf6093788eb235c710163", + "zh:2d4a7cb26c3f0d036d51db219a09013d3d779e44d584e0fc631df0f2cd5e5550", + "zh:47e1fc68e455f99f1875deaed9aa5434a852e2a70a3cb5a5e9b5a2d8c25d7b74", + "zh:78531a8624ddcd45277e1b465e773ac92001ea0e200e9dc1147ebeb24d56359e", + "zh:a76751723c034d44764df22925178f78d8b4852e3e6ac6c5d86f51666c9e666c", + "zh:a83a59a7e667cfffb0d501a501e9b3d2d4fcc83deb07a318c9690d537cbdc4b6", + "zh:b16473b7e59e01690d8234a0044c304505688f5518b205e9ed06fc63ddc82977", + "zh:b957648ad0383e17149bf3a02def81ebc6bd55ca0cffb6ec1c368a1b4f33c4fd", + "zh:e2f3f4a27b41a20bdbb7a80fbcde1a4c36bbd1c83edb9256bc1724754f8d370f", + "zh:ecfce738f85a81603aa51162d5237d6faaa2ffc0f0e52694f8b420ad761a8957", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", - "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.10.0" - constraints = ">= 3.43.0, >= 3.50.0, >= 4.11.0, >= 4.28.0, < 6.0.0" + version = "6.2.0" + constraints = ">= 3.43.0, >= 4.11.0, >= 5.41.0, < 7.0.0" hashes = [ - "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", - "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", - "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", - "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", - "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", - "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", - "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", - "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", - "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", - "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", - "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", + "h1:rDpLrqSZEnuUP697LITaMqmIF6k2j9wGLG9mGNl79Zs=", + "zh:01d227ce9fd7538b331efa669fadb33cc9cf6fd3c76351a70b6f71fc513494a2", + "zh:03113bccea6da3ac7c9187728182e940869f17285854709bb9f2d4aed34e44f2", + "zh:33b93d97b757b3d92a566a553a79b1ebd1c6bbdfa3c5e3244b8fe6f73789dff8", + "zh:697a6cb1b86ca5bc2e03845a6a4cbfe9ce3c287d4df3cfdc51673a7a47c71a8e", + "zh:7232e153f55f6b92377e482a93c4c790b9b7ed87ac79b84fac046bf04aa0b22b", + "zh:a9ca71fe4f5ab3800bde2bff312d1d3ed21864692a7948577f4d3d9b4753c503", + "zh:bdbb86941ec6d9be00d7ed37917a90ffe10314a2c604f1517c4ecf5d7d2d6aac", + "zh:caeaa6f1dca10564c73b86692da63976f971af9a36d93129ae571300c0002ff5", + "zh:cd6e45a56a707e84a84dd17b1357ad7615eaaf1335bcb2ee8dcb9ad239e015f9", + "zh:ce85d507416433bca5ea31537c93dee6d3900f01b2f1d3b3d7caca16294383a6", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", + "zh:fa95af70f352338e73615500ccee22c79ce7f2ec25444b52cde9f798e75eafeb", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.2.2" + version = "3.2.3" constraints = ">= 2.1.0" hashes = [ - "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", - "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", - "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", - "zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3", - "zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606", - "zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546", - "zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539", - "zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452", + "h1:+AnORRgFbRO6qqcfaQyeX80W0eX3VmjadjnUFUJTiXo=", + "zh:22d062e5278d872fe7aed834f5577ba0a5afe34a3bdac2b81f828d8d3e6706d2", + "zh:23dead00493ad863729495dc212fd6c29b8293e707b055ce5ba21ee453ce552d", + "zh:28299accf21763ca1ca144d8f660688d7c2ad0b105b7202554ca60b02a3856d3", + "zh:55c9e8a9ac25a7652df8c51a8a9a422bd67d784061b1de2dc9fe6c3cb4e77f2f", + "zh:756586535d11698a216291c06b9ed8a5cc6a4ec43eee1ee09ecd5c6a9e297ac1", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:913a929070c819e59e94bb37a2a253c228f83921136ff4a7aa1a178c7cce5422", - "zh:aa9015926cd152425dbf86d1abdbc74bfe0e1ba3d26b3db35051d7b9ca9f72ae", - "zh:bb04798b016e1e1d49bcc76d62c53b56c88c63d6f2dfe38821afef17c416a0e1", - "zh:c23084e1b23577de22603cff752e59128d83cfecc2e6819edadd8cf7a10af11e", + "zh:9d5eea62fdb587eeb96a8c4d782459f4e6b73baeece4d04b4a40e44faaee9301", + "zh:a6355f596a3fb8fc85c2fb054ab14e722991533f87f928e7169a486462c74670", + "zh:b5a65a789cff4ada58a5baffc76cb9767dc26ec6b45c00d2ec8b1b027f6db4ed", + "zh:db5ab669cf11d0e9f81dc380a6fdfcac437aea3d69109c7aef1a5426639d2d65", + "zh:de655d251c470197bcbb5ac45d289595295acb8f829f6c781d4a75c8c8b7c7dd", + "zh:f5c68199f2e6076bce92a12230434782bf768103a427e9bb9abee99b116af7b5", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.6.0" + version = "3.6.3" constraints = ">= 2.2.0" hashes = [ - "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=", - "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d", - "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211", - "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829", - "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d", - "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055", + "h1:Fnaec9vA8sZ8BXVlN3Xn9Jz3zghSETIKg7ch8oXhxno=", + "zh:04ceb65210251339f07cd4611885d242cd4d0c7306e86dda9785396807c00451", + "zh:448f56199f3e99ff75d5c0afacae867ee795e4dfda6cb5f8e3b2a72ec3583dd8", + "zh:4b4c11ccfba7319e901df2dac836b1ae8f12185e37249e8d870ee10bb87a13fe", + "zh:4fa45c44c0de582c2edb8a2e054f55124520c16a39b2dfc0355929063b6395b1", + "zh:588508280501a06259e023b0695f6a18149a3816d259655c424d068982cbdd36", + "zh:737c4d99a87d2a4d1ac0a54a73d2cb62974ccb2edbd234f333abd079a32ebc9e", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17", - "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21", - "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839", - "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0", - "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c", - "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e", + "zh:a357ab512e5ebc6d1fda1382503109766e21bbfdfaa9ccda43d313c122069b30", + "zh:c51bfb15e7d52cc1a2eaec2a903ac2aff15d162c172b1b4c17675190e8147615", + "zh:e0951ee6fa9df90433728b96381fb867e3db98f66f735e0c3e24f8f16903f0ad", + "zh:e3cdcb4e73740621dabd82ee6a37d6cfce7fee2a03d8074df65086760f5cf556", + "zh:eff58323099f1bd9a0bec7cb04f717e7f1b2774c7d612bf7581797e1622613a0", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.10.0" + version = "0.12.1" constraints = ">= 0.5.0" hashes = [ - "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", - "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", - "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", - "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", - "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", + "h1:6BhxSYBJdBBKyuqatOGkuPKVenfx6UmLdiI13Pb3his=", + "zh:090023137df8effe8804e81c65f636dadf8f9d35b79c3afff282d39367ba44b2", + "zh:26f1e458358ba55f6558613f1427dcfa6ae2be5119b722d0b3adb27cd001efea", + "zh:272ccc73a03384b72b964918c7afeb22c2e6be22460d92b150aaf28f29a7d511", + "zh:438b8c74f5ed62fe921bd1078abe628a6675e44912933100ea4fa26863e340e9", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", - "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", - "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", - "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", - "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", - "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", - "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", + "zh:85c8bd8eefc4afc33445de2ee7fbf33a7807bc34eb3734b8eefa4e98e4cddf38", + "zh:98bbe309c9ff5b2352de6a047e0ec6c7e3764b4ed3dfd370839c4be2fbfff869", + "zh:9c7bf8c56da1b124e0e2f3210a1915e778bab2be924481af684695b52672891e", + "zh:d2200f7f6ab8ecb8373cda796b864ad4867f5c255cff9d3b032f666e4c78f625", + "zh:d8c7926feaddfdc08d5ebb41b03445166df8c125417b28d64712dccd9feef136", + "zh:e2412a192fc340c61b373d6c20c9d805d7d3dee6c720c34db23c2a8ff0abd71b", + "zh:e6ac6bba391afe728a099df344dbd6481425b06d61697522017b8f7a59957d44", ] } diff --git a/infra/terraform/test-org/tf-validator/project.tf b/infra/terraform/test-org/tf-validator/project.tf index 716c349d606..a455cad5e12 100644 --- a/infra/terraform/test-org/tf-validator/project.tf +++ b/infra/terraform/test-org/tf-validator/project.tf @@ -19,7 +19,7 @@ // there are no reason to create an ephemeral test project + service account each build. module "terraform_validator_test_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 14.0" + version = "~> 17.0" name = local.terraform_validator_project_name random_project_id = true diff --git a/infra/terraform/test-org/tf-validator/versions.tf b/infra/terraform/test-org/tf-validator/versions.tf index 63f76d4ed10..715c70afdf6 100644 --- a/infra/terraform/test-org/tf-validator/versions.tf +++ b/infra/terraform/test-org/tf-validator/versions.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC + * Copyright 2019-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,12 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = "< 6" + version = "< 7" } + google-beta = { + source = "hashicorp/google-beta" + version = "< 7" + } + } } From aed67bf672409499e1b8c5a5ef0ac733bb47012a Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 10:51:16 -0700 Subject: [PATCH 1186/1371] chore(release-please): release tflint-ruleset-blueprint 0.2.5 (#2557) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d4d408caeea..bccbd3fe595 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.2", "infra/module-swapper": "0.4.8", - "tflint-ruleset-blueprint": "0.2.4" + "tflint-ruleset-blueprint": "0.2.5" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md index 50c10e041cc..af03fb67df6 100644 --- a/tflint-ruleset-blueprint/CHANGELOG.md +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.2.5](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.4...tflint-ruleset-blueprint/v0.2.5) (2024-09-13) + + +### Bug Fixes + +* **deps:** update dependency go to v1.22.7 ([#2593](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2593)) ([fd980e0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/fd980e05c527a1eb97b29ee1715e75b015ca7700)) +* **deps:** update module github.com/hashicorp/hcl/v2 to v2.22.0 ([#2545](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2545)) ([12f8179](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/12f8179dab8bc869110144ab7fc759e987aee15c)) + ## [0.2.4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.3...tflint-ruleset-blueprint/v0.2.4) (2024-08-15) From 9488f275ed8fd8aaf9c147337eed379cae4875c4 Mon Sep 17 00:00:00 2001 From: Zheng Qin Date: Fri, 13 Sep 2024 13:57:43 -0400 Subject: [PATCH 1187/1371] fix: Sort provider version by provider Source. (#2589) Co-authored-by: Zheng Qin --- cli/bpmetadata/tfconfig.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index 89ba1d1ab57..d173f104aeb 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -216,6 +216,8 @@ func parseBlueprintProviderVersions(versionsFile *hcl.File) ([]*ProviderVersion, Version: strings.Join(providerData.VersionConstraints, ", "), }) } + // Sort provider_versions + sort.SliceStable(v, func(i, j int) bool { return v[i].Source < v[j].Source }) return v, nil } From 53e02ca5858ec39ffd604c9a5c940bdba8518b0a Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 11:00:39 -0700 Subject: [PATCH 1188/1371] chore(release-please): release module-swapper 0.4.9 (#2570) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index bccbd3fe595..d20dc9fa750 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.16.2", - "infra/module-swapper": "0.4.8", + "infra/module-swapper": "0.4.9", "tflint-ruleset-blueprint": "0.2.5" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 3a1ad7f22ba..966e7f57e4c 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.9](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.8...infra/module-swapper/v0.4.9) (2024-09-13) + + +### Bug Fixes + +* **deps:** update module github.com/hashicorp/hcl/v2 to v2.22.0 ([#2569](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2569)) ([cfc0fdd](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/cfc0fdd4489800c38c5896fc0847cc927a953c59)) + ## [0.4.8](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.7...infra/module-swapper/v0.4.8) (2024-07-22) From e593a831c9e760e0fc8ea97350242d3a9c903736 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 13 Sep 2024 11:20:26 -0700 Subject: [PATCH 1189/1371] chore: Update Tools to 1.22.10 (#2572) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 089a1cfb6f1..d855d44a58d 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.9.5 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 490.0.0 +CLOUD_SDK_VERSION := 492.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.67.1 +TERRAGRUNT_VERSION := 0.67.4 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.0 +CFT_CLI_VERSION := 1.5.1 # Updated by Update Tooling Workflow KUBECTL_VERSION := 1.28.13 # Updated by Update Tooling Workflow @@ -43,13 +43,13 @@ TFLINT_VERSION := 0.53.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.8 +MODULE_SWAPPER_VERSION := 0.4.9 # Updated by Update Tooling Workflow -TFLINT_BP_PLUGIN_VERSION := 0.2.4 +TFLINT_BP_PLUGIN_VERSION := 0.2.5 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.60.3 +GOLANGCI_VERSION := 1.61.0 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -58,7 +58,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.9 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.10 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 1675d38d606bf83f089b7ae442be8fe1268cd4ee Mon Sep 17 00:00:00 2001 From: abhishek kumar tiwari Date: Sat, 14 Sep 2024 03:20:51 +0000 Subject: [PATCH 1190/1371] feat: Add new alternate type for display variables and set ENABLE_BPMETADATA during CI test (#2568) Co-authored-by: Bharath KKB --- cli/bpmetadata/bpmetadata_ui.pb.go | 155 ++++++++++++----------- cli/bpmetadata/proto/bpmetadata_ui.proto | 2 + infra/terraform/test-org/org/locals.tf | 12 ++ 3 files changed, 94 insertions(+), 75 deletions(-) diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index 35e2c47da26..840edc3a541 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -29,6 +29,8 @@ const ( DisplayVariable_AlternateDefault_ALTERNATE_TYPE_UNSPECIFIED DisplayVariable_AlternateDefault_AlternateType = 0 // A more secure default. DisplayVariable_AlternateDefault_ALTERNATE_TYPE_SECURITY DisplayVariable_AlternateDefault_AlternateType = 1 + // A default specifically needed for Design center. + DisplayVariable_AlternateDefault_ALTERNATE_TYPE_DC DisplayVariable_AlternateDefault_AlternateType = 2 ) // Enum value maps for DisplayVariable_AlternateDefault_AlternateType. @@ -36,10 +38,12 @@ var ( DisplayVariable_AlternateDefault_AlternateType_name = map[int32]string{ 0: "ALTERNATE_TYPE_UNSPECIFIED", 1: "ALTERNATE_TYPE_SECURITY", + 2: "ALTERNATE_TYPE_DC", } DisplayVariable_AlternateDefault_AlternateType_value = map[string]int32{ "ALTERNATE_TYPE_UNSPECIFIED": 0, "ALTERNATE_TYPE_SECURITY": 1, + "ALTERNATE_TYPE_DC": 2, } ) @@ -1028,7 +1032,7 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x88, 0x08, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, + 0x22, 0x9f, 0x08, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, @@ -1077,7 +1081,7 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x61, 0x6c, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, - 0x1a, 0xf2, 0x01, 0x0a, 0x10, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x1a, 0x89, 0x02, 0x0a, 0x10, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x62, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, @@ -1087,84 +1091,85 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4c, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, - 0x49, 0x54, 0x59, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, 0x38, 0x0a, 0x0a, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, - 0x0a, 0x0c, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, - 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, - 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, - 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, - 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x43, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x13, + 0x10, 0x14, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, + 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, + 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, + 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x0c, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, + 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, + 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, + 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, + 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, + 0x97, 0x02, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, + 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, + 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, + 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x58, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, - 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, - 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x97, 0x02, 0x0a, 0x0d, 0x44, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, - 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, - 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x58, 0x0a, 0x0a, 0x76, 0x69, 0x73, - 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x69, 0x73, - 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x22, 0x3d, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x4f, 0x4f, 0x54, - 0x10, 0x01, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, - 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, + 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x3d, 0x0a, 0x0a, 0x56, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, + 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, + 0x54, 0x59, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x01, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, + 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index d264a531389..a245a1344c0 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -139,6 +139,8 @@ message DisplayVariable { ALTERNATE_TYPE_UNSPECIFIED = 0; // A more secure default. ALTERNATE_TYPE_SECURITY = 1; + // A default specifically needed for Design center. + ALTERNATE_TYPE_DC = 2; } AlternateType type = 1; // @gotags: json:"type,omitempty" yaml:"type,omitempty" // Value of the alternate default. diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 74b00243d61..ece551928b8 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -91,6 +91,9 @@ locals { description = "Deploys apps to Cloud Run, along with option to map custom domain" owners = ["prabhu34", "anamer", "gtsorbo"] topics = "cloudrun,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-secured-data-warehouse" @@ -294,6 +297,9 @@ locals { org = "terraform-google-modules" description = "Creates one or more Cloud Storage buckets and assigns basic permissions on them to arbitrary users" topics = local.common_topics.storage + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-composer" @@ -422,6 +428,9 @@ locals { description = "Creates a fully functional Google Memorystore (redis) instance" topics = local.common_topics.db owners = ["imrannayer"] + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-module-template" @@ -486,6 +495,9 @@ locals { description = "Creates a Cloud SQL database instance" topics = local.common_topics.db owners = ["isaurabhuttam", "imrannayer"] + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-startup-scripts" From 6f3afa6daa9f096497a08a32657bdbd9d0a4df0e Mon Sep 17 00:00:00 2001 From: Imran Nayer Date: Fri, 13 Sep 2024 22:53:03 -0500 Subject: [PATCH 1191/1371] chore: Updated owner for IAM and PAM module (#2542) Co-authored-by: Bharath KKB --- infra/terraform/test-org/org/locals.tf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index ece551928b8..6f59f0ffd57 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -381,6 +381,7 @@ locals { org = "terraform-google-modules" description = "Manages multiple IAM roles for resources on Google Cloud" topics = local.common_topics.security + owners = ["imrannayer"] }, { name = "terraform-google-jenkins" @@ -601,6 +602,13 @@ locals { owners = ["imrannayer"] topics = join(",", [local.common_topics.compute, local.common_topics.net]) }, + { + name = "terraform-google-pam" + org = "GoogleCloudPlatform" + description = "Deploy Privileged Access Manager" + owners = ["imrannayer", "mgaur10"] + topics = local.common_topics.security + }, { name = "terraform-google-netapp-volumes" org = "GoogleCloudPlatform" From 9b3d1b459a582688c7aa805cbe71293c30e8243c Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 16 Sep 2024 09:20:04 -0700 Subject: [PATCH 1192/1371] chore: update update-tooling versions (#2598) --- .github/workflows/update-tooling.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 77dd7e63e91..5ec3cda811d 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -16,9 +16,9 @@ env: CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" MODULE_SWAPPER_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" TFLINT_BP_PLUGIN_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" - KUBECTL_MINOR: "1.28" + KUBECTL_MINOR: "1.29" KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" - GATOR_MINOR: "3.14" + GATOR_MINOR: "3.17" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" KUSTOMIZE_URL: "https://api.github.com/repos/kubernetes-sigs/kustomize/releases" From 12409877e71224d9919aa3e24eded8d9ce58e9b9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Sep 2024 01:23:35 +0200 Subject: [PATCH 1193/1371] chore(deps): update golangci/golangci-lint docker tag to v1.61.0 (#2601) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 133ba654d71..87fb3fdf74c 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.60.3 +GOLANGCI_VERSION := 1.61.0 .PHONY: docker_go_lint docker_go_lint: From 0214cb2eaa4ec765161cdaaa9f07fad0def2270f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Sep 2024 01:47:43 +0200 Subject: [PATCH 1194/1371] chore(deps): update golangci/golangci-lint docker tag to v1.61.0 (#2600) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index b553bfd1b9f..164195cab50 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.60.3 +GOLANGCI_VERSION := 1.61.0 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From aa020c1f3d397cfa2da534759755ac2a668c4b4d Mon Sep 17 00:00:00 2001 From: Zheng Qin Date: Tue, 17 Sep 2024 20:40:32 -0400 Subject: [PATCH 1195/1371] feat: sort the variables in the same order from input variables.tf file. (#2591) Co-authored-by: Zheng Qin Co-authored-by: Andrew Peabody Co-authored-by: Bharath KKB --- .../int-test/goldens/golden-metadata.yaml | 256 +++++++++--------- cli/bpmetadata/tfconfig.go | 52 +++- cli/bpmetadata/tfconfig_test.go | 45 +++ .../bpmetadata/tf/empty-module/outputs.tf | 37 +++ .../bpmetadata/tf/empty-module/variables.tf | 34 +++ .../bpmetadata/tf/invalid-module/outputs.tf | 37 +++ .../bpmetadata/tf/invalid-module/variables.tf | 34 +++ 7 files changed, 364 insertions(+), 131 deletions(-) create mode 100644 cli/testdata/bpmetadata/tf/empty-module/outputs.tf create mode 100644 cli/testdata/bpmetadata/tf/empty-module/variables.tf create mode 100644 cli/testdata/bpmetadata/tf/invalid-module/outputs.tf create mode 100644 cli/testdata/bpmetadata/tf/invalid-module/variables.tf diff --git a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml index 6059145ef0e..152aeed668d 100644 --- a/cli/bpmetadata/int-test/goldens/golden-metadata.yaml +++ b/cli/bpmetadata/int-test/goldens/golden-metadata.yaml @@ -26,10 +26,70 @@ spec: location: examples/simple_bucket interfaces: variables: + - name: project_id + description: Bucket project id. + varType: string + required: true + - name: prefix + description: Prefix used to generate the bucket name. + varType: string + defaultValue: "" + - name: names + description: Bucket name suffixes. + varType: list(string) + required: true + - name: randomize_suffix + description: Adds an identical, but randomized 4-character suffix to all bucket names + varType: bool + defaultValue: false + - name: location + description: Bucket location. + varType: string + defaultValue: EU + - name: storage_class + description: Bucket storage class. + varType: string + defaultValue: STANDARD + - name: force_destroy + description: Optional map of lowercase unprefixed name => boolean, defaults to false. + varType: map(bool) + defaultValue: {} + - name: versioning + description: Optional map of lowercase unprefixed name => boolean, defaults to false. + varType: map(bool) + defaultValue: {} + - name: encryption_key_names + description: Optional map of lowercase unprefixed name => string, empty strings are ignored. + varType: map(string) + defaultValue: {} + - name: bucket_policy_only + description: Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean + varType: map(bool) + defaultValue: {} + - name: default_event_based_hold + description: Enable event based hold to new objects added to specific bucket. Defaults to false. Map of lowercase unprefixed name => boolean + varType: map(bool) + defaultValue: {} - name: admins description: IAM-style members who will be granted roles/storage.objectAdmin on all buckets. varType: list(string) defaultValue: [] + - name: creators + description: IAM-style members who will be granted roles/storage.objectCreators on all buckets. + varType: list(string) + defaultValue: [] + - name: viewers + description: IAM-style members who will be granted roles/storage.objectViewer on all buckets. + varType: list(string) + defaultValue: [] + - name: hmac_key_admins + description: IAM-style members who will be granted roles/storage.hmacKeyAdmin on all buckets. + varType: list(string) + defaultValue: [] + - name: storage_admins + description: IAM-style members who will be granted roles/storage.admin on all buckets. + varType: list(string) + defaultValue: [] - name: bucket_admins description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket admins. varType: map(string) @@ -38,14 +98,50 @@ spec: description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket creators. varType: map(string) defaultValue: {} + - name: bucket_viewers + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket viewers. + varType: map(string) + defaultValue: {} - name: bucket_hmac_key_admins description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket HMAC Key admins. varType: map(string) defaultValue: {} - - name: bucket_lifecycle_rules - description: Additional lifecycle_rules for specific buckets. Map of lowercase unprefixed name => list of lifecycle rules to configure. + - name: bucket_storage_admins + description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket storage admins. + varType: map(string) + defaultValue: {} + - name: labels + description: Labels to be attached to the buckets + varType: map(string) + defaultValue: {} + - name: folders + description: Map of lowercase unprefixed name => list of top level folder objects. + varType: map(list(string)) + defaultValue: {} + - name: set_admin_roles + description: Grant roles/storage.objectAdmin role to admins and bucket_admins. + varType: bool + defaultValue: false + - name: set_creator_roles + description: Grant roles/storage.objectCreator role to creators and bucket_creators. + varType: bool + defaultValue: false + - name: set_viewer_roles + description: Grant roles/storage.objectViewer role to viewers and bucket_viewers. + varType: bool + defaultValue: false + - name: set_hmac_key_admin_roles + description: Grant roles/storage.hmacKeyAdmin role to hmac_key_admins and bucket_hmac_key_admins. + varType: bool + defaultValue: false + - name: set_storage_admin_roles + description: Grant roles/storage.admin role to storage_admins and bucket_storage_admins. + varType: bool + defaultValue: false + - name: lifecycle_rules + description: List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string. varType: |- - map(set(object({ + set(object({ # Object with keys: # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. @@ -56,70 +152,20 @@ spec: # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. + # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition. + # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition. # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. condition = map(string) - }))) - defaultValue: {} - - name: bucket_policy_only - description: Disable ad-hoc ACLs on specified buckets. Defaults to true. Map of lowercase unprefixed name => boolean - varType: map(bool) - defaultValue: {} - - name: bucket_storage_admins - description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket storage admins. - varType: map(string) - defaultValue: {} - - name: bucket_viewers - description: Map of lowercase unprefixed name => comma-delimited IAM-style per-bucket viewers. - varType: map(string) - defaultValue: {} - - name: cors - description: "Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors" - varType: set(any) - defaultValue: [] - - name: creators - description: IAM-style members who will be granted roles/storage.objectCreators on all buckets. - varType: list(string) - defaultValue: [] - - name: custom_placement_config - description: Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config - varType: any - defaultValue: {} - - name: default_event_based_hold - description: Enable event based hold to new objects added to specific bucket. Defaults to false. Map of lowercase unprefixed name => boolean - varType: map(bool) - defaultValue: {} - - name: encryption_key_names - description: Optional map of lowercase unprefixed name => string, empty strings are ignored. - varType: map(string) - defaultValue: {} - - name: folders - description: Map of lowercase unprefixed name => list of top level folder objects. - varType: map(list(string)) - defaultValue: {} - - name: force_destroy - description: Optional map of lowercase unprefixed name => boolean, defaults to false. - varType: map(bool) - defaultValue: {} - - name: hmac_key_admins - description: IAM-style members who will be granted roles/storage.hmacKeyAdmin on all buckets. - varType: list(string) + })) defaultValue: [] - - name: hmac_service_accounts - description: List of HMAC service accounts to grant access to GCS. - varType: map(string) - defaultValue: {} - - name: labels - description: Labels to be attached to the buckets - varType: map(string) - defaultValue: {} - - name: lifecycle_rules - description: List of lifecycle rules to configure. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule except condition.matches_storage_class should be a comma delimited string. + - name: bucket_lifecycle_rules + description: Additional lifecycle_rules for specific buckets. Map of lowercase unprefixed name => list of lifecycle rules to configure. varType: |- - set(object({ + map(set(object({ # Object with keys: # - type - The type of the action of this Lifecycle Rule. Supported values: Delete and SetStorageClass. # - storage_class - (Required if action type is SetStorageClass) The target Storage Class of objects affected by this Lifecycle Rule. @@ -130,92 +176,46 @@ spec: # - created_before - (Optional) Creation date of an object in RFC 3339 (e.g. 2017-06-13) to satisfy this condition. # - with_state - (Optional) Match to live and/or archived objects. Supported values include: "LIVE", "ARCHIVED", "ANY". # - matches_storage_class - (Optional) Comma delimited string for storage class of objects to satisfy this condition. Supported values include: MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, DURABLE_REDUCED_AVAILABILITY. - # - matches_prefix - (Optional) One or more matching name prefixes to satisfy this condition. - # - matches_suffix - (Optional) One or more matching name suffixes to satisfy this condition. # - num_newer_versions - (Optional) Relevant only for versioned objects. The number of newer versions of an object to satisfy this condition. # - custom_time_before - (Optional) A date in the RFC 3339 format YYYY-MM-DD. This condition is satisfied when the customTime metadata for the object is set to an earlier date than the date used in this lifecycle condition. # - days_since_custom_time - (Optional) The number of days from the Custom-Time metadata attribute after which this condition becomes true. # - days_since_noncurrent_time - (Optional) Relevant only for versioned objects. Number of days elapsed since the noncurrent timestamp of an object. # - noncurrent_time_before - (Optional) Relevant only for versioned objects. The date in RFC 3339 (e.g. 2017-06-13) when the object became nonconcurrent. condition = map(string) - })) + }))) + defaultValue: {} + - name: cors + description: "Set of maps of mixed type attributes for CORS values. See appropriate attribute types here: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#cors" + varType: set(any) defaultValue: [] - - name: location - description: Bucket location. - varType: string - defaultValue: EU - - name: logging - description: Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging - varType: any + - name: website + description: "Map of website values. Supported attributes: main_page_suffix, not_found_page" + varType: map(any) defaultValue: {} - - name: names - description: Bucket name suffixes. - varType: list(string) - required: true - - name: prefix - description: Prefix used to generate the bucket name. - varType: string - defaultValue: "" - - name: project_id - description: Bucket project id. - varType: string - required: true - - name: public_access_prevention - description: Prevents public access to a bucket. Acceptable values are inherited or enforced. If inherited, the bucket uses public access prevention, only if the bucket is subject to the public access prevention organization policy constraint. - varType: string - defaultValue: inherited - - name: randomize_suffix - description: Adds an identical, but randomized 4-character suffix to all bucket names - varType: bool - defaultValue: false - name: retention_policy description: Map of retention policy values. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#retention_policy varType: any defaultValue: {} - - name: set_admin_roles - description: Grant roles/storage.objectAdmin role to admins and bucket_admins. - varType: bool - defaultValue: false - - name: set_creator_roles - description: Grant roles/storage.objectCreator role to creators and bucket_creators. - varType: bool - defaultValue: false + - name: custom_placement_config + description: Map of lowercase unprefixed name => custom placement config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket#custom_placement_config + varType: any + defaultValue: {} + - name: logging + description: Map of lowercase unprefixed name => bucket logging config object. Format is the same as described in provider documentation https://www.terraform.io/docs/providers/google/r/storage_bucket.html#logging + varType: any + defaultValue: {} - name: set_hmac_access description: Set S3 compatible access to GCS. varType: bool defaultValue: false - - name: set_hmac_key_admin_roles - description: Grant roles/storage.hmacKeyAdmin role to hmac_key_admins and bucket_hmac_key_admins. - varType: bool - defaultValue: false - - name: set_storage_admin_roles - description: Grant roles/storage.admin role to storage_admins and bucket_storage_admins. - varType: bool - defaultValue: false - - name: set_viewer_roles - description: Grant roles/storage.objectViewer role to viewers and bucket_viewers. - varType: bool - defaultValue: false - - name: storage_admins - description: IAM-style members who will be granted roles/storage.admin on all buckets. - varType: list(string) - defaultValue: [] - - name: storage_class - description: Bucket storage class. - varType: string - defaultValue: STANDARD - - name: versioning - description: Optional map of lowercase unprefixed name => boolean, defaults to false. - varType: map(bool) - defaultValue: {} - - name: viewers - description: IAM-style members who will be granted roles/storage.objectViewer on all buckets. - varType: list(string) - defaultValue: [] - - name: website - description: "Map of website values. Supported attributes: main_page_suffix, not_found_page" - varType: map(any) + - name: hmac_service_accounts + description: List of HMAC service accounts to grant access to GCS. + varType: map(string) defaultValue: {} + - name: public_access_prevention + description: Prevents public access to a bucket. Acceptable values are inherited or enforced. If inherited, the bucket uses public access prevention, only if the bucket is subject to the public access prevention organization policy constraint. + varType: string + defaultValue: inherited outputs: - name: bucket description: Bucket resource (for single use). diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index d173f104aeb..bc5679ed444 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -54,6 +54,15 @@ var metaSchema = &hcl.BodySchema{ }, } +var variableSchema = &hcl.BodySchema{ + Blocks: []hcl.BlockHeaderSchema{ + { + Type: "variable", + LabelNames: []string{"name"}, + }, + }, +} + var metaBlockSchema = &hcl.BodySchema{ Attributes: []hcl.AttributeSchema{ { @@ -237,13 +246,21 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { variables = append(variables, v) } - // Sort variables - sort.SliceStable(variables, func(i, j int) bool { return variables[i].Name < variables[j].Name }) + // Get the varible orders from tf file. + variableOrders, sortErr := getBlueprintVariableOrders(configPath) + if sortErr != nil { + Log.Info("Failed to get variables orders. Fallback to sort by variable names.", sortErr) + sort.SliceStable(variables, func(i, j int) bool { return variables[i].Name < variables[j].Name }) + } else { + Log.Info("Sort variables by the original input order.") + sort.SliceStable(variables, func(i, j int) bool { + return variableOrders[variables[i].Name] < variableOrders[variables[j].Name] + }) + } var outputs []*BlueprintOutput for _, val := range mod.Outputs { o := getBlueprintOutput(val) - outputs = append(outputs, o) } @@ -256,6 +273,35 @@ func getBlueprintInterfaces(configPath string) (*BlueprintInterface, error) { }, nil } +func getBlueprintVariableOrders(configPath string) (map[string]int, error) { + p := hclparse.NewParser() + variableFile, hclDiags := p.ParseHCLFile(filepath.Join(configPath, "variables.tf")) + err := hasHclErrors(hclDiags) + if hclDiags.HasErrors() { + return nil, err + } + variableContent, _, hclDiags := variableFile.Body.PartialContent(variableSchema) + err = hasHclErrors(hclDiags) + if hclDiags.HasErrors() { + return nil, err + } + variableOrderKeys := make(map[string]int) + for i, block := range variableContent.Blocks { + // We only care about variable blocks. + if block.Type != "variable" { + continue + } + // We expect a single label which is the variable name. + if len(block.Labels) != 1 || len(block.Labels[0]) == 0 { + Log.Info("zheng: called here.") + return nil, fmt.Errorf("Vaiable block has no name.") + } + + variableOrderKeys[block.Labels[0]] = i + } + return variableOrderKeys, nil +} + // build variable func getBlueprintVariable(modVar *tfconfig.Variable) *BlueprintVariable { v := &BlueprintVariable{ diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index 05673ea375d..8752762c6c0 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -368,3 +368,48 @@ func TestTFIncompleteProviderVersions(t *testing.T) { }) } } + +func TestTFVariableSortOrder(t *testing.T) { + tests := []struct { + name string + configPath string + expectOrders map[string]int + expectError bool + }{ + { + name: "Variable order should match tf input", + configPath: "sample-module", + expectOrders: map[string]int{ + "description": 1, + "project_id": 0, + "regional": 2, + }, + expectError: false, + }, + { + name: "Empty variable name should create nil order", + configPath: "empty-module", + expectOrders: map[string]int{}, + expectError: true, + }, + { + name: "No variable name should create nil order", + configPath: "invalid-module", + expectOrders: map[string]int{}, + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := getBlueprintVariableOrders(path.Join(tfTestdataPath, tt.configPath)) + if tt.expectError { + assert.Error(t, err) + assert.Nil(t, got) + } else { + require.NoError(t, err) + assert.Equal(t, got, tt.expectOrders) + } + }) + } +} diff --git a/cli/testdata/bpmetadata/tf/empty-module/outputs.tf b/cli/testdata/bpmetadata/tf/empty-module/outputs.tf new file mode 100644 index 00000000000..49ae9051078 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/empty-module/outputs.tf @@ -0,0 +1,37 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +// This file was automatically generated from a template in ./autogen/main + +output "cluster_id" { + description = "Cluster ID" +} + +output "endpoint" { + sensitive = true + description = "Cluster endpoint" + value = local.cluster_endpoint + depends_on = [ + /* Nominally, the endpoint is populated as soon as it is known to Terraform. + * However, the cluster may not be in a usable state yet. Therefore any + * resources dependent on the cluster being up will fail to deploy. With + * this explicit dependency, dependent resources can wait for the cluster + * to be up. + */ + google_container_cluster.primary, + google_container_node_pool.pools, + ] +} diff --git a/cli/testdata/bpmetadata/tf/empty-module/variables.tf b/cli/testdata/bpmetadata/tf/empty-module/variables.tf new file mode 100644 index 00000000000..3d92e041dac --- /dev/null +++ b/cli/testdata/bpmetadata/tf/empty-module/variables.tf @@ -0,0 +1,34 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +// This file was automatically generated from a template in ./autogen/main + +variable "" { // Empty variable name + description = "The project ID to host the cluster in" + required = false +} + +variable "description" { + description = "The description of the cluster" + type = string + default = "some description" +} + +variable "regional" { + type = bool + description = "Whether is a regional cluster" + default = true +} diff --git a/cli/testdata/bpmetadata/tf/invalid-module/outputs.tf b/cli/testdata/bpmetadata/tf/invalid-module/outputs.tf new file mode 100644 index 00000000000..49ae9051078 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/invalid-module/outputs.tf @@ -0,0 +1,37 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +// This file was automatically generated from a template in ./autogen/main + +output "cluster_id" { + description = "Cluster ID" +} + +output "endpoint" { + sensitive = true + description = "Cluster endpoint" + value = local.cluster_endpoint + depends_on = [ + /* Nominally, the endpoint is populated as soon as it is known to Terraform. + * However, the cluster may not be in a usable state yet. Therefore any + * resources dependent on the cluster being up will fail to deploy. With + * this explicit dependency, dependent resources can wait for the cluster + * to be up. + */ + google_container_cluster.primary, + google_container_node_pool.pools, + ] +} diff --git a/cli/testdata/bpmetadata/tf/invalid-module/variables.tf b/cli/testdata/bpmetadata/tf/invalid-module/variables.tf new file mode 100644 index 00000000000..f0fc8257b26 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/invalid-module/variables.tf @@ -0,0 +1,34 @@ +/** + * Copyright 2022 Google LLC + * + * 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. + */ + +// This file was automatically generated from a template in ./autogen/main + +variable { // No variable name + description = "The project ID to host the cluster in" + required = false +} + +variable "description" { + description = "The description of the cluster" + type = string + default = "some description" +} + +variable "regional" { + type = bool + description = "Whether is a regional cluster" + default = true +} From 1ef06421c3b2116e69d474b1e7fe09ce4c6a43fc Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 19 Sep 2024 09:04:11 -0700 Subject: [PATCH 1196/1371] feat: terraform mutex for parallel lint (#2604) --- .../build/scripts/task_wrapper_scripts/terraform_validate | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate index 42df9ac62b3..172ba205279 100755 --- a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate +++ b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate @@ -21,6 +21,6 @@ set -eu curdir=$(pwd) cd "${1}" -terraform init -backend=false >/dev/null -terraform validate +flock -x /workspace/.terraform.lock -c "terraform init -backend=false >/dev/null" +flock -s /workspace/.terraform.lock -c "terraform validate" cd "$curdir" From 334314ec0a1b0603315f2209a1001aeb5eff1a25 Mon Sep 17 00:00:00 2001 From: Zheng Qin Date: Thu, 19 Sep 2024 12:16:20 -0400 Subject: [PATCH 1197/1371] fix: Remove debug log info from tfconfig (#2603) Co-authored-by: Zheng Qin --- cli/bpmetadata/tfconfig.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index bc5679ed444..d54257b41b3 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -293,7 +293,6 @@ func getBlueprintVariableOrders(configPath string) (map[string]int, error) { } // We expect a single label which is the variable name. if len(block.Labels) != 1 || len(block.Labels[0]) == 0 { - Log.Info("zheng: called here.") return nil, fmt.Errorf("Vaiable block has no name.") } From 0db0e51ed1384ae3904fb708f1acde7278adac3f Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 19 Sep 2024 10:07:02 -0700 Subject: [PATCH 1198/1371] chore: Update Tools to 1.22.11 (#2597) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index d855d44a58d..0678f25a902 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.9.5 +TERRAFORM_VERSION := 1.9.6 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 492.0.0 +CLOUD_SDK_VERSION := 493.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.67.4 +TERRAGRUNT_VERSION := 0.67.9 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.5.1 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.28.13 +KUBECTL_VERSION := 1.29.8 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.53.0 TINKEY_VERSION := 1.7.0 @@ -53,12 +53,12 @@ GOLANGCI_VERSION := 1.61.0 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow -GATOR_VERSION := 3.14.2 +GATOR_VERSION := 3.17.1 OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.10 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.11 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From c4cd2363cfce02a7e559de902f2a005957b5b3f1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 20 Sep 2024 19:08:03 +0200 Subject: [PATCH 1199/1371] chore(deps): update github/codeql-action action to v3.26.7 (#2607) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 54cc25312a4..7a21563a052 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/init@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/autobuild@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/analyze@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0622fdedc43..bb7131b5b8b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: sarif_file: results.sarif From 45559ad3bbb3d56e5942cd5ac415cf3d21f148e0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 20 Sep 2024 19:35:12 +0200 Subject: [PATCH 1200/1371] chore(deps): update go modules (#2595) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 32 +++++++++++++++------------- cli/go.sum | 60 ++++++++++++++++++++++++++-------------------------- 3 files changed, 48 insertions(+), 46 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 164195cab50..f460428f514 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.1 +VERSION=v1.5.2 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 36a399b1f15..95ecf93bb3b 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -2,10 +2,12 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.22 +toolchain go1.22.7 + require ( - cloud.google.com/go/asset v1.20.0 + cloud.google.com/go/asset v1.20.1 cloud.google.com/go/storage v1.43.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.17.0 @@ -33,10 +35,10 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 golang.org/x/oauth2 v0.23.0 golang.org/x/text v0.18.0 - google.golang.org/api v0.196.0 + google.golang.org/api v0.197.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -103,11 +105,11 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.3 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect github.com/googleapis/gax-go/v2 v2.13.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect - github.com/gruntwork-io/terratest v0.47.0 // indirect + github.com/gruntwork-io/terratest v0.47.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -152,7 +154,7 @@ require ( github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect - github.com/tidwall/gjson v1.17.1 // indirect + github.com/tidwall/gjson v1.17.3 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect @@ -175,18 +177,18 @@ require ( go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.26.0 // indirect - golang.org/x/mod v0.20.0 // indirect - golang.org/x/net v0.28.0 // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/mod v0.21.0 // indirect + golang.org/x/net v0.29.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/term v0.23.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect golang.org/x/time v0.6.0 // indirect - golang.org/x/tools v0.24.0 // indirect + golang.org/x/tools v0.25.0 // indirect google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.0 // indirect + google.golang.org/grpc v1.66.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index c42eaa57b08..b13d4e7959a 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -3,8 +3,8 @@ cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= cloud.google.com/go/accesscontextmanager v1.9.0 h1:K0zCbd23A64sdJmOZDaW39dEMB6JVnGz2uycwd8PTu0= cloud.google.com/go/accesscontextmanager v1.9.0/go.mod h1:EmdQRGq5FHLrjGjGTp2X2tlRBvU3LDCUqfnysFYooxQ= -cloud.google.com/go/asset v1.20.0 h1:2kHJKyVUEbuisDjvOK9+XQrvoosEBqsb6yaEzq5gaWY= -cloud.google.com/go/asset v1.20.0/go.mod h1:CT3ME6xNZKsPSvi0lMBPgW3azvRhiurJTFSnNl6ahw8= +cloud.google.com/go/asset v1.20.1 h1:49lRdlLzNoevMrTyqDA1rnmX0eKVjCS8lN4tI1j1z3g= +cloud.google.com/go/asset v1.20.1/go.mod h1:ZrTOIvEqKVZZB9CrGKuKgKJ+WNRrOwsO93GDcHznfec= cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U= cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= @@ -24,8 +24,8 @@ cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502Jw dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.1 h1:IfsF5yta+pslEAWF1QYFSP/3obWsjLQzFyEKJYAhzos= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.1/go.mod h1:Bop47HzdH60K1rPgNRNqBHrBWhhmqCBG9Y4Y5PEn9fE= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2 h1:BNFgz4g1lQ2Gd7V5NJxXm2y6S9mZomvtobuu5iv/u/E= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2/go.mod h1:urFpNnUhNIDDWEbRMRh+UaS5ERWYAHIjIPiUmmlBRkA= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -274,16 +274,16 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0= -github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= +github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= +github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= -github.com/gruntwork-io/terratest v0.47.0 h1:xIy1pT7NbGVlMLDZEHl3+3iSnvffh8tN2pL6idn448c= -github.com/gruntwork-io/terratest v0.47.0/go.mod h1:oywHw1cFKXSYvKPm27U7quZVzDUlA22H2xUrKCe26xM= +github.com/gruntwork-io/terratest v0.47.1 h1:qOaxnL7Su5+KpDHYUN/ek1jn8ImvCKtOkaY4OSMS4tI= +github.com/gruntwork-io/terratest v0.47.1/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4CBERWSCusbJ0d/64= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -479,8 +479,8 @@ github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSW github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= -github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= +github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= @@ -556,11 +556,11 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= -golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -568,8 +568,8 @@ 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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= -golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= 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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -586,8 +586,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -626,16 +626,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -662,16 +662,16 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= -golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= +golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= +golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= 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.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.196.0 h1:k/RafYqebaIJBO3+SMnfEGtFVlvp5vSgqTUF54UN/zg= -google.golang.org/api v0.196.0/go.mod h1:g9IL21uGkYgvQ5BZg6BAtoGJQIm8r6EgaAbpNey5wBE= +google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ= +google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -679,8 +679,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4= -google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0= -google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -688,8 +688,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= -google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= +google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= 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= From c12839a32958844f1d90fa3d53f52bdf626890b0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 20 Sep 2024 20:09:15 +0200 Subject: [PATCH 1201/1371] chore(deps): update github/codeql-action action to v3.26.8 (#2608) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 7a21563a052..4c433706272 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 + uses: github/codeql-action/init@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 + uses: github/codeql-action/autobuild@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 + uses: github/codeql-action/analyze@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index bb7131b5b8b..23c5cbbdbda 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 + uses: github/codeql-action/upload-sarif@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 with: sarif_file: results.sarif From dc164233f5ba5f36daa289956fe16174e840b61a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 23 Sep 2024 21:22:48 +0200 Subject: [PATCH 1202/1371] chore(deps): update peter-evans/create-pull-request action to v7.0.3 (#2611) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 5ec3cda811d..beaa76bc2bc 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -111,7 +111,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@d121e62763d8cc35b5fb1710e887d6e69a52d3a4 # v7.0.2 + uses: peter-evans/create-pull-request@6cd32fd93684475c31847837f87bb135d40a2b79 # v7.0.3 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 17331bbd4633f0f56fc07b67700542f8df43521f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 23 Sep 2024 21:33:20 +0200 Subject: [PATCH 1203/1371] chore(deps): update peter-evans/create-pull-request action to v7.0.5 (#2612) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index beaa76bc2bc..1bfe5d6f934 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -111,7 +111,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@6cd32fd93684475c31847837f87bb135d40a2b79 # v7.0.3 + uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 406eb2be5aa8e46ce571e3bb5442001c3aa6943e Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 24 Sep 2024 08:26:08 -0700 Subject: [PATCH 1204/1371] feat(dev-tools): use distro kubectl (#2606) --- .github/workflows/update-tooling.yml | 7 +---- infra/build/Makefile | 4 +-- infra/build/developer-tools/Dockerfile | 6 ++--- .../developer-tools/build/install_kubectl.sh | 27 ------------------- 4 files changed, 4 insertions(+), 40 deletions(-) delete mode 100755 infra/build/developer-tools/build/install_kubectl.sh diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 1bfe5d6f934..b9d65dcb43b 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -16,8 +16,6 @@ env: CFT_CLI_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" MODULE_SWAPPER_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" TFLINT_BP_PLUGIN_URL: "https://api.github.com/repos/GoogleCloudPlatform/cloud-foundation-toolkit/releases" - KUBECTL_MINOR: "1.29" - KUBECTL_URL: "https://api.github.com/repos/kubernetes/kubernetes/releases" GATOR_MINOR: "3.17" GATOR_URL: "https://api.github.com/repos/open-policy-agent/gatekeeper/releases" GCRANE_URL: "https://api.github.com/repos/google/go-containerregistry/releases/latest" @@ -39,7 +37,7 @@ jobs: run: | PR_UPDATE_BODY="" newline=$'\n' - tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "KUBECTL" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER" "KUSTOMIZE" "TERRAGRUNT" "TFLINT" "GOLANGCI" "TFLINT_BP_PLUGIN") + tools=("TERRAFORM" "CLOUD_SDK" "CFT_CLI" "GATOR" "GCRANE" "KPT" "MODULE_SWAPPER" "KUSTOMIZE" "TERRAGRUNT" "TFLINT" "GOLANGCI" "TFLINT_BP_PLUGIN") for tool in ${tools[@]} do @@ -62,9 +60,6 @@ jobs: elif [ "$tool" == "TFLINT_BP_PLUGIN" ]; then # get latest TFLINT_BP_PLUGIN release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("tflint-ruleset-blueprint"))][0].tag_name' | tr -d "tflint\-ruleset\-blueprint/v") - elif [ "$tool" == "KUBECTL" ]; then - # get latest KUBECTL_MINOR release - LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${KUBECTL_MINOR}'"))][0].tag_name' | tr -d "v") elif [ "$tool" == "GATOR" ]; then # get latest GATOR_MINOR release LATEST_TOOL_VERSION=$(curl -s ${!TOOL_URL} | jq --raw-output '[ .[] | select( .name | contains("'${GATOR_MINOR}'"))][0].tag_name' | tr -d "v") diff --git a/infra/build/Makefile b/infra/build/Makefile index 0678f25a902..60ff2a5c643 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -37,8 +37,6 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.5.1 # Updated by Update Tooling Workflow -KUBECTL_VERSION := 1.29.8 -# Updated by Update Tooling Workflow TFLINT_VERSION := 0.53.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.20 @@ -58,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.11 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.12 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/Dockerfile b/infra/build/developer-tools/Dockerfile index 98982491744..911bf861015 100644 --- a/infra/build/developer-tools/Dockerfile +++ b/infra/build/developer-tools/Dockerfile @@ -62,7 +62,8 @@ RUN apk upgrade --no-cache && \ py3-pygithub \ py3-requests \ ruby-dev \ - go + go \ + kubectl # Add all build scripts ADD ./build/*.sh /build/ @@ -109,9 +110,6 @@ RUN /build/install_kpt.sh ${KPT_VERSION} ARG CFT_CLI_VERSION RUN /build/install_cft_cli.sh ${CFT_CLI_VERSION} -ARG KUBECTL_VERSION -RUN /build/install_kubectl.sh ${KUBECTL_VERSION} - ARG MODULE_SWAPPER_VERSION RUN /build/install_module-swapper.sh ${MODULE_SWAPPER_VERSION} diff --git a/infra/build/developer-tools/build/install_kubectl.sh b/infra/build/developer-tools/build/install_kubectl.sh deleted file mode 100755 index 6ef0fc016a6..00000000000 --- a/infra/build/developer-tools/build/install_kubectl.sh +++ /dev/null @@ -1,27 +0,0 @@ -#! /bin/bash -# Copyright 2019 Google LLC -# -# 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. - -set -e -set -u - -mkdir -p /build/install_kubectl -cd /build/install_kubectl - -KUBECTL_VERSION=$1 - -wget -nv "https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl" -install -o 0 -g 0 -m 0755 kubectl /usr/local/bin/kubectl - -rm -rf /build/install_kubectl From a9c4772bc08201ffc684a7a9c0f65326f94f160f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 24 Sep 2024 18:02:30 +0200 Subject: [PATCH 1205/1371] chore(deps): update module github.com/google/go-github/v64 to v65 (#2609) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 5 +++-- cli/go.sum | 2 ++ 7 files changed, 10 insertions(+), 7 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index f460428f514..bfbe7a55aa1 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.2 +VERSION=v1.5.3 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index a5c77c51c93..d52d7b4ac4e 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v64/github" + "github.com/google/go-github/v65/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index ee9eb3ccf63..c4c778d17b7 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v64/github" + "github.com/google/go-github/v65/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index c4a217ea188..609fe507aaa 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v64/github" + "github.com/google/go-github/v65/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 4548a172617..9deccb3b898 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v64/github" + "github.com/google/go-github/v65/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index 95ecf93bb3b..096181e9ad5 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -1,6 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli -go 1.22 +go 1.22.0 toolchain go1.22.7 @@ -16,7 +16,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v64 v64.0.0 + github.com/google/go-github/v65 v65.0.0 github.com/hashicorp/hcl/v2 v2.22.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 github.com/iancoleman/strcase v0.3.0 @@ -101,6 +101,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-github/v64 v64.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.8 // indirect diff --git a/cli/go.sum b/cli/go.sum index b13d4e7959a..58bfd01ec86 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -259,6 +259,8 @@ 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/go-github/v64 v64.0.0 h1:4G61sozmY3eiPAjjoOHponXDBONm+utovTKbyUb2Qdg= github.com/google/go-github/v64 v64.0.0/go.mod h1:xB3vqMQNdHzilXBiO2I+M7iEFtHf+DP/omBOv6tQzVo= +github.com/google/go-github/v65 v65.0.0 h1:pQ7BmO3DZivvFk92geC0jB0q2m3gyn8vnYPgV7GSLhQ= +github.com/google/go-github/v65 v65.0.0/go.mod h1:DvrqWo5hvsdhJvHd4WyVF9ttANN3BniqjP8uTFMNb60= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= From b6971b7b81b9d8be3a65e04ddd17aa280c74eba6 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 25 Sep 2024 09:58:06 -0700 Subject: [PATCH 1206/1371] chore: upgrade test-org/org to TPGv6 (#2614) --- .../test-org/org/.terraform.lock.hcl | 236 +++++++++--------- .../test-org/org/bigquery_external_data.tf | 2 +- infra/terraform/test-org/org/folders.tf | 6 +- infra/terraform/test-org/org/gsuite.tf | 2 +- infra/terraform/test-org/org/iam.tf | 6 +- infra/terraform/test-org/org/projects.tf | 2 +- infra/terraform/test-org/org/prow.tf | 2 +- infra/terraform/test-org/org/versions.tf | 4 +- 8 files changed, 124 insertions(+), 136 deletions(-) diff --git a/infra/terraform/test-org/org/.terraform.lock.hcl b/infra/terraform/test-org/org/.terraform.lock.hcl index 580bc431d3e..ed08a4c18a2 100644 --- a/infra/terraform/test-org/org/.terraform.lock.hcl +++ b/infra/terraform/test-org/org/.terraform.lock.hcl @@ -2,176 +2,164 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/external" { - version = "2.3.2" + version = "2.3.4" constraints = ">= 1.2.0, >= 2.2.2, < 3.0.0" hashes = [ - "h1:7F6FVQh7OcCgIH3YEJg1SJDSb1CU4qrCtGuI2EBHnL8=", - "zh:020bf652739ecd841d696e6c1b85ce7dd803e9177136df8fb03aa08b87365389", - "zh:0c7ea5a1cbf2e01a8627b8a84df69c93683f39fe947b288e958e72b9d12a827f", - "zh:25a68604c7d6aa736d6e99225051279eaac3a7cf4cab33b00ff7eae7096166f6", - "zh:34f46d82ca34604f6522de3b36eda19b7ad3be1e38947afc6ac31656eab58c8a", - "zh:6959f8f2f3de93e61e0abb90dbec41e28a66daec1607c46f43976bd6da50bcfd", + "h1:XWkRZOLKMjci9/JAtE8X8fWOt7A4u+9mgXSUjc4Wuyo=", + "zh:037fd82cd86227359bc010672cd174235e2d337601d4686f526d0f53c87447cb", + "zh:0ea1db63d6173d01f2fa8eb8989f0809a55135a0d8d424b08ba5dabad73095fa", + "zh:17a4d0a306566f2e45778fbac48744b6fd9c958aaa359e79f144c6358cb93af0", + "zh:298e5408ab17fd2e90d2cd6d406c6d02344fe610de5b7dae943a58b958e76691", + "zh:38ecfd29ee0785fd93164812dcbe0664ebbe5417473f3b2658087ca5a0286ecb", + "zh:59f6a6f31acf66f4ea3667a555a70eba5d406c6e6d93c2c641b81d63261eeace", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:a81e5d65a343da9caa6f1d17ae0aced9faecb36b4f8554bd445dbd4f8be21ab6", - "zh:b1d3f1557214d652c9120862ce27e9a7b61cb5aec5537a28240a5a37bf0b1413", - "zh:b71588d006471ae2d4a7eca2c51d69fd7c5dec9b088315599b794e2ad0cc5e90", - "zh:cfdaae4028b644dff3530c77b49d31f7e6f4c4e2a9e5c8ac6a88e383c80c9e9c", - "zh:dbde15154c2eb38a5f54d0e7646bc67510004179696f3cc2bc1d877cecacf83b", - "zh:fb681b363f83fb5f64dfa6afbf32d100d0facd2a766cf3493b8ddb0398e1b0f7", + "zh:ad0279dfd09d713db0c18469f585e58d04748ca72d9ada83883492e0dd13bd58", + "zh:c69f66fd21f5e2c8ecf7ca68d9091c40f19ad913aef21e3ce23836e91b8cbb5f", + "zh:d4a56f8c48aa86fc8e0c233d56850f5783f322d6336f3bf1916e293246b6b5d4", + "zh:f2b394ebd4af33f343835517e80fc876f79361f4688220833bc3c77655dd2202", + "zh:f31982f29f12834e5d21e010856eddd19d59cd8f449adf470655bfd19354377e", ] } provider "registry.terraform.io/hashicorp/google" { - version = "5.10.0" - constraints = ">= 3.19.0, >= 3.39.0, >= 3.43.0, >= 3.45.0, >= 3.50.0, >= 3.53.0, >= 4.28.0, < 6.0.0" + version = "6.4.0" + constraints = ">= 3.19.0, >= 3.39.0, >= 3.43.0, >= 3.53.0, >= 4.28.0, >= 5.41.0, >= 6.0.0, < 7.0.0" hashes = [ - "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", - "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", - "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", - "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", - "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", - "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", - "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", - "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", - "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", - "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", + "h1:+Xl/dWoAhhZ7GRPZwv7PCpnGa0MFGXyGesd9XxY+GeU=", + "zh:082e343d678da7bc8429c718b0251fc645a76b4d9b96a2cf669de02faa46c721", + "zh:117b781102aef79f63851bcb00e63d999d6b53ca46aac3f992107621c1058e47", + "zh:27bb144de4782ccc718485e033bfc7701ac36a3ee25ec41e4810a777d4fd083d", + "zh:3e0a05de8eb33bebb97947a515ae49760874ce30ff8601c79e8a4a38ca2b2510", + "zh:488777668eb61bdb4d5e949fc1f48a4c07a83f99c749a0b443be4908545bd412", + "zh:56f6a9d817dcb5754f377fae45e0ce0973a4619ee2eb26c8fdb933485ccc89e5", + "zh:5ed4a502834c5596e47969ad9bd646ff8c3c29d8aaaf75dfbd5623a577400a8d", + "zh:a0e971185ea15a62b505ccd8601fd16c1acf2744c51edc5a2cb151690055421c", + "zh:a2bf68d36c9ff401f554292cd4ace96443d1f1fb2dc11f95aa361a62c99dbc03", + "zh:c63f940a43258ba9aa95d7cc99104b12736f5ac76633009a5ad3c39335325a5c", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", - "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", + "zh:fa41ab733169e962cd6f26bdcd295823290905e0afba97d68f12a028066b7cf3", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.10.0" - constraints = ">= 3.19.0, >= 3.43.0, >= 3.50.0, >= 4.11.0, >= 4.28.0, < 6.0.0" + version = "6.4.0" + constraints = ">= 3.19.0, >= 3.43.0, >= 4.11.0, >= 5.41.0, < 7.0.0" hashes = [ - "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", - "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", - "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", - "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", - "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", - "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", - "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", - "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", - "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", - "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", - "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", + "h1:Iw3ruA/vLW0tWeGjtGYOC7Hv8cpQMcBP4nJggDhEwNQ=", + "zh:1999f091bf66ac63fbe23db2052c17cca92bcfadee1f593facba0606383c8dda", + "zh:26c80110366559ac713e8c94b967e27c0aae22a65f87b837b9e224acf4627b04", + "zh:3c847dd2816e297a8237b4951617d11723ee22645a4e10cf4a4ea20935bd53bb", + "zh:3dfbb433e1bf568f9658858f515ae17df41228a7a258920a5545fb19e46ac976", + "zh:422273df0ed56eaf7bb503d569c14b9df221ff0ac3f1d03400fa39b3becb9d32", + "zh:53353c7fa3a03ae7719da4a6f47a30aed0376d4b357d4987620a588474acd59a", + "zh:5d9e536fecf81f71e8ebb47150996b87f84f2ebdbb81e7eee32d490494fc8472", + "zh:9853c86c6f02517fd80c9fc57d2fd116a79fcd658670de9f1bdeeb7e74c2671d", + "zh:df97f71abdfc756ff9a5640d6d0b44ab7b3ce5ed237fc97bc8d77483f01ebed8", + "zh:e07a339f045c7c816ddc9dbb020796e3e3c956d0097ae98a09bdd7835446933e", + "zh:f07842ce106f8528f5c3e69a1b3128328a1ed4c7f16e84b7683d931ac5bcac00", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } provider "registry.terraform.io/hashicorp/kubernetes" { - version = "2.24.0" - constraints = "~> 2.13" + version = "2.32.0" + constraints = ">= 2.13.0, ~> 2.13, < 3.0.0" hashes = [ - "h1:u9lRMCdNXcB5/WQTZVMvGhNliW2pKOzj3SOVbu9yPpg=", - "zh:0ed83ec390a7e75c4990ebce698f14234de2b6204ed9a01cd042bb7ea5f26564", - "zh:195150e4fdab259c70088528006f4604557a051e037ebe8de64e92840f27e40a", - "zh:1a334af55f7a74adf033eb871c9fe7e9e648b41ab84321114ef4ca0e7a34fba6", - "zh:1ef68c3832691de21a61bf1a4e268123f3e08850712eda0b893cac908a0d1bc1", - "zh:44a1c58e5a6646e62b0bad653319c245f3b635dd03554dea2707a38f553e4a52", - "zh:54b5b374c4386f7f05b3fe986f9cb57bde4beab3bdf6ee33444f2b9a81b8af64", - "zh:aa8c2687ab784b72f8cdad8d3c3673dea83b33561e7b3f2d287ef0d06ff2a9e5", - "zh:e6ecba0503052ef3ad49ad56e17b2a73d9b55e30fcb82b040189d281e25e1a3b", - "zh:f105393f6487d3eb1f1636ba42d10c82950ddfef852244c1bca8d526fa23a9a3", - "zh:f17a8f1914ec66d80ccacecd40123362cf093abee3d3aa1ff9f8f687d8736f85", - "zh:f394b12ef01fa0bdf666a43ad152eb3890134f35e635ea056b18771c292de46e", + "h1:HqeU0sZBh+2loFYqPMFx7jJamNUPEykyqJ9+CkMCYE0=", + "zh:0e715d7fb13a8ad569a5fdc937b488590633f6942e986196fdb17cd7b8f7720e", + "zh:495fc23acfe508ed981e60af9a3758218b0967993065e10a297fdbc210874974", + "zh:4b930a8619910ef528bc90dae739cb4236b9b76ce41367281e3bc3cf586101c7", + "zh:5344405fde7b1febf0734052052268ee24e7220818155702907d9ece1c0697c7", + "zh:92ee11e8c23bbac3536df7b124456407f35c6c2468bc0dbab15c3fc9f414bd0e", + "zh:a45488fe8d5bb59c49380f398da5d109a4ac02ebc10824567dabb87f6102fda8", + "zh:a4a0b57cf719a4c91f642436882b7bea24d659c08a5b6f4214ce4fe6a0204caa", + "zh:b7a27a6d11ba956a2d7b0f7389a46ec857ebe46ae3aeee537250e66cac15bf03", + "zh:bf94ce389028b686bfa70a90f536e81bb776c5c20ab70138bbe5c3d0a04c4253", + "zh:d965b2608da0212e26a65a0b3f33c5baae46cbe839196be15d93f70061516908", + "zh:f441fc793d03057a17af8bdca8b26d54916645bc5c148f54e22a54ed39089e83", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.2.2" + version = "3.2.3" constraints = ">= 2.1.0, < 4.0.0" hashes = [ - "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", - "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", - "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", - "zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3", - "zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606", - "zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546", - "zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539", - "zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452", + "h1:+AnORRgFbRO6qqcfaQyeX80W0eX3VmjadjnUFUJTiXo=", + "zh:22d062e5278d872fe7aed834f5577ba0a5afe34a3bdac2b81f828d8d3e6706d2", + "zh:23dead00493ad863729495dc212fd6c29b8293e707b055ce5ba21ee453ce552d", + "zh:28299accf21763ca1ca144d8f660688d7c2ad0b105b7202554ca60b02a3856d3", + "zh:55c9e8a9ac25a7652df8c51a8a9a422bd67d784061b1de2dc9fe6c3cb4e77f2f", + "zh:756586535d11698a216291c06b9ed8a5cc6a4ec43eee1ee09ecd5c6a9e297ac1", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:913a929070c819e59e94bb37a2a253c228f83921136ff4a7aa1a178c7cce5422", - "zh:aa9015926cd152425dbf86d1abdbc74bfe0e1ba3d26b3db35051d7b9ca9f72ae", - "zh:bb04798b016e1e1d49bcc76d62c53b56c88c63d6f2dfe38821afef17c416a0e1", - "zh:c23084e1b23577de22603cff752e59128d83cfecc2e6819edadd8cf7a10af11e", + "zh:9d5eea62fdb587eeb96a8c4d782459f4e6b73baeece4d04b4a40e44faaee9301", + "zh:a6355f596a3fb8fc85c2fb054ab14e722991533f87f928e7169a486462c74670", + "zh:b5a65a789cff4ada58a5baffc76cb9767dc26ec6b45c00d2ec8b1b027f6db4ed", + "zh:db5ab669cf11d0e9f81dc380a6fdfcac437aea3d69109c7aef1a5426639d2d65", + "zh:de655d251c470197bcbb5ac45d289595295acb8f829f6c781d4a75c8c8b7c7dd", + "zh:f5c68199f2e6076bce92a12230434782bf768103a427e9bb9abee99b116af7b5", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.6.0" - constraints = ">= 2.1.0, >= 2.2.0, >= 2.3.1, < 4.0.0" + version = "3.6.3" + constraints = ">= 2.1.0, >= 2.2.0, >= 2.3.1, >= 3.0.0, < 4.0.0" hashes = [ - "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=", - "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d", - "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211", - "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829", - "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d", - "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055", + "h1:Fnaec9vA8sZ8BXVlN3Xn9Jz3zghSETIKg7ch8oXhxno=", + "zh:04ceb65210251339f07cd4611885d242cd4d0c7306e86dda9785396807c00451", + "zh:448f56199f3e99ff75d5c0afacae867ee795e4dfda6cb5f8e3b2a72ec3583dd8", + "zh:4b4c11ccfba7319e901df2dac836b1ae8f12185e37249e8d870ee10bb87a13fe", + "zh:4fa45c44c0de582c2edb8a2e054f55124520c16a39b2dfc0355929063b6395b1", + "zh:588508280501a06259e023b0695f6a18149a3816d259655c424d068982cbdd36", + "zh:737c4d99a87d2a4d1ac0a54a73d2cb62974ccb2edbd234f333abd079a32ebc9e", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17", - "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21", - "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839", - "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0", - "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c", - "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e", + "zh:a357ab512e5ebc6d1fda1382503109766e21bbfdfaa9ccda43d313c122069b30", + "zh:c51bfb15e7d52cc1a2eaec2a903ac2aff15d162c172b1b4c17675190e8147615", + "zh:e0951ee6fa9df90433728b96381fb867e3db98f66f735e0c3e24f8f16903f0ad", + "zh:e3cdcb4e73740621dabd82ee6a37d6cfce7fee2a03d8074df65086760f5cf556", + "zh:eff58323099f1bd9a0bec7cb04f717e7f1b2774c7d612bf7581797e1622613a0", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.10.0" + version = "0.12.1" constraints = ">= 0.5.0" hashes = [ - "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", - "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", - "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", - "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", - "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", + "h1:6BhxSYBJdBBKyuqatOGkuPKVenfx6UmLdiI13Pb3his=", + "zh:090023137df8effe8804e81c65f636dadf8f9d35b79c3afff282d39367ba44b2", + "zh:26f1e458358ba55f6558613f1427dcfa6ae2be5119b722d0b3adb27cd001efea", + "zh:272ccc73a03384b72b964918c7afeb22c2e6be22460d92b150aaf28f29a7d511", + "zh:438b8c74f5ed62fe921bd1078abe628a6675e44912933100ea4fa26863e340e9", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", - "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", - "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", - "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", - "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", - "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", - "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", + "zh:85c8bd8eefc4afc33445de2ee7fbf33a7807bc34eb3734b8eefa4e98e4cddf38", + "zh:98bbe309c9ff5b2352de6a047e0ec6c7e3764b4ed3dfd370839c4be2fbfff869", + "zh:9c7bf8c56da1b124e0e2f3210a1915e778bab2be924481af684695b52672891e", + "zh:d2200f7f6ab8ecb8373cda796b864ad4867f5c255cff9d3b032f666e4c78f625", + "zh:d8c7926feaddfdc08d5ebb41b03445166df8c125417b28d64712dccd9feef136", + "zh:e2412a192fc340c61b373d6c20c9d805d7d3dee6c720c34db23c2a8ff0abd71b", + "zh:e6ac6bba391afe728a099df344dbd6481425b06d61697522017b8f7a59957d44", ] } provider "registry.terraform.io/integrations/github" { - version = "6.0.0" + version = "6.3.0" constraints = "~> 6.0" hashes = [ - "h1:9pdD0wlgzxXpJt41zvAPTBJlSVQjrivGj/PKXonvjdI=", - "h1:C0tQYTi4xfFbv49ohtqcnUS6N3zkieMUlGgVtZa2KNg=", - "h1:IsJlhZqzDak5PE4u/DGPpVuh007NWn6RGL42sZNUZtE=", - "h1:JN9FDT93mtIFE9oTZFJN8iBBkYM4VUBN35H9ejI0pKA=", - "h1:KXepSQ13ED8xN5b74H4KPbWkm03U53F5ey+Htk+SLlk=", - "h1:LeDpsKXQvLh5IPHNj0i5/2j0G3QocWKosoI4Vt+R2GY=", - "h1:YGUmIpK8zBYXssW5vJcQEaRvimE/kxcIifcEDnfThMQ=", - "h1:aPVKHd7sUHWfHO2nY2jUaEGa6YK89KPNCykbWKVMPoA=", - "h1:cHq9ip3mg1zIEXQPvi7Zqb2dQcsQBZlthQWFMaRzbUE=", - "h1:gXBHc4e5JRRkX35POfXbiuBBPNxjQ6KAH0d9QR+jeWk=", - "h1:hgxwIjasPR+EYjFCms6PkTBYYx1+VJJfcOQ5/UjTReQ=", - "h1:jLOsi4Qu5g5D2/n/xg/CljAKCRH9F9paiWRZtyzWR+k=", - "h1:mTMlNk78lzcXTm4kgqCVFETkGIt0RgwQGzwDvI5HjbQ=", - "h1:p86Nsa+Fo29MVOXYG8x+M0MP/R4QS8nl4CUu6Us+/YU=", - "zh:0d12fde69c54d358af3a45cf1610b711e1cd6a5d0be8d71c24729f28faa4a67d", - "zh:501fd9a181bbb1f3e70c3a54463bc16974569dddd1311fdd682c3b893ebc8455", - "zh:69a486e2b2db2f7ff947027e5e245b48a1f71e10955e7243419c15d9d8330d54", - "zh:6f45927d00337db1ebce1da51be1033ffb632b470f901698e12cd51e1d2e16db", - "zh:7734fccb5594f72d8f0bd501f83bbdcc8cf69df27b54631a24d27cff5cead9ab", - "zh:77ffc5ec11754a1c94af468c17a95409a36b2696a4d1f656cef893d931d20b2e", - "zh:79dc9da6aff69825e66869ccdff83ce453f1374ee08152645bc324885e1d1b42", - "zh:7cbf2e8a01133b4ad442854b4baceb97cf4b9f43d69684a35583eaeb998cbc5d", - "zh:84d9788a46f57572a348a52bbbcb347786d967d2169825587b7bf1fc6d052d71", - "zh:a0b89fcce44c397c5f61286351f1752c154e1f238555c4a69a6cd49a57f79d02", - "zh:c2fe95b549239b01ae7956f00279ab6653521843b7009231aec3eb898c8dc395", - "zh:c58aa97ae9b24c260f1f8c7a4c2a7ffc75fe0c2ffa0cb9986d99e855c11a0cbb", - "zh:cb32a38fb412935ee021f70050db07dbe9ec698bcf149275fd3381565eb9b5d1", - "zh:d6ae9b8fa87f3fefe13976504731f661fd93729f8167dd5b7056b1d325b745e4", + "h1:LEs8NwSWwYGHxmbJvGT1w3XeAM6pogAmskY8XavuWDs=", + "zh:04fe3b820fe8c247b98b9d6810b8bb84d3e8ac08054faf450c42489815ef4bfa", + "zh:24096b2d16208d1411a58bdb8df8cd9f0558fb9054ffeb95c4e7e90a9a34f976", + "zh:2b27332adf8d08fbdc08b5f55e87691bce02c311219e6deb39c08753bd93db6d", + "zh:335dd6c2d50fcdce2ef0cc194465fdf9df1f5fdecc805804c78df30a4eb2e11e", + "zh:383a6879565969dbdf5405b651cd870c09c615dbd3df2554e5574d39d161c98c", + "zh:4903038a6bc605f372e1569695db4a2e2862e1fc6cf4faf9e13c5f8f4fa2ed94", + "zh:4cc4dffbee8b28102d38abe855b7440d4f4226261b43fda2ec289b48c3de1537", + "zh:57c30c6fe0b64fa86906700ceb1691562b62f2b1ef0404952aeb4092acb6acb3", + "zh:7bf518396fb00e4f55c406f2ffb5583b43278682a92f0864a0c47e3a74627bbb", + "zh:93c2c5cb90f74ad3c0874b7f7d8a866f28a852f0eda736c6aef8ce65d4061f4d", + "zh:9562a82a6193a2db110fb34d1aceeedb27c0a640058dce9c31b37b17eeb5f4e7", + "zh:ac97f2d111703a219f27fcbf5e89460ea98f9168badcc0913c8b214a37f76814", + "zh:c882af4d33b761ec198cedac212ab1c114d97540119dc97daca38021ab3edd0a", + "zh:c9ffd0a37f07a93af02a1caa90bfbea27a952d3e5badf4aab866ec71cdb184a3", + "zh:fbd1fee2c9df3aa19cf8851ce134dea6e45ea01cb85695c1726670c285797e25", ] } diff --git a/infra/terraform/test-org/org/bigquery_external_data.tf b/infra/terraform/test-org/org/bigquery_external_data.tf index ea7cd36a3a4..e70eb7f982d 100644 --- a/infra/terraform/test-org/org/bigquery_external_data.tf +++ b/infra/terraform/test-org/org/bigquery_external_data.tf @@ -21,7 +21,7 @@ resource "google_folder" "ci_bq_external_data_folder" { module "ci_bq_external_data_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 14.0" + version = "~> 17.0" name = "ci-bq-external-data-project" project_id = "ci-bq-external-data-project" diff --git a/infra/terraform/test-org/org/folders.tf b/infra/terraform/test-org/org/folders.tf index 89c77ef20b2..d23ccb65f24 100644 --- a/infra/terraform/test-org/org/folders.tf +++ b/infra/terraform/test-org/org/folders.tf @@ -16,7 +16,7 @@ module "folders-root" { source = "terraform-google-modules/folders/google" - version = "~> 4.0" + version = "~> 5.0" parent = "organizations/${local.org_id}" @@ -30,7 +30,7 @@ module "folders-root" { module "folders-ci" { source = "terraform-google-modules/folders/google" - version = "~> 4.0" + version = "~> 5.0" parent = "folders/${replace(local.folders["ci-projects"], "folders/", "")}" @@ -41,7 +41,7 @@ module "folders-ci" { module "bpt_ci_folder" { source = "terraform-google-modules/folders/google" - version = "~> 4.0" + version = "~> 5.0" parent = "folders/${replace(local.folders["ci-projects"], "folders/", "")}" names = ["ci-bpt"] diff --git a/infra/terraform/test-org/org/gsuite.tf b/infra/terraform/test-org/org/gsuite.tf index 56928b92b92..fc8e7f24066 100644 --- a/infra/terraform/test-org/org/gsuite.tf +++ b/infra/terraform/test-org/org/gsuite.tf @@ -50,7 +50,7 @@ resource "google_folder" "ci_gsuite_sa_folder" { module "ci_gsuite_sa_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 14.0" + version = "~> 17.0" name = "ci-gsuite-sa-project" project_id = "ci-gsuite-sa-project" diff --git a/infra/terraform/test-org/org/iam.tf b/infra/terraform/test-org/org/iam.tf index a073006b5b0..e0644db7c82 100644 --- a/infra/terraform/test-org/org/iam.tf +++ b/infra/terraform/test-org/org/iam.tf @@ -17,7 +17,7 @@ module "admin_bindings" { source = "terraform-google-modules/iam/google//modules/folders_iam" - version = "~> 7.4" + version = "~> 8.0" folders = [local.folders["ci-projects"]] @@ -38,7 +38,7 @@ module "admin_bindings" { module "ci_bindings" { source = "terraform-google-modules/iam/google//modules/folders_iam" - version = "~> 7.4" + version = "~> 8.0" folders = [local.folders["ci-projects"]] @@ -59,7 +59,7 @@ module "ci_bindings" { module "ci_folders_folder_bindings" { source = "terraform-google-modules/iam/google//modules/folders_iam" - version = "~> 7.4" + version = "~> 8.0" folders = [local.ci_folders["ci-folders"]] diff --git a/infra/terraform/test-org/org/projects.tf b/infra/terraform/test-org/org/projects.tf index 4919c8bf45f..64f764aad14 100644 --- a/infra/terraform/test-org/org/projects.tf +++ b/infra/terraform/test-org/org/projects.tf @@ -16,7 +16,7 @@ module "ci_media_cdn_vod_project" { source = "terraform-google-modules/project-factory/google" - version = "~> 14.0" + version = "~> 17.0" name = "ci-media-cdn-vod-project" project_id = "ci-media-cdn-vod-project" diff --git a/infra/terraform/test-org/org/prow.tf b/infra/terraform/test-org/org/prow.tf index a87a83fa525..515b2ad0696 100644 --- a/infra/terraform/test-org/org/prow.tf +++ b/infra/terraform/test-org/org/prow.tf @@ -36,7 +36,7 @@ provider "kubernetes" { module "prow-int-sa-wi" { source = "terraform-google-modules/kubernetes-engine/google//modules/workload-identity" - version = "~> 29.0" + version = "~> 33.0" name = "int-test-sa" namespace = local.test_ns project_id = local.prow_project_id diff --git a/infra/terraform/test-org/org/versions.tf b/infra/terraform/test-org/org/versions.tf index 7a4b47464e8..98cf4acd4e3 100644 --- a/infra/terraform/test-org/org/versions.tf +++ b/infra/terraform/test-org/org/versions.tf @@ -23,11 +23,11 @@ terraform { } google = { source = "hashicorp/google" - version = ">= 3.19, < 6" + version = ">= 3.19, < 7" } google-beta = { source = "hashicorp/google-beta" - version = ">= 3.19, < 6" + version = ">= 3.19, < 7" } null = { source = "hashicorp/null" From 24d30aa605631dbec902d3e4dba9deeca8fd6946 Mon Sep 17 00:00:00 2001 From: g-swap <141994902+g-swap@users.noreply.github.com> Date: Thu, 26 Sep 2024 00:40:03 +0530 Subject: [PATCH 1207/1371] chore: Add g-swap to kms-solutions repo (#2616) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 6f59f0ffd57..9dc44177113 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -899,7 +899,7 @@ locals { name = "kms-solutions" org = "GoogleCloudPlatform" description = "Store Cloud KMS scripts, artifacts, code samples, and more." - owners = ["tdbhacks", "erlanderlo"] + owners = ["tdbhacks", "erlanderlo", "g-swap"] lint_env = { ENABLE_BPMETADATA = "1" } From 9907e7f1b69c9612ac39d38f3b5e810e98d09ac0 Mon Sep 17 00:00:00 2001 From: Will Yardley Date: Wed, 25 Sep 2024 15:04:50 -0700 Subject: [PATCH 1208/1371] refactor: use `-chdir` in terraform_validate wrapper (#2617) --- infra/build/Makefile | 2 +- .../build/scripts/task_wrapper_scripts/terraform_validate | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 60ff2a5c643..a5e0919bb5f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.12 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.13 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate index 172ba205279..bd57e5a6adc 100755 --- a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate +++ b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate @@ -19,8 +19,5 @@ # files to validate. This directory is assumed to be a root module. set -eu -curdir=$(pwd) -cd "${1}" -flock -x /workspace/.terraform.lock -c "terraform init -backend=false >/dev/null" -flock -s /workspace/.terraform.lock -c "terraform validate" -cd "$curdir" +flock -x /workspace/.terraform.lock -c "terraform init -compact-warnings -chdir=$1 -backend=false >/dev/null" +flock -s /workspace/.terraform.lock -c "terraform -chdir=$1 validate" From cce4a74669a3f6905aeb2c48352a4b0b895ddd57 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 25 Sep 2024 16:00:22 -0700 Subject: [PATCH 1209/1371] Revert "refactor: use `-chdir` in terraform_validate wrapper" (#2624) --- infra/build/Makefile | 2 +- .../build/scripts/task_wrapper_scripts/terraform_validate | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index a5e0919bb5f..60ff2a5c643 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.13 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.12 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate index bd57e5a6adc..172ba205279 100755 --- a/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate +++ b/infra/build/developer-tools/build/scripts/task_wrapper_scripts/terraform_validate @@ -19,5 +19,8 @@ # files to validate. This directory is assumed to be a root module. set -eu -flock -x /workspace/.terraform.lock -c "terraform init -compact-warnings -chdir=$1 -backend=false >/dev/null" -flock -s /workspace/.terraform.lock -c "terraform -chdir=$1 validate" +curdir=$(pwd) +cd "${1}" +flock -x /workspace/.terraform.lock -c "terraform init -backend=false >/dev/null" +flock -s /workspace/.terraform.lock -c "terraform validate" +cd "$curdir" From ac6615aa8bba86c229fe6d935ef0a9ed81d893ba Mon Sep 17 00:00:00 2001 From: Will Yardley Date: Thu, 26 Sep 2024 09:16:01 -0700 Subject: [PATCH 1210/1371] fix: avoid setting `DELETE_AT_EXIT` multiple times (#2619) --- infra/build/Makefile | 2 +- .../build/scripts/task_helper_functions.sh | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 60ff2a5c643..a5e0919bb5f 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.12 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.13 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/scripts/task_helper_functions.sh b/infra/build/developer-tools/build/scripts/task_helper_functions.sh index 5d4342ce7e6..f4f40dc8745 100755 --- a/infra/build/developer-tools/build/scripts/task_helper_functions.sh +++ b/infra/build/developer-tools/build/scripts/task_helper_functions.sh @@ -18,7 +18,7 @@ # setup_trap_handler() and used by maketemp() finish() { if [[ -n "${DELETE_AT_EXIT:-}" ]]; then - rm -rf "${DELETE_AT_EXIT}" + rm -rf "$DELETE_AT_EXIT" fi } @@ -27,7 +27,10 @@ finish() { # for use with maketemp() to automatically clean up temporary files, especially # those used to store credentials. setup_trap_handler() { - readonly DELETE_AT_EXIT="$(mktemp -d)" + if [[ -z "${DELETE_AT_EXIT+x}" ]]; then + DELETE_AT_EXIT="$(mktemp -d)" + readonly DELETE_AT_EXIT + fi trap finish EXIT } @@ -152,8 +155,8 @@ function lint_docker() { # This function creates TF_PLUGIN_CACHE_DIR if TF_PLUGIN_CACHE_DIR envvar is set function init_tf_plugin_cache() { - if [[ ! -z "${TF_PLUGIN_CACHE_DIR}" ]]; then - mkdir -p ${TF_PLUGIN_CACHE_DIR} + if [[ -n "$TF_PLUGIN_CACHE_DIR" ]]; then + mkdir -p "$TF_PLUGIN_CACHE_DIR" fi } @@ -237,7 +240,7 @@ check_whitespace() { local rc echo "Checking for trailing whitespace" find_files . -print \ - | grep -v -E '\.(pyc|png|gz|tfvars|mp4|zip|ico|jar|parquet|pb|index)$' \ + | grep -v -E '\.(pyc|png|gz|swp|tfvars|mp4|zip|ico|jar|parquet|pb|index)$' \ | compat_xargs grep -H -n '[[:blank:]]$' rc=$? if [[ ${rc} -eq 0 ]]; then @@ -519,9 +522,9 @@ function fix_headers() { YEAR=$(date +'%Y') if [ $# -eq 0 ] then - find_files . for_header_check -type f -print0 | compat_xargs -0 addlicense -y $YEAR + find_files . for_header_check -type f -print0 | compat_xargs -0 addlicense -y "$YEAR" else - addlicense -y $YEAR "$@" + addlicense -y "$YEAR" "$@" fi } From d2150519dace7936b97b927742b1b798005654ce Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 26 Sep 2024 18:23:48 +0200 Subject: [PATCH 1211/1371] fix(deps): update module google.golang.org/api to v0.198.0 (#2627) --- infra/utils/fbf/go.mod | 8 ++++---- infra/utils/fbf/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 5e44bc6f131..3fc8f9c888f 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,13 +6,13 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.197.0 + google.golang.org/api v0.198.0 ) require ( - cloud.google.com/go/auth v0.9.3 // indirect + cloud.google.com/go/auth v0.9.4 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect - cloud.google.com/go/compute/metadata v0.5.0 // indirect + cloud.google.com/go/compute/metadata v0.5.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -40,7 +40,7 @@ require ( golang.org/x/term v0.24.0 // indirect golang.org/x/text v0.18.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.1 // indirect + google.golang.org/grpc v1.66.2 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 0db0a8ab46a..8f3e2047455 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,10 +1,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U= -cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk= +cloud.google.com/go/auth v0.9.4 h1:DxF7imbEbiFu9+zdKC6cKBko1e8XeJnipNqIbWZ+kDI= +cloud.google.com/go/auth v0.9.4/go.mod h1:SHia8n6//Ya940F1rLimhJCjjx7KE17t0ctFEci3HkA= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= -cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= -cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +cloud.google.com/go/compute/metadata v0.5.1 h1:NM6oZeZNlYjiwYje+sYFjEpP0Q0zCan1bmQW/KmIrGs= +cloud.google.com/go/compute/metadata v0.5.1/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM= @@ -135,8 +135,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ= -google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw= +google.golang.org/api v0.198.0 h1:OOH5fZatk57iN0A7tjJQzt6aPfYQ1JiWkt1yGseazks= +google.golang.org/api v0.198.0/go.mod h1:/Lblzl3/Xqqk9hw/yS97TImKTUwnf1bv89v7+OagJzc= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -152,8 +152,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= -google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= +google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= 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= From 01487f0372f49b9e9f554a79ead3fa7356995a5a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 26 Sep 2024 09:27:13 -0700 Subject: [PATCH 1212/1371] chore: update github provider v6.3 (#2621) --- .../test-org/github/.terraform.lock.hcl | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 867a2a1754e..6ab2bbedc79 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,23 +2,24 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "6.0.0" + version = "6.3.0" constraints = "~> 6.0" hashes = [ - "h1:jLOsi4Qu5g5D2/n/xg/CljAKCRH9F9paiWRZtyzWR+k=", - "zh:0d12fde69c54d358af3a45cf1610b711e1cd6a5d0be8d71c24729f28faa4a67d", - "zh:501fd9a181bbb1f3e70c3a54463bc16974569dddd1311fdd682c3b893ebc8455", - "zh:69a486e2b2db2f7ff947027e5e245b48a1f71e10955e7243419c15d9d8330d54", - "zh:6f45927d00337db1ebce1da51be1033ffb632b470f901698e12cd51e1d2e16db", - "zh:7734fccb5594f72d8f0bd501f83bbdcc8cf69df27b54631a24d27cff5cead9ab", - "zh:77ffc5ec11754a1c94af468c17a95409a36b2696a4d1f656cef893d931d20b2e", - "zh:79dc9da6aff69825e66869ccdff83ce453f1374ee08152645bc324885e1d1b42", - "zh:7cbf2e8a01133b4ad442854b4baceb97cf4b9f43d69684a35583eaeb998cbc5d", - "zh:84d9788a46f57572a348a52bbbcb347786d967d2169825587b7bf1fc6d052d71", - "zh:a0b89fcce44c397c5f61286351f1752c154e1f238555c4a69a6cd49a57f79d02", - "zh:c2fe95b549239b01ae7956f00279ab6653521843b7009231aec3eb898c8dc395", - "zh:c58aa97ae9b24c260f1f8c7a4c2a7ffc75fe0c2ffa0cb9986d99e855c11a0cbb", - "zh:cb32a38fb412935ee021f70050db07dbe9ec698bcf149275fd3381565eb9b5d1", - "zh:d6ae9b8fa87f3fefe13976504731f661fd93729f8167dd5b7056b1d325b745e4", + "h1:LEs8NwSWwYGHxmbJvGT1w3XeAM6pogAmskY8XavuWDs=", + "zh:04fe3b820fe8c247b98b9d6810b8bb84d3e8ac08054faf450c42489815ef4bfa", + "zh:24096b2d16208d1411a58bdb8df8cd9f0558fb9054ffeb95c4e7e90a9a34f976", + "zh:2b27332adf8d08fbdc08b5f55e87691bce02c311219e6deb39c08753bd93db6d", + "zh:335dd6c2d50fcdce2ef0cc194465fdf9df1f5fdecc805804c78df30a4eb2e11e", + "zh:383a6879565969dbdf5405b651cd870c09c615dbd3df2554e5574d39d161c98c", + "zh:4903038a6bc605f372e1569695db4a2e2862e1fc6cf4faf9e13c5f8f4fa2ed94", + "zh:4cc4dffbee8b28102d38abe855b7440d4f4226261b43fda2ec289b48c3de1537", + "zh:57c30c6fe0b64fa86906700ceb1691562b62f2b1ef0404952aeb4092acb6acb3", + "zh:7bf518396fb00e4f55c406f2ffb5583b43278682a92f0864a0c47e3a74627bbb", + "zh:93c2c5cb90f74ad3c0874b7f7d8a866f28a852f0eda736c6aef8ce65d4061f4d", + "zh:9562a82a6193a2db110fb34d1aceeedb27c0a640058dce9c31b37b17eeb5f4e7", + "zh:ac97f2d111703a219f27fcbf5e89460ea98f9168badcc0913c8b214a37f76814", + "zh:c882af4d33b761ec198cedac212ab1c114d97540119dc97daca38021ab3edd0a", + "zh:c9ffd0a37f07a93af02a1caa90bfbea27a952d3e5badf4aab866ec71cdb184a3", + "zh:fbd1fee2c9df3aa19cf8851ce134dea6e45ea01cb85695c1726670c285797e25", ] } From 5f3baf400b76964cc9e1a40506e8bd4d6ff46bef Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 26 Sep 2024 19:00:26 +0200 Subject: [PATCH 1213/1371] fix(deps): update module google.golang.org/api to v0.199.0 (#2628) --- infra/utils/fbf/go.mod | 8 ++++---- infra/utils/fbf/go.sum | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 3fc8f9c888f..5716a50f543 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,13 +6,13 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.198.0 + google.golang.org/api v0.199.0 ) require ( - cloud.google.com/go/auth v0.9.4 // indirect + cloud.google.com/go/auth v0.9.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect - cloud.google.com/go/compute/metadata v0.5.1 // indirect + cloud.google.com/go/compute/metadata v0.5.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -40,7 +40,7 @@ require ( golang.org/x/term v0.24.0 // indirect golang.org/x/text v0.18.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.2 // indirect + google.golang.org/grpc v1.67.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 8f3e2047455..36f2aeae729 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,10 +1,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.9.4 h1:DxF7imbEbiFu9+zdKC6cKBko1e8XeJnipNqIbWZ+kDI= -cloud.google.com/go/auth v0.9.4/go.mod h1:SHia8n6//Ya940F1rLimhJCjjx7KE17t0ctFEci3HkA= +cloud.google.com/go/auth v0.9.5 h1:4CTn43Eynw40aFVr3GpPqsQponx2jv0BQpjvajsbbzw= +cloud.google.com/go/auth v0.9.5/go.mod h1:Xo0n7n66eHyOWWCnitop6870Ilwo3PiZyodVkkH1xWM= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= -cloud.google.com/go/compute/metadata v0.5.1 h1:NM6oZeZNlYjiwYje+sYFjEpP0Q0zCan1bmQW/KmIrGs= -cloud.google.com/go/compute/metadata v0.5.1/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= +cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM= @@ -135,16 +135,16 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.198.0 h1:OOH5fZatk57iN0A7tjJQzt6aPfYQ1JiWkt1yGseazks= -google.golang.org/api v0.198.0/go.mod h1:/Lblzl3/Xqqk9hw/yS97TImKTUwnf1bv89v7+OagJzc= +google.golang.org/api v0.199.0 h1:aWUXClp+VFJmqE0JPvpZOK3LDQMyFKYIow4etYd9qxs= +google.golang.org/api v0.199.0/go.mod h1:ohG4qSztDJmZdjK/Ar6MhbAmb/Rpi4JHOqagsh90K28= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= -google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY= -google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -152,8 +152,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw= +google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= 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= From f9b4d6fadfd215850cfb4c68b5df27c2fbb0a624 Mon Sep 17 00:00:00 2001 From: Will Yardley Date: Thu, 26 Sep 2024 11:00:22 -0700 Subject: [PATCH 1214/1371] docs(blueprint-test): update notes in README (#2626) --- infra/blueprint-test/README.md | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/infra/blueprint-test/README.md b/infra/blueprint-test/README.md index 8043262dd2e..b58ea77573c 100644 --- a/infra/blueprint-test/README.md +++ b/infra/blueprint-test/README.md @@ -9,14 +9,14 @@ Apart from the necessity of including a testing framework as part of our GCP blu Considering the above, our test framework has been developed (details in the following sections) with backward compatibility to allow for current tests to keep functioning. -*Note: If you have a question about the test framework, feel free to ask it on our user group. +> [!NOTE] +> If you have a question about the test framework, feel free to ask it on our user group. Feature requests can also be submitted as Issues.* # 2. Framework Concepts -``` -Note: The best reference documentation for the framework is the [autogenerated documentation](https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test). -``` +> [!NOTE] +> The best reference documentation for the framework is the [autogenerated documentation](https://pkg.go.dev/github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test). The test framework uses Golang with the testing package at its core to allow for creation and setup of GCP blueprints integration tests. @@ -125,16 +125,12 @@ module "mysql-db" { } ``` -``` -Note: -Variables defined in the example module’s variables (normally variables.tf) configuration can be set 1) from -wrapping modules calling the example module (e.g. fixtures) or 2) using environment variables by prefixing -the environment variable with “TF_VAR”. - -E.g. to set the project_id variable (above), setting the value in a “TF_VAR_project_id” environment variable -would automatically populate its value upon execution. This is illustrated the file +> [!NOTE] +> Variables defined in the example module’s variables (normally variables.tf) configuration can be set 1) from wrapping modules calling the example module (e.g. fixtures) or 2) using environment variables by prefixing the environment variable with `TF_VAR`. +> +> E.g. to set the project_id variable (above), setting the value in a `TF_VAR_project_id` environment variable +> would automatically populate its value upon execution. This is illustrated the file `test/setup/outputs.tf` where the `project_id` is being exported as an env variable. -``` #### 3.1.1.2 Output variables for the test Upon successful execution of your example module, you will most likely need outputs for resources being provisioned to validate and assert in your test. This is done using outputs in Terraform. @@ -255,7 +251,8 @@ By default, tests go through 4 stages above. You can also explicitly run individ ## 4.1 Test prerequisites In order for the test to execute, certain prerequisite resources and components need to be in place. These can be set up using the TF modules under `test/setup`. Running `terraform apply` in this directory will set up all resources required for the test. -> Note: Output values from `test/setup` are automatically loaded as Terraform environment variables and are available to both auto discovered and custom/explicit tests as inputs. This is also illustrated in the [Create the example configuration - Step 4](https://github.com/g-awmalik/cloud-foundation-toolkit/tree/feat/add-bp-test-doc/infra/blueprint-test#3111-create-the-example-configuration) above where the `project_id` variable output by the `test/setup` is consumed as a variable for the example. +> [!NOTE] +> Output values from `test/setup` are automatically loaded as Terraform environment variables and are available to both auto discovered and custom/explicit tests as inputs. This is also illustrated in the [Create the example configuration - Step 4](https://github.com/g-awmalik/cloud-foundation-toolkit/tree/feat/add-bp-test-doc/infra/blueprint-test#3111-create-the-example-configuration) above where the `project_id` variable output by the `test/setup` is consumed as a variable for the example. ## 4.2 Default and stage specific execution @@ -323,9 +320,9 @@ This section shows the execution for auto-discovered tests and the output illust 4. Beginning of `verify` stage - ``` - Note: this illustration is from the 2nd test case (mssql-public) that made it through the apply stage successfully. - ``` +> [!NOTE] +> this illustration is from the 2nd test case (mssql-public) that made it through the apply stage successfully. + ![4](https://user-images.githubusercontent.com/21246369/131234120-6a3bdb62-0437-4d93-a1b7-2ef7b0191d40.jpg) This illustrates the execution of the verify stage where TF plan is executed to refresh the TF state and confirm no permadiffs occur and all resources were successfully provisioned. From 51dc21f17a512096e46834ece5e5f44a6cf6057e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 26 Sep 2024 22:32:03 +0200 Subject: [PATCH 1215/1371] fix(deps): update module sigs.k8s.io/kustomize/kyaml to v0.18.0 (#2629) Co-authored-by: Andrew Peabody --- go.work | 2 +- infra/blueprint-test/go.mod | 10 ++++------ infra/blueprint-test/go.sum | 16 ++++++++-------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/go.work b/go.work index a2e06c98acc..b46bf6b4bb5 100644 --- a/go.work +++ b/go.work @@ -1,4 +1,4 @@ -go 1.22.2 +go 1.22.7 use ( ./cli diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index e56a45a1ce5..a8602836d2a 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -1,8 +1,6 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test -go 1.22 - -toolchain go1.22.7 +go 1.22.7 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d @@ -16,7 +14,7 @@ require ( github.com/tidwall/gjson v1.17.3 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.21.0 - sigs.k8s.io/kustomize/kyaml v0.17.2 + sigs.k8s.io/kustomize/kyaml v0.18.0 ) require ( @@ -46,7 +44,7 @@ require ( github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gruntwork-io/go-commons v0.17.1 // indirect @@ -90,7 +88,7 @@ require ( golang.org/x/net v0.23.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.18.0 // indirect + golang.org/x/sys v0.21.0 // indirect golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 7537b06bf27..19807bbaffd 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -355,8 +355,8 @@ github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= @@ -474,8 +474,8 @@ github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -739,8 +739,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= @@ -1090,8 +1090,8 @@ 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/kyaml v0.17.2 h1:+AzvoJUY0kq4QAhH/ydPHHMRLijtUKiyVyh7fOSshr0= -sigs.k8s.io/kustomize/kyaml v0.17.2/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= +sigs.k8s.io/kustomize/kyaml v0.18.0 h1:OAsBL2NzDLu3X7t4HmdIB7GdRTePai4whzaoOJw+C/E= +sigs.k8s.io/kustomize/kyaml v0.18.0/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From 925bd48c99b1e3aed7d809f50bf6af09e33862ef Mon Sep 17 00:00:00 2001 From: Jieyu Tian Date: Tue, 1 Oct 2024 12:42:00 -0400 Subject: [PATCH 1216/1371] feat: Add a command to automatically generate type info for output in metadata file (#2602) --- cli/bpmetadata/cmd.go | 26 ++- cli/bpmetadata/parser/state_parser.go | 64 +++++++ cli/bpmetadata/parser/state_parser_test.go | 177 ++++++++++++++++++ cli/bpmetadata/tfconfig.go | 63 +++++++ cli/bpmetadata/tfconfig_test.go | 101 +++++++++- .../interfaces_without_types_metadata.yaml | 14 ++ .../tf/sample-module/terraform.tfstate | 25 +++ 7 files changed, 461 insertions(+), 9 deletions(-) create mode 100644 cli/bpmetadata/parser/state_parser.go create mode 100644 cli/bpmetadata/parser/state_parser_test.go create mode 100644 cli/testdata/bpmetadata/metadata/interfaces_without_types_metadata.yaml create mode 100644 cli/testdata/bpmetadata/tf/sample-module/terraform.tfstate diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 5430a2bf3a3..a288a03f264 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -17,12 +17,13 @@ import ( ) var mdFlags struct { - path string - nested bool - force bool - display bool - validate bool - quiet bool + path string + nested bool + force bool + display bool + validate bool + quiet bool + genOutputType bool } const ( @@ -49,6 +50,7 @@ func init() { Cmd.Flags().BoolVar(&mdFlags.nested, "nested", true, "Flag for generating metadata for nested blueprint, if any.") Cmd.Flags().BoolVarP(&mdFlags.validate, "validate", "v", false, "Validate metadata against the schema definition.") Cmd.Flags().BoolVarP(&mdFlags.quiet, "quiet", "q", false, "Run in quiet mode suppressing all prompts.") + Cmd.Flags().BoolVarP(&mdFlags.genOutputType, "generate-output-type", "g", false, "Automatically generate type field for outputs.") } var Cmd = &cobra.Command{ @@ -148,6 +150,14 @@ func generateMetadataForBpPath(bpPath string) error { return fmt.Errorf("error creating metadata for blueprint at path: %s. Details: %w", bpPath, err) } + // If the flag is set, update output types + if mdFlags.genOutputType { + err = updateOutputTypes(bpPath, bpMetaObj.Spec.Interfaces) + if err != nil { + return fmt.Errorf("error updating output types: %w", err) + } + } + // write core metadata to disk err = WriteMetadata(bpMetaObj, bpPath, metadataFileName) if err != nil { @@ -243,8 +253,8 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* return nil, fmt.Errorf("error creating blueprint interfaces: %w", err) } - // Merge existing connections (if any) into the newly generated interfaces - mergeExistingConnections(bpMetadataObj.Spec.Interfaces, existingInterfaces) + // Merge existing connections (if any) into the newly generated interfaces + mergeExistingConnections(bpMetadataObj.Spec.Interfaces, existingInterfaces) // get blueprint requirements rolesCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfRolesFileName) diff --git a/cli/bpmetadata/parser/state_parser.go b/cli/bpmetadata/parser/state_parser.go new file mode 100644 index 00000000000..42d4ad76565 --- /dev/null +++ b/cli/bpmetadata/parser/state_parser.go @@ -0,0 +1,64 @@ +package parser + +import ( + "bytes" + "encoding/json" + "fmt" + + "google.golang.org/protobuf/types/known/structpb" + + tfjson "github.com/hashicorp/terraform-json" + "github.com/zclconf/go-cty/cty" +) + +func ParseOutputTypesFromState(stateData []byte) (map[string]*structpb.Value, error) { + + var state tfjson.State + + // Unmarshal the state data into tfjson.State + err := json.Unmarshal(stateData, &state) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal state data: %w", err) + } + + outputTypeMap := make(map[string]*structpb.Value) + for name, output := range state.Values.Outputs { + pbValue, err := convertOutputTypeToStructpb(output) + if err != nil { + return nil, fmt.Errorf("failed to convert output %q to structpb.Value: %w", name, err) + } + outputTypeMap[name] = pbValue + } + + return outputTypeMap, nil +} + +func convertOutputTypeToStructpb(output *tfjson.StateOutput) (*structpb.Value, error) { + // Handle nil values explicitly + if output.Value == nil { + return structpb.NewNullValue(), nil + } + + // Handle cases where output.Type is NilType + if output.Type == cty.NilType { + return structpb.NewNullValue(), nil + } + + // Marshal the output value to JSON + var buf bytes.Buffer + enc := json.NewEncoder(&buf) + enc.SetEscapeHTML(false) + err := enc.Encode(output.Type) + if err != nil { + return nil, fmt.Errorf("failed to marshal output type to JSON: %w", err) + } + + // Unmarshal the JSON into a structpb.Value + pbValue := &structpb.Value{} + err = pbValue.UnmarshalJSON(buf.Bytes()) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal JSON into structpb.Value: %w", err) + } + + return pbValue, nil +} diff --git a/cli/bpmetadata/parser/state_parser_test.go b/cli/bpmetadata/parser/state_parser_test.go new file mode 100644 index 00000000000..a97417509bc --- /dev/null +++ b/cli/bpmetadata/parser/state_parser_test.go @@ -0,0 +1,177 @@ +package parser + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/types/known/structpb" +) + +func TestParseOutputTypesFromState_WithSimpleTypes(t *testing.T) { + t.Parallel() + stateData := []byte(` +{ + "format_version": "1.0", + "terraform_version": "1.2.0", + "values": { + "outputs": { + "boolean_output": { + "type": "bool", + "value": true + }, + "number_output": { + "type": "number", + "value": 42 + }, + "string_output": { + "type": "string", + "value": "foo" + } + } + } +} +`) + want := map[string]*structpb.Value{ + "boolean_output": structpb.NewStringValue("bool"), + "number_output": structpb.NewStringValue("number"), + "string_output": structpb.NewStringValue("string"), + } + got, err := ParseOutputTypesFromState(stateData) + if err != nil { + t.Errorf("ParseOutputTypesFromState() error = %v", err) + return + } + if diff := cmp.Diff(got, want, cmp.Comparer(compareStructpbValues)); diff != "" { + t.Errorf("ParseOutputTypesFromState() mismatch (-got +want):\n%s", diff) + } +} + +func TestParseOutputTypesFromState_WithComplexTypes(t *testing.T) { + t.Parallel() + stateData := []byte(` +{ + "format_version": "1.0", + "terraform_version": "1.2.0", + "values": { + "outputs": { + "interpolated_deep": { + "type": [ + "object", + { + "foo": "string", + "map": [ + "object", + { + "bar": "string", + "id": "string" + } + ], + "number": "number" + } + ], + "value": { + "foo": "bar", + "map": { + "bar": "baz", + "id": "424881806176056736" + }, + "number": 42 + } + }, + "list_output": { + "type": [ + "tuple", + [ + "string", + "string" + ] + ], + "value": [ + "foo", + "bar" + ] + }, + "map_output": { + "type": [ + "object", + { + "foo": "string", + "number": "number" + } + ], + "value": { + "foo": "bar", + "number": 42 + } + } + } + } +} +`) + want := map[string]*structpb.Value{ + "interpolated_deep": structpb.NewListValue(&structpb.ListValue{Values: []*structpb.Value{ + structpb.NewStringValue("object"), + structpb.NewStructValue(&structpb.Struct{Fields: map[string]*structpb.Value{ + "foo": structpb.NewStringValue("string"), + "map": structpb.NewListValue(&structpb.ListValue{Values: []*structpb.Value{structpb.NewStringValue("object"), structpb.NewStructValue(&structpb.Struct{Fields: map[string]*structpb.Value{"bar": structpb.NewStringValue("string"), "id": structpb.NewStringValue("string")}})}}), + "number": structpb.NewStringValue("number"), + }}), + }}), + "list_output": structpb.NewListValue(&structpb.ListValue{Values: []*structpb.Value{ + structpb.NewStringValue("tuple"), + structpb.NewListValue(&structpb.ListValue{Values: []*structpb.Value{structpb.NewStringValue("string"), structpb.NewStringValue("string")}}), + }}), + "map_output": structpb.NewListValue(&structpb.ListValue{Values: []*structpb.Value{ + structpb.NewStringValue("object"), + structpb.NewStructValue(&structpb.Struct{Fields: map[string]*structpb.Value{ + "foo": structpb.NewStringValue("string"), + "number": structpb.NewStringValue("number"), + }}), + }}), + } + got, err := ParseOutputTypesFromState(stateData) + if err != nil { + t.Errorf("ParseOutputTypesFromState() error = %v", err) + return + } + if diff := cmp.Diff(got, want, cmp.Comparer(compareStructpbValues)); diff != "" { + t.Errorf("ParseOutputTypesFromState() mismatch (-got +want):\n%s", diff) + } +} + +func TestParseOutputTypesFromState_WithoutTypes(t *testing.T) { + t.Parallel() + stateData := []byte(` +{ + "format_version": "1.0", + "terraform_version": "1.2.0", + "values": { + "outputs": { + "no_type_output": { + "value": "some_value" + } + } + } +} +`) + want := map[string]*structpb.Value{ + "no_type_output": structpb.NewNullValue(), // Expecting null value when type is missing + } + + got, err := ParseOutputTypesFromState(stateData) + if err != nil { + t.Errorf("ParseOutputTypesFromState() error = %v", err) + return + } + if diff := cmp.Diff(got, want, cmp.Comparer(compareStructpbValues)); diff != "" { + t.Errorf("ParseOutputTypesFromState() mismatch (-got +want):\n%s", diff) + } +} + +// compareStructpbValues is a custom comparer for structpb.Value +func compareStructpbValues(x, y *structpb.Value) bool { + // Marshal to JSON and compare the JSON strings + xJSON, _ := x.MarshalJSON() + yJSON, _ := y.MarshalJSON() + return string(xJSON) == string(yJSON) +} diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index d54257b41b3..819feda47cd 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -1,6 +1,7 @@ package bpmetadata import ( + "flag" "fmt" "os" "path/filepath" @@ -8,10 +9,15 @@ import ( "sort" "strings" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata/parser" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/gruntwork-io/terratest/modules/terraform" hcl "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/gohcl" "github.com/hashicorp/hcl/v2/hclparse" "github.com/hashicorp/terraform-config-inspect/tfconfig" + testingiface "github.com/mitchellh/go-testing-interface" + "github.com/stretchr/testify/assert" "google.golang.org/protobuf/types/known/structpb" ) @@ -79,6 +85,9 @@ var moduleSchema = &hcl.BodySchema{ }, } +// Create alias for generateTFStateFile so we can mock it in unit test. +var tfState = generateTFState + // getBlueprintVersion gets both the required core version and the // version of the blueprint func getBlueprintVersion(configPath string) (*blueprintVersion, error) { @@ -512,3 +521,57 @@ func mergeExistingConnections(newInterfaces, existingInterfaces *BlueprintInterf } } } + +// UpdateOutputTypes generates the terraform.tfstate file, extracts output types from it, +// and updates the output types in the provided BlueprintInterface. +func updateOutputTypes(bpPath string, bpInterfaces *BlueprintInterface) error { + // Generate the terraform.tfstate file + stateData, err := tfState(bpPath) + if err != nil { + return fmt.Errorf("error generating terraform.tfstate file: %w", err) + } + + // Parse the state file and extract output types + outputTypes, err := parser.ParseOutputTypesFromState(stateData) + if err != nil { + return fmt.Errorf("error parsing output types: %w", err) + } + + // Update the output types in the BlueprintInterface + for i, output := range bpInterfaces.Outputs { + if outputType, ok := outputTypes[output.Name]; ok { + bpInterfaces.Outputs[i].Type = outputType + } + } + return nil +} + +// generateTFState generates the terraform.tfstate by running terraform init and apply, and terraform show to capture the state. +func generateTFState(bpPath string) ([]byte, error) { + var stateData []byte + // Construct the path to the test/setup directory + tfDir := filepath.Join(bpPath) + + // testing.T checks verbose flag to determine its mode. Add this line as a flags initializer + // so the program doesn't panic + flag.Parse() + runtimeT := testingiface.RuntimeT{} + + root := tft.NewTFBlueprintTest( + &runtimeT, + tft.WithTFDir(tfDir), // Setup test at the blueprint path, + ) + + root.DefineVerify(func(assert *assert.Assertions) { + stateStr, err := terraform.ShowE(&runtimeT, root.GetTFOptions()) + if err != nil { + assert.FailNowf("Failed to generate terraform.tfstate", "Error calling `terraform show`: %v", err) + } + + stateData = []byte(stateStr) + }) + + root.Test() // This will run terraform init and apply, and then destroy + + return stateData, nil +} diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index 8752762c6c0..123d86a95d3 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -1,13 +1,16 @@ package bpmetadata import ( + "fmt" + "os" "path" + "slices" "testing" "github.com/hashicorp/hcl/v2/hclparse" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/exp/slices" + "google.golang.org/protobuf/types/known/structpb" ) const ( @@ -413,3 +416,99 @@ func TestTFVariableSortOrder(t *testing.T) { }) } } + +func TestUpdateOutputTypes(t *testing.T) { + tests := []struct { + name string + bpPath string + interfacesFile string + stateFile string + expectedOutputs []*BlueprintOutput + expectError bool + }{ + { + name: "Update output types from state", + bpPath: "sample-module", + interfacesFile: "interfaces_without_types_metadata.yaml", + stateFile: "terraform.tfstate", + expectedOutputs: []*BlueprintOutput{ + { + Name: "cluster_id", + Description: "Cluster ID", + Type: structpb.NewStringValue("string"), + }, + { + Name: "endpoint", + Description: "Cluster endpoint", + Type: &structpb.Value{ + Kind: &structpb.Value_ListValue{ + ListValue: &structpb.ListValue{ + Values: []*structpb.Value{ + { + Kind: &structpb.Value_StringValue{ + StringValue: "object", + }, + }, + { + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ + "host": { + Kind: &structpb.Value_StringValue{ + StringValue: "string", + }, + }, + "port": { + Kind: &structpb.Value_StringValue{ + StringValue: "number", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + expectError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Load interfaces from file + bpInterfaces, err := UnmarshalMetadata(metadataTestdataPath, tt.interfacesFile) + require.NoError(t, err) + + // Override with a function that reads a hard-coded tfstate file. + tfState = func(_ string) ([]byte, error) { + if tt.expectError { + return nil, fmt.Errorf("simulated error generating state file") + } + // Copy the test state file to the bpPath + stateFilePath := path.Join(tfTestdataPath, tt.bpPath, tt.stateFile) + stateData, err := os.ReadFile(stateFilePath) + if err != nil { + return nil, fmt.Errorf("error reading state file: %w", err) + } + return stateData, nil + } + + // Update output types + err = updateOutputTypes(path.Join(tfTestdataPath, tt.bpPath), bpInterfaces.Spec.Interfaces) + + if tt.expectError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + // Assert that the output types are updated correctly + expectedOutputsStr := fmt.Sprintf("%v", tt.expectedOutputs) + actualOutputsStr := fmt.Sprintf("%v", bpInterfaces.Spec.Interfaces.Outputs) + assert.Equal(t, expectedOutputsStr, actualOutputsStr) + } + }) + } +} diff --git a/cli/testdata/bpmetadata/metadata/interfaces_without_types_metadata.yaml b/cli/testdata/bpmetadata/metadata/interfaces_without_types_metadata.yaml new file mode 100644 index 00000000000..50320f98b65 --- /dev/null +++ b/cli/testdata/bpmetadata/metadata/interfaces_without_types_metadata.yaml @@ -0,0 +1,14 @@ +# interfaces_without_types_metadata.yaml +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: sample-module + annotations: + config.kubernetes.io/local-config: "true" +spec: + interfaces: + outputs: + - name: cluster_id + description: Cluster ID + - name: endpoint + description: Cluster endpoint \ No newline at end of file diff --git a/cli/testdata/bpmetadata/tf/sample-module/terraform.tfstate b/cli/testdata/bpmetadata/tf/sample-module/terraform.tfstate new file mode 100644 index 00000000000..1d19d377e55 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/sample-module/terraform.tfstate @@ -0,0 +1,25 @@ +{ + "format_version": "1.0", + "terraform_version": "1.2.0", + "values": { + "outputs": { + "cluster_id": { + "type": "string", + "value": "sample-cluster-id" + }, + "endpoint": { + "type": [ + "object", + { + "host": "string", + "port": "number" + } + ], + "value": { + "host": "127.0.0.1", + "port": 443 + } + } + } + } +} \ No newline at end of file From a915f90aee6a45c9f25fed19312279d2f73f09cc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 1 Oct 2024 22:26:19 +0200 Subject: [PATCH 1217/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.47.2 (#2632) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index a8602836d2a..171172fcbfe 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -5,7 +5,7 @@ go 1.22.7 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.47.1 + github.com/gruntwork-io/terratest v0.47.2 github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 github.com/hashicorp/terraform-json v0.22.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 19807bbaffd..ec9cba9d203 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -378,8 +378,8 @@ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.47.1 h1:qOaxnL7Su5+KpDHYUN/ek1jn8ImvCKtOkaY4OSMS4tI= -github.com/gruntwork-io/terratest v0.47.1/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4CBERWSCusbJ0d/64= +github.com/gruntwork-io/terratest v0.47.2 h1:t6iWwsqJH7Gx0RwXleU/vjc+2c0JXRMdj3DxYXTBssQ= +github.com/gruntwork-io/terratest v0.47.2/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4CBERWSCusbJ0d/64= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From 969102e6729a3d9545116dddd1ef34e816bdd19c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 00:13:41 +0200 Subject: [PATCH 1218/1371] chore(deps): update github/codeql-action action to v3.26.9 (#2633) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4c433706272..9d402978808 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 + uses: github/codeql-action/init@461ef6c76dfe95d5c364de2f431ddbd31a417628 # v3.26.9 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 + uses: github/codeql-action/autobuild@461ef6c76dfe95d5c364de2f431ddbd31a417628 # v3.26.9 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 + uses: github/codeql-action/analyze@461ef6c76dfe95d5c364de2f431ddbd31a417628 # v3.26.9 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 23c5cbbdbda..af880ee89e0 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 + uses: github/codeql-action/upload-sarif@461ef6c76dfe95d5c364de2f431ddbd31a417628 # v3.26.9 with: sarif_file: results.sarif From 2e55fcaacc67fc3c64f9306390dbd4fa68e8221a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 00:21:27 +0200 Subject: [PATCH 1219/1371] chore(deps): update github/codeql-action action to v3.26.10 (#2635) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9d402978808..4a656c85f1f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@461ef6c76dfe95d5c364de2f431ddbd31a417628 # v3.26.9 + uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@461ef6c76dfe95d5c364de2f431ddbd31a417628 # v3.26.9 + uses: github/codeql-action/autobuild@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@461ef6c76dfe95d5c364de2f431ddbd31a417628 # v3.26.9 + uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index af880ee89e0..01c16483a04 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@461ef6c76dfe95d5c364de2f431ddbd31a417628 # v3.26.9 + uses: github/codeql-action/upload-sarif@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 with: sarif_file: results.sarif From 2cc171646921628a7e96abc8d4ddffb4cf9eb148 Mon Sep 17 00:00:00 2001 From: Awais Malik Date: Tue, 1 Oct 2024 15:36:43 -0700 Subject: [PATCH 1220/1371] feat: add toggle message for NIM (#2634) --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui.pb.go | 480 ++++++++++++------ cli/bpmetadata/proto/bpmetadata_ui.proto | 22 + .../schema/gcp-blueprint-metadata.json | 25 + 4 files changed, 373 insertions(+), 156 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index bfbe7a55aa1..ecd280434ac 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.3 +VERSION=v1.5.4 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index 840edc3a541..982c8261628 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -74,6 +74,58 @@ func (DisplayVariable_AlternateDefault_AlternateType) EnumDescriptor() ([]byte, return file_bpmetadata_ui_proto_rawDescGZIP(), []int{1, 0, 0} } +type DisplayVariableToggle_ToggleType int32 + +const ( + // Default + DisplayVariableToggle_DISPLAY_VARIABLE_TOGGLE_TYPE_UNSPECIFIED DisplayVariableToggle_ToggleType = 0 + // Boolean + DisplayVariableToggle_DISPLAY_VARIABLE_TOGGLE_TYPE_BOOLEAN DisplayVariableToggle_ToggleType = 1 + // String + DisplayVariableToggle_DISPLAY_VARIABLE_TOGGLE_TYPE_STRING DisplayVariableToggle_ToggleType = 2 +) + +// Enum value maps for DisplayVariableToggle_ToggleType. +var ( + DisplayVariableToggle_ToggleType_name = map[int32]string{ + 0: "DISPLAY_VARIABLE_TOGGLE_TYPE_UNSPECIFIED", + 1: "DISPLAY_VARIABLE_TOGGLE_TYPE_BOOLEAN", + 2: "DISPLAY_VARIABLE_TOGGLE_TYPE_STRING", + } + DisplayVariableToggle_ToggleType_value = map[string]int32{ + "DISPLAY_VARIABLE_TOGGLE_TYPE_UNSPECIFIED": 0, + "DISPLAY_VARIABLE_TOGGLE_TYPE_BOOLEAN": 1, + "DISPLAY_VARIABLE_TOGGLE_TYPE_STRING": 2, + } +) + +func (x DisplayVariableToggle_ToggleType) Enum() *DisplayVariableToggle_ToggleType { + p := new(DisplayVariableToggle_ToggleType) + *p = x + return p +} + +func (x DisplayVariableToggle_ToggleType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DisplayVariableToggle_ToggleType) Descriptor() protoreflect.EnumDescriptor { + return file_bpmetadata_ui_proto_enumTypes[1].Descriptor() +} + +func (DisplayVariableToggle_ToggleType) Type() protoreflect.EnumType { + return &file_bpmetadata_ui_proto_enumTypes[1] +} + +func (x DisplayVariableToggle_ToggleType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DisplayVariableToggle_ToggleType.Descriptor instead. +func (DisplayVariableToggle_ToggleType) EnumDescriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2, 0} +} + // Visibility defines how the output is exposed. // Gen: manually-authored. type DisplayOutput_Visibility int32 @@ -108,11 +160,11 @@ func (x DisplayOutput_Visibility) String() string { } func (DisplayOutput_Visibility) Descriptor() protoreflect.EnumDescriptor { - return file_bpmetadata_ui_proto_enumTypes[1].Descriptor() + return file_bpmetadata_ui_proto_enumTypes[2].Descriptor() } func (DisplayOutput_Visibility) Type() protoreflect.EnumType { - return &file_bpmetadata_ui_proto_enumTypes[1] + return &file_bpmetadata_ui_proto_enumTypes[2] } func (x DisplayOutput_Visibility) Number() protoreflect.EnumNumber { @@ -121,7 +173,7 @@ func (x DisplayOutput_Visibility) Number() protoreflect.EnumNumber { // Deprecated: Use DisplayOutput_Visibility.Descriptor instead. func (DisplayOutput_Visibility) EnumDescriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{7, 0} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{8, 0} } // BlueprintUIInput is the structure for holding Input and Input Section (i.e. groups) specific metadata. @@ -283,8 +335,9 @@ type DisplayVariable struct { // properties list and must belong to the same section (if any). // Optional. // Gen: manually-authored - BooleanGroup string `protobuf:"bytes,20,opt,name=boolean_group,json=booleanGroup,proto3" json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty"` // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" - AltDefaults []*DisplayVariable_AlternateDefault `protobuf:"bytes,21,rep,name=alt_defaults,json=altDefaults,proto3" json:"altDefaults,omitempty" yaml:"altDefaults,omitempty"` // @gotags: json:"altDefaults,omitempty" yaml:"altDefaults,omitempty" + BooleanGroup string `protobuf:"bytes,20,opt,name=boolean_group,json=booleanGroup,proto3" json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty"` // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" + AltDefaults []*DisplayVariable_AlternateDefault `protobuf:"bytes,21,rep,name=alt_defaults,json=altDefaults,proto3" json:"altDefaults,omitempty" yaml:"altDefaults,omitempty"` // @gotags: json:"altDefaults,omitempty" yaml:"altDefaults,omitempty" + ToggleUsingVariable *DisplayVariableToggle `protobuf:"bytes,22,opt,name=toggle_using_variable,json=toggleUsingVariable,proto3" json:"toggleUsingVariable,omitempty" yaml:"toggleUsingVariable,omitempty"` // @gotags: json:"toggleUsingVariable,omitempty" yaml:"toggleUsingVariable,omitempty" } func (x *DisplayVariable) Reset() { @@ -459,6 +512,79 @@ func (x *DisplayVariable) GetAltDefaults() []*DisplayVariable_AlternateDefault { return nil } +func (x *DisplayVariable) GetToggleUsingVariable() *DisplayVariableToggle { + if x != nil { + return x.ToggleUsingVariable + } + return nil +} + +type DisplayVariableToggle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the variable used to toggle the display of another variable. + VariableName string `protobuf:"bytes,1,opt,name=variable_name,json=variableName,proto3" json:"variableName,omitempty" yaml:"variableName,omitempty"` // @gotags: json:"variableName,omitempty" yaml:"variableName,omitempty" + // The value of the variable used to toggle the display of another variable. + VariableValue string `protobuf:"bytes,2,opt,name=variable_value,json=variableValue,proto3" json:"variableValue,omitempty" yaml:"variableValue,omitempty"` // @gotags: json:"variableValue,omitempty" yaml:"variableValue,omitempty" + // The type of the variable used to toggle the display of another variable. + Type DisplayVariableToggle_ToggleType `protobuf:"varint,3,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.DisplayVariableToggle_ToggleType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" +} + +func (x *DisplayVariableToggle) Reset() { + *x = DisplayVariableToggle{} + if protoimpl.UnsafeEnabled { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayVariableToggle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayVariableToggle) ProtoMessage() {} + +func (x *DisplayVariableToggle) ProtoReflect() protoreflect.Message { + mi := &file_bpmetadata_ui_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayVariableToggle.ProtoReflect.Descriptor instead. +func (*DisplayVariableToggle) Descriptor() ([]byte, []int) { + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2} +} + +func (x *DisplayVariableToggle) GetVariableName() string { + if x != nil { + return x.VariableName + } + return "" +} + +func (x *DisplayVariableToggle) GetVariableValue() string { + if x != nil { + return x.VariableValue + } + return "" +} + +func (x *DisplayVariableToggle) GetType() DisplayVariableToggle_ToggleType { + if x != nil { + return x.Type + } + return DisplayVariableToggle_DISPLAY_VARIABLE_TOGGLE_TYPE_UNSPECIFIED +} + type ValueLabel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -471,7 +597,7 @@ type ValueLabel struct { func (x *ValueLabel) Reset() { *x = ValueLabel{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[2] + mi := &file_bpmetadata_ui_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -484,7 +610,7 @@ func (x *ValueLabel) String() string { func (*ValueLabel) ProtoMessage() {} func (x *ValueLabel) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[2] + mi := &file_bpmetadata_ui_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -497,7 +623,7 @@ func (x *ValueLabel) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueLabel.ProtoReflect.Descriptor instead. func (*ValueLabel) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{2} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{3} } func (x *ValueLabel) GetLabel() string { @@ -543,7 +669,7 @@ type DisplaySection struct { func (x *DisplaySection) Reset() { *x = DisplaySection{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[3] + mi := &file_bpmetadata_ui_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -556,7 +682,7 @@ func (x *DisplaySection) String() string { func (*DisplaySection) ProtoMessage() {} func (x *DisplaySection) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[3] + mi := &file_bpmetadata_ui_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -569,7 +695,7 @@ func (x *DisplaySection) ProtoReflect() protoreflect.Message { // Deprecated: Use DisplaySection.ProtoReflect.Descriptor instead. func (*DisplaySection) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{3} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} } func (x *DisplaySection) GetName() string { @@ -641,7 +767,7 @@ type BooleanGroup struct { func (x *BooleanGroup) Reset() { *x = BooleanGroup{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[4] + mi := &file_bpmetadata_ui_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -654,7 +780,7 @@ func (x *BooleanGroup) String() string { func (*BooleanGroup) ProtoMessage() {} func (x *BooleanGroup) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[4] + mi := &file_bpmetadata_ui_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -667,7 +793,7 @@ func (x *BooleanGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use BooleanGroup.ProtoReflect.Descriptor instead. func (*BooleanGroup) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{4} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} } func (x *BooleanGroup) GetName() string { @@ -719,7 +845,7 @@ type BlueprintUIOutput struct { func (x *BlueprintUIOutput) Reset() { *x = BlueprintUIOutput{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[5] + mi := &file_bpmetadata_ui_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -732,7 +858,7 @@ func (x *BlueprintUIOutput) String() string { func (*BlueprintUIOutput) ProtoMessage() {} func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[5] + mi := &file_bpmetadata_ui_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -745,7 +871,7 @@ func (x *BlueprintUIOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use BlueprintUIOutput.ProtoReflect.Descriptor instead. func (*BlueprintUIOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{5} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{6} } func (x *BlueprintUIOutput) GetOutputMessage() string { @@ -800,7 +926,7 @@ type UIActionItem struct { func (x *UIActionItem) Reset() { *x = UIActionItem{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[6] + mi := &file_bpmetadata_ui_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -813,7 +939,7 @@ func (x *UIActionItem) String() string { func (*UIActionItem) ProtoMessage() {} func (x *UIActionItem) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[6] + mi := &file_bpmetadata_ui_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -826,7 +952,7 @@ func (x *UIActionItem) ProtoReflect() protoreflect.Message { // Deprecated: Use UIActionItem.ProtoReflect.Descriptor instead. func (*UIActionItem) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{6} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{7} } func (x *UIActionItem) GetHeading() string { @@ -881,7 +1007,7 @@ type DisplayOutput struct { func (x *DisplayOutput) Reset() { *x = DisplayOutput{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[7] + mi := &file_bpmetadata_ui_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -894,7 +1020,7 @@ func (x *DisplayOutput) String() string { func (*DisplayOutput) ProtoMessage() {} func (x *DisplayOutput) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[7] + mi := &file_bpmetadata_ui_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -907,7 +1033,7 @@ func (x *DisplayOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use DisplayOutput.ProtoReflect.Descriptor instead. func (*DisplayOutput) Descriptor() ([]byte, []int) { - return file_bpmetadata_ui_proto_rawDescGZIP(), []int{7} + return file_bpmetadata_ui_proto_rawDescGZIP(), []int{8} } func (x *DisplayOutput) GetOpenInNewTab() bool { @@ -955,7 +1081,7 @@ type DisplayVariable_AlternateDefault struct { func (x *DisplayVariable_AlternateDefault) Reset() { *x = DisplayVariable_AlternateDefault{} if protoimpl.UnsafeEnabled { - mi := &file_bpmetadata_ui_proto_msgTypes[9] + mi := &file_bpmetadata_ui_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -968,7 +1094,7 @@ func (x *DisplayVariable_AlternateDefault) String() string { func (*DisplayVariable_AlternateDefault) ProtoMessage() {} func (x *DisplayVariable_AlternateDefault) ProtoReflect() protoreflect.Message { - mi := &file_bpmetadata_ui_proto_msgTypes[9] + mi := &file_bpmetadata_ui_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1032,7 +1158,7 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x9f, 0x08, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, + 0x22, 0x8a, 0x09, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, @@ -1081,95 +1207,123 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x61, 0x6c, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, - 0x1a, 0x89, 0x02, 0x0a, 0x10, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x62, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x12, 0x69, 0x0a, 0x15, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, + 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x52, 0x13, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x55, 0x73, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x89, 0x02, 0x0a, 0x10, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x12, 0x62, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x01, + 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x44, 0x43, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, 0xc9, 0x02, + 0x0a, 0x15, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x54, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x0a, 0x54, 0x6f, + 0x67, 0x67, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, 0x50, + 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x47, + 0x47, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, + 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x47, 0x47, 0x4c, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x01, + 0x12, 0x27, 0x0a, 0x23, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x47, 0x47, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, + 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, + 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x0c, + 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, + 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, - 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x4c, 0x54, 0x45, - 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, - 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, - 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x43, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x13, - 0x10, 0x14, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, - 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, - 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, - 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x0c, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, - 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, - 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, + 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x97, 0x02, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, + 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, + 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, + 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x58, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, - 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, - 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, - 0x97, 0x02, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, - 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, - 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, - 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x12, 0x58, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, - 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x3d, 0x0a, 0x0a, 0x56, 0x69, - 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, - 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, - 0x54, 0x59, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x01, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, - 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x22, 0x3d, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, + 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, + 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x01, + 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -1184,44 +1338,48 @@ func file_bpmetadata_ui_proto_rawDescGZIP() []byte { return file_bpmetadata_ui_proto_rawDescData } -var file_bpmetadata_ui_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_bpmetadata_ui_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_bpmetadata_ui_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_bpmetadata_ui_proto_goTypes = []interface{}{ (DisplayVariable_AlternateDefault_AlternateType)(0), // 0: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.AlternateType - (DisplayOutput_Visibility)(0), // 1: google.cloud.config.bpmetadata.DisplayOutput.Visibility - (*BlueprintUIInput)(nil), // 2: google.cloud.config.bpmetadata.BlueprintUIInput - (*DisplayVariable)(nil), // 3: google.cloud.config.bpmetadata.DisplayVariable - (*ValueLabel)(nil), // 4: google.cloud.config.bpmetadata.ValueLabel - (*DisplaySection)(nil), // 5: google.cloud.config.bpmetadata.DisplaySection - (*BooleanGroup)(nil), // 6: google.cloud.config.bpmetadata.BooleanGroup - (*BlueprintUIOutput)(nil), // 7: google.cloud.config.bpmetadata.BlueprintUIOutput - (*UIActionItem)(nil), // 8: google.cloud.config.bpmetadata.UIActionItem - (*DisplayOutput)(nil), // 9: google.cloud.config.bpmetadata.DisplayOutput - nil, // 10: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - (*DisplayVariable_AlternateDefault)(nil), // 11: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault - nil, // 12: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - (*GooglePropertyExtension)(nil), // 13: google.cloud.config.bpmetadata.GooglePropertyExtension - (*structpb.Value)(nil), // 14: google.protobuf.Value + (DisplayVariableToggle_ToggleType)(0), // 1: google.cloud.config.bpmetadata.DisplayVariableToggle.ToggleType + (DisplayOutput_Visibility)(0), // 2: google.cloud.config.bpmetadata.DisplayOutput.Visibility + (*BlueprintUIInput)(nil), // 3: google.cloud.config.bpmetadata.BlueprintUIInput + (*DisplayVariable)(nil), // 4: google.cloud.config.bpmetadata.DisplayVariable + (*DisplayVariableToggle)(nil), // 5: google.cloud.config.bpmetadata.DisplayVariableToggle + (*ValueLabel)(nil), // 6: google.cloud.config.bpmetadata.ValueLabel + (*DisplaySection)(nil), // 7: google.cloud.config.bpmetadata.DisplaySection + (*BooleanGroup)(nil), // 8: google.cloud.config.bpmetadata.BooleanGroup + (*BlueprintUIOutput)(nil), // 9: google.cloud.config.bpmetadata.BlueprintUIOutput + (*UIActionItem)(nil), // 10: google.cloud.config.bpmetadata.UIActionItem + (*DisplayOutput)(nil), // 11: google.cloud.config.bpmetadata.DisplayOutput + nil, // 12: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + (*DisplayVariable_AlternateDefault)(nil), // 13: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault + nil, // 14: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + (*GooglePropertyExtension)(nil), // 15: google.cloud.config.bpmetadata.GooglePropertyExtension + (*structpb.Value)(nil), // 16: google.protobuf.Value } var file_bpmetadata_ui_proto_depIdxs = []int32{ - 10, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry - 5, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection - 6, // 2: google.cloud.config.bpmetadata.BlueprintUIInput.boolean_groups:type_name -> google.cloud.config.bpmetadata.BooleanGroup - 13, // 3: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension - 4, // 4: google.cloud.config.bpmetadata.DisplayVariable.enum_value_labels:type_name -> google.cloud.config.bpmetadata.ValueLabel - 11, // 5: google.cloud.config.bpmetadata.DisplayVariable.alt_defaults:type_name -> google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault - 8, // 6: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem - 12, // 7: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry - 1, // 8: google.cloud.config.bpmetadata.DisplayOutput.visibility:type_name -> google.cloud.config.bpmetadata.DisplayOutput.Visibility - 3, // 9: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable - 0, // 10: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.type:type_name -> google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.AlternateType - 14, // 11: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.value:type_name -> google.protobuf.Value - 9, // 12: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput - 13, // [13:13] is the sub-list for method output_type - 13, // [13:13] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 12, // 0: google.cloud.config.bpmetadata.BlueprintUIInput.variables:type_name -> google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry + 7, // 1: google.cloud.config.bpmetadata.BlueprintUIInput.sections:type_name -> google.cloud.config.bpmetadata.DisplaySection + 8, // 2: google.cloud.config.bpmetadata.BlueprintUIInput.boolean_groups:type_name -> google.cloud.config.bpmetadata.BooleanGroup + 15, // 3: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension + 6, // 4: google.cloud.config.bpmetadata.DisplayVariable.enum_value_labels:type_name -> google.cloud.config.bpmetadata.ValueLabel + 13, // 5: google.cloud.config.bpmetadata.DisplayVariable.alt_defaults:type_name -> google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault + 5, // 6: google.cloud.config.bpmetadata.DisplayVariable.toggle_using_variable:type_name -> google.cloud.config.bpmetadata.DisplayVariableToggle + 1, // 7: google.cloud.config.bpmetadata.DisplayVariableToggle.type:type_name -> google.cloud.config.bpmetadata.DisplayVariableToggle.ToggleType + 10, // 8: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem + 14, // 9: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry + 2, // 10: google.cloud.config.bpmetadata.DisplayOutput.visibility:type_name -> google.cloud.config.bpmetadata.DisplayOutput.Visibility + 4, // 11: google.cloud.config.bpmetadata.BlueprintUIInput.VariablesEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayVariable + 0, // 12: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.type:type_name -> google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.AlternateType + 16, // 13: google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault.value:type_name -> google.protobuf.Value + 11, // 14: google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry.value:type_name -> google.cloud.config.bpmetadata.DisplayOutput + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_bpmetadata_ui_proto_init() } @@ -1256,7 +1414,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValueLabel); i { + switch v := v.(*DisplayVariableToggle); i { case 0: return &v.state case 1: @@ -1268,7 +1426,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisplaySection); i { + switch v := v.(*ValueLabel); i { case 0: return &v.state case 1: @@ -1280,7 +1438,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BooleanGroup); i { + switch v := v.(*DisplaySection); i { case 0: return &v.state case 1: @@ -1292,7 +1450,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlueprintUIOutput); i { + switch v := v.(*BooleanGroup); i { case 0: return &v.state case 1: @@ -1304,7 +1462,7 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UIActionItem); i { + switch v := v.(*BlueprintUIOutput); i { case 0: return &v.state case 1: @@ -1316,6 +1474,18 @@ func file_bpmetadata_ui_proto_init() { } } file_bpmetadata_ui_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UIActionItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bpmetadata_ui_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DisplayOutput); i { case 0: return &v.state @@ -1327,7 +1497,7 @@ func file_bpmetadata_ui_proto_init() { return nil } } - file_bpmetadata_ui_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_bpmetadata_ui_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DisplayVariable_AlternateDefault); i { case 0: return &v.state @@ -1345,8 +1515,8 @@ func file_bpmetadata_ui_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bpmetadata_ui_proto_rawDesc, - NumEnums: 2, - NumMessages: 11, + NumEnums: 3, + NumMessages: 12, NumExtensions: 0, NumServices: 0, }, diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index a245a1344c0..79d5d54afe1 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -147,6 +147,28 @@ message DisplayVariable { google.protobuf.Value value = 2; // @gotags: json:"value,omitempty" yaml:"value,omitempty" } repeated AlternateDefault alt_defaults = 21; // @gotags: json:"altDefaults,omitempty" yaml:"altDefaults,omitempty" + + DisplayVariableToggle toggle_using_variable = 22; // @gotags: json:"toggleUsingVariable,omitempty" yaml:"toggleUsingVariable,omitempty" +} + +message DisplayVariableToggle { + // The name of the variable used to toggle the display of another variable. + string variable_name = 1; // @gotags: json:"variableName,omitempty" yaml:"variableName,omitempty" + + // The value of the variable used to toggle the display of another variable. + string variable_value = 2; // @gotags: json:"variableValue,omitempty" yaml:"variableValue,omitempty" + + // The type of the variable used to toggle the display of another variable. + ToggleType type = 3; // @gotags: json:"type,omitempty" yaml:"type,omitempty" + + enum ToggleType { + // Default + DISPLAY_VARIABLE_TOGGLE_TYPE_UNSPECIFIED = 0; + // Boolean + DISPLAY_VARIABLE_TOGGLE_TYPE_BOOLEAN = 1; + // String + DISPLAY_VARIABLE_TOGGLE_TYPE_STRING = 2; + } } message ValueLabel { diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 768f2f86b21..979fcb0579e 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -810,6 +810,9 @@ "$ref": "#/$defs/DisplayVariable_AlternateDefault" }, "type": "array" + }, + "toggleUsingVariable": { + "$ref": "#/$defs/DisplayVariableToggle" } }, "additionalProperties": false, @@ -819,6 +822,28 @@ "title" ] }, + "DisplayVariableToggle": { + "properties": { + "variableName": { + "type": "string" + }, + "variableValue": { + "type": "string" + }, + "type": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + }, + "additionalProperties": false, + "type": "object" + }, "DisplayVariable_AlternateDefault": { "properties": { "type": { From 851c9460a1e02da5bb5ac0450265ca7edaf26eff Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 3 Oct 2024 19:06:03 +0200 Subject: [PATCH 1221/1371] chore(deps): update actions/checkout action to v4.2.0 (#2636) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 697dbb3db1e..71363284d79 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4a656c85f1f..60c4ed75baf 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - name: Install Go if: matrix.language == 'go' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index eb5eeefa051..8ad9ed75f8b 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index a2186734b9c..8853765b0d4 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index b13aa17e0a5..85747e5a646 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 382d3751647..1f0a7dd9df4 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: tflint-ruleset-blueprint/go.mod @@ -45,7 +45,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - name: Set up Go uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index e33e2c113f0..a4e3c6e5b93 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332' # v4.1.7 + - uses: 'actions/checkout@d632683dd7b4114ad314bca15554477dd762a938' # v4.2.0 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform uses: 'actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9' # v4.0.2 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index ff4c08e947d..c15ae4d2c7c 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index e54d7e3aa32..1a6dd05563f 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: cli/go.mod diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index de34bde2362..2b09b4e28ab 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -17,7 +17,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - name: Set up Go uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 01c16483a04..1947fb4118a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 with: persist-credentials: false diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 9531e8f511a..be81ba63289 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 2c030f84b42..de716252bd0 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index b9d65dcb43b..610b999c909 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -30,7 +30,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 with: ref: master - name: Update Tools From b22c3bb9572ba8798e01921e89c28caf637cbbe0 Mon Sep 17 00:00:00 2001 From: Zheng Qin Date: Thu, 3 Oct 2024 15:06:19 -0400 Subject: [PATCH 1222/1371] feat: preserve existing alt defaults in display yaml. (#2613) Co-authored-by: Zheng Qin Co-authored-by: Bharath KKB --- cli/bpmetadata/cmd.go | 4 ++ cli/bpmetadata/display.go | 16 ++++++ cli/bpmetadata/display_test.go | 94 ++++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+) diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index a288a03f264..ee2add8a6b0 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -305,6 +305,10 @@ func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMeta bpDisp.Spec.Info.Source = bpCore.Spec.Info.Source buildUIInputFromVariables(bpCore.Spec.Interfaces.Variables, bpDisp.Spec.Ui.Input) + existingInput := proto.Clone(bpCore.Spec.Ui.Input).(*BlueprintUIInput) + // Merge existing data (if any) into the newly generated UI Input + mergeExistingAltDefaults(bpDisp.Spec.Ui.Input, existingInput) + return bpDisp, nil } diff --git a/cli/bpmetadata/display.go b/cli/bpmetadata/display.go index 58d6cc6a0eb..fbe31eda8b1 100644 --- a/cli/bpmetadata/display.go +++ b/cli/bpmetadata/display.go @@ -34,3 +34,19 @@ func createTitleFromName(name string) string { return strings.Join(titleSplit, " ") } + +// mergeExistingAltDefaults merges existing alt_defaults from an old BlueprintUIInput into a new one, +// preserving manually authored alt_defaults. +func mergeExistingAltDefaults(newInput, existingInput *BlueprintUIInput) { + if existingInput == nil { + return // Nothing to merge if existingInput is nil + } + + for i, variable := range newInput.Variables { + for _, existingVariable := range existingInput.Variables { + if variable.Name == existingVariable.Name && existingVariable.AltDefaults != nil { + newInput.Variables[i].AltDefaults = existingVariable.AltDefaults + } + } + } +} diff --git a/cli/bpmetadata/display_test.go b/cli/bpmetadata/display_test.go index b657a3f716b..04c35aabe8f 100644 --- a/cli/bpmetadata/display_test.go +++ b/cli/bpmetadata/display_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "google.golang.org/protobuf/types/known/structpb" ) func TestUIInputFromVariables(t *testing.T) { @@ -128,3 +129,96 @@ func TestCreateTitleFromName(t *testing.T) { }) } } + +func TestMergeExistingAltDefaults(t *testing.T) { + tests := []struct { + name string + newInput *BlueprintUIInput + existingInput *BlueprintUIInput + expectInput *BlueprintUIInput + }{ + { + name: "Merge alt default into UI input", + newInput: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test_var_1", + }, + }, + }, + existingInput: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test_var_1", + AltDefaults: []*DisplayVariable_AlternateDefault{ + { + Type: 0, + Value: structpb.NewStringValue("alt_default_value"), + }, + }, + }, + }, + }, + expectInput: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test_var_1", + AltDefaults: []*DisplayVariable_AlternateDefault{ + { + Type: 0, + Value: structpb.NewStringValue("alt_default_value"), + }, + }, + }, + }, + }, + }, + { + name: "No existing input", + newInput: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test_var_1", + }, + }, + }, + existingInput: nil, + expectInput: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test_var_1", + }, + }, + }, + }, + { + name: "Empty new input", + newInput: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{}, + }, + existingInput: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test_var_1", + AltDefaults: []*DisplayVariable_AlternateDefault{ + { + Type: 0, + Value: structpb.NewStringValue("alt_default_value"), + }, + }, + }, + }, + }, + expectInput: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{}, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mergeExistingAltDefaults(tt.newInput, tt.existingInput) + assert.Equal(t, tt.newInput, tt.expectInput) + }) + } +} From 866d2fbfd52576f16632c482b4af60e162197c47 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:15:34 -0500 Subject: [PATCH 1223/1371] chore: Update Tools to 1.22.14 (#2605) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index a5e0919bb5f..3929257ac69 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.9.6 +TERRAFORM_VERSION := 1.9.7 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 493.0.0 +CLOUD_SDK_VERSION := 495.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.67.9 +TERRAGRUNT_VERSION := 0.67.16 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.4.3 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.1 +CFT_CLI_VERSION := 1.5.4 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.53.0 TINKEY_VERSION := 1.7.0 @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.13 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.14 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 98d7bee819fc4b4ed87d5da90664cd50ef147256 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 7 Oct 2024 18:02:11 +0200 Subject: [PATCH 1224/1371] chore(deps): update golangci/golangci-lint-action action to v6.1.1 (#2638) --- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 8853765b0d4..9bc404adc80 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -38,7 +38,7 @@ jobs: - ".github/workflows/go-lint.yaml" - if: steps.changes.outputs.src == 'true' name: golangci-lint - uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 # v6.1.0 + uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 # v6.1.1 with: version: latest working-directory: ${{ matrix.folder }} diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 85747e5a646..a04b0a3f5f8 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -44,7 +44,7 @@ jobs: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum - name: golangci-lint - uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 # v6.1.0 + uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 # v6.1.1 with: version: latest working-directory: 'infra/module-swapper' From b353abc8a7b9e05e736e46d0fec811e262c581e7 Mon Sep 17 00:00:00 2001 From: abhishek kumar tiwari Date: Mon, 7 Oct 2024 17:50:09 +0000 Subject: [PATCH 1225/1371] fix: Version config path should look for versions.tf in current blueprint dirctory (#2637) Co-authored-by: Bharath KKB --- cli/bpmetadata/cmd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index ee2add8a6b0..1a4958d9690 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -259,7 +259,7 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* // get blueprint requirements rolesCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfRolesFileName) svcsCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfServicesFileName) - versionsCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfVersionsFileName) + versionsCfgPath := path.Join(bpPath, tfVersionsFileName) requirements, err := getBlueprintRequirements(rolesCfgPath, svcsCfgPath, versionsCfgPath) if err != nil { Log.Info("skipping blueprint requirements since roles and/or services configurations were not found as per https://tinyurl.com/tf-iam and https://tinyurl.com/tf-services") From 52659be5f103e23e19f180653cb8c35a96cf5020 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 8 Oct 2024 18:44:19 +0200 Subject: [PATCH 1226/1371] chore(deps): update dependency go to v1.22.8 (#2641) --- tflint-ruleset-blueprint/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 8767b040671..6c1ca4d477c 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -2,7 +2,7 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint go 1.22.2 -toolchain go1.22.7 +toolchain go1.22.8 require ( github.com/hashicorp/go-version v1.7.0 From 9bbd61b81669da9ae009538ded5440e927e64499 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 8 Oct 2024 21:56:49 +0200 Subject: [PATCH 1227/1371] chore(deps): update google-github-actions/auth action to v2.1.6 (#2644) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 71363284d79..0cf26678352 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@62cf5bd3e4211a0a0b51f2c6d6a37129d828611d' # v2.1.5 + uses: 'google-github-actions/auth@8254fb75a33b976a221574d287e93919e6a36f70' # v2.1.6 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 1a6dd05563f..b0aa7c25e25 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@62cf5bd3e4211a0a0b51f2c6d6a37129d828611d' # v2.1.5 + uses: 'google-github-actions/auth@8254fb75a33b976a221574d287e93919e6a36f70' # v2.1.6 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From ccb8bda55715c36b176d49427f2cbe3162483f94 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 9 Oct 2024 18:01:05 +0200 Subject: [PATCH 1228/1371] fix(deps): update go modules (#2646) --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 171172fcbfe..b3cb45bd2aa 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -11,10 +11,10 @@ require ( github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.9.0 - github.com/tidwall/gjson v1.17.3 + github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.21.0 - sigs.k8s.io/kustomize/kyaml v0.18.0 + sigs.k8s.io/kustomize/kyaml v0.18.1 ) require ( diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index ec9cba9d203..b500f63eb53 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -497,8 +497,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= -github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -1090,8 +1090,8 @@ 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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/kyaml v0.18.0 h1:OAsBL2NzDLu3X7t4HmdIB7GdRTePai4whzaoOJw+C/E= -sigs.k8s.io/kustomize/kyaml v0.18.0/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo= +sigs.k8s.io/kustomize/kyaml v0.18.1 h1:WvBo56Wzw3fjS+7vBjN6TeivvpbW9GmRaWZ9CIVmt4E= +sigs.k8s.io/kustomize/kyaml v0.18.1/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From 751fac7b753dd112847084d0d9e19a4e99e9250c Mon Sep 17 00:00:00 2001 From: Bharath KKB Date: Wed, 9 Oct 2024 18:48:09 -0500 Subject: [PATCH 1229/1371] chore: add Abhishek to CLI owners (#2639) --- CODEOWNERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CODEOWNERS b/CODEOWNERS index fc73162c532..c4c134c8739 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,4 @@ # Main team administering overall repo * @bharathkkb @g-awmalik @apeabody +# ADC team reviewers +/cli/ @q2w @GoogleCloudPlatform/blueprint-solutions From d4a376257619e799b26f9324572b506b74f29fc6 Mon Sep 17 00:00:00 2001 From: abhishek kumar tiwari Date: Thu, 10 Oct 2024 02:30:15 +0000 Subject: [PATCH 1230/1371] chore: Add adc_common_group to blueprints used in ADC (#2645) --- infra/terraform/test-org/org/locals.tf | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 9dc44177113..10262798032 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -38,6 +38,8 @@ locals { } jss_common_group = "jump-start-solutions-admins" + adc_common_admins = ["q2w"] + common_topics = { hcls = "healthcare-life-sciences", e2e = "end-to-end" @@ -89,7 +91,7 @@ locals { name = "terraform-google-cloud-run" org = "GoogleCloudPlatform" description = "Deploys apps to Cloud Run, along with option to map custom domain" - owners = ["prabhu34", "anamer", "gtsorbo"] + owners = concat(["prabhu34", "anamer", "gtsorbo"], local.adc_common_admins) topics = "cloudrun,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" lint_env = { ENABLE_BPMETADATA = "1" @@ -225,6 +227,7 @@ locals { name = "terraform-google-secret-manager" org = "GoogleCloudPlatform" description = "Creates one or more Google Secret Manager secrets and manages basic permissions for them" + owners = local.adc_common_admins topics = "gcp,kms,pubsub,terraform-module,${local.common_topics.security}" }, { @@ -297,6 +300,7 @@ locals { org = "terraform-google-modules" description = "Creates one or more Cloud Storage buckets and assigns basic permissions on them to arbitrary users" topics = local.common_topics.storage + owners = local.adc_common_admins lint_env = { ENABLE_BPMETADATA = "1" } @@ -407,7 +411,7 @@ locals { org = "terraform-google-modules" description = "Creates a global HTTP load balancer for Compute Engine by using forwarding rules" topics = local.common_topics.net - owners = ["imrannayer"] + owners = concat(["imrannayer"], local.adc_common_admins) }, { name = "terraform-google-lb-internal" @@ -428,7 +432,7 @@ locals { org = "terraform-google-modules" description = "Creates a fully functional Google Memorystore (redis) instance" topics = local.common_topics.db - owners = ["imrannayer"] + owners = concat(["imrannayer"], local.adc_common_admins) lint_env = { ENABLE_BPMETADATA = "1" } @@ -482,6 +486,7 @@ locals { name = "terraform-google-service-accounts" org = "terraform-google-modules" description = "Creates one or more service accounts and grants them basic roles" + owners = local.adc_common_admins topics = local.common_topics.security }, { @@ -495,7 +500,7 @@ locals { org = "terraform-google-modules" description = "Creates a Cloud SQL database instance" topics = local.common_topics.db - owners = ["isaurabhuttam", "imrannayer"] + owners = concat(["isaurabhuttam", "imrannayer"], local.adc_common_admins) lint_env = { ENABLE_BPMETADATA = "1" } @@ -522,6 +527,7 @@ locals { name = "terraform-google-vm" org = "terraform-google-modules" description = "Provisions VMs in Google Cloud" + owners = local.adc_common_admins topics = local.common_topics.compute }, { From a4c57c3441722e496e609582ac5434c40f21461e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 10 Oct 2024 20:59:47 +0200 Subject: [PATCH 1231/1371] chore(deps): update module github.com/jedib0t/go-pretty/v6 to v6.6.0 (#2648) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 5716a50f543..fcaf1977022 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,7 +4,7 @@ go 1.22 require ( github.com/briandowns/spinner v1.23.1 - github.com/jedib0t/go-pretty/v6 v6.5.9 + github.com/jedib0t/go-pretty/v6 v6.6.0 github.com/stretchr/testify v1.9.0 google.golang.org/api v0.199.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 36f2aeae729..3005def9ed5 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -58,8 +58,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gT github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= -github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= -github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.0 h1:wmZVuAcEkZRT+Aq1xXpE8IGat4vE5WXOMmBpbQqERXw= +github.com/jedib0t/go-pretty/v6 v6.6.0/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From 73e6c066998644ac1983ba1965383ccc6982c7c0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 10 Oct 2024 21:33:21 +0200 Subject: [PATCH 1232/1371] chore(deps): update module google.golang.org/api to v0.200.0 (#2650) --- infra/utils/fbf/go.mod | 20 ++++++++++---------- infra/utils/fbf/go.sum | 42 +++++++++++++++++++++--------------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index fcaf1977022..1bde0b2d3f5 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.0 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.199.0 + google.golang.org/api v0.200.0 ) require ( - cloud.google.com/go/auth v0.9.5 // indirect + cloud.google.com/go/auth v0.9.8 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -33,14 +33,14 @@ require ( go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect - golang.org/x/crypto v0.27.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/crypto v0.28.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sys v0.25.0 // indirect - golang.org/x/term v0.24.0 // indirect - golang.org/x/text v0.18.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.67.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 3005def9ed5..b000644937d 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.9.5 h1:4CTn43Eynw40aFVr3GpPqsQponx2jv0BQpjvajsbbzw= -cloud.google.com/go/auth v0.9.5/go.mod h1:Xo0n7n66eHyOWWCnitop6870Ilwo3PiZyodVkkH1xWM= +cloud.google.com/go/auth v0.9.8 h1:+CSJ0Gw9iVeSENVCKJoLHhdUykDgXSc4Qn+gu2BRtR8= +cloud.google.com/go/auth v0.9.8/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= @@ -93,8 +93,8 @@ go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt3 go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -105,8 +105,8 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -121,39 +121,39 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.199.0 h1:aWUXClp+VFJmqE0JPvpZOK3LDQMyFKYIow4etYd9qxs= -google.golang.org/api v0.199.0/go.mod h1:ohG4qSztDJmZdjK/Ar6MhbAmb/Rpi4JHOqagsh90K28= +google.golang.org/api v0.200.0 h1:0ytfNWn101is6e9VBoct2wrGDjOi5vn7jw5KtaQgDrU= +google.golang.org/api v0.200.0/go.mod h1:Tc5u9kcbjO7A8SwGlYj4IiVifJU01UqXtEgDMYmBmV8= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= +google.golang.org/genproto v0.0.0-20241007155032-5fefd90f89a9 h1:nFS3IivktIU5Mk6KQa+v6RKkHUpdQpphqGNLxqNnbEk= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 h1:QCqS/PdaHTSWGvupk2F/ehwHtGc0/GYkT+3GAcR1CCc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw= -google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= 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= @@ -163,8 +163,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 2eae4384ef5688bd8df0f9decf71609ace625fc3 Mon Sep 17 00:00:00 2001 From: Nikhil Bhoyar Date: Fri, 11 Oct 2024 03:25:22 +0530 Subject: [PATCH 1233/1371] chore: Add nb-goog to KMS Solution repo (#2642) Co-authored-by: Andrew Peabody --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 10262798032..6bb0f1134f0 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -905,7 +905,7 @@ locals { name = "kms-solutions" org = "GoogleCloudPlatform" description = "Store Cloud KMS scripts, artifacts, code samples, and more." - owners = ["tdbhacks", "erlanderlo", "g-swap"] + owners = ["tdbhacks", "erlanderlo", "g-swap", "nb-goog"] lint_env = { ENABLE_BPMETADATA = "1" } From e3a48fc8995bf8629ce9fc1b1794e88a8114b07e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 11 Oct 2024 20:00:32 +0200 Subject: [PATCH 1234/1371] chore(deps): update terraform google provider to v6 (#2577) Co-authored-by: Andrew Peabody --- .../dev-project-cleanup/.terraform.lock.hcl | 160 +++++++++--------- .../dev-org/dev-project-cleanup/cleanup.tf | 4 +- .../dev-org/dev-project-cleanup/project.tf | 2 +- .../dev-org/dev-project-cleanup/versions.tf | 4 +- 4 files changed, 85 insertions(+), 85 deletions(-) diff --git a/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl b/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl index 91978ab4d71..1abacd864d8 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl +++ b/infra/terraform/dev-org/dev-project-cleanup/.terraform.lock.hcl @@ -2,121 +2,121 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/archive" { - version = "2.4.1" + version = "2.6.0" constraints = ">= 1.2.0, >= 1.3.0, < 3.0.0" hashes = [ - "h1:JgIo+nNySG8svjXevfoTRi0jzgHbLMDrnr55WBeRupw=", - "zh:00240c042740d18d6ba545b211ff7ed5a9e8490d30be3f865e71dba90d7a34cf", - "zh:230c285beafaffd8d60da3446157b95f8fb43b359ba94b09214c1822bf310c3d", - "zh:726672a0e61a1d39695ce5e330aa3e6caa97f2a9438cf8125360e80f4cb52fa5", + "h1:rYAubRk7UHC/fzYqFV/VHc+7VIY01ugCxauyTYCNf9E=", + "zh:29273484f7423b7c5b3f5df34ccfc53e52bb5e3d7f46a81b65908e7a8fd69072", + "zh:3cba58ec3aea5f301caf2acc31e184c55d994cc648126cac39c63ae509a14179", + "zh:55170cd17dbfdea842852c6ae2416d057fec631ba49f3bb6466a7268cd39130e", + "zh:7197db402ba35631930c3a4814520f0ebe980ae3acb7f8b5a6f70ec90dc4a388", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:7bc8f4a4fc7059ec01e767246df7937603dbc6ec49cb3eedffe6ecb68dbe9cb4", - "zh:800d898ce8ac96b244746c5a41f4107bd3c883fe6093d9a972a28b138ac02c4e", - "zh:9a8ea216af3840af48c08ef5ed998606c556b15be30d7b42c89a62df54285903", - "zh:b9905d0ac55b61ea78ecf0e6b07d54a9863a9f02e249d0d492e68cfcede0d89f", - "zh:c822495ba01ab7cee66c892f941097971c3be122a6200d556f462a751d446df8", - "zh:e05c31f2f4dca9eaada2726d16d2ffb03d6441b4eb55547b93d62d81383cd0ef", - "zh:ec14c68ca5d881bac73dbbd298f0ca84444001a81d473f51e36c4e29df040983", - "zh:ed32ebccb20b21c112f01d73d138ba5ada28cf8ede175441738a30711c79119a", + "zh:8bf7fe0915d7fb152a3a6b9162614d2ec82749a06dba13fab3f98d33c020ec4f", + "zh:8ce811844fd53adb0dabc9a541f8cb43aacfa7d8e39324e4bd3592b3428f5bfb", + "zh:bca795bca815b8ac90e3054c0a9ab1ccfb16eedbb3418f8ad473fc5ad6bf0ef7", + "zh:d9355a18df5a36cf19580748b23249de2eb445c231c36a353709f8f40a6c8432", + "zh:dc32cc32cfd8abf8752d34f2a783de0d3f7200c573b885ecb64ece5acea173b4", + "zh:ef498e20391bf7a280d0fd6fd6675621c85fbe4e92f0f517ae4394747db89bde", + "zh:f2bc5226c765b0c8055a7b6207d0fe1eb9484e3ec8880649d158827ac6ed3b22", ] } provider "registry.terraform.io/hashicorp/google" { - version = "5.10.0" - constraints = ">= 3.35.0, >= 3.43.0, >= 3.50.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 4.78.0, < 6.0.0" + version = "6.6.0" + constraints = ">= 3.35.0, >= 3.43.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 5.31.0, >= 5.41.0, < 7.0.0" hashes = [ - "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", - "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", - "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", - "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", - "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", - "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", - "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", - "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", - "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", - "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", + "h1:mllWOZFO8u2kD2kRTdDDAa8Jt+vb8Uxhf6C0lwLxoz8=", + "zh:0c181f9b9f0ab81731e5c4c2d20b6d342244506687437dad94e279ef2a588f68", + "zh:12a4c333fc0ba670e87f09eb574e4b7da90381f9929ef7c866048b6841cc8a6a", + "zh:15c277c2052df89429051350df4bccabe4cf46068433d4d8c673820d9756fc00", + "zh:35d1663c81b81cd98d768fa7b80874b48c51b27c036a3c598a597f653374d3c8", + "zh:56b268389758d544722a342da4174c486a40ffa2a49b45a06111fe31c6c9c867", + "zh:abd3ea8c3a62928ba09ba7eb42b52f53e682bd65e92d573f1739596b5a9a67b1", + "zh:be55a328d61d9db58690db74ed43614111e1105e5e52cee15acaa062df4e233e", + "zh:ce2317ce9fd02cf14323f9e061c43a415b4ae9b3f96046460d0e6b6529a5aa6c", + "zh:d54a6d8e031c824f1de21b93c3e01ed7fec134b4ae55223d08868c6168c98e47", + "zh:d8c6e33b5467c6eb5a970adb251c4c8194af12db5388cff9d4b250294eae4daa", + "zh:f49e4cc9c0b55b3bec7da64dd698298345634a5df372228ee12aa45e57982f64", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", - "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.10.0" - constraints = ">= 3.35.0, >= 3.43.0, >= 3.50.0, >= 4.11.0, >= 4.28.0, < 6.0.0" + version = "6.6.0" + constraints = ">= 3.35.0, >= 3.43.0, >= 4.11.0, >= 5.41.0, < 7.0.0" hashes = [ - "h1:V+p4T5z6Mt6rFDupT/piBUFMg4zGJ153sawqNvqYWS0=", - "zh:1004ac3733679254abcc7f5e9d594d9ee079cf071391a92f82b50077e07c70b5", - "zh:1e25af33d20b6ab369860d5b7c746b4a3b3dccc061b14dde91b6ccccfe704cc4", - "zh:2873a614a1dc1c460246edc95a558ad9befedf93490a0204bee8fb95362813cc", - "zh:2f421e13247b3822ef3c2e07e1aee948116a5064c386466a53fb72486daded20", - "zh:517c13cd146d3451789da8f13cbfa5355c3e88456cf762ad3918dada84a5f261", - "zh:56553ae44f4089f5149551714daaf3c97205d4638dd93b0675ed777476d56048", - "zh:6925a07bcb9ab70faa84bf36f87990025e3f9cd6c8cfab5260877f60086c8161", - "zh:72454b65ee4a24896d215f7f7af41e31336865c86d6c20ea4acb63596e75ac0d", - "zh:8b05f8a6ff51999bf65e3127618931647a00bc9abf739f0711151e4145cae3d5", - "zh:a3b7d3b39740088174d121bc7e4e3ce27da0ebf0c87877f8fce9277b0046c75b", + "h1:B4Wrkju7TTLWlCIDh+Vh4knFQS3wmFm0NHICGjCNO3k=", + "zh:1bf8f840a9a4ac1e120a6155225a0defbfa7f07b19c9bb37b45f95006b020ccf", + "zh:39077f037e611bdbd6af42e51b2881ea03d62ad55f21b42f90dc09e2cf812753", + "zh:64313dd2158749e3a4f2759edb896a9efa2c2afc59feb38d3af57e31eaa64480", + "zh:6bec8b21a20f50d81ca2e633cdaf1144bb8615a1dedf50e87c86f4eda3467b05", + "zh:74566c568410997fe966ef44130d19d640dbb427ffec3de93f0fd2affeb6fd8f", + "zh:8fe1c42d3229d0fe64961b7fa480689408eff3e5be62eb108d6aa9d36a10a769", + "zh:9593b59efd271623f45d133164eae16676130439727a625c10d3b929d2f28671", + "zh:a72c71431523d1f0d0d8baf7141ff16aa5938c0edf27e05dc4d1dc3455a50d01", + "zh:cbc96a215575d94601ec315a2db8802b521e904aaecf2602bce0110786cfa81f", + "zh:e71c3e06e861d5c9d1782b0bbaef93b5b9defa926304f90ddd22bc9b69ee14bd", + "zh:f559eefcc67d771ce0157e7ec021c1025b8af2a8c7ca89e1f5ac812e16bf9760", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:fe2af4fcda1b45d73ef8b8c728c150e00d1a4d5c0323b30d7d43c6f24ed78bcb", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.2.2" + version = "3.2.3" constraints = ">= 2.1.0, < 4.0.0" hashes = [ - "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", - "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", - "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", - "zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3", - "zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606", - "zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546", - "zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539", - "zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452", + "h1:+AnORRgFbRO6qqcfaQyeX80W0eX3VmjadjnUFUJTiXo=", + "zh:22d062e5278d872fe7aed834f5577ba0a5afe34a3bdac2b81f828d8d3e6706d2", + "zh:23dead00493ad863729495dc212fd6c29b8293e707b055ce5ba21ee453ce552d", + "zh:28299accf21763ca1ca144d8f660688d7c2ad0b105b7202554ca60b02a3856d3", + "zh:55c9e8a9ac25a7652df8c51a8a9a422bd67d784061b1de2dc9fe6c3cb4e77f2f", + "zh:756586535d11698a216291c06b9ed8a5cc6a4ec43eee1ee09ecd5c6a9e297ac1", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:913a929070c819e59e94bb37a2a253c228f83921136ff4a7aa1a178c7cce5422", - "zh:aa9015926cd152425dbf86d1abdbc74bfe0e1ba3d26b3db35051d7b9ca9f72ae", - "zh:bb04798b016e1e1d49bcc76d62c53b56c88c63d6f2dfe38821afef17c416a0e1", - "zh:c23084e1b23577de22603cff752e59128d83cfecc2e6819edadd8cf7a10af11e", + "zh:9d5eea62fdb587eeb96a8c4d782459f4e6b73baeece4d04b4a40e44faaee9301", + "zh:a6355f596a3fb8fc85c2fb054ab14e722991533f87f928e7169a486462c74670", + "zh:b5a65a789cff4ada58a5baffc76cb9767dc26ec6b45c00d2ec8b1b027f6db4ed", + "zh:db5ab669cf11d0e9f81dc380a6fdfcac437aea3d69109c7aef1a5426639d2d65", + "zh:de655d251c470197bcbb5ac45d289595295acb8f829f6c781d4a75c8c8b7c7dd", + "zh:f5c68199f2e6076bce92a12230434782bf768103a427e9bb9abee99b116af7b5", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.6.0" + version = "3.6.3" constraints = ">= 2.1.0, >= 2.2.0, < 4.0.0" hashes = [ - "h1:R5Ucn26riKIEijcsiOMBR3uOAjuOMfI1x7XvH4P6B1w=", - "zh:03360ed3ecd31e8c5dac9c95fe0858be50f3e9a0d0c654b5e504109c2159287d", - "zh:1c67ac51254ba2a2bb53a25e8ae7e4d076103483f55f39b426ec55e47d1fe211", - "zh:24a17bba7f6d679538ff51b3a2f378cedadede97af8a1db7dad4fd8d6d50f829", - "zh:30ffb297ffd1633175d6545d37c2217e2cef9545a6e03946e514c59c0859b77d", - "zh:454ce4b3dbc73e6775f2f6605d45cee6e16c3872a2e66a2c97993d6e5cbd7055", + "h1:Fnaec9vA8sZ8BXVlN3Xn9Jz3zghSETIKg7ch8oXhxno=", + "zh:04ceb65210251339f07cd4611885d242cd4d0c7306e86dda9785396807c00451", + "zh:448f56199f3e99ff75d5c0afacae867ee795e4dfda6cb5f8e3b2a72ec3583dd8", + "zh:4b4c11ccfba7319e901df2dac836b1ae8f12185e37249e8d870ee10bb87a13fe", + "zh:4fa45c44c0de582c2edb8a2e054f55124520c16a39b2dfc0355929063b6395b1", + "zh:588508280501a06259e023b0695f6a18149a3816d259655c424d068982cbdd36", + "zh:737c4d99a87d2a4d1ac0a54a73d2cb62974ccb2edbd234f333abd079a32ebc9e", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:91df0a9fab329aff2ff4cf26797592eb7a3a90b4a0c04d64ce186654e0cc6e17", - "zh:aa57384b85622a9f7bfb5d4512ca88e61f22a9cea9f30febaa4c98c68ff0dc21", - "zh:c4a3e329ba786ffb6f2b694e1fd41d413a7010f3a53c20b432325a94fa71e839", - "zh:e2699bc9116447f96c53d55f2a00570f982e6f9935038c3810603572693712d0", - "zh:e747c0fd5d7684e5bfad8aa0ca441903f15ae7a98a737ff6aca24ba223207e2c", - "zh:f1ca75f417ce490368f047b63ec09fd003711ae48487fba90b4aba2ccf71920e", + "zh:a357ab512e5ebc6d1fda1382503109766e21bbfdfaa9ccda43d313c122069b30", + "zh:c51bfb15e7d52cc1a2eaec2a903ac2aff15d162c172b1b4c17675190e8147615", + "zh:e0951ee6fa9df90433728b96381fb867e3db98f66f735e0c3e24f8f16903f0ad", + "zh:e3cdcb4e73740621dabd82ee6a37d6cfce7fee2a03d8074df65086760f5cf556", + "zh:eff58323099f1bd9a0bec7cb04f717e7f1b2774c7d612bf7581797e1622613a0", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.10.0" + version = "0.12.1" constraints = ">= 0.5.0" hashes = [ - "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", - "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", - "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", - "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", - "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", + "h1:6BhxSYBJdBBKyuqatOGkuPKVenfx6UmLdiI13Pb3his=", + "zh:090023137df8effe8804e81c65f636dadf8f9d35b79c3afff282d39367ba44b2", + "zh:26f1e458358ba55f6558613f1427dcfa6ae2be5119b722d0b3adb27cd001efea", + "zh:272ccc73a03384b72b964918c7afeb22c2e6be22460d92b150aaf28f29a7d511", + "zh:438b8c74f5ed62fe921bd1078abe628a6675e44912933100ea4fa26863e340e9", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", - "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", - "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", - "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", - "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", - "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", - "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", + "zh:85c8bd8eefc4afc33445de2ee7fbf33a7807bc34eb3734b8eefa4e98e4cddf38", + "zh:98bbe309c9ff5b2352de6a047e0ec6c7e3764b4ed3dfd370839c4be2fbfff869", + "zh:9c7bf8c56da1b124e0e2f3210a1915e778bab2be924481af684695b52672891e", + "zh:d2200f7f6ab8ecb8373cda796b864ad4867f5c255cff9d3b032f666e4c78f625", + "zh:d8c7926feaddfdc08d5ebb41b03445166df8c125417b28d64712dccd9feef136", + "zh:e2412a192fc340c61b373d6c20c9d805d7d3dee6c720c34db23c2a8ff0abd71b", + "zh:e6ac6bba391afe728a099df344dbd6481425b06d61697522017b8f7a59957d44", ] } diff --git a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf index cd60a0aacc7..e8087d7e2db 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/cleanup.tf @@ -16,14 +16,14 @@ module "app-engine" { source = "terraform-google-modules/project-factory/google//modules/app_engine" - version = "~> 14.0" + version = "~> 17.0" location_id = local.app_location project_id = module.project.project_id } module "projects_cleanup" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 4.0" + version = "~> 6.0" job_schedule = "17 * * * *" max_project_age_in_hours = "24" diff --git a/infra/terraform/dev-org/dev-project-cleanup/project.tf b/infra/terraform/dev-org/dev-project-cleanup/project.tf index b9b02020ed3..b11a1f8adc1 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/project.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/project.tf @@ -21,7 +21,7 @@ resource "google_folder" "cft-dev-management" { module "project" { source = "terraform-google-modules/project-factory/google" - version = "~> 14.0" + version = "~> 17.0" name = "cft-project-manager" random_project_id = true diff --git a/infra/terraform/dev-org/dev-project-cleanup/versions.tf b/infra/terraform/dev-org/dev-project-cleanup/versions.tf index 5cd982066fc..e737ef3f131 100644 --- a/infra/terraform/dev-org/dev-project-cleanup/versions.tf +++ b/infra/terraform/dev-org/dev-project-cleanup/versions.tf @@ -23,11 +23,11 @@ terraform { } google = { source = "hashicorp/google" - version = ">= 3.35, < 6" + version = ">= 3.35, < 7" } google-beta = { source = "hashicorp/google-beta" - version = ">= 3.35, < 6" + version = ">= 3.35, < 7" } null = { source = "hashicorp/null" From f55eb1bee8e52e485407afff8875c9e2f4f91167 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 11 Oct 2024 20:15:53 +0200 Subject: [PATCH 1235/1371] chore(deps): update terraform google provider to v6 (#2582) Co-authored-by: Andrew Peabody --- .../test-org/ci-project/.terraform.lock.hcl | 88 +++++++++---------- infra/terraform/test-org/ci-project/gar.tf | 2 +- infra/terraform/test-org/ci-project/sa.tf | 2 +- .../terraform/test-org/ci-project/versions.tf | 4 +- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/infra/terraform/test-org/ci-project/.terraform.lock.hcl b/infra/terraform/test-org/ci-project/.terraform.lock.hcl index 32e14175887..6a624ce020f 100644 --- a/infra/terraform/test-org/ci-project/.terraform.lock.hcl +++ b/infra/terraform/test-org/ci-project/.terraform.lock.hcl @@ -2,64 +2,64 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "5.39.1" - constraints = ">= 3.53.0, >= 3.64.0, >= 5.26.0, < 6.0.0" + version = "6.6.0" + constraints = ">= 3.53.0, >= 3.64.0, >= 5.26.0, < 7.0.0" hashes = [ - "h1:6AJPkCW3JqdpVO+HCb8g0mzZyZXPUEt/+3BTmCGnTTg=", - "zh:28763694f5f06a98a4745f0e37f8f8ae412e48a6cfd9b7339599abf89e7577c5", - "zh:469a415b398a08c8b479e32cb24b028791eac57bdab3c15d8b987290e55bfa55", - "zh:4a1f97c58f22379f7c98c7bfe94c923d58c41cb9801679e1a54f85c9848af48c", - "zh:4b2bc066b977cf57de895d1a68f47cc4df48cc7ce0054f8c3de06f6cd63f263d", - "zh:6436aa9a7721079f0784b3ccc0da953337f96500bd34a5ba927fe1833392c54a", - "zh:6b0833e932bc904dee2ca320d5efb785766fd4474c041128868232cc78a0e764", - "zh:8c2a47a571dce3b825fd90789d1af3699cdd615f06e5bf13258585d1560222b8", - "zh:ae5b4cdc76720165023870bc9899bb7de9aee8f4ead95dd368a6ebad95176fe4", - "zh:c30307a74d64f61fbd5a6b5e8658e4d11152ee1f54f43a02c0fe734e5f0f529a", - "zh:e892a200145641b8ae55ba0f69cf83454267b41e0f2d3b6932d4d917d8112911", - "zh:ecd95d22838181ae578eba90154a972661bcdc779f728d71957c059b56c7fd61", + "h1:mllWOZFO8u2kD2kRTdDDAa8Jt+vb8Uxhf6C0lwLxoz8=", + "zh:0c181f9b9f0ab81731e5c4c2d20b6d342244506687437dad94e279ef2a588f68", + "zh:12a4c333fc0ba670e87f09eb574e4b7da90381f9929ef7c866048b6841cc8a6a", + "zh:15c277c2052df89429051350df4bccabe4cf46068433d4d8c673820d9756fc00", + "zh:35d1663c81b81cd98d768fa7b80874b48c51b27c036a3c598a597f653374d3c8", + "zh:56b268389758d544722a342da4174c486a40ffa2a49b45a06111fe31c6c9c867", + "zh:abd3ea8c3a62928ba09ba7eb42b52f53e682bd65e92d573f1739596b5a9a67b1", + "zh:be55a328d61d9db58690db74ed43614111e1105e5e52cee15acaa062df4e233e", + "zh:ce2317ce9fd02cf14323f9e061c43a415b4ae9b3f96046460d0e6b6529a5aa6c", + "zh:d54a6d8e031c824f1de21b93c3e01ed7fec134b4ae55223d08868c6168c98e47", + "zh:d8c6e33b5467c6eb5a970adb251c4c8194af12db5388cff9d4b250294eae4daa", + "zh:f49e4cc9c0b55b3bec7da64dd698298345634a5df372228ee12aa45e57982f64", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.39.1" - constraints = ">= 3.64.0, >= 5.26.0, < 6.0.0" + version = "6.6.0" + constraints = ">= 3.64.0, >= 5.26.0, < 7.0.0" hashes = [ - "h1:KOBwBBNtenF6bAgQlvIdtx4tfnrl2iXNRyAYAYfpqA4=", - "zh:07fcc7db2fdc302627f2cddd16fe6b2bf1e8a0fd24e41172afaee96dcb7894bd", - "zh:0f17e28afe3322b692cf912b09378333f59e51d3e62da27e8a337e86b34cb9e9", - "zh:252abaeb1dd9739f7b919d1ed3728c20f266c761125b6c33dc17fbbf08af77fb", - "zh:313c8db8dfb4b80d44aff470d6dcc2c7f5f6dbf4484717636e7fe42a401f5dff", - "zh:353ecd422983e3d993c7daa3fb0d7fd6663b663dfd95894734dc8f5261dba6bf", - "zh:486ffdfe5e834a03dd374813451fb6ec15392934b1adfadac0b9c2485f6f8e27", - "zh:847a88f8c392efd0c84e85d716d2ab7ec3a2d52c213c6b79db67aedd31b23a81", - "zh:9569b0d3029198d5dac39a7d714553d3456eb9db885393965f585b33ded60c7e", - "zh:b79475e63c78a24c70500c0e28e7526104b385fd5fa08f332d8bf0c94d6597de", - "zh:bf70c9fcd96d2abd1d3682cfd39075709745185b874a005465c6c067ce102dee", - "zh:d644a1043481d16a5788847b4204933f528bf65fb571546aec62f7da19d7e6b4", + "h1:B4Wrkju7TTLWlCIDh+Vh4knFQS3wmFm0NHICGjCNO3k=", + "zh:1bf8f840a9a4ac1e120a6155225a0defbfa7f07b19c9bb37b45f95006b020ccf", + "zh:39077f037e611bdbd6af42e51b2881ea03d62ad55f21b42f90dc09e2cf812753", + "zh:64313dd2158749e3a4f2759edb896a9efa2c2afc59feb38d3af57e31eaa64480", + "zh:6bec8b21a20f50d81ca2e633cdaf1144bb8615a1dedf50e87c86f4eda3467b05", + "zh:74566c568410997fe966ef44130d19d640dbb427ffec3de93f0fd2affeb6fd8f", + "zh:8fe1c42d3229d0fe64961b7fa480689408eff3e5be62eb108d6aa9d36a10a769", + "zh:9593b59efd271623f45d133164eae16676130439727a625c10d3b929d2f28671", + "zh:a72c71431523d1f0d0d8baf7141ff16aa5938c0edf27e05dc4d1dc3455a50d01", + "zh:cbc96a215575d94601ec315a2db8802b521e904aaecf2602bce0110786cfa81f", + "zh:e71c3e06e861d5c9d1782b0bbaef93b5b9defa926304f90ddd22bc9b69ee14bd", + "zh:f559eefcc67d771ce0157e7ec021c1025b8af2a8c7ca89e1f5ac812e16bf9760", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } provider "registry.terraform.io/integrations/github" { - version = "6.2.3" + version = "6.3.1" constraints = "~> 6.0" hashes = [ - "h1:nHTegsQYYUJZbaTnU1aMJBgnZUbR2zsfCl7DsL/kZjQ=", - "zh:05874671652a260b12d784cc46b0eea156f493a5f12e00368d1f6cb319156257", - "zh:0c7a3cae5a66e5c5efc3b25ba646a0d46bfe1fd3edba1f5a75f51aede85a9d1b", - "zh:174310010d08f13e36e53ff18e44a21dd040c89884ef190a192c6ce27926a912", - "zh:23d1d8731e518354ce6a83419f49101aece63882b0ca7c489f3c598cc6ea5d5e", - "zh:4e88953816daf11ab1681c32c7988d4e29476fc44f0959fe03173532cf5044de", - "zh:6fab07734ccf27f5afee4442abae2d33245eabf35519032ce1e2aad6961a640a", - "zh:7b2f324b918e161c892c29ee80d36c48ca8b891b8047e132fc701ca741e5ae72", - "zh:8ef4f0d691ade98082ef1f6b36e556468e5ab26e60021f0de0fb22e3acdfd990", - "zh:8f0f3e139faa8f2b9075bb9978dd683f4bab5ac91171bbb969addd04d7f0b90f", - "zh:97cb6d7fdf640237cc2f0ab830db8f878770968c59fd28298e9dddb8b9e6294d", - "zh:a17038d8747c6bb660e4c5981e8ffbbc33c66ba164868fd35d442e7f828a1e01", - "zh:aa9f4b7d947f7b11277b4e9ba7147f5594cf60a6589b7aac4344f73d1400d1c0", - "zh:c780b951e14d583ef6ffef9a934831b56ee157c50ed8e969c676a636810f7db1", - "zh:d8497bb2986fd76107b7208b33cc39281797164fdea09453e987b969a461befb", + "h1:kNCbU7jr9j09hqWwyXGFDN95Un28gWO2kY2yImv1MDY=", + "zh:25ae1cb97ec528e6b7e9330489f4a33acc0fa80b909c113a8445656bc524c5b9", + "zh:3e1f6300dc10e52a54f13352770ed79f25ff4ba9ac49b776c52a655a3488a20b", + "zh:4aaf2877ec22e63358d7c9cd48c7d7947d1a1dc4d03231f0af193d8975d5918a", + "zh:4b904a81fac12a2a7606c8d811cb9c4e13581adcaaa19e503a067ac95c515925", + "zh:54fe7e0dca04e698631a5b86bdd43ef09a31375e68f8f89970b4315cd5fc6312", + "zh:6b14f92cf62784eaf20f43ef58ce966735f30d43deeab077943bd410c0d8b8b2", + "zh:86c49a1c11c024b26b6750c446f104922a3fe8464d3706a5fb9a4a05c6ca0b0a", + "zh:8939fb6332c4a58c4e90245eb9f0110987ccafff06b45a7ed513f2759a2abe6a", + "zh:8b4068a78c1f357325d1151facdb1aff506b9cd79d2bab21a55651255a130e2f", + "zh:ae22f5e52f534f19811d7f9480b4eb442f12ff16367b3893abb4e449b029ff6b", + "zh:afae9cfd9d49002ddfea552aa4844074b9974bd56ff2c2458f2297fe0df56a5b", + "zh:bc7a434408eb16a4fbceec0bd86b108a491408b727071402ad572cdb1afa2eb7", + "zh:c8e4728ea2d2c6e3d2c1bc5e7d92ed1121c02bab687702ec2748e3a6a0844150", + "zh:f6314b2cff0c0a07a216501cda51b35e6a4c66a2418c7c9966ccfe701e01b6b0", "zh:fbd1fee2c9df3aa19cf8851ce134dea6e45ea01cb85695c1726670c285797e25", ] } diff --git a/infra/terraform/test-org/ci-project/gar.tf b/infra/terraform/test-org/ci-project/gar.tf index 91090bffe83..7b1d0ab56e3 100644 --- a/infra/terraform/test-org/ci-project/gar.tf +++ b/infra/terraform/test-org/ci-project/gar.tf @@ -1,6 +1,6 @@ module "artifact_registry" { source = "GoogleCloudPlatform/artifact-registry/google" - version = "~> 0.2" + version = "~> 0.3" location = "us" project_id = local.project_id diff --git a/infra/terraform/test-org/ci-project/sa.tf b/infra/terraform/test-org/ci-project/sa.tf index 7f30a2828c5..93098c77101 100644 --- a/infra/terraform/test-org/ci-project/sa.tf +++ b/infra/terraform/test-org/ci-project/sa.tf @@ -28,7 +28,7 @@ module "service_accounts" { module "oidc" { source = "terraform-google-modules/github-actions-runners/google//modules/gh-oidc" - version = "~> 3.0" + version = "~> 4.0" project_id = local.project_id pool_id = "cft-pool" diff --git a/infra/terraform/test-org/ci-project/versions.tf b/infra/terraform/test-org/ci-project/versions.tf index 16e4e21a7c2..708a6cc1b31 100644 --- a/infra/terraform/test-org/ci-project/versions.tf +++ b/infra/terraform/test-org/ci-project/versions.tf @@ -22,10 +22,10 @@ terraform { version = "~> 6.0" } google = { - version = ">= 5.26, < 6" + version = ">= 5.26, < 7" } google-beta = { - version = ">= 5.26, < 6" + version = ">= 5.26, < 7" } } } From 1cc4708b6508d8f45a142f452c46e81df4e8fa84 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 11 Oct 2024 20:33:56 +0200 Subject: [PATCH 1236/1371] chore(deps): update terraform google provider to v6 (#2583) Co-authored-by: Andrew Peabody --- .../test-org/test-cleanup/.terraform.lock.hcl | 160 +++++++++--------- .../test-org/test-cleanup/cleanup.tf | 4 +- .../test-org/test-cleanup/project.tf | 2 +- .../test-org/test-cleanup/versions.tf | 4 +- 4 files changed, 85 insertions(+), 85 deletions(-) diff --git a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl index 798229f1ce8..2ada4474b06 100644 --- a/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl +++ b/infra/terraform/test-org/test-cleanup/.terraform.lock.hcl @@ -2,121 +2,121 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/archive" { - version = "2.4.2" + version = "2.6.0" constraints = ">= 1.2.0, >= 1.3.0, < 3.0.0" hashes = [ - "h1:G4v6F6Lhqlo3EKGBKEK/kJRhNcQiRrhEdUiVpBHKHOA=", - "zh:08faed7c9f42d82bc3d406d0d9d4971e2d1c2d34eae268ad211b8aca57b7f758", - "zh:3564112ed2d097d7e0672378044a69b06642c326f6f1584d81c7cdd32ebf3a08", - "zh:53cd9afd223c15828c1916e68cb728d2be1cbccb9545568d6c2b122d0bac5102", - "zh:5ae4e41e3a1ce9d40b6458218a85bbde44f21723943982bca4a3b8bb7c103670", - "zh:5b65499218b315b96e95c5d3463ea6d7c66245b59461217c99eaa1611891cd2c", + "h1:rYAubRk7UHC/fzYqFV/VHc+7VIY01ugCxauyTYCNf9E=", + "zh:29273484f7423b7c5b3f5df34ccfc53e52bb5e3d7f46a81b65908e7a8fd69072", + "zh:3cba58ec3aea5f301caf2acc31e184c55d994cc648126cac39c63ae509a14179", + "zh:55170cd17dbfdea842852c6ae2416d057fec631ba49f3bb6466a7268cd39130e", + "zh:7197db402ba35631930c3a4814520f0ebe980ae3acb7f8b5a6f70ec90dc4a388", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:7f45b35a8330bebd184c2545a41782ff58240ed6ba947274d9881dd5da44b02e", - "zh:87e67891033214e55cfead1391d68e6a3bf37993b7607753237e82aa3250bb71", - "zh:de3590d14037ad81fc5cedf7cfa44614a92452d7b39676289b704a962050bc5e", - "zh:e7e6f2ea567f2dbb3baa81c6203be69f9cd6aeeb01204fd93e3cf181e099b610", - "zh:fd24d03c89a7702628c2e5a3c732c0dede56fa75a08da4a1efe17b5f881c88e2", - "zh:febf4b7b5f3ff2adff0573ef6361f09b6638105111644bdebc0e4f575373935f", + "zh:8bf7fe0915d7fb152a3a6b9162614d2ec82749a06dba13fab3f98d33c020ec4f", + "zh:8ce811844fd53adb0dabc9a541f8cb43aacfa7d8e39324e4bd3592b3428f5bfb", + "zh:bca795bca815b8ac90e3054c0a9ab1ccfb16eedbb3418f8ad473fc5ad6bf0ef7", + "zh:d9355a18df5a36cf19580748b23249de2eb445c231c36a353709f8f40a6c8432", + "zh:dc32cc32cfd8abf8752d34f2a783de0d3f7200c573b885ecb64ece5acea173b4", + "zh:ef498e20391bf7a280d0fd6fd6675621c85fbe4e92f0f517ae4394747db89bde", + "zh:f2bc5226c765b0c8055a7b6207d0fe1eb9484e3ec8880649d158827ac6ed3b22", ] } provider "registry.terraform.io/hashicorp/google" { - version = "5.39.1" - constraints = ">= 3.38.0, >= 3.43.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 4.78.0, >= 5.22.0, < 6.0.0" + version = "6.6.0" + constraints = ">= 3.38.0, >= 3.43.0, >= 3.53.0, >= 4.23.0, >= 4.28.0, >= 5.31.0, >= 5.41.0, < 7.0.0" hashes = [ - "h1:6AJPkCW3JqdpVO+HCb8g0mzZyZXPUEt/+3BTmCGnTTg=", - "zh:28763694f5f06a98a4745f0e37f8f8ae412e48a6cfd9b7339599abf89e7577c5", - "zh:469a415b398a08c8b479e32cb24b028791eac57bdab3c15d8b987290e55bfa55", - "zh:4a1f97c58f22379f7c98c7bfe94c923d58c41cb9801679e1a54f85c9848af48c", - "zh:4b2bc066b977cf57de895d1a68f47cc4df48cc7ce0054f8c3de06f6cd63f263d", - "zh:6436aa9a7721079f0784b3ccc0da953337f96500bd34a5ba927fe1833392c54a", - "zh:6b0833e932bc904dee2ca320d5efb785766fd4474c041128868232cc78a0e764", - "zh:8c2a47a571dce3b825fd90789d1af3699cdd615f06e5bf13258585d1560222b8", - "zh:ae5b4cdc76720165023870bc9899bb7de9aee8f4ead95dd368a6ebad95176fe4", - "zh:c30307a74d64f61fbd5a6b5e8658e4d11152ee1f54f43a02c0fe734e5f0f529a", - "zh:e892a200145641b8ae55ba0f69cf83454267b41e0f2d3b6932d4d917d8112911", - "zh:ecd95d22838181ae578eba90154a972661bcdc779f728d71957c059b56c7fd61", + "h1:mllWOZFO8u2kD2kRTdDDAa8Jt+vb8Uxhf6C0lwLxoz8=", + "zh:0c181f9b9f0ab81731e5c4c2d20b6d342244506687437dad94e279ef2a588f68", + "zh:12a4c333fc0ba670e87f09eb574e4b7da90381f9929ef7c866048b6841cc8a6a", + "zh:15c277c2052df89429051350df4bccabe4cf46068433d4d8c673820d9756fc00", + "zh:35d1663c81b81cd98d768fa7b80874b48c51b27c036a3c598a597f653374d3c8", + "zh:56b268389758d544722a342da4174c486a40ffa2a49b45a06111fe31c6c9c867", + "zh:abd3ea8c3a62928ba09ba7eb42b52f53e682bd65e92d573f1739596b5a9a67b1", + "zh:be55a328d61d9db58690db74ed43614111e1105e5e52cee15acaa062df4e233e", + "zh:ce2317ce9fd02cf14323f9e061c43a415b4ae9b3f96046460d0e6b6529a5aa6c", + "zh:d54a6d8e031c824f1de21b93c3e01ed7fec134b4ae55223d08868c6168c98e47", + "zh:d8c6e33b5467c6eb5a970adb251c4c8194af12db5388cff9d4b250294eae4daa", + "zh:f49e4cc9c0b55b3bec7da64dd698298345634a5df372228ee12aa45e57982f64", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } provider "registry.terraform.io/hashicorp/google-beta" { - version = "5.39.1" - constraints = ">= 3.38.0, >= 3.43.0, >= 4.11.0, >= 5.22.0, < 6.0.0" + version = "6.6.0" + constraints = ">= 3.38.0, >= 3.43.0, >= 4.11.0, >= 5.41.0, < 7.0.0" hashes = [ - "h1:KOBwBBNtenF6bAgQlvIdtx4tfnrl2iXNRyAYAYfpqA4=", - "zh:07fcc7db2fdc302627f2cddd16fe6b2bf1e8a0fd24e41172afaee96dcb7894bd", - "zh:0f17e28afe3322b692cf912b09378333f59e51d3e62da27e8a337e86b34cb9e9", - "zh:252abaeb1dd9739f7b919d1ed3728c20f266c761125b6c33dc17fbbf08af77fb", - "zh:313c8db8dfb4b80d44aff470d6dcc2c7f5f6dbf4484717636e7fe42a401f5dff", - "zh:353ecd422983e3d993c7daa3fb0d7fd6663b663dfd95894734dc8f5261dba6bf", - "zh:486ffdfe5e834a03dd374813451fb6ec15392934b1adfadac0b9c2485f6f8e27", - "zh:847a88f8c392efd0c84e85d716d2ab7ec3a2d52c213c6b79db67aedd31b23a81", - "zh:9569b0d3029198d5dac39a7d714553d3456eb9db885393965f585b33ded60c7e", - "zh:b79475e63c78a24c70500c0e28e7526104b385fd5fa08f332d8bf0c94d6597de", - "zh:bf70c9fcd96d2abd1d3682cfd39075709745185b874a005465c6c067ce102dee", - "zh:d644a1043481d16a5788847b4204933f528bf65fb571546aec62f7da19d7e6b4", + "h1:B4Wrkju7TTLWlCIDh+Vh4knFQS3wmFm0NHICGjCNO3k=", + "zh:1bf8f840a9a4ac1e120a6155225a0defbfa7f07b19c9bb37b45f95006b020ccf", + "zh:39077f037e611bdbd6af42e51b2881ea03d62ad55f21b42f90dc09e2cf812753", + "zh:64313dd2158749e3a4f2759edb896a9efa2c2afc59feb38d3af57e31eaa64480", + "zh:6bec8b21a20f50d81ca2e633cdaf1144bb8615a1dedf50e87c86f4eda3467b05", + "zh:74566c568410997fe966ef44130d19d640dbb427ffec3de93f0fd2affeb6fd8f", + "zh:8fe1c42d3229d0fe64961b7fa480689408eff3e5be62eb108d6aa9d36a10a769", + "zh:9593b59efd271623f45d133164eae16676130439727a625c10d3b929d2f28671", + "zh:a72c71431523d1f0d0d8baf7141ff16aa5938c0edf27e05dc4d1dc3455a50d01", + "zh:cbc96a215575d94601ec315a2db8802b521e904aaecf2602bce0110786cfa81f", + "zh:e71c3e06e861d5c9d1782b0bbaef93b5b9defa926304f90ddd22bc9b69ee14bd", + "zh:f559eefcc67d771ce0157e7ec021c1025b8af2a8c7ca89e1f5ac812e16bf9760", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } provider "registry.terraform.io/hashicorp/null" { - version = "3.2.2" + version = "3.2.3" constraints = ">= 2.1.0, < 4.0.0" hashes = [ - "h1:zT1ZbegaAYHwQa+QwIFugArWikRJI9dqohj8xb0GY88=", - "zh:3248aae6a2198f3ec8394218d05bd5e42be59f43a3a7c0b71c66ec0df08b69e7", - "zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a", - "zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3", - "zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606", - "zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546", - "zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539", - "zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452", + "h1:+AnORRgFbRO6qqcfaQyeX80W0eX3VmjadjnUFUJTiXo=", + "zh:22d062e5278d872fe7aed834f5577ba0a5afe34a3bdac2b81f828d8d3e6706d2", + "zh:23dead00493ad863729495dc212fd6c29b8293e707b055ce5ba21ee453ce552d", + "zh:28299accf21763ca1ca144d8f660688d7c2ad0b105b7202554ca60b02a3856d3", + "zh:55c9e8a9ac25a7652df8c51a8a9a422bd67d784061b1de2dc9fe6c3cb4e77f2f", + "zh:756586535d11698a216291c06b9ed8a5cc6a4ec43eee1ee09ecd5c6a9e297ac1", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:913a929070c819e59e94bb37a2a253c228f83921136ff4a7aa1a178c7cce5422", - "zh:aa9015926cd152425dbf86d1abdbc74bfe0e1ba3d26b3db35051d7b9ca9f72ae", - "zh:bb04798b016e1e1d49bcc76d62c53b56c88c63d6f2dfe38821afef17c416a0e1", - "zh:c23084e1b23577de22603cff752e59128d83cfecc2e6819edadd8cf7a10af11e", + "zh:9d5eea62fdb587eeb96a8c4d782459f4e6b73baeece4d04b4a40e44faaee9301", + "zh:a6355f596a3fb8fc85c2fb054ab14e722991533f87f928e7169a486462c74670", + "zh:b5a65a789cff4ada58a5baffc76cb9767dc26ec6b45c00d2ec8b1b027f6db4ed", + "zh:db5ab669cf11d0e9f81dc380a6fdfcac437aea3d69109c7aef1a5426639d2d65", + "zh:de655d251c470197bcbb5ac45d289595295acb8f829f6c781d4a75c8c8b7c7dd", + "zh:f5c68199f2e6076bce92a12230434782bf768103a427e9bb9abee99b116af7b5", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.6.2" + version = "3.6.3" constraints = ">= 2.1.0, >= 2.2.0, < 4.0.0" hashes = [ - "h1:wmG0QFjQ2OfyPy6BB7mQ57WtoZZGGV07uAPQeDmIrAE=", - "zh:0ef01a4f81147b32c1bea3429974d4d104bbc4be2ba3cfa667031a8183ef88ec", - "zh:1bcd2d8161e89e39886119965ef0f37fcce2da9c1aca34263dd3002ba05fcb53", - "zh:37c75d15e9514556a5f4ed02e1548aaa95c0ecd6ff9af1119ac905144c70c114", - "zh:4210550a767226976bc7e57d988b9ce48f4411fa8a60cd74a6b246baf7589dad", - "zh:562007382520cd4baa7320f35e1370ffe84e46ed4e2071fdc7e4b1a9b1f8ae9b", - "zh:5efb9da90f665e43f22c2e13e0ce48e86cae2d960aaf1abf721b497f32025916", - "zh:6f71257a6b1218d02a573fc9bff0657410404fb2ef23bc66ae8cd968f98d5ff6", + "h1:Fnaec9vA8sZ8BXVlN3Xn9Jz3zghSETIKg7ch8oXhxno=", + "zh:04ceb65210251339f07cd4611885d242cd4d0c7306e86dda9785396807c00451", + "zh:448f56199f3e99ff75d5c0afacae867ee795e4dfda6cb5f8e3b2a72ec3583dd8", + "zh:4b4c11ccfba7319e901df2dac836b1ae8f12185e37249e8d870ee10bb87a13fe", + "zh:4fa45c44c0de582c2edb8a2e054f55124520c16a39b2dfc0355929063b6395b1", + "zh:588508280501a06259e023b0695f6a18149a3816d259655c424d068982cbdd36", + "zh:737c4d99a87d2a4d1ac0a54a73d2cb62974ccb2edbd234f333abd079a32ebc9e", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:9647e18f221380a85f2f0ab387c68fdafd58af6193a932417299cdcae4710150", - "zh:bb6297ce412c3c2fa9fec726114e5e0508dd2638cad6a0cb433194930c97a544", - "zh:f83e925ed73ff8a5ef6e3608ad9225baa5376446349572c2449c0c0b3cf184b7", - "zh:fbef0781cb64de76b1df1ca11078aecba7800d82fd4a956302734999cfd9a4af", + "zh:a357ab512e5ebc6d1fda1382503109766e21bbfdfaa9ccda43d313c122069b30", + "zh:c51bfb15e7d52cc1a2eaec2a903ac2aff15d162c172b1b4c17675190e8147615", + "zh:e0951ee6fa9df90433728b96381fb867e3db98f66f735e0c3e24f8f16903f0ad", + "zh:e3cdcb4e73740621dabd82ee6a37d6cfce7fee2a03d8074df65086760f5cf556", + "zh:eff58323099f1bd9a0bec7cb04f717e7f1b2774c7d612bf7581797e1622613a0", ] } provider "registry.terraform.io/hashicorp/time" { - version = "0.12.0" + version = "0.12.1" constraints = ">= 0.5.0" hashes = [ - "h1:YV9bUZSUihGBKuwqNmRnm4wKQf11pr3hnYcarpoPoQQ=", - "zh:019a4c09af254ef80b72cf0d843dfe72d99483e227138cf5b514a1b9977ab4c3", - "zh:0ae310ec740ebc6f275529507d60bb747d0bf39e72fc5a2fa90d74486006132c", - "zh:13d6aec117f05237fbf8c7d91d6ebb19797b00aa87e7a812642d3ea4738a394e", - "zh:2e87abbc261f9317d0c2ef26e01d5fabf77679da7d2cac6f47df7d198f720989", - "zh:4a6d471176ce0264455aa7d5457b8702f78400010c201c1719708958a1b7b647", + "h1:6BhxSYBJdBBKyuqatOGkuPKVenfx6UmLdiI13Pb3his=", + "zh:090023137df8effe8804e81c65f636dadf8f9d35b79c3afff282d39367ba44b2", + "zh:26f1e458358ba55f6558613f1427dcfa6ae2be5119b722d0b3adb27cd001efea", + "zh:272ccc73a03384b72b964918c7afeb22c2e6be22460d92b150aaf28f29a7d511", + "zh:438b8c74f5ed62fe921bd1078abe628a6675e44912933100ea4fa26863e340e9", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:8978d5474a6da30bc0ad21c17db188d6918cacf3df3f6506b72ef3a268d53e2e", - "zh:b109efe138dfcb45dc04a9cc6809d185ab8b0ebc12040847c2dac430fda5af68", - "zh:b58e039b9106ac0a8de3c07f53b5279d7f0215fb35f2d23df642dfce0875382f", - "zh:ba2cbb2e515922d13efe3a46647be84f5426fcfcaa0f1520b3efeab8db847ed3", - "zh:c6c1ef1f26f25bca3abb5e07fa33dca37ed39cc26d0ff877964f2ffe5edd618c", - "zh:f8e171f923b7d2e789abd034072465dec3e6133c3a7644b7a7a965a74d52224e", + "zh:85c8bd8eefc4afc33445de2ee7fbf33a7807bc34eb3734b8eefa4e98e4cddf38", + "zh:98bbe309c9ff5b2352de6a047e0ec6c7e3764b4ed3dfd370839c4be2fbfff869", + "zh:9c7bf8c56da1b124e0e2f3210a1915e778bab2be924481af684695b52672891e", + "zh:d2200f7f6ab8ecb8373cda796b864ad4867f5c255cff9d3b032f666e4c78f625", + "zh:d8c7926feaddfdc08d5ebb41b03445166df8c125417b28d64712dccd9feef136", + "zh:e2412a192fc340c61b373d6c20c9d805d7d3dee6c720c34db23c2a8ff0abd71b", + "zh:e6ac6bba391afe728a099df344dbd6481425b06d61697522017b8f7a59957d44", ] } diff --git a/infra/terraform/test-org/test-cleanup/cleanup.tf b/infra/terraform/test-org/test-cleanup/cleanup.tf index e50a4cce5bc..bce9f9ae44b 100644 --- a/infra/terraform/test-org/test-cleanup/cleanup.tf +++ b/infra/terraform/test-org/test-cleanup/cleanup.tf @@ -16,14 +16,14 @@ module "scheduler-app-engine" { source = "terraform-google-modules/project-factory/google//modules/app_engine" - version = "~> 15.0" + version = "~> 17.0" location_id = local.app_location project_id = module.cft-manager-project.project_id } module "projects_cleaner" { source = "terraform-google-modules/scheduled-function/google//modules/project_cleanup" - version = "~> 4.3" + version = "~> 6.0" job_schedule = "17 * * * *" max_project_age_in_hours = "6" diff --git a/infra/terraform/test-org/test-cleanup/project.tf b/infra/terraform/test-org/test-cleanup/project.tf index c35dc075898..e81738d508b 100644 --- a/infra/terraform/test-org/test-cleanup/project.tf +++ b/infra/terraform/test-org/test-cleanup/project.tf @@ -16,7 +16,7 @@ module "cft-manager-project" { source = "terraform-google-modules/project-factory/google" - version = "~> 15.0" + version = "~> 17.0" name = "cft-project-manager" random_project_id = true diff --git a/infra/terraform/test-org/test-cleanup/versions.tf b/infra/terraform/test-org/test-cleanup/versions.tf index bbda7795e22..ad3410585ba 100644 --- a/infra/terraform/test-org/test-cleanup/versions.tf +++ b/infra/terraform/test-org/test-cleanup/versions.tf @@ -23,11 +23,11 @@ terraform { } google = { source = "hashicorp/google" - version = ">= 3.38, < 6" + version = ">= 3.38, < 7" } google-beta = { source = "hashicorp/google-beta" - version = ">= 3.38, < 6" + version = ">= 3.38, < 7" } null = { source = "hashicorp/null" From 1aa043c45e2e2bff533d74435e48575edb7ec91a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 11 Oct 2024 20:41:37 +0200 Subject: [PATCH 1237/1371] chore(deps): update terraform google to v6 (#2584) --- .../org-iam-policy/.terraform.lock.hcl | 38 ++++++++++++------- .../test-org/org-iam-policy/versions.tf | 2 +- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl b/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl index 308c33eb91a..ccaf5262caa 100644 --- a/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl +++ b/infra/terraform/test-org/org-iam-policy/.terraform.lock.hcl @@ -2,21 +2,31 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/google" { - version = "5.10.0" - constraints = ">= 3.39.0, < 6.0.0" + version = "6.5.0" + constraints = ">= 3.39.0, < 7.0.0" hashes = [ - "h1:3kD/GqYmZkA97ebToXu6qhhrwo+GQNmqq9xv30Qkhmw=", - "zh:0f6a1feb5b3a128be6ef5fe0400ed800310a67e799c18aec7442161bb6d3ba36", - "zh:13d591ba78e424c94ce5caaf176ab6b087b0e3af08a7b6bcd963673698cdefda", - "zh:3bef54a2b24b06eef99f3df02e0fe4ac97f018c89f83e0faeb4ade921962565b", - "zh:3f3755b8f5b9db1611d42a02c21f03c54577e4aad3cf93323792f131c671c050", - "zh:61516eec734714ac48b565bee93cc2532160d1b4bd0320753799b829083b7060", - "zh:9160848ad0b9becb522a0744dcb89474849906aa2436ed945c658fe201a724b0", - "zh:aa5e79b01949cfedd874bf52958f90cf8f7d202600126c872127a9a156a3c17b", - "zh:cef73a67031008b7d7ef3edfbcd5e1a9b04c0f2580d815401248025b741bc8e4", - "zh:d2ad21ff9e9d2ad04146591c1b5784075e6df73e2bd243efd8d227d764b80b6e", + "h1:7G5Ksk/gin2QBocux+AGihR8PFBi97Uegb1mnCpgp2U=", + "h1:Bn62acdFX335QgaXxzi1nV/Y3IR7MnlUo4o9WJqFmVM=", + "h1:EK0N1nYGk+qSbuyf1yr6K/sWuak90U6c2oeoRmByIk0=", + "h1:LSHH24FXWii7HkBd7vjh0n/pTgi57utcd90GLQ57xAA=", + "h1:MfrVKPYK6guw9lduDwnqUQs70z9DYAcZO6tE87pt8no=", + "h1:azHVE+umZeXbFICAk746gBiQTQ4/98FqtUio3z5CJEk=", + "h1:nGxZkoMD8HRfpNkHWb7exCEasQVFncIgL9UHFSsa1cY=", + "h1:p18nqSzt1XjrMFoGSN5486MHcJcIjcEm64S1ZX2yqRE=", + "h1:p27W4iBQHrPuKEDzL11GikNjoM5HtsShMCFkojx4m1A=", + "h1:qKHzN9B+9uOjHDXxanQJanBdsd0bzCP3egUjIcyYxSY=", + "h1:r8xOzBEmymR2UJiW2HhFqA0WyZselrKpa93RXjpQZg8=", + "zh:14101a38e880d4a1ef14c0a24476b008a3b577540a260a246a471bcfb5c31f4c", + "zh:478a7b0810956d39843e785262ab8162324a7412c3f6cf1ceb43977e2c05f22e", + "zh:6c9b583abcbaa2093b1b55494ac08851bd3364919fe86850a9c3e8f6c46851d4", + "zh:7c400eb5488221ba7ea48725ab43db1464cefd96cb29a24e63fe1950666b465f", + "zh:82931b2c186403753356a73878d36efc209c9e5ae46d0b609bb7ca38aece931d", + "zh:87e7966ef7067de3684f658251cdede057be419bbfeaaad935ab6f501024046a", + "zh:a2f4aaa3b9260732a53f78c8053eb2cbcee2abf11d3d245c58f3065423ad30ab", + "zh:bbc4c3ca9d51287e77130fc95880792007dd919b9b5396433f9eed737119c6c3", + "zh:edcda54d37be1b8d4cbe029e30df6a228e0be3887831b892c11536502d87e840", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f58b145081d20bce52e14bee0de73f5c018bc39b8c4736e23e1329df32f8bd45", - "zh:fb82f6b5d1f992243ab8fe417659cdf9831202cf1e16fe7593d3967888b035cc", + "zh:f95d92ca2ac527442f6767a217b8a557ba6b2d1915c39efba412382e986e4c3e", + "zh:f96148c3742126219b810a687551284460a8d78aa66efbfd2c58880f48049dda", ] } diff --git a/infra/terraform/test-org/org-iam-policy/versions.tf b/infra/terraform/test-org/org-iam-policy/versions.tf index 8a03473ef2e..2b2acc63e6f 100644 --- a/infra/terraform/test-org/org-iam-policy/versions.tf +++ b/infra/terraform/test-org/org-iam-policy/versions.tf @@ -19,7 +19,7 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 3.39, < 6" + version = ">= 3.39, < 7" } } } From b0e84232a182be9a6fa1fdcb3ab1ea71d8ae063d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 11 Oct 2024 20:54:21 +0200 Subject: [PATCH 1238/1371] chore(deps): update github/codeql-action action to v3.26.11 (#2651) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 60c4ed75baf..669fd42a78e 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/init@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3.26.11 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/autobuild@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3.26.11 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/analyze@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3.26.11 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1947fb4118a..80e639617d7 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/upload-sarif@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3.26.11 with: sarif_file: results.sarif From 7f711bd9f8b2e7e687b54859734c0dd34ea56c90 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Oct 2024 20:10:16 +0200 Subject: [PATCH 1239/1371] chore(deps): update actions/upload-artifact action to v4.4.2 (#2655) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index b0aa7c25e25..b881dc6688f 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4.4.2 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 80e639617d7..7888f90b145 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4.4.2 with: name: SARIF file path: results.sarif From 222abd0c38387ec61bc8a2b3a9831ef3f009355f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Oct 2024 20:12:05 +0200 Subject: [PATCH 1240/1371] chore(deps): update actions/checkout action to v4.2.1 (#2654) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 0cf26678352..19c646031ec 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 669fd42a78e..cc1ebfce1e0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Install Go if: matrix.language == 'go' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 8ad9ed75f8b..2e510f24697 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 9bc404adc80..2db950b723a 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index a04b0a3f5f8..3b6260901a5 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 1f0a7dd9df4..fe586f14888 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: tflint-ruleset-blueprint/go.mod @@ -45,7 +45,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Set up Go uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index a4e3c6e5b93..56e99914791 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@d632683dd7b4114ad314bca15554477dd762a938' # v4.2.0 + - uses: 'actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871' # v4.2.1 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform uses: 'actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9' # v4.0.2 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index c15ae4d2c7c..344f06f580d 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index b881dc6688f..1684795ee85 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: cli/go.mod diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 2b09b4e28ab..4fe13e7d375 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -17,7 +17,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Set up Go uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7888f90b145..13f0d289de8 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: persist-credentials: false diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index be81ba63289..807610f2319 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index de716252bd0..47f87c9573a 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 610b999c909..7124f8646ed 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -30,7 +30,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: ref: master - name: Update Tools From cdcf73801b39bd784a53bde86331e7a1add994c9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Oct 2024 20:16:50 +0200 Subject: [PATCH 1241/1371] chore(deps): update actions/upload-artifact action to v4.4.3 (#2656) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 1684795ee85..483693dd515 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4.4.2 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 13f0d289de8..b13af5d6c87 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4.4.2 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: SARIF file path: results.sarif From 4b08b37b439df0562ee3f1430822842ca8227382 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Oct 2024 20:24:35 +0200 Subject: [PATCH 1242/1371] chore(deps): update actions/cache action to v4.1.1 (#2653) --- .github/workflows/lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 56e99914791..1267bb434a6 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -34,7 +34,7 @@ jobs: - uses: 'actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871' # v4.2.1 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform - uses: 'actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9' # v4.0.2 + uses: 'actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8' # v4.1.1 with: path: | ${{ github.workspace }}/test/integration/tmp/.terraform From 52d42841f919850f09ac1185226d840d7309f759 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Oct 2024 20:30:02 +0200 Subject: [PATCH 1243/1371] chore(deps): update github/codeql-action action to v3.26.12 (#2652) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index cc1ebfce1e0..d5f8f9c072b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3.26.11 + uses: github/codeql-action/init@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3.26.11 + uses: github/codeql-action/autobuild@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3.26.11 + uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b13af5d6c87..e0056f52b2e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3.26.11 + uses: github/codeql-action/upload-sarif@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 with: sarif_file: results.sarif From 623adf0bdc61d289b7f59a594b8ddbac8de60be1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Oct 2024 20:58:08 +0200 Subject: [PATCH 1244/1371] chore(deps): update github/codeql-action action to v3.26.13 (#2657) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d5f8f9c072b..74f80b25438 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/init@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/autobuild@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/analyze@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e0056f52b2e..dfcfdf30ef1 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/upload-sarif@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 with: sarif_file: results.sarif From e35bc84c74ab75c1eeb58799c5d1123d0202b34c Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:23:58 -0500 Subject: [PATCH 1245/1371] chore: Update Tools to 1.22.15 (#2643) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 3929257ac69..164c3175820 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.9.7 +TERRAFORM_VERSION := 1.9.8 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 495.0.0 +CLOUD_SDK_VERSION := 496.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,9 +25,9 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.67.16 +TERRAGRUNT_VERSION := 0.68.3 # Updated by Update Tooling Workflow -KUSTOMIZE_VERSION := 5.4.3 +KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow KPT_VERSION := 1.0.0-beta.55 PROTOC_VERSION := 23.4 @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.14 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.15 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 341ee67ad027d7891cf73f8fffa7802de17d3b10 Mon Sep 17 00:00:00 2001 From: Arthur de Lapertosa Lisboa Date: Wed, 16 Oct 2024 17:39:04 -0300 Subject: [PATCH 1246/1371] chore: add Elo to terraform-google-vm (#2658) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 6bb0f1134f0..71572cc2030 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -527,7 +527,7 @@ locals { name = "terraform-google-vm" org = "terraform-google-modules" description = "Provisions VMs in Google Cloud" - owners = local.adc_common_admins + owners = concat(["erlanderlo"], local.adc_common_admins) topics = local.common_topics.compute }, { From c6e037595d38c24914567c3bbfa6ee1e7942d5c7 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 16 Oct 2024 21:05:23 +0000 Subject: [PATCH 1247/1371] chore(infra): update github provider --- .../test-org/github/.terraform.lock.hcl | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index 6ab2bbedc79..af5cd4e8616 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,24 +2,24 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "6.3.0" + version = "6.3.1" constraints = "~> 6.0" hashes = [ - "h1:LEs8NwSWwYGHxmbJvGT1w3XeAM6pogAmskY8XavuWDs=", - "zh:04fe3b820fe8c247b98b9d6810b8bb84d3e8ac08054faf450c42489815ef4bfa", - "zh:24096b2d16208d1411a58bdb8df8cd9f0558fb9054ffeb95c4e7e90a9a34f976", - "zh:2b27332adf8d08fbdc08b5f55e87691bce02c311219e6deb39c08753bd93db6d", - "zh:335dd6c2d50fcdce2ef0cc194465fdf9df1f5fdecc805804c78df30a4eb2e11e", - "zh:383a6879565969dbdf5405b651cd870c09c615dbd3df2554e5574d39d161c98c", - "zh:4903038a6bc605f372e1569695db4a2e2862e1fc6cf4faf9e13c5f8f4fa2ed94", - "zh:4cc4dffbee8b28102d38abe855b7440d4f4226261b43fda2ec289b48c3de1537", - "zh:57c30c6fe0b64fa86906700ceb1691562b62f2b1ef0404952aeb4092acb6acb3", - "zh:7bf518396fb00e4f55c406f2ffb5583b43278682a92f0864a0c47e3a74627bbb", - "zh:93c2c5cb90f74ad3c0874b7f7d8a866f28a852f0eda736c6aef8ce65d4061f4d", - "zh:9562a82a6193a2db110fb34d1aceeedb27c0a640058dce9c31b37b17eeb5f4e7", - "zh:ac97f2d111703a219f27fcbf5e89460ea98f9168badcc0913c8b214a37f76814", - "zh:c882af4d33b761ec198cedac212ab1c114d97540119dc97daca38021ab3edd0a", - "zh:c9ffd0a37f07a93af02a1caa90bfbea27a952d3e5badf4aab866ec71cdb184a3", + "h1:kNCbU7jr9j09hqWwyXGFDN95Un28gWO2kY2yImv1MDY=", + "zh:25ae1cb97ec528e6b7e9330489f4a33acc0fa80b909c113a8445656bc524c5b9", + "zh:3e1f6300dc10e52a54f13352770ed79f25ff4ba9ac49b776c52a655a3488a20b", + "zh:4aaf2877ec22e63358d7c9cd48c7d7947d1a1dc4d03231f0af193d8975d5918a", + "zh:4b904a81fac12a2a7606c8d811cb9c4e13581adcaaa19e503a067ac95c515925", + "zh:54fe7e0dca04e698631a5b86bdd43ef09a31375e68f8f89970b4315cd5fc6312", + "zh:6b14f92cf62784eaf20f43ef58ce966735f30d43deeab077943bd410c0d8b8b2", + "zh:86c49a1c11c024b26b6750c446f104922a3fe8464d3706a5fb9a4a05c6ca0b0a", + "zh:8939fb6332c4a58c4e90245eb9f0110987ccafff06b45a7ed513f2759a2abe6a", + "zh:8b4068a78c1f357325d1151facdb1aff506b9cd79d2bab21a55651255a130e2f", + "zh:ae22f5e52f534f19811d7f9480b4eb442f12ff16367b3893abb4e449b029ff6b", + "zh:afae9cfd9d49002ddfea552aa4844074b9974bd56ff2c2458f2297fe0df56a5b", + "zh:bc7a434408eb16a4fbceec0bd86b108a491408b727071402ad572cdb1afa2eb7", + "zh:c8e4728ea2d2c6e3d2c1bc5e7d92ed1121c02bab687702ec2748e3a6a0844150", + "zh:f6314b2cff0c0a07a216501cda51b35e6a4c66a2418c7c9966ccfe701e01b6b0", "zh:fbd1fee2c9df3aa19cf8851ce134dea6e45ea01cb85695c1726670c285797e25", ] } From d5872d93a82c6983dd8c0a2a3c4f1f1ff75cf02b Mon Sep 17 00:00:00 2001 From: Jieyu Tian Date: Thu, 17 Oct 2024 10:43:39 -0400 Subject: [PATCH 1248/1371] feat: Preserve output types in bpmetadata interface (#2647) --- cli/bpmetadata/cmd.go | 3 + cli/bpmetadata/tfconfig.go | 22 +++++++ cli/bpmetadata/tfconfig_test.go | 58 ++++++++++++++++++- ...faces_with_full_output_types_metadata.yaml | 17 ++++++ ...rfaces_with_new_output_types_metadata.yaml | 16 +++++ ...es_with_partial_output_types_metadata.yaml | 16 +++++ ...rfaces_without_output_types_metadata.yaml} | 2 +- 7 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 cli/testdata/bpmetadata/metadata/interfaces_with_full_output_types_metadata.yaml create mode 100644 cli/testdata/bpmetadata/metadata/interfaces_with_new_output_types_metadata.yaml create mode 100644 cli/testdata/bpmetadata/metadata/interfaces_with_partial_output_types_metadata.yaml rename cli/testdata/bpmetadata/metadata/{interfaces_without_types_metadata.yaml => interfaces_without_output_types_metadata.yaml} (86%) diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index 1a4958d9690..ab43dab1625 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -256,6 +256,9 @@ func CreateBlueprintMetadata(bpPath string, bpMetadataObj *BlueprintMetadata) (* // Merge existing connections (if any) into the newly generated interfaces mergeExistingConnections(bpMetadataObj.Spec.Interfaces, existingInterfaces) + // Merge existing output types (if any) into the newly generated interfaces + mergeExistingOutputTypes(bpMetadataObj.Spec.Interfaces, existingInterfaces) + // get blueprint requirements rolesCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfRolesFileName) svcsCfgPath := path.Join(repoDetails.Source.BlueprintRootPath, tfServicesFileName) diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index 819feda47cd..e589bdc8558 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -522,6 +522,28 @@ func mergeExistingConnections(newInterfaces, existingInterfaces *BlueprintInterf } } +// mergeExistingOutputTypes merges existing output types from an old BlueprintInterface into a new one, +// preserving manually authored types. +func mergeExistingOutputTypes(newInterfaces, existingInterfaces *BlueprintInterface) { + if existingInterfaces == nil { + return // Nothing to merge if existingInterfaces is nil + } + + existingOutputs := make(map[string]*BlueprintOutput) + for _, output := range existingInterfaces.Outputs { + existingOutputs[output.Name] = output + } + + for i, output := range newInterfaces.Outputs { + if output.Type != nil { + continue + } + if existingOutput, ok := existingOutputs[output.Name]; ok && existingOutput.Type != nil { + newInterfaces.Outputs[i].Type = existingOutput.Type + } + } +} + // UpdateOutputTypes generates the terraform.tfstate file, extracts output types from it, // and updates the output types in the provided BlueprintInterface. func updateOutputTypes(bpPath string, bpInterfaces *BlueprintInterface) error { diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index 123d86a95d3..b65a44dbef7 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -346,6 +346,62 @@ func TestMergeExistingConnections(t *testing.T) { } } +func TestMergeExistingOutputTypes(t *testing.T) { + tests := []struct { + name string + newInterfacesFile string + existingInterfacesFile string + expectedInterfacesFile string + }{ + { + name: "No existing types", + newInterfacesFile: "interfaces_without_output_types_metadata.yaml", + existingInterfacesFile: "interfaces_without_output_types_metadata.yaml", + expectedInterfacesFile: "interfaces_without_output_types_metadata.yaml", + }, + { + name: "One complex existing type is preserved", + newInterfacesFile: "interfaces_without_output_types_metadata.yaml", + existingInterfacesFile: "interfaces_with_partial_output_types_metadata.yaml", + expectedInterfacesFile: "interfaces_with_partial_output_types_metadata.yaml", + }, + { + name: "All existing types (both simple and complex) are preserved", + newInterfacesFile: "interfaces_without_output_types_metadata.yaml", + existingInterfacesFile: "interfaces_with_full_output_types_metadata.yaml", + expectedInterfacesFile: "interfaces_with_full_output_types_metadata.yaml", + }, + { + name: "Previous types are not overwriting newly generated types", + newInterfacesFile: "interfaces_with_new_output_types_metadata.yaml", + existingInterfacesFile: "interfaces_with_partial_output_types_metadata.yaml", + expectedInterfacesFile: "interfaces_with_new_output_types_metadata.yaml", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Load new interfaces from file + newInterfaces, err := UnmarshalMetadata(metadataTestdataPath, tt.newInterfacesFile) + require.NoError(t, err) + + // Load existing interfaces from file + existingInterfaces, err := UnmarshalMetadata(metadataTestdataPath, tt.existingInterfacesFile) + require.NoError(t, err) + + // Perform the merge + mergeExistingOutputTypes(newInterfaces.Spec.Interfaces, existingInterfaces.Spec.Interfaces) + + // Load expected interfaces from file + expectedInterfaces, err := UnmarshalMetadata(metadataTestdataPath, tt.expectedInterfacesFile) + require.NoError(t, err) + + // Assert that the merged interfaces match the expected outcome + assert.Equal(t, expectedInterfaces.Spec.Interfaces, newInterfaces.Spec.Interfaces) + }) + } +} + func TestTFIncompleteProviderVersions(t *testing.T) { tests := []struct { name string @@ -429,7 +485,7 @@ func TestUpdateOutputTypes(t *testing.T) { { name: "Update output types from state", bpPath: "sample-module", - interfacesFile: "interfaces_without_types_metadata.yaml", + interfacesFile: "interfaces_without_output_types_metadata.yaml", stateFile: "terraform.tfstate", expectedOutputs: []*BlueprintOutput{ { diff --git a/cli/testdata/bpmetadata/metadata/interfaces_with_full_output_types_metadata.yaml b/cli/testdata/bpmetadata/metadata/interfaces_with_full_output_types_metadata.yaml new file mode 100644 index 00000000000..2359bc181a1 --- /dev/null +++ b/cli/testdata/bpmetadata/metadata/interfaces_with_full_output_types_metadata.yaml @@ -0,0 +1,17 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-network +spec: + interfaces: + outputs: + - name: cluster_id + description: Cluster ID + type: string + - name: endpoint + description: Cluster endpoint + type: + - list + - - object: + - host: string + port: number \ No newline at end of file diff --git a/cli/testdata/bpmetadata/metadata/interfaces_with_new_output_types_metadata.yaml b/cli/testdata/bpmetadata/metadata/interfaces_with_new_output_types_metadata.yaml new file mode 100644 index 00000000000..424365c833c --- /dev/null +++ b/cli/testdata/bpmetadata/metadata/interfaces_with_new_output_types_metadata.yaml @@ -0,0 +1,16 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-network +spec: + interfaces: + outputs: + - name: cluster_id + description: Cluster ID + type: string + - name: endpoint + description: Cluster endpoint + type: + - tuple + - string + number \ No newline at end of file diff --git a/cli/testdata/bpmetadata/metadata/interfaces_with_partial_output_types_metadata.yaml b/cli/testdata/bpmetadata/metadata/interfaces_with_partial_output_types_metadata.yaml new file mode 100644 index 00000000000..fc83b3dc8fe --- /dev/null +++ b/cli/testdata/bpmetadata/metadata/interfaces_with_partial_output_types_metadata.yaml @@ -0,0 +1,16 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-network +spec: + interfaces: + outputs: + - name: cluster_id + description: Cluster ID + - name: endpoint + description: Cluster endpoint + type: + - list + - - object: + - host: string + port: number \ No newline at end of file diff --git a/cli/testdata/bpmetadata/metadata/interfaces_without_types_metadata.yaml b/cli/testdata/bpmetadata/metadata/interfaces_without_output_types_metadata.yaml similarity index 86% rename from cli/testdata/bpmetadata/metadata/interfaces_without_types_metadata.yaml rename to cli/testdata/bpmetadata/metadata/interfaces_without_output_types_metadata.yaml index 50320f98b65..35e68206506 100644 --- a/cli/testdata/bpmetadata/metadata/interfaces_without_types_metadata.yaml +++ b/cli/testdata/bpmetadata/metadata/interfaces_without_output_types_metadata.yaml @@ -1,4 +1,4 @@ -# interfaces_without_types_metadata.yaml +# interfaces_without_output_types_metadata.yaml apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: From 70fdd5795d566d439319e132fcc0bfaeef82a39d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 17 Oct 2024 21:45:52 +0200 Subject: [PATCH 1249/1371] chore(deps): update terraform google to v6 (#2586) --- cli/testdata/bpmetadata/tf/provider-versions-bad.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/testdata/bpmetadata/tf/provider-versions-bad.tf b/cli/testdata/bpmetadata/tf/provider-versions-bad.tf index 3924ce27744..787414dc861 100644 --- a/cli/testdata/bpmetadata/tf/provider-versions-bad.tf +++ b/cli/testdata/bpmetadata/tf/provider-versions-bad.tf @@ -3,7 +3,7 @@ terraform { required_providers { google = { - version = ">= 4.4.0, < 6" + version = ">= 4.4.0, < 7" } google-beta = { source = "hashicorp/google-beta" From 295692fa76142b5ea2baf5c0a5163dd4fca0312c Mon Sep 17 00:00:00 2001 From: abhishek kumar tiwari Date: Fri, 18 Oct 2024 21:45:35 +0000 Subject: [PATCH 1250/1371] feat: Support display metadata AlternateDefault validate (#2661) --- .../schema/gcp-blueprint-metadata.json | 4 +- cli/bpmetadata/schema/generate.go | 4 ++ cli/bpmetadata/validate_test.go | 5 ++ ...d-display-metadata-alternate-defaults.yaml | 50 +++++++++++++++++++ 4 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 cli/testdata/bpmetadata/schema/valid-display-metadata-alternate-defaults.yaml diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 979fcb0579e..2cb1d61944d 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -856,9 +856,7 @@ } ] }, - "value": { - "$ref": "#/$defs/Value" - } + "value": true }, "additionalProperties": false, "type": "object" diff --git a/cli/bpmetadata/schema/generate.go b/cli/bpmetadata/schema/generate.go index 3d350dbe570..9dadd2c6a28 100644 --- a/cli/bpmetadata/schema/generate.go +++ b/cli/bpmetadata/schema/generate.go @@ -57,6 +57,10 @@ func GenerateSchema() ([]byte, error) { if defExists { oDef.Properties.Set("type", jsonschema.TrueSchema) } + altDefaultDef, defExists := s.Definitions["DisplayVariable_AlternateDefault"] + if defExists { + altDefaultDef.Properties.Set("value", jsonschema.TrueSchema) + } sData, err := json.MarshalIndent(s, "", " ") if err != nil { diff --git a/cli/bpmetadata/validate_test.go b/cli/bpmetadata/validate_test.go index f75b6ac77a4..a8a142a2daf 100644 --- a/cli/bpmetadata/validate_test.go +++ b/cli/bpmetadata/validate_test.go @@ -32,6 +32,11 @@ func TestValidateMetadata(t *testing.T) { path: "valid-metadata-connections.yaml", wantErr: false, }, + { + name: "valid display metadata with alternate defaults", + path: "valid-display-metadata-alternate-defaults.yaml", + wantErr: false, + }, { name: "invalid metadata - title missing", path: "invalid-metadata.yaml", diff --git a/cli/testdata/bpmetadata/schema/valid-display-metadata-alternate-defaults.yaml b/cli/testdata/bpmetadata/schema/valid-display-metadata-alternate-defaults.yaml new file mode 100644 index 00000000000..43404b1f506 --- /dev/null +++ b/cli/testdata/bpmetadata/schema/valid-display-metadata-alternate-defaults.yaml @@ -0,0 +1,50 @@ +apiVersion: blueprints.cloud.google.com/v1alpha1 +kind: BlueprintMetadata +metadata: + name: terraform-google-module +spec: + info: + title: Terraform Google Module + source: + repo: https://github.com/GoogleCloudPlatform/terraform-google-module.git + sourceType: git + ui: + input: + variables: + string_type: + name: string_type + title: String type + altDefaults: + - type: ALTERNATE_TYPE_DC + value: REGIONAL + bool_type: + name: bool_type + title: Bool type + altDefaults: + - type: ALTERNATE_TYPE_DC + value: true + number_type: + name: number_type + title: Number type + altDefaults: + - type: ALTERNATE_TYPE_DC + value: 1 + object_type: + name: object_type + title: Object type + altDefaults: + - type: ALTERNATE_TYPE_DC + value: + key: value + list_type: + name: list_type + title: List type + altDefaults: + - type: ALTERNATE_TYPE_DC + value: + - item1 + - item2 + runtime: + outputs: + output1: + visibility: VISIBILITY_ROOT From a02c41d955dee1ec1dd14657ba57b778cc06caac Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 19 Oct 2024 00:24:38 +0200 Subject: [PATCH 1251/1371] chore(deps): update go modules (#2615) --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 94 ++-- cli/go.sum | 891 ++++++++++++++++++++++++++++++++--- 7 files changed, 891 insertions(+), 104 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index ecd280434ac..082ac50ebc9 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.4 +VERSION=v1.5.5 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index d52d7b4ac4e..73960b851a6 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v65/github" + "github.com/google/go-github/v66/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index c4c778d17b7..92ba3bf38b1 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v65/github" + "github.com/google/go-github/v66/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index 609fe507aaa..432235af519 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v65/github" + "github.com/google/go-github/v66/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 9deccb3b898..215ea86067a 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v65/github" + "github.com/google/go-github/v66/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index 096181e9ad5..5ab11129ac3 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -5,8 +5,8 @@ go 1.22.0 toolchain go1.22.7 require ( - cloud.google.com/go/asset v1.20.1 - cloud.google.com/go/storage v1.43.0 + cloud.google.com/go/asset v1.20.2 + cloud.google.com/go/storage v1.44.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 @@ -14,67 +14,83 @@ require ( github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 github.com/golang/protobuf v1.5.4 - github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6 + github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v65 v65.0.0 + github.com/google/go-github/v66 v66.0.0 + github.com/gruntwork-io/terratest v0.47.1 github.com/hashicorp/hcl/v2 v2.22.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 + github.com/hashicorp/terraform-json v0.22.1 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v1.0.1 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.68.0 + github.com/open-policy-agent/opa v0.69.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 + github.com/zclconf/go-cty v1.14.4 + golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/oauth2 v0.23.0 - golang.org/x/text v0.18.0 - google.golang.org/api v0.197.0 - google.golang.org/protobuf v1.34.2 + golang.org/x/text v0.19.0 + google.golang.org/api v0.200.0 + google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) +require github.com/jedib0t/go-pretty/v6 v6.6.0 + require ( + cel.dev/expr v0.16.1 // indirect cloud.google.com/go v0.115.1 // indirect - cloud.google.com/go/accesscontextmanager v1.9.0 // indirect - cloud.google.com/go/auth v0.9.3 // indirect + cloud.google.com/go/accesscontextmanager v1.9.1 // indirect + cloud.google.com/go/auth v0.9.8 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect - cloud.google.com/go/compute/metadata v0.5.0 // indirect - cloud.google.com/go/iam v1.2.0 // indirect - cloud.google.com/go/longrunning v0.6.0 // indirect - cloud.google.com/go/orgpolicy v1.13.0 // indirect - cloud.google.com/go/osconfig v1.14.0 // indirect + cloud.google.com/go/compute/metadata v0.5.2 // indirect + cloud.google.com/go/iam v1.2.1 // indirect + cloud.google.com/go/longrunning v0.6.1 // indirect + cloud.google.com/go/monitoring v1.21.1 // indirect + cloud.google.com/go/orgpolicy v1.14.0 // indirect + cloud.google.com/go/osconfig v1.14.1 // indirect dario.cat/mergo v1.0.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect - github.com/agnivade/levenshtein v1.1.1 // indirect + github.com/agnivade/levenshtein v1.2.0 // indirect + github.com/alexflint/go-filemutex v1.3.0 // indirect github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect + github.com/aws/aws-sdk-go v1.45.5 // indirect github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect github.com/cloudflare/circl v1.3.7 // indirect + github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/envoyproxy/go-control-plane v0.13.0 // indirect + github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect @@ -97,7 +113,7 @@ require ( github.com/go-stack/stack v1.8.1 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.2.1 // indirect + github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect @@ -110,13 +126,18 @@ require ( github.com/googleapis/gax-go/v2 v2.13.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect - github.com/gruntwork-io/terratest v0.47.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.6 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jinzhu/copier v0.4.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 github.com/kevinburke/ssh_config v1.2.0 // indirect @@ -126,6 +147,8 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mattn/go-zglob v0.0.4 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -136,8 +159,9 @@ require ( github.com/open-policy-agent/gatekeeper/v3 v3.13.0 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.2 // indirect + github.com/prometheus/client_golang v1.20.4 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.55.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect @@ -159,37 +183,41 @@ require ( github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect + github.com/tmccombs/hcl2json v0.6.0 // indirect + github.com/ulikunitz/xz v0.5.11 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect - github.com/zclconf/go-cty v1.14.4 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.29.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect - go.opentelemetry.io/otel/sdk v1.28.0 // indirect + go.opentelemetry.io/otel/sdk v1.29.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.27.0 // indirect + golang.org/x/crypto v0.28.0 // indirect golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.25.0 // indirect - golang.org/x/term v0.24.0 // indirect - golang.org/x/time v0.6.0 // indirect - golang.org/x/tools v0.25.0 // indirect - google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.1 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.26.0 // indirect + google.golang.org/genproto v0.0.0-20241007155032-5fefd90f89a9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240930140551-af27646dc61f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/cli/go.sum b/cli/go.sum index 58bfd01ec86..5f970fb9747 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,36 +1,230 @@ +cel.dev/expr v0.16.1 h1:NR0+oFYzR1CqLFhTAqg3ql59G9VfN8fKq1TCHJ6gq1g= +cel.dev/expr v0.16.1/go.mod h1:AsGA5zb3WruAEQeQng1RZdGEXmBj0jvMWh6l5SnNuC8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= -cloud.google.com/go/accesscontextmanager v1.9.0 h1:K0zCbd23A64sdJmOZDaW39dEMB6JVnGz2uycwd8PTu0= -cloud.google.com/go/accesscontextmanager v1.9.0/go.mod h1:EmdQRGq5FHLrjGjGTp2X2tlRBvU3LDCUqfnysFYooxQ= -cloud.google.com/go/asset v1.20.1 h1:49lRdlLzNoevMrTyqDA1rnmX0eKVjCS8lN4tI1j1z3g= -cloud.google.com/go/asset v1.20.1/go.mod h1:ZrTOIvEqKVZZB9CrGKuKgKJ+WNRrOwsO93GDcHznfec= -cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U= -cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk= +cloud.google.com/go/accesscontextmanager v1.9.1 h1:+C7HM05/h80znK+8VNu25wAimueda6/NGNdus+jxaHI= +cloud.google.com/go/accesscontextmanager v1.9.1/go.mod h1:wUVSoz8HmG7m9miQTh6smbyYuNOJrvZukK5g6WxSOp0= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.20.2 h1:wAGSAzAmMC/KEFGZ6Z0zv3jOlz1fjBxuO7SiRX9FMuQ= +cloud.google.com/go/asset v1.20.2/go.mod h1:IM1Kpzzo3wq7R/GEiktitzZyXx2zVpWqs9/5EGYs0GY= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/auth v0.9.8 h1:+CSJ0Gw9iVeSENVCKJoLHhdUykDgXSc4Qn+gu2BRtR8= +cloud.google.com/go/auth v0.9.8/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= -cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= -cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= -cloud.google.com/go/iam v1.2.0 h1:kZKMKVNk/IsSSc/udOb83K0hL/Yh/Gcqpz+oAkoIFN8= -cloud.google.com/go/iam v1.2.0/go.mod h1:zITGuWgsLZxd8OwAlX+eMFgZDXzBm7icj1PVTYG766Q= -cloud.google.com/go/longrunning v0.6.0 h1:mM1ZmaNsQsnb+5n1DNPeL0KwQd9jQRqSqSDEkBZr+aI= -cloud.google.com/go/longrunning v0.6.0/go.mod h1:uHzSZqW89h7/pasCWNYdUpwGz3PcVWhrWupreVPYLts= -cloud.google.com/go/orgpolicy v1.13.0 h1:WaabiSAxtyi4JNFATvsPmQS2IWRjr1+pwU3/Bihj7eA= -cloud.google.com/go/orgpolicy v1.13.0/go.mod h1:oKtT56zEFSsYORUunkN2mWVQBc9WGP7yBAPOZW1XCXc= -cloud.google.com/go/osconfig v1.14.0 h1:7XGKH/O0PGIoPIIYc+Ja5WD5Sc1nK0y5DT7jvSfyJVc= -cloud.google.com/go/osconfig v1.14.0/go.mod h1:GhZzWYVrnQ42r+K5pA/hJCsnWVW2lB6bmVg+GnZ6JkM= -cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= -cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= +cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v1.2.1 h1:QFct02HRb7H12J/3utj0qf5tobFh9V4vR6h9eX5EBRU= +cloud.google.com/go/iam v1.2.1/go.mod h1:3VUIJDPpwT6p/amXRC5GY8fCCh70lxPygguVtI0Z4/g= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs= +cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A= +cloud.google.com/go/longrunning v0.6.1 h1:lOLTFxYpr8hcRtcwWir5ITh1PAKUD/sG2lKrTSYjyMc= +cloud.google.com/go/longrunning v0.6.1/go.mod h1:nHISoOZpBcmlwbJmiVk5oDRz0qG/ZxPynEGs1iZ79s0= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/monitoring v1.21.1 h1:zWtbIoBMnU5LP9A/fz8LmWMGHpk4skdfeiaa66QdFGc= +cloud.google.com/go/monitoring v1.21.1/go.mod h1:Rj++LKrlht9uBi8+Eb530dIrzG/cU/lB8mt+lbeFK1c= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/orgpolicy v1.14.0 h1:UuLmi1+94lIS3tCoeuinuwx4oxdx58nECiAvfwCW0SM= +cloud.google.com/go/orgpolicy v1.14.0/go.mod h1:S6Pveh1JOxpSbs6+2ToJG7h3HwqC6Uf1YQ6JYG7wdM8= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.14.1 h1:67ISL0vZVfq0se+1cPRMYgwTjsES2k9vmSmn8ZS0O5g= +cloud.google.com/go/osconfig v1.14.1/go.mod h1:Rk62nyQscgy8x4bICaTn0iWiip5EpwEfG2UCBa2TP/s= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.44.0 h1:abBzXf4UJKMmQ04xxJf9dYM/fNl24KHoTuBjyJDX2AI= +cloud.google.com/go/storage v1.44.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/trace v1.11.1 h1:UNqdP+HYYtnm6lb91aNA5JQ0X14GnxkABGlfz2PzPew= +cloud.google.com/go/trace v1.11.1/go.mod h1:IQKNQuBzH72EGaXEodKlNJrWykGZxet2zgjtS60OtjA= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +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= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2 h1:BNFgz4g1lQ2Gd7V5NJxXm2y6S9mZomvtobuu5iv/u/E= github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2/go.mod h1:urFpNnUhNIDDWEbRMRh+UaS5ERWYAHIjIPiUmmlBRkA= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 h1:pB2F2JKCj1Znmp2rwxxt1J0Fg0wezTMgWYk5Mpbi1kg= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1/go.mod h1:itPGVDKf9cC/ov4MdvJ2QZ0khw4bfoo9jzwTJlaxy2k= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= @@ -39,10 +233,13 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= -github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= +github.com/agnivade/levenshtein v1.2.0 h1:U9L4IOT0Y3i0TIlUIDJ7rVUziKi/zPbrJGaFrtYH3SY= +github.com/agnivade/levenshtein v1.2.0/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU= +github.com/alexflint/go-filemutex v1.3.0 h1:LgE+nTUWnQCyRKbpoceKZsPQbs84LivvgwUymZXdOcM= +github.com/alexflint/go-filemutex v1.3.0/go.mod h1:U0+VA/i30mGBlLCrFPGtTe9y6wGQfNAWPBTekHQ+c8A= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= @@ -54,10 +251,15 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.45.5 h1:bxilnhv9FngUgdPNJmOIv2bk+2sP0dpqX3e4olhWcGM= +github.com/aws/aws-sdk-go v1.45.5/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= @@ -70,10 +272,14 @@ github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyz github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +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 v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= @@ -85,6 +291,16 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUK github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= @@ -97,8 +313,8 @@ github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0 github.com/dgraph-io/badger/v3 v3.2103.5/go.mod h1:4MPiseMeDQ3FNCYwRbbcBOGJLf5jsE0PPFzRiKjtcdw= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= -github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= -github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= +github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54 h1:SG7nF6SRlWhcT7cNTs5R6Hk4V2lcmLz2NsG2VnInyNo= +github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= @@ -110,11 +326,22 @@ github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FM github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.13.0 h1:HzkeUz1Knt+3bK+8LG1bxOO/jzWZmdxpwC51i202les= +github.com/envoyproxy/go-control-plane v0.13.0/go.mod h1:GRaKG3dwvFoTg4nj7aXdZnvMg4d7nvT/wl9WgVXn3Q8= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.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/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -131,6 +358,7 @@ github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= @@ -143,6 +371,9 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -188,8 +419,8 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= 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/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= -github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= @@ -219,28 +450,49 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6 h1:ZPy+2XJ8u0bB3sNFi+I72gMEMS7MTg7aZCCXPOjV8iw= -github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 h1:4txT5G2kqVAKMjzidIabL/8KqjIK71yj30YOeuxLn10= +github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +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/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -251,37 +503,79 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +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/go-github/v64 v64.0.0 h1:4G61sozmY3eiPAjjoOHponXDBONm+utovTKbyUb2Qdg= github.com/google/go-github/v64 v64.0.0/go.mod h1:xB3vqMQNdHzilXBiO2I+M7iEFtHf+DP/omBOv6tQzVo= -github.com/google/go-github/v65 v65.0.0 h1:pQ7BmO3DZivvFk92geC0jB0q2m3gyn8vnYPgV7GSLhQ= -github.com/google/go-github/v65 v65.0.0/go.mod h1:DvrqWo5hvsdhJvHd4WyVF9ttANN3BniqjP8uTFMNb60= +github.com/google/go-github/v66 v66.0.0 h1:ADJsaXj9UotwdgK8/iFZtv7MLc8E8WBl62WLd/D/9+M= +github.com/google/go-github/v66 v66.0.0/go.mod h1:+4SO9Zkuyf8ytMj0csN1NR/5OTR+MfqPp8P8dVlcvY4= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= 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= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= +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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/gruntwork-io/terratest v0.47.1 h1:qOaxnL7Su5+KpDHYUN/ek1jn8ImvCKtOkaY4OSMS4tI= @@ -289,16 +583,30 @@ github.com/gruntwork-io/terratest v0.47.1/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4C github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4= +github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 h1:RwY5HBgtBZ997UtKJAO2Rx+94ETyevwWEVXWx1SL5YY= github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= +github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/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/inconshreveable/log15 v2.16.0+incompatible h1:6nvMKxtGcpgm7q0KiGs+Vc+xDvUXaBqsPKHWKsinccw= @@ -314,14 +622,22 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= -github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.0 h1:wmZVuAcEkZRT+Aq1xXpE8IGat4vE5WXOMmBpbQqERXw= +github.com/jedib0t/go-pretty/v6 v6.6.0/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= +github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= 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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -329,6 +645,7 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -354,17 +671,25 @@ github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYt github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= +github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= github.com/migueleliasweb/go-github-mock v1.0.1 h1:amLEECVny28RCD1ElALUpQxrAimamznkg9rN2O7t934= github.com/migueleliasweb/go-github-mock v1.0.1/go.mod h1:8PJ7MpMoIiCBBNpuNmvndHm0QicjsE+hjex1yMGmjYQ= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -392,8 +717,8 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.68.0 h1:Jl3U2vXRjwk7JrHmS19U3HZO5qxQRinQbJ2eCJYSqJQ= -github.com/open-policy-agent/opa v0.68.0/go.mod h1:5E5SvaPwTpwt2WM177I9Z3eT7qUpmOGjk1ZdHs+TZ4w= +github.com/open-policy-agent/opa v0.69.0 h1:s2igLw2Z6IvGWGuXSfugWkVultDMsM9pXiDuMp7ckWw= +github.com/open-policy-agent/opa v0.69.0/go.mod h1:+qyXJGkpEJ6kpB1kGo8JSwHtVXbTdsGdQYPWWNYNj+4= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -407,11 +732,13 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE 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/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg= -github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= @@ -423,6 +750,7 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -445,6 +773,7 @@ github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= @@ -491,6 +820,11 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/tmccombs/hcl2json v0.6.0 h1:Qc5NL4NQbpNnw8w8HQcA3GsVHvQDJXJwVTUxf2AEhOs= +github.com/tmccombs/hcl2json v0.6.0/go.mod h1:QNirG4H64ZvlFsy9werRxXlWNTDR1GhWzXkjqPILHwo= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -508,8 +842,11 @@ github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQ github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg= github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +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= github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= @@ -519,8 +856,17 @@ go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R7 go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +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.opentelemetry.io/contrib/detectors/gcp v1.29.0 h1:TiaiXB4DpGD3sdzNlYQxruQngn5Apwzi1X0DRhuGvDQ= +go.opentelemetry.io/contrib/detectors/gcp v1.29.0/go.mod h1:GW2aWZNwR2ZxDLdv8OyC2G8zkRoQBuURgV7RPQgcPoU= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= @@ -533,10 +879,13 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6Z go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= +go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= +go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -550,6 +899,8 @@ go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= 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-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +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= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -558,49 +909,145 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +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= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= 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= +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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= @@ -608,90 +1055,386 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= +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= +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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +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= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +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.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= -golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= +golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= +golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= 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= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ= -google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw= +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= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.200.0 h1:0ytfNWn101is6e9VBoct2wrGDjOi5vn7jw5KtaQgDrU= +google.golang.org/api v0.200.0/go.mod h1:Tc5u9kcbjO7A8SwGlYj4IiVifJU01UqXtEgDMYmBmV8= 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/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= 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= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= -google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20241007155032-5fefd90f89a9 h1:nFS3IivktIU5Mk6KQa+v6RKkHUpdQpphqGNLxqNnbEk= +google.golang.org/genproto v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:tEzYTYZxbmVNOu0OAFH9HzdJtLn6h4Aj89zzlBCdHms= +google.golang.org/genproto/googleapis/api v0.0.0-20240930140551-af27646dc61f h1:jTm13A2itBi3La6yTGqn8bVSrc3ZZ1r8ENHlIXBfnRA= +google.golang.org/genproto/googleapis/api v0.0.0-20240930140551-af27646dc61f/go.mod h1:CLGoBuH1VHxAUXVPP8FfPwPEVJB6lz3URE5mY2SuayE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 h1:QCqS/PdaHTSWGvupk2F/ehwHtGc0/GYkT+3GAcR1CCc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= 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= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= -google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a h1:UIpYSuWdWHSzjwcAFRLjKcPXFZVVLXGEM23W+NWqipw= +google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a/go.mod h1:9i1T9n4ZinTUZGgzENMi8MDDgbGC5mqTS75JAv6xN3A= 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= @@ -700,15 +1443,22 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +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.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -717,6 +1467,7 @@ gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/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= @@ -727,7 +1478,12 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C 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= +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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= 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.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo= @@ -748,6 +1504,9 @@ k8s.io/kubectl v0.27.2 h1:sSBM2j94MHBFRWfHIWtEXWCicViQzZsb177rNsKBhZg= k8s.io/kubectl v0.27.2/go.mod h1:GCOODtxPcrjh+EC611MqREkU8RjYBh10ldQCQ6zpFKw= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +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/apiserver-network-proxy/konnectivity-client v0.1.2 h1:trsWhjU5jZrx6UvFu4WzQDrN7Pga4a7Qg+zcfcj64PA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUTb/+4c= From 207660be2e484d35fe05c73c5d6eb7b6507ba442 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 18 Oct 2024 17:41:09 -0500 Subject: [PATCH 1252/1371] chore: Update Tools to 1.22.16 (#2659) --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 164c3175820..6ab45f3a90e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.68.3 +TERRAGRUNT_VERSION := 0.68.4 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.4 +CFT_CLI_VERSION := 1.5.5 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.53.0 TINKEY_VERSION := 1.7.0 @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.15 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.16 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 2626d7af394c2e60481be3b34d185d9d24a4f9bf Mon Sep 17 00:00:00 2001 From: Zheng Qin Date: Mon, 21 Oct 2024 10:35:04 -0400 Subject: [PATCH 1253/1371] feat: Add CFT test lint subcommand, implement blueprint connection source version lint rule for POC (#2631) Co-authored-by: Zheng Qin Co-authored-by: abhishek kumar tiwari --- ...lueprint_connection_source_version_rule.go | 46 ++++++++++ ...int_connection_source_version_rule_test.go | 86 +++++++++++++++++++ cli/bptest/cmd.go | 12 +++ cli/bptest/lint.go | 47 ++++++++++ cli/bptest/lint_interface.go | 42 +++++++++ 5 files changed, 233 insertions(+) create mode 100644 cli/bptest/blueprint_connection_source_version_rule.go create mode 100644 cli/bptest/blueprint_connection_source_version_rule_test.go create mode 100644 cli/bptest/lint.go create mode 100644 cli/bptest/lint_interface.go diff --git a/cli/bptest/blueprint_connection_source_version_rule.go b/cli/bptest/blueprint_connection_source_version_rule.go new file mode 100644 index 00000000000..d5c26172043 --- /dev/null +++ b/cli/bptest/blueprint_connection_source_version_rule.go @@ -0,0 +1,46 @@ +package bptest + +import ( + "fmt" + "github.com/hashicorp/go-version" +) + +type BlueprintConnectionSourceVersionRule struct{} + +func (r *BlueprintConnectionSourceVersionRule) name() string { + return "blueprint_connection_source_version_rule" +} + +func (r *BlueprintConnectionSourceVersionRule) enabled() bool { + return true +} + +func (r *BlueprintConnectionSourceVersionRule) check(ctx lintContext) error { + // Check if Spec or Interfaces is nil to avoid null pointer dereference + if ctx.metadata == nil || ctx.metadata.Spec == nil || ctx.metadata.Spec.Interfaces == nil { + fmt.Println("metadata, spec, or interfaces are nil") + return nil + } + + for _, variable := range ctx.metadata.Spec.Interfaces.Variables { + if variable == nil { + continue // Skip if variable is nil + } + + for _, conn := range variable.Connections { + if conn == nil || conn.Source == nil { + continue // Skip if connection or source is nil + } + + if conn.Source.Version != "" { + _, err := version.NewConstraint(conn.Source.Version) + if err != nil { + return fmt.Errorf("invalid version: %w", err) + } + return nil + } + } + } + + return nil +} diff --git a/cli/bptest/blueprint_connection_source_version_rule_test.go b/cli/bptest/blueprint_connection_source_version_rule_test.go new file mode 100644 index 00000000000..08010325b8e --- /dev/null +++ b/cli/bptest/blueprint_connection_source_version_rule_test.go @@ -0,0 +1,86 @@ +package bptest + +import ( + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata" + "github.com/stretchr/testify/assert" +) + +func TestBlueprintConnectionSourceVersionRule(t *testing.T) { + tests := []struct { + name string + version string + expectErr bool + errorMessage string + }{ + { + name: "Valid version - no equal sign expect version", + version: "1.2.3", + expectErr: false, + }, + { + name: "Valid version - expect version", + version: "=1.2.3", + expectErr: false, + }, + { + name: "Valid version - pessimistic constraint", + version: "~> 6.0", + expectErr: false, + }, + { + name: "Valid version - minimal version", + version: ">= 0.13.7", + expectErr: false, + }, + { + name: "Valid version - range interval", + version: ">= 0.13.7, < 2.0.0", + expectErr: false, + }, + { + name: "Invalid version - random string", + version: "invalid_version", + expectErr: true, + errorMessage: "invalid_version", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + metadata := &bpmetadata.BlueprintMetadata{ + Spec: &bpmetadata.BlueprintMetadataSpec{ + Interfaces: &bpmetadata.BlueprintInterface{ + Variables: []*bpmetadata.BlueprintVariable{ + { + Connections: []*bpmetadata.BlueprintConnection{ + { + Source: &bpmetadata.ConnectionSource{ + Source: "example/source", + Version: tt.version, + }, + }, + }, + }, + }, + }, + }, + } + + ctx := lintContext{ + metadata: metadata, + } + + rule := &BlueprintConnectionSourceVersionRule{} + err := rule.check(ctx) + + if tt.expectErr { + assert.Error(t, err) + assert.Contains(t, err.Error(), tt.errorMessage) + } else { + assert.NoError(t, err) + } + }) + } +} diff --git a/cli/bptest/cmd.go b/cli/bptest/cmd.go index 466ed432df9..1f9bc189653 100644 --- a/cli/bptest/cmd.go +++ b/cli/bptest/cmd.go @@ -23,6 +23,7 @@ func init() { Cmd.AddCommand(runCmd) Cmd.AddCommand(convertCmd) Cmd.AddCommand(initCmd) + Cmd.AddCommand(lintCmd) Cmd.PersistentFlags().StringVar(&flags.testDir, "test-dir", "", "Path to directory containing integration tests (default is computed by scanning current working directory)") runCmd.Flags().StringVar(&flags.testStage, "stage", "", "Test stage to execute (default is running all stages in order - init, plan, apply, verify, teardown)") @@ -145,3 +146,14 @@ var initCmd = &cobra.Command{ return initTest(initTestName) }, } + +var lintCmd = &cobra.Command{ + Use: "lint", + Short: "Lints blueprint", + Long: "Lints TF blueprint", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + RunLintCommand() + return nil + }, +} diff --git a/cli/bptest/lint.go b/cli/bptest/lint.go new file mode 100644 index 00000000000..26f6141fa23 --- /dev/null +++ b/cli/bptest/lint.go @@ -0,0 +1,47 @@ +package bptest + +import ( + "fmt" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata" + "os" +) + +const metadataFile = "metadata.yaml" + +// RunLintCommand is the entry function that will run the metadata.yml lint checks. +func RunLintCommand() { + dir, err := os.Getwd() + if err != nil { + fmt.Printf("Error getting current directory: %v\n", err) + os.Exit(1) + } + + // Parse medata.yaml to proto + metadata, err := bpmetadata.UnmarshalMetadata(dir, "/"+metadataFile) + metadataFile := dir + "/" + metadataFile + + if err != nil { + fmt.Printf("Error parsing metadata file: %v\n", err) + os.Exit(1) + } + + ctx := lintContext{ + metadata: metadata, + filePath: metadataFile, + } + + runner := &lintRunner{} + runner.RegisterRule(&BlueprintConnectionSourceVersionRule{}) + + // Run lint checks + errs := runner.Run(ctx) + if len(errs) > 0 { + fmt.Println("Linting failed with the following errors:") + for _, err := range errs { + fmt.Println("- ", err) + } + os.Exit(1) + } else { + fmt.Println("All lint checks passed!") + } +} diff --git a/cli/bptest/lint_interface.go b/cli/bptest/lint_interface.go new file mode 100644 index 00000000000..5f8de2cabf2 --- /dev/null +++ b/cli/bptest/lint_interface.go @@ -0,0 +1,42 @@ +package bptest + +import ( + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata" +) + +// lintRule defines the common interface for all metadata lint rules. +type lintRule interface { + name() string // Unique name of the rule + enabled() bool // Indicates if the rule is enabled by default + check(lintContext) error // Main entrypoint for rule validation +} + +// LintContext holds the metadata and other contextual information for a rule. +type lintContext struct { + metadata *bpmetadata.BlueprintMetadata // Parsed metadata for the blueprint + filePath string // Path of the metadata file being checked +} + +// LintRunner is responsible for running all registered lint rules. +type lintRunner struct { + rules []lintRule +} + +// RegisterRule adds a new rule to the runner. +func (r *lintRunner) RegisterRule(rule lintRule) { + r.rules = append(r.rules, rule) +} + +// Run runs all the registered rules on the provided context. +func (r *lintRunner) Run(ctx lintContext) []error { + var errs []error + for _, rule := range r.rules { + if rule.enabled() { + err := rule.check(ctx) + if err != nil { + errs = append(errs, err) + } + } + } + return errs +} From 855783709955e5f12f9347e2a102c4edae63e70b Mon Sep 17 00:00:00 2001 From: Jieyu Tian Date: Wed, 23 Oct 2024 10:19:30 -0400 Subject: [PATCH 1254/1371] chore: fix CreateBlueprintDisplayMetadata function when there is no existing input (#2660) Co-authored-by: abhishek tiwari --- cli/bpmetadata/cmd.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cli/bpmetadata/cmd.go b/cli/bpmetadata/cmd.go index ab43dab1625..6375f86b23d 100644 --- a/cli/bpmetadata/cmd.go +++ b/cli/bpmetadata/cmd.go @@ -308,7 +308,12 @@ func CreateBlueprintDisplayMetadata(bpPath string, bpDisp, bpCore *BlueprintMeta bpDisp.Spec.Info.Source = bpCore.Spec.Info.Source buildUIInputFromVariables(bpCore.Spec.Interfaces.Variables, bpDisp.Spec.Ui.Input) - existingInput := proto.Clone(bpCore.Spec.Ui.Input).(*BlueprintUIInput) + existingInput := func() *BlueprintUIInput { + if bpCore.Spec.Ui != nil && bpCore.Spec.Ui.Input != nil { + return proto.Clone(bpCore.Spec.Ui.Input).(*BlueprintUIInput) + } + return &BlueprintUIInput{} + }() // Merge existing data (if any) into the newly generated UI Input mergeExistingAltDefaults(bpDisp.Spec.Ui.Input, existingInput) From ffb0713c93464fd344f8057f555c4b48cd39d9c8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 23 Oct 2024 18:41:39 +0200 Subject: [PATCH 1255/1371] chore(deps): update module google.golang.org/api to v0.201.0 (#2664) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 1bde0b2d3f5..eb25b07fcfb 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.0 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.200.0 + google.golang.org/api v0.201.0 ) require ( diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index b000644937d..baee31f36bd 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -135,8 +135,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.200.0 h1:0ytfNWn101is6e9VBoct2wrGDjOi5vn7jw5KtaQgDrU= -google.golang.org/api v0.200.0/go.mod h1:Tc5u9kcbjO7A8SwGlYj4IiVifJU01UqXtEgDMYmBmV8= +google.golang.org/api v0.201.0 h1:+7AD9JNM3tREtawRMu8sOjSbb8VYcYXJG/2eEOmfDu0= +google.golang.org/api v0.201.0/go.mod h1:HVY0FCHVs89xIW9fzf/pBvOEm+OolHa86G/txFezyq4= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= From 65187208b12eac7e5f594d12120e34733adab515 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 23 Oct 2024 20:25:45 +0200 Subject: [PATCH 1256/1371] chore(deps): update go modules (#2666) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index eb25b07fcfb..f426051960d 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,9 +4,9 @@ go 1.22 require ( github.com/briandowns/spinner v1.23.1 - github.com/jedib0t/go-pretty/v6 v6.6.0 + github.com/jedib0t/go-pretty/v6 v6.6.1 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.201.0 + google.golang.org/api v0.202.0 ) require ( @@ -39,7 +39,7 @@ require ( golang.org/x/sys v0.26.0 // indirect golang.org/x/term v0.25.0 // indirect golang.org/x/text v0.19.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/protobuf v1.35.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index baee31f36bd..d96141220d9 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -58,8 +58,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gT github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= -github.com/jedib0t/go-pretty/v6 v6.6.0 h1:wmZVuAcEkZRT+Aq1xXpE8IGat4vE5WXOMmBpbQqERXw= -github.com/jedib0t/go-pretty/v6 v6.6.0/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.1 h1:iJ65Xjb680rHcikRj6DSIbzCex2huitmc7bDtxYVWyc= +github.com/jedib0t/go-pretty/v6 v6.6.1/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -135,18 +135,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.201.0 h1:+7AD9JNM3tREtawRMu8sOjSbb8VYcYXJG/2eEOmfDu0= -google.golang.org/api v0.201.0/go.mod h1:HVY0FCHVs89xIW9fzf/pBvOEm+OolHa86G/txFezyq4= +google.golang.org/api v0.202.0 h1:y1iuVHMqokQbimW79ZqPZWo4CiyFu6HcCYHwSNyzlfo= +google.golang.org/api v0.202.0/go.mod h1:3Jjeq7M/SFblTNCp7ES2xhq+WvGL0KeXI0joHQBfwTQ= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20241007155032-5fefd90f89a9 h1:nFS3IivktIU5Mk6KQa+v6RKkHUpdQpphqGNLxqNnbEk= +google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 h1:Df6WuGvthPzc+JiQ/G+m+sNX24kc0aTBqoDN/0yyykE= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 h1:QCqS/PdaHTSWGvupk2F/ehwHtGc0/GYkT+3GAcR1CCc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From be42232a1dadd2de43aac151a2bdf87cc7aca15e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 23 Oct 2024 22:01:10 +0200 Subject: [PATCH 1257/1371] chore(deps): update module google.golang.org/api to v0.203.0 (#2667) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index f426051960d..d8b044c913d 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.1 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.202.0 + google.golang.org/api v0.203.0 ) require ( - cloud.google.com/go/auth v0.9.8 // indirect + cloud.google.com/go/auth v0.9.9 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index d96141220d9..890a8ee1d6c 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.9.8 h1:+CSJ0Gw9iVeSENVCKJoLHhdUykDgXSc4Qn+gu2BRtR8= -cloud.google.com/go/auth v0.9.8/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth v0.9.9 h1:BmtbpNQozo8ZwW2t7QJjnrQtdganSdmqeIBxHxNkEZQ= +cloud.google.com/go/auth v0.9.9/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= @@ -135,8 +135,8 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.202.0 h1:y1iuVHMqokQbimW79ZqPZWo4CiyFu6HcCYHwSNyzlfo= -google.golang.org/api v0.202.0/go.mod h1:3Jjeq7M/SFblTNCp7ES2xhq+WvGL0KeXI0joHQBfwTQ= +google.golang.org/api v0.203.0 h1:SrEeuwU3S11Wlscsn+LA1kb/Y5xT8uggJSkIhD08NAU= +google.golang.org/api v0.203.0/go.mod h1:BuOVyCSYEPwJb3npWvDnNmFI92f3GeRnHNkETneT3SI= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= From 13db25af7dbb736703b3621c6f3be8e01bac66e2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 25 Oct 2024 19:30:18 +0200 Subject: [PATCH 1258/1371] chore(deps): update go modules (#2662) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 18 ++++++++++-------- cli/go.sum | 24 ++++++++++++------------ 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 082ac50ebc9..367e0836c94 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.5 +VERSION=v1.5.6 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 5ab11129ac3..329fad57408 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -6,18 +6,18 @@ toolchain go1.22.7 require ( cloud.google.com/go/asset v1.20.2 - cloud.google.com/go/storage v1.44.0 + cloud.google.com/go/storage v1.45.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 - github.com/fatih/color v1.17.0 + github.com/fatih/color v1.18.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v66 v66.0.0 - github.com/gruntwork-io/terratest v0.47.1 + github.com/gruntwork-io/terratest v0.47.2 github.com/hashicorp/hcl/v2 v2.22.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 github.com/hashicorp/terraform-json v0.22.1 @@ -36,21 +36,24 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/xeipuuv/gojsonschema v1.2.0 - github.com/zclconf/go-cty v1.14.4 + github.com/zclconf/go-cty v1.15.0 golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/oauth2 v0.23.0 golang.org/x/text v0.19.0 - google.golang.org/api v0.200.0 + google.golang.org/api v0.201.0 google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) -require github.com/jedib0t/go-pretty/v6 v6.6.0 +require ( + github.com/hashicorp/go-version v1.6.0 + github.com/jedib0t/go-pretty/v6 v6.6.0 +) require ( cel.dev/expr v0.16.1 // indirect - cloud.google.com/go v0.115.1 // indirect + cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/accesscontextmanager v1.9.1 // indirect cloud.google.com/go/auth v0.9.8 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect @@ -131,7 +134,6 @@ require ( github.com/hashicorp/go-getter v1.7.6 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index 5f970fb9747..82b75ff6087 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -32,8 +32,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= -cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= +cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= +cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= cloud.google.com/go/accesscontextmanager v1.9.1 h1:+C7HM05/h80znK+8VNu25wAimueda6/NGNdus+jxaHI= cloud.google.com/go/accesscontextmanager v1.9.1/go.mod h1:wUVSoz8HmG7m9miQTh6smbyYuNOJrvZukK5g6WxSOp0= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= @@ -189,8 +189,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.44.0 h1:abBzXf4UJKMmQ04xxJf9dYM/fNl24KHoTuBjyJDX2AI= -cloud.google.com/go/storage v1.44.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE= +cloud.google.com/go/storage v1.45.0 h1:5av0QcIVj77t+44mV4gffFC/LscFRUhto6UBMB5SimM= +cloud.google.com/go/storage v1.45.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/trace v1.11.1 h1:UNqdP+HYYtnm6lb91aNA5JQ0X14GnxkABGlfz2PzPew= @@ -342,8 +342,8 @@ github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi 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/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= -github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -578,8 +578,8 @@ github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWS github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= -github.com/gruntwork-io/terratest v0.47.1 h1:qOaxnL7Su5+KpDHYUN/ek1jn8ImvCKtOkaY4OSMS4tI= -github.com/gruntwork-io/terratest v0.47.1/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4CBERWSCusbJ0d/64= +github.com/gruntwork-io/terratest v0.47.2 h1:t6iWwsqJH7Gx0RwXleU/vjc+2c0JXRMdj3DxYXTBssQ= +github.com/gruntwork-io/terratest v0.47.2/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4CBERWSCusbJ0d/64= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -848,8 +848,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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= -github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= -github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= +github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= @@ -1279,8 +1279,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.200.0 h1:0ytfNWn101is6e9VBoct2wrGDjOi5vn7jw5KtaQgDrU= -google.golang.org/api v0.200.0/go.mod h1:Tc5u9kcbjO7A8SwGlYj4IiVifJU01UqXtEgDMYmBmV8= +google.golang.org/api v0.201.0 h1:+7AD9JNM3tREtawRMu8sOjSbb8VYcYXJG/2eEOmfDu0= +google.golang.org/api v0.201.0/go.mod h1:HVY0FCHVs89xIW9fzf/pBvOEm+OolHa86G/txFezyq4= 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= From cfa23631fd72898a7b039ee336ec1dfd3f5ed895 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 25 Oct 2024 19:38:25 +0200 Subject: [PATCH 1259/1371] chore(deps): update actions/cache action to v4.1.2 (#2671) --- .github/workflows/lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 1267bb434a6..93c6a9f88fb 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -34,7 +34,7 @@ jobs: - uses: 'actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871' # v4.2.1 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform - uses: 'actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8' # v4.1.1 + uses: 'actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a' # v4.1.2 with: path: | ${{ github.workspace }}/test/integration/tmp/.terraform From a9279bf6011e782ca133353574efb49eb0027f7d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 25 Oct 2024 19:50:35 +0200 Subject: [PATCH 1260/1371] chore(deps): update actions/checkout action to v4.2.2 (#2672) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/lint.yaml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/test-cft-devtools.yml | 2 +- .github/workflows/test-cli.yml | 2 +- .github/workflows/update-tooling.yml | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 19c646031ec..50868e8e3c7 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -20,7 +20,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - id: 'auth' name: 'Authenticate to Google Cloud' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 74f80b25438..ad95de2c62f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install Go if: matrix.language == 'go' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 2e510f24697..56bbde47cbc 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/utils/fbf/go.mod diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 2db950b723a..6674d54bd26 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -24,7 +24,7 @@ jobs: matrix: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: ${{ matrix.folder }}/go.mod diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index 3b6260901a5..ce858dcab1d 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -25,7 +25,7 @@ jobs: matrix: operating-system: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/module-swapper/go.mod @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: infra/module-swapper/go.mod diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index fe586f14888..83c57077112 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: tflint-ruleset-blueprint/go.mod @@ -45,7 +45,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 93c6a9f88fb..4ef52ad3db6 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -31,7 +31,7 @@ jobs: name: 'lint-infra-terraform' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871' # v4.2.1 + - uses: 'actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683' # v4.2.2 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform uses: 'actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a' # v4.1.2 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 344f06f580d..ba1b630c8b3 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -9,6 +9,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 483693dd515..5b6263e5288 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -21,7 +21,7 @@ jobs: id-token: 'write' steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: cli/go.mod diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 4fe13e7d375..83463641686 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -17,7 +17,7 @@ jobs: working-directory: 'tflint-ruleset-blueprint' steps: - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index dfcfdf30ef1..b9134bd2681 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false diff --git a/.github/workflows/test-cft-devtools.yml b/.github/workflows/test-cft-devtools.yml index 807610f2319..33f676ba9b4 100644 --- a/.github/workflows/test-cft-devtools.yml +++ b/.github/workflows/test-cft-devtools.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Build run: |- diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 47f87c9573a..d746592cee2 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -31,7 +31,7 @@ jobs: matrix: operating-system: [ubuntu-latest] steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: cli/go.mod diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index 7124f8646ed..a6f085ce068 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -30,7 +30,7 @@ jobs: if: github.repository == 'GoogleCloudPlatform/cloud-foundation-toolkit' steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: master - name: Update Tools From 215affc0b7f96be5f8f0c2a76c43911dbb8d384f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 25 Oct 2024 19:57:42 +0200 Subject: [PATCH 1261/1371] chore(deps): update actions/setup-go action to v5.1.0 (#2673) --- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/test-cli.yml | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index ad95de2c62f..736b4711f87 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: - name: Install Go if: matrix.language == 'go' - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: 'go.work' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index 56bbde47cbc..d0c2a0a1ea5 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: infra/utils/fbf/go.mod cache-dependency-path: infra/utils/fbf/go.sum diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 6674d54bd26..1de09b2c202 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -25,7 +25,7 @@ jobs: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: ${{ matrix.folder }}/go.mod cache-dependency-path: ${{ matrix.folder }}/go.sum diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index ce858dcab1d..b5b39d7de8d 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum @@ -39,7 +39,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 83c57077112..72695f8f3fd 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: tflint-ruleset-blueprint/go.mod cache-dependency-path: tflint-ruleset-blueprint/go.sum @@ -47,7 +47,7 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: 'tflint-ruleset-blueprint/go.mod' - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 5b6263e5288..04276db4b4d 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index 83463641686..f6a48498123 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: 'tflint-ruleset-blueprint/go.mod' - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index d746592cee2..dbe10d39188 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum From e80f7cbacd8a88f30708aeb516966221b5fdb236 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 25 Oct 2024 20:04:18 +0200 Subject: [PATCH 1262/1371] chore(deps): update actions/setup-python action to v5.3.0 (#2674) --- .github/workflows/pre-commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index ba1b630c8b3..8ec1e8d550f 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -10,5 +10,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 From e8e29975c0808b3e39c682ec11af45f81a41ef9f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 25 Oct 2024 20:08:08 +0200 Subject: [PATCH 1263/1371] chore(deps): update github/codeql-action action to v3.27.0 (#2675) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 736b4711f87..b9402c796ca 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 + uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 + uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 + uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b9134bd2681..0e6a45b3cc5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 + uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 with: sarif_file: results.sarif From 15200428ef7ab46353736153e0fecf1c894e7929 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 28 Oct 2024 18:11:28 +0100 Subject: [PATCH 1264/1371] chore(deps): update dependency go to v1.22.8 (#2640) --- cli/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/go.mod b/cli/go.mod index 329fad57408..0978556230d 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -2,7 +2,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.22.0 -toolchain go1.22.7 +toolchain go1.22.8 require ( cloud.google.com/go/asset v1.20.2 From 00febbb6866aa0558c45ee6fdd799cf50f710ce4 Mon Sep 17 00:00:00 2001 From: Zheng Qin Date: Tue, 29 Oct 2024 00:54:37 -0400 Subject: [PATCH 1265/1371] chore: Add metadata cmd unit test. (#2668) Co-authored-by: Zheng Qin Co-authored-by: Bharath KKB --- cli/bpmetadata/cmd_test.go | 152 +++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 cli/bpmetadata/cmd_test.go diff --git a/cli/bpmetadata/cmd_test.go b/cli/bpmetadata/cmd_test.go new file mode 100644 index 00000000000..458e5cb791d --- /dev/null +++ b/cli/bpmetadata/cmd_test.go @@ -0,0 +1,152 @@ +package bpmetadata + +import ( + "testing" + + "github.com/spf13/cobra" + "github.com/stretchr/testify/assert" +) + +func TestCmdExecution(t *testing.T) { + tests := []struct { + description string + args []string + expectErr bool + }{ + { + description: "execute metadata command with valid inputs", + args: []string{"metadata", "--help"}, + expectErr: false, + }, + { + description: "execute metadata command with invalid inputs", + args: []string{"metadata", "--invalid-flag"}, + expectErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.description, func(t *testing.T) { + cmd := &cobra.Command{Use: "cft"} + cmd.SetArgs(tt.args) + + _, err := cmd.ExecuteC() + + if tt.expectErr { + assert.Error(t, err, "Command should return an error") + } else { + assert.NoError(t, err, "Command should execute without error") + } + }) + } +} + +func TestCreateBlueprintDisplayMetadata(t *testing.T) { + tests := []struct { + description string + bpPath string + bpDisp *BlueprintMetadata + bpCore *BlueprintMetadata + expectErr bool + }{ + { + description: "create metadata with nil display metadata Spec.UI.Input", + bpPath: "/path/to/blueprint", + bpDisp: &BlueprintMetadata{}, + bpCore: &BlueprintMetadata{ + ApiVersion: "v1", + Kind: "Blueprint", + Metadata: &ResourceTypeMeta{ + Name: "core-blueprint", + Labels: map[string]string{ + "env": "core", + }, + }, + Spec: &BlueprintMetadataSpec{ + Info: &BlueprintInfo{ + Title: "Core Blueprint", + Version: "1.0.0", + Icon: "assets/core_icon.png", + SingleDeployment: false, + }, + Interfaces: &BlueprintInterface{ + Variables: []*BlueprintVariable{ + { + Name: "test_var_1", + }, + }, + }, + Ui: &BlueprintUI{ + Input: nil, + }, + }, + }, + expectErr: false, + }, + { + description: "create metadata with valid input", + bpPath: "/path/to/blueprint", + bpDisp: &BlueprintMetadata{ + Spec: &BlueprintMetadataSpec{ + Ui: &BlueprintUI{ + Input: &BlueprintUIInput{ + Variables: map[string]*DisplayVariable{ + "test_var_1": { + Name: "test var 1", + Title: "This is a test input", + }, + }, + }, + }, + }, + }, + bpCore: &BlueprintMetadata{ + ApiVersion: "v1", + Kind: "Blueprint", + Metadata: &ResourceTypeMeta{ + Name: "core-blueprint", + Labels: map[string]string{ + "env": "core", + }, + }, + Spec: &BlueprintMetadataSpec{ + Info: &BlueprintInfo{ + Title: "Core Blueprint", + Version: "1.0.0", + Icon: "assets/core_icon.png", + SingleDeployment: false, + }, + Interfaces: &BlueprintInterface{ + Variables: []*BlueprintVariable{ + { + Name: "test_var_1", + }, + }, + }, + Ui: &BlueprintUI{ + Input: nil, + }, + }, + }, + expectErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.description, func(t *testing.T) { + metadata, err := CreateBlueprintDisplayMetadata(tt.bpPath, tt.bpDisp, tt.bpCore) + if tt.expectErr { + assert.Error(t, err, "Function should return an error") + assert.Nil(t, metadata, "Metadata should be nil when there is an error") + } else { + assert.NoError(t, err, "Function should not return an error") + assert.NotNil(t, metadata, "Metadata should not be nil") + if tt.bpDisp != nil { + assert.Equal(t, tt.bpDisp.Metadata.Name, metadata.Metadata.Name, "Metadata name should match the input") + assert.Equal(t, tt.bpDisp.Spec.Info.Title, metadata.Spec.Info.Title, "Metadata title should match the input") + assert.Equal(t, tt.bpDisp.Spec.Info.Version, metadata.Spec.Info.Version, "Metadata version should match the input") + } + } + }) + } +} From 38b15ad7d1e5380e0908d3aa6d529d8e1a35b9eb Mon Sep 17 00:00:00 2001 From: Zheng Qin Date: Tue, 29 Oct 2024 00:55:14 -0400 Subject: [PATCH 1266/1371] feat: Bypass `cft test lint` rules (#2669) Co-authored-by: Zheng Qin Co-authored-by: Bharath KKB --- cli/bptest/lint_interface.go | 7 +++ cli/bptest/lint_interface_test.go | 82 +++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 cli/bptest/lint_interface_test.go diff --git a/cli/bptest/lint_interface.go b/cli/bptest/lint_interface.go index 5f8de2cabf2..441a59cbaa8 100644 --- a/cli/bptest/lint_interface.go +++ b/cli/bptest/lint_interface.go @@ -1,7 +1,9 @@ package bptest import ( + "fmt" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata" + "os" ) // lintRule defines the common interface for all metadata lint rules. @@ -30,6 +32,11 @@ func (r *lintRunner) RegisterRule(rule lintRule) { // Run runs all the registered rules on the provided context. func (r *lintRunner) Run(ctx lintContext) []error { var errs []error + if os.Getenv("BLUEPRINT_LINT_DISABLE") == "1" { + fmt.Println("BLUEPRINT_LINT_DISABLE is set to 1. Skipping lint checks.") + return errs + } + for _, rule := range r.rules { if rule.enabled() { err := rule.check(ctx) diff --git a/cli/bptest/lint_interface_test.go b/cli/bptest/lint_interface_test.go new file mode 100644 index 00000000000..a6c5284682c --- /dev/null +++ b/cli/bptest/lint_interface_test.go @@ -0,0 +1,82 @@ +package bptest + +import ( + "errors" + "os" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata" + "github.com/stretchr/testify/assert" +) + +const BlueprintLintDisableEnv = "BLUEPRINT_LINT_DISABLE" + +type mockLintRule struct { + Name string + Enabled bool + Err error +} + +func (m *mockLintRule) name() string { + return m.Name +} + +func (m *mockLintRule) enabled() bool { + return m.Enabled +} + +func (m *mockLintRule) check(ctx lintContext) error { + return m.Err +} + +func TestLintRunner(t *testing.T) { + t.Run("register and run rules with lintRunner", func(t *testing.T) { + mockRule1 := &mockLintRule{Name: "MockRule1", Enabled: true, Err: nil} + mockRule2 := &mockLintRule{Name: "MockRule2", Enabled: true, Err: errors.New("lint error")} + mockRule3 := &mockLintRule{Name: "MockRule3", Enabled: false, Err: nil} + + runner := lintRunner{} + runner.RegisterRule(mockRule1) + runner.RegisterRule(mockRule2) + runner.RegisterRule(mockRule3) + + ctx := lintContext{ + metadata: &bpmetadata.BlueprintMetadata{ApiVersion: "v1", Kind: "Blueprint"}, + filePath: "/path/to/metadata/file.yaml", + } + + errs := runner.Run(ctx) + assert.Len(t, errs, 1, "Only one rule should return an error") + assert.Equal(t, "lint error", errs[0].Error(), "Error message should match the expected lint error") + }) + + t.Run("run without registered rules", func(t *testing.T) { + runner := lintRunner{} + ctx := lintContext{ + metadata: &bpmetadata.BlueprintMetadata{ApiVersion: "v1", Kind: "Blueprint"}, + filePath: "/path/to/metadata/file.yaml", + } + + errs := runner.Run(ctx) + assert.Empty(t, errs, "No errors should be returned when no rules are registered") + }) + t.Run("skip lint rules when BLUEPRINT_LINT_DISABLE is set", func(t *testing.T) { + os.Setenv(BlueprintLintDisableEnv, "1") + defer os.Unsetenv(BlueprintLintDisableEnv) + + mockRule1 := &mockLintRule{Name: "MockRule1", Enabled: true, Err: errors.New("lint error")} + mockRule2 := &mockLintRule{Name: "MockRule2", Enabled: true, Err: errors.New("another lint error")} + + runner := lintRunner{} + runner.RegisterRule(mockRule1) + runner.RegisterRule(mockRule2) + + ctx := lintContext{ + metadata: &bpmetadata.BlueprintMetadata{ApiVersion: "v1", Kind: "Blueprint"}, + filePath: "/path/to/metadata/file.yaml", + } + + errs := runner.Run(ctx) + assert.Empty(t, errs, "No errors should be returned when BLUEPRINT_LINT_DISABLE is set") + }) +} From caca238316bb2125815ca5ac01eff93675da5496 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 09:02:36 -0700 Subject: [PATCH 1267/1371] chore(deps): bump rexml from 3.3.6 to 3.3.9 in /infra/build/developer-tools/build/data (#2676) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/build/developer-tools/build/data/Gemfile.lock | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/infra/build/developer-tools/build/data/Gemfile.lock b/infra/build/developer-tools/build/data/Gemfile.lock index a07da9a500b..79395a191cb 100644 --- a/infra/build/developer-tools/build/data/Gemfile.lock +++ b/infra/build/developer-tools/build/data/Gemfile.lock @@ -523,8 +523,7 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.2) - rexml (3.3.6) - strscan + rexml (3.3.9) rspec (3.11.0) rspec-core (~> 3.11.0) rspec-expectations (~> 3.11.0) @@ -568,7 +567,6 @@ GEM unicode-display_width (>= 1.5, < 3.0) unicode_utils (~> 1.4) strings-ansi (0.2.0) - strscan (3.1.0) test-kitchen (3.5.0) bcrypt_pbkdf (~> 1.0) chef-utils (>= 16.4.35) From 984d081b2095e45b1c81ecbc9d9cd07295fcb074 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 30 Oct 2024 17:43:07 +0100 Subject: [PATCH 1268/1371] fix(deps): update module github.com/hashicorp/terraform-json to v0.23.0 (#2677) --- infra/blueprint-test/go.mod | 6 +++--- infra/blueprint-test/go.sum | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index b3cb45bd2aa..431321414bf 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,7 +7,7 @@ require ( github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.47.2 github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 - github.com/hashicorp/terraform-json v0.22.1 + github.com/hashicorp/terraform-json v0.23.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.9.0 @@ -53,7 +53,7 @@ require ( github.com/hashicorp/go-getter v1.7.6 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f // indirect github.com/hashicorp/hcl/v2 v2.20.1 // indirect github.com/imdario/mergo v0.3.16 // indirect @@ -82,7 +82,7 @@ require ( github.com/urfave/cli/v2 v2.25.7 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - github.com/zclconf/go-cty v1.14.4 // indirect + github.com/zclconf/go-cty v1.15.0 // indirect go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/net v0.23.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index b500f63eb53..5acfbff0189 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -391,8 +391,9 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws= @@ -401,8 +402,8 @@ github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdx github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 h1:RwY5HBgtBZ997UtKJAO2Rx+94ETyevwWEVXWx1SL5YY= github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= -github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= -github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= +github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= +github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= @@ -523,8 +524,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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= -github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= -github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= +github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= From c5d0c4895410f9793128bbd12659d014339733d3 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 09:46:58 -0700 Subject: [PATCH 1269/1371] chore(release-please): release blueprint-test 0.16.3 (#2630) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d20dc9fa750..853f9406860 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.16.2", + "infra/blueprint-test": "0.16.3", "infra/module-swapper": "0.4.9", "tflint-ruleset-blueprint": "0.2.5" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 0e9b09ef733..32fa2afc65b 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.16.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.16.2...infra/blueprint-test/v0.16.3) (2024-10-30) + + +### Bug Fixes + +* **deps:** update go modules ([#2646](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2646)) ([ccb8bda](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/ccb8bda55715c36b176d49427f2cbe3162483f94)) +* **deps:** update module github.com/gruntwork-io/terratest to v0.47.2 ([#2632](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2632)) ([a915f90](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/a915f90aee6a45c9f25fed19312279d2f73f09cc)) +* **deps:** update module github.com/hashicorp/terraform-json to v0.23.0 ([#2677](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2677)) ([984d081](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/984d081b2095e45b1c81ecbc9d9cd07295fcb074)) +* **deps:** update module sigs.k8s.io/kustomize/kyaml to v0.18.0 ([#2629](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2629)) ([51dc21f](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/51dc21f17a512096e46834ece5e5f44a6cf6057e)) + ## [0.16.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.16.1...infra/blueprint-test/v0.16.2) (2024-09-05) From 1fe43c71971585da25daff38b74af0fffdea17ab Mon Sep 17 00:00:00 2001 From: abhishek kumar tiwari Date: Thu, 31 Oct 2024 17:22:13 +0000 Subject: [PATCH 1270/1371] chore: Enable metadata validation for lb-http, service-accounts and google-vm (#2678) --- infra/terraform/test-org/org/locals.tf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 71572cc2030..d054a24accb 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -412,6 +412,9 @@ locals { description = "Creates a global HTTP load balancer for Compute Engine by using forwarding rules" topics = local.common_topics.net owners = concat(["imrannayer"], local.adc_common_admins) + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-lb-internal" @@ -488,6 +491,9 @@ locals { description = "Creates one or more service accounts and grants them basic roles" owners = local.adc_common_admins topics = local.common_topics.security + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-slo" @@ -529,6 +535,9 @@ locals { description = "Provisions VMs in Google Cloud" owners = concat(["erlanderlo"], local.adc_common_admins) topics = local.common_topics.compute + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-vpc-service-controls" From 631d50fdc86826c1ca96dc81fc91649af6df02dc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Nov 2024 01:47:58 +0100 Subject: [PATCH 1271/1371] chore(deps): update google-github-actions/auth action to v2.1.7 (#2679) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 50868e8e3c7..a87bf80be5d 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -24,7 +24,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@8254fb75a33b976a221574d287e93919e6a36f70' # v2.1.6 + uses: 'google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f' # v2.1.7 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 04276db4b4d..64c39f704b6 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -29,7 +29,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@8254fb75a33b976a221574d287e93919e6a36f70' # v2.1.6 + uses: 'google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f' # v2.1.7 with: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' From be47d0598d532c163bd67a8ace8745cf9c3c806c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Nov 2024 01:52:35 +0100 Subject: [PATCH 1272/1371] chore(deps): update google-github-actions/setup-gcloud action to v2.1.2 (#2680) --- .github/workflows/build-push-cft-devtools.yml | 2 +- .github/workflows/release-cli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index a87bf80be5d..6b1447baa7a 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -29,7 +29,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@f0990588f1e5b5af6827153b93673613abdc6ec7 # v2.1.1 + - uses: google-github-actions/setup-gcloud@6189d56e4096ee891640bb02ac264be376592d6a # v2.1.2 with: project_id: ${{ env.PROJECT_ID }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 64c39f704b6..228e6fdab54 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -34,7 +34,7 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@f0990588f1e5b5af6827153b93673613abdc6ec7 # v2.1.1 + - uses: google-github-actions/setup-gcloud@6189d56e4096ee891640bb02ac264be376592d6a # v2.1.2 with: version: "410.0.0" From 17545c0af41cdf93fa716cc622119f5864cd7b7b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Nov 2024 17:35:48 +0100 Subject: [PATCH 1273/1371] chore(deps): update module google.golang.org/api to v0.205.0 (#2681) --- infra/utils/fbf/go.mod | 8 ++++---- infra/utils/fbf/go.sum | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index d8b044c913d..d9bfedbe095 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,12 +6,12 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.1 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.203.0 + google.golang.org/api v0.205.0 ) require ( - cloud.google.com/go/auth v0.9.9 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect + cloud.google.com/go/auth v0.10.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect @@ -39,7 +39,7 @@ require ( golang.org/x/sys v0.26.0 // indirect golang.org/x/term v0.25.0 // indirect golang.org/x/text v0.19.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/protobuf v1.35.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 890a8ee1d6c..50a64a00f3e 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,8 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.9.9 h1:BmtbpNQozo8ZwW2t7QJjnrQtdganSdmqeIBxHxNkEZQ= -cloud.google.com/go/auth v0.9.9/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= -cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= -cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= +cloud.google.com/go/auth v0.10.1 h1:TnK46qldSfHWt2a0b/hciaiVJsmDXWy9FqyUan0uYiI= +cloud.google.com/go/auth v0.10.1/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= +cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -135,18 +135,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.203.0 h1:SrEeuwU3S11Wlscsn+LA1kb/Y5xT8uggJSkIhD08NAU= -google.golang.org/api v0.203.0/go.mod h1:BuOVyCSYEPwJb3npWvDnNmFI92f3GeRnHNkETneT3SI= +google.golang.org/api v0.205.0 h1:LFaxkAIpDb/GsrWV20dMMo5MR0h8UARTbn24LmD+0Pg= +google.golang.org/api v0.205.0/go.mod h1:NrK1EMqO8Xk6l6QwRAmrXXg2v6dzukhlOyvkYtnvUuc= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 h1:Df6WuGvthPzc+JiQ/G+m+sNX24kc0aTBqoDN/0yyykE= +google.golang.org/genproto v0.0.0-20241021214115-324edc3d5d38 h1:Q3nlH8iSQSRUwOskjbcSMcF2jiYMNiQYZ0c2KEJLKKU= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From b52e003f39c33c9357f2a98a30586da1c2175080 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:53:34 -0600 Subject: [PATCH 1274/1371] chore: Update Tools to 1.22.17 (#2663) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 6ab45f3a90e..01362330d0e 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.68.4 +TERRAGRUNT_VERSION := 0.68.7 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.5 +CFT_CLI_VERSION := 1.5.6 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.53.0 TINKEY_VERSION := 1.7.0 @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.16 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.17 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From f7d39eace43b871b3ab126d39a9ec2919b39c546 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 7 Nov 2024 22:03:05 +0100 Subject: [PATCH 1275/1371] chore(deps): update goreleaser/goreleaser-action action to v6.1.0 (#2685) --- .github/workflows/go-tflint-plugin.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 72695f8f3fd..2a042dbc8a0 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -53,7 +53,7 @@ jobs: - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser - run: echo "${{env.GORELEASER_CURRENT_TAG}}" - name: Run GoReleaser - uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0 + uses: goreleaser/goreleaser-action@9ed2f89a662bf1735a48bc8557fd212fa902bebf # v6.1.0 with: version: latest args: release --clean --skip=validate,publish diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index f6a48498123..dc487432679 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -25,7 +25,7 @@ jobs: - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV - run: echo "${{env.GORELEASER_CURRENT_TAG}}" - name: Run GoReleaser - uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0 + uses: goreleaser/goreleaser-action@9ed2f89a662bf1735a48bc8557fd212fa902bebf # v6.1.0 with: version: latest args: release --clean --skip=validate,publish From c46b6131159f8d482d10c403a185c1084f84806a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 12 Nov 2024 10:29:04 -0800 Subject: [PATCH 1276/1371] feat(blueprint-test): add ParseKubectlJSONResult (#2688) --- infra/blueprint-test/pkg/utils/jsonresult.go | 16 +++++ .../pkg/utils/jsonresult_test.go | 60 +++++++++++++++++++ infra/blueprint-test/test/setup/main.tf | 2 + 3 files changed, 78 insertions(+) create mode 100644 infra/blueprint-test/pkg/utils/jsonresult_test.go diff --git a/infra/blueprint-test/pkg/utils/jsonresult.go b/infra/blueprint-test/pkg/utils/jsonresult.go index dc699e12568..7b9636dc491 100644 --- a/infra/blueprint-test/pkg/utils/jsonresult.go +++ b/infra/blueprint-test/pkg/utils/jsonresult.go @@ -18,6 +18,7 @@ package utils import ( "os" + "regexp" "github.com/mitchellh/go-testing-interface" "github.com/tidwall/gjson" @@ -43,3 +44,18 @@ func ParseJSONResult(t testing.TB, j string) gjson.Result { } return gjson.Parse(j) } + +// Kubectl transient errors +var ( + KubectlTransientErrors = []string{ + "E022[23] .* the server is currently unable to handle the request", + } +) + +// Filter transient errors from kubectl output +func ParseKubectlJSONResult(t testing.TB, str string) gjson.Result { + for _, error := range KubectlTransientErrors { + str = regexp.MustCompile(error).ReplaceAllString(str, "") + } + return ParseJSONResult(t, str) +} diff --git a/infra/blueprint-test/pkg/utils/jsonresult_test.go b/infra/blueprint-test/pkg/utils/jsonresult_test.go new file mode 100644 index 00000000000..fa041a9e6a7 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/jsonresult_test.go @@ -0,0 +1,60 @@ +/** + * Copyright 2024 Google LLC + * + * 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 utils + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestKubectlJSONResult(t *testing.T) { + tests := []struct { + name string + input string + output map[string]interface{} + }{ + { + name: "one error", + input: `E0223 error the server is currently unable to handle the request + { + "apiVersion": "v1" + }`, + output: map[string]interface{}{ + "apiVersion": "v1", + }, + }, + { + name: "two error", + input: `E0223 error the server is currently unable to handle the request + E0222 some other error so the server is currently unable to handle the request + { + "apiVersion": "v1" + }`, + output: map[string]interface{}{ + "apiVersion": "v1", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + funcOut := ParseKubectlJSONResult(t, tt.input) + assert.Equal(tt.output, funcOut.Value().(map[string]interface{})) + }) + } +} diff --git a/infra/blueprint-test/test/setup/main.tf b/infra/blueprint-test/test/setup/main.tf index ebeccc0eba6..a3baceec096 100644 --- a/infra/blueprint-test/test/setup/main.tf +++ b/infra/blueprint-test/test/setup/main.tf @@ -35,6 +35,8 @@ module "project" { folder_id = var.folder_id billing_account = var.billing_account + default_service_account = "DEPRIVILEGE" + activate_apis = [ "cloudresourcemanager.googleapis.com", "compute.googleapis.com", From 6a20dfb56e792ce5db5ecf66564629dfee3e25d8 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 12 Nov 2024 11:09:56 -0800 Subject: [PATCH 1277/1371] fix: improve dev-tools release process (#2687) --- .github/workflows/build-push-cft-devtools.yml | 20 ++++++++++++---- infra/build/Makefile | 23 ++++++++++++++++++- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index 6b1447baa7a..d79f37ee682 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -29,7 +29,8 @@ jobs: workload_identity_provider: '${{ secrets.GCP_WIF_PROVIDER }}' service_account: '${{ secrets.GCP_WIF_SA_EMAIL }}' - - uses: google-github-actions/setup-gcloud@6189d56e4096ee891640bb02ac264be376592d6a # v2.1.2 + - name: Setup gcloud + uses: google-github-actions/setup-gcloud@6189d56e4096ee891640bb02ac264be376592d6a # v2.1.2 with: project_id: ${{ env.PROJECT_ID }} @@ -38,12 +39,23 @@ jobs: gcloud auth configure-docker -q cd infra/build && make build-image-developer-tools - - name: Push + - name: Filter paths for push + uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: filter + with: + filters: | + src: + - "infra/build/**" + + - if: steps.filter.outputs.src == 'true' + name: Push + env: + GITHUB_SHA: ${{ github.sha }} run: |- cd infra/build && make release-image-developer-tools - - name: Open issue if failed - if: ${{ failure() }} + - name: Open issue if push failed + if: ${{ failure() && steps.filter.outputs.src == 'true' }} uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: |- diff --git a/infra/build/Makefile b/infra/build/Makefile index 01362330d0e..0b310d2d81b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -1,4 +1,4 @@ -# Copyright 2019-2023 Google LLC +# Copyright 2019-2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -115,6 +115,11 @@ build-image-developer-tools: .PHONY: release-image-developer-tools release-image-developer-tools: + if [[ -z "${GITHUB_SHA}" ]]; then + echo "ERROR: Missing GITHUB_SHA for the release" + exit 1 + fi + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} @@ -139,6 +144,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} @@ -163,6 +172,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} @@ -187,6 +200,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} @@ -211,6 +228,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${GITHUB_SHA} + # The following tasks are provided as examples and aren't invoked from this # repository directly. These three make targets are the only targets that # should be included in every CFT module's `Makefile` From ce77cac440a9e8778a23ea504a888790f07a7c86 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Tue, 12 Nov 2024 13:02:01 -0800 Subject: [PATCH 1278/1371] fix(dev-tools): make, not bash (#2691) --- .github/workflows/build-push-cft-devtools.yml | 1 + infra/build/Makefile | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-push-cft-devtools.yml b/.github/workflows/build-push-cft-devtools.yml index d79f37ee682..e14fffa679e 100644 --- a/.github/workflows/build-push-cft-devtools.yml +++ b/.github/workflows/build-push-cft-devtools.yml @@ -18,6 +18,7 @@ jobs: permissions: contents: 'read' id-token: 'write' + issues: 'write' steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 diff --git a/infra/build/Makefile b/infra/build/Makefile index 0b310d2d81b..38a815a2203 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -115,10 +115,7 @@ build-image-developer-tools: .PHONY: release-image-developer-tools release-image-developer-tools: - if [[ -z "${GITHUB_SHA}" ]]; then - echo "ERROR: Missing GITHUB_SHA for the release" - exit 1 - fi + test -n "$(GITHUB_SHA)" # $$GITHUB_SHA docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} From 3777591e661570f421d7e1d9feb374ad9c25d8f7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 12 Nov 2024 22:51:27 +0100 Subject: [PATCH 1279/1371] fix(deps): update module golang.org/x/mod to v0.22.0 (#2682) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 431321414bf..33f1ed3a86f 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -13,7 +13,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 - golang.org/x/mod v0.21.0 + golang.org/x/mod v0.22.0 sigs.k8s.io/kustomize/kyaml v0.18.1 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 5acfbff0189..1531603c8c3 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -582,8 +582,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= -golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From e203afa5bcb8c2ec25f36c3242c805292c885595 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 12 Nov 2024 23:29:41 +0100 Subject: [PATCH 1280/1371] chore(deps): update github.com/hashicorp/terraform-config-inspect digest to 3adb156 (#2693) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 33f1ed3a86f..4f714eae53f 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -6,7 +6,7 @@ require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.47.2 - github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 + github.com/hashicorp/terraform-config-inspect v0.0.0-20241107133921-3adb156ecfe2 github.com/hashicorp/terraform-json v0.23.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 1531603c8c3..79016645a66 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -400,8 +400,8 @@ github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+Db github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 h1:RwY5HBgtBZ997UtKJAO2Rx+94ETyevwWEVXWx1SL5YY= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20241107133921-3adb156ecfe2 h1:h+wcDC5wTiM+5YKjuLtUSWJtdtMVJNCRCPHoWieLpM4= +github.com/hashicorp/terraform-config-inspect v0.0.0-20241107133921-3adb156ecfe2/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= From 010814c9dae59d0d1aa51b7d687755c92f9117c3 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 13 Nov 2024 19:37:38 -0800 Subject: [PATCH 1281/1371] chore(dev-tools): add SHA label without prefix (#2692) --- infra/build/Makefile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/infra/build/Makefile b/infra/build/Makefile index 38a815a2203..527e2f3b36b 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -141,6 +141,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${GITHUB_SHA} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${GITHUB_SHA} @@ -169,6 +173,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${GITHUB_SHA} + docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${GITHUB_SHA} @@ -197,6 +205,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${GITHUB_SHA} + docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${GITHUB_SHA} @@ -225,6 +237,10 @@ release-image-developer-tools: ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${GITHUB_SHA} + docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${GITHUB_SHA} + docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${GITHUB_SHA} From 8fbb618ea3e4cafc7123cc652f0a30b5431d5ba4 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 14 Nov 2024 12:06:19 -0800 Subject: [PATCH 1282/1371] fix(dev-tools): correct the tag (#2696) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 527e2f3b36b..abaaceddc09 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -142,7 +142,7 @@ release-image-developer-tools: docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DEP_TAG_PREFIX}${GITHUB_SHA} + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${GITHUB_SHA} docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ @@ -174,7 +174,7 @@ release-image-developer-tools: docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DEP_TAG_PREFIX}${GITHUB_SHA} + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${GITHUB_SHA} docker tag ${DOCKER_IMAGE_DEVELOPER_TOOLS_JENKINS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ @@ -206,7 +206,7 @@ release-image-developer-tools: docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${GITHUB_SHA} + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:}${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${GITHUB_SHA} docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ @@ -238,7 +238,7 @@ release-image-developer-tools: docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${DEP_TAG_PREFIX}${GITHUB_SHA} + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_KRM}:${GITHUB_SHA} docker tag ${DOCKER_IMAGE_DEVELOPER_KRM}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ From 570f377cbb609a2c17178f1d4d779af9c64944be Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 14 Nov 2024 12:27:45 -0800 Subject: [PATCH 1283/1371] fix(dev-tools): stray } in tag (#2698) --- infra/build/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index abaaceddc09..375247d1f22 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -206,7 +206,7 @@ release-image-developer-tools: docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DEP_TAG_PREFIX}${DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS} docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ - ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:}${GITHUB_SHA} + ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${GITHUB_SHA} docker push ${REGISTRY_URL}/${DOCKER_IMAGE_DEVELOPER_LIGHT}:${GITHUB_SHA} docker tag ${DOCKER_IMAGE_DEVELOPER_LIGHT}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \ From 054d1b0efdee6bd145f2469ffa0ccbd1e8436aa6 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 15 Nov 2024 16:07:44 -0800 Subject: [PATCH 1284/1371] feat(blueprint-test): add cai helper (#2689) --- infra/blueprint-test/pkg/cai/cai.go | 82 +++++++++++++++++++++++++ infra/blueprint-test/test/cai_test.go | 70 +++++++++++++++++++++ infra/blueprint-test/test/setup/main.tf | 12 ++-- 3 files changed, 160 insertions(+), 4 deletions(-) create mode 100644 infra/blueprint-test/pkg/cai/cai.go create mode 100644 infra/blueprint-test/test/cai_test.go diff --git a/infra/blueprint-test/pkg/cai/cai.go b/infra/blueprint-test/pkg/cai/cai.go new file mode 100644 index 00000000000..58474edf721 --- /dev/null +++ b/infra/blueprint-test/pkg/cai/cai.go @@ -0,0 +1,82 @@ +/** + * Copyright 2024 Google LLC + * + * 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 cai provides a set of helpers to interact with Cloud Asset Inventory +package cai + +import ( + "fmt" + "strings" + "testing" + "time" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" + "github.com/tidwall/gjson" +) + +type CmdCfg struct { + sleep int // minutes to sleep prior to CAI retreval. default: 2 + assetTypes []string // asset types to retrieve. empty: all + args []string // arguments to pass to call +} + +type cmdOption func(*CmdCfg) + +// newCmdConfig sets defaults and options +func newCmdConfig(opts ...cmdOption) (*CmdCfg) { + caiOpts := &CmdCfg{ + sleep: 2, + assetTypes: nil, + args: nil, + } + + for _, opt := range opts { + opt(caiOpts) + } + + if caiOpts.assetTypes != nil { + caiOpts.args = []string{"--asset-types", strings.Join(caiOpts.assetTypes, ",")} + } + caiOpts.args = append(caiOpts.args, "--content-type", "resource") + + return caiOpts +} + +// Set custom sleep minutes +func WithSleep(sleep int) cmdOption { + return func(f *CmdCfg) { + f.sleep = sleep + } +} + +// Set asset types +func WithAssetTypes(assetTypes []string) cmdOption { + return func(f *CmdCfg) { + f.assetTypes = assetTypes + } +} + +// GetProjectResources returns the cloud asset inventory resources for a project as a gjson.Result +func GetProjectResources(t testing.TB, project string, opts ...cmdOption) gjson.Result { + caiOpts := newCmdConfig(opts...) + + // Cloud Asset Inventory offers best-effort data freshness. + t.Logf("Sleeping for %d minutes before retrieving Cloud Asset Inventory...", caiOpts.sleep) + time.Sleep(time.Duration(caiOpts.sleep) * time.Minute) + + cmd := fmt.Sprintf("asset list --project %s", project) + return gcloud.Runf(t, strings.Join(append([]string{cmd}, caiOpts.args...), " ")) +} diff --git a/infra/blueprint-test/test/cai_test.go b/infra/blueprint-test/test/cai_test.go new file mode 100644 index 00000000000..54c6de41ea4 --- /dev/null +++ b/infra/blueprint-test/test/cai_test.go @@ -0,0 +1,70 @@ +/** + * Copyright 2024 Google LLC + * + * 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 ( + "encoding/base64" + "fmt" + "testing" + + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/cai" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" + "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/tft" + "github.com/stretchr/testify/assert" +) + +func TestGetProjectResources(t *testing.T) { + tests := []struct { + name string + assetTypes []string + wantKeyPath string + wantVal string + }{ + {name: "all", assetTypes: nil, wantKeyPath: "resource.data.nodeConfig.imageType", wantVal: "COS_CONTAINERD"}, + {name: "cluster", assetTypes: []string{"container.googleapis.com/Cluster", "compute.googleapis.com/Project"}, wantKeyPath: "resource.data.nodeConfig.imageType", wantVal: "COS_CONTAINERD"}, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + assert := assert.New(t) + + tfBlueprint := tft.NewTFBlueprintTest(t, + tft.WithTFDir("setup"), + ) + + clusterResourceName := fmt.Sprintf("//container.googleapis.com/projects/%s/locations/%s/clusters/%s", + tfBlueprint.GetStringOutput("project_id"), + tfBlueprint.GetStringOutput("cluster_region"), + tfBlueprint.GetStringOutput("cluster_name"), + ) + + projectResourceName := fmt.Sprintf("//compute.googleapis.com/projects/%s", + tfBlueprint.GetStringOutput("project_id"), + ) + + // Use the test SA for cai call + credDec, _ := base64.StdEncoding.DecodeString(tfBlueprint.GetStringOutput("sa_key")) + gcloud.ActivateCredsAndEnvVars(t, string(credDec)) + + cai := cai.GetProjectResources(t, tfBlueprint.GetStringOutput("project_id"), cai.WithAssetTypes(tt.assetTypes)) + assert.Equal(tfBlueprint.GetStringOutput("project_id"), cai.Get("#(name=\"" + projectResourceName + "\").resource.data.name").String(), "project_id exists in cai") + assert.Equal(tt.wantVal, cai.Get("#(name=\"" + clusterResourceName + "\")." + tt.wantKeyPath).String(), "correct cluster image type") + }) + } +} diff --git a/infra/blueprint-test/test/setup/main.tf b/infra/blueprint-test/test/setup/main.tf index a3baceec096..27dcdff20e7 100644 --- a/infra/blueprint-test/test/setup/main.tf +++ b/infra/blueprint-test/test/setup/main.tf @@ -21,13 +21,15 @@ locals { "roles/iam.serviceAccountUser", "roles/vpcaccess.admin", "roles/serviceusage.serviceUsageAdmin", - "roles/container.admin" + "roles/container.admin", + "roles/cloudasset.viewer", + "roles/serviceusage.serviceUsageConsumer" ] } module "project" { source = "terraform-google-modules/project-factory/google" - version = "~> 14.0" + version = "~> 17.0" name = "ci-bptest" random_project_id = "true" @@ -36,13 +38,15 @@ module "project" { billing_account = var.billing_account default_service_account = "DEPRIVILEGE" + deletion_policy = "DELETE" activate_apis = [ "cloudresourcemanager.googleapis.com", "compute.googleapis.com", "serviceusage.googleapis.com", "vpcaccess.googleapis.com", - "container.googleapis.com" + "container.googleapis.com", + "cloudasset.googleapis.com" ] } @@ -66,6 +70,6 @@ resource "google_service_account_key" "key" { module "kubernetes-engine_example_simple_autopilot_public" { source = "terraform-google-modules/kubernetes-engine/google//examples/simple_autopilot_public" - version = "~> 30.0" + version = "~> 34.0" project_id = module.project.project_id } From 49ef1511387016af12d6d9f6a447d2a86c2d91d2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 16 Nov 2024 01:13:19 +0100 Subject: [PATCH 1285/1371] chore(deps): update github/codeql-action action to v3.27.1 (#2699) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b9402c796ca..e454b296271 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/init@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/autobuild@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/analyze@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0e6a45b3cc5..f7bf7b3a580 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/upload-sarif@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 with: sarif_file: results.sarif From fa940365daf2bc02469647f256ebcfd1e47e14a6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 18 Nov 2024 18:14:49 +0100 Subject: [PATCH 1286/1371] chore(deps): update golangci/golangci-lint docker tag to v1.62.0 (#2701) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 367e0836c94..f6d3f7aa40d 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.61.0 +GOLANGCI_VERSION := 1.62.0 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 53716d2c716c9f78d8506310113b738a91d34c8a Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Mon, 18 Nov 2024 12:15:54 -0600 Subject: [PATCH 1287/1371] chore: Update Tools to 1.22.18 (#2686) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 375247d1f22..64e84ec50ac 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.68.7 +TERRAGRUNT_VERSION := 0.68.14 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow @@ -37,7 +37,7 @@ PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow CFT_CLI_VERSION := 1.5.6 # Updated by Update Tooling Workflow -TFLINT_VERSION := 0.53.0 +TFLINT_VERSION := 0.54.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.20 # Updated by Update Tooling Workflow @@ -47,7 +47,7 @@ TFLINT_BP_PLUGIN_VERSION := 0.2.5 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.61.0 +GOLANGCI_VERSION := 1.62.0 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.17 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.18 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From a75e5df8770fce63b8e75590c00e80cc01b0fdf7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 18 Nov 2024 19:56:52 +0100 Subject: [PATCH 1288/1371] chore(deps): update golangci/golangci-lint docker tag to v1.62.0 (#2702) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 87fb3fdf74c..26f7f5868a2 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.61.0 +GOLANGCI_VERSION := 1.62.0 .PHONY: docker_go_lint docker_go_lint: From 2b4988e7b723015250733a7ee891df50886749c3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 18 Nov 2024 20:00:21 +0100 Subject: [PATCH 1289/1371] chore(deps): update github/codeql-action action to v3.27.4 (#2700) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e454b296271..5dbf8e6c05d 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 + uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 + uses: github/codeql-action/autobuild@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 + uses: github/codeql-action/analyze@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f7bf7b3a580..f9e2aa98162 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 + uses: github/codeql-action/upload-sarif@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 with: sarif_file: results.sarif From 04583f86a90ba5f2530c1200a520b60148ba2362 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 18 Nov 2024 20:06:27 +0100 Subject: [PATCH 1290/1371] chore(deps): update dependency go to v1.22.9 (#2683) --- cli/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/go.mod b/cli/go.mod index 0978556230d..7cb516707b1 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -2,7 +2,7 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli go 1.22.0 -toolchain go1.22.8 +toolchain go1.22.9 require ( cloud.google.com/go/asset v1.20.2 From a548c1d2d6b7d479b9f197983c03724f45a41a60 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 18 Nov 2024 20:11:20 +0100 Subject: [PATCH 1291/1371] chore(deps): update dependency go to v1.22.9 (#2684) --- tflint-ruleset-blueprint/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 6c1ca4d477c..713bfffb70b 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -2,7 +2,7 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint go 1.22.2 -toolchain go1.22.8 +toolchain go1.22.9 require ( github.com/hashicorp/go-version v1.7.0 From 53eeec7a5bf6296d6b7eb5883dbb5743c32a259a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 20 Nov 2024 12:27:56 -0800 Subject: [PATCH 1292/1371] feat(blueprint-test): add GetJSONPaths (#2705) --- infra/blueprint-test/pkg/utils/jsonpaths.go | 95 +++++++++++++++++++ .../pkg/utils/jsonpaths_test.go | 92 ++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 infra/blueprint-test/pkg/utils/jsonpaths.go create mode 100644 infra/blueprint-test/pkg/utils/jsonpaths_test.go diff --git a/infra/blueprint-test/pkg/utils/jsonpaths.go b/infra/blueprint-test/pkg/utils/jsonpaths.go new file mode 100644 index 00000000000..46893243c48 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/jsonpaths.go @@ -0,0 +1,95 @@ +/** + * Copyright 2024 Google LLC + * + * 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 utils + +import ( + "slices" + "strconv" + "strings" + + "github.com/tidwall/gjson" +) + +// GetJSONPaths returns a []string of all possible JSON paths for a gjson.Result + func GetJSONPaths(result gjson.Result) []string { + return getJSONPaths(result.Value(), []string{}) + } + + func getJSONPaths(item interface{}, crumbs []string) []string { + var paths []string + + switch val := item.(type) { + case []interface{}: + for i, v := range val { + // Add this item to paths + paths = append(paths, strings.Join(append(crumbs, strconv.Itoa(i)), ".")) + // Search child items + paths = append(paths, + getJSONPaths(v, append(crumbs, strconv.Itoa(i)))..., + ) + } + case map[string]interface{}: + for k, v := range val { + // Add this item to paths + paths = append(paths, strings.Join(append(crumbs, k), ".")) + // Search child items + paths = append(paths, + getJSONPaths(v, append(crumbs, k))..., + ) + + } + } + + slices.Sort(paths) + return paths + } + +// GetTerminalJSONPaths returns a []string of all terminal JSON paths for a gjson.Result +func GetTerminalJSONPaths(result gjson.Result) []string { + return getTerminalJSONPaths(result.Value(), []string{}) +} + +func getTerminalJSONPaths(item interface{}, crumbs []string) []string { + var paths []string + + // Only add paths for JSON bool, number, string, and null + switch val := item.(type) { + case bool: + return []string{strings.Join(crumbs, ".")} + case float64: + return []string{strings.Join(crumbs, ".")} + case string: + return []string{strings.Join(crumbs, ".")} + case nil: + return []string{strings.Join(crumbs, ".")} + case []interface{}: + for i, v := range val { + paths = append(paths, + getTerminalJSONPaths(v, append(crumbs, strconv.Itoa(i)))..., + ) + } + case map[string]interface{}: + for k, v := range val { + paths = append(paths, + getTerminalJSONPaths(v, append(crumbs, k))..., + ) + } + } + + slices.Sort(paths) + return paths + } diff --git a/infra/blueprint-test/pkg/utils/jsonpaths_test.go b/infra/blueprint-test/pkg/utils/jsonpaths_test.go new file mode 100644 index 00000000000..4d14f1d3e40 --- /dev/null +++ b/infra/blueprint-test/pkg/utils/jsonpaths_test.go @@ -0,0 +1,92 @@ +/** + * Copyright 2024 Google LLC + * + * 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 utils + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/tidwall/gjson" +) + + func TestGetJSONPaths(t *testing.T) { + tests := []struct { + name string + json gjson.Result + paths []string + }{ + { + name: "one", + json: gjson.Parse(`{ + "apiVersion": "v1", + "autopilot": {}, + "locations": [ + "europe-west4-b" + ], + "metadata": { + "annotations": [ + {"my-annotation": "test"} + ] + }, + "bool": true, + "number": 3, + "null": null, + }`), + paths: []string{"apiVersion", "autopilot", "bool", "locations", "locations.0", "metadata", "metadata.annotations", "metadata.annotations.0", "metadata.annotations.0.my-annotation", "null", "number"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + assert.Equal(tt.paths, GetJSONPaths(tt.json)) + }) + } + } + + func TestTerminalGetJSONPaths(t *testing.T) { + tests := []struct { + name string + json gjson.Result + paths []string + }{ + { + name: "one", + json: gjson.Parse(`{ + "apiVersion": "v1", + "autopilot": {}, + "locations": [ + "europe-west4-b" + ], + "metadata": { + "annotations": [ + {"my-annotation": "test"} + ] + }, + "bool": true, + "number": 3, + "null": null, + }`), + paths: []string{"apiVersion", "bool", "locations.0", "metadata.annotations.0.my-annotation", "null", "number"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert := assert.New(t) + assert.Equal(tt.paths, GetTerminalJSONPaths(tt.json)) + }) + } +} From 3065ac7350c19e53ae082d6953407c5dd406e8c1 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 21 Nov 2024 12:23:06 -0800 Subject: [PATCH 1293/1371] feat(blueprint-test): add JSONPathEqs() (#2706) --- infra/blueprint-test/pkg/golden/golden.go | 14 +++++++ .../blueprint-test/pkg/golden/golden_test.go | 42 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/infra/blueprint-test/pkg/golden/golden.go b/infra/blueprint-test/pkg/golden/golden.go index 59f2bf11461..ee0590cd0af 100644 --- a/infra/blueprint-test/pkg/golden/golden.go +++ b/infra/blueprint-test/pkg/golden/golden.go @@ -22,6 +22,7 @@ import ( "os" "path" "strings" + "sync" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" @@ -156,3 +157,16 @@ func (g *GoldenFile) JSONEq(a *assert.Assertions, got gjson.Result, jsonPath str gfData := gf.Get(jsonPath).String() a.Equal(gfData, gotData, fmt.Sprintf("expected %s to match fixture %s", jsonPath, gfData)) } + +// JSONPathEqs asserts that json content in jsonPaths for got and goldenfile are the same +func (g *GoldenFile) JSONPathEqs(a *assert.Assertions, got gjson.Result, jsonPaths []string) { + var wg sync.WaitGroup + wg.Add(len(jsonPaths)) + for _, path := range jsonPaths { + go func(a *assert.Assertions, got gjson.Result, path string) { + defer wg.Done() + g.JSONEq(a, got, path) + }(a, got, path) + } + wg.Wait() +} diff --git a/infra/blueprint-test/pkg/golden/golden_test.go b/infra/blueprint-test/pkg/golden/golden_test.go index c72f22e4269..e501a05a851 100644 --- a/infra/blueprint-test/pkg/golden/golden_test.go +++ b/infra/blueprint-test/pkg/golden/golden_test.go @@ -25,6 +25,8 @@ import ( "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" "github.com/stretchr/testify/assert" + + gotest "github.com/mitchellh/go-testing-interface" ) const testProjectID = "foo" @@ -133,3 +135,43 @@ func TestJSONEq(t *testing.T) { }) } } + +func TestJSONEqs(t *testing.T) { + tests := []struct { + name string + data string + eqPaths []string + opts []goldenFileOption + want string + hasError bool + }{ + { + name: "simple", + data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"},\"fizz\":\"pop\"}", + eqPaths: []string{"foo","baz"}, + want: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"}}", + hasError: false, + }, + { + name: "false", + data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"},\"fizz\":\"pop\"}", + eqPaths: []string{"foo","baz"}, + want: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz1\"}}", + hasError: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + innerT := &gotest.RuntimeT{} + innerAssert := assert.New(innerT) + os.Setenv(gfUpdateEnvVar, "true") + defer os.Unsetenv(gfUpdateEnvVar) + got := NewOrUpdate(t, tt.data, tt.opts...) + defer os.Remove(got.GetName()) + got.JSONPathEqs(innerAssert, utils.ParseJSONResult(t, tt.want), tt.eqPaths) + + assert := assert.New(t) + assert.True(innerT.Failed() == tt.hasError) + }) + } +} From bab9fad8020e6f13a6cb078e7103589522d9df0f Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 15:53:54 -0800 Subject: [PATCH 1294/1371] chore(release-please): release blueprint-test 0.17.0 (#2690) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 853f9406860..55cd7018a14 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.16.3", + "infra/blueprint-test": "0.17.0", "infra/module-swapper": "0.4.9", "tflint-ruleset-blueprint": "0.2.5" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 32fa2afc65b..3666790ad10 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.17.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.16.3...infra/blueprint-test/v0.17.0) (2024-11-21) + + +### Features + +* **blueprint-test:** add cai helper ([#2689](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2689)) ([054d1b0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/054d1b0efdee6bd145f2469ffa0ccbd1e8436aa6)) +* **blueprint-test:** add GetJSONPaths ([#2705](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2705)) ([53eeec7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/53eeec7a5bf6296d6b7eb5883dbb5743c32a259a)) +* **blueprint-test:** add JSONPathEqs() ([#2706](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2706)) ([3065ac7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3065ac7350c19e53ae082d6953407c5dd406e8c1)) +* **blueprint-test:** add ParseKubectlJSONResult ([#2688](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2688)) ([c46b613](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/c46b6131159f8d482d10c403a185c1084f84806a)) + + +### Bug Fixes + +* **deps:** update module golang.org/x/mod to v0.22.0 ([#2682](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2682)) ([3777591](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/3777591e661570f421d7e1d9feb374ad9c25d8f7)) + ## [0.16.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.16.2...infra/blueprint-test/v0.16.3) (2024-10-30) From dd103c2d3181cd272b44dc8b7a7b63cdaf35b2cd Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 22 Nov 2024 22:47:59 +0100 Subject: [PATCH 1295/1371] chore(deps): update module google.golang.org/api to v0.206.0 (#2707) --- infra/utils/fbf/go.mod | 20 ++++++++--------- infra/utils/fbf/go.sum | 50 +++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index d9bfedbe095..101e1802928 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,11 +6,11 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.1 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.205.0 + google.golang.org/api v0.206.0 ) require ( - cloud.google.com/go/auth v0.10.1 // indirect + cloud.google.com/go/auth v0.10.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -22,7 +22,7 @@ require ( github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect - github.com/googleapis/gax-go/v2 v2.13.0 // indirect + github.com/googleapis/gax-go/v2 v2.14.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect @@ -33,13 +33,13 @@ require ( go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect - golang.org/x/crypto v0.28.0 // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sys v0.26.0 // indirect - golang.org/x/term v0.25.0 // indirect - golang.org/x/text v0.19.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect + golang.org/x/crypto v0.29.0 // indirect + golang.org/x/net v0.31.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sys v0.27.0 // indirect + golang.org/x/term v0.26.0 // indirect + golang.org/x/text v0.20.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/protobuf v1.35.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 50a64a00f3e..71ce88c4465 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.10.1 h1:TnK46qldSfHWt2a0b/hciaiVJsmDXWy9FqyUan0uYiI= -cloud.google.com/go/auth v0.10.1/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth v0.10.2 h1:oKF7rgBfSHdp/kuhXtqU/tNDr0mZqhYbEh+6SiqzkKo= +cloud.google.com/go/auth v0.10.2/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= @@ -56,8 +56,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= -github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= -github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= +github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= +github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= github.com/jedib0t/go-pretty/v6 v6.6.1 h1:iJ65Xjb680rHcikRj6DSIbzCex2huitmc7bDtxYVWyc= github.com/jedib0t/go-pretty/v6 v6.6.1/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -93,8 +93,8 @@ go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt3 go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -105,48 +105,48 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= -golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.205.0 h1:LFaxkAIpDb/GsrWV20dMMo5MR0h8UARTbn24LmD+0Pg= -google.golang.org/api v0.205.0/go.mod h1:NrK1EMqO8Xk6l6QwRAmrXXg2v6dzukhlOyvkYtnvUuc= +google.golang.org/api v0.206.0 h1:A27GClesCSheW5P2BymVHjpEeQ2XHH8DI8Srs2HI2L8= +google.golang.org/api v0.206.0/go.mod h1:BtB8bfjTYIrai3d8UyvPmV9REGgox7coh+ZRwm0b+W8= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20241021214115-324edc3d5d38 h1:Q3nlH8iSQSRUwOskjbcSMcF2jiYMNiQYZ0c2KEJLKKU= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto v0.0.0-20241104194629-dd2ea8efbc28 h1:KJjNNclfpIkVqrZlTWcgOOaVQ00LdBnoEaRfkUx760s= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From fd44a2c1973c8c8a4525c5b8209c3833b6023d75 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 23 Nov 2024 00:47:23 +0100 Subject: [PATCH 1296/1371] chore(deps): update go modules (#2710) --- infra/utils/fbf/go.mod | 8 ++++---- infra/utils/fbf/go.sum | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 101e1802928..2f2ff99f901 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,9 +4,9 @@ go 1.22 require ( github.com/briandowns/spinner v1.23.1 - github.com/jedib0t/go-pretty/v6 v6.6.1 + github.com/jedib0t/go-pretty/v6 v6.6.2 github.com/stretchr/testify v1.9.0 - google.golang.org/api v0.206.0 + google.golang.org/api v0.209.0 ) require ( @@ -39,8 +39,8 @@ require ( golang.org/x/sys v0.27.0 // indirect golang.org/x/term v0.26.0 // indirect golang.org/x/text v0.20.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect google.golang.org/grpc v1.67.1 // indirect - google.golang.org/protobuf v1.35.1 // indirect + google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 71ce88c4465..542e2667676 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -58,8 +58,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gT github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= -github.com/jedib0t/go-pretty/v6 v6.6.1 h1:iJ65Xjb680rHcikRj6DSIbzCex2huitmc7bDtxYVWyc= -github.com/jedib0t/go-pretty/v6 v6.6.1/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.2 h1:27bLj3nRODzaiA7tPIxy9UVWHoPspFfME9XxgwiiNsM= +github.com/jedib0t/go-pretty/v6 v6.6.2/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -135,18 +135,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.206.0 h1:A27GClesCSheW5P2BymVHjpEeQ2XHH8DI8Srs2HI2L8= -google.golang.org/api v0.206.0/go.mod h1:BtB8bfjTYIrai3d8UyvPmV9REGgox7coh+ZRwm0b+W8= +google.golang.org/api v0.209.0 h1:Ja2OXNlyRlWCWu8o+GgI4yUn/wz9h/5ZfFbKz+dQX+w= +google.golang.org/api v0.209.0/go.mod h1:I53S168Yr/PNDNMi5yPnDc0/LGRZO6o7PoEbl/HY3CM= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20241104194629-dd2ea8efbc28 h1:KJjNNclfpIkVqrZlTWcgOOaVQ00LdBnoEaRfkUx760s= +google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f h1:zDoHYmMzMacIdjNe+P2XiTmPsLawi/pCbSPfxt6lTfw= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1:C1QccEa9kUwvMgEUORqQD9S17QesQijxjZ84sO82mfo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -163,8 +163,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 03b074291094922a89b8e0d72fe4e618961b5d9a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 23 Nov 2024 01:59:14 +0100 Subject: [PATCH 1297/1371] chore(deps): update module github.com/hashicorp/hcl/v2 to v2.23.0 (#2708) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 3ec8a6f4b60..e14ac886ed7 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -6,7 +6,7 @@ require ( github.com/chainguard-dev/git-urls v1.0.2 github.com/go-git/go-git/v5 v5.12.0 github.com/google/go-cmp v0.6.0 - github.com/hashicorp/hcl/v2 v2.22.0 + github.com/hashicorp/hcl/v2 v2.23.0 github.com/pmezard/go-difflib v1.0.0 github.com/zclconf/go-cty v1.15.0 ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 72f7c6e8acd..7f4976b5cd9 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -44,8 +44,8 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= -github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= +github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= From c9980c01d9c0f6de81bdaa9e3b9c1585f8bb64b5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 25 Nov 2024 20:22:19 +0100 Subject: [PATCH 1298/1371] chore(deps): update module github.com/stretchr/testify to v1.10.0 (#2713) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 2f2ff99f901..f3811f4b0c7 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -5,7 +5,7 @@ go 1.22 require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.2 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 google.golang.org/api v0.209.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 542e2667676..b20e442d3cc 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -79,8 +79,8 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE 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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= From a86225a69c6afb8e0c03ef81f753c4f36f3f067b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 25 Nov 2024 21:16:51 +0100 Subject: [PATCH 1299/1371] chore(deps): update module github.com/stretchr/testify to v1.10.0 (#2712) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 4f714eae53f..24f36a8bfb2 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -10,7 +10,7 @@ require ( github.com/hashicorp/terraform-json v0.23.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.22.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 79016645a66..c39c7e0943c 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -495,8 +495,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= From 978454ea6e3ff9dbc2f052ddc174f5d6bc35a26e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 25 Nov 2024 21:31:34 +0100 Subject: [PATCH 1300/1371] fix(deps): update module github.com/hashicorp/hcl/v2 to v2.23.0 (#2709) --- tflint-ruleset-blueprint/go.mod | 2 +- tflint-ruleset-blueprint/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 713bfffb70b..73e20ce4971 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -6,7 +6,7 @@ toolchain go1.22.9 require ( github.com/hashicorp/go-version v1.7.0 - github.com/hashicorp/hcl/v2 v2.22.0 + github.com/hashicorp/hcl/v2 v2.23.0 github.com/terraform-linters/tflint-plugin-sdk v0.21.0 ) diff --git a/tflint-ruleset-blueprint/go.sum b/tflint-ruleset-blueprint/go.sum index ca5a5f775d6..6ad270dce8c 100644 --- a/tflint-ruleset-blueprint/go.sum +++ b/tflint-ruleset-blueprint/go.sum @@ -21,8 +21,8 @@ github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOs github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= -github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= +github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= From 0f0207cc2758f16887534f47851e4c2bbc58fb2a Mon Sep 17 00:00:00 2001 From: abhishek kumar tiwari Date: Tue, 26 Nov 2024 20:14:04 +0000 Subject: [PATCH 1301/1371] feat: Add roles requirement in blueprint metadata in a order (#2714) --- cli/Makefile | 2 +- cli/bpmetadata/tfconfig.go | 23 +++ cli/bpmetadata/tfconfig_test.go | 137 ++++++++++++++++++ cli/testdata/bpmetadata/tf/iam-multi-level.tf | 16 ++ 4 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 cli/testdata/bpmetadata/tf/iam-multi-level.tf diff --git a/cli/Makefile b/cli/Makefile index f6d3f7aa40d..27666a246f3 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.6 +VERSION=v1.5.7 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/tfconfig.go b/cli/bpmetadata/tfconfig.go index e589bdc8558..caccbfe2fbd 100644 --- a/cli/bpmetadata/tfconfig.go +++ b/cli/bpmetadata/tfconfig.go @@ -441,9 +441,32 @@ func parseBlueprintRoles(rolesFile *hcl.File) ([]*BlueprintRoles, error) { break } + sortBlueprintRoles(r) return r, nil } +// Sort blueprint roles. +func sortBlueprintRoles(r []*BlueprintRoles) { + sort.SliceStable(r, func(i, j int) bool { + // 1. Sort by Level + if r[i].Level != r[j].Level { + return r[i].Level < r[j].Level + } + + // 2. Sort by the len of roles + if len(r[i].Roles) != len(r[j].Roles) { + return len(r[i].Roles) < len(r[j].Roles) + } + + // 3. Sort by the first role (if available) + if len(r[i].Roles) > 0 && len(r[j].Roles) > 0 { + return r[i].Roles[0] < r[j].Roles[0] + } + + return false + }) +} + // parseBlueprintServices gets the gcp api services required for the blueprint // to be provisioned func parseBlueprintServices(servicesFile *hcl.File) ([]string, error) { diff --git a/cli/bpmetadata/tfconfig_test.go b/cli/bpmetadata/tfconfig_test.go index b65a44dbef7..3d6c2a6fdff 100644 --- a/cli/bpmetadata/tfconfig_test.go +++ b/cli/bpmetadata/tfconfig_test.go @@ -258,6 +258,32 @@ func TestTFRoles(t *testing.T) { }, }, }, + { + name: "simple list of roles in order for multiple level", + configName: "iam-multi-level.tf", + wantRoles: []*BlueprintRoles{ + { + Level: "Project", + Roles: []string{ + "roles/owner", + "roles/storage.admin", + }, + }, + { + Level: "Project", + Roles: []string{ + "roles/cloudsql.admin", + "roles/compute.networkAdmin", + "roles/iam.serviceAccountAdmin", + "roles/resourcemanager.projectIamAdmin", + "roles/storage.admin", + "roles/workflows.admin", + "roles/cloudscheduler.admin", + "roles/iam.serviceAccountUser", + }, + }, + }, + }, } for _, tt := range tests { @@ -271,6 +297,117 @@ func TestTFRoles(t *testing.T) { } } +func TestSortBlueprintRoles(t *testing.T) { + tests := []struct { + name string + in []*BlueprintRoles + want []*BlueprintRoles + }{ + { + name: "sort by level", + in: []*BlueprintRoles{ + { + Level: "Project", + Roles: []string{ + "roles/cloudsql.admin", + }, + }, + { + Level: "Folder", + Roles: []string{ + "roles/storage.admin", + }, + }, + }, + want: []*BlueprintRoles{ + { + Level: "Folder", + Roles: []string{ + "roles/storage.admin", + }, + }, + { + Level: "Project", + Roles: []string{ + "roles/cloudsql.admin", + }, + }, + }, + }, + { + name: "sort by length of roles", + in: []*BlueprintRoles{ + { + Level: "Project", + Roles: []string{ + "roles/storage.admin", + }, + }, + { + Level: "Project", + Roles: []string{ + "roles/cloudsql.admin", + "roles/owner", + }, + }, + }, + want: []*BlueprintRoles{ + { + Level: "Project", + Roles: []string{ + "roles/storage.admin", + }, + }, + { + Level: "Project", + Roles: []string{ + "roles/cloudsql.admin", + "roles/owner", + }, + }, + }, + }, + { + name: "sort by first role", + in: []*BlueprintRoles{ + { + Level: "Project", + Roles: []string{ + "roles/storage.admin", + }, + }, + { + Level: "Project", + Roles: []string{ + "roles/cloudsql.admin", + }, + }, + }, + want: []*BlueprintRoles{ + { + Level: "Project", + Roles: []string{ + "roles/cloudsql.admin", + }, + }, + { + Level: "Project", + Roles: []string{ + "roles/storage.admin", + }, + }, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + sortBlueprintRoles(tt.in) + assert.Equal(t, tt.in, tt.want) + }) + } +} + func TestTFProviderVersions(t *testing.T) { tests := []struct { name string diff --git a/cli/testdata/bpmetadata/tf/iam-multi-level.tf b/cli/testdata/bpmetadata/tf/iam-multi-level.tf new file mode 100644 index 00000000000..4a5941b0265 --- /dev/null +++ b/cli/testdata/bpmetadata/tf/iam-multi-level.tf @@ -0,0 +1,16 @@ +locals { + int_required_roles = [ + "roles/cloudsql.admin", + "roles/compute.networkAdmin", + "roles/iam.serviceAccountAdmin", + "roles/resourcemanager.projectIamAdmin", + "roles/storage.admin", + "roles/workflows.admin", + "roles/cloudscheduler.admin", + "roles/iam.serviceAccountUser" + ] + int_required_project_roles = [ + "roles/owner", + "roles/storage.admin" + ] +} From 97891bf2fe45aaa09b8ff8bf4fc9b4210270a989 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 27 Nov 2024 08:20:06 -0800 Subject: [PATCH 1302/1371] fix(blueprint-test): add goroutines max (#2711) --- infra/blueprint-test/pkg/golden/golden.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/infra/blueprint-test/pkg/golden/golden.go b/infra/blueprint-test/pkg/golden/golden.go index ee0590cd0af..fd79d4dba8a 100644 --- a/infra/blueprint-test/pkg/golden/golden.go +++ b/infra/blueprint-test/pkg/golden/golden.go @@ -22,19 +22,20 @@ import ( "os" "path" "strings" - "sync" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/gcloud" "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" "github.com/mitchellh/go-testing-interface" "github.com/stretchr/testify/assert" "github.com/tidwall/gjson" + "golang.org/x/sync/errgroup" ) const ( gfDir = "testdata" gfPerms = 0755 gfUpdateEnvVar = "UPDATE_GOLDEN" + gGoroutinesMax = 24 ) type GoldenFile struct { @@ -160,13 +161,17 @@ func (g *GoldenFile) JSONEq(a *assert.Assertions, got gjson.Result, jsonPath str // JSONPathEqs asserts that json content in jsonPaths for got and goldenfile are the same func (g *GoldenFile) JSONPathEqs(a *assert.Assertions, got gjson.Result, jsonPaths []string) { - var wg sync.WaitGroup - wg.Add(len(jsonPaths)) - for _, path := range jsonPaths { - go func(a *assert.Assertions, got gjson.Result, path string) { - defer wg.Done() - g.JSONEq(a, got, path) - }(a, got, path) + syncGroup := new(errgroup.Group) + syncGroup.SetLimit(gGoroutinesMax) + g.t.Logf("Checking %d JSON paths with max %d goroutines", len(jsonPaths), gGoroutinesMax) + for _, jsonPath := range jsonPaths { + jsonPath := jsonPath + syncGroup.Go(func() error { + g.JSONEq(a, got, jsonPath) + return nil + }) + } + if err := syncGroup.Wait(); err != nil { + g.t.Fatal(err) } - wg.Wait() } From e7c88a9dedae71d8c935810364060f5d62320eda Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 27 Nov 2024 17:38:46 +0100 Subject: [PATCH 1303/1371] chore(deps): update github/codeql-action action to v3.27.5 (#2718) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 5dbf8e6c05d..6c132cf77f6 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 + uses: github/codeql-action/init@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 + uses: github/codeql-action/autobuild@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 + uses: github/codeql-action/analyze@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f9e2aa98162..ff49f3d5513 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 + uses: github/codeql-action/upload-sarif@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: sarif_file: results.sarif From b7f4b2aa951daaf1c8d7c41874119da3d1565684 Mon Sep 17 00:00:00 2001 From: Nim Jayawardena Date: Thu, 28 Nov 2024 00:23:46 -0500 Subject: [PATCH 1304/1371] chore: Offboard JSS 13.1 & 13.2 (#2665) Co-authored-by: Bharath KKB --- .../terraform/test-org/ci-triggers/locals.tf | 2 -- infra/terraform/test-org/org/folders.tf | 3 ++- infra/terraform/test-org/org/locals.tf | 22 ------------------- 3 files changed, 2 insertions(+), 25 deletions(-) diff --git a/infra/terraform/test-org/ci-triggers/locals.tf b/infra/terraform/test-org/ci-triggers/locals.tf index 170f2f2b14c..a62e2deac88 100644 --- a/infra/terraform/test-org/ci-triggers/locals.tf +++ b/infra/terraform/test-org/ci-triggers/locals.tf @@ -30,8 +30,6 @@ locals { "cloud-foundation-training" = "cloud-foundation-training", "example-foundation-app" = "terraform-example-foundation-app", "anthos-samples" = "anthos-samples" - "cloud-deployment-gce" = "terraform-cloud-deployment-gce", - "cloud-deployment-gke" = "terraform-cloud-deployment-gke", "docs-samples" = "terraform-docs-samples" "dynamic-python-webapp" = "terraform-dynamic-python-webapp" "dynamic-javascript-webapp" = "terraform-dynamic-javascript-webapp" diff --git a/infra/terraform/test-org/org/folders.tf b/infra/terraform/test-org/org/folders.tf index d23ccb65f24..acee3ae74ea 100644 --- a/infra/terraform/test-org/org/folders.tf +++ b/infra/terraform/test-org/org/folders.tf @@ -36,7 +36,8 @@ module "folders-ci" { names = [for module in [for repo in local.repos : try(repo.short_name, trimprefix(repo.name, "terraform-google-"))] : "ci-${module}"] - set_roles = false + set_roles = false + deletion_protection = false } module "bpt_ci_folder" { diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index d054a24accb..66796eb7a66 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -798,28 +798,6 @@ locals { owners = ["anaik91", "imrannayer"] topics = local.common_topics.db }, - { - name = "terraform-cloud-deployment-gce" - short_name = "cloud-deployment-gce" - org = "GoogleCloudPlatform" - description = "Deploy a change to a live stateful service (Java on GCE)" - groups = ["team-egg", "dee-platform-ops", "dee-data-ai", local.jss_common_group] - enable_periodic = true - lint_env = { - ENABLE_BPMETADATA = "1" - } - }, - { - name = "terraform-cloud-deployment-gke" - short_name = "cloud-deployment-gke" - org = "GoogleCloudPlatform" - description = "Deploy a change to a live stateful service (Go on GKE)" - groups = ["team-egg", "dee-platform-ops", "dee-data-ai", local.jss_common_group] - enable_periodic = true - lint_env = { - ENABLE_BPMETADATA = "1" - } - }, { name = "terraform-pubsub-integration-golang" org = "GoogleCloudPlatform" From 8c38154fb326a09e0bba5c20e8e7d32da43f146c Mon Sep 17 00:00:00 2001 From: abhishek kumar tiwari Date: Thu, 28 Nov 2024 05:32:48 +0000 Subject: [PATCH 1305/1371] chore: Exclude metadata.display.yaml from GCB trigger (#2715) Co-authored-by: Bharath KKB --- infra/terraform/test-org/ci-triggers/triggers.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/ci-triggers/triggers.tf b/infra/terraform/test-org/ci-triggers/triggers.tf index 72101eed614..4f84191b53c 100644 --- a/infra/terraform/test-org/ci-triggers/triggers.tf +++ b/infra/terraform/test-org/ci-triggers/triggers.tf @@ -46,7 +46,7 @@ resource "google_cloudbuild_trigger" "int_trigger" { ) filename = "build/int.cloudbuild.yaml" - ignored_files = ["**/*.md", ".gitignore", ".github/**", "**/metadata.yaml", "assets/**", "infra/assets/**"] + ignored_files = ["**/*.md", ".gitignore", ".github/**", "**/metadata.yaml", "**/metadata.display.yaml", "assets/**", "infra/assets/**"] } # pull_request triggers do not support run trigger, so we have a shadow periodic trigger From 7e6b8919f1cc628827e7a460d24ab8d7a359bca2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 2 Dec 2024 18:54:16 +0100 Subject: [PATCH 1306/1371] chore(deps): update golangci/golangci-lint docker tag to v1.62.2 (#2721) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index 26f7f5868a2..ad20c58bda7 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.62.0 +GOLANGCI_VERSION := 1.62.2 .PHONY: docker_go_lint docker_go_lint: From f54a670cf8892e43554e222f04a71e8adaf3fd73 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 2 Dec 2024 20:17:03 +0100 Subject: [PATCH 1307/1371] chore(deps): update golangci/golangci-lint docker tag to v1.62.2 (#2720) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 27666a246f3..0e14c524050 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.62.0 +GOLANGCI_VERSION := 1.62.2 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From 19d97de33ca7b5e4d29c5a6d0b4b0bd86016c082 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 5 Dec 2024 20:23:04 +0100 Subject: [PATCH 1308/1371] chore(deps): update module github.com/jedib0t/go-pretty/v6 to v6.6.3 (#2725) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index f3811f4b0c7..2fb481cec2e 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,7 +4,7 @@ go 1.22 require ( github.com/briandowns/spinner v1.23.1 - github.com/jedib0t/go-pretty/v6 v6.6.2 + github.com/jedib0t/go-pretty/v6 v6.6.3 github.com/stretchr/testify v1.10.0 google.golang.org/api v0.209.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index b20e442d3cc..9de9ad7b035 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -58,8 +58,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gT github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= -github.com/jedib0t/go-pretty/v6 v6.6.2 h1:27bLj3nRODzaiA7tPIxy9UVWHoPspFfME9XxgwiiNsM= -github.com/jedib0t/go-pretty/v6 v6.6.2/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.3 h1:nGqgS0tgIO1Hto47HSaaK4ac/I/Bu7usmdD3qvs0WvM= +github.com/jedib0t/go-pretty/v6 v6.6.3/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From 83890bddafdfccbc4c827ca6de5c0733bd39b598 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Thu, 5 Dec 2024 13:38:16 -0600 Subject: [PATCH 1309/1371] chore: Update Tools to 1.22.19 (#2704) Co-authored-by: Andrew Peabody --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 64e84ec50ac..96f1dd2ceee 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.68.14 +TERRAGRUNT_VERSION := 0.69.8 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.6 +CFT_CLI_VERSION := 1.5.7 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.54.0 TINKEY_VERSION := 1.7.0 @@ -47,7 +47,7 @@ TFLINT_BP_PLUGIN_VERSION := 0.2.5 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.62.0 +GOLANGCI_VERSION := 1.62.2 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.18 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.19 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 00c48faebd4e83278381fa32b19b05133f6e32ed Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 5 Dec 2024 21:47:02 +0100 Subject: [PATCH 1310/1371] chore(deps): update module google.golang.org/api to v0.210.0 (#2726) --- infra/utils/fbf/go.mod | 8 ++++---- infra/utils/fbf/go.sum | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 2fb481cec2e..eeba993dbe5 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,12 +6,12 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.3 github.com/stretchr/testify v1.10.0 - google.golang.org/api v0.209.0 + google.golang.org/api v0.210.0 ) require ( - cloud.google.com/go/auth v0.10.2 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect + cloud.google.com/go/auth v0.11.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect @@ -39,7 +39,7 @@ require ( golang.org/x/sys v0.27.0 // indirect golang.org/x/term v0.26.0 // indirect golang.org/x/text v0.20.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 9de9ad7b035..3467159b535 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,8 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.10.2 h1:oKF7rgBfSHdp/kuhXtqU/tNDr0mZqhYbEh+6SiqzkKo= -cloud.google.com/go/auth v0.10.2/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= -cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= -cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= +cloud.google.com/go/auth v0.11.0 h1:Ic5SZz2lsvbYcWT5dfjNWgw6tTlGi2Wc8hyQSC9BstA= +cloud.google.com/go/auth v0.11.0/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= +cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -135,18 +135,18 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.209.0 h1:Ja2OXNlyRlWCWu8o+GgI4yUn/wz9h/5ZfFbKz+dQX+w= -google.golang.org/api v0.209.0/go.mod h1:I53S168Yr/PNDNMi5yPnDc0/LGRZO6o7PoEbl/HY3CM= +google.golang.org/api v0.210.0 h1:HMNffZ57OoZCRYSbdWVRoqOa8V8NIHLL0CzdBPLztWk= +google.golang.org/api v0.210.0/go.mod h1:B9XDZGnx2NtyjzVkOVTGrFSAVZgPcbedzKg/gTLwqBs= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f h1:zDoHYmMzMacIdjNe+P2XiTmPsLawi/pCbSPfxt6lTfw= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1:C1QccEa9kUwvMgEUORqQD9S17QesQijxjZ84sO82mfo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= From 5441942ca5acaf2cfbc4512dc2f1c6955b616ce8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 5 Dec 2024 23:37:58 +0100 Subject: [PATCH 1311/1371] chore(deps): update module github.com/zclconf/go-cty to v1.15.1 (#2723) --- infra/module-swapper/go.mod | 2 +- infra/module-swapper/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index e14ac886ed7..d5566859de0 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/hashicorp/hcl/v2 v2.23.0 github.com/pmezard/go-difflib v1.0.0 - github.com/zclconf/go-cty v1.15.0 + github.com/zclconf/go-cty v1.15.1 ) require ( diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 7f4976b5cd9..d5d1fce9a18 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -82,8 +82,8 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= From b588f48270a08cc7a092759d4cca51209291ef7d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:10:53 -0800 Subject: [PATCH 1312/1371] chore(release-please): release tflint-ruleset-blueprint 0.2.6 (#2717) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 55cd7018a14..4e1148d6e41 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.17.0", "infra/module-swapper": "0.4.9", - "tflint-ruleset-blueprint": "0.2.5" + "tflint-ruleset-blueprint": "0.2.6" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md index af03fb67df6..42451b85c0e 100644 --- a/tflint-ruleset-blueprint/CHANGELOG.md +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.5...tflint-ruleset-blueprint/v0.2.6) (2024-12-05) + + +### Bug Fixes + +* **deps:** update module github.com/hashicorp/hcl/v2 to v2.23.0 ([#2709](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2709)) ([978454e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/978454ea6e3ff9dbc2f052ddc174f5d6bc35a26e)) + ## [0.2.5](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.4...tflint-ruleset-blueprint/v0.2.5) (2024-09-13) From 4cf71be897fa9f69da008ce2d3c8882cc2a288d0 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 5 Dec 2024 16:18:03 -0800 Subject: [PATCH 1313/1371] chore: dev-tools 1.23 (alpine 3.21 & GO 1.23) (#2728) --- infra/build/Makefile | 8 ++++---- infra/build/developer-tools/build/home/.tflint.module.hcl | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 96f1dd2ceee..849c807a2a7 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.9.8 +TERRAFORM_VERSION := 1.10.1 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 496.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -39,11 +39,11 @@ CFT_CLI_VERSION := 1.5.7 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.54.0 TINKEY_VERSION := 1.7.0 -ALPINE_VERSION := 3.20 +ALPINE_VERSION := 3.21 # Updated by Update Tooling Workflow MODULE_SWAPPER_VERSION := 0.4.9 # Updated by Update Tooling Workflow -TFLINT_BP_PLUGIN_VERSION := 0.2.5 +TFLINT_BP_PLUGIN_VERSION := 0.2.6 # For developer-tools-krm # Updated by Update Tooling Workflow @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22.19 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.0 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') diff --git a/infra/build/developer-tools/build/home/.tflint.module.hcl b/infra/build/developer-tools/build/home/.tflint.module.hcl index 821d28eb1f1..1fe69eb6c74 100644 --- a/infra/build/developer-tools/build/home/.tflint.module.hcl +++ b/infra/build/developer-tools/build/home/.tflint.module.hcl @@ -59,3 +59,7 @@ rule "terraform_required_version" { rule "terraform_typed_variables" { enabled = true } + +rule "terraform_required_version_range" { + enabled = true +} From dbedb97fc05238bc0ee39cb89f872fe8334ba160 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 6 Dec 2024 01:59:41 +0100 Subject: [PATCH 1314/1371] chore(deps): update github.com/hashicorp/terraform-config-inspect digest to c404f82 (#2729) --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 24f36a8bfb2..64e03cb07dc 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -6,7 +6,7 @@ require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.47.2 - github.com/hashicorp/terraform-config-inspect v0.0.0-20241107133921-3adb156ecfe2 + github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 github.com/hashicorp/terraform-json v0.23.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 @@ -14,6 +14,7 @@ require ( github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.22.0 + golang.org/x/sync v0.4.0 sigs.k8s.io/kustomize/kyaml v0.18.1 ) @@ -87,7 +88,6 @@ require ( golang.org/x/crypto v0.21.0 // indirect golang.org/x/net v0.23.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/sync v0.4.0 // indirect golang.org/x/sys v0.21.0 // indirect golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index c39c7e0943c..8af15c7f6d3 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -400,8 +400,8 @@ github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+Db github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20241107133921-3adb156ecfe2 h1:h+wcDC5wTiM+5YKjuLtUSWJtdtMVJNCRCPHoWieLpM4= -github.com/hashicorp/terraform-config-inspect v0.0.0-20241107133921-3adb156ecfe2/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 h1:146llE+6P/9YO8RcHRehzGNiS9+OoirKW9/aML6/JIA= +github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= From 0315e563b2efb9bcb01361e2dff99921da53d866 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 5 Dec 2024 17:39:08 -0800 Subject: [PATCH 1315/1371] fix: JSONEq() handle json doc whitespace (#2719) --- infra/blueprint-test/pkg/golden/golden.go | 7 ++++--- infra/blueprint-test/pkg/golden/golden_test.go | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/pkg/golden/golden.go b/infra/blueprint-test/pkg/golden/golden.go index fd79d4dba8a..d2b3a5d58da 100644 --- a/infra/blueprint-test/pkg/golden/golden.go +++ b/infra/blueprint-test/pkg/golden/golden.go @@ -154,9 +154,10 @@ func (g *GoldenFile) GetJSON() gjson.Result { // JSONEq asserts that json content in jsonPath for got and goldenfile is the same func (g *GoldenFile) JSONEq(a *assert.Assertions, got gjson.Result, jsonPath string) { gf := g.GetJSON() - gotData := g.ApplySanitizers(got.Get(jsonPath).String()) - gfData := gf.Get(jsonPath).String() - a.Equal(gfData, gotData, fmt.Sprintf("expected %s to match fixture %s", jsonPath, gfData)) + getPath := fmt.Sprintf("%s|@tostr", jsonPath) + gotData := g.ApplySanitizers(got.Get(getPath).String()) + gfData := gf.Get(getPath).String() + a.JSONEq(gfData, gotData, fmt.Sprintf("expected %s to match fixture %s", jsonPath, gfData)) } // JSONPathEqs asserts that json content in jsonPaths for got and goldenfile are the same diff --git a/infra/blueprint-test/pkg/golden/golden_test.go b/infra/blueprint-test/pkg/golden/golden_test.go index e501a05a851..bfd0b56895a 100644 --- a/infra/blueprint-test/pkg/golden/golden_test.go +++ b/infra/blueprint-test/pkg/golden/golden_test.go @@ -118,6 +118,12 @@ func TestJSONEq(t *testing.T) { eqPath: "baz", want: "{\"qux\":\"REPLACED\",\"quux\":\"NEW\"}", }, + { + name: "diff_whitespace", + data: "{\"list\":[\n \"SYSTEM_COMPONENTS\",\n \"POD\",\n \"DAEMONSET\",\n \"DEPLOYMENT\",\n \"STATEFULSET\",\n \"STORAGE\",\n \"HPA\",\n \"CADVISOR\",\n \"KUBELET\"\n ]}", + eqPath: "list", + want: "[\n \"SYSTEM_COMPONENTS\",\n \"POD\",\n \"DAEMONSET\",\n \"DEPLOYMENT\",\n \"STATEFULSET\",\n \"STORAGE\",\n \"HPA\",\n \"CADVISOR\",\n \"KUBELET\"\n ]", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { From 00f6c05674b8316d29b3d1aee11ad3d12748b6aa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 6 Dec 2024 18:27:30 +0100 Subject: [PATCH 1316/1371] fix(deps): update module golang.org/x/sync to v0.10.0 (#2734) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 64e03cb07dc..b53a9496ea7 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -14,7 +14,7 @@ require ( github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 golang.org/x/mod v0.22.0 - golang.org/x/sync v0.4.0 + golang.org/x/sync v0.10.0 sigs.k8s.io/kustomize/kyaml v0.18.1 ) diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 8af15c7f6d3..bc4d8c855af 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -674,8 +674,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ 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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= From 9a5abf3e26051ed32d4bad21d11bb6f1e98989c1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 6 Dec 2024 18:31:12 +0100 Subject: [PATCH 1317/1371] chore(deps): update actions/cache action to v4.2.0 (#2731) --- .github/workflows/lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 4ef52ad3db6..4276f0b0d7f 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -34,7 +34,7 @@ jobs: - uses: 'actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683' # v4.2.2 - name: Cache lint-infra-terraform id: cache-lint-infra-terraform - uses: 'actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a' # v4.1.2 + uses: 'actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57' # v4.2.0 with: path: | ${{ github.workspace }}/test/integration/tmp/.terraform From 6d5f891059e75e7f56b121a04ccd6982ad9518cf Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Fri, 6 Dec 2024 09:49:57 -0800 Subject: [PATCH 1318/1371] fix(dev-tools): enable blueprint plugin (#2735) --- infra/build/developer-tools/build/home/.tflint.module.hcl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/infra/build/developer-tools/build/home/.tflint.module.hcl b/infra/build/developer-tools/build/home/.tflint.module.hcl index 1fe69eb6c74..dd82ca95767 100644 --- a/infra/build/developer-tools/build/home/.tflint.module.hcl +++ b/infra/build/developer-tools/build/home/.tflint.module.hcl @@ -60,6 +60,10 @@ rule "terraform_typed_variables" { enabled = true } +plugin "blueprint" { + enabled = true +} + rule "terraform_required_version_range" { enabled = true } From 15cefdca84ebb705143539d6305ae4519131da7f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 6 Dec 2024 18:58:21 +0100 Subject: [PATCH 1319/1371] chore(deps): update github/codeql-action action to v3.27.6 (#2730) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6c132cf77f6..4b7a84201ce 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/init@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/autobuild@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/analyze@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ff49f3d5513..dd458fee54f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/upload-sarif@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 with: sarif_file: results.sarif From 394163b1264437591e2dd0a0a2752d49b4535be3 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 19:01:01 +0000 Subject: [PATCH 1320/1371] chore(release-please): release blueprint-test 0.17.1 (#2716) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4e1148d6e41..3ae63a00311 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.17.0", + "infra/blueprint-test": "0.17.1", "infra/module-swapper": "0.4.9", "tflint-ruleset-blueprint": "0.2.6" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 3666790ad10..8a457235b8a 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.17.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.17.0...infra/blueprint-test/v0.17.1) (2024-12-06) + + +### Bug Fixes + +* **blueprint-test:** add goroutines max ([#2711](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2711)) ([97891bf](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/97891bf2fe45aaa09b8ff8bf4fc9b4210270a989)) +* **deps:** update github.com/hashicorp/terraform-config-inspect digest to c404f82 ([#2729](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2729)) ([dbedb97](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/dbedb97fc05238bc0ee39cb89f872fe8334ba160)) +* **deps:** update module github.com/stretchr/testify to v1.10.0 ([#2712](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2712)) ([a86225a](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/a86225a69c6afb8e0c03ef81f753c4f36f3f067b)) +* **deps:** update module golang.org/x/sync to v0.10.0 ([#2734](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2734)) ([00f6c05](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/00f6c05674b8316d29b3d1aee11ad3d12748b6aa)) +* JSONEq() handle json doc whitespace ([#2719](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2719)) ([0315e56](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/0315e563b2efb9bcb01361e2dff99921da53d866)) + ## [0.17.0](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.16.3...infra/blueprint-test/v0.17.0) (2024-11-21) From 1d0cdaa232621c0d00a299acde67272e168770a0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 6 Dec 2024 20:56:09 +0100 Subject: [PATCH 1321/1371] chore(deps): update cft/developer-tools docker tag to v1.23 (#2733) --- infra/blueprint-test/build/int.cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/build/int.cloudbuild.yaml b/infra/blueprint-test/build/int.cloudbuild.yaml index b9ef766a0b0..d80eb51f023 100644 --- a/infra/blueprint-test/build/int.cloudbuild.yaml +++ b/infra/blueprint-test/build/int.cloudbuild.yaml @@ -31,7 +31,7 @@ steps: dir: 'infra/blueprint-test' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools-krm' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.22' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.23' options: env: - 'TF_VAR_org_id=$_ORG_ID' From a49b1f96169b4417f3d2a0819ba1e93ff1b507df Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 6 Dec 2024 21:06:06 +0100 Subject: [PATCH 1322/1371] chore(deps): update cft/developer-tools docker tag to v1.23 (#2732) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 0e14c524050..6573774c4ba 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -12,7 +12,7 @@ INT_TEST_DIR=./bpmetadata/int-test SCHEMA_DIR=./bpmetadata/schema SRC_PROTO_DIR=./bpmetadata/proto PROTOC_DIR=./bpmetadata -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd GOLANGCI_VERSION := 1.62.2 From 97fe43bea25762ce6c690cf2853f3faffeaf19de Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 9 Dec 2024 08:23:03 -0800 Subject: [PATCH 1323/1371] fix: JSONEq() whitespace backwards compatible (#2737) --- infra/blueprint-test/pkg/golden/golden.go | 4 ++-- .../blueprint-test/pkg/golden/golden_test.go | 24 +++++++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/infra/blueprint-test/pkg/golden/golden.go b/infra/blueprint-test/pkg/golden/golden.go index d2b3a5d58da..0e47f3116f4 100644 --- a/infra/blueprint-test/pkg/golden/golden.go +++ b/infra/blueprint-test/pkg/golden/golden.go @@ -154,10 +154,10 @@ func (g *GoldenFile) GetJSON() gjson.Result { // JSONEq asserts that json content in jsonPath for got and goldenfile is the same func (g *GoldenFile) JSONEq(a *assert.Assertions, got gjson.Result, jsonPath string) { gf := g.GetJSON() - getPath := fmt.Sprintf("%s|@tostr", jsonPath) + getPath := fmt.Sprintf("%s|@ugly", jsonPath) gotData := g.ApplySanitizers(got.Get(getPath).String()) gfData := gf.Get(getPath).String() - a.JSONEq(gfData, gotData, fmt.Sprintf("expected %s to match fixture %s", jsonPath, gfData)) + a.Equalf(gfData, gotData, "For path %q expected %q to match fixture %q", jsonPath, gotData, gfData) } // JSONPathEqs asserts that json content in jsonPaths for got and goldenfile are the same diff --git a/infra/blueprint-test/pkg/golden/golden_test.go b/infra/blueprint-test/pkg/golden/golden_test.go index bfd0b56895a..c5466b884f1 100644 --- a/infra/blueprint-test/pkg/golden/golden_test.go +++ b/infra/blueprint-test/pkg/golden/golden_test.go @@ -86,6 +86,12 @@ func TestJSONEq(t *testing.T) { eqPath: "baz", want: "{\"qux\":\"quz\"}", }, + { + name: "empty path", + data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"}}", + eqPath: "cookie", + want: "", + }, { name: "sanitize quz", data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"}}", @@ -122,7 +128,7 @@ func TestJSONEq(t *testing.T) { name: "diff_whitespace", data: "{\"list\":[\n \"SYSTEM_COMPONENTS\",\n \"POD\",\n \"DAEMONSET\",\n \"DEPLOYMENT\",\n \"STATEFULSET\",\n \"STORAGE\",\n \"HPA\",\n \"CADVISOR\",\n \"KUBELET\"\n ]}", eqPath: "list", - want: "[\n \"SYSTEM_COMPONENTS\",\n \"POD\",\n \"DAEMONSET\",\n \"DEPLOYMENT\",\n \"STATEFULSET\",\n \"STORAGE\",\n \"HPA\",\n \"CADVISOR\",\n \"KUBELET\"\n ]", + want: "[\"SYSTEM_COMPONENTS\",\"POD\",\"DAEMONSET\",\"DEPLOYMENT\",\"STATEFULSET\",\"STORAGE\",\"HPA\",\"CADVISOR\",\"KUBELET\"]", }, } for _, tt := range tests { @@ -137,7 +143,7 @@ func TestJSONEq(t *testing.T) { got := NewOrUpdate(t, tt.data, tt.opts...) defer os.Remove(got.GetName()) got.JSONEq(assert, utils.ParseJSONResult(t, tt.data), tt.eqPath) - assert.JSONEq(tt.want, got.GetJSON().Get(tt.eqPath).String()) + assert.Equal(tt.want, got.GetJSON().Get(tt.eqPath).Get("@ugly").String()) }) } } @@ -158,6 +164,20 @@ func TestJSONEqs(t *testing.T) { want: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"}}", hasError: false, }, + { + name: "simple space diff", + data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"},\"fizz\":\"pop\"}", + eqPaths: []string{"foo","baz"}, + want: "{ \"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"}}", + hasError: false, + }, + { + name: "simple order diff", + data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"},\"fizz\":\"pop\"}", + eqPaths: []string{"foo","baz"}, + want: "{\"baz\":{\"qux\":\"quz\"},\"foo\":\"bar\",\"foo\":\"bar\"}", + hasError: false, + }, { name: "false", data: "{\"foo\":\"bar\",\"baz\":{\"qux\":\"quz\"},\"fizz\":\"pop\"}", From 46137166f71d12f2d1a7a66b54e81266d4f93952 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 10:44:26 -0800 Subject: [PATCH 1324/1371] chore(release-please): release blueprint-test 0.17.2 (#2738) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3ae63a00311..81def838213 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.17.1", + "infra/blueprint-test": "0.17.2", "infra/module-swapper": "0.4.9", "tflint-ruleset-blueprint": "0.2.6" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 8a457235b8a..4d551f94010 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.17.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.17.1...infra/blueprint-test/v0.17.2) (2024-12-09) + + +### Bug Fixes + +* JSONEq() whitespace backwards compatible ([#2737](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2737)) ([97fe43b](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/97fe43bea25762ce6c690cf2853f3faffeaf19de)) + ## [0.17.1](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.17.0...infra/blueprint-test/v0.17.1) (2024-12-06) From 529cc6241bc5775d92db8d72fbf0f7f0b86067a5 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 9 Dec 2024 15:05:50 -0800 Subject: [PATCH 1325/1371] chore: enable GO 1.23 on repo (#2736) Co-authored-by: Bharath KKB --- .github/renovate.json | 6 ++++-- go.work | 2 +- infra/terraform/test-org/github/resources/renovate.json | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index d6e62ef8cb0..83b115a48ed 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -16,7 +16,9 @@ }, "separateMajorMinor": false, "additionalBranchPrefix": "{{parentDir}}-", - "constraints": {"go": "1.22"}, + "constraints": { + "go": "1.23" + }, "packageRules": [ { "matchFileNames": [".github/**"], @@ -40,7 +42,7 @@ }, { "matchPackageNames": ["go"], - "allowedVersions": "1.22", + "allowedVersions": "1.23", "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths"] } ], diff --git a/go.work b/go.work index b46bf6b4bb5..30e1e9246a4 100644 --- a/go.work +++ b/go.work @@ -1,4 +1,4 @@ -go 1.22.7 +go 1.23.0 use ( ./cli diff --git a/infra/terraform/test-org/github/resources/renovate.json b/infra/terraform/test-org/github/resources/renovate.json index ef9bbe6b494..3310c233602 100644 --- a/infra/terraform/test-org/github/resources/renovate.json +++ b/infra/terraform/test-org/github/resources/renovate.json @@ -13,7 +13,9 @@ "labels": ["type:security"], "minimumReleaseAge": "0 days" }, - "constraints": {"go": "1.22"}, + "constraints": { + "go": "1.23" + }, "packageRules": [ { "matchFileNames": ["*", "modules/**"], @@ -42,7 +44,7 @@ "matchManagers": ["gomod"], "matchDatasources": ["golang-version"], "rangeStrategy": "replace", - "allowedVersions": "1.22", + "allowedVersions": "1.23", "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths"] }, { From cfdfb465e704b34a5c1d0eb37d29418781cdc407 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Dec 2024 01:45:46 +0100 Subject: [PATCH 1326/1371] fix(deps): update go modules (#2670) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 2 +- cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 2 +- cli/go.mod | 83 ++++++++--------- cli/go.sum | 168 ++++++++++++++++++----------------- 7 files changed, 133 insertions(+), 128 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 6573774c4ba..cdfd619f2a3 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.7 +VERSION=v1.5.8 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index 73960b851a6..08bb1bff648 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v66/github" + "github.com/google/go-github/v67/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index 92ba3bf38b1..b2e8618642f 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v66/github" + "github.com/google/go-github/v67/github" "github.com/stretchr/testify/assert" ) diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index 432235af519..2c54ffa4a6b 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v66/github" + "github.com/google/go-github/v67/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 215ea86067a..810853ed147 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v66/github" + "github.com/google/go-github/v67/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) diff --git a/cli/go.mod b/cli/go.mod index 7cb516707b1..6e690aae221 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -1,13 +1,13 @@ module github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli -go 1.22.0 +go 1.23 -toolchain go1.22.9 +toolchain go1.23.4 require ( - cloud.google.com/go/asset v1.20.2 - cloud.google.com/go/storage v1.45.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2 + cloud.google.com/go/asset v1.20.3 + cloud.google.com/go/storage v1.47.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.0 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.18.0 @@ -16,53 +16,54 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v66 v66.0.0 + github.com/google/go-github/v67 v67.0.0 github.com/gruntwork-io/terratest v0.47.2 - github.com/hashicorp/hcl/v2 v2.22.0 - github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 - github.com/hashicorp/terraform-json v0.22.1 + github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 + github.com/hashicorp/terraform-json v0.23.0 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible github.com/manifoldco/promptui v0.9.0 - github.com/migueleliasweb/go-github-mock v1.0.1 + github.com/migueleliasweb/go-github-mock v1.1.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 - github.com/open-policy-agent/opa v0.69.0 + github.com/open-policy-agent/opa v0.70.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 - github.com/zclconf/go-cty v1.15.0 + github.com/zclconf/go-cty v1.15.1 golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect - golang.org/x/oauth2 v0.23.0 - golang.org/x/text v0.19.0 - google.golang.org/api v0.201.0 - google.golang.org/protobuf v1.35.1 + golang.org/x/oauth2 v0.24.0 + golang.org/x/text v0.20.0 + google.golang.org/api v0.209.0 + google.golang.org/protobuf v1.35.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) require ( - github.com/hashicorp/go-version v1.6.0 - github.com/jedib0t/go-pretty/v6 v6.6.0 + github.com/hashicorp/go-version v1.7.0 + github.com/hashicorp/hcl/v2 v2.20.1 + github.com/jedib0t/go-pretty/v6 v6.6.4 + ) require ( cel.dev/expr v0.16.1 // indirect cloud.google.com/go v0.116.0 // indirect - cloud.google.com/go/accesscontextmanager v1.9.1 // indirect - cloud.google.com/go/auth v0.9.8 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect + cloud.google.com/go/accesscontextmanager v1.9.2 // indirect + cloud.google.com/go/auth v0.10.2 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect - cloud.google.com/go/iam v1.2.1 // indirect - cloud.google.com/go/longrunning v0.6.1 // indirect - cloud.google.com/go/monitoring v1.21.1 // indirect - cloud.google.com/go/orgpolicy v1.14.0 // indirect - cloud.google.com/go/osconfig v1.14.1 // indirect + cloud.google.com/go/iam v1.2.2 // indirect + cloud.google.com/go/longrunning v0.6.2 // indirect + cloud.google.com/go/monitoring v1.21.2 // indirect + cloud.google.com/go/orgpolicy v1.14.1 // indirect + cloud.google.com/go/osconfig v1.14.2 // indirect dario.cat/mergo v1.0.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect @@ -126,7 +127,7 @@ require ( github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect - github.com/googleapis/gax-go/v2 v2.13.0 // indirect + github.com/googleapis/gax-go/v2 v2.14.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -163,7 +164,7 @@ require ( github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.4 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.55.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect @@ -181,7 +182,7 @@ require ( github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect - github.com/tidwall/gjson v1.17.3 // indirect + github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect @@ -207,17 +208,17 @@ require ( go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.28.0 // indirect - golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.26.0 // indirect - golang.org/x/term v0.25.0 // indirect - golang.org/x/time v0.7.0 // indirect + golang.org/x/crypto v0.29.0 // indirect + golang.org/x/mod v0.22.0 // indirect + golang.org/x/net v0.31.0 // indirect + golang.org/x/sync v0.9.0 // indirect + golang.org/x/sys v0.27.0 // indirect + golang.org/x/term v0.26.0 // indirect + golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.26.0 // indirect - google.golang.org/genproto v0.0.0-20241007155032-5fefd90f89a9 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240930140551-af27646dc61f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 // indirect + google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -237,6 +238,6 @@ require ( sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/controller-runtime v0.15.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/kyaml v0.17.2 // indirect + sigs.k8s.io/kustomize/kyaml v0.18.1 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 82b75ff6087..c4cb64054cc 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -34,8 +34,8 @@ cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34h cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= -cloud.google.com/go/accesscontextmanager v1.9.1 h1:+C7HM05/h80znK+8VNu25wAimueda6/NGNdus+jxaHI= -cloud.google.com/go/accesscontextmanager v1.9.1/go.mod h1:wUVSoz8HmG7m9miQTh6smbyYuNOJrvZukK5g6WxSOp0= +cloud.google.com/go/accesscontextmanager v1.9.2 h1:P0uVixQft8aacbZ7VDZStNZdrftF24Hk8JkA3kfvfqI= +cloud.google.com/go/accesscontextmanager v1.9.2/go.mod h1:T0Sw/PQPyzctnkw1pdmGAKb7XBA84BqQzH0fSU7wzJU= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -47,15 +47,15 @@ cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8 cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.20.2 h1:wAGSAzAmMC/KEFGZ6Z0zv3jOlz1fjBxuO7SiRX9FMuQ= -cloud.google.com/go/asset v1.20.2/go.mod h1:IM1Kpzzo3wq7R/GEiktitzZyXx2zVpWqs9/5EGYs0GY= +cloud.google.com/go/asset v1.20.3 h1:/jQBAkZVUbsIczRepDkwaf/K5NcRYvQ6MBiWg5i20fU= +cloud.google.com/go/asset v1.20.3/go.mod h1:797WxTDwdnFAJzbjZ5zc+P5iwqXc13yO9DHhmS6wl+o= cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/auth v0.9.8 h1:+CSJ0Gw9iVeSENVCKJoLHhdUykDgXSc4Qn+gu2BRtR8= -cloud.google.com/go/auth v0.9.8/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= -cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= -cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= +cloud.google.com/go/auth v0.10.2 h1:oKF7rgBfSHdp/kuhXtqU/tNDr0mZqhYbEh+6SiqzkKo= +cloud.google.com/go/auth v0.10.2/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= +cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -117,36 +117,36 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.2.1 h1:QFct02HRb7H12J/3utj0qf5tobFh9V4vR6h9eX5EBRU= -cloud.google.com/go/iam v1.2.1/go.mod h1:3VUIJDPpwT6p/amXRC5GY8fCCh70lxPygguVtI0Z4/g= +cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA= +cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs= -cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A= -cloud.google.com/go/longrunning v0.6.1 h1:lOLTFxYpr8hcRtcwWir5ITh1PAKUD/sG2lKrTSYjyMc= -cloud.google.com/go/longrunning v0.6.1/go.mod h1:nHISoOZpBcmlwbJmiVk5oDRz0qG/ZxPynEGs1iZ79s0= +cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= +cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= +cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= +cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/monitoring v1.21.1 h1:zWtbIoBMnU5LP9A/fz8LmWMGHpk4skdfeiaa66QdFGc= -cloud.google.com/go/monitoring v1.21.1/go.mod h1:Rj++LKrlht9uBi8+Eb530dIrzG/cU/lB8mt+lbeFK1c= +cloud.google.com/go/monitoring v1.21.2 h1:FChwVtClH19E7pJ+e0xUhJPGksctZNVOk2UhMmblmdU= +cloud.google.com/go/monitoring v1.21.2/go.mod h1:hS3pXvaG8KgWTSz+dAdyzPrGUYmi2Q+WFX8g2hqVEZU= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/orgpolicy v1.14.0 h1:UuLmi1+94lIS3tCoeuinuwx4oxdx58nECiAvfwCW0SM= -cloud.google.com/go/orgpolicy v1.14.0/go.mod h1:S6Pveh1JOxpSbs6+2ToJG7h3HwqC6Uf1YQ6JYG7wdM8= +cloud.google.com/go/orgpolicy v1.14.1 h1:c1QLoM5v8/aDKgYVCUaC039lD3GPvqAhTVOwsGhIoZQ= +cloud.google.com/go/orgpolicy v1.14.1/go.mod h1:1z08Hsu1mkoH839X7C8JmnrqOkp2IZRSxiDw7W/Xpg4= cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.14.1 h1:67ISL0vZVfq0se+1cPRMYgwTjsES2k9vmSmn8ZS0O5g= -cloud.google.com/go/osconfig v1.14.1/go.mod h1:Rk62nyQscgy8x4bICaTn0iWiip5EpwEfG2UCBa2TP/s= +cloud.google.com/go/osconfig v1.14.2 h1:iBN87PQc+EGh5QqijM3CuxcibvDWmF+9k0eOJT27FO4= +cloud.google.com/go/osconfig v1.14.2/go.mod h1:kHtsm0/j8ubyuzGciBsRxFlbWVjc4c7KdrwJw0+g+pQ= cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= @@ -189,12 +189,12 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.45.0 h1:5av0QcIVj77t+44mV4gffFC/LscFRUhto6UBMB5SimM= -cloud.google.com/go/storage v1.45.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE= +cloud.google.com/go/storage v1.47.0 h1:ajqgt30fnOMmLfWfu1PWcb+V9Dxz6n+9WKjdNg5R4HM= +cloud.google.com/go/storage v1.47.0/go.mod h1:Ks0vP374w0PW6jOUameJbapbQKXqkjGd/OJRp2fb9IQ= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/trace v1.11.1 h1:UNqdP+HYYtnm6lb91aNA5JQ0X14GnxkABGlfz2PzPew= -cloud.google.com/go/trace v1.11.1/go.mod h1:IQKNQuBzH72EGaXEodKlNJrWykGZxet2zgjtS60OtjA= +cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= +cloud.google.com/go/trace v1.11.2/go.mod h1:bn7OwXd4pd5rFuAnTrzBuoZ4ax2XQeG3qNgYmfCy0Io= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= @@ -209,8 +209,8 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2 h1:BNFgz4g1lQ2Gd7V5NJxXm2y6S9mZomvtobuu5iv/u/E= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.16.2/go.mod h1:urFpNnUhNIDDWEbRMRh+UaS5ERWYAHIjIPiUmmlBRkA= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.0 h1:EcxvASC45eOFrkk+cw9vP8Wztms3ZMWAQyBNEaI5MdU= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.0/go.mod h1:homk/qeh6p4f7onHkLc5Vy8nG31ZmDK2pamBdHrc1OM= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 h1:pB2F2JKCj1Znmp2rwxxt1J0Fg0wezTMgWYk5Mpbi1kg= @@ -518,8 +518,8 @@ 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/go-github/v64 v64.0.0 h1:4G61sozmY3eiPAjjoOHponXDBONm+utovTKbyUb2Qdg= github.com/google/go-github/v64 v64.0.0/go.mod h1:xB3vqMQNdHzilXBiO2I+M7iEFtHf+DP/omBOv6tQzVo= -github.com/google/go-github/v66 v66.0.0 h1:ADJsaXj9UotwdgK8/iFZtv7MLc8E8WBl62WLd/D/9+M= -github.com/google/go-github/v66 v66.0.0/go.mod h1:+4SO9Zkuyf8ytMj0csN1NR/5OTR+MfqPp8P8dVlcvY4= +github.com/google/go-github/v67 v67.0.0 h1:g11NDAmfaBaCO8qYdI9fsmbaRipHNWRIU/2YGvlh4rg= +github.com/google/go-github/v67 v67.0.0/go.mod h1:zH3K7BxjFndr9QSeFibx4lTKkYS3K9nDanoI1NjaOtY= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -570,8 +570,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= -github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= +github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= +github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= @@ -591,18 +591,19 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= -github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4 h1:RwY5HBgtBZ997UtKJAO2Rx+94ETyevwWEVXWx1SL5YY= -github.com/hashicorp/terraform-config-inspect v0.0.0-20240801114854-6714b46f5fe4/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= -github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= -github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= +github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= +github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 h1:146llE+6P/9YO8RcHRehzGNiS9+OoirKW9/aML6/JIA= +github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= +github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= +github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -622,8 +623,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.6.0 h1:wmZVuAcEkZRT+Aq1xXpE8IGat4vE5WXOMmBpbQqERXw= -github.com/jedib0t/go-pretty/v6 v6.6.0/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.4 h1:B51RjA+Sytv0C0Je7PHGDXZBF2JpS5dZEWWRueBLP6U= +github.com/jedib0t/go-pretty/v6 v6.6.4/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= @@ -685,8 +686,8 @@ github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= -github.com/migueleliasweb/go-github-mock v1.0.1 h1:amLEECVny28RCD1ElALUpQxrAimamznkg9rN2O7t934= -github.com/migueleliasweb/go-github-mock v1.0.1/go.mod h1:8PJ7MpMoIiCBBNpuNmvndHm0QicjsE+hjex1yMGmjYQ= +github.com/migueleliasweb/go-github-mock v1.1.0 h1:GKaOBPsrPGkAKgtfuWY8MclS1xR6MInkx1SexJucMwE= +github.com/migueleliasweb/go-github-mock v1.1.0/go.mod h1:pYe/XlGs4BGMfRY4vmeixVsODHnVDDhJ9zoi0qzSMHc= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= @@ -717,8 +718,8 @@ github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a2 github.com/open-policy-agent/frameworks/constraint v0.0.0-20230712214810-96753a21c26f/go.mod h1:54/KzLMvA5ndBVpm7B1OjLeV0cUtTLTz2bZ2OtydLpU= github.com/open-policy-agent/gatekeeper/v3 v3.13.0 h1:UUfIo/ZjLa0D6BBQlnSjlZetcAYbp54fZVVCLug4sY0= github.com/open-policy-agent/gatekeeper/v3 v3.13.0/go.mod h1:umWn30oYZ4CGW0kOD7aeIfPwbhCQ9DibK2LTUrRW+bk= -github.com/open-policy-agent/opa v0.69.0 h1:s2igLw2Z6IvGWGuXSfugWkVultDMsM9pXiDuMp7ckWw= -github.com/open-policy-agent/opa v0.69.0/go.mod h1:+qyXJGkpEJ6kpB1kGo8JSwHtVXbTdsGdQYPWWNYNj+4= +github.com/open-policy-agent/opa v0.70.0 h1:B3cqCN2iQAyKxK6+GI+N40uqkin+wzIrM7YA60t9x1U= +github.com/open-policy-agent/opa v0.70.0/go.mod h1:Y/nm5NY0BX0BqjBriKUiV81sCl8XOjjvqQG7dXrggtI= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -737,8 +738,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= -github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= @@ -803,15 +804,16 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= -github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= @@ -848,10 +850,10 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de 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= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= -github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -877,6 +879,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9RO go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= @@ -909,8 +913,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -950,8 +954,8 @@ golang.org/x/mod v0.4.1/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= -golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1004,8 +1008,8 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= 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= @@ -1031,8 +1035,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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= @@ -1049,8 +1053,8 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1130,8 +1134,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -1139,8 +1143,8 @@ golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= -golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= +golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= 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= @@ -1153,13 +1157,13 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= 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= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1279,8 +1283,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.201.0 h1:+7AD9JNM3tREtawRMu8sOjSbb8VYcYXJG/2eEOmfDu0= -google.golang.org/api v0.201.0/go.mod h1:HVY0FCHVs89xIW9fzf/pBvOEm+OolHa86G/txFezyq4= +google.golang.org/api v0.209.0 h1:Ja2OXNlyRlWCWu8o+GgI4yUn/wz9h/5ZfFbKz+dQX+w= +google.golang.org/api v0.209.0/go.mod h1:I53S168Yr/PNDNMi5yPnDc0/LGRZO6o7PoEbl/HY3CM= 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= @@ -1389,12 +1393,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20241007155032-5fefd90f89a9 h1:nFS3IivktIU5Mk6KQa+v6RKkHUpdQpphqGNLxqNnbEk= -google.golang.org/genproto v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:tEzYTYZxbmVNOu0OAFH9HzdJtLn6h4Aj89zzlBCdHms= -google.golang.org/genproto/googleapis/api v0.0.0-20240930140551-af27646dc61f h1:jTm13A2itBi3La6yTGqn8bVSrc3ZZ1r8ENHlIXBfnRA= -google.golang.org/genproto/googleapis/api v0.0.0-20240930140551-af27646dc61f/go.mod h1:CLGoBuH1VHxAUXVPP8FfPwPEVJB6lz3URE5mY2SuayE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 h1:QCqS/PdaHTSWGvupk2F/ehwHtGc0/GYkT+3GAcR1CCc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f h1:zDoHYmMzMacIdjNe+P2XiTmPsLawi/pCbSPfxt6lTfw= +google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f/go.mod h1:Q5m6g8b5KaFFzsQFIGdJkSJDGeJiybVenoYFMMa3ohI= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1:C1QccEa9kUwvMgEUORqQD9S17QesQijxjZ84sO82mfo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= 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= @@ -1450,8 +1454,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 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.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1513,8 +1517,8 @@ sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUT sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= 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/kustomize/kyaml v0.17.2 h1:+AzvoJUY0kq4QAhH/ydPHHMRLijtUKiyVyh7fOSshr0= -sigs.k8s.io/kustomize/kyaml v0.17.2/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= +sigs.k8s.io/kustomize/kyaml v0.18.1 h1:WvBo56Wzw3fjS+7vBjN6TeivvpbW9GmRaWZ9CIVmt4E= +sigs.k8s.io/kustomize/kyaml v0.18.1/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo= 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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= From a327bf214a806617eadcb49ecfbfd805e4a3aac7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Dec 2024 20:48:31 +0100 Subject: [PATCH 1327/1371] chore(deps): update github/codeql-action action to v3.27.7 (#2742) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4b7a84201ce..26df5cfca1b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 + uses: github/codeql-action/init@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 + uses: github/codeql-action/autobuild@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 + uses: github/codeql-action/analyze@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index dd458fee54f..97f185b9678 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 + uses: github/codeql-action/upload-sarif@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 with: sarif_file: results.sarif From 92291c4dbe97af64e0f4830aff1b00fca8ffa60a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Dec 2024 00:44:22 +0100 Subject: [PATCH 1328/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.48.0 (#2744) --- infra/blueprint-test/go.mod | 93 ++-- infra/blueprint-test/go.sum | 986 +++++------------------------------- 2 files changed, 176 insertions(+), 903 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index b53a9496ea7..d6a486d5011 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -5,7 +5,7 @@ go 1.22.7 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.47.2 + github.com/gruntwork-io/terratest v0.48.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 github.com/hashicorp/terraform-json v0.23.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 @@ -19,45 +19,76 @@ require ( ) require ( - cloud.google.com/go v0.110.7 // indirect - cloud.google.com/go/compute v1.23.0 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.2 // indirect - cloud.google.com/go/storage v1.33.0 // indirect + filippo.io/edwards25519 v1.1.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/aws/aws-sdk-go v1.45.5 // indirect + github.com/aws/aws-sdk-go-v2 v1.32.5 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 // indirect + github.com/aws/aws-sdk-go-v2/config v1.28.5 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.46 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 // indirect + github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 // indirect + github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 // indirect + github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 // indirect + github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 // indirect + github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 // indirect + github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 // indirect + github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 // indirect + github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 // indirect + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.1 // indirect + github.com/aws/smithy-go v1.22.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/boombuler/barcode v1.0.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/go-errors/errors v1.5.0 // indirect - github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/logr v1.4.2 // 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/go-sql-driver/mysql v1.7.1 // indirect + github.com/go-sql-driver/mysql v1.8.1 // 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/golang/protobuf v1.5.4 // 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/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gruntwork-io/go-commons v0.17.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.6 // indirect + github.com/hashicorp/go-getter/v2 v2.2.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f // indirect - github.com/hashicorp/hcl/v2 v2.20.1 // indirect + github.com/hashicorp/hcl/v2 v2.22.0 // indirect github.com/imdario/mergo v0.3.16 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.7.1 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jinzhu/copier v0.4.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -78,29 +109,21 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - github.com/tmccombs/hcl2json v0.6.0 // indirect + github.com/tmccombs/hcl2json v0.6.4 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/urfave/cli/v2 v2.25.7 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/zclconf/go-cty v1.15.0 // indirect - go.opencensus.io v0.24.0 // indirect - golang.org/x/crypto v0.21.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.13.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.138.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/grpc v1.58.3 // indirect - google.golang.org/protobuf v1.33.0 // indirect + golang.org/x/crypto v0.29.0 // indirect + golang.org/x/net v0.31.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sys v0.27.0 // indirect + golang.org/x/term v0.26.0 // indirect + golang.org/x/text v0.20.0 // indirect + golang.org/x/time v0.8.0 // indirect + golang.org/x/tools v0.22.0 // indirect + google.golang.org/protobuf v1.35.1 // 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 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index bc4d8c855af..e9d6983d758 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -1,231 +1,94 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= -cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= -cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.33.0 h1:PVrDOkIC8qQVa1P3SXGpQvfuJhN2LHOoyZvWs8D2X5M= -cloud.google.com/go/storage v1.33.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -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= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d h1:NQFVnLXevDG7Ht9B/46X3FWHg+gEQc8Q68PlAnY0XsM= github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d/go.mod h1:prNhhUAODrB2VqHVead9tB8nLU9ffY4e4jjBwLMNO1M= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/alexflint/go-filemutex v1.3.0 h1:LgE+nTUWnQCyRKbpoceKZsPQbs84LivvgwUymZXdOcM= github.com/alexflint/go-filemutex v1.3.0/go.mod h1:U0+VA/i30mGBlLCrFPGtTe9y6wGQfNAWPBTekHQ+c8A= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.45.5 h1:bxilnhv9FngUgdPNJmOIv2bk+2sP0dpqX3e4olhWcGM= -github.com/aws/aws-sdk-go v1.45.5/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go-v2 v1.32.5 h1:U8vdWJuY7ruAkzaOdD7guwJjD06YSKmnKCJs7s3IkIo= +github.com/aws/aws-sdk-go-v2 v1.32.5/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 h1:lL7IfaFzngfx0ZwUGOZdsFFnQ5uLvR0hWqqhyE7Q9M8= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7/go.mod h1:QraP0UcVlQJsmHfioCrveWOC1nbiWUl3ej08h4mXWoc= +github.com/aws/aws-sdk-go-v2/config v1.28.5 h1:Za41twdCXbuyyWv9LndXxZZv3QhTG1DinqlFsSuvtI0= +github.com/aws/aws-sdk-go-v2/config v1.28.5/go.mod h1:4VsPbHP8JdcdUDmbTVgNL/8w9SqOkM5jyY8ljIxLO3o= +github.com/aws/aws-sdk-go-v2/credentials v1.17.46 h1:AU7RcriIo2lXjUfHFnFKYsLCwgbz1E7Mm95ieIRDNUg= +github.com/aws/aws-sdk-go-v2/credentials v1.17.46/go.mod h1:1FmYyLGL08KQXQ6mcTlifyFXfJVCNJTVGuQP4m0d/UA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 h1:sDSXIrlsFSFJtWKLQS4PUWRvrT580rrnuLydJrCQ/yA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20/go.mod h1:WZ/c+w0ofps+/OUqMwWgnfrgzZH1DZO1RIkktICsqnY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41 h1:hqcxMc2g/MwwnRMod9n6Bd+t+9Nf7d5qRg7RaXKPd6o= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41/go.mod h1:d1eH0VrttvPmrCraU68LOyNdu26zFxQFjrVSb5vdhog= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 h1:4usbeaes3yJnCFC7kfeyhkdkPtoRYPa/hTmCqMpKpLI= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24/go.mod h1:5CI1JemjVwde8m2WG3cz23qHKPOxbpkq0HaoreEgLIY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 h1:N1zsICrQglfzaBnrfM0Ys00860C+QFwu6u/5+LomP+o= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24/go.mod h1:dCn9HbJ8+K31i8IQ8EWmWj0EiIk0+vKiHNMxTTYveAg= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 h1:JX70yGKLj25+lMC5Yyh8wBtvB01GDilyRuJvXJ4piD0= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24/go.mod h1:+Ln60j9SUTD0LEwnhEB0Xhg61DHqplBrbZpLgyjoEHg= +github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 h1:fDg0RlN30Xf/yYzEUL/WXqhmgFsjVb/I3230oCfyI5w= +github.com/aws/aws-sdk-go-v2/service/acm v1.30.6/go.mod h1:zRR6jE3v/TcbfO8C2P+H0Z+kShiKKVaVyoIl8NQRjyg= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 h1:1KzQVZi7OTixxaVJ8fWaJAUBjme+iQ3zBOCZhE4RgxQ= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 h1:OREVd94+oXW5a+3SSUAo4K0L5ci8cucCLu+PSiek8OU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 h1:vucMirlM6D+RDU8ncKaSZ/5dGrXNajozVwpmWNPn2gQ= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1/go.mod h1:fceORfs010mNxZbQhfqUjUeHlTwANmIT4mvHamuUaUg= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 h1:RhSoBFT5/8tTmIseJUXM6INTXTQDF8+0oyxWBnozIms= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= +github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 h1:zg+3FGHA0PBs0KM25qE/rOf2o5zsjNa1g/Qq83+SDI0= +github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6/go.mod h1:ZSq54Z9SIsOTf1Efwgw1msilSs4XVEfVQiP9nYVnKpM= +github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 h1:7/vgFWplkusJN/m+3QOa+W9FNRqa8ujMPNmdufRaJpg= +github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0/go.mod h1:dPTOvmjJQ1T7Q+2+Xs2KSPrMvx+p0rpyV+HsQVnUK4o= +github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 h1:hfkzDZHBp9jAT4zcd5mtqckpU4E3Ax0LQaEWWk1VgN8= +github.com/aws/aws-sdk-go-v2/service/iam v1.38.1/go.mod h1:u36ahDtZcQHGmVm/r+0L1sfKX4fzLEMdCqiKRKkUMVM= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 h1:gvZOjQKPxFXy1ft3QnEyXmT+IqneM9QAUWlM3r0mfqw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5/go.mod h1:DLWnfvIcm9IET/mmjdxeXbBKmTCm0ZB8p1za9BVteM8= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5 h1:3Y457U2eGukmjYjeHG6kanZpDzJADa2m0ADqnuePYVQ= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5/go.mod h1:CfwEHGkTjYZpkQ/5PvcbEtT7AJlG68KkEvmtwU8z3/U= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5 h1:wtpJ4zcwrSbwhECWQoI/g6WM9zqCcSpHDJIWSbMLOu4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5/go.mod h1:qu/W9HXQbbQ4+1+JcZp0ZNPV31ym537ZJN+fiS7Ti8E= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 h1:P1doBzv5VEg1ONxnJss1Kh5ZG/ewoIE4MQtKKc6Crgg= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5/go.mod h1:NOP+euMW7W3Ukt28tAxPuoWao4rhhqJD3QEBk7oCg7w= +github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjkkD1eQTMA1KHWk+E= +github.com/aws/aws-sdk-go-v2/service/kms v1.37.6/go.mod h1:YJDdlK0zsyxVBxGU48AR/Mi8DMrGdc1E3Yij4fNrONA= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 h1:BXt75frE/FYtAmEDBJRBa2HexOw+oAZWZl6QknZEFgg= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= +github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 h1:eqHz3Uih+gb0vLE5Cc4Xf733vOxsxDp6GFUUVQU4d7w= +github.com/aws/aws-sdk-go-v2/service/rds v1.91.0/go.mod h1:h2jc7IleH3xHY7y+h8FH7WAZcz3IVLOB6/jXotIQ/qU= +github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2 h1:wmt05tPp/CaRZpPV5B4SaJ5TwkHKom07/BzHoLdkY1o= +github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2/go.mod h1:d+K9HESMpGb1EU9/UmmpInbGIUcAkwmcY6ZO/A3zZsw= +github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 h1:Q2ax8S21clKOnHhhr933xm3JxdJebql+R7aNo7p7GBQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 h1:1KDMKvOKNrpD667ORbZ/+4OgvUoaok1gg/MLzrHF9fw= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6/go.mod h1:DmtyfCfONhOyVAJ6ZMTrDSFIeyCBlEO93Qkfhxwbxu0= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 h1:lEUtRHICiXsd7VRwRjXaY7MApT2X4Ue0Mrwe6XbyBro= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= +github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 h1:39WvSrVq9DD6UHkD+fx5x19P5KpRQfNdtgReDVNbelc= +github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1/go.mod h1:3gwPzC9LER/BTQdQZ3r6dUktb1rSjABF1D3Sr6nS7VU= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 h1:mADKqoZaodipGgiZfuAjtlcr4IVBtXPZKVjkzUZCCYM= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 h1:3zu537oLmsPfDMyjnUS2g+F2vITgy5pB74tHI+JBNoM= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.6/go.mod h1:WJSZH2ZvepM6t6jwu4w/Z45Eoi75lPN7DcydSRtJg6Y= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5 h1:K0OQAsDywb0ltlFrZm0JHPY3yZp/S9OaoLU33S7vPS8= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5/go.mod h1:ORITg+fyuMoeiQFiVGoqB3OydVTLkClw/ljbblMq6Cc= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.1 h1:6SZUVRQNvExYlMLbHdlKB48x0fLbc2iVROyaNEwBHbU= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.1/go.mod h1:GqWyYCwLXnlUB1lOAXQyNSPqPLQJvmo8J0DWBzp9mtg= +github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= +github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -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/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= +github.com/cpuguy83/go-md2man/v2 v2.0.5/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/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -233,26 +96,11 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= github.com/go-errors/errors v1.5.0/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= 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/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ= github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= @@ -261,153 +109,64 @@ github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En 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-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= -github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= 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/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -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/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -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/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= 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= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -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= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= 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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= -github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= -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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.47.2 h1:t6iWwsqJH7Gx0RwXleU/vjc+2c0JXRMdj3DxYXTBssQ= -github.com/gruntwork-io/terratest v0.47.2/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4CBERWSCusbJ0d/64= +github.com/gruntwork-io/terratest v0.48.0 h1:OoqJYAnBxejInn7TPizFGJNMCFvPHbiWNS3hGFKdHhA= +github.com/gruntwork-io/terratest v0.48.0/go.mod h1:U2EQW4Odlz75XJUH16Kqkr9c93p+ZZtkpVez7GkZFa4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4= -github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter/v2 v2.2.3 h1:6CVzhT0KJQHqd9b0pK3xSP0CM/Cv+bVhk+jcaRJ2pGk= +github.com/hashicorp/go-getter/v2 v2.2.3/go.mod h1:hp5Yy0GMQvwWVUmwLs3ygivz1JSLI323hdIE9J9m7TY= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -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/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= -github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 h1:146llE+6P/9YO8RcHRehzGNiS9+OoirKW9/aML6/JIA= github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/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/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.7.1 h1:x7SYsPBYDkHDksogeSmZZ5xzThcTgRz++I5E+ePFUcs= +github.com/jackc/pgx/v5 v5.7.1/go.mod h1:e7O26IywZZ+naJtWWos6i6fvWK+29etgITqrqHLfoZA= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -418,14 +177,10 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 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= @@ -435,14 +190,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -466,20 +217,15 @@ github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg= github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -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.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= 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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -489,8 +235,6 @@ github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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= @@ -507,9 +251,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tmccombs/hcl2json v0.6.0 h1:Qc5NL4NQbpNnw8w8HQcA3GsVHvQDJXJwVTUxf2AEhOs= -github.com/tmccombs/hcl2json v0.6.0/go.mod h1:QNirG4H64ZvlFsy9werRxXlWNTDR1GhWzXkjqPILHwo= -github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/tmccombs/hcl2json v0.6.4 h1:/FWnzS9JCuyZ4MNwrG4vMrFrzRgsWEOVi+1AyYUVLGw= +github.com/tmccombs/hcl2json v0.6.4/go.mod h1:+ppKlIW3H5nsAsZddXPy2iMyvld3SHxyjswOZhavRDk= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= @@ -518,562 +261,72 @@ github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -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= github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -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.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= 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= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= 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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/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.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -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= -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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -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= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -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.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -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= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -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.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= 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= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -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= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.138.0 h1:K/tVp05MxNVbHShRw9m7e9VJGdagNeTdMzqPH7AUqr0= -google.golang.org/api v0.138.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= -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/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= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -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= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -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/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -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= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -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.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/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.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= -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= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY= k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0= k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= @@ -1086,9 +339,6 @@ k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/A 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= -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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/kustomize/kyaml v0.18.1 h1:WvBo56Wzw3fjS+7vBjN6TeivvpbW9GmRaWZ9CIVmt4E= From 65b5d9424e6daaa6612b8075d6c44b483b3bda04 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Wed, 11 Dec 2024 11:25:05 -0600 Subject: [PATCH 1329/1371] chore: Update Tools to 1.23.1 (#2727) --- infra/build/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 849c807a2a7..4bc146eddc0 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.10.1 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 496.0.0 +CLOUD_SDK_VERSION := 503.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.69.8 +TERRAGRUNT_VERSION := 0.69.9 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.7 +CFT_CLI_VERSION := 1.5.8 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.54.0 TINKEY_VERSION := 1.7.0 @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.1 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 27410ac04126747caecee14c8814f146358e5845 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Dec 2024 19:12:08 +0100 Subject: [PATCH 1330/1371] chore(deps): update actions/setup-go action to v5.2.0 (#2746) --- .github/workflows/codeql.yml | 2 +- .github/workflows/go-fbf-test.yml | 2 +- .github/workflows/go-lint.yaml | 2 +- .github/workflows/go-module-swapper.yml | 4 ++-- .github/workflows/go-tflint-plugin.yml | 4 ++-- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-tflint-plugin.yml | 2 +- .github/workflows/test-cli.yml | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 26df5cfca1b..b42f8be8841 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -54,7 +54,7 @@ jobs: - name: Install Go if: matrix.language == 'go' - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: 'go.work' diff --git a/.github/workflows/go-fbf-test.yml b/.github/workflows/go-fbf-test.yml index d0c2a0a1ea5..78dd80da666 100644 --- a/.github/workflows/go-fbf-test.yml +++ b/.github/workflows/go-fbf-test.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: infra/utils/fbf/go.mod cache-dependency-path: infra/utils/fbf/go.sum diff --git a/.github/workflows/go-lint.yaml b/.github/workflows/go-lint.yaml index 1de09b2c202..194cca3bf06 100644 --- a/.github/workflows/go-lint.yaml +++ b/.github/workflows/go-lint.yaml @@ -25,7 +25,7 @@ jobs: folder: [cli, infra/blueprint-test, tflint-ruleset-blueprint] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: ${{ matrix.folder }}/go.mod cache-dependency-path: ${{ matrix.folder }}/go.sum diff --git a/.github/workflows/go-module-swapper.yml b/.github/workflows/go-module-swapper.yml index b5b39d7de8d..ab635c56ba2 100644 --- a/.github/workflows/go-module-swapper.yml +++ b/.github/workflows/go-module-swapper.yml @@ -26,7 +26,7 @@ jobs: operating-system: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum @@ -39,7 +39,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: infra/module-swapper/go.mod cache-dependency-path: infra/module-swapper/go.sum diff --git a/.github/workflows/go-tflint-plugin.yml b/.github/workflows/go-tflint-plugin.yml index 2a042dbc8a0..ec27edbcd75 100644 --- a/.github/workflows/go-tflint-plugin.yml +++ b/.github/workflows/go-tflint-plugin.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: tflint-ruleset-blueprint/go.mod cache-dependency-path: tflint-ruleset-blueprint/go.sum @@ -47,7 +47,7 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: 'tflint-ruleset-blueprint/go.mod' - run: echo "GORELEASER_CURRENT_TAG=v0.0.0" >> $GITHUB_ENV # sample tag for testing goreleaser diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 228e6fdab54..c2ccb75633b 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum diff --git a/.github/workflows/release-tflint-plugin.yml b/.github/workflows/release-tflint-plugin.yml index dc487432679..9daec895a84 100644 --- a/.github/workflows/release-tflint-plugin.yml +++ b/.github/workflows/release-tflint-plugin.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: 'tflint-ruleset-blueprint/go.mod' - run: echo "GORELEASER_CURRENT_TAG=${GITHUB_REF#refs/tags/tflint-ruleset-blueprint/}" >> $GITHUB_ENV diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index dbe10d39188..88723d2ba5f 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -32,7 +32,7 @@ jobs: operating-system: [ubuntu-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 with: go-version-file: cli/go.mod cache-dependency-path: cli/go.sum From 561befd0995cb2478319892cdbe7229b5b599021 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Wed, 11 Dec 2024 14:04:47 -0800 Subject: [PATCH 1331/1371] fix(gcloud): support Run cmd with quotes (#2748) --- infra/blueprint-test/go.mod | 1 + infra/blueprint-test/go.sum | 2 ++ infra/blueprint-test/pkg/gcloud/gcloud.go | 8 ++++++-- .../blueprint-test/pkg/gcloud/gcloud_test.go | 19 +++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index d6a486d5011..7af9b444c84 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -8,6 +8,7 @@ require ( github.com/gruntwork-io/terratest v0.48.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 github.com/hashicorp/terraform-json v0.23.0 + github.com/mattn/go-shellwords v1.0.12 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 github.com/stretchr/testify v1.10.0 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index e9d6983d758..bcba5311422 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -190,6 +190,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= diff --git a/infra/blueprint-test/pkg/gcloud/gcloud.go b/infra/blueprint-test/pkg/gcloud/gcloud.go index 327042481ae..29118384892 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud.go @@ -1,5 +1,5 @@ /** - * Copyright 2021 Google LLC + * Copyright 2021-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import ( "github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test/pkg/utils" "github.com/gruntwork-io/terratest/modules/logger" "github.com/gruntwork-io/terratest/modules/shell" + "github.com/mattn/go-shellwords" "github.com/mitchellh/go-testing-interface" "github.com/tidwall/gjson" ) @@ -93,7 +94,10 @@ func RunCmdE(t testing.TB, cmd string, opts ...cmdOption) (string, error) { t.Fatal(err) } // split command into args - args := strings.Fields(cmd) + args, err := shellwords.Parse(cmd) + if err != nil { + t.Fatal(err) + } gcloudCmd := shell.Command{ Command: "gcloud", Args: append(args, gOpts.commonArgs...), diff --git a/infra/blueprint-test/pkg/gcloud/gcloud_test.go b/infra/blueprint-test/pkg/gcloud/gcloud_test.go index e40d7317fdb..d6ecf0e3b82 100644 --- a/infra/blueprint-test/pkg/gcloud/gcloud_test.go +++ b/infra/blueprint-test/pkg/gcloud/gcloud_test.go @@ -81,3 +81,22 @@ func TestRunf(t *testing.T) { }) } } + +func TestRun(t *testing.T) { + tests := []struct { + name string + cmd string + }{ + { + name: "Run with quotes", + cmd: "organizations list --filter=\"DISPLAY_NAME!=google.com AND lifecycleState=ACTIVE\"", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + op := Runf(t, tt.cmd) + assert := assert.New(t) + assert.NotEmpty(op.String()) + }) + } +} From 01bb1beb0444d2b10dcb1662fdaf14f2a0d0effd Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 14:48:54 -0800 Subject: [PATCH 1332/1371] chore(release-please): release blueprint-test 0.17.3 (#2745) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 81def838213..99505668796 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.17.2", + "infra/blueprint-test": "0.17.3", "infra/module-swapper": "0.4.9", "tflint-ruleset-blueprint": "0.2.6" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 4d551f94010..3cd7986dc2f 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.17.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.17.2...infra/blueprint-test/v0.17.3) (2024-12-11) + + +### Bug Fixes + +* **deps:** update module github.com/gruntwork-io/terratest to v0.48.0 ([#2744](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2744)) ([92291c4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/92291c4dbe97af64e0f4830aff1b00fca8ffa60a)) +* **gcloud:** support Run cmd with quotes ([#2748](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2748)) ([561befd](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/561befd0995cb2478319892cdbe7229b5b599021)) + ## [0.17.2](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.17.1...infra/blueprint-test/v0.17.2) (2024-12-09) From 55441521069ad7e2d7f5c4541a64f4f0ded32630 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:58:25 -0800 Subject: [PATCH 1333/1371] fix(deps): bump golang.org/x/crypto from 0.21.0 to 0.31.0 in /infra/module-swapper (#2749) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/module-swapper/go.mod | 13 +++++++------ infra/module-swapper/go.sum | 32 ++++++++++++++++---------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index d5566859de0..73313fc0a25 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -30,11 +30,12 @@ require ( github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/skeema/knownhosts v1.2.2 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.21.0 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.13.0 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index d5d1fce9a18..1f933c8e8f2 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -91,12 +91,12 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -104,13 +104,13 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/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.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -124,15 +124,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -140,14 +140,14 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -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/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 7e8a866fcc7c09780a0c675af544eff23daac352 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:20:36 -0800 Subject: [PATCH 1334/1371] chore(release-please): release module-swapper 0.4.10 (#2750) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 99505668796..4c2d4d9b6c0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.17.3", - "infra/module-swapper": "0.4.9", + "infra/module-swapper": "0.4.10", "tflint-ruleset-blueprint": "0.2.6" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index 966e7f57e4c..dc6fb90d67a 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.10](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.9...infra/module-swapper/v0.4.10) (2024-12-11) + + +### Bug Fixes + +* **deps:** bump golang.org/x/crypto from 0.21.0 to 0.31.0 in /infra/module-swapper ([#2749](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2749)) ([5544152](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/55441521069ad7e2d7f5c4541a64f4f0ded32630)) + ## [0.4.9](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.8...infra/module-swapper/v0.4.9) (2024-09-13) From 33b75b915742698f60dc5edb7f1bbb2b99258758 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 08:30:07 -0800 Subject: [PATCH 1335/1371] fix(deps): bump golang.org/x/crypto from 0.29.0 to 0.31.0 in /cli (#2751) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli/go.mod | 10 +++++----- cli/go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 6e690aae221..cfd4e0bb32c 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -38,7 +38,7 @@ require ( github.com/zclconf/go-cty v1.15.1 golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/oauth2 v0.24.0 - golang.org/x/text v0.20.0 + golang.org/x/text v0.21.0 google.golang.org/api v0.209.0 google.golang.org/protobuf v1.35.2 gopkg.in/yaml.v3 v3.0.1 @@ -208,12 +208,12 @@ require ( go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f // indirect diff --git a/cli/go.sum b/cli/go.sum index c4cb64054cc..cf0ae07f232 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -913,8 +913,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1053,8 +1053,8 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1134,8 +1134,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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= @@ -1143,8 +1143,8 @@ golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= 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= @@ -1157,8 +1157,8 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= 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= From c032136efa5511b0b01a8c2166e0e100ded6bb14 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Dec 2024 20:04:32 +0100 Subject: [PATCH 1336/1371] chore(deps): update module github.com/hashicorp/terraform-json to v0.24.0 (#2753) --- infra/blueprint-test/go.mod | 4 ++-- infra/blueprint-test/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 7af9b444c84..79f5f30db0a 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -7,7 +7,7 @@ require ( github.com/alexflint/go-filemutex v1.3.0 github.com/gruntwork-io/terratest v0.48.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 - github.com/hashicorp/terraform-json v0.23.0 + github.com/hashicorp/terraform-json v0.24.0 github.com/mattn/go-shellwords v1.0.12 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 github.com/otiai10/copy v1.14.0 @@ -115,7 +115,7 @@ require ( github.com/urfave/cli/v2 v2.25.7 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect + github.com/zclconf/go-cty v1.15.1 // indirect golang.org/x/crypto v0.29.0 // indirect golang.org/x/net v0.31.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index bcba5311422..5ec7e632cf7 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -155,8 +155,8 @@ github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul1 github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 h1:146llE+6P/9YO8RcHRehzGNiS9+OoirKW9/aML6/JIA= github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= -github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= -github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= +github.com/hashicorp/terraform-json v0.24.0 h1:rUiyF+x1kYawXeRth6fKFm/MdfBS6+lW4NbeATsYz8Q= +github.com/hashicorp/terraform-json v0.24.0/go.mod h1:Nfj5ubo9xbu9uiAoZVBsNOjvNKB66Oyrvtit74kC7ow= 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/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= @@ -265,8 +265,8 @@ github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRT github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= +github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= From 89c8dd85e15c1369cae50389676437e5b38d966b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Dec 2024 20:18:31 +0100 Subject: [PATCH 1337/1371] chore(deps): update github/codeql-action action to v3.27.9 (#2752) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b42f8be8841..51d218b86a1 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 + uses: github/codeql-action/init@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 + uses: github/codeql-action/autobuild@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 + uses: github/codeql-action/analyze@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 97f185b9678..a1943ee3e26 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 + uses: github/codeql-action/upload-sarif@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 with: sarif_file: results.sarif From 59ad72304939407cf58854d33de2a04942891414 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 11:24:56 -0800 Subject: [PATCH 1338/1371] chore(deps): bump golang.org/x/crypto from 0.29.0 to 0.31.0 in /infra/utils/fbf (#2754) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/utils/fbf/go.mod | 8 ++++---- infra/utils/fbf/go.sum | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index eeba993dbe5..f344ac94c97 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -33,12 +33,12 @@ require ( go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/net v0.31.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/protobuf v1.35.2 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 3467159b535..3edce4800aa 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -93,8 +93,8 @@ go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt3 go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -113,22 +113,22 @@ golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbht 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= From 048e031be697e1180fe37a30d5ab74ede1d7b98d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Dec 2024 20:58:40 +0100 Subject: [PATCH 1339/1371] fix(deps): update go modules (#2743) Co-authored-by: Andrew Peabody --- infra/utils/fbf/go.mod | 13 +++-- infra/utils/fbf/go.sum | 115 +++++------------------------------------ 2 files changed, 18 insertions(+), 110 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index f344ac94c97..af4a51d6faa 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,13 +4,13 @@ go 1.22 require ( github.com/briandowns/spinner v1.23.1 - github.com/jedib0t/go-pretty/v6 v6.6.3 + github.com/jedib0t/go-pretty/v6 v6.6.4 github.com/stretchr/testify v1.10.0 - google.golang.org/api v0.210.0 + google.golang.org/api v0.211.0 ) require ( - cloud.google.com/go/auth v0.11.0 // indirect + cloud.google.com/go/auth v0.12.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -18,7 +18,6 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect @@ -28,18 +27,18 @@ require ( github.com/mattn/go-runewidth v0.0.15 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect - go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.31.0 // indirect + golang.org/x/net v0.32.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect golang.org/x/text v0.21.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 3edce4800aa..435933b314c 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,23 +1,13 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/auth v0.11.0 h1:Ic5SZz2lsvbYcWT5dfjNWgw6tTlGi2Wc8hyQSC9BstA= -cloud.google.com/go/auth v0.11.0/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth v0.12.1 h1:n2Bj25BUMM0nvE9D2XLTiImanwZhO3DkfWSYS/SAJP4= +cloud.google.com/go/auth v0.12.1/go.mod h1:BFMu+TNpF3DmvfBO9ClqTR/SiqVIm7LukKF9mbendF4= cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -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/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/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/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -27,39 +17,18 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -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= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= -github.com/jedib0t/go-pretty/v6 v6.6.3 h1:nGqgS0tgIO1Hto47HSaaK4ac/I/Bu7usmdD3qvs0WvM= -github.com/jedib0t/go-pretty/v6 v6.6.3/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.4 h1:B51RjA+Sytv0C0Je7PHGDXZBF2JpS5dZEWWRueBLP6U= +github.com/jedib0t/go-pretty/v6 v6.6.4/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -69,20 +38,11 @@ github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZ github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -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.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= @@ -91,84 +51,33 @@ go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2 go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.210.0 h1:HMNffZ57OoZCRYSbdWVRoqOa8V8NIHLL0CzdBPLztWk= -google.golang.org/api v0.210.0/go.mod h1:B9XDZGnx2NtyjzVkOVTGrFSAVZgPcbedzKg/gTLwqBs= -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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/api v0.211.0 h1:IUpLjq09jxBSV1lACO33CGY3jsRcbctfGzhj+ZSE/Bg= +google.golang.org/api v0.211.0/go.mod h1:XOloB4MXFH4UTlQSGuNUxw0UT74qdENK8d6JNsXKLi0= +google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583 h1:v+j+5gpj0FopU0KKLDGfDo9ZRRpKdi5UBrCP0f76kuY= +google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 h1:IfdSdTcLFy4lqUQrQJLkLt1PB+AsqVz6lwkWPzWEz10= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= -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= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.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= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 353501f4c7e310f188a11d12d00b682064651f23 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Dec 2024 21:33:40 +0100 Subject: [PATCH 1340/1371] chore(deps): update go modules (#2741) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 22 +++++++++++----------- cli/go.sum | 48 ++++++++++++++++++++++++------------------------ 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index cdfd619f2a3..fe192600d13 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.8 +VERSION=v1.5.9 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index cfd4e0bb32c..1e15d7fffe3 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -6,15 +6,15 @@ toolchain go1.23.4 require ( cloud.google.com/go/asset v1.20.3 - cloud.google.com/go/storage v1.47.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.0 + cloud.google.com/go/storage v1.48.0 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.1 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.18.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 github.com/golang/protobuf v1.5.4 - github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 + github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v67 v67.0.0 github.com/gruntwork-io/terratest v0.47.2 @@ -39,7 +39,7 @@ require ( golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/oauth2 v0.24.0 golang.org/x/text v0.21.0 - google.golang.org/api v0.209.0 + google.golang.org/api v0.210.0 google.golang.org/protobuf v1.35.2 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 @@ -47,7 +47,7 @@ require ( require ( github.com/hashicorp/go-version v1.7.0 - github.com/hashicorp/hcl/v2 v2.20.1 + github.com/hashicorp/hcl/v2 v2.23.0 github.com/jedib0t/go-pretty/v6 v6.6.4 ) @@ -56,8 +56,8 @@ require ( cel.dev/expr v0.16.1 // indirect cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/accesscontextmanager v1.9.2 // indirect - cloud.google.com/go/auth v0.10.2 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect + cloud.google.com/go/auth v0.11.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/longrunning v0.6.2 // indirect @@ -216,10 +216,10 @@ require ( golang.org/x/term v0.27.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.26.0 // indirect - google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect - google.golang.org/grpc v1.67.1 // indirect + google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/grpc v1.67.2 // indirect google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index cf0ae07f232..71e1e37e69d 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -52,10 +52,10 @@ cloud.google.com/go/asset v1.20.3/go.mod h1:797WxTDwdnFAJzbjZ5zc+P5iwqXc13yO9DHh cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/auth v0.10.2 h1:oKF7rgBfSHdp/kuhXtqU/tNDr0mZqhYbEh+6SiqzkKo= -cloud.google.com/go/auth v0.10.2/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= -cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= -cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= +cloud.google.com/go/auth v0.11.0 h1:Ic5SZz2lsvbYcWT5dfjNWgw6tTlGi2Wc8hyQSC9BstA= +cloud.google.com/go/auth v0.11.0/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= +cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -189,8 +189,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.47.0 h1:ajqgt30fnOMmLfWfu1PWcb+V9Dxz6n+9WKjdNg5R4HM= -cloud.google.com/go/storage v1.47.0/go.mod h1:Ks0vP374w0PW6jOUameJbapbQKXqkjGd/OJRp2fb9IQ= +cloud.google.com/go/storage v1.48.0 h1:FhBDHACbVtdPx7S/AbcKujPWiHvfO6F8OXGgCEbB2+o= +cloud.google.com/go/storage v1.48.0/go.mod h1:aFoDYNMAjv67lp+xcuZqjUKv/ctmplzQ3wJgodA7b+M= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= @@ -209,8 +209,8 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.0 h1:EcxvASC45eOFrkk+cw9vP8Wztms3ZMWAQyBNEaI5MdU= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.0/go.mod h1:homk/qeh6p4f7onHkLc5Vy8nG31ZmDK2pamBdHrc1OM= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.1 h1:BlnX8WYaNBRZ1ui3Rv1sgG6hwrVOjmAci1rpBeqFcMI= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.1/go.mod h1:gEV+whUF+NHOV6f6Hwrn64VEijQ2nOwNgpdotVm3rvM= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 h1:pB2F2JKCj1Znmp2rwxxt1J0Fg0wezTMgWYk5Mpbi1kg= @@ -489,8 +489,8 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 h1:4txT5G2kqVAKMjzidIabL/8KqjIK71yj30YOeuxLn10= -github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62 h1:pbAFUZisjG4s6sxvRJvf2N7vhpCvx2Oxb3PmS6pDO1g= +github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= 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/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= @@ -598,8 +598,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= +github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 h1:146llE+6P/9YO8RcHRehzGNiS9+OoirKW9/aML6/JIA= github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= @@ -852,8 +852,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -1283,8 +1283,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.209.0 h1:Ja2OXNlyRlWCWu8o+GgI4yUn/wz9h/5ZfFbKz+dQX+w= -google.golang.org/api v0.209.0/go.mod h1:I53S168Yr/PNDNMi5yPnDc0/LGRZO6o7PoEbl/HY3CM= +google.golang.org/api v0.210.0 h1:HMNffZ57OoZCRYSbdWVRoqOa8V8NIHLL0CzdBPLztWk= +google.golang.org/api v0.210.0/go.mod h1:B9XDZGnx2NtyjzVkOVTGrFSAVZgPcbedzKg/gTLwqBs= 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= @@ -1393,12 +1393,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f h1:zDoHYmMzMacIdjNe+P2XiTmPsLawi/pCbSPfxt6lTfw= -google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f/go.mod h1:Q5m6g8b5KaFFzsQFIGdJkSJDGeJiybVenoYFMMa3ohI= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1:C1QccEa9kUwvMgEUORqQD9S17QesQijxjZ84sO82mfo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= +google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f h1:M65LEviCfuZTfrfzwwEoxVtgvfkFkBUbFnRbxCXuXhU= +google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f/go.mod h1:Yo94eF2nj7igQt+TiJ49KxjIH8ndLYPZMIRSiRcEbg0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= 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= @@ -1434,8 +1434,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= -google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.67.2 h1:Lq11HW1nr5m4OYV+ZVy2BjOK78/zqnTx24vyDBP1JcQ= +google.golang.org/grpc v1.67.2/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a h1:UIpYSuWdWHSzjwcAFRLjKcPXFZVVLXGEM23W+NWqipw= google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a/go.mod h1:9i1T9n4ZinTUZGgzENMi8MDDgbGC5mqTS75JAv6xN3A= From 24136cf4ff0e7742c4d87f1be10564bc55017abc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 13 Dec 2024 21:48:39 +0100 Subject: [PATCH 1341/1371] chore(deps): update module github.com/jedib0t/go-pretty/v6 to v6.6.5 (#2756) --- infra/utils/fbf/go.mod | 2 +- infra/utils/fbf/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index af4a51d6faa..982134e8958 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -4,7 +4,7 @@ go 1.22 require ( github.com/briandowns/spinner v1.23.1 - github.com/jedib0t/go-pretty/v6 v6.6.4 + github.com/jedib0t/go-pretty/v6 v6.6.5 github.com/stretchr/testify v1.10.0 google.golang.org/api v0.211.0 ) diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 435933b314c..25ecc4a4f0b 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -27,8 +27,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gT github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= -github.com/jedib0t/go-pretty/v6 v6.6.4 h1:B51RjA+Sytv0C0Je7PHGDXZBF2JpS5dZEWWRueBLP6U= -github.com/jedib0t/go-pretty/v6 v6.6.4/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.5 h1:9PgMJOVBedpgYLI56jQRJYqngxYAAzfEUua+3NgSqAo= +github.com/jedib0t/go-pretty/v6 v6.6.5/go.mod h1:Uq/HrbhuFty5WSVNfjpQQe47x16RwVGXIveNGEyGtHs= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From 979d1247330770a92775f60c0a382365f372f9ca Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:55:02 -0600 Subject: [PATCH 1342/1371] chore: Update Tools to 1.23.2 (#2747) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 4bc146eddc0..8a16934df43 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,7 +14,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.10.1 +TERRAFORM_VERSION := 1.10.2 # Updated by Update Tooling Workflow CLOUD_SDK_VERSION := 503.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.69.9 +TERRAGRUNT_VERSION := 0.69.13 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow @@ -35,13 +35,13 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.8 +CFT_CLI_VERSION := 1.5.9 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.54.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.21 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.9 +MODULE_SWAPPER_VERSION := 0.4.10 # Updated by Update Tooling Workflow TFLINT_BP_PLUGIN_VERSION := 0.2.6 @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.1 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.2 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 376f9e81ea344d09b3bc797239710e2367e1c34f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 16 Dec 2024 23:07:05 +0100 Subject: [PATCH 1343/1371] fix(deps): update module github.com/googlecloudplatform/cloud-foundation-toolkit/infra/blueprint-test to v0.17.2 (#2755) --- cli/go.mod | 2 +- cli/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index 1e15d7fffe3..1f3a7e937f8 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -7,7 +7,7 @@ toolchain go1.23.4 require ( cloud.google.com/go/asset v1.20.3 cloud.google.com/go/storage v1.48.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.1 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.2 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.18.0 diff --git a/cli/go.sum b/cli/go.sum index 71e1e37e69d..31e937eb646 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -209,8 +209,8 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.1 h1:BlnX8WYaNBRZ1ui3Rv1sgG6hwrVOjmAci1rpBeqFcMI= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.1/go.mod h1:gEV+whUF+NHOV6f6Hwrn64VEijQ2nOwNgpdotVm3rvM= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.2 h1:lvXlLBFvpZvuch2PKgkrUaJ9RVez7JP0LEMVVD5Bvbo= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.2/go.mod h1:gEV+whUF+NHOV6f6Hwrn64VEijQ2nOwNgpdotVm3rvM= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 h1:pB2F2JKCj1Znmp2rwxxt1J0Fg0wezTMgWYk5Mpbi1kg= From 12432b5a02004e623af1847bf95c36a57353af42 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Dec 2024 00:11:09 +0100 Subject: [PATCH 1344/1371] fix(deps): update go modules (#2759) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/go.mod | 27 +- cli/go.sum | 757 ++------------------------------------------------- 3 files changed, 42 insertions(+), 744 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index fe192600d13..3e6e8dce81f 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.9 +VERSION=v1.5.10 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/go.mod b/cli/go.mod index 1f3a7e937f8..a19e07f73db 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -7,7 +7,7 @@ toolchain go1.23.4 require ( cloud.google.com/go/asset v1.20.3 cloud.google.com/go/storage v1.48.0 - github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.2 + github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.3 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.18.0 @@ -17,9 +17,9 @@ require ( github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v67 v67.0.0 - github.com/gruntwork-io/terratest v0.47.2 + github.com/gruntwork-io/terratest v0.48.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 - github.com/hashicorp/terraform-json v0.23.0 + github.com/hashicorp/terraform-json v0.24.0 github.com/iancoleman/strcase v0.3.0 github.com/inconshreveable/log15 v2.16.0+incompatible github.com/invopop/jsonschema v0.12.0 @@ -39,8 +39,8 @@ require ( golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/oauth2 v0.24.0 golang.org/x/text v0.21.0 - google.golang.org/api v0.210.0 - google.golang.org/protobuf v1.35.2 + google.golang.org/api v0.212.0 + google.golang.org/protobuf v1.36.0 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) @@ -48,7 +48,7 @@ require ( require ( github.com/hashicorp/go-version v1.7.0 github.com/hashicorp/hcl/v2 v2.23.0 - github.com/jedib0t/go-pretty/v6 v6.6.4 + github.com/jedib0t/go-pretty/v6 v6.6.5 ) @@ -56,9 +56,9 @@ require ( cel.dev/expr v0.16.1 // indirect cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/accesscontextmanager v1.9.2 // indirect - cloud.google.com/go/auth v0.11.0 // indirect + cloud.google.com/go/auth v0.13.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect - cloud.google.com/go/compute/metadata v0.5.2 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/longrunning v0.6.2 // indirect cloud.google.com/go/monitoring v1.21.2 // indirect @@ -77,7 +77,6 @@ require ( github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go v1.45.5 // indirect github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect @@ -132,7 +131,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.6 // indirect + github.com/hashicorp/go-getter/v2 v2.2.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -140,7 +139,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jinzhu/copier v0.4.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 github.com/kevinburke/ssh_config v1.2.0 // indirect @@ -150,6 +148,7 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mattn/go-shellwords v1.0.12 // indirect github.com/mattn/go-zglob v0.0.4 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect @@ -186,7 +185,7 @@ require ( github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/tmccombs/hcl2json v0.6.0 // indirect + github.com/tmccombs/hcl2json v0.6.4 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect @@ -210,7 +209,7 @@ require ( go.uber.org/multierr v1.9.0 // indirect golang.org/x/crypto v0.31.0 // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect + golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect @@ -218,7 +217,7 @@ require ( golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 // indirect google.golang.org/grpc v1.67.2 // indirect google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/cli/go.sum b/cli/go.sum index 31e937eb646..4ace9ab7de4 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,216 +1,39 @@ cel.dev/expr v0.16.1 h1:NR0+oFYzR1CqLFhTAqg3ql59G9VfN8fKq1TCHJ6gq1g= cel.dev/expr v0.16.1/go.mod h1:AsGA5zb3WruAEQeQng1RZdGEXmBj0jvMWh6l5SnNuC8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= cloud.google.com/go/accesscontextmanager v1.9.2 h1:P0uVixQft8aacbZ7VDZStNZdrftF24Hk8JkA3kfvfqI= cloud.google.com/go/accesscontextmanager v1.9.2/go.mod h1:T0Sw/PQPyzctnkw1pdmGAKb7XBA84BqQzH0fSU7wzJU= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= cloud.google.com/go/asset v1.20.3 h1:/jQBAkZVUbsIczRepDkwaf/K5NcRYvQ6MBiWg5i20fU= cloud.google.com/go/asset v1.20.3/go.mod h1:797WxTDwdnFAJzbjZ5zc+P5iwqXc13yO9DHhmS6wl+o= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/auth v0.11.0 h1:Ic5SZz2lsvbYcWT5dfjNWgw6tTlGi2Wc8hyQSC9BstA= -cloud.google.com/go/auth v0.11.0/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= +cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= -cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA= cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= cloud.google.com/go/monitoring v1.21.2 h1:FChwVtClH19E7pJ+e0xUhJPGksctZNVOk2UhMmblmdU= cloud.google.com/go/monitoring v1.21.2/go.mod h1:hS3pXvaG8KgWTSz+dAdyzPrGUYmi2Q+WFX8g2hqVEZU= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= cloud.google.com/go/orgpolicy v1.14.1 h1:c1QLoM5v8/aDKgYVCUaC039lD3GPvqAhTVOwsGhIoZQ= cloud.google.com/go/orgpolicy v1.14.1/go.mod h1:1z08Hsu1mkoH839X7C8JmnrqOkp2IZRSxiDw7W/Xpg4= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= cloud.google.com/go/osconfig v1.14.2 h1:iBN87PQc+EGh5QqijM3CuxcibvDWmF+9k0eOJT27FO4= cloud.google.com/go/osconfig v1.14.2/go.mod h1:kHtsm0/j8ubyuzGciBsRxFlbWVjc4c7KdrwJw0+g+pQ= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.48.0 h1:FhBDHACbVtdPx7S/AbcKujPWiHvfO6F8OXGgCEbB2+o= cloud.google.com/go/storage v1.48.0/go.mod h1:aFoDYNMAjv67lp+xcuZqjUKv/ctmplzQ3wJgodA7b+M= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= cloud.google.com/go/trace v1.11.2/go.mod h1:bn7OwXd4pd5rFuAnTrzBuoZ4ax2XQeG3qNgYmfCy0Io= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -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= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.2 h1:lvXlLBFvpZvuch2PKgkrUaJ9RVez7JP0LEMVVD5Bvbo= -github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.2/go.mod h1:gEV+whUF+NHOV6f6Hwrn64VEijQ2nOwNgpdotVm3rvM= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.3 h1:+lqTQyIdgr9XbI/onTPpwDnKR8I+MFKuIi6jeO8qDDQ= +github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.3/go.mod h1:7uX+sVrlOPmrpkfuVSoO9qO0tWc23lVVCIQOL9GM5Qs= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 h1:pB2F2JKCj1Znmp2rwxxt1J0Fg0wezTMgWYk5Mpbi1kg= @@ -224,7 +47,6 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= @@ -239,7 +61,6 @@ github.com/alexflint/go-filemutex v1.3.0 h1:LgE+nTUWnQCyRKbpoceKZsPQbs84LivvgwUy github.com/alexflint/go-filemutex v1.3.0/go.mod h1:U0+VA/i30mGBlLCrFPGtTe9y6wGQfNAWPBTekHQ+c8A= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= @@ -251,9 +72,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.45.5 h1:bxilnhv9FngUgdPNJmOIv2bk+2sP0dpqX3e4olhWcGM= -github.com/aws/aws-sdk-go v1.45.5/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -276,10 +94,8 @@ github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMr github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= @@ -291,14 +107,6 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUK github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -326,12 +134,6 @@ github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FM github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.13.0 h1:HzkeUz1Knt+3bK+8LG1bxOO/jzWZmdxpwC51i202les= github.com/envoyproxy/go-control-plane v0.13.0/go.mod h1:GRaKG3dwvFoTg4nj7aXdZnvMg4d7nvT/wl9WgVXn3Q8= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -341,7 +143,6 @@ github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCv github.com/evanphx/json-patch v5.6.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/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -358,7 +159,6 @@ github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= github.com/go-errors/errors v1.5.0 h1:/EuijeGOu7ckFxzhkj4CXJ8JaenxK7bKUxpPYqeLHqQ= @@ -371,9 +171,6 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -452,47 +249,26 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62 h1:pbAFUZisjG4s6sxvRJvf2N7vhpCvx2Oxb3PmS6pDO1g= github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= -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/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -503,16 +279,9 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -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= @@ -525,89 +294,49 @@ github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17 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= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= -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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= -github.com/gruntwork-io/terratest v0.47.2 h1:t6iWwsqJH7Gx0RwXleU/vjc+2c0JXRMdj3DxYXTBssQ= -github.com/gruntwork-io/terratest v0.47.2/go.mod h1:LnYX8BN5WxUMpDr8rtD39oToSL4CBERWSCusbJ0d/64= +github.com/gruntwork-io/terratest v0.48.0 h1:OoqJYAnBxejInn7TPizFGJNMCFvPHbiWNS3hGFKdHhA= +github.com/gruntwork-io/terratest v0.48.0/go.mod h1:U2EQW4Odlz75XJUH16Kqkr9c93p+ZZtkpVez7GkZFa4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4= -github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter/v2 v2.2.3 h1:6CVzhT0KJQHqd9b0pK3xSP0CM/Cv+bVhk+jcaRJ2pGk= +github.com/hashicorp/go-getter/v2 v2.2.3/go.mod h1:hp5Yy0GMQvwWVUmwLs3ygivz1JSLI323hdIE9J9m7TY= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 h1:146llE+6P/9YO8RcHRehzGNiS9+OoirKW9/aML6/JIA= github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI= -github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= -github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= +github.com/hashicorp/terraform-json v0.24.0 h1:rUiyF+x1kYawXeRth6fKFm/MdfBS6+lW4NbeATsYz8Q= +github.com/hashicorp/terraform-json v0.24.0/go.mod h1:Nfj5ubo9xbu9uiAoZVBsNOjvNKB66Oyrvtit74kC7ow= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/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/inconshreveable/log15 v2.16.0+incompatible h1:6nvMKxtGcpgm7q0KiGs+Vc+xDvUXaBqsPKHWKsinccw= @@ -623,22 +352,16 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jedib0t/go-pretty/v6 v6.6.4 h1:B51RjA+Sytv0C0Je7PHGDXZBF2JpS5dZEWWRueBLP6U= -github.com/jedib0t/go-pretty/v6 v6.6.4/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.6.5 h1:9PgMJOVBedpgYLI56jQRJYqngxYAAzfEUua+3NgSqAo= +github.com/jedib0t/go-pretty/v6 v6.6.5/go.mod h1:Uq/HrbhuFty5WSVNfjpQQe47x16RwVGXIveNGEyGtHs= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= 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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -646,7 +369,6 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -672,25 +394,23 @@ github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYt github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= -github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= -github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= +github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= +github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= github.com/migueleliasweb/go-github-mock v1.1.0 h1:GKaOBPsrPGkAKgtfuWY8MclS1xR6MInkx1SexJucMwE= github.com/migueleliasweb/go-github-mock v1.1.0/go.mod h1:pYe/XlGs4BGMfRY4vmeixVsODHnVDDhJ9zoi0qzSMHc= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -751,7 +471,6 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -774,7 +493,6 @@ github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= @@ -822,9 +540,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tmccombs/hcl2json v0.6.0 h1:Qc5NL4NQbpNnw8w8HQcA3GsVHvQDJXJwVTUxf2AEhOs= -github.com/tmccombs/hcl2json v0.6.0/go.mod h1:QNirG4H64ZvlFsy9werRxXlWNTDR1GhWzXkjqPILHwo= -github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/tmccombs/hcl2json v0.6.4 h1:/FWnzS9JCuyZ4MNwrG4vMrFrzRgsWEOVi+1AyYUVLGw= +github.com/tmccombs/hcl2json v0.6.4/go.mod h1:+ppKlIW3H5nsAsZddXPy2iMyvld3SHxyjswOZhavRDk= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= @@ -844,11 +561,8 @@ github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQ github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg= github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -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= github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= @@ -858,13 +572,6 @@ go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R7 go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -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.opentelemetry.io/contrib/detectors/gcp v1.29.0 h1:TiaiXB4DpGD3sdzNlYQxruQngn5Apwzi1X0DRhuGvDQ= @@ -889,7 +596,6 @@ go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBw go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -903,8 +609,6 @@ go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= 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-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -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= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -916,142 +620,46 @@ golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= -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= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= 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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/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-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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= -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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= @@ -1059,76 +667,22 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1139,18 +693,13 @@ golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -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= -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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/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= @@ -1159,68 +708,20 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -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= golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -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-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -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.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= @@ -1229,214 +730,28 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.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= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.210.0 h1:HMNffZ57OoZCRYSbdWVRoqOa8V8NIHLL0CzdBPLztWk= -google.golang.org/api v0.210.0/go.mod h1:B9XDZGnx2NtyjzVkOVTGrFSAVZgPcbedzKg/gTLwqBs= +google.golang.org/api v0.212.0 h1:BcRj3MJfHF3FYD29rk7u9kuu1SyfGqfHcA0hSwKqkHg= +google.golang.org/api v0.212.0/go.mod h1:gICpLlpp12/E8mycRMzgy3SQ9cFh2XnVJ6vJi/kQbvI= 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/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= 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= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f h1:M65LEviCfuZTfrfzwwEoxVtgvfkFkBUbFnRbxCXuXhU= google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f/go.mod h1:Yo94eF2nj7igQt+TiJ49KxjIH8ndLYPZMIRSiRcEbg0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 h1:IfdSdTcLFy4lqUQrQJLkLt1PB+AsqVz6lwkWPzWEz10= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= 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= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -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.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.67.2 h1:Lq11HW1nr5m4OYV+ZVy2BjOK78/zqnTx24vyDBP1JcQ= google.golang.org/grpc v1.67.2/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a h1:UIpYSuWdWHSzjwcAFRLjKcPXFZVVLXGEM23W+NWqipw= google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a/go.mod h1:9i1T9n4ZinTUZGgzENMi8MDDgbGC5mqTS75JAv6xN3A= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1447,22 +762,15 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -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.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ= +google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -1471,7 +779,6 @@ gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/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= @@ -1482,12 +789,7 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C 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= -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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= 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.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo= @@ -1508,9 +810,6 @@ k8s.io/kubectl v0.27.2 h1:sSBM2j94MHBFRWfHIWtEXWCicViQzZsb177rNsKBhZg= k8s.io/kubectl v0.27.2/go.mod h1:GCOODtxPcrjh+EC611MqREkU8RjYBh10ldQCQ6zpFKw= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -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/apiserver-network-proxy/konnectivity-client v0.1.2 h1:trsWhjU5jZrx6UvFu4WzQDrN7Pga4a7Qg+zcfcj64PA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUTb/+4c= From d0454771aa89210e8a4442eeb3fce91226dc0909 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Dec 2024 00:24:49 +0100 Subject: [PATCH 1345/1371] fix(deps): update module google.golang.org/api to v0.212.0 (#2760) --- infra/utils/fbf/go.mod | 6 +++--- infra/utils/fbf/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 982134e8958..57cc0517b57 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,13 +6,13 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.5 github.com/stretchr/testify v1.10.0 - google.golang.org/api v0.211.0 + google.golang.org/api v0.212.0 ) require ( - cloud.google.com/go/auth v0.12.1 // indirect + cloud.google.com/go/auth v0.13.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect - cloud.google.com/go/compute/metadata v0.5.2 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 25ecc4a4f0b..2aa89939bdf 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -1,9 +1,9 @@ -cloud.google.com/go/auth v0.12.1 h1:n2Bj25BUMM0nvE9D2XLTiImanwZhO3DkfWSYS/SAJP4= -cloud.google.com/go/auth v0.12.1/go.mod h1:BFMu+TNpF3DmvfBO9ClqTR/SiqVIm7LukKF9mbendF4= +cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= +cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= -cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= -cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650= github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -67,8 +67,8 @@ golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -google.golang.org/api v0.211.0 h1:IUpLjq09jxBSV1lACO33CGY3jsRcbctfGzhj+ZSE/Bg= -google.golang.org/api v0.211.0/go.mod h1:XOloB4MXFH4UTlQSGuNUxw0UT74qdENK8d6JNsXKLi0= +google.golang.org/api v0.212.0 h1:BcRj3MJfHF3FYD29rk7u9kuu1SyfGqfHcA0hSwKqkHg= +google.golang.org/api v0.212.0/go.mod h1:gICpLlpp12/E8mycRMzgy3SQ9cFh2XnVJ6vJi/kQbvI= google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583 h1:v+j+5gpj0FopU0KKLDGfDo9ZRRpKdi5UBrCP0f76kuY= google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 h1:IfdSdTcLFy4lqUQrQJLkLt1PB+AsqVz6lwkWPzWEz10= From c38586b7df681688141a5e7b18ad78e4b9d5d2d7 Mon Sep 17 00:00:00 2001 From: Vicente Ferrara <47219931+vicentefb@users.noreply.github.com> Date: Tue, 17 Dec 2024 15:35:18 -0800 Subject: [PATCH 1346/1371] feat: update toggleUsingVariable to be an array (#2757) --- cli/Makefile | 2 +- cli/bpmetadata/bpmetadata_ui.pb.go | 256 +++++++++--------- cli/bpmetadata/proto/bpmetadata_ui.proto | 6 +- .../schema/gcp-blueprint-metadata.json | 14 +- 4 files changed, 146 insertions(+), 132 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 3e6e8dce81f..289bb23a753 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.10 +VERSION=v1.5.11 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpmetadata/bpmetadata_ui.pb.go b/cli/bpmetadata/bpmetadata_ui.pb.go index 982c8261628..fc1bcd185d2 100644 --- a/cli/bpmetadata/bpmetadata_ui.pb.go +++ b/cli/bpmetadata/bpmetadata_ui.pb.go @@ -83,6 +83,8 @@ const ( DisplayVariableToggle_DISPLAY_VARIABLE_TOGGLE_TYPE_BOOLEAN DisplayVariableToggle_ToggleType = 1 // String DisplayVariableToggle_DISPLAY_VARIABLE_TOGGLE_TYPE_STRING DisplayVariableToggle_ToggleType = 2 + // Integer + DisplayVariableToggle_DISPLAY_VARIABLE_TOGGLE_TYPE_INTEGER DisplayVariableToggle_ToggleType = 3 ) // Enum value maps for DisplayVariableToggle_ToggleType. @@ -91,11 +93,13 @@ var ( 0: "DISPLAY_VARIABLE_TOGGLE_TYPE_UNSPECIFIED", 1: "DISPLAY_VARIABLE_TOGGLE_TYPE_BOOLEAN", 2: "DISPLAY_VARIABLE_TOGGLE_TYPE_STRING", + 3: "DISPLAY_VARIABLE_TOGGLE_TYPE_INTEGER", } DisplayVariableToggle_ToggleType_value = map[string]int32{ "DISPLAY_VARIABLE_TOGGLE_TYPE_UNSPECIFIED": 0, "DISPLAY_VARIABLE_TOGGLE_TYPE_BOOLEAN": 1, "DISPLAY_VARIABLE_TOGGLE_TYPE_STRING": 2, + "DISPLAY_VARIABLE_TOGGLE_TYPE_INTEGER": 3, } ) @@ -335,9 +339,9 @@ type DisplayVariable struct { // properties list and must belong to the same section (if any). // Optional. // Gen: manually-authored - BooleanGroup string `protobuf:"bytes,20,opt,name=boolean_group,json=booleanGroup,proto3" json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty"` // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" - AltDefaults []*DisplayVariable_AlternateDefault `protobuf:"bytes,21,rep,name=alt_defaults,json=altDefaults,proto3" json:"altDefaults,omitempty" yaml:"altDefaults,omitempty"` // @gotags: json:"altDefaults,omitempty" yaml:"altDefaults,omitempty" - ToggleUsingVariable *DisplayVariableToggle `protobuf:"bytes,22,opt,name=toggle_using_variable,json=toggleUsingVariable,proto3" json:"toggleUsingVariable,omitempty" yaml:"toggleUsingVariable,omitempty"` // @gotags: json:"toggleUsingVariable,omitempty" yaml:"toggleUsingVariable,omitempty" + BooleanGroup string `protobuf:"bytes,20,opt,name=boolean_group,json=booleanGroup,proto3" json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty"` // @gotags: json:"booleanGroup,omitempty" yaml:"booleanGroup,omitempty" + AltDefaults []*DisplayVariable_AlternateDefault `protobuf:"bytes,21,rep,name=alt_defaults,json=altDefaults,proto3" json:"altDefaults,omitempty" yaml:"altDefaults,omitempty"` // @gotags: json:"altDefaults,omitempty" yaml:"altDefaults,omitempty" + ToggleUsingVariables []*DisplayVariableToggle `protobuf:"bytes,22,rep,name=toggle_using_variables,json=toggleUsingVariables,proto3" json:"toggleUsingVariables,omitempty" yaml:"toggleUsingVariables,omitempty"` // @gotags: json:"toggleUsingVariables,omitempty" yaml:"toggleUsingVariables,omitempty" } func (x *DisplayVariable) Reset() { @@ -512,9 +516,9 @@ func (x *DisplayVariable) GetAltDefaults() []*DisplayVariable_AlternateDefault { return nil } -func (x *DisplayVariable) GetToggleUsingVariable() *DisplayVariableToggle { +func (x *DisplayVariable) GetToggleUsingVariables() []*DisplayVariableToggle { if x != nil { - return x.ToggleUsingVariable + return x.ToggleUsingVariables } return nil } @@ -527,7 +531,7 @@ type DisplayVariableToggle struct { // The name of the variable used to toggle the display of another variable. VariableName string `protobuf:"bytes,1,opt,name=variable_name,json=variableName,proto3" json:"variableName,omitempty" yaml:"variableName,omitempty"` // @gotags: json:"variableName,omitempty" yaml:"variableName,omitempty" // The value of the variable used to toggle the display of another variable. - VariableValue string `protobuf:"bytes,2,opt,name=variable_value,json=variableValue,proto3" json:"variableValue,omitempty" yaml:"variableValue,omitempty"` // @gotags: json:"variableValue,omitempty" yaml:"variableValue,omitempty" + VariableValues []string `protobuf:"bytes,2,rep,name=variable_values,json=variableValues,proto3" json:"variableValues,omitempty" yaml:"variableValue,omitempty"` // @gotags: json:"variableValues,omitempty" yaml:"variableValue,omitempty" // The type of the variable used to toggle the display of another variable. Type DisplayVariableToggle_ToggleType `protobuf:"varint,3,opt,name=type,proto3,enum=google.cloud.config.bpmetadata.DisplayVariableToggle_ToggleType" json:"type,omitempty" yaml:"type,omitempty"` // @gotags: json:"type,omitempty" yaml:"type,omitempty" } @@ -571,11 +575,11 @@ func (x *DisplayVariableToggle) GetVariableName() string { return "" } -func (x *DisplayVariableToggle) GetVariableValue() string { +func (x *DisplayVariableToggle) GetVariableValues() []string { if x != nil { - return x.VariableValue + return x.VariableValues } - return "" + return nil } func (x *DisplayVariableToggle) GetType() DisplayVariableToggle_ToggleType { @@ -1158,7 +1162,7 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x8a, 0x09, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, + 0x22, 0x8c, 0x09, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, @@ -1207,123 +1211,125 @@ var file_bpmetadata_ui_proto_rawDesc = []byte{ 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x61, 0x6c, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, - 0x12, 0x69, 0x0a, 0x15, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, - 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x52, 0x13, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x55, 0x73, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x89, 0x02, 0x0a, 0x10, - 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x12, 0x62, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2e, - 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x01, - 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x44, 0x43, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, 0xc9, 0x02, - 0x0a, 0x15, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x54, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x12, 0x6b, 0x0a, 0x16, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, + 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x52, 0x14, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x55, + 0x73, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x89, 0x02, + 0x0a, 0x10, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x12, 0x62, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x63, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, + 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x43, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, + 0xf5, 0x02, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x67, + 0x67, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb7, 0x01, + 0x0a, 0x0a, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x28, + 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x54, 0x4f, 0x47, 0x47, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x49, + 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, + 0x4f, 0x47, 0x47, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, + 0x41, 0x4e, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, + 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x47, 0x47, 0x4c, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x28, 0x0a, + 0x24, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x54, 0x4f, 0x47, 0x47, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x47, 0x45, 0x52, 0x10, 0x03, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, + 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x0c, 0x42, 0x6f, + 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, 0x6c, 0x75, + 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, + 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x10, + 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x0a, 0x54, 0x6f, - 0x67, 0x67, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, 0x50, - 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x47, - 0x47, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, - 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x47, 0x47, 0x4c, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x01, - 0x12, 0x27, 0x0a, 0x23, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x52, 0x49, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x47, 0x47, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x0a, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, - 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, - 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x0c, - 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x42, - 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, - 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, - 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x68, 0x6f, 0x77, 0x49, 0x66, 0x22, 0x97, 0x02, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, - 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, - 0x30, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, - 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x58, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x74, 0x61, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x49, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x0c, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x22, 0x3d, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, - 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, - 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x01, - 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, - 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7d, 0x0a, 0x0c, 0x55, 0x49, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, + 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, + 0x6f, 0x77, 0x49, 0x66, 0x22, 0x97, 0x02, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, + 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x30, 0x0a, + 0x14, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, + 0x77, 0x49, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x58, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x62, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, + 0x3d, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, + 0x16, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x49, 0x53, + 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x01, 0x42, 0x48, + 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2d, 0x74, 0x6f, 0x6f, 0x6c, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x62, 0x70, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1366,7 +1372,7 @@ var file_bpmetadata_ui_proto_depIdxs = []int32{ 15, // 3: google.cloud.config.bpmetadata.DisplayVariable.x_google_property:type_name -> google.cloud.config.bpmetadata.GooglePropertyExtension 6, // 4: google.cloud.config.bpmetadata.DisplayVariable.enum_value_labels:type_name -> google.cloud.config.bpmetadata.ValueLabel 13, // 5: google.cloud.config.bpmetadata.DisplayVariable.alt_defaults:type_name -> google.cloud.config.bpmetadata.DisplayVariable.AlternateDefault - 5, // 6: google.cloud.config.bpmetadata.DisplayVariable.toggle_using_variable:type_name -> google.cloud.config.bpmetadata.DisplayVariableToggle + 5, // 6: google.cloud.config.bpmetadata.DisplayVariable.toggle_using_variables:type_name -> google.cloud.config.bpmetadata.DisplayVariableToggle 1, // 7: google.cloud.config.bpmetadata.DisplayVariableToggle.type:type_name -> google.cloud.config.bpmetadata.DisplayVariableToggle.ToggleType 10, // 8: google.cloud.config.bpmetadata.BlueprintUIOutput.suggested_actions:type_name -> google.cloud.config.bpmetadata.UIActionItem 14, // 9: google.cloud.config.bpmetadata.BlueprintUIOutput.outputs:type_name -> google.cloud.config.bpmetadata.BlueprintUIOutput.OutputsEntry diff --git a/cli/bpmetadata/proto/bpmetadata_ui.proto b/cli/bpmetadata/proto/bpmetadata_ui.proto index 79d5d54afe1..7d1ac390f2f 100644 --- a/cli/bpmetadata/proto/bpmetadata_ui.proto +++ b/cli/bpmetadata/proto/bpmetadata_ui.proto @@ -148,7 +148,7 @@ message DisplayVariable { } repeated AlternateDefault alt_defaults = 21; // @gotags: json:"altDefaults,omitempty" yaml:"altDefaults,omitempty" - DisplayVariableToggle toggle_using_variable = 22; // @gotags: json:"toggleUsingVariable,omitempty" yaml:"toggleUsingVariable,omitempty" + repeated DisplayVariableToggle toggle_using_variables = 22; // @gotags: json:"toggleUsingVariables,omitempty" yaml:"toggleUsingVariables,omitempty" } message DisplayVariableToggle { @@ -156,7 +156,7 @@ message DisplayVariableToggle { string variable_name = 1; // @gotags: json:"variableName,omitempty" yaml:"variableName,omitempty" // The value of the variable used to toggle the display of another variable. - string variable_value = 2; // @gotags: json:"variableValue,omitempty" yaml:"variableValue,omitempty" + repeated string variable_values = 2; // @gotags: json:"variableValues,omitempty" yaml:"variableValue,omitempty" // The type of the variable used to toggle the display of another variable. ToggleType type = 3; // @gotags: json:"type,omitempty" yaml:"type,omitempty" @@ -168,6 +168,8 @@ message DisplayVariableToggle { DISPLAY_VARIABLE_TOGGLE_TYPE_BOOLEAN = 1; // String DISPLAY_VARIABLE_TOGGLE_TYPE_STRING = 2; + // Integer + DISPLAY_VARIABLE_TOGGLE_TYPE_INTEGER = 3; } } diff --git a/cli/bpmetadata/schema/gcp-blueprint-metadata.json b/cli/bpmetadata/schema/gcp-blueprint-metadata.json index 2cb1d61944d..ab39ab7f0ce 100644 --- a/cli/bpmetadata/schema/gcp-blueprint-metadata.json +++ b/cli/bpmetadata/schema/gcp-blueprint-metadata.json @@ -811,8 +811,11 @@ }, "type": "array" }, - "toggleUsingVariable": { - "$ref": "#/$defs/DisplayVariableToggle" + "toggleUsingVariables": { + "items": { + "$ref": "#/$defs/DisplayVariableToggle" + }, + "type": "array" } }, "additionalProperties": false, @@ -827,8 +830,11 @@ "variableName": { "type": "string" }, - "variableValue": { - "type": "string" + "variableValues": { + "items": { + "type": "string" + }, + "type": "array" }, "type": { "oneOf": [ From e35b2a70d113fd52b4d927f4f15445ea0af713da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 18:45:55 +0000 Subject: [PATCH 1347/1371] chore(deps): bump golang.org/x/crypto from 0.29.0 to 0.31.0 in /infra/blueprint-test (#2758) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- infra/blueprint-test/go.mod | 8 ++++---- infra/blueprint-test/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index 79f5f30db0a..f754295c0d0 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -116,12 +116,12 @@ require ( github.com/xlab/treeprint v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/zclconf/go-cty v1.15.1 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/net v0.31.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.22.0 // indirect google.golang.org/protobuf v1.35.1 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 5ec7e632cf7..79784e73c6f 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -272,8 +272,8 @@ github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmB golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= 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.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= @@ -295,14 +295,14 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From 982c73e9a357a84b2912e0b09b3d4f4cb17aae6a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 19 Dec 2024 22:05:13 +0100 Subject: [PATCH 1348/1371] fix(deps): update module github.com/gruntwork-io/terratest to v0.48.1 (#2764) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index f754295c0d0..c7441a54fe5 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -5,7 +5,7 @@ go 1.22.7 require ( github.com/GoogleContainerTools/kpt-functions-sdk/go/api v0.0.0-20230427202446-3255accc518d github.com/alexflint/go-filemutex v1.3.0 - github.com/gruntwork-io/terratest v0.48.0 + github.com/gruntwork-io/terratest v0.48.1 github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 github.com/hashicorp/terraform-json v0.24.0 github.com/mattn/go-shellwords v1.0.12 diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 79784e73c6f..120745d24d2 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -134,8 +134,8 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gruntwork-io/go-commons v0.17.1 h1:2KS9wAqrgeOTWj33DSHzDNJ1FCprptWdLFqej+wB8x0= github.com/gruntwork-io/go-commons v0.17.1/go.mod h1:S98JcR7irPD1bcruSvnqupg+WSJEJ6xaM89fpUZVISk= -github.com/gruntwork-io/terratest v0.48.0 h1:OoqJYAnBxejInn7TPizFGJNMCFvPHbiWNS3hGFKdHhA= -github.com/gruntwork-io/terratest v0.48.0/go.mod h1:U2EQW4Odlz75XJUH16Kqkr9c93p+ZZtkpVez7GkZFa4= +github.com/gruntwork-io/terratest v0.48.1 h1:pnydDjkWbZCUYXvQkr24y21fBo8PfJC5hRGdwbl1eXM= +github.com/gruntwork-io/terratest v0.48.1/go.mod h1:U2EQW4Odlz75XJUH16Kqkr9c93p+ZZtkpVez7GkZFa4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= From 323e18d148f20b40ef97d9e827f803eab280e3c1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 19 Dec 2024 22:21:38 +0100 Subject: [PATCH 1349/1371] fix(deps): update module google.golang.org/api to v0.213.0 (#2766) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 57cc0517b57..8d2e0fe0828 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.5 github.com/stretchr/testify v1.10.0 - google.golang.org/api v0.212.0 + google.golang.org/api v0.213.0 ) require ( @@ -38,7 +38,7 @@ require ( golang.org/x/term v0.27.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 2aa89939bdf..62fc5dfe2b9 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -67,12 +67,12 @@ golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -google.golang.org/api v0.212.0 h1:BcRj3MJfHF3FYD29rk7u9kuu1SyfGqfHcA0hSwKqkHg= -google.golang.org/api v0.212.0/go.mod h1:gICpLlpp12/E8mycRMzgy3SQ9cFh2XnVJ6vJi/kQbvI= +google.golang.org/api v0.213.0 h1:KmF6KaDyFqB417T68tMPbVmmwtIXs2VB60OJKIHB0xQ= +google.golang.org/api v0.213.0/go.mod h1:V0T5ZhNUUNpYAlL306gFZPFt5F5D/IeyLoktduYYnvQ= google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583 h1:v+j+5gpj0FopU0KKLDGfDo9ZRRpKdi5UBrCP0f76kuY= google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 h1:IfdSdTcLFy4lqUQrQJLkLt1PB+AsqVz6lwkWPzWEz10= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1:8ZmaLZE4XWrtU3MyClkYqqtl6Oegr3235h7jxsDyqCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= From e0608070a30b840a8b3770b55db14d392e2b9571 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 20 Dec 2024 00:01:05 +0100 Subject: [PATCH 1350/1371] chore(deps): update actions/upload-artifact action to v4.5.0 (#2765) --- .github/workflows/release-cli.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index c2ccb75633b..e044bd20af0 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -55,7 +55,7 @@ jobs: chmod +x bin/* - name: Archive build artifacts - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: bin path: cli/bin diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a1943ee3e26..0494d545c22 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: SARIF file path: results.sarif From 256f53de5e74ead4b0281e69e0b743376bcdb378 Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 20 Dec 2024 11:41:35 -0600 Subject: [PATCH 1351/1371] chore: Update Tools to 1.23.3 (#2761) --- infra/build/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 8a16934df43..42533c3c9cb 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -14,9 +14,9 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow -TERRAFORM_VERSION := 1.10.2 +TERRAFORM_VERSION := 1.10.3 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 503.0.0 +CLOUD_SDK_VERSION := 504.0.0 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.69.13 +TERRAGRUNT_VERSION := 0.70.4 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow @@ -35,7 +35,7 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.9 +CFT_CLI_VERSION := 1.5.11 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.54.0 TINKEY_VERSION := 1.7.0 @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.2 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.3 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From 15ad35c69f4b86ab3fe5a0fff8a6e4e825de9d84 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 21 Dec 2024 00:59:07 +0100 Subject: [PATCH 1352/1371] chore(deps): update dependency go to v1.23.4 (#2740) --- tflint-ruleset-blueprint/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 73e20ce4971..7c2710a477e 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -2,7 +2,7 @@ module github.com/cloud-foundation-toolkit/tflint-ruleset-blueprint go 1.22.2 -toolchain go1.22.9 +toolchain go1.23.4 require ( github.com/hashicorp/go-version v1.7.0 From c6b1162b813a71860e018211af02c31ad5837124 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 23 Dec 2024 19:14:54 +0100 Subject: [PATCH 1353/1371] fix(deps): update module google.golang.org/api to v0.214.0 (#2771) --- infra/utils/fbf/go.mod | 4 ++-- infra/utils/fbf/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/utils/fbf/go.mod b/infra/utils/fbf/go.mod index 8d2e0fe0828..82316318f15 100644 --- a/infra/utils/fbf/go.mod +++ b/infra/utils/fbf/go.mod @@ -6,7 +6,7 @@ require ( github.com/briandowns/spinner v1.23.1 github.com/jedib0t/go-pretty/v6 v6.6.5 github.com/stretchr/testify v1.10.0 - google.golang.org/api v0.213.0 + google.golang.org/api v0.214.0 ) require ( @@ -32,7 +32,7 @@ require ( go.opentelemetry.io/otel/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.32.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect diff --git a/infra/utils/fbf/go.sum b/infra/utils/fbf/go.sum index 62fc5dfe2b9..d63b89a1fea 100644 --- a/infra/utils/fbf/go.sum +++ b/infra/utils/fbf/go.sum @@ -53,8 +53,8 @@ go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt3 go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= -golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= @@ -67,8 +67,8 @@ golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -google.golang.org/api v0.213.0 h1:KmF6KaDyFqB417T68tMPbVmmwtIXs2VB60OJKIHB0xQ= -google.golang.org/api v0.213.0/go.mod h1:V0T5ZhNUUNpYAlL306gFZPFt5F5D/IeyLoktduYYnvQ= +google.golang.org/api v0.214.0 h1:h2Gkq07OYi6kusGOaT/9rnNljuXmqPnaig7WGPmKbwA= +google.golang.org/api v0.214.0/go.mod h1:bYPpLG8AyeMWwDU6NXoB00xC0DFkikVvd5MfwoxjLqE= google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583 h1:v+j+5gpj0FopU0KKLDGfDo9ZRRpKdi5UBrCP0f76kuY= google.golang.org/genproto/googleapis/api v0.0.0-20241206012308-a4fef0638583/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1:8ZmaLZE4XWrtU3MyClkYqqtl6Oegr3235h7jxsDyqCY= From c7daf2eecaa94aa60e765fbc2b9bab3c580607dd Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 23 Dec 2024 19:26:22 +0100 Subject: [PATCH 1354/1371] chore(deps): update github/codeql-action action to v3.28.0 (#2770) --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 51d218b86a1..c73e0bdf592 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -60,7 +60,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/init@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -74,7 +74,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/autobuild@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -87,6 +87,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/analyze@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0494d545c22..f38f82e9262 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 with: sarif_file: results.sarif From d6ce4ddd0b7b3725fcaa8683b7d6adf977306d1a Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 23 Dec 2024 14:24:35 -0800 Subject: [PATCH 1355/1371] fix(cli): migrate deprecated protobuf (#2772) --- cli/go.mod | 2 +- cli/scorecard/score.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/go.mod b/cli/go.mod index a19e07f73db..a780da5bcaa 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -13,7 +13,7 @@ require ( github.com/fatih/color v1.18.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 - github.com/golang/protobuf v1.5.4 + github.com/golang/protobuf v1.5.4 // indirect github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v67 v67.0.0 diff --git a/cli/scorecard/score.go b/cli/scorecard/score.go index 9a50b0b350e..afcf1131193 100644 --- a/cli/scorecard/score.go +++ b/cli/scorecard/score.go @@ -28,8 +28,8 @@ import ( "github.com/GoogleCloudPlatform/config-validator/pkg/api/validator" "github.com/GoogleCloudPlatform/config-validator/pkg/gcv" - _struct "github.com/golang/protobuf/ptypes/struct" "github.com/pkg/errors" + "google.golang.org/protobuf/types/known/structpb" ) // ScoringConfig holds settings for generating a score @@ -104,7 +104,7 @@ type RichViolation struct { Category string // category of violation Resource string Message string - Metadata *_struct.Value `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata *structpb.Value `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` asset *validator.Asset `json:"-"` } From 36e8a384008c03083cc85137ae516d22ae3eb7e0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 24 Dec 2024 00:44:37 +0100 Subject: [PATCH 1356/1371] chore(deps): update go modules (#2762) Co-authored-by: Andrew Peabody --- cli/Makefile | 2 +- cli/bpcatalog/gh.go | 2 +- cli/bpcatalog/render_test.go | 30 +++++------ cli/bpcatalog/tf.go | 2 +- cli/bpcatalog/tf_test.go | 42 +++++++-------- cli/go.mod | 63 +++++++++++----------- cli/go.sum | 102 ++++++++++++++++++----------------- 7 files changed, 121 insertions(+), 122 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 289bb23a753..81c3396fb81 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -1,7 +1,7 @@ SHELL := /bin/bash # Changing this value will trigger a new release -VERSION=v1.5.11 +VERSION=v1.5.12 BINARY=bin/cft GITHUB_REPO=github.com/GoogleCloudPlatform/cloud-foundation-toolkit PLATFORMS := linux windows darwin diff --git a/cli/bpcatalog/gh.go b/cli/bpcatalog/gh.go index 08bb1bff648..75daeaf6a5c 100644 --- a/cli/bpcatalog/gh.go +++ b/cli/bpcatalog/gh.go @@ -7,7 +7,7 @@ import ( "os" "sort" - "github.com/google/go-github/v67/github" + "github.com/google/go-github/v68/github" "golang.org/x/oauth2" ) diff --git a/cli/bpcatalog/render_test.go b/cli/bpcatalog/render_test.go index b2e8618642f..1d6d73ac49d 100644 --- a/cli/bpcatalog/render_test.go +++ b/cli/bpcatalog/render_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/google/go-github/v67/github" + "github.com/google/go-github/v68/github" "github.com/stretchr/testify/assert" ) @@ -21,20 +21,20 @@ const ( func TestRender(t *testing.T) { testRepoData := repos{ { - Name: github.String("terraform-google-bar"), + Name: github.Ptr("terraform-google-bar"), CreatedAt: &github.Timestamp{Time: time.Date(2021, 1, 3, 4, 3, 0, 0, time.UTC)}, - StargazersCount: github.Int(5), - Description: github.String("lorem ipsom"), + StargazersCount: github.Ptr(5), + Description: github.Ptr("lorem ipsom"), }, { - Name: github.String("terraform-google-foo"), + Name: github.Ptr("terraform-google-foo"), CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, - StargazersCount: github.Int(10), + StargazersCount: github.Ptr(10), }, { - Name: github.String("terraform-foo"), + Name: github.Ptr("terraform-foo"), CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, - StargazersCount: github.Int(10), + StargazersCount: github.Ptr(10), Topics: []string{"unrelated", e2eLabel, "containers"}, }, } @@ -213,22 +213,22 @@ func TestReposToDisplayMeta(t *testing.T) { name: "simple", input: repos{ { - Name: github.String("terraform-google-bar"), + Name: github.Ptr("terraform-google-bar"), CreatedAt: &github.Timestamp{Time: time.Date(2021, 1, 3, 4, 3, 0, 0, time.UTC)}, - StargazersCount: github.Int(5), - Description: github.String("lorem ipsom"), + StargazersCount: github.Ptr(5), + Description: github.Ptr("lorem ipsom"), Topics: []string{"containers"}, }, { - Name: github.String("terraform-foo"), + Name: github.Ptr("terraform-foo"), CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, - StargazersCount: github.Int(10), + StargazersCount: github.Ptr(10), Topics: []string{"unrelated", e2eLabel, "containers"}, }, { - Name: github.String("foo"), + Name: github.Ptr("foo"), CreatedAt: &github.Timestamp{Time: time.Date(2022, 11, 3, 4, 3, 0, 0, time.UTC)}, - StargazersCount: github.Int(10), + StargazersCount: github.Ptr(10), }, }, want: []displayMeta{ diff --git a/cli/bpcatalog/tf.go b/cli/bpcatalog/tf.go index 2c54ffa4a6b..70d6d682090 100644 --- a/cli/bpcatalog/tf.go +++ b/cli/bpcatalog/tf.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/google/go-github/v67/github" + "github.com/google/go-github/v68/github" ) // sortOption defines the set of sort options for catalog. diff --git a/cli/bpcatalog/tf_test.go b/cli/bpcatalog/tf_test.go index 810853ed147..1bba34d49ce 100644 --- a/cli/bpcatalog/tf_test.go +++ b/cli/bpcatalog/tf_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/google/go-github/v67/github" + "github.com/google/go-github/v68/github" "github.com/migueleliasweb/go-github-mock/src/mock" "github.com/stretchr/testify/assert" ) @@ -22,15 +22,15 @@ func TestFetchSortedTFRepos(t *testing.T) { name: "simple sort created", repos: []github.Repository{ { - Name: github.String("terraform-google-bar"), + Name: github.Ptr("terraform-google-bar"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 3)}, }, { - Name: github.String("terraform-google-foo"), + Name: github.Ptr("terraform-google-foo"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, }, { - Name: github.String("foo"), + Name: github.Ptr("foo"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, }, }, @@ -44,15 +44,15 @@ func TestFetchSortedTFRepos(t *testing.T) { name: "simple sort name", repos: []github.Repository{ { - Name: github.String("terraform-google-bar"), + Name: github.Ptr("terraform-google-bar"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 3)}, }, { - Name: github.String("terraform-google-foo"), + Name: github.Ptr("terraform-google-foo"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, }, { - Name: github.String("foo"), + Name: github.Ptr("foo"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, }, }, @@ -66,24 +66,24 @@ func TestFetchSortedTFRepos(t *testing.T) { name: "simple sort stars", repos: []github.Repository{ { - Name: github.String("terraform-google-bar"), + Name: github.Ptr("terraform-google-bar"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 3)}, - StargazersCount: github.Int(5), + StargazersCount: github.Ptr(5), }, { - Name: github.String("terraform-google-foo"), + Name: github.Ptr("terraform-google-foo"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, - StargazersCount: github.Int(10), + StargazersCount: github.Ptr(10), }, { - Name: github.String("foo"), + Name: github.Ptr("foo"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, - StargazersCount: github.Int(12), + StargazersCount: github.Ptr(12), }, { - Name: github.String("archived"), + Name: github.Ptr("archived"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, - Archived: github.Bool(true), + Archived: github.Ptr(true), }, }, want: []string{ @@ -96,19 +96,19 @@ func TestFetchSortedTFRepos(t *testing.T) { name: "invalid", repos: []github.Repository{ { - Name: github.String("terraform-google-bar"), + Name: github.Ptr("terraform-google-bar"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 3)}, - StargazersCount: github.Int(5), + StargazersCount: github.Ptr(5), }, { - Name: github.String("terraform-google-foo"), + Name: github.Ptr("terraform-google-foo"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, - StargazersCount: github.Int(10), + StargazersCount: github.Ptr(10), }, { - Name: github.String("foo"), + Name: github.Ptr("foo"), CreatedAt: &github.Timestamp{Time: mockT.Add(time.Hour * 2)}, - StargazersCount: github.Int(12), + StargazersCount: github.Ptr(12), }, }, wantErr: true, diff --git a/cli/go.mod b/cli/go.mod index a780da5bcaa..83c9a0fa763 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -6,18 +6,19 @@ toolchain go1.23.4 require ( cloud.google.com/go/asset v1.20.3 - cloud.google.com/go/storage v1.48.0 + cloud.google.com/go/storage v1.49.0 github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.3 github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad github.com/briandowns/spinner v1.23.1 github.com/fatih/color v1.18.0 github.com/gammazero/workerpool v1.1.3 github.com/go-git/go-git/v5 v5.12.0 - github.com/golang/protobuf v1.5.4 // indirect github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62 github.com/google/go-cmp v0.6.0 - github.com/google/go-github/v67 v67.0.0 - github.com/gruntwork-io/terratest v0.48.0 + github.com/google/go-github/v68 v68.0.0 + github.com/gruntwork-io/terratest v0.48.1 + github.com/hashicorp/go-version v1.7.0 + github.com/hashicorp/hcl/v2 v2.23.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20241129133400-c404f8227ea6 github.com/hashicorp/terraform-json v0.24.0 github.com/iancoleman/strcase v0.3.0 @@ -25,6 +26,7 @@ require ( github.com/invopop/jsonschema v0.12.0 github.com/itchyny/json2yaml v0.1.4 github.com/jedib0t/go-pretty v4.3.0+incompatible + github.com/jedib0t/go-pretty/v6 v6.6.5 github.com/manifoldco/promptui v0.9.0 github.com/migueleliasweb/go-github-mock v1.1.0 github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 @@ -36,24 +38,16 @@ require ( github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 github.com/zclconf/go-cty v1.15.1 - golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/oauth2 v0.24.0 golang.org/x/text v0.21.0 - google.golang.org/api v0.212.0 - google.golang.org/protobuf v1.36.0 + google.golang.org/api v0.214.0 + google.golang.org/protobuf v1.36.1 gopkg.in/yaml.v3 v3.0.1 sigs.k8s.io/yaml v1.4.0 ) require ( - github.com/hashicorp/go-version v1.7.0 - github.com/hashicorp/hcl/v2 v2.23.0 - github.com/jedib0t/go-pretty/v6 v6.6.5 - -) - -require ( - cel.dev/expr v0.16.1 // indirect + cel.dev/expr v0.16.2 // indirect cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/accesscontextmanager v1.9.2 // indirect cloud.google.com/go/auth v0.13.0 // indirect @@ -65,7 +59,7 @@ require ( cloud.google.com/go/orgpolicy v1.14.1 // indirect cloud.google.com/go/osconfig v1.14.2 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect @@ -92,11 +86,11 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect - github.com/envoyproxy/go-control-plane v0.13.0 // indirect + github.com/envoyproxy/go-control-plane v0.13.1 // indirect github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/gammazero/deque v0.2.0 // indirect github.com/go-errors/errors v1.5.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -118,6 +112,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/cel-go v0.12.6 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-github/v64 v64.0.0 // indirect @@ -128,7 +123,7 @@ require ( github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect github.com/googleapis/gax-go/v2 v2.14.0 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter/v2 v2.2.3 // indirect @@ -194,31 +189,33 @@ require ( github.com/yashtewari/glob-intersection v0.2.0 // indirect go.mongodb.org/mongo-driver v1.8.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.29.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.31.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect - go.opentelemetry.io/otel v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.29.0 // indirect - go.opentelemetry.io/otel/sdk v1.29.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect - go.opentelemetry.io/otel/trace v1.29.0 // indirect - go.opentelemetry.io/proto/otlp v1.3.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect + go.opentelemetry.io/otel v1.33.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 // indirect + go.opentelemetry.io/otel/metric v1.33.0 // indirect + go.opentelemetry.io/otel/sdk v1.33.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.31.0 // indirect + go.opentelemetry.io/otel/trace v1.33.0 // indirect + go.opentelemetry.io/proto/otlp v1.4.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/crypto v0.31.0 // indirect + golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.32.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 // indirect - google.golang.org/grpc v1.67.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect + google.golang.org/grpc v1.68.1 // indirect google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index 4ace9ab7de4..2e7894e3c22 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.16.1 h1:NR0+oFYzR1CqLFhTAqg3ql59G9VfN8fKq1TCHJ6gq1g= -cel.dev/expr v0.16.1/go.mod h1:AsGA5zb3WruAEQeQng1RZdGEXmBj0jvMWh6l5SnNuC8= +cel.dev/expr v0.16.2 h1:RwRhoH17VhAu9U5CMvMhH1PDVgf0tuz9FT+24AfMLfU= +cel.dev/expr v0.16.2/go.mod h1:gXngZQMkWJoSbE8mOzehJlXQyubn/Vg0vR9/F3W7iw8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= @@ -25,8 +25,8 @@ cloud.google.com/go/orgpolicy v1.14.1 h1:c1QLoM5v8/aDKgYVCUaC039lD3GPvqAhTVOwsGh cloud.google.com/go/orgpolicy v1.14.1/go.mod h1:1z08Hsu1mkoH839X7C8JmnrqOkp2IZRSxiDw7W/Xpg4= cloud.google.com/go/osconfig v1.14.2 h1:iBN87PQc+EGh5QqijM3CuxcibvDWmF+9k0eOJT27FO4= cloud.google.com/go/osconfig v1.14.2/go.mod h1:kHtsm0/j8ubyuzGciBsRxFlbWVjc4c7KdrwJw0+g+pQ= -cloud.google.com/go/storage v1.48.0 h1:FhBDHACbVtdPx7S/AbcKujPWiHvfO6F8OXGgCEbB2+o= -cloud.google.com/go/storage v1.48.0/go.mod h1:aFoDYNMAjv67lp+xcuZqjUKv/ctmplzQ3wJgodA7b+M= +cloud.google.com/go/storage v1.49.0 h1:zenOPBOWHCnojRd9aJZAyQXBYqkJkdQS42dxL55CIMw= +cloud.google.com/go/storage v1.49.0/go.mod h1:k1eHhhpLvrPjVGfo0mOUPEJ4Y2+a/Hv5PiwehZI9qGU= cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= cloud.google.com/go/trace v1.11.2/go.mod h1:bn7OwXd4pd5rFuAnTrzBuoZ4ax2XQeG3qNgYmfCy0Io= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= @@ -36,8 +36,8 @@ github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0. github.com/GoogleCloudPlatform/cloud-foundation-toolkit/infra/blueprint-test v0.17.3/go.mod h1:7uX+sVrlOPmrpkfuVSoO9qO0tWc23lVVCIQOL9GM5Qs= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad h1:JosY9Jj9NbPZIPxhMt2YAooduf+6OMT5XlStRJ2epaE= github.com/GoogleCloudPlatform/config-validator v0.0.0-20230824155412-0da46e6a67ad/go.mod h1:pW/8BBAWENpV8WiQELmsRySkvdTgE/+H4jBQxC/Fous= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 h1:pB2F2JKCj1Znmp2rwxxt1J0Fg0wezTMgWYk5Mpbi1kg= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1/go.mod h1:itPGVDKf9cC/ov4MdvJ2QZ0khw4bfoo9jzwTJlaxy2k= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo= @@ -134,8 +134,8 @@ github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FM github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.13.0 h1:HzkeUz1Knt+3bK+8LG1bxOO/jzWZmdxpwC51i202les= -github.com/envoyproxy/go-control-plane v0.13.0/go.mod h1:GRaKG3dwvFoTg4nj7aXdZnvMg4d7nvT/wl9WgVXn3Q8= +github.com/envoyproxy/go-control-plane v0.13.1 h1:vPfJZCkob6yTMEgS+0TwfTUfbHjfy/6vOJ8hUWX/uXE= +github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= @@ -153,8 +153,8 @@ github.com/foxcpp/go-mockdns v1.1.0 h1:jI0rD8M0wuYAxL7r/ynTrCQQq0BVqfB99Vgk7Dlme github.com/foxcpp/go-mockdns v1.1.0/go.mod h1:IhLeSFGed3mJIAXPH2aiRQB+kqz7oqu8ld2qVbOu7Wk= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA= github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= @@ -287,8 +287,8 @@ 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/go-github/v64 v64.0.0 h1:4G61sozmY3eiPAjjoOHponXDBONm+utovTKbyUb2Qdg= github.com/google/go-github/v64 v64.0.0/go.mod h1:xB3vqMQNdHzilXBiO2I+M7iEFtHf+DP/omBOv6tQzVo= -github.com/google/go-github/v67 v67.0.0 h1:g11NDAmfaBaCO8qYdI9fsmbaRipHNWRIU/2YGvlh4rg= -github.com/google/go-github/v67 v67.0.0/go.mod h1:zH3K7BxjFndr9QSeFibx4lTKkYS3K9nDanoI1NjaOtY= +github.com/google/go-github/v68 v68.0.0 h1:ZW57zeNZiXTdQ16qrDiZ0k6XucrxZ2CGmoTvcCyQG6s= +github.com/google/go-github/v68 v68.0.0/go.mod h1:K9HAUBovM2sLwM408A18h+wd9vqdLOEqTUCbnRIcx68= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -310,10 +310,10 @@ github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPq github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= -github.com/gruntwork-io/terratest v0.48.0 h1:OoqJYAnBxejInn7TPizFGJNMCFvPHbiWNS3hGFKdHhA= -github.com/gruntwork-io/terratest v0.48.0/go.mod h1:U2EQW4Odlz75XJUH16Kqkr9c93p+ZZtkpVez7GkZFa4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI= +github.com/gruntwork-io/terratest v0.48.1 h1:pnydDjkWbZCUYXvQkr24y21fBo8PfJC5hRGdwbl1eXM= +github.com/gruntwork-io/terratest v0.48.1/go.mod h1:U2EQW4Odlz75XJUH16Kqkr9c93p+ZZtkpVez7GkZFa4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -474,8 +474,8 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= @@ -574,30 +574,32 @@ go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/detectors/gcp v1.29.0 h1:TiaiXB4DpGD3sdzNlYQxruQngn5Apwzi1X0DRhuGvDQ= -go.opentelemetry.io/contrib/detectors/gcp v1.29.0/go.mod h1:GW2aWZNwR2ZxDLdv8OyC2G8zkRoQBuURgV7RPQgcPoU= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.31.0 h1:G1JQOreVrfhRkner+l4mrGxmfqYCAuy76asTDAo0xsA= +go.opentelemetry.io/contrib/detectors/gcp v1.31.0/go.mod h1:tzQL6E1l+iV44YFTkcAeNQqzXUiekSYP9jjJjXwEd00= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= -go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= -go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= +go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= -go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= -go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= -go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= -go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= -go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= -go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= -go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= -go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= +go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= +go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= +go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= +go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= +go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= +go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= +go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= +go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= +go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg= +go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -647,8 +649,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= -golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -732,8 +734,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.212.0 h1:BcRj3MJfHF3FYD29rk7u9kuu1SyfGqfHcA0hSwKqkHg= -google.golang.org/api v0.212.0/go.mod h1:gICpLlpp12/E8mycRMzgy3SQ9cFh2XnVJ6vJi/kQbvI= +google.golang.org/api v0.214.0 h1:h2Gkq07OYi6kusGOaT/9rnNljuXmqPnaig7WGPmKbwA= +google.golang.org/api v0.214.0/go.mod h1:bYPpLG8AyeMWwDU6NXoB00xC0DFkikVvd5MfwoxjLqE= 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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -741,17 +743,17 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= -google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f h1:M65LEviCfuZTfrfzwwEoxVtgvfkFkBUbFnRbxCXuXhU= -google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f/go.mod h1:Yo94eF2nj7igQt+TiJ49KxjIH8ndLYPZMIRSiRcEbg0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 h1:IfdSdTcLFy4lqUQrQJLkLt1PB+AsqVz6lwkWPzWEz10= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1:8ZmaLZE4XWrtU3MyClkYqqtl6Oegr3235h7jxsDyqCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.67.2 h1:Lq11HW1nr5m4OYV+ZVy2BjOK78/zqnTx24vyDBP1JcQ= -google.golang.org/grpc v1.67.2/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a h1:UIpYSuWdWHSzjwcAFRLjKcPXFZVVLXGEM23W+NWqipw= google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a/go.mod h1:9i1T9n4ZinTUZGgzENMi8MDDgbGC5mqTS75JAv6xN3A= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -763,8 +765,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ= -google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From c1f3ebb24e2a4eaa3150ba9554ccdad49e128c19 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 23 Dec 2024 16:11:54 -0800 Subject: [PATCH 1357/1371] chore: include apeabody for clarity (#2768) --- infra/terraform/test-org/org/locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 66796eb7a66..b138071a37a 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -118,7 +118,7 @@ locals { name = "terraform-google-kubernetes-engine" org = "terraform-google-modules" description = "Configures opinionated GKE clusters" - owners = ["ericyz", "gtsorbo"] + owners = ["apeabody", "ericyz", "gtsorbo"] topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { From 9b23ce2ed4f62902cd074f73473b8173c9ed0358 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Sat, 28 Dec 2024 08:19:32 -0800 Subject: [PATCH 1358/1371] feat: split repo owners (#2775) --- .../modules/branch_protection/main.tf | 12 +- .../modules/branch_protection/variables.tf | 13 +- .../terraform/modules/codeowners_file/main.tf | 2 +- .../modules/codeowners_file/variables.tf | 11 +- infra/terraform/modules/repositories/main.tf | 36 +++- .../modules/repositories/variables.tf | 5 +- infra/terraform/test-org/github/protection.tf | 2 + infra/terraform/test-org/org/github.tf | 13 +- infra/terraform/test-org/org/locals.tf | 157 +++++++++--------- infra/terraform/test-org/org/outputs.tf | 4 +- 10 files changed, 147 insertions(+), 108 deletions(-) diff --git a/infra/terraform/modules/branch_protection/main.tf b/infra/terraform/modules/branch_protection/main.tf index 2422cc234f2..9541c330a08 100644 --- a/infra/terraform/modules/branch_protection/main.tf +++ b/infra/terraform/modules/branch_protection/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,10 @@ resource "github_branch_protection" "default" { required_pull_request_reviews { required_approving_review_count = 1 require_code_owner_reviews = true + pull_request_bypassers = setunion( + [var.admin], + formatlist("/%s", lookup(var.repos_map[each.key], "admins", [])) + ) } required_status_checks { @@ -37,7 +41,11 @@ resource "github_branch_protection" "default" { enforce_admins = false restrict_pushes { - push_allowances = [var.admin] + push_allowances = setunion( + [var.admin], + formatlist("/%s", setunion(lookup(var.repos_map[each.key], "admins", []), lookup(var.repos_map[each.key], "maintainers", []))), + formatlist("${var.repos_map[each.key].org}/%s", lookup(var.repos_map[each.key], "groups", [])) + ) blocks_creations = false } } diff --git a/infra/terraform/modules/branch_protection/variables.tf b/infra/terraform/modules/branch_protection/variables.tf index 118a1f88904..ca11a343195 100644 --- a/infra/terraform/modules/branch_protection/variables.tf +++ b/infra/terraform/modules/branch_protection/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,17 @@ variable "repo_list" { type = map(any) } +variable "repos_map" { + description = "Map of Repos" + type = map(object({ + name = string + org = string + admins = optional(list(string), []) + maintainers = optional(list(string), []) + groups = optional(list(string), []) + })) +} + variable "admin" { description = "GitHub Admin" type = string diff --git a/infra/terraform/modules/codeowners_file/main.tf b/infra/terraform/modules/codeowners_file/main.tf index 6154a7dd96b..10666aac24d 100644 --- a/infra/terraform/modules/codeowners_file/main.tf +++ b/infra/terraform/modules/codeowners_file/main.tf @@ -17,7 +17,7 @@ locals { commit_author = "CFT Bot" commit_email = "cloud-foundation-bot@google.com" - owners = { for value in var.repos_map : value.name => "${join(" ", formatlist("@%s", value.owners))} " if length(value.owners) > 0 } + owners = { for value in var.repos_map : value.name => "${join(" ", formatlist("@%s", sort(setunion(lookup(value, "admins", []), lookup(value, "maintainers", [])))))} " if length(setunion(lookup(value, "admins", []), lookup(value, "maintainers", []))) > 0 } groups = { for value in var.repos_map : value.name => "${join(" ", formatlist("@${value.org}/%s", value.groups))} " if length(value.groups) > 0 } header = "# NOTE: This file is automatically generated from values at:\n# https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/infra/terraform/test-org/org/locals.tf\n" footer_prefix = "# NOTE: GitHub CODEOWNERS locations:\n# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-and-branch-protection\n" diff --git a/infra/terraform/modules/codeowners_file/variables.tf b/infra/terraform/modules/codeowners_file/variables.tf index 5ff1020742a..bc53217c3b9 100644 --- a/infra/terraform/modules/codeowners_file/variables.tf +++ b/infra/terraform/modules/codeowners_file/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,10 +32,11 @@ variable "owner" { variable "repos_map" { description = "Map of Repos" type = map(object({ - name = string - org = string - owners = optional(list(string), []) - groups = optional(list(string), []) + name = string + org = string + admins = optional(list(string), []) + maintainers = optional(list(string), []) + groups = optional(list(string), []) })) } diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index bae585d97c4..c346ee25d5e 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,11 +15,20 @@ */ locals { - owners = flatten([ + admins = flatten([ for repo, val in var.repos_map : [ - for owner in val.owners : { + for admin in val.admins : { "repo" : repo - "owner" : owner + "admin" : admin + } + ] + ]) + + maintainers = flatten([ + for repo, val in var.repos_map : [ + for maintainer in val.maintainers : { + "repo" : repo + "maintainer" : maintainer } ] ]) @@ -79,13 +88,22 @@ resource "github_repository_collaborator" "cftbot" { permission = "admin" } -resource "github_repository_collaborator" "owners" { +resource "github_repository_collaborator" "admins" { for_each = { - for v in local.owners : "${v.repo}/${v.owner}" => v + for v in local.admins : "${v.repo}/${v.admin}" => v } repository = each.value.repo - username = each.value.owner - permission = "admin" + username = each.value.admin + permission = "maintain" +} + +resource "github_repository_collaborator" "maintainers" { + for_each = { + for v in local.maintainers : "${v.repo}/${v.maintainer}" => v + } + repository = each.value.repo + username = each.value.maintainer + permission = "write" } resource "github_team_repository" "groups" { @@ -94,7 +112,7 @@ resource "github_team_repository" "groups" { } repository = each.value.repo team_id = each.value.group - permission = "admin" + permission = "write" } resource "github_team_repository" "ci_teams" { diff --git a/infra/terraform/modules/repositories/variables.tf b/infra/terraform/modules/repositories/variables.tf index 63653369e61..9342f2f7ad7 100644 --- a/infra/terraform/modules/repositories/variables.tf +++ b/infra/terraform/modules/repositories/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,8 @@ variable "repos_map" { short_name = optional(string) org = string description = optional(string) - owners = optional(list(string), []) + admins = optional(list(string), []) + maintainers = optional(list(string), []) homepage_url = optional(string, null) module = optional(bool, true) topics = optional(string) diff --git a/infra/terraform/test-org/github/protection.tf b/infra/terraform/test-org/github/protection.tf index 256bc4c8c38..b4c2dd444f9 100644 --- a/infra/terraform/test-org/github/protection.tf +++ b/infra/terraform/test-org/github/protection.tf @@ -54,6 +54,7 @@ import { module "branch_protection_tgm" { source = "../../modules/branch_protection" repo_list = { for k, v in module.repos_tgm.repos : k => v if k != "terraform-example-foundation" } + repos_map = local.tgm_modules_map admin = data.github_team.cft-admins.node_id providers = { github = github } } @@ -61,6 +62,7 @@ module "branch_protection_tgm" { module "branch_protection_gcp" { source = "../../modules/branch_protection" repo_list = module.repos_gcp.repos + repos_map = local.gcp_modules_map admin = data.github_team.blueprint-solutions.node_id providers = { github = github.gcp } } diff --git a/infra/terraform/test-org/org/github.tf b/infra/terraform/test-org/org/github.tf index a2423ba156a..e6219dd4433 100644 --- a/infra/terraform/test-org/org/github.tf +++ b/infra/terraform/test-org/org/github.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2023-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,16 +16,11 @@ provider "github" {} locals { - owners = distinct( - flatten( - [for repo, val in local.repos : [for owner in val.owners : lower(owner)] if try(val.owners != null, false)] - ) + owners = flatten( + [for repo, val in local.repos : [for owner in setunion(lookup(val, "admins", []), lookup(val, "maintainers", [])) : owner]] ) - org_members = setunion( - [for login in data.github_organization.tgm.users[*].login : lower(login)], - [for login in data.github_organization.gcp.users[*].login : lower(login)] - ) + org_members = [for login in setunion(data.github_organization.tgm.users[*].login, data.github_organization.gcp.users[*].login) : login] invalid_owners = setsubtract(local.owners, local.org_members) } diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index b138071a37a..8618103e8be 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC + * Copyright 2019-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -62,7 +62,8 @@ locals { * short_name = "string" (optional for modules, if not prefixed with 'terraform-google-') * org = "terraform-google-modules" or "GoogleCloudPlatform" (required) * description = "string" (required) - * owners = "list(string)" ["user1", "user2"] (optional) + * maintainers = "list(string)" ["user1", "user2", "CASE SENSATIVE"] (optional) + * admins = "list(string)" ["user1", "user2", "CASE SENSATIVE"] (optional) * groups = "list(string)" ["group1", "group1"] (optional) * homepage_url = "string" (optional, overrides default) * module = BOOL (optional, default is true which includes GH repo configuration) @@ -78,20 +79,20 @@ locals { name = "cloud-foundation-training" org = "terraform-google-modules" description = "" - owners = ["marine675"] + maintainers = ["marine675"] }, { name = "terraform-google-healthcare" org = "terraform-google-modules" description = "Handles opinionated Google Cloud Healthcare datasets and stores" - owners = ["yeweidaniel"] + maintainers = ["yeweidaniel"] topics = local.common_topics.hcls }, { name = "terraform-google-cloud-run" org = "GoogleCloudPlatform" description = "Deploys apps to Cloud Run, along with option to map custom domain" - owners = concat(["prabhu34", "anamer", "gtsorbo"], local.adc_common_admins) + maintainers = concat(["prabhu34", "anamer", "gtsorbo"], local.adc_common_admins) topics = "cloudrun,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" lint_env = { ENABLE_BPMETADATA = "1" @@ -101,7 +102,7 @@ locals { name = "terraform-google-secured-data-warehouse" org = "GoogleCloudPlatform" description = "Deploys a secured BigQuery data warehouse" - owners = ["lanre-OG"] + maintainers = ["lanre-OG"] topics = join(",", [local.common_topics.da, local.common_topics.e2e]) lint_env = { SHELLCHECK_OPTS = "-e SC2154 -e SC2171 -e SC2086" @@ -111,14 +112,15 @@ locals { name = "terraform-google-anthos-vm" org = "GoogleCloudPlatform" description = "Creates VMs on Anthos Bare Metal clusters" - owners = ["zhuchenwang"] + maintainers = ["zhuchenwang"] topics = "anthos,kubernetes,terraform-module,vm,${local.common_topics.compute}" }, { name = "terraform-google-kubernetes-engine" org = "terraform-google-modules" description = "Configures opinionated GKE clusters" - owners = ["apeabody", "ericyz", "gtsorbo"] + maintainers = ["ericyz"] + admins = ["apeabody"] topics = join(",", [local.common_topics.compute, local.common_topics.containers]) }, { @@ -137,7 +139,7 @@ locals { short_name = "java-dynamic-point-of-sale" org = "GoogleCloudPlatform" description = "Deploys a dynamic Java webapp into a Google Kubernetes Engine cluster." - owners = ["shabirmean", "Mukamik"] + maintainers = ["Shabirmean", "Mukamik"] groups = ["dee-platform-ops", local.jss_common_group] lint_env = { "EXCLUDE_HEADER_CHECK" = "\\./infra/sql-schema" @@ -149,7 +151,7 @@ locals { short_name = "example-foundation" org = "terraform-google-modules" description = "Shows how the CFT modules can be composed to build a secure cloud foundation" - owners = ["rjerrems", "gtsorbo", "eeaton", "sleighton2022"] + maintainers = ["rjerrems", "gtsorbo", "eeaton", "sleighton2022"] homepage_url = "https://cloud.google.com/architecture/security-foundations" topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) lint_env = { @@ -162,7 +164,7 @@ locals { name = "terraform-google-log-analysis" org = "GoogleCloudPlatform" description = "Stores and analyzes log data" - owners = ["ryotat7"] + maintainers = ["ryotat7"] topics = local.common_topics.da groups = [local.jss_common_group] enable_periodic = true @@ -171,7 +173,7 @@ locals { name = "terraform-google-three-tier-web-app" org = "GoogleCloudPlatform" description = "Deploys a three tier web application using Cloud Run and Cloud SQL" - owners = ["tpryan"] + maintainers = ["tpryan"] topics = join(",", [local.common_topics.serverless, local.common_topics.db]) groups = [local.jss_common_group] enable_periodic = true @@ -183,7 +185,7 @@ locals { name = "terraform-google-load-balanced-vms" org = "GoogleCloudPlatform" description = "Creates a Managed Instance Group with a loadbalancer" - owners = ["tpryan"] + maintainers = ["tpryan"] topics = local.common_topics.net lint_env = { ENABLE_BPMETADATA = "1" @@ -193,7 +195,7 @@ locals { name = "terraform-google-secure-cicd" org = "GoogleCloudPlatform" description = "Builds a secure CI/CD pipeline on Google Cloud" - owners = ["gtsorbo"] + maintainers = ["gtsorbo"] topics = join(",", [local.common_topics.security, local.common_topics.devtools, local.common_topics.e2e]) enable_periodic = true groups = [local.jss_common_group] @@ -205,7 +207,7 @@ locals { name = "terraform-google-media-cdn-vod" org = "GoogleCloudPlatform" description = "Deploys Media CDN video-on-demand" - owners = ["roddzurcher"] + maintainers = ["roddzurcher"] topics = local.common_topics.ops groups = [local.jss_common_group] enable_periodic = true @@ -220,14 +222,14 @@ locals { name = "terraform-google-network-forensics" org = "GoogleCloudPlatform" description = "Deploys Zeek on Google Cloud" - owners = ["gtsorbo"] + maintainers = ["gtsorbo"] topics = local.common_topics.net }, { name = "terraform-google-secret-manager" org = "GoogleCloudPlatform" description = "Creates one or more Google Secret Manager secrets and manages basic permissions for them" - owners = local.adc_common_admins + maintainers = local.adc_common_admins topics = "gcp,kms,pubsub,terraform-module,${local.common_topics.security}" }, { @@ -247,7 +249,7 @@ locals { org = "terraform-google-modules" description = "Creates opinionated BigQuery datasets and tables" topics = local.common_topics.da - owners = ["davenportjw", "shanecglass"] + maintainers = ["davenportjw", "shanecglass"] groups = [local.jss_common_group] lint_env = { ENABLE_BPMETADATA = "1" @@ -258,7 +260,7 @@ locals { org = "terraform-google-modules" description = "Bootstraps Terraform usage and related CI/CD in a new Google Cloud organization" topics = join(",", [local.common_topics.ops, local.common_topics.devtools]) - owners = ["josephdt12"] + maintainers = ["josephdt12"] }, { name = "terraform-google-cloud-datastore" @@ -271,21 +273,21 @@ locals { org = "terraform-google-modules" description = "Creates and manages Cloud DNS public or private zones and their records" topics = local.common_topics.net - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-cloud-nat" org = "terraform-google-modules" description = "Creates and configures Cloud NAT" topics = local.common_topics.net - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-cloud-operations" org = "terraform-google-modules" description = "Manages Cloud Logging and Cloud Monitoring" topics = local.common_topics.ops - owners = ["imrannayer"] + maintainers = ["imrannayer"] groups = ["stackdriver-committers"] }, { @@ -293,14 +295,14 @@ locals { org = "terraform-google-modules" description = "Manages a Cloud Router on Google Cloud" topics = local.common_topics.net - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-cloud-storage" org = "terraform-google-modules" description = "Creates one or more Cloud Storage buckets and assigns basic permissions on them to arbitrary users" topics = local.common_topics.storage - owners = local.adc_common_admins + maintainers = local.adc_common_admins lint_env = { ENABLE_BPMETADATA = "1" } @@ -310,7 +312,7 @@ locals { org = "terraform-google-modules" description = "Manages Cloud Composer v1 and v2 along with option to manage networking" topics = join(",", [local.common_topics.da, local.common_topics.ops]) - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-container-vm" @@ -360,7 +362,7 @@ locals { org = "terraform-google-modules" description = "Creates self-hosted GitHub Actions Runners on Google Cloud" topics = local.common_topics.devtools - owners = ["gtsorbo"] + maintainers = ["gtsorbo"] }, { name = "terraform-google-gke-gitlab" @@ -385,7 +387,7 @@ locals { org = "terraform-google-modules" description = "Manages multiple IAM roles for resources on Google Cloud" topics = local.common_topics.security - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-jenkins" @@ -404,14 +406,14 @@ locals { org = "terraform-google-modules" description = "Creates a regional TCP proxy load balancer for Compute Engine by using target pools and forwarding rules" topics = local.common_topics.net - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-lb-http" org = "terraform-google-modules" description = "Creates a global HTTP load balancer for Compute Engine by using forwarding rules" topics = local.common_topics.net - owners = concat(["imrannayer"], local.adc_common_admins) + maintainers = concat(["imrannayer"], local.adc_common_admins) lint_env = { ENABLE_BPMETADATA = "1" } @@ -421,21 +423,21 @@ locals { org = "terraform-google-modules" description = "Creates an internal load balancer for Compute Engine by using forwarding rules" topics = local.common_topics.net - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-log-export" org = "terraform-google-modules" description = "Creates log exports at the project, folder, or organization level" topics = local.common_topics.ops - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-memorystore" org = "terraform-google-modules" description = "Creates a fully functional Google Memorystore (redis) instance" topics = local.common_topics.db - owners = concat(["imrannayer"], local.adc_common_admins) + maintainers = concat(["imrannayer"], local.adc_common_admins) lint_env = { ENABLE_BPMETADATA = "1" } @@ -451,7 +453,7 @@ locals { org = "terraform-google-modules" description = "Sets up a new VPC network on Google Cloud" topics = local.common_topics.net - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-org-policy" @@ -470,14 +472,14 @@ locals { org = "terraform-google-modules" description = "Creates Pub/Sub topic and subscriptions associated with the topic" topics = local.common_topics.da - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-sap" org = "terraform-google-modules" description = "Deploys SAP products" topics = local.common_topics.compute - owners = ["sjswerdlow", "megelatim"] + maintainers = ["sjswerdlow", "megelatim"] }, { name = "terraform-google-scheduled-function" @@ -489,7 +491,7 @@ locals { name = "terraform-google-service-accounts" org = "terraform-google-modules" description = "Creates one or more service accounts and grants them basic roles" - owners = local.adc_common_admins + maintainers = local.adc_common_admins topics = local.common_topics.security lint_env = { ENABLE_BPMETADATA = "1" @@ -506,7 +508,7 @@ locals { org = "terraform-google-modules" description = "Creates a Cloud SQL database instance" topics = local.common_topics.db - owners = concat(["isaurabhuttam", "imrannayer"], local.adc_common_admins) + maintainers = concat(["isaurabhuttam", "imrannayer"], local.adc_common_admins) lint_env = { ENABLE_BPMETADATA = "1" } @@ -533,7 +535,7 @@ locals { name = "terraform-google-vm" org = "terraform-google-modules" description = "Provisions VMs in Google Cloud" - owners = concat(["erlanderlo"], local.adc_common_admins) + maintainers = concat(["erlanderlo"], local.adc_common_admins) topics = local.common_topics.compute lint_env = { ENABLE_BPMETADATA = "1" @@ -544,14 +546,14 @@ locals { org = "terraform-google-modules" description = "Handles opinionated VPC Service Controls and Access Context Manager configuration and deployments" topics = local.common_topics.net - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { name = "terraform-google-vpn" org = "terraform-google-modules" description = "Sets up a Cloud VPN gateway" topics = local.common_topics.net - owners = ["imrannayer"] + maintainers = ["imrannayer"] }, { short_name = "anthos-platform" @@ -593,56 +595,56 @@ locals { name = "terraform-google-waap" org = "GoogleCloudPlatform" description = "Deploys the WAAP solution on Google Cloud" - owners = ["gtsorbo"] + maintainers = ["gtsorbo"] topics = local.common_topics.ops }, { name = "terraform-google-cloud-workflows" org = "GoogleCloudPlatform" description = "Manage Workflows with optional Scheduler or Event Arc triggers" - owners = ["anaik91"] + maintainers = ["anaik91"] topics = join(",", [local.common_topics.serverless, local.common_topics.devtools]) }, { name = "terraform-google-vertex-ai" org = "GoogleCloudPlatform" description = "Deploy Vertex AI resources" - owners = ["imrannayer"] + maintainers = ["imrannayer"] topics = join(",", [local.common_topics.compute]) }, { name = "terraform-google-cloud-armor" org = "GoogleCloudPlatform" description = "Deploy Cloud Armor security policy" - owners = ["imrannayer"] + maintainers = ["imrannayer"] topics = join(",", [local.common_topics.compute, local.common_topics.net]) }, { name = "terraform-google-pam" org = "GoogleCloudPlatform" description = "Deploy Privileged Access Manager" - owners = ["imrannayer", "mgaur10"] + maintainers = ["imrannayer", "mgaur10"] topics = local.common_topics.security }, { name = "terraform-google-netapp-volumes" org = "GoogleCloudPlatform" description = "Deploy NetApp Storage Volumes" - owners = ["imrannayer"] + maintainers = ["imrannayer"] topics = join(",", [local.common_topics.compute, local.common_topics.net]) }, { name = "terraform-google-cloud-deploy" org = "GoogleCloudPlatform" description = "Create Cloud Deploy pipelines and targets" - owners = ["gtsorbo", "niranjankl"] + maintainers = ["gtsorbo", "niranjankl"] topics = join(",", [local.common_topics.devtools]) }, { name = "terraform-google-cloud-functions" org = "GoogleCloudPlatform" description = "Deploys Cloud Functions (Gen 2)" - owners = ["prabhu34", "gtsorbo"] + maintainers = ["prabhu34", "gtsorbo"] topics = "cloudfunctions,functions,google-cloud-platform,terraform-modules,${local.common_topics.serverless}" }, { @@ -650,7 +652,7 @@ locals { short_name = "dynamic-python-webapp" org = "GoogleCloudPlatform" description = "Deploy a dynamic python webapp" - owners = ["glasnt", "donmccasland"] + maintainers = ["glasnt", "donmccasland"] homepage_url = "avocano.dev" groups = [local.jss_common_group, "team-egg"] enable_periodic = true @@ -663,7 +665,7 @@ locals { short_name = "dynamic-javascript-webapp" org = "GoogleCloudPlatform" description = "Deploy a dynamic javascript webapp" - owners = ["lukeschlangen", "donmccasland"] + maintainers = ["LukeSchlangen", "donmccasland"] homepage_url = "avocano.dev" groups = [local.jss_common_group, "team-egg", "developer-journey-app-approvers"] enable_periodic = true @@ -676,7 +678,7 @@ locals { short_name = "deploy-java-multizone" org = "GoogleCloudPlatform" description = "Deploy a multizone Java application" - owners = ["donmccasland"] + maintainers = ["donmccasland"] groups = [local.jss_common_group] enable_periodic = false lint_env = { @@ -687,14 +689,14 @@ locals { name = "terraform-google-itar-architectures" org = "GoogleCloudPlatform" description = "Includes use cases for deploying ITAR-aligned architectures on Google Cloud" - owners = ["gtsorbo"] + maintainers = ["gtsorbo"] topics = join(",", [local.common_topics.compute], ["compliance"]) }, { name = "terraform-google-analytics-lakehouse" org = "GoogleCloudPlatform" description = "Deploys a Lakehouse Architecture Solution" - owners = ["davenportjw", "bradmiro"] + maintainers = ["davenportjw", "bradmiro"] topics = local.common_topics.da groups = [local.jss_common_group] enable_periodic = true @@ -706,14 +708,14 @@ locals { name = "terraform-google-alloy-db" org = "GoogleCloudPlatform" description = "Creates an Alloy DB instance" - owners = ["anaik91", "imrannayer"] + maintainers = ["anaik91", "imrannayer"] topics = local.common_topics.db }, { name = "terraform-google-cloud-ids" org = "GoogleCloudPlatform" description = "Deploys a Cloud IDS instance and associated resources." - owners = ["gtsorbo", "mgaur10"] + maintainers = ["gtsorbo", "mgaur10"] topics = join(",", [local.common_topics.security, local.common_topics.net]) }, { @@ -732,7 +734,7 @@ locals { name = "terraform-google-crmint" org = "GoogleCloudPlatform" description = "Deploy the marketing analytics application, CRMint" - owners = ["dulacp"] + maintainers = ["dulacp"] topics = join(",", [local.common_topics.da, local.common_topics.e2e], ["marketing"]) }, { @@ -740,7 +742,7 @@ locals { short_name = "ml-image-annotation-gcf" org = "GoogleCloudPlatform" description = "Deploys an app for ml image annotation using gcf" - owners = ["xsxm", "ivanmkc", "balajismaniam", "donmccasland"] + maintainers = ["xsxm", "ivanmkc", "balajismaniam", "donmccasland"] groups = ["dee-data-ai", local.jss_common_group] enable_periodic = true }, @@ -748,7 +750,7 @@ locals { name = "terraform-google-out-of-band-security" org = "GoogleCloudPlatform" description = "Creates a 3P out-of-band security appliance deployment" - owners = ["Saipriyavk", "ChrisBarefoot"] + maintainers = ["Saipriyavk", "ChrisBarefoot"] topics = local.common_topics.net }, { @@ -756,7 +758,7 @@ locals { short_name = "secured-notebook" org = "GoogleCloudPlatform" description = "Opinionated setup for securely using AI Platform Notebooks." - owners = ["gtsorbo", "erlanderlo"] + maintainers = ["gtsorbo", "erlanderlo"] topics = join(",", [local.common_topics.da, local.common_topics.security]) }, { @@ -764,7 +766,7 @@ locals { short_name = "genai-doc-summarization" org = "GoogleCloudPlatform" description = "Summarizes document using OCR and Vertex Generative AI LLM" - owners = ["asrivas", "davidcavazos"] + maintainers = ["asrivas", "davidcavazos"] groups = [local.jss_common_group] enable_periodic = true }, @@ -773,7 +775,7 @@ locals { short_name = "genai-knowledge-base" org = "GoogleCloudPlatform" description = "Fine tune an LLM model to answer questions from your documents." - owners = ["davidcavazos"] + maintainers = ["davidcavazos"] groups = [local.jss_common_group] enable_periodic = true }, @@ -782,7 +784,7 @@ locals { short_name = "sdw-onprem-ingest" org = "GoogleCloudPlatform" description = "Deploys a secured data warehouse variant for ingesting encrypted data from on-prem sources" - owners = ["lanre-OG"] + maintainers = ["lanre-OG"] topics = join(",", [local.common_topics.da, local.common_topics.security, local.common_topics.e2e]) }, { @@ -795,14 +797,14 @@ locals { name = "terraform-google-cloud-spanner" org = "GoogleCloudPlatform" description = "Deploy Spanner instances" - owners = ["anaik91", "imrannayer"] + maintainers = ["anaik91", "imrannayer"] topics = local.common_topics.db }, { name = "terraform-pubsub-integration-golang" org = "GoogleCloudPlatform" short_name = "pubsub-golang-app" - owners = ["shabirmean", "Mukamik"] + maintainers = ["Shabirmean", "Mukamik"] groups = ["dee-platform-ops", local.jss_common_group] enable_periodic = true }, @@ -810,7 +812,7 @@ locals { name = "terraform-pubsub-integration-java" org = "GoogleCloudPlatform" short_name = "pubsub-java-app" - owners = ["shabirmean", "Mukamik"] + maintainers = ["Shabirmean", "Mukamik"] groups = ["dee-platform-ops", local.jss_common_group] enable_periodic = true }, @@ -819,28 +821,28 @@ locals { org = "GoogleCloudPlatform" short_name = "backup-dr" description = "Deploy Backup and DR appliances" - owners = ["umeshkumhar"] + maintainers = ["umeshkumhar"] topics = join(",", [local.common_topics.compute, local.common_topics.ops]) }, { name = "terraform-google-tags" org = "GoogleCloudPlatform" description = "Create and manage Google Cloud Tags" - owners = ["nidhi0710"] + maintainers = ["nidhi0710"] topics = join(",", [local.common_topics.security, local.common_topics.ops]) }, { name = "terraform-google-dataplex-auto-data-quality" org = "GoogleCloudPlatform" description = "Move data between environments using Dataplex" - owners = ["bradmiro"] + maintainers = ["bradmiro"] topics = local.common_topics.da }, { name = "terraform-google-enterprise-application" org = "GoogleCloudPlatform" description = "Deploy an enterprise developer platform on Google Cloud" - owners = ["gtsorbo", "erictune", "yliaog", "sleighton2022", "apeabody"] + maintainers = ["gtsorbo", "erictune", "yliaog", "sleighton2022", "apeabody"] topics = join(",", [local.common_topics.e2e, local.common_topics.ops]) }, { @@ -848,7 +850,7 @@ locals { short_name = "genai-rag" org = "GoogleCloudPlatform" description = "Deploys a Generative AI RAG solution" - owners = ["davenportjw", "bradmiro"] + maintainers = ["davenportjw", "bradmiro"] groups = ["dee-platform-ops", "dee-data-ai", local.jss_common_group] enable_periodic = true lint_env = { @@ -859,21 +861,21 @@ locals { name = "terraform-google-artifact-registry" org = "GoogleCloudPlatform" description = "Create and manage Artifact Registry repositories" - owners = ["prabhu34"] + maintainers = ["prabhu34"] topics = join(",", [local.common_topics.containers, local.common_topics.devtools]) }, { name = "terraform-google-bigtable" org = "GoogleCloudPlatform" description = "Create and manage Google Bigtable resources" - owners = ["hariprabhaam"] + maintainers = ["hariprabhaam"] topics = local.common_topics.da }, { name = "terraform-google-secure-web-proxy" org = "GoogleCloudPlatform" description = "Create and manage Secure Web Proxy on GCP for secured egress web traffic" - owners = ["maitreya-source"] + maintainers = ["maitreya-source"] topics = join(",", [local.common_topics.security, local.common_topics.net]) }, { @@ -881,7 +883,7 @@ locals { short_name = "cloud-client-api" org = "GoogleCloudPlatform" description = "Deploys an example application that uses Cloud Client APIs" - owners = ["glasnt", "iennae"] + maintainers = ["glasnt", "iennae"] groups = ["team-egg", local.jss_common_group] enable_periodic = true lint_env = { @@ -892,7 +894,7 @@ locals { name = "kms-solutions" org = "GoogleCloudPlatform" description = "Store Cloud KMS scripts, artifacts, code samples, and more." - owners = ["tdbhacks", "erlanderlo", "g-swap", "nb-goog"] + maintainers = ["tdbhacks", "erlanderlo", "g-swap", "nb-goog"] lint_env = { ENABLE_BPMETADATA = "1" } @@ -903,13 +905,14 @@ locals { org = "GoogleCloudPlatform" description = "Uses click-to-deploy to demonstrate how to load data from Cloud Storage to BigQuery using an event-driven load function." groups = [local.jss_common_group] - owners = ["fellipeamedeiros", "sylvioneto"] + maintainers = ["fellipeamedeiros", "sylvioneto"] }, { name = "terraform-google-apphub" org = "GoogleCloudPlatform" description = "Creates and manages AppHub resources" - owners = ["bharathkkb", "q2w"] + maintainers = ["q2w"] + admins = ["bharathkkb"] }, ] } diff --git a/infra/terraform/test-org/org/outputs.tf b/infra/terraform/test-org/org/outputs.tf index c4d14cc7e24..1e3a81f6d60 100644 --- a/infra/terraform/test-org/org/outputs.tf +++ b/infra/terraform/test-org/org/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2019-2023 Google LLC + * Copyright 2019-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -105,7 +105,7 @@ output "modules" { precondition { condition = length(setsubtract(local.invalid_owners, var.temp_allow_invalid_owners)) == 0 - error_message = "Provided Repo Owners are not currently members of GCP or TGM Orgs: ${join(", ", local.invalid_owners)}. You can bypass this error by setting these members in temp_allow_invalid_owners var when running plan/apply." + error_message = "Provided Repo Owners are not currently members of GCP or TGM Orgs: ${join(", ", setsubtract(local.invalid_owners, var.temp_allow_invalid_owners))}. You can bypass this error by setting `-var='temp_allow_invalid_owners=[\"${join("\",\"", local.invalid_owners)}\"]'` when running plan/apply." } } From 09086d6e15ae0c3dde5e42848769d43f7d1b0226 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 30 Dec 2024 09:33:50 -0800 Subject: [PATCH 1359/1371] fix(test-org): perma-drift write=push (#2778) --- infra/terraform/modules/repositories/main.tf | 6 ++-- .../test-org/github/.terraform.lock.hcl | 32 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/infra/terraform/modules/repositories/main.tf b/infra/terraform/modules/repositories/main.tf index c346ee25d5e..01447628212 100644 --- a/infra/terraform/modules/repositories/main.tf +++ b/infra/terraform/modules/repositories/main.tf @@ -103,7 +103,7 @@ resource "github_repository_collaborator" "maintainers" { } repository = each.value.repo username = each.value.maintainer - permission = "write" + permission = "push" } resource "github_team_repository" "groups" { @@ -112,7 +112,7 @@ resource "github_team_repository" "groups" { } repository = each.value.repo team_id = each.value.group - permission = "write" + permission = "push" } resource "github_team_repository" "ci_teams" { @@ -121,5 +121,5 @@ resource "github_team_repository" "ci_teams" { } repository = each.value.repo team_id = each.value.team - permission = "write" + permission = "push" } diff --git a/infra/terraform/test-org/github/.terraform.lock.hcl b/infra/terraform/test-org/github/.terraform.lock.hcl index af5cd4e8616..173809811c1 100644 --- a/infra/terraform/test-org/github/.terraform.lock.hcl +++ b/infra/terraform/test-org/github/.terraform.lock.hcl @@ -2,24 +2,24 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/integrations/github" { - version = "6.3.1" + version = "6.4.0" constraints = "~> 6.0" hashes = [ - "h1:kNCbU7jr9j09hqWwyXGFDN95Un28gWO2kY2yImv1MDY=", - "zh:25ae1cb97ec528e6b7e9330489f4a33acc0fa80b909c113a8445656bc524c5b9", - "zh:3e1f6300dc10e52a54f13352770ed79f25ff4ba9ac49b776c52a655a3488a20b", - "zh:4aaf2877ec22e63358d7c9cd48c7d7947d1a1dc4d03231f0af193d8975d5918a", - "zh:4b904a81fac12a2a7606c8d811cb9c4e13581adcaaa19e503a067ac95c515925", - "zh:54fe7e0dca04e698631a5b86bdd43ef09a31375e68f8f89970b4315cd5fc6312", - "zh:6b14f92cf62784eaf20f43ef58ce966735f30d43deeab077943bd410c0d8b8b2", - "zh:86c49a1c11c024b26b6750c446f104922a3fe8464d3706a5fb9a4a05c6ca0b0a", - "zh:8939fb6332c4a58c4e90245eb9f0110987ccafff06b45a7ed513f2759a2abe6a", - "zh:8b4068a78c1f357325d1151facdb1aff506b9cd79d2bab21a55651255a130e2f", - "zh:ae22f5e52f534f19811d7f9480b4eb442f12ff16367b3893abb4e449b029ff6b", - "zh:afae9cfd9d49002ddfea552aa4844074b9974bd56ff2c2458f2297fe0df56a5b", - "zh:bc7a434408eb16a4fbceec0bd86b108a491408b727071402ad572cdb1afa2eb7", - "zh:c8e4728ea2d2c6e3d2c1bc5e7d92ed1121c02bab687702ec2748e3a6a0844150", - "zh:f6314b2cff0c0a07a216501cda51b35e6a4c66a2418c7c9966ccfe701e01b6b0", + "h1:sJvuRMYWJ/ykZXTuoCuocHvx06hTwDVrXVVXq1814bw=", + "zh:00f431c2a2510efcb1115442dda5e90815bcb16e1a3301679ade0139fa963d3b", + "zh:12a862f4317b3cb65682c1b687650cd91eeee99e63774bdcfa8bcfc64bad097b", + "zh:226d5e09ff27f94cb9336089181d26f85cb30219b863a579597f2e107f37de49", + "zh:402ecaa5add568a52ee01d816810f3b90f693be35c680fcdc9b6284bf55326f1", + "zh:60e3bdd9fbefb3c1d790bc08889c1dc0e83636b82284faaa709411aa4f96bb9f", + "zh:625099eeff2f8aaecd22a24a451b326828435c8f9de86f2e5e99872e7b467fa7", + "zh:79e8b665421009df2260f50e10da1f7a7863b557ece96e2b07dfd2fad1e86fcd", + "zh:98e471fefc93dcfedeec750c694110db7d3331dc3a256191d30b9d2f70d12157", + "zh:a17702765e1fa92d1c288ddfd97075819ad61b344b341be7e09c554c841a6d9e", + "zh:ca72ccf40624ae26bf4660d8dd84a51638f0a1e78d5f19fdfaafaef97f838af6", + "zh:d009ab5527d45c44c424d26cd2eb51a5a6a6448f3fb1023b675789588cc08d64", + "zh:e5811be1e942a75b14dfcd3e03523d8df60cfbde0d7e24d75e78480a02a58949", + "zh:e6008ad28225ad6996b06bcd7f3070863329df406a56754e7fb9c31d6301ace4", + "zh:f1d93f56ea4f87183a5de4780704907605851d95a2d285a9ec755bf784c5569c", "zh:fbd1fee2c9df3aa19cf8851ce134dea6e45ea01cb85695c1726670c285797e25", ] } From 90a4e2c3344632e9d59f23b84cc41c3a0467877c Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 30 Dec 2024 09:34:38 -0800 Subject: [PATCH 1360/1371] chore: update pre-commits (#2776) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3c1a7dfac33..6263cdabdaf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,11 +7,11 @@ exclude: | )$ repos: - repo: https://github.com/renovatebot/pre-commit-hooks - rev: 38.21.2 + rev: 39.83.1 hooks: - id: renovate-config-validator - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: check-yaml - id: end-of-file-fixer From 6ec0f78c455a599eb9c93955919b019734e4c752 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 30 Dec 2024 19:06:00 +0100 Subject: [PATCH 1361/1371] chore(deps): update peter-evans/create-pull-request action to v7.0.6 (#2779) --- .github/workflows/update-tooling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tooling.yml b/.github/workflows/update-tooling.yml index a6f085ce068..f4f7f303b85 100644 --- a/.github/workflows/update-tooling.yml +++ b/.github/workflows/update-tooling.yml @@ -106,7 +106,7 @@ jobs: git diff-index --quiet HEAD || git commit -m "chore: Update Tools to ${{env.NEW_IMG_VERSION}}" - name: Create Pull Request if: env.BUMP_IMG == 'true' - uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5 + uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6 with: token: ${{ secrets.CFT_ROBOT_PAT }} commit-message: Update tools to ${{env.NEW_IMG_VERSION}} From 31484dd81a823b52465147d651fe4bfff46e9889 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 30 Dec 2024 19:43:44 +0100 Subject: [PATCH 1362/1371] fix(deps): update module github.com/go-git/go-git/v5 to v5.13.0 (#2780) --- infra/module-swapper/go.mod | 12 +++--- infra/module-swapper/go.sum | 81 ++++++++++--------------------------- 2 files changed, 28 insertions(+), 65 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index 73313fc0a25..d093633e17b 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -4,7 +4,7 @@ go 1.22 require ( github.com/chainguard-dev/git-urls v1.0.2 - github.com/go-git/go-git/v5 v5.12.0 + github.com/go-git/go-git/v5 v5.13.0 github.com/google/go-cmp v0.6.0 github.com/hashicorp/hcl/v2 v2.23.0 github.com/pmezard/go-difflib v1.0.0 @@ -14,25 +14,25 @@ require ( require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v1.0.0 // indirect + github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/agext/levenshtein v1.2.1 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect - github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/cyphar/filepath-securejoin v0.2.5 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.5.0 // indirect + github.com/go-git/go-billy/v5 v5.6.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/skeema/knownhosts v1.2.2 // indirect + github.com/skeema/knownhosts v1.3.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect golang.org/x/crypto v0.31.0 // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 1f933c8e8f2..6d11f06d1c1 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -3,8 +3,8 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= -github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= +github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -13,31 +13,29 @@ github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/chainguard-dev/git-urls v1.0.2 h1:pSpT7ifrpc5X55n4aTTm7FFUE+ZQHKiqpiwNkJrVcKQ= github.com/chainguard-dev/git-urls v1.0.2/go.mod h1:rbGgj10OS7UgZlbzdUQIQpT0k/D4+An04HJY7Ol+Y/o= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= +github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= 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/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug= +github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= -github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= +github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= +github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= -github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-billy/v5 v5.6.0 h1:w2hPNtoehvJIxR00Vb4xX94qHQi/ApZfX+nBE2Cjio8= +github.com/go-git/go-billy/v5 v5.6.0/go.mod h1:sFDq7xD3fn3E0GOwUSZqHo9lrkmx8xJhA0ZrfvjBRGM= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= -github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E= +github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -59,8 +57,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -72,83 +70,48 @@ github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUz github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= +github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/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-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From e5ba4b7907010a47c15cbd29ce8802c753045fa2 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Mon, 30 Dec 2024 12:52:36 -0800 Subject: [PATCH 1363/1371] chore: enable bpmetadata lint (#2781) --- infra/terraform/test-org/org/locals.tf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/infra/terraform/test-org/org/locals.tf b/infra/terraform/test-org/org/locals.tf index 8618103e8be..3995e8c2e80 100644 --- a/infra/terraform/test-org/org/locals.tf +++ b/infra/terraform/test-org/org/locals.tf @@ -460,12 +460,18 @@ locals { org = "terraform-google-modules" description = "Manages Google Cloud organization policies" topics = local.common_topics.security + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-project-factory" org = "terraform-google-modules" description = "Creates an opinionated Google Cloud project by using Shared VPC, IAM, and Google Cloud APIs" topics = local.common_topics.ops + lint_env = { + ENABLE_BPMETADATA = "1" + } }, { name = "terraform-google-pubsub" From b2655aa9f00800808cf0b9612ccf7f35fbec49c8 Mon Sep 17 00:00:00 2001 From: Andrew Peabody Date: Thu, 2 Jan 2025 12:19:38 -0800 Subject: [PATCH 1364/1371] fix(deps): Update module golang.org/x/net to v0.33.0 (#2784) --- infra/blueprint-test/go.mod | 2 +- infra/blueprint-test/go.sum | 4 ++-- tflint-ruleset-blueprint/go.mod | 8 ++++---- tflint-ruleset-blueprint/go.sum | 16 ++++++++-------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/infra/blueprint-test/go.mod b/infra/blueprint-test/go.mod index c7441a54fe5..e4afbbbad6f 100644 --- a/infra/blueprint-test/go.mod +++ b/infra/blueprint-test/go.mod @@ -117,7 +117,7 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/zclconf/go-cty v1.15.1 // indirect golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.31.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect diff --git a/infra/blueprint-test/go.sum b/infra/blueprint-test/go.sum index 120745d24d2..97168f08ec5 100644 --- a/infra/blueprint-test/go.sum +++ b/infra/blueprint-test/go.sum @@ -282,8 +282,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/tflint-ruleset-blueprint/go.mod b/tflint-ruleset-blueprint/go.mod index 7c2710a477e..1b99177ba6a 100644 --- a/tflint-ruleset-blueprint/go.mod +++ b/tflint-ruleset-blueprint/go.mod @@ -28,10 +28,10 @@ require ( github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/zclconf/go-cty v1.15.0 // indirect golang.org/x/mod v0.19.0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/net v0.33.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.23.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect google.golang.org/grpc v1.65.0 // indirect diff --git a/tflint-ruleset-blueprint/go.sum b/tflint-ruleset-blueprint/go.sum index 6ad270dce8c..3f4a572476a 100644 --- a/tflint-ruleset-blueprint/go.sum +++ b/tflint-ruleset-blueprint/go.sum @@ -57,19 +57,19 @@ github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6 github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= From 36ae5adac7e3d57f21ba6ae7c59af58b7f7f2329 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 2 Jan 2025 23:58:21 +0100 Subject: [PATCH 1365/1371] fix(deps): update module github.com/go-git/go-git/v5 to v5.13.1 (#2783) --- infra/module-swapper/go.mod | 6 +++--- infra/module-swapper/go.sum | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/infra/module-swapper/go.mod b/infra/module-swapper/go.mod index d093633e17b..8e559b4ffa0 100644 --- a/infra/module-swapper/go.mod +++ b/infra/module-swapper/go.mod @@ -4,7 +4,7 @@ go 1.22 require ( github.com/chainguard-dev/git-urls v1.0.2 - github.com/go-git/go-git/v5 v5.13.0 + github.com/go-git/go-git/v5 v5.13.1 github.com/google/go-cmp v0.6.0 github.com/hashicorp/hcl/v2 v2.23.0 github.com/pmezard/go-difflib v1.0.0 @@ -18,10 +18,10 @@ require ( github.com/agext/levenshtein v1.2.1 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect - github.com/cyphar/filepath-securejoin v0.2.5 // indirect + github.com/cyphar/filepath-securejoin v0.3.6 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.6.0 // indirect + github.com/go-git/go-billy/v5 v5.6.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect diff --git a/infra/module-swapper/go.sum b/infra/module-swapper/go.sum index 6d11f06d1c1..6424aa17387 100644 --- a/infra/module-swapper/go.sum +++ b/infra/module-swapper/go.sum @@ -17,25 +17,25 @@ github.com/chainguard-dev/git-urls v1.0.2 h1:pSpT7ifrpc5X55n4aTTm7FFUE+ZQHKiqpiw github.com/chainguard-dev/git-urls v1.0.2/go.mod h1:rbGgj10OS7UgZlbzdUQIQpT0k/D4+An04HJY7Ol+Y/o= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= -github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= 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/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug= -github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= +github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= +github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.0 h1:w2hPNtoehvJIxR00Vb4xX94qHQi/ApZfX+nBE2Cjio8= -github.com/go-git/go-billy/v5 v5.6.0/go.mod h1:sFDq7xD3fn3E0GOwUSZqHo9lrkmx8xJhA0ZrfvjBRGM= +github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= +github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E= -github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw= +github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= +github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -65,8 +65,8 @@ 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/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= From dc52b4dde2070eb135d9a6bf2e97eaefeca50de1 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 2 Jan 2025 15:42:53 -0800 Subject: [PATCH 1366/1371] chore(release-please): release blueprint-test 0.17.4 (#2767) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/blueprint-test/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4c2d4d9b6c0..a42c6a7cedc 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "infra/blueprint-test": "0.17.3", + "infra/blueprint-test": "0.17.4", "infra/module-swapper": "0.4.10", "tflint-ruleset-blueprint": "0.2.6" } diff --git a/infra/blueprint-test/CHANGELOG.md b/infra/blueprint-test/CHANGELOG.md index 3cd7986dc2f..dcee0072a6f 100644 --- a/infra/blueprint-test/CHANGELOG.md +++ b/infra/blueprint-test/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.17.4](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.17.3...infra/blueprint-test/v0.17.4) (2025-01-02) + + +### Bug Fixes + +* **deps:** update module github.com/gruntwork-io/terratest to v0.48.1 ([#2764](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2764)) ([982c73e](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/982c73e9a357a84b2912e0b09b3d4f4cb17aae6a)) +* **deps:** Update module golang.org/x/net to v0.33.0 ([#2784](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2784)) ([b2655aa](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/b2655aa9f00800808cf0b9612ccf7f35fbec49c8)) + ## [0.17.3](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/blueprint-test/v0.17.2...infra/blueprint-test/v0.17.3) (2024-12-11) From 05e89cc151cb19ca52987134f8efa3def889b92f Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 09:10:26 -0800 Subject: [PATCH 1367/1371] chore(release-please): release module-swapper 0.4.11 (#2782) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Andrew Peabody --- .release-please-manifest.json | 2 +- infra/module-swapper/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a42c6a7cedc..aca5f0ea640 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.17.4", - "infra/module-swapper": "0.4.10", + "infra/module-swapper": "0.4.11", "tflint-ruleset-blueprint": "0.2.6" } diff --git a/infra/module-swapper/CHANGELOG.md b/infra/module-swapper/CHANGELOG.md index dc6fb90d67a..7c6b060b1b1 100644 --- a/infra/module-swapper/CHANGELOG.md +++ b/infra/module-swapper/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.4.11](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.10...infra/module-swapper/v0.4.11) (2025-01-02) + + +### Bug Fixes + +* **deps:** update module github.com/go-git/go-git/v5 to v5.13.0 ([#2780](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2780)) ([31484dd](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/31484dd81a823b52465147d651fe4bfff46e9889)) +* **deps:** update module github.com/go-git/go-git/v5 to v5.13.1 ([#2783](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2783)) ([36ae5ad](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/36ae5adac7e3d57f21ba6ae7c59af58b7f7f2329)) + ## [0.4.10](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/infra/module-swapper/v0.4.9...infra/module-swapper/v0.4.10) (2024-12-11) From f2dba0430ca7b7b46f35feb91faa92dc52ed6f48 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 09:15:59 -0800 Subject: [PATCH 1368/1371] chore(release-please): release tflint-ruleset-blueprint 0.2.7 (#2785) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- tflint-ruleset-blueprint/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index aca5f0ea640..bc88458ec2f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { "infra/blueprint-test": "0.17.4", "infra/module-swapper": "0.4.11", - "tflint-ruleset-blueprint": "0.2.6" + "tflint-ruleset-blueprint": "0.2.7" } diff --git a/tflint-ruleset-blueprint/CHANGELOG.md b/tflint-ruleset-blueprint/CHANGELOG.md index 42451b85c0e..061eb3ef860 100644 --- a/tflint-ruleset-blueprint/CHANGELOG.md +++ b/tflint-ruleset-blueprint/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.7](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.6...tflint-ruleset-blueprint/v0.2.7) (2025-01-03) + + +### Bug Fixes + +* **deps:** Update module golang.org/x/net to v0.33.0 ([#2784](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/issues/2784)) ([b2655aa](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/commit/b2655aa9f00800808cf0b9612ccf7f35fbec49c8)) + ## [0.2.6](https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/compare/tflint-ruleset-blueprint/v0.2.5...tflint-ruleset-blueprint/v0.2.6) (2024-12-05) From b93f4a61ace0d6049672293d65cf84877101a0fc Mon Sep 17 00:00:00 2001 From: cloud-foundation-bot <60107303+cloud-foundation-bot@users.noreply.github.com> Date: Fri, 3 Jan 2025 11:30:21 -0600 Subject: [PATCH 1369/1371] chore: Update Tools to 1.23.4 (#2769) --- infra/build/Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/build/Makefile b/infra/build/Makefile index 42533c3c9cb..a7e90bae699 100644 --- a/infra/build/Makefile +++ b/infra/build/Makefile @@ -16,7 +16,7 @@ SHELL := /usr/bin/env bash # Make will use bash instead of sh # Updated by Update Tooling Workflow TERRAFORM_VERSION := 1.10.3 # Updated by Update Tooling Workflow -CLOUD_SDK_VERSION := 504.0.0 +CLOUD_SDK_VERSION := 504.0.1 GSUITE_PROVIDER_VERSION := 0.1.22 TERRAFORM_DOCS_VERSION := 0.16.0 BATS_VERSION := 0.4.0 @@ -25,7 +25,7 @@ BATS_ASSERT_VERSION := 2.0.0 BATS_MOCK_VERSION := 1.0.1 PACKER_VERSION := 1.4.4 # Updated by Update Tooling Workflow -TERRAGRUNT_VERSION := 0.70.4 +TERRAGRUNT_VERSION := 0.71.1 # Updated by Update Tooling Workflow KUSTOMIZE_VERSION := 5.5.0 # Updated by Update Tooling Workflow @@ -35,19 +35,19 @@ PROTOC_GEN_GO_VERSION := 1.31 PROTOC_GEN_GO_GRPC_VERSION := 1.3 PROTOC_GEN_GO_INJECT_TAG := 1.4.0 # Updated by Update Tooling Workflow -CFT_CLI_VERSION := 1.5.11 +CFT_CLI_VERSION := 1.5.12 # Updated by Update Tooling Workflow TFLINT_VERSION := 0.54.0 TINKEY_VERSION := 1.7.0 ALPINE_VERSION := 3.21 # Updated by Update Tooling Workflow -MODULE_SWAPPER_VERSION := 0.4.10 +MODULE_SWAPPER_VERSION := 0.4.11 # Updated by Update Tooling Workflow -TFLINT_BP_PLUGIN_VERSION := 0.2.6 +TFLINT_BP_PLUGIN_VERSION := 0.2.7 # For developer-tools-krm # Updated by Update Tooling Workflow -GOLANGCI_VERSION := 1.62.2 +GOLANGCI_VERSION := 1.63.3 ASMCLI_VERSION := 1.15 KIND_VERSION := 0.18.0 # Updated by Update Tooling Workflow @@ -56,7 +56,7 @@ OPA_VERSION := 0.52.0 # Updated by Update Tooling Workflow GCRANE_VERSION := 0.20.2 -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.3 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23.4 DOCKER_TAG_MAJOR_VERSION_DEVELOPER_TOOLS := $(firstword $(subst ., , $(DOCKER_TAG_VERSION_DEVELOPER_TOOLS))) DOCKER_TAG_MINOR_VERSION_DEVELOPER_TOOLS := $(shell echo "${DOCKER_TAG_VERSION_DEVELOPER_TOOLS}" | awk -F. '{print $$1"."$$2}') From bf4d1ab6c76a299714a1cf2067a7d382476d8d3c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 3 Jan 2025 19:20:13 +0100 Subject: [PATCH 1370/1371] chore(deps): update golangci/golangci-lint docker tag to v1.63.3 (#2786) --- cli/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Makefile b/cli/Makefile index 81c3396fb81..8568f79a8e9 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -15,7 +15,7 @@ PROTOC_DIR=./bpmetadata DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd -GOLANGCI_VERSION := 1.62.2 +GOLANGCI_VERSION := 1.63.3 # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=-ldflags "-X $(GITHUB_REPO)/cli/cmd.Version=$(VERSION)" From a0381ecf1c408cf7962d8ff8d7bc25436d63ad1f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 3 Jan 2025 20:03:11 +0100 Subject: [PATCH 1371/1371] chore(deps): update golangci/golangci-lint docker tag to v1.63.3 (#2787) --- infra/blueprint-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/blueprint-test/Makefile b/infra/blueprint-test/Makefile index ad20c58bda7..60703bc97cb 100644 --- a/infra/blueprint-test/Makefile +++ b/infra/blueprint-test/Makefile @@ -1,5 +1,5 @@ SHELL := /bin/bash -GOLANGCI_VERSION := 1.62.2 +GOLANGCI_VERSION := 1.63.3 .PHONY: docker_go_lint docker_go_lint: